Я пишу оконный менеджер X11 с композитором на основе Vulkan. Мне интересно, есть ли способ эффективно загружать растровые изображения окон в виде текстур.
В OpenGL можно напрямую использовать расширение EXT_texture_from_pixmap для привязки растрового изображения к текстуре. Насколько я знаю, в Вулкане такого нет.
Я изучал взаимодействие между Vulkan и OpenGL, т.е. создайте контекст GL только для использования расширения pixmap, а затем используйте external_objects и подобные расширения, чтобы сделать загруженную текстуру доступной для Vulkan. Но на моем Intel HD 630 кажется, что требуемый объект GL_EXT_memory_object недоступен (с использованием Mesa 18.3 dev и последней версии ядра, если есть способ каким-то образом включить его, это было бы здорово).
В настоящее время в качестве обходного пути я использую ЦП для получения пикселей из растрового изображения, а затем помещаю их в память графического процессора. Очевидно, это может быть очень медленным с высокими разрешениями, даже если выгрузка ограничена только поврежденными регионами.
Каким будет лучший способ эффективно получить содержимое растрового изображения, которое будет использоваться в модуле рендеринга на основе Vulkan?
MESA_EXTENSION_OVERRIDE="GL_EXT_memory_object GL_EXT_memory_object_fd GL_EXT_semaphore GL_EXT_semaphore_fd"
. Я собираюсь попробовать это и посмотреть, как это пойдет. - person jaelpark   schedule 15.11.2018