我正在使用基于 Vulkan 的合成器编写 X11 窗口管理器。我想知道是否有一种方法可以有效地将窗口像素图加载为纹理。
在 OpenGL 中,可以直接使用 EXT_texture_from_pixmap 扩展将像素图绑定到纹理。据我所知,在 Vulkan 中没有这样的东西。
我一直在研究 Vulkan 和 OpenGL 之间的互操作,即。创建一个 GL 上下文只是为了使用像素图扩展,然后使用 external_objects 和此类扩展来为 Vulkan 带来可用的加载纹理。但是在我的 Intel HD 630 上,所需的 GL_EXT_memory_object 似乎不可用(使用 Mesa 18.3 dev 和最新内核,如果有办法以某种方式启用它,那就太好了)。
目前作为一种解决方法,我使用 CPU 从像素图中获取像素,然后将其暂存到 GPU 内存。显然,这在高分辨率下可能会非常慢,即使将上传限制在损坏的区域也是如此。
有效检索要在基于 Vulkan 的渲染器中使用的像素图内容的最佳方法是什么?