一位 Google 员工在bug report 上与此问题有关的comment 很有启发性。
如果您的系统没有独立 GPU,我们打算在
为了使模拟器更可靠地在 Intel GPU 驱动程序上运行。在
风险自负,您可以通过访问切换回使用 Intel GPU
设置页面,然后将 OpenGL ES 渲染器更改为“角度
(D3D11)”、“ANGLE (D3D9)”或“桌面原生 OpenGL”。
似乎所有使用英特尔 GPU 的系统都会显示此消息,而不仅仅是运行特定版本的图形驱动程序的系统。
solution 将在可能的情况下切换到使用外部 GPU 来运行模拟器。
如果英特尔 GPU 是系统上唯一可用的 GPU,则可以通过覆盖设置中的默认 OpenGL ES 渲染器来重新启用 OpenGL ES 的加速渲染(见下文)。选项有 OpenGL、ANGLE 和 SwiftShader。 SwiftShader 是基于 CPU 的 OpenGL ES 仿真,因此此设置不会提供加速。 ANGLE 是基于 Direct3d 的 OpenGL 仿真。
根据评论,这不能保证有效,确实我能够为 Android 7 模拟器重新启用硬件加速,但启用硬件加速后,我收到的只是 Android 8 模拟器的黑屏。
使用 Ctrl-Shift-S 打开设置,然后根据模拟器的版本,转到Settings -> General -> OpenGL ES renderer 或Settings -> Advanced -> OpenGL ES renderer
较新的模拟器版本:
旧模拟器版本:
更新 #1:
错误报告中的另一个 comment 提供了有关此问题的进一步说明:
如果您只有 Intel HD 4xxx 运行模拟器,则应使用兼容性渲染器。对此我很抱歉,但我们需要能够切换到支持更好的英特尔 GPU 驱动程序,尤其是在运行高 API 级别 (25+) 的系统映像时。那一代(和更早的)英特尔 iGPU 在 OpenGL 兼容性方面存在许多问题。
用于 Haswell(第 4 代)处理器和更早版本的 Intel iGPU 驱动程序似乎对 Android 7.1+ 设备的 OpenGL 支持不够好。所以他们故意回退到使用更好地支持新的安卓模拟器的软件模拟。
这符合我的经验。使用 Intel iGPU 在 Android 7 上效果很好,但在 Android 7.1 上效果不佳,在 Android 8 上根本不起作用。
我的建议是,在为 Intel Haswell 和旧版 iGPU 使用硬件加速时坚持使用 Android 7 模拟器。
更新 #2:
关于这个问题的官方沟通最终以cmets的形式在release notes for Emulator 26.1.3中提供:
哪些 GPU 将切换为使用 ANGLE 或 Swiftshader 渲染确定如下:
- 较旧的 Intel iGPU 在 OpenGL 和 ANGLE D3D 驱动程序上都存在驱动程序问题。使用 Intel HD Graphics 3xxx 及更早版本的用户将使用 Swiftshader。
- 由于“Pixel Launcher 不断停止”的错误,一些用户报告无法使用 API 级别 25 的图像。这似乎是某些 Intel HD 4xxx 型号中的驱动程序问题。因此它们将自动切换为使用 ANGLE。
为了获得 GPU 仿真的最佳效果,我们建议使用独立的 NVIDIA 或 AMD GPU,或更新的 Intel GPU(Iris、HD 5xxx、HD 5xx/6xx)。