Доступен графический тулкит GTK 4.14 с новыми движками для OpenGL и Vulkan

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3250
Зарегистрирован: 20.08.2022

#

Доступен графический тулкит GTK 4.14 с новыми движками для OpenGL и Vulkan
Дата публикации:Tue, 12 Mar 2024 22:04:35 +0300




После семи месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя - GTK 4.14.0. GTK 4 развивается в рамках нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.



В дальнейшем планируется сформировать экспериментальную ветку 4.90, в которой будет развиваться функциональность для будущего выпуска GTK5. В ветку GTK5 будут включены изменения нарушающие совместимость на уровне API, например, связанные с переводом в разряд устаревших некоторых виджетов, таких как старый диалог выбора файлов. Также обсуждается возможность прекращения в ветке GTK5 поддержки протокола X11 и оставления возможности работы только с использованием протокола Wayland.





Среди наиболее заметных улучшений в GTK 4.14:
  • В состав включены новые унифицированные движки отрисовки "ngl" и "vulkan", использующие графические API OpenGL (GL 3.3+ и GLES 3.0+) и Vulkan. Оба движка базируются на API Vulkan, но в движке "ngl" для OpenGL создан отдельный уровень абстракции, работающий поверх Vulkan с учётом отличий между OpenGL и Vulkan. Подобный подход позволил задействовать в обоих движках общую инфраструктуру для обработки графа сцены (scene graph), трансформаций, кэширования текстур и глифов. Унификация также заметно упростила сопровождение кодовой базы обоих движков и их поддержание в актуальном и синхронизированном состоянии.



    В отличие от старого движка "gl", в котором для каждого типа узлов рендеринга (rendernode) использовался отдельный простой шейдер и выполнялась периодическая пересортировка данных при закадровом рендеринге (offscreen), в новых движках вместо закадрового рендеринга применяется сложный шейдер (ubershader), интерпретирующий данные из буфера. Из отличительных возможностей новых движков упоминается сглаживание контуров (позволяет сохранить мелкие детали и добиться отрисовки более ровных контуров), формирование произвольных градиентов (может использоваться любое число цветов и сглаживание) и дробное масштабирование.

    По умолчанию включён новый движок отрисовки "ngl", а также включена по умолчанию поддержка графического API Vulkan. При сборке в конфигурации по умолчанию теперь требуется поддержка Vulkan 1.3.


    В библиотеку GSK (GTK Scene Kit), предоставляющей возможности отрисовки графических сцен через OpenGL и Vulkan, внесены значительные улучшения, связанные с отрисовкой шрифтов, хинтингом и использованием нецелых значений масштаба при выводе текста. При хинтинге (сглаживание контура глифа при растеризации для повышения чёткости на экранах с низким разрешением) реализовано субпиксельное позиционирование глифов. Повышено качество отрисовки шрифтов при нецелых значениях масштаба (например, 125%). Реализована поддержка вытеснения элементов из кэшей для глифов и текстур. Повышена эффективность кэширования глифов.


    В рамках работы по уходу от использования библиотеки Cairo в пользу отрисовки при помощи GPU добавлена поддержка "путей" (Path) для отрисовки фигур и областей, используя последовательность линий или кубических и квадратичных кривых Безье. Для отрисовки при помощи путей предложен объект GskPath, определяющий параметры линий или кривых, а также объекты GskPathBuilder для создания кривых, GskPathPoint для определения точки на фигуре и GskPathMeasure для выполнения измерений, таких как длина контура.
    Изображение
    В библиотеке GDK, предоставляющей прослойку между GTK и графической подсистемой, расширена поддержка механизма DMA-BUF, позволяющего использовать буферы на уровне ядра, адресуемые при помощи дескриптора, что даёт возможность вместо копирования пиксельных данных передавать их между подсистемами ядра через дескриптор. В контексте GTK DMA-BUF может использоваться для минимизации копирования пиксельных данных в процессе композитинга и при работе с видео (например, видео может быть записано аппаратным декодировщиком в dmabuf, после чего прикреплено к поверхности Wayland и передано в композитный менеджер для наложения элементов интерфейса и вывода на экран без лишних операций копирования данных).



    Для прямой отправки контента, такого как видео, композитному менеджеру (минуя рендер GSK) добавлен виджет [url=ttps://docs.gtk.org/gtk4/class.GraphicsOffload.html]GtkGraphicsOffload[/url], а для создания контента для прямой передачи добавлен класс GdkDmabufTextureBuilder, создающий объекты GdkTexture из dmabuf. В качестве источника для dmabuf могут использоваться pipewire, video4linux или gstreamer. Поддерживаются форматы dmabuf NV16, NV61, NV24, NV42 и YUV.


    Добавлен класс GtkPrintDialog, предназначенный для формирования диалогов вывода на печать и предлагающий асинхронный API для использования вместо GtkPrintOperation.

    В виджете GtkEmojiChooser обновлены данные Emoji и добавлена возможность поиска на разных языках с учётом разных локалей.

    В виджете GtkEntry улучшено отслеживание изменений, произведённых пользователем (для реализации операции undo).
    В виджете GtkFileChooser ускорено открытие диалога выбора файлов.



    Класс GtkShortcutsWindow, отображающий подсказку по клавиатурным комбинациям и экранным жестам, адаптирован для небольших экранов.

    В режиме инспектирования (GTK inspector) обеспечено отображение информации об OpenGL, подповерхностях и FPS.

    В утилиту gtk4-rendernode-tool добавлена команда "compare".
    Предложена новая утилита gtk4-path-tool для работы с путями.
    В утилите gtk4-node-editor добавлена поддержка автозаписи.

    Устранено аварийное завершение, проявлявшееся при использовании Wayland в окружениях не на базе GNOME Shell.



    Добавлены новые средства для людей с ограниченными возможностями, связанные с показом сложного отформатированного текста, работой WebKitGTK и выводом уведомлений. Улучшена поддержка спецификаций ARIA. Добавлен интерфейс GtkAccessibleText для использования accessibility-возможностей в сторонних текстовых виджетах. В интерфейсе GtkText добавлена поддержка
    протокола AT-SPI для взаимодействия с экранными ридерами.


    Добавлена возможность рендеринга с привлечением GPU, используя API WGL на платформе Windows.

    Сокращено потребление памяти при загрузке тем оформления на базе CSS.


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60778

Жизнь за Нер'зула!

Ответить