[Mesa-dev] [PATCH 4/4] radeonsi/nir: set colors_read properly
Timothy Arceri
tarceri at itsqueeze.com
Mon Feb 11 03:44:01 UTC 2019
---
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
More information about the mesa-dev
mailing list