Android:为什么快照和gpu是互斥的?

时间:2012-07-23 17:06:22

标签: android android-emulator

我尝试对模拟器使用快照和gpu支持。但是模拟器拒绝开始:

  

模拟器:错误:快照和gpu在此处是互斥的   点。请关闭其中一个,然后重新启动模拟器。

我想知道这些限制的原因是什么?在我看来,这似乎不是逻辑碰撞。

2 个答案:

答案 0 :(得分:31)

Android模拟器基于QEMU,它必须模拟在真实手机上运行的Android所能找到的各种硬件设备。特别是它模拟了一个名为“金鱼”的神话般的手机。

保存快照时,必须将设备RAM保存在快照中。但是,这并不仅仅意味着主RAM - 它还指的是手机硬件的所有其他小部分 - 例如CPU寄存器,实时时钟硬件的状态以及其他任何/所有寄存器这个虚拟电话中的一块硬件。

如果你没有启用GPU,那么图形硬件状态相当简单 - 它将是一个帧缓冲区,还有一些寄存器代表x维度,y维度和像素格式。

但是,如果您启用了GPU直通,那么保存该硬件的状态会复杂得多。 QEMU必须保存每个纹理的状态,设置的摄像机,几何图形以及保存在GPU中的其他更多东西。流向GPU的命令流也必须在任意点中断,并且记录这些命令的执行状态(很难,因为有多级流水线和一些指令可能已被部分执行)。

此外,qemu实际上很难获取这个信息,因为qemu只是将它传递给主机GPU。 qemu无法向主机GPU驱动程序询问已执行的内容和未执行的内容。至少,这需要主机操作系统和GPU驱动程序的支持,甚至可能需要更改GPU管道以简化管道,以便可以在任意点停止和重新启动管道。

答案 1 :(得分:-2)

首先检查天气是否启用Android模拟器快照? (如果cheked将其设为未选中) 在Eclipse中转到AVD->选择您的模拟器 - >编辑 - >快照启用 - >取消选中它。  再次开始将正常运行。 我是为同样的问题做的。