Far funzionare WebGL su un server Amazon EC2


8

Sto cercando di far funzionare WebGL sul mio server Amazon EC2 (migrando da un Mac Mini per ufficio, che ha molti singhiozzi).

Ho lavorato alcuni giorni per farlo funzionare, ma cercherò di iniziare da dove ho iniziato.

Innanzitutto ho installato la seguente AMI Ubuntu Server 12.04 LTS (HVM) - ami-8c8675fbcon il tipo di istanza cg1.4xlarge. Ho scelto quel tipo di istanza in modo che venga fornito con una Cirrus Logic GD 5446per esecuzioni grafiche.

Ovviamente l'installazione primaria è senza testa, quindi ho dovuto costruire questo server da zero, quello che ho fatto in primo luogo è.

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

Dopo di che ho installato un server LAMP (il solito) e ho aggiornato il kernel 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.

Ho anche registrato il PPA xorg edgers su https://launchpad.net/~xorg-edgers/+archive/ppa .

Dopo il riavvio ho dovuto collegare uno schermo al mio server, ho scelto di farlo con vnc4server.

Questo è il solito e il mio xstartup è simile al seguente:

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

Dopo aver avviato il mio server VNC e averlo collegato, ho verificato il mio glfxinfo, quindi DISPLAY=:1 glxinfo(Display: 1 è il VNC)

Il primo output è stato:

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

Ho risolto questo problema installando il nvidia-currentpacchetto. Sapevo già che WebGL poteva funzionare, avevo bisogno almeno della versione 1.3 di GLX. Quindi ho dato glxinfoun altro swing e questo ha dato il seguente risultato:

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

Come puoi vedere la versione GLX non è sufficiente per eseguire WebGL, ho provato tutte le guide su questo. Nessuno di loro sembra aumentare la versione GLX. Probabilmente mi stai chiedendo, perché WebGL, beh, l'ho fatto girare su un server Mac Mini, che ha funzionato perfettamente per creare un bel video 3D. Non sto cercando di modificare il codice, sto solo cercando di farlo apparire nel Cloud. Ho anche provato il server Windows, ma ci sono stati molti problemi, ffmpegquindi anche questa non è un'opzione. Ora sto pensando di ottenere un server cloud Mac OS, ma mi chiedo ancora cosa non va qui.

Quindi la mia domanda: è persino possibile farlo sul mio server Amazon EC2? E se sì, come?

PS Quando eseguo chromium-browser dalla riga di comando, questo è il mio errore:

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.

Risposte:


1

L'esecuzione di applicazioni OpenGL all'interno di una macchina virtuale probabilmente non funzionerà bene. Prima di tutto, non è possibile utilizzare l'accelerazione hardware ma è necessario ricorrere a un renderer software. Questo è ciò che ti dice il primo messaggio di errore:

libGL error: failed to load driver: swrast

L'installazione del driver Nvidia non aiuta in quanto non è disponibile una scheda Nvidia, quindi il secondo messaggio di errore. L'uso di un renderer software è possibile, ma sarà molto lento.

Quindi la risposta è: Sì, potrebbe essere possibile fare quello che vuoi, ma a meno che non ci sia hardware dedicato che funzioni bene con VNC sull'host virtuale, questa non sarà una bella esperienza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.