Реализация поддержки OpenGL ES для QEMU

На саммите разработчиков Ubuntu объявлено о реализации компанией Canonical базовой поддержки OpenGL ES для проекта QEMU, что позволит выполнять в виртуальном окружении системы, интерфейс которых построен с использованием средств 3D-акселерации. Создание кода для обеспечения поддержки OpenGL ES в QEMU вызвано намерением обеспечить возможность тестирования внутри гостевой системы таких используемых в Ubuntu пользовательских оболочек, как MeeGo и Unity. В настоящее время поддержка OpenGL обеспечена при эмуляции архитектур x86 и ARM на хост-системе x86, также создан транслятор OpenGL ES в вызовы OpenGL.

Из составных частей проекта gles-libs отмечены:

  • fgles (fake gles) - библиотека-враппер с реализацией EGL, OpenGL ES 1.1 и 2.0 API, передающая вызовы к модулю kfgles;
  • kfgles (kernel fgles) - модуль ядра, транслирующий вызовы от библиотеки fgles к qemu через iomem;
  • qemu hw/gles* - код QEMU, обеспечивающий передачу вызовов из пространства гостевой системы на уровень хост-системы;
  • dgles (desktop gles) - библиотека с реализацией EGL, OpenGL ES 1.1 и 2.0 API, занимающаяся непосредственно трансляцией вызовов в доступное в базовой системе API GLX, Windows GL и Apple GL. Может использоваться отдельно от QEMU в роли прослойки для трансляции OpenGL ES в OpenGL 2.0+.

В настоящий момент уже достигнута неплохая совместимость с проприетарными драйверами NVIDIA и ATI, также обеспечена поддержка драйверов Intel. Поддержка других драйверов Mesa пока оставляет желать лучшего. Среди ближайших планов отмечается продвижение созданных патчей в состав основной ветки QEMU и подготовка готовых к работе пакетов для Debian и Ubuntu.

Кроме представленной разработки, эмуляция OpenGL на достаточно высоком уровне ранее уже реализована в системе виртуализации VirtualBox и в эмуляторе из состава Android SDK, выполненном на базе QEMU. Как варианты также рассмотрены наработки компании Red Hat (работа по обеспечению OpenGL-акселерации в KVM с использованием технологии SPICE) и VMware (поддерживающий OpenGL виртуальный Gallium3D-драйвер и модуль ядра vmwgfx).

В заключение, можно отметить выход корректирующего релиза системы эмуляции аппаратного обеспечения и виртуализации QEMU 0.14.1, в котором отмечено только исправление 20 ошибок.

©  OpenNet