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 <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9546>
This commit is contained in:
Mike Blumenkrantz 2021-03-12 17:34:53 -05:00 committed by Marge Bot
parent 8c1422dca5
commit a00f10207c
2 changed files with 5 additions and 5 deletions

View file

@ -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;
}

View file

@ -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,