diff --git a/src/gallium/drivers/zink/zink_surface.c b/src/gallium/drivers/zink/zink_surface.c index b3199549c35..f681dff87f6 100644 --- a/src/gallium/drivers/zink/zink_surface.c +++ b/src/gallium/drivers/zink/zink_surface.c @@ -297,6 +297,8 @@ zink_create_transient_surface(struct zink_context *ctx, const struct pipe_surfac rtempl.nr_samples = nr_samples; rtempl.bind &= ~(PIPE_BIND_LINEAR | ZINK_BIND_DMABUF); rtempl.bind |= ZINK_BIND_TRANSIENT; + if (psurf->format != rtempl.format) + rtempl.bind |= ZINK_BIND_MUTABLE; res->transient = zink_resource(ctx->base.screen->resource_create(ctx->base.screen, &rtempl)); transient = res->transient; if (unlikely(!transient)) {