From 3a3c968de8f6aed1cbafc4a21f3e9f2750f53923 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 7 Sep 2021 18:05:02 -0400 Subject: [PATCH] zink: clamp instance divisors to max value better than exploding Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_state.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_state.c b/src/gallium/drivers/zink/zink_state.c index 66328de..e36197c 100644 --- a/src/gallium/drivers/zink/zink_state.c +++ b/src/gallium/drivers/zink/zink_state.c @@ -64,8 +64,9 @@ zink_create_vertex_elements_state(struct pipe_context *pctx, ves->bindings[binding].inputRate = elem->instance_divisor ? VK_VERTEX_INPUT_RATE_INSTANCE : VK_VERTEX_INPUT_RATE_VERTEX; assert(!elem->instance_divisor || zink_screen(pctx->screen)->info.have_EXT_vertex_attribute_divisor); - ves->divisor[binding] = elem->instance_divisor; - assert(elem->instance_divisor <= screen->info.vdiv_props.maxVertexAttribDivisor); + if (elem->instance_divisor > screen->info.vdiv_props.maxVertexAttribDivisor) + debug_printf("zink: clamping instance divisor %u to %u\n", elem->instance_divisor, screen->info.vdiv_props.maxVertexAttribDivisor); + ves->divisor[binding] = MIN2(elem->instance_divisor, screen->info.vdiv_props.maxVertexAttribDivisor); if (screen->info.have_EXT_vertex_input_dynamic_state) { ves->hw_state.dynattribs[i].sType = VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT; -- 2.7.4