gpt4 book ai didi

opengl - Vulkan 和 X11 Pixmap

转载 作者:行者123 更新时间:2023-12-02 03:51:29 31 4
gpt4 key购买 nike

我正在使用基于 Vulkan 的合成器编写 X11 窗口管理器。我想知道是否有一种方法可以有效地将窗口像素图加载为纹理。

在 OpenGL 中,可以直接使用 EXT_texture_from_pixmap 扩展将像素图绑定(bind)到纹理。据我所知,在 Vulkan 中没有这样的事情。

我一直在研究 Vulkan 和 OpenGL 之间的互操作,即。创建一个 GL 上下文只是为了使用 pixmap 扩展,然后使用 external_objects 和此类扩展来为 Vulkan 提供可用的加载纹理。但在我的 Intel HD 630 上,似乎所需的 GL_EXT_memory_object 不可用(使用 Mesa 18.3 dev 和最新内核,如果有办法以某种方式启用它,那就太好了)。

目前,作为一种解决方法,我正在使用 CPU 从像素图中获取像素,然后将其暂存到 GPU 内存。显然,即使在仅将上传限制到损坏区域的情况下,高分辨率也会非常慢。

有效检索要在基于 Vulkan 的渲染器中使用的像素图内容的最佳方法是什么?

最佳答案

处理这个问题的正确方法是使用 xcb DRI3 扩展来获取像素图的 DMA-buf fd,之后我们可以使用 VK_KHR_external_memory_fd 导入内存。和VK_EXT_external_memory_dma_buf 。此外,VK_EXT_image_drm_format_modifier将需要处理缓冲区的供应商特定格式(由 DRM 修饰符指定),但不幸的是此扩展尚不可用。在此之前,我们可以使用 GBM 来解决,将内部格式和平铺缓冲区转换为线性,之后导入应该变得相对简单。

关于opengl - Vulkan 和 X11 Pixmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53110212/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com