Vulkan и X11 Pixmap - PullRequest
       49

Vulkan и X11 Pixmap

0 голосов
/ 02 ноября 2018

Я пишу оконный менеджер X11 с композитором на основе Vulkan. Мне интересно, есть ли способ эффективно загружать оконные растровые изображения в качестве текстур.

В OpenGL можно напрямую использовать расширение EXT_texture_from_pixmap, чтобы привязать растровое изображение к текстуре. Насколько я знаю, в Вулкане нет такой вещи.

Я изучал взаимодействие между Vulkan и OpenGL, т.е. создайте контекст GL только для использования расширения растрового изображения, а затем используйте внешние_объекты и такие расширения, чтобы сделать загруженную текстуру доступной для Vulkan. Но на моем Intel HD 630 кажется, что требуемый GL_EXT_memory_object недоступен (используя Mesa 18.3 dev и последнее ядро, если есть способ как-то его включить, это было бы здорово).

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

Каков наилучший способ эффективного извлечения содержимого растрового изображения для использования в рендерере на основе Vulkan?

1 Ответ

0 голосов
/ 27 марта 2019

Правильный способ справиться с этим - использовать расширение xcb DRI3 для получения DMA-buf fd растрового изображения, после чего мы можем импортировать память, используя VK_KHR_external_memory_fd и VK_EXT_external_memory_dma_buf. Кроме того, VK_EXT_image_drm_format_modifier потребуется для работы с конкретным форматом буфера поставщика (указанным модификатором DRM), но, к сожалению, это расширение пока недоступно. До тех пор, пока это не произойдет, возможно, можно будет обойти GBM, чтобы преобразовать внутренний формат и тайлинг буфера в линейный, после чего импорт должен стать относительно простым.

...