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];
