From a00f10207c6a314610cd80aa82aebbb635ef97f0 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 12 Mar 2021 17:34:53 -0500 Subject: [PATCH] zink: set valid region for streamout buffers on bind this catches rebinds and is more accurate about the state of the region Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_context.c | 3 --- src/gallium/drivers/zink/zink_draw.c | 7 +++++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 2799a3eed66..e503a7b3fb2 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -2116,9 +2116,6 @@ zink_create_stream_output_target(struct pipe_context *pctx, t->base.buffer_offset = buffer_offset; t->base.buffer_size = buffer_size; - struct zink_resource *res = zink_resource(pres); - util_range_add(pres, &res->valid_buffer_range, buffer_offset, - buffer_offset + buffer_size); return &t->base; } diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index 6e7e0cd3b22..6992bb72315 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -140,12 +140,15 @@ zink_emit_stream_output_targets(struct pipe_context *pctx) buffer_sizes[i] = sizeof(uint8_t); continue; } - buffers[i] = zink_resource(t->base.buffer)->obj->buffer; + struct zink_resource *res = zink_resource(t->base.buffer); + buffers[i] = res->obj->buffer; zink_resource_buffer_barrier(ctx, NULL, zink_resource(t->base.buffer), VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT); - zink_batch_reference_resource_rw(batch, zink_resource(t->base.buffer), true); + zink_batch_reference_resource_rw(batch, res, true); buffer_offsets[i] = t->base.buffer_offset; buffer_sizes[i] = t->base.buffer_size; + util_range_add(t->base.buffer, &res->valid_buffer_range, t->base.buffer_offset, + t->base.buffer_offset + t->base.buffer_size); } screen->vk_CmdBindTransformFeedbackBuffersEXT(batch->cmdbuf, 0, ctx->num_so_targets,