radeonsi: require that count in set_vertex_buffers matches vertex elements state

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27736>
This commit is contained in:
Marek Olšák
2024-02-01 02:19:48 -05:00
committed by Marge Bot
parent 7bf5d2ce75
commit 0f54898583
2 changed files with 4 additions and 2 deletions
+3 -2
View File
@@ -4446,6 +4446,7 @@ static void *si_create_vertex_elements(struct pipe_context *ctx, unsigned count,
v->elem[i].src_offset = elements[i].src_offset;
v->elem[i].stride = elements[i].src_stride;
v->vertex_buffer_index[i] = vbo_index;
v->num_vertex_buffers = MAX2(v->num_vertex_buffers, vbo_index + 1);
bool always_fix = false;
union si_vs_fix_fetch fix_fetch;
@@ -4670,7 +4671,7 @@ static void si_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
unsigned i;
assert(count <= ARRAY_SIZE(sctx->vertex_buffer));
assert(!count || buffers);
assert(!count || (count == sctx->vertex_elements->num_vertex_buffers && buffers));
for (i = 0; i < count; i++) {
const struct pipe_vertex_buffer *src = buffers + i;
@@ -4698,7 +4699,7 @@ static void si_set_vertex_buffers(struct pipe_context *ctx, unsigned count,
pipe_resource_reference(&sctx->vertex_buffer[i].buffer.resource, NULL);
sctx->num_vertex_buffers = count;
sctx->vertex_buffers_dirty = sctx->num_vertex_elements > 0;
sctx->vertex_buffers_dirty = count > 0;
sctx->vertex_buffer_unaligned = unaligned;
#ifndef NDEBUG
sctx->vertex_elements_but_no_buffers = false;
+1
View File
@@ -172,6 +172,7 @@ struct si_vertex_elements {
uint16_t vb_alignment_check_mask;
uint8_t count;
uint8_t num_vertex_buffers;
/* Vertex buffer descriptor list size aligned for optimal prefetch. */
uint16_t vb_desc_list_alloc_size;