diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c index 3773d925e4c..18c55d3c90e 100644 --- a/src/gallium/drivers/zink/zink_kopper.c +++ b/src/gallium/drivers/zink/zink_kopper.c @@ -502,8 +502,11 @@ zink_kopper_acquire(struct zink_context *ctx, struct zink_resource *res, uint64_ res->base.b.height0 != cswap->scci.imageExtent.height; VkResult ret = kopper_acquire(zink_screen(ctx->base.screen), res, timeout); if (ret == VK_SUCCESS || ret == VK_SUBOPTIMAL_KHR) { - if (cswap != cdt->swapchain) + if (cswap != cdt->swapchain) { ctx->swapchain_size = cdt->swapchain->scci.imageExtent; + res->base.b.width0 = ctx->swapchain_size.width; + res->base.b.height0 = ctx->swapchain_size.height; + } } else if (is_swapchain_kill(ret)) { kill_swapchain(ctx, res); } @@ -664,8 +667,11 @@ zink_kopper_acquire_readback(struct zink_context *ctx, struct zink_resource *res return false; } } - if (cswap != cdt->swapchain) + if (cswap != cdt->swapchain) { ctx->swapchain_size = cdt->swapchain->scci.imageExtent; + res->base.b.width0 = ctx->swapchain_size.width; + res->base.b.height0 = ctx->swapchain_size.height; + } return true; } diff --git a/src/gallium/drivers/zink/zink_surface.c b/src/gallium/drivers/zink/zink_surface.c index 373650415a8..9a3eca57756 100644 --- a/src/gallium/drivers/zink/zink_surface.c +++ b/src/gallium/drivers/zink/zink_surface.c @@ -434,6 +434,8 @@ zink_surface_swapchain_update(struct zink_context *ctx, struct zink_surface *sur surface->old_swapchain_size = surface->swapchain_size; surface->swapchain_size = cdt->swapchain->num_images; surface->swapchain = calloc(surface->swapchain_size, sizeof(VkImageView)); + surface->base.width = res->base.b.width0; + surface->base.height = res->base.b.height0; init_surface_info(surface, res, &surface->ivci); } if (!surface->swapchain[res->obj->dt_idx]) {