我设法create an AVD,但我无法检查Snapshot
和Use Host GPU
。两者有什么好处?为什么我不能同时使用这两个? Vogella tells me这两个方法都加快了流程的不同部分,所以我觉得它们都应该能够被使用。
答案 0 :(得分:2)
我认为你不能;我的AVD经理明确禁止它:
来自Android: why snapshots and gpu are mutually exclusive?:
Android模拟器基于QEMU,它必须模拟在真实手机上运行的Android所能找到的各种硬件设备。特别是它模拟了一种名为“金鱼”的神话般的手机。
保存快照时,必须将设备RAM保存在快照中。但是,这并不仅仅意味着主RAM - 它还指的是手机硬件的所有其他小部分 - 例如CPU寄存器,实时时钟硬件的状态以及任何/所有寄存器这部虚拟电话中的其他所有硬件。
如果你没有启用GPU,那么图形硬件状态相当简单 - 它将是一个帧缓冲区,还有一些代表x维,y维和像素格式的寄存器。
但是,如果您已启用GPU直通,则保存该硬件的状态会复杂得多。 QEMU必须保存每个纹理的状态,设置的摄像机,几何图形以及保存在GPU中的其他更多东西。流向GPU的命令流也必须在任意点被中断,并且记录那些命令的执行状态(很难,因为可能已经部分地执行了多级流水线和一些指令)。
此外,qemu实际上可能很难获得这些信息,因为qemu只是将它传递给主机GPU。 qemu没办法向主机GPU驱动程序询问已经执行了什么以及没有执行什么操作。至少,这需要主机操作系统和GPU驱动程序的支持,甚至可能需要更改GPU管道以简化管道,以便可以在任意点停止和重新启动管道。