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

Author: Timothy Arceri <[email protected]>
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 <[email protected]>

---

 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:
        {

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to