---
src/gallium/drivers/radeonsi/si_shader_nir.c | 21 +++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index ba7c0b31bd2..d5a5464e235 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -477,15 +477,24 @@ void si_nir_scan_shader(const struct nir_shader *nir,
for (unsigned j = 0; j < attrib_count; j++, i++) {
+ tgsi_get_gl_varying_semantic(variable->data.location +
j, true,
+ &semantic_name,
&semantic_index);
+
+ if (semantic_name == TGSI_SEMANTIC_COLOR) {
+ unsigned num_components;
+ unsigned component;
+ get_num_of_component_info(variable, 0,
&num_components, &component);
+
+ ubyte usage_mask =
get_component_usagemask(component, num_components);
+ info->colors_read |= usage_mask <<
(semantic_index * 4);
+ }
+
if (processed_inputs & ((uint64_t)1 << i))
continue;
processed_inputs |= ((uint64_t)1 << i);
num_inputs++;
- tgsi_get_gl_varying_semantic(variable->data.location +
j, true,
- &semantic_name,
&semantic_index);
-
info->input_semantic_name[i] = semantic_name;
info->input_semantic_index[i] = semantic_index;
@@ -531,12 +540,6 @@ void si_nir_scan_shader(const struct nir_shader *nir,
info->input_interpolate[i] =
TGSI_INTERPOLATE_CONSTANT;
break;
}
-
- /* TODO make this more precise */
- if (variable->data.location == VARYING_SLOT_COL0)
- info->colors_read |= 0x0f;
- else if (variable->data.location == VARYING_SLOT_COL1)
- info->colors_read |= 0xf0;
}
}
--
2.20.1
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev