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

Author: Timothy Arceri <[email protected]>
Date:   Mon Dec 11 12:35:06 2023 +1100

glsl/st: move remaining glsl ir lowering to linker

This is a tidy up but also allows us to drop an additional
validate_ir_tree() call.

Reviewed-by: Marek Olšák <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26628>

---

 src/compiler/glsl/linker.cpp                      | 14 +++++++++++++-
 src/compiler/glsl/standalone_scaffolding.cpp      |  1 -
 src/compiler/glsl/tests/test_gl_lower_mediump.cpp |  8 --------
 src/mesa/state_tracker/st_glsl_to_nir.cpp         | 22 ----------------------
 4 files changed, 13 insertions(+), 32 deletions(-)

diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 7f218e72139..6d97256705d 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -3116,7 +3116,19 @@ link_shaders(struct gl_context *ctx, struct 
gl_shader_program *prog)
       if (prog->_LinkedShaders[i] == NULL)
          continue;
 
-      lower_vector_derefs(prog->_LinkedShaders[i]);
+      struct gl_linked_shader *shader = prog->_LinkedShaders[i];
+      exec_list *ir = shader->ir;
+
+      lower_vector_derefs(shader);
+
+      lower_packing_builtins(ir, ctx->Extensions.ARB_shading_language_packing,
+                             ctx->Extensions.ARB_gpu_shader5,
+                             ctx->Const.GLSLHasHalfFloatPacking);
+      do_mat_op_to_vec(ir);
+
+      lower_instructions(ir, ctx->Extensions.ARB_gpu_shader5);
+
+      do_vec_index_to_cond_assign(ir);
    }
 
 done:
diff --git a/src/compiler/glsl/standalone_scaffolding.cpp 
b/src/compiler/glsl/standalone_scaffolding.cpp
index aa028802a29..d9ec60ad21f 100644
--- a/src/compiler/glsl/standalone_scaffolding.cpp
+++ b/src/compiler/glsl/standalone_scaffolding.cpp
@@ -222,7 +222,6 @@ void initialize_context_to_defaults(struct gl_context *ctx, 
gl_api api)
    ctx->Extensions.ARB_shader_stencil_export = true;
    ctx->Extensions.ARB_shader_texture_lod = true;
    ctx->Extensions.ARB_shading_language_420pack = true;
-   ctx->Extensions.ARB_shading_language_packing = true;
    ctx->Extensions.ARB_tessellation_shader = true;
    ctx->Extensions.ARB_texture_cube_map_array = true;
    ctx->Extensions.ARB_texture_gather = true;
diff --git a/src/compiler/glsl/tests/test_gl_lower_mediump.cpp 
b/src/compiler/glsl/tests/test_gl_lower_mediump.cpp
index 352b3f43209..0dd0ecf9dcf 100644
--- a/src/compiler/glsl/tests/test_gl_lower_mediump.cpp
+++ b/src/compiler/glsl/tests/test_gl_lower_mediump.cpp
@@ -192,14 +192,6 @@ namespace
          fprintf(stderr, "Linker error: %s", whole_program->data->InfoLog);
       EXPECT_EQ(whole_program->data->LinkStatus, LINKING_SUCCESS);
 
-      for (unsigned i = 0; i < ARRAY_SIZE(whole_program->_LinkedShaders); i++) 
{
-         struct gl_linked_shader *sh = whole_program->_LinkedShaders[i];
-         if (!sh)
-            continue;
-
-         do_mat_op_to_vec(sh->ir);
-      }
-
       /* Save off the GLSL IR now, since glsl_to_nir() frees it. */
       fs_ir = get_fs_ir();
 
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 82502a13a25..d691ac96253 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -500,28 +500,6 @@ st_link_glsl_to_nir(struct gl_context *ctx,
 
    assert(shader_program->data->LinkStatus);
 
-   /* Skip the GLSL steps when using SPIR-V. */
-   if (!shader_program->data->spirv) {
-      for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
-         if (shader_program->_LinkedShaders[i] == NULL)
-            continue;
-
-         struct gl_linked_shader *shader = shader_program->_LinkedShaders[i];
-         exec_list *ir = shader->ir;
-
-         lower_packing_builtins(ir, 
ctx->Extensions.ARB_shading_language_packing,
-                                ctx->Extensions.ARB_gpu_shader5,
-                                ctx->Const.GLSLHasHalfFloatPacking);
-         do_mat_op_to_vec(ir);
-
-         lower_instructions(ir, ctx->Extensions.ARB_gpu_shader5);
-
-         do_vec_index_to_cond_assign(ir);
-
-         validate_ir_tree(ir);
-      }
-   }
-
    for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
       if (shader_program->_LinkedShaders[i])
          linked_shader[num_shaders++] = shader_program->_LinkedShaders[i];

Reply via email to