[Mesa-dev] [PATCH 1/4] radeonsi/nir: add get_component_usagemask() helper

Timothy Arceri tarceri at itsqueeze.com
Mon Feb 11 03:43:58 UTC 2019


This will be reused in a following patch.
---
 src/gallium/drivers/radeonsi/si_shader_nir.c | 46 ++++++++++++--------
 1 file changed, 27 insertions(+), 19 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 7554f5b9f8b..5abda445e09 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -51,6 +51,32 @@ static nir_variable* intrinsic_get_var(nir_intrinsic_instr *instr)
 	return nir_deref_instr_get_variable(nir_src_as_deref(instr->src[0]));
 }
 
+static ubyte get_component_usagemask(unsigned first_comp,
+				     unsigned num_components)
+{
+	ubyte usagemask = 0;
+	for (unsigned i = first_comp; i < num_components + first_comp; i++) {
+		switch (i) {
+		case 0:
+			usagemask |= TGSI_WRITEMASK_X;
+			break;
+		case 1:
+			usagemask |= TGSI_WRITEMASK_Y;
+			break;
+		case 2:
+			usagemask |= TGSI_WRITEMASK_Z;
+			break;
+		case 3:
+			usagemask |= TGSI_WRITEMASK_W;
+			break;
+		default:
+			unreachable("error calculating component index");
+		}
+	}
+
+	return usagemask;
+}
+
 static void scan_instruction(struct tgsi_shader_info *info,
 			     nir_instr *instr)
 {
@@ -527,25 +553,7 @@ void si_nir_scan_shader(const struct nir_shader *nir,
 				}
 			}
 
-			ubyte usagemask = 0;
-			for (unsigned j = component; j < num_components + component; j++) {
-				switch (j) {
-				case 0:
-					usagemask |= TGSI_WRITEMASK_X;
-					break;
-				case 1:
-					usagemask |= TGSI_WRITEMASK_Y;
-					break;
-				case 2:
-					usagemask |= TGSI_WRITEMASK_Z;
-					break;
-				case 3:
-					usagemask |= TGSI_WRITEMASK_W;
-					break;
-				default:
-					unreachable("error calculating component index");
-				}
-			}
+			ubyte usagemask = get_component_usagemask(component, num_components);
 
 			unsigned gs_out_streams;
 			if (variable->data.stream & (1u << 31)) {
-- 
2.20.1



More information about the mesa-dev mailing list