一位谷歌员工在bug report中的comment非常有启发性。
如果您的系统没有独立的GPU,我们打算进行这种改变,以便使模拟器更可靠地运行在Intel GPU驱动程序上。您可以自行决定风险,通过进入设置页面,然后将OpenGL ES渲染器更改为“ANGLE(D3D11)”,“ANGLE(D3D9)”或“桌面本机OpenGL”来切换回使用Intel GPU。
看起来所有使用Intel GPU的系统都会显示此消息,而不仅仅是运行特定版本图形驱动程序的系统。
solution是尽可能地切换到使用外部GPU来运行模拟器。
如果Intel 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
较新的模拟器版本:
![Settings illustration](https://istack.dev59.com/uTQWe.webp)
较旧的模拟器版本:
![Settings illustration](https://istack.dev59.com/TWlz3.webp)
更新 #1:
在错误报告中的另一comment提供了更多关于此问题的信息:
如果你只是使用Intel HD 4xxx来运行模拟器,那么使用兼容性渲染器是有意义的。很抱歉,但我们需要能够切换到更好支持的Intel GPU驱动程序,特别是在运行高API级别(25+)的系统映像时。这一代(和更早的)Intel iGPU在OpenGL兼容性方面存在许多问题。
看起来,Haswell(第四代)处理器及更早版本的Intel iGPU驱动程序不足以很好地支持Android 7.1+设备的OpenGL。因此,它们故意回退到使用软件仿真,以更好地支持新的Android模拟器。
这符合我的经验。在Android 7上使用Intel iGPU效果很好,但在Android 7.1上不稳定,在Android 8上根本无法使用。
我的建议是,当使用Intel Haswell和旧iGPU的硬件加速时,请坚持使用Android 7模拟器。
更新#2:
最终以评论的形式在Emulator 26.1.3的发布说明中提供了有关此问题的官方通信:
将使用ANGLE或Swiftshader渲染的GPU如下确定:
- 旧版Intel iGPU在OpenGL和ANGLE D3D驱动程序上都存在驱动程序问题。使用Intel HD Graphics 3xxx及更早版本的用户将使用Swiftshader。
- 一些用户报告无法使用API级别25的映像,因为存在“Pixel Launcher keeps stopping”的错误。这似乎是某些Intel HD 4xxx型号的驱动程序问题。因此,它们将自动切换到使用ANGLE。
为了获得最佳的GPU仿真结果,我们建议使用独立的NVIDIA或AMD GPU,或者使用新的Intel GPU(Iris、HD 5xxx、HD 5xx/6xx)。