Igo*_*nko 30 android android-emulator
我试图对模拟器使用快照和gpu支持.但是模拟器拒绝启动:
模拟器:错误:此时快照和gpu是互斥的.请关闭其中一个,然后重新启动模拟器.
我想知道这些限制的原因是什么?在我看来,这不是逻辑碰撞.
Adr*_*lor 31
Android模拟器基于QEMU,它必须模拟在真实手机上运行的Android所能找到的各种硬件设备.特别是它模拟了一个名为"金鱼"的神话般的手机.
保存快照时,必须将设备RAM保存在快照中.但是,这并不仅仅意味着主RAM - 它还指的是手机硬件的所有其他小部分 - 例如CPU寄存器,实时时钟硬件的状态以及其他任何/所有寄存器这款虚拟手机中的硬件.
如果您没有启用GPU,那么图形硬件状态相当简单 - 它将是一个帧缓冲区,以及一些代表x维度,y维度和像素格式的寄存器.
但是,如果您启用了GPU直通,那么保存该硬件的状态会复杂得多.QEMU必须保存每个纹理的状态,设置的摄像机,几何图形以及保存在GPU中的其他更多东西.流向GPU的命令流也必须在任意点被中断,并且记录那些命令的执行状态(很难,因为存在多级流水线并且一些指令可能已被部分执行).
而且,qemu实际上可能很难获得这些信息,因为qemu只是将它传递给主机GPU.qemu无法向主机GPU驱动程序询问已执行的内容和未执行的内容.至少,这需要主机操作系统和GPU驱动程序的支持,甚至可能需要更改GPU管道以简化管道,以便可以在任意点停止和重新启动管道.