zink: slightly better swapinterval failure handling

retain the old mode and print an error

cc: mesa-stable

Acked-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28904>
(cherry picked from commit 19e8df39b6)
This commit is contained in:
Mike Blumenkrantz 2024-04-24 12:44:06 -04:00 committed by Eric Engestrom
parent c5633dbbe3
commit a351cbeff6
2 changed files with 10 additions and 3 deletions

View file

@ -2244,7 +2244,7 @@
"description": "zink: slightly better swapinterval failure handling",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -1066,14 +1066,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