Обзор оконной подсистемы Screen

Описание общих принципов работы оконной подсистемы

Screen является композитной оконной подсистемой ЗОСРВ «Нейтрино», реализующей композицию графических окружений, а также аппаратную акселерацию приложений.

В отличие от традиционных оконных окружений, управляющих единственным буфером, ассоциированным с каждым дисплеем, в композитном окружении приложениям предоставляется возможность off-screen рендеринга (от англ. rendering) с последующей визуализацией на экране средствами оконной подсистемы.

Off-screen рендеринг на системном уровне позволяет графической и оконной подсистеме производить манипуляции с окнами не вовлекая в это прикладное приложение. Содержимое окон может быть перемещено, масштабировано, повернуто на заданный угол, а также отражено вертикально или горизонтально без необходимости дополнительной перерисовки со стороны приложения.

Оконная подсистема Screen ответственна за:

Screen объединяет множество графических и UI (user interface) технологий в единое окружение. Посредством композиции это окружение объединяется оконной подсистемой в единое изображение для последующего отображения на экране. При этом осуществляется композиция (совмещение) слоев, окон и курсоров.

screen_compmanager.png
Рисунок 1. Композиция окон и слоев в оконной подсистеме Screen

Композиция

Как уже было сказано, одной из основных задач, решаемой оконной подсистемой Screen является комбинирование всех видимых оконных буферов в единое изображение при отображении. Эта функция возложена на модуль, именуемый «Composition Manager» и достигается за счет привлечения аппаратной акселерации.

Screen имеет модульную архитектуру, включающую аппаратно-специфичные компоненты и модули организации OpenGL for Embedded Systems (OpenGL ES) акселерации.

Screen использует GPU-акселерированные операции для оптимального построения финальной сцены.

Потоки ввода

Кроме менеджмента окон «Composition Manager» тесно связан с маршрутизацией потоков ввода от соответствующих устройств. При этом происходит перехват потоков у классических путей, используемых в в оконной подсистеме Photon (отмечены красным).

screen_input_flow.png
Рисунок 2. Маршрутизация потоков ввода в оконной подсистеме


Caution: Стоит отметить, что каждое событие ввода при маршрутизации направляется либо окнам Screen, либо в оконную подсистему Photon. Сосуществование обеих оконных подсистем возможно, но не рекомендуется из соображений производительности. Степень потерь при этом сильно зависит от особенностей устройств акселерации и общей производительности системы (пропускная способность памяти, CPU, вид и степень параллелизма, ...).

Взаимодействие с приложениями

Приложения взаимодействуют с Composition Manager используя Screen API. Основные векторы взаимодействия:

Приложения могут осуществлять рендеринг, используя:

Инструментальные приложения Screen и демонстрационные материалы

Screen предоставляет набор простых приложений для демонстрации основных функций Screen API. Запуск этих приложений позволяет в том числе определить настроен ли Screen должным образом.

screen-blank
Приложение позволяет отобразить простейшее композитное окно.
screen-egl-configs
Утилита позволяет запрашивать и отображать перечень доступных конфигураций framebuffer-а для указанного дисплея. Если номер дисплея не указан, используется дисплей, заданный по умолчанию.
screen-gles2-gears
Это приложение отображает в окне стандартую демонстрацию «gears», использующую OpenGL ES 2.x API.
screen-gl1-gears
Это приложение отображает в окне стандартую демонстрацию «gears», использующую OpenGL 1.x API и EGL.
screen-gles2-glmark2
Это приложение позволяет оценить производительность 3D акселерации при использовании OpenGL ES 2.x API.
display-screenshot
Утилита записывает файл в формате BMP, содержащий скриншот изображения указанного дисплея.
gf-vsync
Приложение демонстрирует стандартный тест сигнала vsync монитора. По загрузке CPU можно судить о том, работают ли аппаратные vsync-прерывания контроллера дисплея.




Предыдущий раздел: Руководство разработчика оконной подсистемы Screen