diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2016-10-25 03:46:51 -0700 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2016-10-27 11:31:59 +0100 |
commit | 649a47a8343fbc35e17f17fac6e010a106e34b64 (patch) | |
tree | fd2a1516d2d1b94a8c8383a171368b1831a571e3 /src/compiler | |
parent | d640b0d71b6910e0c8d0bdb7299fe1cb24b0890b (diff) | |
download | external_mesa3d-649a47a8343fbc35e17f17fac6e010a106e34b64.tar.gz external_mesa3d-649a47a8343fbc35e17f17fac6e010a106e34b64.tar.bz2 external_mesa3d-649a47a8343fbc35e17f17fac6e010a106e34b64.zip |
glsl: Pass ctx to program interface query helper functions.
The next commit will use this in add_shader_variable - this just
separates out some of the mechanical changes for easier review.
Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
(cherry picked from commit 34fd2ffed8c7acfe1b19247eb3b98c3e754680b2)
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl/linker.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 85995905bb..d2a72e809f 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -3644,7 +3644,9 @@ create_shader_variable(struct gl_shader_program *shProg, } static bool -add_shader_variable(struct gl_shader_program *shProg, struct set *resource_set, +add_shader_variable(const struct gl_context *ctx, + struct gl_shader_program *shProg, + struct set *resource_set, unsigned stage_mask, GLenum programInterface, ir_variable *var, const char *name, const glsl_type *type, @@ -3673,7 +3675,7 @@ add_shader_variable(struct gl_shader_program *shProg, struct set *resource_set, for (unsigned i = 0; i < type->length; i++) { const struct glsl_struct_field *field = &type->fields.structure[i]; char *field_name = ralloc_asprintf(shProg, "%s.%s", name, field->name); - if (!add_shader_variable(shProg, resource_set, + if (!add_shader_variable(ctx, shProg, resource_set, stage_mask, programInterface, var, field_name, field->type, use_implicit_location, field_location, @@ -3723,7 +3725,8 @@ add_shader_variable(struct gl_shader_program *shProg, struct set *resource_set, } static bool -add_interface_variables(struct gl_shader_program *shProg, +add_interface_variables(const struct gl_context *ctx, + struct gl_shader_program *shProg, struct set *resource_set, unsigned stage, GLenum programInterface) { @@ -3774,7 +3777,7 @@ add_interface_variables(struct gl_shader_program *shProg, (stage == MESA_SHADER_VERTEX && var->data.mode == ir_var_shader_in) || (stage == MESA_SHADER_FRAGMENT && var->data.mode == ir_var_shader_out); - if (!add_shader_variable(shProg, resource_set, + if (!add_shader_variable(ctx, shProg, resource_set, 1 << stage, programInterface, var, var->name, var->type, vs_input_or_fs_output, var->data.location - loc_bias)) @@ -3784,7 +3787,9 @@ add_interface_variables(struct gl_shader_program *shProg, } static bool -add_packed_varyings(struct gl_shader_program *shProg, struct set *resource_set, +add_packed_varyings(const struct gl_context *ctx, + struct gl_shader_program *shProg, + struct set *resource_set, int stage, GLenum type) { struct gl_linked_shader *sh = shProg->_LinkedShaders[stage]; @@ -3810,7 +3815,7 @@ add_packed_varyings(struct gl_shader_program *shProg, struct set *resource_set, if (type == iface) { const int stage_mask = build_stageref(shProg, var->name, var->data.mode); - if (!add_shader_variable(shProg, resource_set, + if (!add_shader_variable(ctx, shProg, resource_set, stage_mask, iface, var, var->name, var->type, false, var->data.location - VARYING_SLOT_VAR0)) @@ -3822,7 +3827,9 @@ add_packed_varyings(struct gl_shader_program *shProg, struct set *resource_set, } static bool -add_fragdata_arrays(struct gl_shader_program *shProg, struct set *resource_set) +add_fragdata_arrays(const struct gl_context *ctx, + struct gl_shader_program *shProg, + struct set *resource_set) { struct gl_linked_shader *sh = shProg->_LinkedShaders[MESA_SHADER_FRAGMENT]; @@ -3834,7 +3841,7 @@ add_fragdata_arrays(struct gl_shader_program *shProg, struct set *resource_set) if (var) { assert(var->data.mode == ir_var_shader_out); - if (!add_shader_variable(shProg, resource_set, + if (!add_shader_variable(ctx, shProg, resource_set, 1 << MESA_SHADER_FRAGMENT, GL_PROGRAM_OUTPUT, var, var->name, var->type, true, var->data.location - FRAG_RESULT_DATA0)) @@ -4093,24 +4100,24 @@ build_program_resource_list(struct gl_context *ctx, /* Program interface needs to expose varyings in case of SSO. */ if (shProg->SeparateShader) { - if (!add_packed_varyings(shProg, resource_set, + if (!add_packed_varyings(ctx, shProg, resource_set, input_stage, GL_PROGRAM_INPUT)) return; - if (!add_packed_varyings(shProg, resource_set, + if (!add_packed_varyings(ctx, shProg, resource_set, output_stage, GL_PROGRAM_OUTPUT)) return; } - if (!add_fragdata_arrays(shProg, resource_set)) + if (!add_fragdata_arrays(ctx, shProg, resource_set)) return; /* Add inputs and outputs to the resource list. */ - if (!add_interface_variables(shProg, resource_set, + if (!add_interface_variables(ctx, shProg, resource_set, input_stage, GL_PROGRAM_INPUT)) return; - if (!add_interface_variables(shProg, resource_set, + if (!add_interface_variables(ctx, shProg, resource_set, output_stage, GL_PROGRAM_OUTPUT)) return; |