【发布时间】:2012-07-21 23:02:56
【问题描述】:
我尝试对模拟器使用快照和 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->选择您的模拟器->编辑->启用快照->取消选中它。 重新启动将正常运行。 我也是为同样的问题做的。
【讨论】: