Графика

На рисунке представлена архитектура пользовательского интерфейса и графики в Sailfish OS.

Архитектура графики

Графическое представление в Sailfish OS осуществляется с помощью Qt и выполняется через протокол Wayland. Wayland является протоколом взаимодействия между композитором и клиентами, в состав которого входит унифицированный протокол взаимодействия устройств ввода, предоставляющий виртуальную клавиатуру, виртуальную мышь и tablet-интерфейс — разделяемые всеми приложениями.

Ядро Mer предоставляет библиотеку графики Mesa 3D с открытым исходным кодом, содержащую библиотеки OpenGL ES 2.0 (система Embedded Open Graphics Library) и EGL (Embedded-System Graphics Library).

Сборка в ядре Mesa использует LLVMpipe для быстрого программного рендеринга (визуализации) без подключения аппаратных специфичных драйверов.

Wayland использует подсистемы ядра Linux, такие как KMS (Kernel mode-setting) и DRM (Direct Rendering Manager).

В качестве композитора в Sailfish OS используется Lipstick. Подробное описание функций Lipstick приведено в статье «Композитор».

Протокол Wayland позволяет композитору отправлять входные события на клиентскую сторону и клиентской стороне отправлять уведомления композитору:

  1. Модуль evdev получает событие и отправляет его композитору.
  2. Композитор в своем графе сцены находит окно, которому следует доставить данное событие и определяет тип трансформации, который следует применить к объекту.
  3. Путем обратной трансформации композитор транслирует экранные координаты в локальные для данного окна.
  4. Кендеринг выполняется на клиентской стороне, при этом клиент только отправляет запрос композитору, чтобы указать область, которая была обновлена.
  5. Композитор собирает запросы с клиентской стороны, а затем пересобирает экран.
  6. Композитор загружает новую страницу с помощью вызова ioctl, адресованного KMS.