Компания Collabora выпустила Zink, реализацию OpenGL поверх API Vulkan
Компания Collabora представила Zink, новый Gallium-драйвер для Mesa, реализующий API OpenGL поверх Vulkan. Zink позволяет получить аппаратно ускоренный OpenGL при наличии в системе драйверов, ограниченных поддержкой только API Vulkan. Код опубликован под лицензией MIT.
В качестве причин создания реализации OpenGL поверх Vulkan называется желание упростить графический стек и снизить нагрузку на будущие драйверы для GPU. Zink также может быть использован для обеспечения работы драйверов Gallium Nine (реализация API Direct3D 9) и Clover (реализация OpenCL) поверх Vulkan-драйвера i965 иди для предоставления поддержки OpenGL при наличии в системе только проприетарного драйвера Vulkan. Рассматривается также возможность применения Zink в качестве прослойки для постепенного портирования OpenGL приложения на Vulkan, позволяющей одновременной использовать элементы API OpenGL и Vulkan.
Для работы Zink требуется драйвер с поддержкой Vulkan 1.0 и расширениями VK_KHR_maintenance1 и VK_KHR_external_memory_fd. В настоящий момент реализована только поддержка OpenGL 2.1 и OpenGL ES 1.1/2.0 с некоторыми дополнительными расширениями. В дальнейшем планируется обеспечить поддержку более актуальных версий OpenGL, например, в ближайшее время обещают реализовать поддержку OpenGL 3.3.
Что касается производительности, то она уступает родным драйверам OpenGL, например, Zink в тесте glxgears показывает 475 FPS, а при использовании OpenGL-драйвера i965 - 1750 FPS. Но реализация пока не оптимизирована и в дальнейшем разрыв планируется существенно сократить. Из успешно работающих поверх Zink приложений отмечаются композитный сервер Weston, игры OpenArena, Quake 3 и Extreme Tux Racer.