diff --git a/src/amd/vulkan/radv_pipeline_graphics.c b/src/amd/vulkan/radv_pipeline_graphics.c index 6159db1564a..889459e0ec0 100644 --- a/src/amd/vulkan/radv_pipeline_graphics.c +++ b/src/amd/vulkan/radv_pipeline_graphics.c @@ -2954,6 +2954,10 @@ radv_pipeline_init_vertex_input_state(const struct radv_device *device, struct r pipeline->vs_input_state.bindings[i] = binding; pipeline->vs_input_state.bindings_match_attrib &= binding == i; + if (state->vi->bindings[binding].stride) { + pipeline->vs_input_state.attrib_index_offset[i] = offset / state->vi->bindings[binding].stride; + } + if (state->vi->bindings[binding].input_rate) { pipeline->vs_input_state.instance_rate_inputs |= BITFIELD_BIT(i); pipeline->vs_input_state.divisors[i] = state->vi->bindings[binding].divisor; diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index 0b36876726c..8e59048e47c 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -297,6 +297,7 @@ struct radv_vs_input_state { uint8_t format_align_req_minus_1[MAX_VERTEX_ATTRIBS]; uint8_t component_align_req_minus_1[MAX_VERTEX_ATTRIBS]; uint8_t format_sizes[MAX_VERTEX_ATTRIBS]; + uint32_t attrib_index_offset[MAX_VERTEX_ATTRIBS]; /* Only used with static strides. */ bool bindings_match_attrib; };