From 19e8df39b62a26ae55273de7b4866c24d1657dda Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 24 Apr 2024 12:44:06 -0400 Subject: [PATCH] zink: slightly better swapinterval failure handling retain the old mode and print an error cc: mesa-stable Acked-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_kopper.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c index d508e2e06d755..f919ff98e83a0 100644 --- a/src/gallium/drivers/zink/zink_kopper.c +++ b/src/gallium/drivers/zink/zink_kopper.c @@ -1115,14 +1115,21 @@ zink_kopper_set_swap_interval(struct pipe_screen *pscreen, struct pipe_resource { struct zink_resource *res = zink_resource(pres); struct zink_screen *screen = zink_screen(pscreen); + if (!res->obj->dt) + fprintf(stderr, "NOT SWAPCHAIN %p\n", res); assert(res->obj->dt); struct kopper_displaytarget *cdt = res->obj->dt; VkPresentModeKHR old_present_mode = cdt->present_mode; zink_kopper_set_present_mode_for_interval(cdt, interval); - if (old_present_mode != cdt->present_mode) - update_swapchain(screen, cdt, cdt->caps.currentExtent.width, cdt->caps.currentExtent.height); + if (old_present_mode == cdt->present_mode) + return; + VkResult ret = update_swapchain(screen, cdt, cdt->caps.currentExtent.width, cdt->caps.currentExtent.height); + if (ret == VK_SUCCESS) + return; + cdt->present_mode = old_present_mode; + mesa_loge("zink: failed to set swap interval!"); } int