summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2016-10-25 03:46:51 -0700
committerEmil Velikov <emil.l.velikov@gmail.com>2016-10-27 11:31:59 +0100
commit649a47a8343fbc35e17f17fac6e010a106e34b64 (patch)
treefd2a1516d2d1b94a8c8383a171368b1831a571e3
parentd640b0d71b6910e0c8d0bdb7299fe1cb24b0890b (diff)
downloadexternal_mesa3d-649a47a8343fbc35e17f17fac6e010a106e34b64.zip
external_mesa3d-649a47a8343fbc35e17f17fac6e010a106e34b64.tar.gz
external_mesa3d-649a47a8343fbc35e17f17fac6e010a106e34b64.tar.bz2
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)
-rw-r--r--src/compiler/glsl/linker.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp
index 8599590..d2a72e8 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;