radv: add radv_vs_input_state::attrib_index_offset

This is only used with static strides and it will allow us to bind
the static vertex input state from the pipeline.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30916>
This commit is contained in:
Samuel Pitoiset
2024-08-29 09:20:19 +02:00
committed by Marge Bot
parent dd673269e4
commit aea6cec434
2 changed files with 5 additions and 0 deletions

View File

@@ -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;

View File

@@ -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;
};