From: Marek Olšák <marek.ol...@amd.com>

It will be reused later.
---
 src/gallium/drivers/radeonsi/si_shader.c | 36 ++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 13 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index d0f09ad..1b6c15a 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -2305,6 +2305,27 @@ static LLVMTypeRef const_array(LLVMTypeRef elem_type, 
int num_elements)
                               CONST_ADDR_SPACE);
 }
 
+static void declare_streamout_params(struct si_shader_context *si_shader_ctx,
+                                    struct pipe_stream_output_info *so,
+                                    LLVMTypeRef *params, LLVMTypeRef i32,
+                                    unsigned *num_params)
+{
+       int i;
+
+       /* Streamout SGPRs. */
+       if (so->num_outputs) {
+               params[si_shader_ctx->param_streamout_config = (*num_params)++] 
= i32;
+               params[si_shader_ctx->param_streamout_write_index = 
(*num_params)++] = i32;
+       }
+       /* A streamout buffer offset is loaded if the stride is non-zero. */
+       for (i = 0; i < 4; i++) {
+               if (!so->stride[i])
+                       continue;
+
+               params[si_shader_ctx->param_streamout_offset[i] = 
(*num_params)++] = i32;
+       }
+}
+
 static void create_function(struct si_shader_context *si_shader_ctx)
 {
        struct lp_build_tgsi_context *bld_base = 
&si_shader_ctx->radeon_bld.soa.bld_base;
@@ -2345,19 +2366,8 @@ static void create_function(struct si_shader_context 
*si_shader_ctx)
                        }
 
                        /* The locations of the other parameters are assigned 
dynamically. */
-
-                       /* Streamout SGPRs. */
-                       if (shader->selector->so.num_outputs) {
-                               params[si_shader_ctx->param_streamout_config = 
num_params++] = i32;
-                               
params[si_shader_ctx->param_streamout_write_index = num_params++] = i32;
-                       }
-                       /* A streamout buffer offset is loaded if the stride is 
non-zero. */
-                       for (i = 0; i < 4; i++) {
-                               if (!shader->selector->so.stride[i])
-                                       continue;
-
-                               params[si_shader_ctx->param_streamout_offset[i] 
= num_params++] = i32;
-                       }
+                       declare_streamout_params(si_shader_ctx, 
&shader->selector->so,
+                                                params, i32, &num_params);
                }
 
                last_sgpr = num_params-1;
-- 
2.1.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to