Подтвердить что ты не робот

Android: почему моментальные снимки и gpu являются взаимоисключающими?

Я попытался использовать моментальные снимки и поддержку gpu для эмулятора. Но эмулятор отказался запускать:

emulator: ОШИБКА: моментальные снимки и gpu являются взаимоисключающими при этом точка. Извлеките один из них и перезапустите эмулятор.

Интересно, в чем причина этих ограничений? Это не кажется мне логическим столкновением.

4b9b3361

Ответ 1

Эмулятор Android основан на QEMU, который должен имитировать различные аппаратные устройства, которые можно найти в Android, работающем на реальном телефоне. В частности, он имитирует мифический телефон под названием "золотая рыбка".

При сохранении моментального снимка операционная память устройства должна быть сохранена в снимке. Но это не просто означает основную оперативную память - это также относится ко всем другим фидбитным битам аппаратного обеспечения телефона - например, регистры процессора, состояние оборудования часов реального времени и любые/все регистры в каждом другом часть оборудования в этом виртуальном телефоне.

Если вы не включили графический процессор, то состояние графического оборудования довольно просто - это будет фреймбуфер и несколько регистров, представляющих размерность x, размерность и формат пикселей.

Однако, если вы включили сквозной переход на GPU, сохранение состояния этого оборудования было бы намного сложнее. QEMU должен был бы сохранить состояние каждой текстуры, какие камеры настроены, геометрию и еще несколько вещей, которые хранятся в графическом процессоре. Конвейер команд, поступающих на GPU, также должен быть прерван в произвольной точке, и состояние выполнения этих команд записано (трудно, поскольку там может быть частично выполнен многоступенчатый конвейер и некоторые инструкции).

Кроме того, для qemu может быть очень сложно получить эту информацию, поскольку qemu просто передает его на главный GPU. Нет никакой возможности для qemu запросить драйвер GPU хоста точно, что было выполнено, а что нет. По крайней мере, для этого потребуется поддержка операционной системы хоста и драйвера графического процессора, и даже может потребовать внесения изменений в конвейер GPU для упрощения таких операций, чтобы конвейер можно было остановить и перезапустить в произвольных точках.

Ответ 2

сначала проверьте, включен ли снимок вашего эмулятора Android или нет? (если cheked делает его как Unchecked) Goto AVD в Eclipse- > выберите ваш эмулятор- > edit → моментальный снимок включен- > снимите флажок.  запуск снова будет работать нормально. Я сделал это для этой же проблемы.