Mesa (main): glsl/linker/uniform_blocks: don't pass gl_context around.

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


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Jan  7 12:28:01 2022 +1000

glsl/linker/uniform_blocks: don't pass gl_context around.

just pass the constants

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

---

 src/compiler/glsl/link_uniform_blocks.cpp | 32 ++++++++++++++++---------------
 src/compiler/glsl/linker.cpp              |  2 +-
 src/compiler/glsl/linker.h                |  2 +-
 3 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/src/compiler/glsl/link_uniform_blocks.cpp b/src/compiler/glsl/link_uniform_blocks.cpp
index 9d2de454262..1d551f5d2bb 100644
--- a/src/compiler/glsl/link_uniform_blocks.cpp
+++ b/src/compiler/glsl/link_uniform_blocks.cpp
@@ -224,7 +224,7 @@ static void process_block_array_leaf(const char *name, gl_uniform_block *blocks,
                                      unsigned *block_index,
                                      unsigned binding_offset,
                                      unsigned linearized_index,
-                                     struct gl_context *ctx,
+                                     const struct gl_constants *consts,
                                      struct gl_shader_program *prog);
 
 /**
@@ -238,7 +238,8 @@ process_block_array(struct uniform_block_array_elements *ub_array, char **name,
                     ubo_visitor *parcel, gl_uniform_buffer_variable *variables,
                     const struct link_uniform_block_active *const b,
                     unsigned *block_index, unsigned binding_offset,
-                    struct gl_context *ctx, struct gl_shader_program *prog,
+                    const struct gl_constants *consts,
+                    struct gl_shader_program *prog,
                     unsigned first_index)
 {
    for (unsigned j = 0; j < ub_array->num_array_elements; j++) {
@@ -253,12 +254,12 @@ process_block_array(struct uniform_block_array_elements *ub_array, char **name,
                                    ub_array->array->aoa_size);
          process_block_array(ub_array->array, name, new_length, blocks,
                              parcel, variables, b, block_index,
-                             binding_stride, ctx, prog, first_index);
+                             binding_stride, consts, prog, first_index);
       } else {
          process_block_array_leaf(*name, blocks,
                                   parcel, variables, b, block_index,
                                   binding_offset + element_idx,
-                                  *block_index - first_index, ctx, prog);
+                                  *block_index - first_index, consts, prog);
       }
    }
 }
@@ -270,7 +271,8 @@ process_block_array_leaf(const char *name,
                          const struct link_uniform_block_active *const b,
                          unsigned *block_index, unsigned binding_offset,
                          unsigned linearized_index,
-                         struct gl_context *ctx, struct gl_shader_program *prog)
+                         const struct gl_constants *consts,
+                         struct gl_shader_program *prog)
 {
    unsigned i = *block_index;
    const glsl_type *type =  b->type->without_array();
@@ -299,12 +301,12 @@ process_block_array_leaf(const char *name,
 
    /* Check SSBO size is lower than maximum supported size for SSBO */
    if (b->is_shader_storage &&
-       parcel->buffer_size > ctx->Const.MaxShaderStorageBlockSize) {
+       parcel->buffer_size > consts->MaxShaderStorageBlockSize) {
       linker_error(prog, "shader storage block `%s' has size %d, "
                    "which is larger than the maximum allowed (%d)",
                    b->type->name,
                    parcel->buffer_size,
-                   ctx->Const.MaxShaderStorageBlockSize);
+                   consts->MaxShaderStorageBlockSize);
    }
    blocks[i].NumUniforms =
       (unsigned)(ptrdiff_t)(&variables[parcel->index] - blocks[i].Uniforms);
@@ -336,7 +338,7 @@ resize_block_array(const glsl_type *type,
 }
 
 static void
-create_buffer_blocks(void *mem_ctx, struct gl_context *ctx,
+create_buffer_blocks(void *mem_ctx, const struct gl_constants *consts,
                      struct gl_shader_program *prog,
                      struct gl_uniform_block **out_blks, unsigned num_blocks,
                      struct hash_table *block_hash, unsigned num_variables,
@@ -361,7 +363,7 @@ create_buffer_blocks(void *mem_ctx, struct gl_context *ctx,
     * structures.
     */
    ubo_visitor parcel(blocks, variables, num_variables, prog,
-                      ctx->Const.UseSTD430AsDefaultPacking);
+                      consts->UseSTD430AsDefaultPacking);
 
    unsigned i = 0;
    hash_table_foreach (block_hash, entry) {
@@ -379,13 +381,13 @@ create_buffer_blocks(void *mem_ctx, struct gl_context *ctx,
 
             assert(b->has_instance_name);
             process_block_array(b->array, &name, name_length, blocks, &parcel,
-                                variables, b, &i, 0, ctx, prog,
+                                variables, b, &i, 0, consts, prog,
                                 i);
             ralloc_free(name);
          } else {
             process_block_array_leaf(block_type->name, blocks, &parcel,
                                      variables, b, &i, 0,
-                                     0, ctx, prog);
+                                     0, consts, prog);
          }
       }
    }
@@ -397,7 +399,7 @@ create_buffer_blocks(void *mem_ctx, struct gl_context *ctx,
 
 void
 link_uniform_blocks(void *mem_ctx,
-                    struct gl_context *ctx,
+                    const struct gl_constants *consts,
                     struct gl_shader_program *prog,
                     struct gl_linked_shader *shader,
                     struct gl_uniform_block **ubo_blocks,
@@ -446,7 +448,7 @@ link_uniform_blocks(void *mem_ctx,
 
       block_size.num_active_uniforms = 0;
       block_size.process(b->type->without_array(), "",
-                         ctx->Const.UseSTD430AsDefaultPacking);
+                         consts->UseSTD430AsDefaultPacking);
 
       if (b->array != NULL) {
          unsigned aoa_size = b->type->arrays_of_arrays_size();
@@ -469,9 +471,9 @@ link_uniform_blocks(void *mem_ctx,
 
    }
 
-   create_buffer_blocks(mem_ctx, ctx, prog, ubo_blocks, *num_ubo_blocks,
+   create_buffer_blocks(mem_ctx, consts, prog, ubo_blocks, *num_ubo_blocks,
                         block_hash, num_ubo_variables, true);
-   create_buffer_blocks(mem_ctx, ctx, prog, ssbo_blocks, *num_ssbo_blocks,
+   create_buffer_blocks(mem_ctx, consts, prog, ssbo_blocks, *num_ssbo_blocks,
                         block_hash, num_ssbo_variables, false);
 
    _mesa_hash_table_destroy(block_hash, NULL);
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 03ccb712194..c42d871deeb 100644
--- a/src/compiler/glsl/linker.cpp
+++ b/src/compiler/glsl/linker.cpp
@@ -2589,7 +2589,7 @@ link_intrastage_shaders(void *mem_ctx,
    len_v.run(linked->ir);
 
    /* Link up uniform blocks defined within this stage. */
-   link_uniform_blocks(mem_ctx, ctx, prog, linked, &ubo_blocks,
+   link_uniform_blocks(mem_ctx, &ctx->Const, prog, linked, &ubo_blocks,
                        &num_ubo_blocks, &ssbo_blocks, &num_ssbo_blocks);
 
    const unsigned max_uniform_blocks =
diff --git a/src/compiler/glsl/linker.h b/src/compiler/glsl/linker.h
index fd7fb1b8f4c..9c4d1ffc8e7 100644
--- a/src/compiler/glsl/linker.h
+++ b/src/compiler/glsl/linker.h
@@ -54,7 +54,7 @@ link_cross_validate_uniform_block(void *mem_ctx,
 
 extern void
 link_uniform_blocks(void *mem_ctx,
-                    struct gl_context *ctx,
+                    const struct gl_constants *consts,
                     struct gl_shader_program *prog,
                     struct gl_linked_shader *shader,
                     struct gl_uniform_block **ubo_blocks,



More information about the mesa-commit mailing list