Я пробовал виртуальную машину Android под названием androVM на 32-битном ноутбуке Ubuntu 12.04 с гибридной графической конфигурацией Intel / Nvidia в качестве гостевой ОС (подробности о графических картах ниже). Я протестировал некоторые графически насыщенные приложения, такие как Angry Birds и AnTuTu, приложение для тестирования производительности, выполняющее virtualbox
и AndroVMplayer
с primusrun
, но они кажутся действительно медленными, без разницы, как при работе без primusrun
, Я также пытался optirun
, который просто падает с segfault. Как включить ускорение OpenGL для этой виртуальной машины в моей гибридной графической системе?
Я использую версию AndroVM:
androVM_vbox86tp_4.1.1_r6.1-20130222-gapps -houdini-flash.ova
blockquote>И я следую инструкциям по установке, как описано здесь:
AndroVM выпуск 20130222 | Блог AndroVMВ Virtualbox у меня переключены параметры графики, установленные на 128 МБ видеопамяти и включенные 3D-ускорение и 2D-ускорение. В BIOS моего хоста активированы опции виртуализации. Вот мои аппаратные детали:
sudo primusrun lshw -class display *-display description: VGA compatible controller product: GT218 [GeForce 310M] vendor: NVIDIA Corporation physical id: 0 bus info: pci@0000:01:00.0 version: a2 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress vga_controller bus_master cap_list rom configuration: driver=nvidia latency=0 resources: irq:16 memory:d2000000-d2ffffff memory:c0000000-cfffffff memory:d0000000-d1ffffff ioport:d000(size=128) memory:d3000000-d307ffff *-display description: VGA compatible controller product: Core Processor Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 version: 18 width: 64 bits clock: 33MHz capabilities: msi pm vga_controller bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:52 memory:d3400000-d37fffff memory:b0000000-bfffffff ioport:e080(size=8)
При использовании
optirun ./AndroVMplayer
я получаю это:[VGL] WARNING: The OpenGL rendering context obtained on X display [VGL] :8 is indirect, which may cause performance to suffer. [VGL] If :8 is a local X display, then the framebuffer device [VGL] permissions may be set incorrectly. Got command 1002 Got command 1002 Got command 1 Got command 1002 Segmentation fault (core dumped)
И вот подробности моей установки на виртуальный ящик:
dpkg -l virtualbox* | grep ii ii virtualbox 4.1.12-dfsg-2ubuntu0.2 x86 virtualization solution - base binaries ii virtualbox-dkms 4.1.12-dfsg-2ubuntu0.2 x86 virtualization solution - kernel module sources for dkms ii virtualbox-guest-additions 4.1.12-1 transitional package for virtualbox-guest-additions-iso ii virtualbox-guest-additions-iso 4.1.12-1 guest additions iso image for VirtualBox ii virtualbox-guest-dkms 4.1.12-dfsg-2ubuntu0.2 x86 virtualization solution - guest addition module source for dkms ii virtualbox-guest-utils 4.1.12-dfsg-2ubuntu0.2 x86 virtualization solution - non-X11 guest utilities ii virtualbox-guest-x11 4.1.12-dfsg-2ubuntu0.2 x86 virtualization solution - X11 guest utilities ii virtualbox-qt 4.1.12-dfsg-2ubuntu0.2 x86 virtualization solution - Qt based user interface
Если я запускаю его с
optirun
, я получаю следующую ошибку:> [VGL] WARNING: The OpenGL rendering context obtained on X display > [VGL] :8 is indirect, which may cause performance to suffer. [VGL] > If :8 is a local X display, then the framebuffer device [VGL] > permissions may be set incorrectly. > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glCompileShader:351 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderiv:1215 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderInfoLog:1238 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glCompileShader:351 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderiv:1215 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderInfoLog:1238 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glCompileShader:351 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderiv:1215 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderInfoLog:1238 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glCompileShader:351 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderiv:1215 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderInfoLog:1238 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glCompileShader:351 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderiv:1215 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetShaderInfoLog:1238 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetUniformLocation:1382 > error 0x501 > sdk/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glUseProgram:1913 > error 0x501 AndroVMplayer: ../../src/xcb_conn.c:180: write_vec: > Assertion `!c->out.queue_len' failed. Aborted (core dumped)
Вы можете попробовать GenyMotion . Для настройки требуется всего один клик, и он работает в режиме x86.
Это действительно быстрый эмулятор Android.
openGL использует определенные правила при работе в среде Android. Я не могу полностью ответить на ваш вопрос, но могу порекомендовать вам комплект разработчика Android. developer.android.com/sdk/ После настройки он автоматически настроит ваши настройки для оптимального использования рендеринга и может обеспечить среду 3d Android.