diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index a381de1b31f..38b490c6468 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -5002,6 +5002,7 @@ zink_context_replace_buffer_storage(struct pipe_context *pctx, struct pipe_resou /* don't be too creative */ zink_resource_object_reference(screen, &d->obj, s->obj); d->valid_buffer_range = s->valid_buffer_range; + s->real_buffer_range = &d->valid_buffer_range; zink_resource_copies_reset(d); /* force counter buffer reset */ d->so_valid = false; diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 95632c885bf..13d56c5c8bc 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -1292,6 +1292,7 @@ struct zink_resource { union { struct { struct util_range valid_buffer_range; + struct util_range *real_buffer_range; //only set on tc replace_buffer src uint32_t vbo_bind_mask : PIPE_MAX_ATTRIBS; uint8_t ubo_bind_count[2]; uint8_t ssbo_bind_count[2];