Obtendo o WebGL para Execução em um Servidor Amazon EC2


8

Estou tentando fazer com que o WebGL funcione no meu servidor Amazon EC2 (migrando de um Mac Mini para escritório, que possui muitos soluços).

Trabalhei alguns dias para fazer isso funcionar, mas vou tentar começar de onde comecei.

Primeiro instalei a seguinte AMI Ubuntu Server 12.04 LTS (HVM) - ami-8c8675fbcom o tipo de instância cg1.4xlarge. Eu escolhi esse tipo de instância para que ele venha com um Cirrus Logic GD 5446para execuções gráficas.

Claro que a instalação principal é decapitada, então eu tive que construir este servidor a partir do zero, o que fiz primeiro.

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

Depois disso, instalei um servidor LAMP (o habitual) e atualizei o kernel para 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.

Também registrei o PPA do xorg edgers em https://launchpad.net/~xorg-edgers/+archive/ppa .

Após a reinicialização, tive que conectar uma tela ao meu servidor, optei por fazer isso com o vnc4server.

Então, esse é o habitual e meu xstartup fica assim:

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

Depois de iniciar meu servidor VNC e conectá-lo, verifiquei meu glfxinfo, então DISPLAY=:1 glxinfo(Display: 1 é o VNC)

A primeira saída foi:

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

Corrigi este instalando o nvidia-currentpacote. Eu já sabia que o WebGL rodava, eu precisava pelo menos da versão 1.3 do GLX. Então eu dei glxinfooutro balanço e isso deu a seguinte saída:

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 você pode ver, a versão GLX não é suficiente para executar o WebGL, tentei todos os guias sobre isso. Nenhum deles parece elevar a versão GLX. Você provavelmente está se perguntando, por que o WebGL, bem, eu tinha isso rodando em um servidor Mac Mini, que funcionou perfeitamente para criar um bom vídeo em 3D. Não querendo editar o código, apenas buscando colocá-lo na nuvem. Também tentei o servidor Windows, mas com muitos problemas ffmpeglá, também não é uma opção. Agora, pensando em obter um servidor em nuvem para Mac OS, mas ainda me perguntando o que está acontecendo de errado aqui.

Então, minha pergunta: é possível fazer isso no meu servidor Amazon EC2? E se sim, como?

PS Quando executo o chromium-browser na linha de comando, este é o meu erro:

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.

Respostas:


1

A execução de aplicativos OpenGL dentro de uma máquina virtual provavelmente não terá um bom desempenho. Primeiro de tudo, você não pode usar a aceleração de hardware, mas precisa voltar a um renderizador de software. É isso que a primeira mensagem de erro informa:

libGL error: failed to load driver: swrast

A instalação do driver Nvidia não ajuda, pois não há uma placa Nvidia disponível - daí a segunda mensagem de erro. É possível usar um renderizador de software, mas será muito lento.

Portanto, a resposta é: Sim, pode ser possível fazer o que você deseja, mas, a menos que haja hardware dedicado que funcione bem com o VNC no host virtual, isso não será uma experiência agradável.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.