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

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Fri Jan 10 18:09:04 2020 -0500

radeonsi: merge si_tessctrl_info into si_shader_info

Reviewed-by: Timothy Arceri <tarc...@itsqueeze.com>

---

 src/gallium/drivers/radeonsi/si_shader.c        |  8 ++++----
 src/gallium/drivers/radeonsi/si_shader.h        |  5 -----
 src/gallium/drivers/radeonsi/si_shader_nir.c    | 17 +++++------------
 src/gallium/drivers/radeonsi/si_state_shaders.c |  3 +--
 4 files changed, 10 insertions(+), 23 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index 2618c2c51bc..e5581b9e25c 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1053,7 +1053,7 @@ static void si_nir_store_output_tcs(struct ac_shader_abi 
*abi,
                            name == TGSI_SEMANTIC_TESSOUTER) {
                                /* The epilog doesn't read LDS if invocation 0 
defines tess factors. */
                                skip_lds_store = 
!info->reads_tessfactor_outputs &&
-                                                
ctx->shader->selector->tcs_info.tessfactors_are_def_in_all_invocs;
+                                                
ctx->shader->selector->info.tessfactors_are_def_in_all_invocs;
                                is_tess_factor = true;
                                is_tess_inner = name == TGSI_SEMANTIC_TESSINNER;
                        }
@@ -1098,7 +1098,7 @@ static void si_nir_store_output_tcs(struct ac_shader_abi 
*abi,
 
                /* Write tess factors into VGPRs for the epilog. */
                if (is_tess_factor &&
-                   
ctx->shader->selector->tcs_info.tessfactors_are_def_in_all_invocs) {
+                   
ctx->shader->selector->info.tessfactors_are_def_in_all_invocs) {
                        if (!is_tess_inner) {
                                LLVMBuildStore(ctx->ac.builder, value, /* outer 
*/
                                               ctx->invoc0_tess_factors[chan]);
@@ -2604,7 +2604,7 @@ static void si_llvm_emit_tcs_epilogue(struct 
ac_shader_abi *abi,
        ret = LLVMBuildInsertValue(builder, ret, rel_patch_id, vgpr++, "");
        ret = LLVMBuildInsertValue(builder, ret, invocation_id, vgpr++, "");
 
-       if (ctx->shader->selector->tcs_info.tessfactors_are_def_in_all_invocs) {
+       if (ctx->shader->selector->info.tessfactors_are_def_in_all_invocs) {
                vgpr++; /* skip the tess factor LDS offset */
                for (unsigned i = 0; i < 6; i++) {
                        LLVMValueRef value =
@@ -4949,7 +4949,7 @@ static bool si_compile_tgsi_main(struct si_shader_context 
*ctx,
        preload_ring_buffers(ctx);
 
        if (ctx->type == PIPE_SHADER_TESS_CTRL &&
-           sel->tcs_info.tessfactors_are_def_in_all_invocs) {
+           sel->info.tessfactors_are_def_in_all_invocs) {
                for (unsigned i = 0; i < 6; i++) {
                        ctx->invoc0_tess_factors[i] =
                                ac_build_alloca_undef(&ctx->ac, ctx->i32, "");
diff --git a/src/gallium/drivers/radeonsi/si_shader.h 
b/src/gallium/drivers/radeonsi/si_shader.h
index 565bcd6b7a2..058bb35cf0a 100644
--- a/src/gallium/drivers/radeonsi/si_shader.h
+++ b/src/gallium/drivers/radeonsi/si_shader.h
@@ -450,9 +450,7 @@ struct si_shader_info {
         * Max nesting limit of loops/if's
         */
        unsigned max_depth;
-};
 
-struct si_tessctrl_info {
        /** Whether all codepaths write tess factors in all invocations. */
        bool tessfactors_are_def_in_all_invocs;
 };
@@ -487,7 +485,6 @@ struct si_shader_selector {
 
        struct pipe_stream_output_info  so;
        struct si_shader_info           info;
-       struct si_tessctrl_info         tcs_info;
 
        /* PIPE_SHADER_[VERTEX|FRAGMENT|...] */
        enum pipe_shader_type type;
@@ -913,8 +910,6 @@ void si_shader_binary_clean(struct si_shader_binary 
*binary);
 /* si_shader_nir.c */
 void si_nir_scan_shader(const struct nir_shader *nir,
                        struct si_shader_info *info);
-void si_nir_scan_tess_ctrl(const struct nir_shader *nir,
-                          struct si_tessctrl_info *out);
 void si_nir_adjust_driver_locations(struct nir_shader *nir);
 void si_finalize_nir(struct pipe_screen *screen, void *nirptr, bool optimize);
 
diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c 
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 331103fe3a3..6aa85ef6c7b 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -430,18 +430,6 @@ static void scan_instruction(const struct nir_shader *nir,
        }
 }
 
-void si_nir_scan_tess_ctrl(const struct nir_shader *nir,
-                          struct si_tessctrl_info *out)
-{
-       memset(out, 0, sizeof(*out));
-
-       if (nir->info.stage != MESA_SHADER_TESS_CTRL)
-               return;
-
-       out->tessfactors_are_def_in_all_invocs =
-               ac_are_tessfactors_def_in_all_invocs(nir);
-}
-
 static void scan_output_slot(const nir_variable *var,
                             unsigned var_idx,
                             unsigned component, unsigned num_components,
@@ -799,6 +787,11 @@ void si_nir_scan_shader(const struct nir_shader *nir,
        if (info->processor == PIPE_SHADER_FRAGMENT)
                info->uses_kill = nir->info.fs.uses_discard;
 
+       if (nir->info.stage == MESA_SHADER_TESS_CTRL) {
+               info->tessfactors_are_def_in_all_invocs =
+                       ac_are_tessfactors_def_in_all_invocs(nir);
+       }
+
        func = (struct nir_function *)exec_list_get_head_const(&nir->functions);
        nir_foreach_block(block, func->impl) {
                nir_foreach_instr(instr, block)
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c 
b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 2c0c6c4dace..b4fd6a58b11 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1891,7 +1891,7 @@ static inline void si_shader_selector_key(struct 
pipe_context *ctx,
                key->part.tcs.epilog.prim_mode =
                        
sctx->tes_shader.cso->info.properties[TGSI_PROPERTY_TES_PRIM_MODE];
                key->part.tcs.epilog.invoc0_tess_factors_are_def =
-                       sel->tcs_info.tessfactors_are_def_in_all_invocs;
+                       sel->info.tessfactors_are_def_in_all_invocs;
                key->part.tcs.epilog.tes_reads_tess_factors =
                        sctx->tes_shader.cso->info.reads_tess_factors;
 
@@ -2714,7 +2714,6 @@ static void *si_create_shader_selector(struct 
pipe_context *ctx,
        }
 
        si_nir_scan_shader(sel->nir, &sel->info);
-       si_nir_scan_tess_ctrl(sel->nir, &sel->tcs_info);
        si_nir_adjust_driver_locations(sel->nir);
 
        sel->type = sel->info.processor;

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

Reply via email to