【发布时间】:2014-05-18 08:37:05
【问题描述】:
我设法create an AVD,但我无法同时检查Snapshot 和Use Host GPU。两者的优点是什么?为什么我不能同时使用? Vogella tells me 两者都加快了流程的不同部分,所以对我来说它们都应该能够被使用是有道理的。
【问题讨论】:
我设法create an AVD,但我无法同时检查Snapshot 和Use Host GPU。两者的优点是什么?为什么我不能同时使用? Vogella tells me 两者都加快了流程的不同部分,所以对我来说它们都应该能够被使用是有道理的。
【问题讨论】:
我认为你不能;我的 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 管道以简化事情,以便管道可以在任意点停止和重新启动。
【讨论】: