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

---
 src/gallium/drivers/radeonsi/si_shader.c            | 13 +++++--------
 src/gallium/drivers/radeonsi/si_shader_internal.h   | 13 ++++++-------
 src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c |  4 ++--
 3 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index db8297d..861d82f 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1486,23 +1486,23 @@ static LLVMValueRef load_sample_position(struct 
si_shader_context *ctx, LLVMValu
        LLVMValueRef pos[4] = {
                buffer_load_const(ctx, resource, offset0),
                buffer_load_const(ctx, resource, offset1),
                LLVMConstReal(ctx->f32, 0),
                LLVMConstReal(ctx->f32, 0)
        };
 
        return lp_build_gather_values(gallivm, pos, 4);
 }
 
-static void declare_system_value(struct si_shader_context *ctx,
-                                unsigned index,
-                                const struct tgsi_full_declaration *decl)
+void si_load_system_value(struct si_shader_context *ctx,
+                         unsigned index,
+                         const struct tgsi_full_declaration *decl)
 {
        struct lp_build_context *bld = &ctx->bld_base.base;
        struct gallivm_state *gallivm = &ctx->gallivm;
        LLVMValueRef value = 0;
 
        assert(index < RADEON_LLVM_MAX_SYSTEM_VALUES);
 
        switch (decl->Semantic.Name) {
        case TGSI_SEMANTIC_INSTANCEID:
                value = ctx->abi.instance_id;
@@ -1763,22 +1763,22 @@ static void declare_system_value(struct 
si_shader_context *ctx,
        }
 
        default:
                assert(!"unknown system value");
                return;
        }
 
        ctx->system_values[index] = value;
 }
 
-static void declare_compute_memory(struct si_shader_context *ctx,
-                                   const struct tgsi_full_declaration *decl)
+void si_declare_compute_memory(struct si_shader_context *ctx,
+                              const struct tgsi_full_declaration *decl)
 {
        struct si_shader_selector *sel = ctx->shader->selector;
        struct gallivm_state *gallivm = &ctx->gallivm;
 
        LLVMTypeRef i8p = LLVMPointerType(ctx->i8, LOCAL_ADDR_SPACE);
        LLVMValueRef var;
 
        assert(decl->Declaration.MemType == TGSI_MEMORY_TYPE_SHARED);
        assert(decl->Range.First == decl->Range.Last);
        assert(!ctx->shared_memory);
@@ -5684,21 +5684,20 @@ static bool si_compile_tgsi_main(struct 
si_shader_context *ctx,
        case PIPE_SHADER_GEOMETRY:
                bld_base->emit_fetch_funcs[TGSI_FILE_INPUT] = fetch_input_gs;
                bld_base->emit_epilogue = si_llvm_emit_gs_epilogue;
                break;
        case PIPE_SHADER_FRAGMENT:
                ctx->load_input = declare_input_fs;
                ctx->abi.emit_outputs = si_llvm_return_fs_outputs;
                bld_base->emit_epilogue = si_tgsi_emit_epilogue;
                break;
        case PIPE_SHADER_COMPUTE:
-               ctx->declare_memory_region = declare_compute_memory;
                break;
        default:
                assert(!"Unsupported shader type");
                return false;
        }
 
        ctx->abi.load_ubo = load_ubo;
        ctx->abi.load_ssbo = load_ssbo;
 
        create_function(ctx);
@@ -6338,22 +6337,20 @@ int si_compile_tgsi_shader(struct si_screen *sscreen,
 
        si_init_shader_ctx(&ctx, sscreen, tm);
        si_llvm_context_set_tgsi(&ctx, shader);
        ctx.separate_prolog = !is_monolithic;
 
        memset(shader->info.vs_output_param_offset, AC_EXP_PARAM_UNDEFINED,
               sizeof(shader->info.vs_output_param_offset));
 
        shader->info.uses_instanceid = sel->info.uses_instanceid;
 
-       ctx.load_system_value = declare_system_value;
-
        if (!si_compile_tgsi_main(&ctx, is_monolithic)) {
                si_llvm_dispose(&ctx);
                return -1;
        }
 
        if (is_monolithic && ctx.type == PIPE_SHADER_VERTEX) {
                LLVMValueRef parts[2];
                bool need_prolog = sel->vs_needs_prolog;
 
                parts[1] = ctx.main_fn;
diff --git a/src/gallium/drivers/radeonsi/si_shader_internal.h 
b/src/gallium/drivers/radeonsi/si_shader_internal.h
index f304295..1231ef4 100644
--- a/src/gallium/drivers/radeonsi/si_shader_internal.h
+++ b/src/gallium/drivers/radeonsi/si_shader_internal.h
@@ -71,27 +71,20 @@ struct si_shader_context {
        struct ac_shader_abi abi;
 
        /** This function is responsible for initilizing the inputs array and 
will be
          * called once for each input declared in the TGSI shader.
          */
        void (*load_input)(struct si_shader_context *,
                           unsigned input_index,
                           const struct tgsi_full_declaration *decl,
                           LLVMValueRef out[4]);
 
-       void (*load_system_value)(struct si_shader_context *,
-                                 unsigned index,
-                                 const struct tgsi_full_declaration *decl);
-
-       void (*declare_memory_region)(struct si_shader_context *,
-                                     const struct tgsi_full_declaration *decl);
-
        /** This array contains the input values for the shader.  Typically 
these
          * values will be in the form of a target intrinsic that will inform 
the
          * backend how to load the actual inputs to the shader.
          */
        struct tgsi_full_declaration input_decls[RADEON_LLVM_MAX_INPUT_SLOTS];
        LLVMValueRef inputs[RADEON_LLVM_MAX_INPUTS];
        LLVMValueRef outputs[RADEON_LLVM_MAX_OUTPUTS][TGSI_NUM_CHANNELS];
        LLVMValueRef addrs[RADEON_LLVM_MAX_ADDRS][TGSI_NUM_CHANNELS];
 
        /** This pointer is used to contain the temporary values.
@@ -318,20 +311,26 @@ LLVMTypeRef si_const_array(LLVMTypeRef elem_type, int 
num_elements);
 void si_shader_context_init_alu(struct lp_build_tgsi_context *bld_base);
 void si_shader_context_init_mem(struct si_shader_context *ctx);
 
 LLVMValueRef si_load_sampler_desc(struct si_shader_context *ctx,
                                  LLVMValueRef list, LLVMValueRef index,
                                  enum ac_descriptor_type type);
 LLVMValueRef si_load_image_desc(struct si_shader_context *ctx,
                                LLVMValueRef list, LLVMValueRef index,
                                enum ac_descriptor_type desc_type, bool 
dcc_off);
 
+void si_load_system_value(struct si_shader_context *ctx,
+                         unsigned index,
+                         const struct tgsi_full_declaration *decl);
+void si_declare_compute_memory(struct si_shader_context *ctx,
+                              const struct tgsi_full_declaration *decl);
+
 void si_llvm_load_input_vs(
        struct si_shader_context *ctx,
        unsigned input_index,
        LLVMValueRef out[4]);
 void si_llvm_load_input_fs(
        struct si_shader_context *ctx,
        unsigned input_index,
        LLVMValueRef out[4]);
 
 bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir);
diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c 
b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
index 7a59c90..231f16f 100644
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
@@ -835,21 +835,21 @@ static void emit_declaration(struct lp_build_tgsi_context 
*bld_base,
                                                        &ctx->inputs[idx * 4]);
                        }
                }
        }
        break;
 
        case TGSI_FILE_SYSTEM_VALUE:
        {
                unsigned idx;
                for (idx = decl->Range.First; idx <= decl->Range.Last; idx++) {
-                       ctx->load_system_value(ctx, idx, decl);
+                       si_load_system_value(ctx, idx, decl);
                }
        }
        break;
 
        case TGSI_FILE_OUTPUT:
        {
                char name[16] = "";
                unsigned idx;
                for (idx = decl->Range.First; idx <= decl->Range.Last; idx++) {
                        unsigned chan;
@@ -863,21 +863,21 @@ static void emit_declaration(struct lp_build_tgsi_context 
*bld_base,
 #endif
                                ctx->outputs[idx][chan] = lp_build_alloca_undef(
                                        &ctx->gallivm,
                                        ctx->f32, name);
                        }
                }
                break;
        }
 
        case TGSI_FILE_MEMORY:
-               ctx->declare_memory_region(ctx, decl);
+               si_declare_compute_memory(ctx, decl);
                break;
 
        default:
                break;
        }
 }
 
 void si_llvm_emit_store(struct lp_build_tgsi_context *bld_base,
                        const struct tgsi_full_instruction *inst,
                        const struct tgsi_opcode_info *info,
-- 
2.7.4

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

Reply via email to