【问题标题】:Why does the Android x86 emulator have slow GPU rendering?为什么 Android x86 模拟器的 GPU 渲染速度很慢?
【发布时间】:2013-08-18 03:16:26
【问题描述】:

我已经在分配了 768MB RAM 的 Windows 8 x64 上安装了 Android 4.2.2 的 x86 映像,并由于我的 CPU VTx 使其在“快速模式”下运行,并且渲染 UI 菜单相当快,接近 60 FPS (虽然大多数时候它更像是 ~50 FPS,这是在 Core i7 2600 上),而且我还选中了“使用主机 GPU”框。

我认为 GPU 命令确实会根据一个简单的事实进行转发,GLES2 的功能更适合我的桌面 GPU(比如最大 32 个纹理单元)。但是,GLES2 应用程序中的帧速率约为 2 FPS,甚至不基于复杂性。我扔给它的任何东西,即使是具有 10 个绘制调用的应用程序仍然以大约 2 FPS 的速度执行,所以一定有一些非常奇怪的事情发生,因为简单地将 GL 命令转发到我的 GPU(HD7850)应该提供流畅的 60 FPS。

【问题讨论】:

  • 你在什么操作系统上运行你的模拟器?
  • Slow Android emulator 的可能重复项
  • Windows 8,已编辑。它不是重复的,我说的是 GLES2 支持,而不是我已经说过的通用 UI 运行得很好。
  • 我不愿将 OpenGL ES 称为桌面 OpenGL 的近似模拟。虽然大部分功能确实是从 OpenGL 中简化而来,但可变精度并不是桌面 GL 的一部分。在桌面 GL 中,可变精度的想法几乎仅限于 32 位与 64 位 FP - 它一点也不像 GL ES。在桌面 GPU 上正确模拟低/中精度很可能会让您脱离硬件加速路径。
  • 您的论点无效。 OpenGL ES 指定精度限定符只是提示(大多数实现甚至不支持 highp 或将 lowp 提升为 mediump)。如果您要检查 glGetShaderPrecisionFormat 返回的内容,您会发现在 DesktopGL 上所有限定符都将变量提升为 32 位格式。

标签: android-4.2-jelly-bean android-x86


【解决方案1】:

可能有几个问题会导致 GLES2 性能不佳:

  1. 您有英特尔 HAXM(硬件加速执行管理器)吗?它确实有助于仿真器的性能和速度。它可以通过 Android SDK Manager 下载。下载后,到SDK/extras/intel/安装。

  2. 您有最新的视频驱动程序吗?如果没有,您应该执行更新。

  3. 你是如何启动安卓模拟器的?我问这个是因为如果您使用命令行启动 avd,您需要将 4 个 dll 文件从 sdk/tools/lib 复制到 sdk/tools。这 4 个文件是:libEGL_translator.dll、libEGLS_CM_translator.dll、libGLES_V2_translator.dll、libOpenglRender.dll。如果从 Virtual Device Manager 启动,则无需执行第 3 步。

【讨论】:

  • 4. HAXM 唯一要做的就是将 OpenGL 调用转发到您的 GPU 主机,而不是通过软件光栅化。有一个选项可以在没有 GL 转发的情况下使用模拟器 + HAXM,您会发现它的运行速度与没有 HAXM 时一样慢。
猜你喜欢
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2010-12-05
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多