Композиция - это процесс объединения изображений из нескольких источников в единое целое
Screen
стремится, насколько это возможно, использовать аппаратные слои (pipelines) контроллера дисплеев для осуществления композиции. Когда аппаратура и соответствующий драйвер поддерживают несколько слоев, Screen
предоставляет возможность воспользоваться их преимуществами. Для приложений, которым требуются сложные графические преобразования на этапе отображения, имеется возможность воспользоваться встроенными в оконную подсистему средствами визуализации с привлечением аппаратной акселерации. Только в случае, если платформа не поддерживает требуемого оконной подсистеме набора аппаратного обеспечения, Screen
прибегает к использованию программного рендеринга.
Например, в зависимости от конкретного аппаратного обеспечения, могут поддерживаться следующие виды организации прозрачности на этапе композиции:
Существует два типа аппаратной композиции:
Composition
Manager
из состава оконной подсистемы Screen
. Функции данного вида композиции определяются исключительно контроллером дисплеев. По этой причине они варьируются от системы к системе.
Все видимые слои объединяются при выводе на экран. Каждый слой имеет единственный ассоциированный буфер.
Буфер, ассоциированный с окном может быть выведен лишь в выбранный слой напрямую. Подобное окно считается автономным, поскольку никакой композиции со стороны Composition
Manager
по отношению к ассоциированному буферу не осуществляется. Формат пикселей в буфере автономного окна определяется возможностями контроллера дисплеев.
Представленный пример демонстрирует аппаратную композицию двух окон в разных слоях. Каждое окно выводит изображение в свой собственный буфер, который ассоциируется с соответствующим слоем. На этапе отображения контроллер дисплеев считывает содержимое буферов и выводит их поочередно на экран.
![]() | Параметры композиции является системно-зависимым. |
Большинство предлагаемых аппартной композицией возможностей достижимы встроенными средствами Screen
и реализуются в Composition
Manager
.
Если аппаратные слои не поддерживаются или их число недостаточно для визуализации требуемого набора окон, решением может стать лишь второй тип композиции. Также к нему имеет смысл обратиться в том случае, когда контроллер дисплеев не предоставляет требуемого набора функциональных возможностей.
Composition
Manager
позволяет аппаратно объединять несколько оконных буферов в единый результирующий буфер, который в последующем будет выводиться на экран. Это так называемый композиционный буфер или фреймбуфер (framebuffer) Screen
.
Пример композиции в Screen
демонстрирует вывод 2 окон в один слой. Изображения, содержащиеся в этих окнах, объединяются в единый композиционный буфер, который ассоциируется с дисплеем.
Для этого вида композиции не требуется установка следующих параметров окна: SCREEN_PROPERTY_PIPELINE, SCREEN_PROPERTY_USAGE (бит SCREEN_USAGE_OVERLAY).
Для объединения преимуществ обоих подходов можно одновременно использовать представленные практики.
Пример демонстрирует 3 окна. Первое окно захватывает первый доступный аппаратный слой контроллер дисплеев. Другие окна ассоциируются с композиционным буфером, который привязывается ко второму слою. Содержимое обоих слоев объединяется воедино средствами контроллера дисплеев.
Для организации подобной композиции требуется корректно настроенный Screen
, а также соответствующим образом проинициализированные параметры окон.
![]() | Индексирование аппаратных слоев и z-индекс окон применяются и определяются независимо.
Индексирование слоев определяется аппаратно и имеет приоритет. Z-индекс окон является частью логики функционирования При проектировании результирующей конфигурации необходимо уделить особое внимание индексированию слоев и окон. Вы должны убедиться в том, что конкретные z-индексы имеют смысл в пределах конкретного слоя. Например, если вы назначаете высокое значение z-индексу для окна (обычно это означает, что окно должно быть размещено на переднем плане), скорее всего стоит ассоциировать окно со слоем верхнего уровня. В противном случае результат может быть не таким, как вы ожидаете, независимо от значения z-индекса. |
Оба подхода имеют как достоинства, так и недостатки. Некоторые из них проявляются только для приложений, которые часто обновляют содержимое окна.
Вид композиции | Композиция слоёв | Композиция графической подсистемы Screen |
---|---|---|
Достоинства |
|
|
Недостатки |
|
|
Предыдущий раздел: Оконная подсистема Screen