Mesa (master): radeonsi: add get_block_size() helper

Timothy Arceri tarceri at kemper.freedesktop.org
Tue Feb 6 21:46:48 UTC 2018


Module: Mesa
Branch: master
Commit: f6932d1ef384784b4c3e269df821672dde545160
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f6932d1ef384784b4c3e269df821672dde545160

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Fri Feb  2 13:06:02 2018 +1100

radeonsi: add get_block_size() helper

This will be reused by the nir backend in a later patch.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/radeonsi/si_shader.c | 47 ++++++++++++++++++--------------
 1 file changed, 27 insertions(+), 20 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index c518e35ab1..808d55b8ce 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1874,6 +1874,32 @@ static LLVMValueRef get_sample_id(struct si_shader_context *ctx)
 	return unpack_param(ctx, SI_PARAM_ANCILLARY, 8, 4);
 }
 
+static LLVMValueRef get_block_size(struct ac_shader_abi *abi)
+{
+	struct si_shader_context *ctx = si_shader_context_from_abi(abi);
+
+	LLVMValueRef values[3];
+	LLVMValueRef result;
+	unsigned i;
+	unsigned *properties = ctx->shader->selector->info.properties;
+
+	if (properties[TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH] != 0) {
+		unsigned sizes[3] = {
+			properties[TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH],
+			properties[TGSI_PROPERTY_CS_FIXED_BLOCK_HEIGHT],
+			properties[TGSI_PROPERTY_CS_FIXED_BLOCK_DEPTH]
+		};
+
+		for (i = 0; i < 3; ++i)
+			values[i] = LLVMConstInt(ctx->i32, sizes[i], 0);
+
+		result = lp_build_gather_values(&ctx->gallivm, values, 3);
+	} else {
+		result = LLVMGetParam(ctx->main_fn, ctx->param_block_size);
+	}
+
+	return result;
+}
 
 /**
  * Load a dword from a constant buffer.
@@ -2124,27 +2150,8 @@ void si_load_system_value(struct si_shader_context *ctx,
 		break;
 
 	case TGSI_SEMANTIC_BLOCK_SIZE:
-	{
-		LLVMValueRef values[3];
-		unsigned i;
-		unsigned *properties = ctx->shader->selector->info.properties;
-
-		if (properties[TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH] != 0) {
-			unsigned sizes[3] = {
-				properties[TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH],
-				properties[TGSI_PROPERTY_CS_FIXED_BLOCK_HEIGHT],
-				properties[TGSI_PROPERTY_CS_FIXED_BLOCK_DEPTH]
-			};
-
-			for (i = 0; i < 3; ++i)
-				values[i] = LLVMConstInt(ctx->i32, sizes[i], 0);
-
-			value = lp_build_gather_values(&ctx->gallivm, values, 3);
-		} else {
-			value = LLVMGetParam(ctx->main_fn, ctx->param_block_size);
-		}
+		value = get_block_size(&ctx->abi);
 		break;
-	}
 
 	case TGSI_SEMANTIC_BLOCK_ID:
 	{




More information about the mesa-commit mailing list