Mesa (main): glsl/linker: get rid of gl_context from uniform assign paths

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jan 7 06:54:16 UTC 2022


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Jan  7 11:00:21 2022 +1000

glsl/linker: get rid of gl_context from uniform assign paths

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14433>

---

 src/compiler/glsl/gl_nir_linker.c   |  2 +-
 src/compiler/glsl/link_uniforms.cpp | 26 +++++++++++++-------------
 src/compiler/glsl/linker.cpp        |  4 ++--
 src/compiler/glsl/linker.h          |  2 +-
 src/compiler/glsl/linker_util.cpp   | 26 +++++++++++++-------------
 src/compiler/glsl/linker_util.h     |  4 ++--
 6 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/src/compiler/glsl/gl_nir_linker.c b/src/compiler/glsl/gl_nir_linker.c
index 17165ef3651..78f7007cc23 100644
--- a/src/compiler/glsl/gl_nir_linker.c
+++ b/src/compiler/glsl/gl_nir_linker.c
@@ -684,7 +684,7 @@ gl_nir_link_glsl(struct gl_context *ctx, struct gl_shader_program *prog)
       return false;
 
    link_util_calculate_subroutine_compat(prog);
-   link_util_check_uniform_resources(ctx, prog);
+   link_util_check_uniform_resources(&ctx->Const, prog);
    link_util_check_subroutine_resources(prog);
    check_image_resources(ctx, prog);
    gl_nir_link_assign_atomic_counter_resources(ctx, prog);
diff --git a/src/compiler/glsl/link_uniforms.cpp b/src/compiler/glsl/link_uniforms.cpp
index 5432f605bf2..13c771956fe 100644
--- a/src/compiler/glsl/link_uniforms.cpp
+++ b/src/compiler/glsl/link_uniforms.cpp
@@ -1423,7 +1423,7 @@ assign_hidden_uniform_slot_id(const char *name, unsigned hidden_id,
 }
 
 static void
-link_setup_uniform_remap_tables(struct gl_context *ctx,
+link_setup_uniform_remap_tables(const struct gl_constants *consts,
                                 struct gl_shader_program *prog)
 {
    unsigned total_entries = prog->NumExplicitUniformLocations;
@@ -1512,10 +1512,10 @@ link_setup_uniform_remap_tables(struct gl_context *ctx,
     * is less than MAX_UNIFORM_LOCATIONS.
     */
 
-   if (total_entries > ctx->Const.MaxUserAssignableUniformLocations) {
+   if (total_entries > consts->MaxUserAssignableUniformLocations) {
       linker_error(prog, "count of uniform locations > MAX_UNIFORM_LOCATIONS"
                    "(%u > %u)", total_entries,
-                   ctx->Const.MaxUserAssignableUniformLocations);
+                   consts->MaxUserAssignableUniformLocations);
    }
 
    /* Reserve all the explicit locations of the active subroutine uniforms. */
@@ -1588,7 +1588,7 @@ link_setup_uniform_remap_tables(struct gl_context *ctx,
 }
 
 static void
-link_assign_uniform_storage(struct gl_context *ctx,
+link_assign_uniform_storage(const struct gl_constants *consts,
                             struct gl_shader_program *prog,
                             const unsigned num_data_slots)
 {
@@ -1597,7 +1597,7 @@ link_assign_uniform_storage(struct gl_context *ctx,
    if (prog->data->NumUniformStorage == 0)
       return;
 
-   unsigned int boolean_true = ctx->Const.UniformBooleanTrue;
+   unsigned int boolean_true = consts->UniformBooleanTrue;
 
    union gl_constant_value *data;
    if (prog->data->UniformStorage == NULL) {
@@ -1619,7 +1619,7 @@ link_assign_uniform_storage(struct gl_context *ctx,
 
    parcel_out_uniform_storage parcel(prog, prog->UniformHash,
                                      prog->data->UniformStorage, data,
-                                     ctx->Const.UseSTD430AsDefaultPacking);
+                                     consts->UseSTD430AsDefaultPacking);
 
    for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
       struct gl_linked_shader *shader = prog->_LinkedShaders[i];
@@ -1683,7 +1683,7 @@ link_assign_uniform_storage(struct gl_context *ctx,
    assert(parcel.values == data_end);
 #endif
 
-   link_setup_uniform_remap_tables(ctx, prog);
+   link_setup_uniform_remap_tables(consts, prog);
 
    /* Set shader cache fields */
    prog->data->NumUniformDataSlots = num_data_slots;
@@ -1694,7 +1694,7 @@ link_assign_uniform_storage(struct gl_context *ctx,
 
 void
 link_assign_uniform_locations(struct gl_shader_program *prog,
-                              struct gl_context *ctx)
+                              const struct gl_constants *consts)
 {
    ralloc_free(prog->data->UniformStorage);
    prog->data->UniformStorage = NULL;
@@ -1715,7 +1715,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog,
     */
    struct string_to_uint_map *hiddenUniforms = new string_to_uint_map;
    count_uniform_size uniform_size(prog->UniformHash, hiddenUniforms,
-                                   ctx->Const.UseSTD430AsDefaultPacking);
+                                   consts->UseSTD430AsDefaultPacking);
    for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
       struct gl_linked_shader *sh = prog->_LinkedShaders[i];
 
@@ -1739,18 +1739,18 @@ link_assign_uniform_locations(struct gl_shader_program *prog,
       }
 
       if (uniform_size.num_shader_samplers >
-          ctx->Const.Program[i].MaxTextureImageUnits) {
+          consts->Program[i].MaxTextureImageUnits) {
          linker_error(prog, "Too many %s shader texture samplers\n",
                       _mesa_shader_stage_to_string(i));
          continue;
       }
 
       if (uniform_size.num_shader_images >
-          ctx->Const.Program[i].MaxImageUniforms) {
+          consts->Program[i].MaxImageUniforms) {
          linker_error(prog, "Too many %s shader image uniforms (%u > %u)\n",
                       _mesa_shader_stage_to_string(i),
                       sh->Program->info.num_images,
-                      ctx->Const.Program[i].MaxImageUniforms);
+                      consts->Program[i].MaxImageUniforms);
          continue;
       }
 
@@ -1777,5 +1777,5 @@ link_assign_uniform_locations(struct gl_shader_program *prog,
    hiddenUniforms->iterate(assign_hidden_uniform_slot_id, &uniform_size);
    delete hiddenUniforms;
 
-   link_assign_uniform_storage(ctx, prog, uniform_size.num_values);
+   link_assign_uniform_storage(consts, prog, uniform_size.num_values);
 }
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index d40645029d7..f2668f5849a 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -4505,13 +4505,13 @@ link_and_validate_uniforms(struct gl_context *ctx,
    assert(!ctx->Const.UseNIRGLSLLinker);
 
    update_array_sizes(prog);
-   link_assign_uniform_locations(prog, ctx);
+   link_assign_uniform_locations(prog, &ctx->Const);
 
    if (prog->data->LinkStatus == LINKING_FAILURE)
       return;
 
    link_util_calculate_subroutine_compat(prog);
-   link_util_check_uniform_resources(ctx, prog);
+   link_util_check_uniform_resources(&ctx->Const, prog);
    link_util_check_subroutine_resources(prog);
    check_image_resources(ctx, prog);
    link_assign_atomic_counter_resources(ctx, prog);
diff --git a/src/compiler/glsl/linker.h b/src/compiler/glsl/linker.h
index 037b0ef4725..98c82634db1 100644
--- a/src/compiler/glsl/linker.h
+++ b/src/compiler/glsl/linker.h
@@ -40,7 +40,7 @@ link_invalidate_variable_locations(exec_list *ir);
 
 extern void
 link_assign_uniform_locations(struct gl_shader_program *prog,
-                              struct gl_context *ctx);
+                              const struct gl_constants *consts);
 
 extern void
 link_set_uniform_initializers(struct gl_shader_program *prog,
diff --git a/src/compiler/glsl/linker_util.cpp b/src/compiler/glsl/linker_util.cpp
index 9b0cdef4032..90c7a202c3f 100644
--- a/src/compiler/glsl/linker_util.cpp
+++ b/src/compiler/glsl/linker_util.cpp
@@ -176,7 +176,7 @@ link_util_check_subroutine_resources(struct gl_shader_program *prog)
  * Validate uniform resources used by a program versus the implementation limits
  */
 void
-link_util_check_uniform_resources(struct gl_context *ctx,
+link_util_check_uniform_resources(const struct gl_constants *consts,
                                   struct gl_shader_program *prog)
 {
    unsigned total_uniform_blocks = 0;
@@ -189,8 +189,8 @@ link_util_check_uniform_resources(struct gl_context *ctx,
          continue;
 
       if (sh->num_uniform_components >
-          ctx->Const.Program[i].MaxUniformComponents) {
-         if (ctx->Const.GLSLSkipStrictMaxUniformLimitCheck) {
+          consts->Program[i].MaxUniformComponents) {
+         if (consts->GLSLSkipStrictMaxUniformLimitCheck) {
             linker_warning(prog, "Too many %s shader default uniform block "
                            "components, but the driver will try to optimize "
                            "them out; this is non-portable out-of-spec "
@@ -204,8 +204,8 @@ link_util_check_uniform_resources(struct gl_context *ctx,
       }
 
       if (sh->num_combined_uniform_components >
-          ctx->Const.Program[i].MaxCombinedUniformComponents) {
-         if (ctx->Const.GLSLSkipStrictMaxUniformLimitCheck) {
+          consts->Program[i].MaxCombinedUniformComponents) {
+         if (consts->GLSLSkipStrictMaxUniformLimitCheck) {
             linker_warning(prog, "Too many %s shader uniform components, "
                            "but the driver will try to optimize them out; "
                            "this is non-portable out-of-spec behavior\n",
@@ -220,34 +220,34 @@ link_util_check_uniform_resources(struct gl_context *ctx,
       total_uniform_blocks += sh->Program->info.num_ubos;
    }
 
-   if (total_uniform_blocks > ctx->Const.MaxCombinedUniformBlocks) {
+   if (total_uniform_blocks > consts->MaxCombinedUniformBlocks) {
       linker_error(prog, "Too many combined uniform blocks (%d/%d)\n",
-                   total_uniform_blocks, ctx->Const.MaxCombinedUniformBlocks);
+                   total_uniform_blocks, consts->MaxCombinedUniformBlocks);
    }
 
-   if (total_shader_storage_blocks > ctx->Const.MaxCombinedShaderStorageBlocks) {
+   if (total_shader_storage_blocks > consts->MaxCombinedShaderStorageBlocks) {
       linker_error(prog, "Too many combined shader storage blocks (%d/%d)\n",
                    total_shader_storage_blocks,
-                   ctx->Const.MaxCombinedShaderStorageBlocks);
+                   consts->MaxCombinedShaderStorageBlocks);
    }
 
    for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) {
       if (prog->data->UniformBlocks[i].UniformBufferSize >
-          ctx->Const.MaxUniformBlockSize) {
+          consts->MaxUniformBlockSize) {
          linker_error(prog, "Uniform block %s too big (%d/%d)\n",
                       prog->data->UniformBlocks[i].name.string,
                       prog->data->UniformBlocks[i].UniformBufferSize,
-                      ctx->Const.MaxUniformBlockSize);
+                      consts->MaxUniformBlockSize);
       }
    }
 
    for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) {
       if (prog->data->ShaderStorageBlocks[i].UniformBufferSize >
-          ctx->Const.MaxShaderStorageBlockSize) {
+          consts->MaxShaderStorageBlockSize) {
          linker_error(prog, "Shader storage block %s too big (%d/%d)\n",
                       prog->data->ShaderStorageBlocks[i].name.string,
                       prog->data->ShaderStorageBlocks[i].UniformBufferSize,
-                      ctx->Const.MaxShaderStorageBlockSize);
+                      consts->MaxShaderStorageBlockSize);
       }
    }
 }
diff --git a/src/compiler/glsl/linker_util.h b/src/compiler/glsl/linker_util.h
index 16f5ca9e401..09b9896e7fb 100644
--- a/src/compiler/glsl/linker_util.h
+++ b/src/compiler/glsl/linker_util.h
@@ -26,7 +26,7 @@
 
 #include "util/bitset.h"
 
-struct gl_context;
+struct gl_constants;
 struct gl_shader_program;
 struct gl_uniform_storage;
 
@@ -94,7 +94,7 @@ void
 link_util_check_subroutine_resources(struct gl_shader_program *prog);
 
 void
-link_util_check_uniform_resources(struct gl_context *ctx,
+link_util_check_uniform_resources(const struct gl_constants *consts,
                                   struct gl_shader_program *prog);
 
 void



More information about the mesa-commit mailing list