web-dev-qa-db-fra.com

Exécution de WebGL sur un serveur Amazon EC2

J'essaie de faire fonctionner WebGL sur mon serveur Amazon EC2 (migration depuis un Mac Mini lié au bureau, qui a beaucoup de problèmes).

J'ai travaillé quelques jours pour que ça fonctionne, mais je vais essayer de commencer par là où j'ai commencé.

J'ai d'abord installé l'AMI Ubuntu Server 12.04 LTS (HVM) - AMI-8c8675fb suivante avec le type d'instance cg1.4xlarge. J'ai choisi ce type d'instance pour qu'il soit accompagné d'un Cirrus Logic Gd 5446 pour les exécutions graphiques.

Bien sûr, l’installation principale est sans tête, donc j’ai dû construire ce serveur à partir de rien, c’est ce que j’ai fait en premier lieu.

Sudo apt-get install ubuntu-desktop
Sudo apt-get install gdm
Sudo /etc/init.d/gdm start
Sudo dpkg-reconfigure xserver-xorg
Sudo apt-get install gnome-core

Après cela, j'ai installé un serveur LAMP (comme d'habitude) et mis à jour le noyau sous Linux ip-172-31-29-168 3.8.0-37-generic #53~precise1-Ubuntu SMP Wed Feb 19 21:37:54 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux.

J'ai également enregistré le PPA de xorg edgers à l'adresse https://launchpad.net/~xorg-edgers/+archive/ppa .

Après avoir redémarré, je devais connecter un écran à mon serveur, j'ai choisi de le faire avec vnc4server.

C'est donc comme d'habitude et mon xstartup ressemble à ceci:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
gnome-session --session=gnome-classic &

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 1280x1024+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &

Après avoir démarré et connecté mon serveur VNC, j’ai vérifié mon glfxinfo, donc DISPLAY=:1 glxinfo (Display: 1 est le VNC)

La première sortie était:

name of display: :1
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
Error: couldn't find RGB GLX visual or fbconfig
Error: couldn't find RGB GLX visual or fbconfig

J'ai corrigé celui-ci en installant le package nvidia-current. Je savais déjà que WebGL devait fonctionner, j'avais au moins besoin de la version 1.3 de GLX. Alors j'ai donné glxinfo un autre swing et cela a donné la sortie suivante:

ubuntu@ip-172-31-29-168:~$ DISPLAY=:1 glxinfo | grep version
Xlib:  extension "NV-GLX" missing on display ":1".
Xlib:  extension "NV-GLX" missing on display ":1".
server glx version string: 1.2
client glx version string: 1.4
GLX version: 1.2
OpenGL core profile version string: 1.3 Mesa 4.0.4
OpenGL version string: 1.3 Mesa 4.0.4

Comme vous pouvez le constater, la version de GLX n’est pas suffisante pour exécuter WebGL, j’ai essayé tous les guides à ce sujet. Aucun d'entre eux ne semble augmenter la version GLX. Vous vous demandez probablement pourquoi WebGL, eh bien, cela fonctionnait sur un serveur Mac Mini, qui fonctionnait parfaitement pour créer une belle vidéo 3D. Ne cherche pas à modifier le code, mais simplement à le placer dans le cloud. J'ai aussi essayé le serveur Windows, mais j'ai rencontré beaucoup de problèmes avec ffmpeg, ce qui ne représente pas non plus une option. Vous envisagez maintenant de vous procurer un serveur cloud Mac OS, mais vous vous demandez toujours ce qui ne va pas ici.

Alors ma question: est-il même possible de le faire sur mon serveur Amazon EC2? Et si oui, comment?

P.S. Lorsque j'exécute chrome-browser à partir de la ligne de commande, c'est mon erreur:

ubuntu@ip-172-31-29-168:~/.vnc$ DISPLAY=:1 chromium-browser --enable-webgl
[12243:12243:0307/155523:ERROR:gl_surface_glx.cc(413)] GLX 1.3 or later is required.
[12243:12243:0307/155523:ERROR:gl_surface_x11.cc(58)] GLSurfaceGLX::InitializeOneOff failed.
8
Pepijn

L'exécution d'applications OpenGL à l'intérieur d'une machine virtuelle risque fort de ne pas bien fonctionner. Tout d'abord, vous ne pouvez pas utiliser l'accélération matérielle, mais vous devez vous rabattre sur un moteur de rendu logiciel. Voici ce que le premier message d'erreur vous dit:

libGL error: failed to load driver: swrast

L'installation du pilote Nvidia n'aide pas car il n'y a pas de carte Nvidia disponible - d'où le deuxième message d'erreur. Utiliser un logiciel de rendu est possible, mais ce sera très lent.

La réponse est donc la suivante: oui, il serait peut-être possible de faire ce que vous voulez, mais à moins qu'il y ait du matériel dédié qui joue bien avec VNC sur l'hôte virtuel, ce ne sera pas une expérience agréable.

1
antiguru