glsl: Modify interface to link_invalidate_variable_locations
This will make it easier to unit test this function in successive patches. Also, correct the prototype in linker.h. It was... wrong. v2: Split the interface change from adding the unit tests. Suggested by Paul. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
@@ -366,10 +366,10 @@ parse_program_resource_name(const GLchar *name,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
link_invalidate_variable_locations(gl_shader *sh, int input_base,
|
link_invalidate_variable_locations(exec_list *ir, int input_base,
|
||||||
int output_base)
|
int output_base)
|
||||||
{
|
{
|
||||||
foreach_list(node, sh->ir) {
|
foreach_list(node, ir) {
|
||||||
ir_variable *const var = ((ir_instruction *) node)->as_variable();
|
ir_variable *const var = ((ir_instruction *) node)->as_variable();
|
||||||
|
|
||||||
if (var == NULL)
|
if (var == NULL)
|
||||||
@@ -2217,17 +2217,17 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||||||
/* Mark all generic shader inputs and outputs as unpaired. */
|
/* Mark all generic shader inputs and outputs as unpaired. */
|
||||||
if (prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL) {
|
if (prog->_LinkedShaders[MESA_SHADER_VERTEX] != NULL) {
|
||||||
link_invalidate_variable_locations(
|
link_invalidate_variable_locations(
|
||||||
prog->_LinkedShaders[MESA_SHADER_VERTEX],
|
prog->_LinkedShaders[MESA_SHADER_VERTEX]->ir,
|
||||||
VERT_ATTRIB_GENERIC0, VARYING_SLOT_VAR0);
|
VERT_ATTRIB_GENERIC0, VARYING_SLOT_VAR0);
|
||||||
}
|
}
|
||||||
if (prog->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
|
if (prog->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
|
||||||
link_invalidate_variable_locations(
|
link_invalidate_variable_locations(
|
||||||
prog->_LinkedShaders[MESA_SHADER_GEOMETRY],
|
prog->_LinkedShaders[MESA_SHADER_GEOMETRY]->ir,
|
||||||
VARYING_SLOT_VAR0, VARYING_SLOT_VAR0);
|
VARYING_SLOT_VAR0, VARYING_SLOT_VAR0);
|
||||||
}
|
}
|
||||||
if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL) {
|
if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] != NULL) {
|
||||||
link_invalidate_variable_locations(
|
link_invalidate_variable_locations(
|
||||||
prog->_LinkedShaders[MESA_SHADER_FRAGMENT],
|
prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->ir,
|
||||||
VARYING_SLOT_VAR0, FRAG_RESULT_DATA0);
|
VARYING_SLOT_VAR0, FRAG_RESULT_DATA0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,8 +31,8 @@ link_function_calls(gl_shader_program *prog, gl_shader *main,
|
|||||||
gl_shader **shader_list, unsigned num_shaders);
|
gl_shader **shader_list, unsigned num_shaders);
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
link_invalidate_variable_locations(gl_shader *sh, enum ir_variable_mode mode,
|
link_invalidate_variable_locations(exec_list *ir, int input_base,
|
||||||
int generic_base);
|
int output_base);
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
link_assign_uniform_locations(struct gl_shader_program *prog);
|
link_assign_uniform_locations(struct gl_shader_program *prog);
|
||||||
|
Reference in New Issue
Block a user