mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
vulkan/wsi/x11: fix ARGB window support
Pass the correct depth to xcb_dri3_pixmap_from_buffer_checked().
Otherwise xcb_present_pixmap() fails with a BadMatch error.
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 972670c200)
This commit is contained in:
parent
8ec30b87c0
commit
100851b1f5
1 changed files with 15 additions and 4 deletions
|
|
@ -471,6 +471,7 @@ struct x11_swapchain {
|
|||
xcb_connection_t * conn;
|
||||
xcb_window_t window;
|
||||
xcb_gc_t gc;
|
||||
uint32_t depth;
|
||||
VkExtent2D extent;
|
||||
uint32_t image_count;
|
||||
|
||||
|
|
@ -625,7 +626,6 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,
|
|||
uint32_t row_pitch;
|
||||
uint32_t offset;
|
||||
uint32_t bpp = 32;
|
||||
uint32_t depth = 24;
|
||||
int fd;
|
||||
uint32_t size;
|
||||
|
||||
|
|
@ -651,7 +651,7 @@ x11_image_init(VkDevice device_h, struct x11_swapchain *chain,
|
|||
pCreateInfo->imageExtent.width,
|
||||
pCreateInfo->imageExtent.height,
|
||||
row_pitch,
|
||||
depth, bpp, fd);
|
||||
chain->depth, bpp, fd);
|
||||
xcb_discard_reply(chain->conn, cookie.sequence);
|
||||
|
||||
int fence_fd = xshmfence_alloc_shm();
|
||||
|
|
@ -752,18 +752,29 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
|
|||
if (chain == NULL)
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
|
||||
xcb_connection_t *conn = x11_surface_get_connection(icd_surface);
|
||||
xcb_window_t window = x11_surface_get_window(icd_surface);
|
||||
xcb_get_geometry_reply_t *geometry =
|
||||
xcb_get_geometry_reply(conn, xcb_get_geometry(conn, window), NULL);
|
||||
|
||||
if (geometry == NULL)
|
||||
return VK_ERROR_SURFACE_LOST_KHR;
|
||||
|
||||
chain->base.device = device;
|
||||
chain->base.destroy = x11_swapchain_destroy;
|
||||
chain->base.get_images = x11_get_images;
|
||||
chain->base.acquire_next_image = x11_acquire_next_image;
|
||||
chain->base.queue_present = x11_queue_present;
|
||||
chain->base.image_fns = image_fns;
|
||||
chain->conn = x11_surface_get_connection(icd_surface);
|
||||
chain->window = x11_surface_get_window(icd_surface);
|
||||
chain->conn = conn;
|
||||
chain->window = window;
|
||||
chain->depth = geometry->depth;
|
||||
chain->extent = pCreateInfo->imageExtent;
|
||||
chain->image_count = num_images;
|
||||
chain->send_sbc = 0;
|
||||
|
||||
free(geometry);
|
||||
|
||||
chain->event_id = xcb_generate_id(chain->conn);
|
||||
xcb_present_select_input(chain->conn, chain->event_id, chain->window,
|
||||
XCB_PRESENT_EVENT_MASK_CONFIGURE_NOTIFY |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue