From 5b0b03733a4fdc5b9cd485bd313810b37c81b2a9 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 4 Dec 2020 19:45:00 +0100 Subject: [PATCH] lavapipe: interpret inputRate as an enum-value This isn't an integer, it's an enum, We need to support VK_EXT_vertex_attribute_divisor if we want to support using values other than 0 and 1 here. Reviewed-by: Dave Airlie Part-of: --- src/gallium/frontends/lavapipe/lvp_execute.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index 41af4ac4763..f7a6aa12577 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -574,7 +574,18 @@ static void handle_graphics_pipeline(struct lvp_cmd_buffer_entry *cmd, state->ve[location].src_offset = vi->pVertexAttributeDescriptions[i].offset; state->ve[location].vertex_buffer_index = vi->pVertexAttributeDescriptions[i].binding; state->ve[location].src_format = vk_format_to_pipe(vi->pVertexAttributeDescriptions[i].format); - state->ve[location].instance_divisor = vi->pVertexBindingDescriptions[vi->pVertexAttributeDescriptions[i].binding].inputRate; + + switch (vi->pVertexBindingDescriptions[vi->pVertexAttributeDescriptions[i].binding].inputRate) { + case VK_VERTEX_INPUT_RATE_VERTEX: + state->ve[location].instance_divisor = 0; + break; + case VK_VERTEX_INPUT_RATE_INSTANCE: + state->ve[location].instance_divisor = 1; + break; + default: + assert(0); + break; + } if ((int)location > max_location) max_location = location;