我尝试对模拟器使用快照和 gpu 支持。但模拟器拒绝启动:
模拟器:错误:此时快照和 gpu 是互斥的。请关闭其中一个,然后重新启动模拟器。
我想知道这些限制的原因是什么?在我看来,这不是合乎逻辑的冲突。
我尝试对模拟器使用快照和 gpu 支持。但模拟器拒绝启动:
模拟器:错误:此时快照和 gpu 是互斥的。请关闭其中一个,然后重新启动模拟器。
我想知道这些限制的原因是什么?在我看来,这不是合乎逻辑的冲突。
Android 模拟器基于 QEMU,它必须模拟各种硬件设备,就像在真手机上运行的 Android 一样。具体来说,它模拟了一个名为“金鱼”的神话电话。
保存快照时,设备 RAM 必须保存在快照中。但是,这不仅仅意味着主 RAM - 它还指代手机硬件的所有其他复杂位 - 例如 CPU 寄存器、实时时钟硬件的状态以及每隔一个的任何/所有寄存器这个虚拟电话中的硬件。
如果您没有启用 GPU,那么图形硬件状态相当简单——它将是一个帧缓冲区,以及一些代表 x 维度、y 维度和像素格式的寄存器。
但是,如果您启用了 GPU 直通,那么保存该硬件的状态会更加复杂。QEMU 必须保存每个纹理的状态、设置的相机、几何形状以及保存在 GPU 中的其他更多内容。流向 GPU 的命令流水线也必须在任意点中断,并记录这些命令的执行状态(很难,因为存在多级流水线,并且某些指令可能已部分执行)。
此外,qemu 实际上可能很难获得这些信息,因为 qemu 只是将它传递给主机 GPU。qemu 无法准确地询问主机 GPU 驱动程序执行了什么以及没有执行什么。至少,这需要主机操作系统和 GPU 驱动程序的支持,甚至可能需要更改 GPU 管道以简化事情,以便管道可以在任意点停止和重新启动。
首先检查您的 Android 模拟器快照是否启用?(如果选中则将其设置为未选中)在 Eclipse 中转到 AVD->选择您的模拟器->编辑->启用快照->取消选中它。重新启动将正常运行。我为同样的问题做了它。