Hacer que WebGL se ejecute en un servidor Amazon EC2

8

Estoy tratando de hacer que WebGL funcione en mi servidor Amazon EC2 (migrar desde una Mac Mini con destino a la oficina, que tiene muchos problemas).

Trabajé algunos días para que esto funcionara, pero intentaré comenzar desde donde comencé.

Primero instalé la siguiente AMI Ubuntu Server 12.04 LTS (HVM) - ami-8c8675fbcon tipo de instancia cg1.4xlarge. Elegí ese tipo de instancia para que venga con Cirrus Logic GD 5446las ejecuciones gráficas.

Por supuesto, la instalación principal no tiene cabeza, así que tuve que construir este servidor desde cero, lo que hice primero fue.

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

Después de eso instalé un servidor LAMP (el habitual) y actualicé el kernel a 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.

También registré el PPA de xorg edgers en https://launchpad.net/~xorg-edgers/+archive/ppa .

Después de reiniciar tuve que conectar una pantalla a mi servidor, elegí hacer esto con vnc4server.

Así que eso es lo habitual y mi xstartup se ve así:

#!/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 &

Después de iniciar mi servidor VNC y conectarlo, revisé mi glfxinfo, por lo que DISPLAY=:1 glxinfo(Pantalla: 1 es el VNC)

El primer resultado fue:

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

Arreglé este instalando el nvidia-currentpaquete. Ya sabía que para ejecutar WebGL, necesitaba GLX versión 1.3 al menos. Entonces di glxinfootro golpe y eso dio el siguiente resultado:

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

Como puede ver, la versión GLX no es suficiente para ejecutar WebGL, probé todas las guías sobre esto. Ninguno de ellos parece elevar la versión GLX. Probablemente se pregunte, ¿por qué WebGL? Bueno, tenía esto ejecutándose en un servidor Mac Mini, que funcionó perfectamente para crear un buen video en 3D. No busco editar el código, solo busco subirlo a la nube. También probé el servidor de Windows, pero encontré muchos problemas ffmpegallí, por lo que tampoco es una opción. Ahora estoy pensando en obtener un servidor en la nube de Mac OS, pero aún me pregunto qué está pasando aquí.

Entonces mi pregunta: ¿es posible hacer esto en mi servidor Amazon EC2? Y si es así, ¿cómo?

PD: cuando ejecuto chromium-browser desde la línea de comandos, este es mi error:

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.
Pepijn
fuente

Respuestas:

1

Es muy probable que ejecutar aplicaciones OpenGL dentro de una máquina virtual no funcione bien. En primer lugar, no puede usar la aceleración de hardware, sino que debe recurrir a un procesador de software. Esto es lo que te dice el primer mensaje de error:

libGL error: failed to load driver: swrast

La instalación del controlador Nvidia no ayuda, ya que no hay una tarjeta Nvidia disponible, de ahí el segundo mensaje de error. Es posible usar un procesador de software, pero será muy lento.

Entonces la respuesta es: Sí, podría ser posible hacer lo que quiera, pero a menos que haya un hardware dedicado que funcione bien con VNC en el host virtual, esta no será una experiencia agradable.

antiguru
fuente