From 5c6d61635d2aad02378e3e68afcd1d828424bf8b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 21 Sep 2022 09:20:27 -0400 Subject: [PATCH] zink: don't call CmdBindVertexBuffers2EXT with no attributes cc: mesa-stable Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_draw.cpp | 11 ++++++----- src/gallium/drivers/zink/zink_pipeline.c | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/zink_draw.cpp b/src/gallium/drivers/zink/zink_draw.cpp index 108da55c161..96808bc8a19 100644 --- a/src/gallium/drivers/zink/zink_draw.cpp +++ b/src/gallium/drivers/zink/zink_draw.cpp @@ -136,11 +136,12 @@ zink_bind_vertex_buffers(struct zink_batch *batch, struct zink_context *ctx) } } - if (DYNAMIC_STATE != ZINK_NO_DYNAMIC_STATE && DYNAMIC_STATE != ZINK_DYNAMIC_VERTEX_INPUT) - VKCTX(CmdBindVertexBuffers2EXT)(batch->state->cmdbuf, 0, - elems->hw_state.num_bindings, - buffers, buffer_offsets, NULL, buffer_strides); - else if (elems->hw_state.num_bindings) + if (DYNAMIC_STATE != ZINK_NO_DYNAMIC_STATE && DYNAMIC_STATE != ZINK_DYNAMIC_VERTEX_INPUT) { + if (elems->hw_state.num_bindings) + VKCTX(CmdBindVertexBuffers2EXT)(batch->state->cmdbuf, 0, + elems->hw_state.num_bindings, + buffers, buffer_offsets, NULL, buffer_strides); + } else if (elems->hw_state.num_bindings) VKSCR(CmdBindVertexBuffers)(batch->state->cmdbuf, 0, elems->hw_state.num_bindings, buffers, buffer_offsets); diff --git a/src/gallium/drivers/zink/zink_pipeline.c b/src/gallium/drivers/zink/zink_pipeline.c index 24640155bfe..2872c184907 100644 --- a/src/gallium/drivers/zink/zink_pipeline.c +++ b/src/gallium/drivers/zink/zink_pipeline.c @@ -240,7 +240,7 @@ zink_create_gfx_pipeline(struct zink_screen *screen, } if (screen->info.have_EXT_vertex_input_dynamic_state) dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_VERTEX_INPUT_EXT; - else if (screen->info.have_EXT_extended_dynamic_state && state->uses_dynamic_stride) + else if (screen->info.have_EXT_extended_dynamic_state && state->uses_dynamic_stride && state->element_state->num_attribs) dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE; if (screen->info.have_EXT_extended_dynamic_state2) { dynamicStateEnables[state_count++] = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE;