This patch moves following bitfields in to the data structure: explicit_location, explicit_index, explicit_binding, has_initializer, is_unmatched_generic_inout, location_frac
Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> --- src/glsl/ast_to_hir.cpp | 12 ++--- src/glsl/builtin_variables.cpp | 6 +-- src/glsl/ir.cpp | 6 +-- src/glsl/ir.h | 80 ++++++++++++++-------------- src/glsl/ir_clone.cpp | 8 +-- src/glsl/ir_validate.cpp | 2 +- src/glsl/link_uniform_initializers.cpp | 2 +- src/glsl/link_varyings.cpp | 16 +++--- src/glsl/linker.cpp | 38 ++++++------- src/glsl/lower_named_interface_blocks.cpp | 2 +- src/glsl/lower_packed_varyings.cpp | 2 +- src/glsl/opt_dead_builtin_varyings.cpp | 4 +- src/glsl/tests/builtin_variable_test.cpp | 30 +++++------ src/glsl/tests/invalidate_locations_test.cpp | 60 ++++++++++----------- 14 files changed, 134 insertions(+), 134 deletions(-) diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index bff5a47..7847720 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -2112,7 +2112,7 @@ validate_explicit_location(const struct ast_type_qualifier *qual, mode_string(var), _mesa_glsl_shader_target_name(state->target)); } else { - var->explicit_location = true; + var->data.explicit_location = true; /* This bit of silliness is needed because invalid explicit locations * are supposed to be flagged during linking. Small negative values @@ -2143,7 +2143,7 @@ validate_explicit_location(const struct ast_type_qualifier *qual, _mesa_glsl_error(loc, state, "explicit index may only be 0 or 1"); } else { - var->explicit_index = true; + var->data.explicit_index = true; var->index = qual->index; } } @@ -2312,13 +2312,13 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, if (qual->flags.q.explicit_binding && validate_binding_qualifier(state, loc, var, qual)) { - var->explicit_binding = true; + var->data.explicit_binding = true; var->binding = qual->binding; } if (var->type->contains_atomic()) { if (var->data.mode == ir_var_uniform) { - if (var->explicit_binding) { + if (var->data.explicit_binding) { unsigned *offset = &state->atomic_counter_offsets[var->binding]; if (*offset % ATOMIC_COUNTER_SIZE) @@ -2664,7 +2664,7 @@ process_initializer(ir_variable *var, ast_declaration *decl, initializer_type = rhs->type; var->constant_initializer = rhs->constant_expression_value(); - var->has_initializer = true; + var->data.has_initializer = true; /* If the declared variable is an unsized array, it must inherrit * its full type from the initializer. A declaration such as @@ -5111,7 +5111,7 @@ ast_interface_block::hir(exec_list *instructions, * the UBO declaration itself doesn't get an ir_variable unless it * has an instance name. This is ugly. */ - var->explicit_binding = this->layout.flags.q.explicit_binding; + var->data.explicit_binding = this->layout.flags.q.explicit_binding; var->binding = this->layout.binding; state->symbols->add_variable(var); diff --git a/src/glsl/builtin_variables.cpp b/src/glsl/builtin_variables.cpp index b1ea128..e92728b 100644 --- a/src/glsl/builtin_variables.cpp +++ b/src/glsl/builtin_variables.cpp @@ -455,8 +455,8 @@ builtin_variable_generator::add_variable(const char *name, } var->location = slot; - var->explicit_location = (slot >= 0); - var->explicit_index = 0; + var->data.explicit_location = (slot >= 0); + var->data.explicit_index = 0; /* Once the variable is created an initialized, add it to the symbol table * and add the declaration to the IR stream. @@ -523,7 +523,7 @@ builtin_variable_generator::add_const(const char *name, int value) ir_var_auto, -1); var->constant_value = new(var) ir_constant(value); var->constant_initializer = new(var) ir_constant(value); - var->has_initializer = true; + var->data.has_initializer = true; return var; } diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp index 4f9b88a..c6ba7c9 100644 --- a/src/glsl/ir.cpp +++ b/src/glsl/ir.cpp @@ -1589,10 +1589,10 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name, this->ir_type = ir_type_variable; this->type = type; this->name = ralloc_strdup(this, name); - this->explicit_location = false; - this->has_initializer = false; + this->data.explicit_location = false; + this->data.has_initializer = false; this->location = -1; - this->location_frac = 0; + this->data.location_frac = 0; this->warn_extension = NULL; this->constant_value = NULL; this->constant_initializer = NULL; diff --git a/src/glsl/ir.h b/src/glsl/ir.h index 0b8cff7..610c459 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -585,51 +585,51 @@ public: unsigned pixel_center_integer:1; /*@}*/ - } data; + /** + * Was the location explicitly set in the shader? + * + * If the location is explicitly set in the shader, it \b cannot be changed + * by the linker or by the API (e.g., calls to \c glBindAttribLocation have + * no effect). + */ + unsigned explicit_location:1; + unsigned explicit_index:1; - /** - * Was the location explicitly set in the shader? - * - * If the location is explicitly set in the shader, it \b cannot be changed - * by the linker or by the API (e.g., calls to \c glBindAttribLocation have - * no effect). - */ - unsigned explicit_location:1; - unsigned explicit_index:1; + /** + * Was an initial binding explicitly set in the shader? + * + * If so, constant_value contains an integer ir_constant representing the + * initial binding point. + */ + unsigned explicit_binding:1; - /** - * Was an initial binding explicitly set in the shader? - * - * If so, constant_value contains an integer ir_constant representing the - * initial binding point. - */ - unsigned explicit_binding:1; + /** + * Does this variable have an initializer? + * + * This is used by the linker to cross-validiate initializers of global + * variables. + */ + unsigned has_initializer:1; - /** - * Does this variable have an initializer? - * - * This is used by the linker to cross-validiate initializers of global - * variables. - */ - unsigned has_initializer:1; + /** + * Is this variable a generic output or input that has not yet been matched + * up to a variable in another stage of the pipeline? + * + * This is used by the linker as scratch storage while assigning locations + * to generic inputs and outputs. + */ + unsigned is_unmatched_generic_inout:1; - /** - * Is this variable a generic output or input that has not yet been matched - * up to a variable in another stage of the pipeline? - * - * This is used by the linker as scratch storage while assigning locations - * to generic inputs and outputs. - */ - unsigned is_unmatched_generic_inout:1; + /** + * If non-zero, then this variable may be packed along with other variables + * into a single varying slot, so this offset should be applied when + * accessing components. For example, an offset of 1 means that the x + * component of this variable is actually stored in component y of the + * location specified by \c location. + */ + unsigned location_frac:2; - /** - * If non-zero, then this variable may be packed along with other variables - * into a single varying slot, so this offset should be applied when - * accessing components. For example, an offset of 1 means that the x - * component of this variable is actually stored in component y of the - * location specified by \c location. - */ - unsigned location_frac:2; + } data; /** * Non-zero if this variable was created by lowering a named interface diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp index 4d5eea6..8a0664e 100644 --- a/src/glsl/ir_clone.cpp +++ b/src/glsl/ir_clone.cpp @@ -62,10 +62,10 @@ ir_variable::clone(void *mem_ctx, struct hash_table *ht) const var->warn_extension = this->warn_extension; var->data.origin_upper_left = this->data.origin_upper_left; var->data.pixel_center_integer = this->data.pixel_center_integer; - var->explicit_location = this->explicit_location; - var->explicit_index = this->explicit_index; - var->explicit_binding = this->explicit_binding; - var->has_initializer = this->has_initializer; + var->data.explicit_location = this->data.explicit_location; + var->data.explicit_index = this->data.explicit_index; + var->data.explicit_binding = this->data.explicit_binding; + var->data.has_initializer = this->data.has_initializer; var->depth_layout = this->depth_layout; var->data.assigned = this->data.assigned; var->data.how_declared = this->data.how_declared; diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp index 86bb6ee..c279208 100644 --- a/src/glsl/ir_validate.cpp +++ b/src/glsl/ir_validate.cpp @@ -720,7 +720,7 @@ ir_validate::visit(ir_variable *ir) } } - if (ir->constant_initializer != NULL && !ir->has_initializer) { + if (ir->constant_initializer != NULL && !ir->data.has_initializer) { printf("ir_variable didn't have an initializer, but has a constant " "initializer value.\n"); ir->print(); diff --git a/src/glsl/link_uniform_initializers.cpp b/src/glsl/link_uniform_initializers.cpp index ef74607..d59b7f3 100644 --- a/src/glsl/link_uniform_initializers.cpp +++ b/src/glsl/link_uniform_initializers.cpp @@ -230,7 +230,7 @@ link_set_uniform_initializers(struct gl_shader_program *prog) if (!mem_ctx) mem_ctx = ralloc_context(NULL); - if (var->explicit_binding) { + if (var->data.explicit_binding) { linker::set_uniform_binding(mem_ctx, prog, var->name, var->type, var->binding); } else if (var->constant_value) { diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp index c791fce..7f136ac 100644 --- a/src/glsl/link_varyings.cpp +++ b/src/glsl/link_varyings.cpp @@ -318,7 +318,7 @@ tfeedback_decl::assign_location(struct gl_context *ctx, unsigned fine_location = this->matched_candidate->toplevel_var->location * 4 - + this->matched_candidate->toplevel_var->location_frac + + this->matched_candidate->toplevel_var->data.location_frac + this->matched_candidate->offset; if (this->matched_candidate->type->is_array()) { @@ -734,7 +734,7 @@ varying_matches::~varying_matches() void varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var) { - if (!producer_var->is_unmatched_generic_inout) { + if (!producer_var->data.is_unmatched_generic_inout) { /* Either a location already exists for this variable (since it is part * of fixed functionality), or it has already been recorded as part of a * previous match. @@ -784,9 +784,9 @@ varying_matches::record(ir_variable *producer_var, ir_variable *consumer_var) this->matches[this->num_matches].producer_var = producer_var; this->matches[this->num_matches].consumer_var = consumer_var; this->num_matches++; - producer_var->is_unmatched_generic_inout = 0; + producer_var->data.is_unmatched_generic_inout = 0; if (consumer_var) - consumer_var->is_unmatched_generic_inout = 0; + consumer_var->data.is_unmatched_generic_inout = 0; } @@ -839,11 +839,11 @@ varying_matches::store_locations(unsigned producer_base, unsigned offset = generic_location % 4; producer_var->location = producer_base + slot; - producer_var->location_frac = offset; + producer_var->data.location_frac = offset; if (consumer_var) { assert(consumer_var->location == -1); consumer_var->location = consumer_base + slot; - consumer_var->location_frac = offset; + consumer_var->data.location_frac = offset; } } } @@ -1143,7 +1143,7 @@ assign_varying_locations(struct gl_context *ctx, return false; } - if (matched_candidate->toplevel_var->is_unmatched_generic_inout) + if (matched_candidate->toplevel_var->data.is_unmatched_generic_inout) matches.record(matched_candidate->toplevel_var, NULL); } @@ -1186,7 +1186,7 @@ assign_varying_locations(struct gl_context *ctx, ir_variable *const var = ((ir_instruction *) node)->as_variable(); if (var && var->data.mode == ir_var_shader_in && - var->is_unmatched_generic_inout) { + var->data.is_unmatched_generic_inout) { if (prog->Version <= 120) { /* On page 25 (page 31 of the PDF) of the GLSL 1.20 spec: * diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index d19f07e..77dc03f 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -379,9 +379,9 @@ link_invalidate_variable_locations(exec_list *ir) * shader inputs (via layout(location=...)), and generic fragment shader * outputs (also via layout(location=...)). */ - if (!var->explicit_location) { + if (!var->data.explicit_location) { var->location = -1; - var->location_frac = 0; + var->data.location_frac = 0; } /* ir_variable::is_unmatched_generic_inout is used by the linker while @@ -396,10 +396,10 @@ link_invalidate_variable_locations(exec_list *ir) * GL_ARB_separate_shader_objects is supported. When that extension is * implemented, this function will need some modifications. */ - if (!var->explicit_location) { - var->is_unmatched_generic_inout = 1; + if (!var->data.explicit_location) { + var->data.is_unmatched_generic_inout = 1; } else { - var->is_unmatched_generic_inout = 0; + var->data.is_unmatched_generic_inout = 0; } } } @@ -619,8 +619,8 @@ cross_validate_globals(struct gl_shader_program *prog, } } - if (var->explicit_location) { - if (existing->explicit_location + if (var->data.explicit_location) { + if (existing->data.explicit_location && (var->location != existing->location)) { linker_error(prog, "explicit locations for %s " "`%s' have differing values\n", @@ -629,7 +629,7 @@ cross_validate_globals(struct gl_shader_program *prog, } existing->location = var->location; - existing->explicit_location = true; + existing->data.explicit_location = true; } /* From the GLSL 4.20 specification: @@ -638,8 +638,8 @@ cross_validate_globals(struct gl_shader_program *prog, * opaque-uniform name. However, it is not an error to specify a * binding on some but not all declarations for the same name" */ - if (var->explicit_binding) { - if (existing->explicit_binding && + if (var->data.explicit_binding) { + if (existing->data.explicit_binding && var->binding != existing->binding) { linker_error(prog, "explicit bindings for %s " "`%s' have differing values\n", @@ -648,7 +648,7 @@ cross_validate_globals(struct gl_shader_program *prog, } existing->binding = var->binding; - existing->explicit_binding = true; + existing->data.explicit_binding = true; } if (var->type->contains_atomic() && @@ -734,8 +734,8 @@ cross_validate_globals(struct gl_shader_program *prog, } } - if (var->has_initializer) { - if (existing->has_initializer + if (var->data.has_initializer) { + if (existing->data.has_initializer && (var->constant_initializer == NULL || existing->constant_initializer == NULL)) { linker_error(prog, @@ -750,7 +750,7 @@ cross_validate_globals(struct gl_shader_program *prog, * otherwise) will propagate the existence to the variable * stored in the symbol table. */ - existing->has_initializer = true; + existing->data.has_initializer = true; } if (existing->data.invariant != var->data.invariant) { @@ -1657,7 +1657,7 @@ assign_attribute_or_color_locations(gl_shader_program *prog, if ((var == NULL) || (var->data.mode != (unsigned) direction)) continue; - if (var->explicit_location) { + if (var->data.explicit_location) { if ((var->location >= (int)(max_index + generic_base)) || (var->location < 0)) { linker_error(prog, @@ -1673,7 +1673,7 @@ assign_attribute_or_color_locations(gl_shader_program *prog, if (prog->AttributeBindings->get(binding, var->name)) { assert(binding >= VERT_ATTRIB_GENERIC0); var->location = binding; - var->is_unmatched_generic_inout = 0; + var->data.is_unmatched_generic_inout = 0; } } else if (target_index == MESA_SHADER_FRAGMENT) { unsigned binding; @@ -1682,7 +1682,7 @@ assign_attribute_or_color_locations(gl_shader_program *prog, if (prog->FragDataBindings->get(binding, var->name)) { assert(binding >= FRAG_RESULT_DATA0); var->location = binding; - var->is_unmatched_generic_inout = 0; + var->data.is_unmatched_generic_inout = 0; if (prog->FragDataIndexBindings->get(index, var->name)) { var->index = index; @@ -1798,7 +1798,7 @@ assign_attribute_or_color_locations(gl_shader_program *prog, } to_assign[i].var->location = generic_base + location; - to_assign[i].var->is_unmatched_generic_inout = 0; + to_assign[i].var->data.is_unmatched_generic_inout = 0; used_locations |= (use_mask << location); } @@ -1822,7 +1822,7 @@ demote_shader_inputs_and_outputs(gl_shader *sh, enum ir_variable_mode mode) * its value is used by other shader stages. This will cause the variable * to have a location assigned. */ - if (var->is_unmatched_generic_inout) { + if (var->data.is_unmatched_generic_inout) { var->data.mode = ir_var_auto; } } diff --git a/src/glsl/lower_named_interface_blocks.cpp b/src/glsl/lower_named_interface_blocks.cpp index 1e60c3a..10b2025 100644 --- a/src/glsl/lower_named_interface_blocks.cpp +++ b/src/glsl/lower_named_interface_blocks.cpp @@ -153,7 +153,7 @@ flatten_named_interface_blocks_declarations::run(exec_list *instructions) new_var->from_named_ifc_block_array = 1; } new_var->location = iface_t->fields.structure[i].location; - new_var->explicit_location = (new_var->location >= 0); + new_var->data.explicit_location = (new_var->location >= 0); new_var->data.interpolation = iface_t->fields.structure[i].interpolation; new_var->data.centroid = iface_t->fields.structure[i].centroid; diff --git a/src/glsl/lower_packed_varyings.cpp b/src/glsl/lower_packed_varyings.cpp index 7b5c6fc..6e87dd9 100644 --- a/src/glsl/lower_packed_varyings.cpp +++ b/src/glsl/lower_packed_varyings.cpp @@ -279,7 +279,7 @@ lower_packed_varyings_visitor::run(exec_list *instructions) = new(this->mem_ctx) ir_dereference_variable(var); /* Recursively pack or unpack it. */ - this->lower_rvalue(deref, var->location * 4 + var->location_frac, var, + this->lower_rvalue(deref, var->location * 4 + var->data.location_frac, var, var->name, this->gs_input_vertices != 0, 0); } } diff --git a/src/glsl/opt_dead_builtin_varyings.cpp b/src/glsl/opt_dead_builtin_varyings.cpp index 62b5f1e..9e6f11a 100644 --- a/src/glsl/opt_dead_builtin_varyings.cpp +++ b/src/glsl/opt_dead_builtin_varyings.cpp @@ -359,8 +359,8 @@ public: new(ctx) ir_variable(glsl_type::vec4_type, name, this->info->mode); new_var[i]->location = start_location + i; - new_var[i]->explicit_location = true; - new_var[i]->explicit_index = 0; + new_var[i]->data.explicit_location = true; + new_var[i]->data.explicit_index = 0; } ir->head->insert_before(new_var[i]); diff --git a/src/glsl/tests/builtin_variable_test.cpp b/src/glsl/tests/builtin_variable_test.cpp index 6164e10..a2008cb 100644 --- a/src/glsl/tests/builtin_variable_test.cpp +++ b/src/glsl/tests/builtin_variable_test.cpp @@ -113,7 +113,7 @@ common_builtin::uniforms_and_system_values_dont_have_explicit_location() if (var->data.mode != ir_var_uniform && var->data.mode != ir_var_system_value) continue; - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); } } @@ -127,7 +127,7 @@ common_builtin::constants_are_constant() if (var->data.mode != ir_var_auto) continue; - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); EXPECT_TRUE(var->data.read_only); } @@ -179,10 +179,10 @@ TEST_F(vertex_builtin, inputs_have_explicit_location) if (var->data.mode != ir_var_shader_in) continue; - EXPECT_TRUE(var->explicit_location); + EXPECT_TRUE(var->data.explicit_location); EXPECT_NE(-1, var->location); EXPECT_GT(VERT_ATTRIB_GENERIC0, var->location); - EXPECT_EQ(0u, var->location_frac); + EXPECT_EQ(0u, var->data.location_frac); } } @@ -194,10 +194,10 @@ TEST_F(vertex_builtin, outputs_have_explicit_location) if (var->data.mode != ir_var_shader_out) continue; - EXPECT_TRUE(var->explicit_location); + EXPECT_TRUE(var->data.explicit_location); EXPECT_NE(-1, var->location); EXPECT_GT(VARYING_SLOT_VAR0, var->location); - EXPECT_EQ(0u, var->location_frac); + EXPECT_EQ(0u, var->data.location_frac); /* Several varyings only exist in the fragment shader. Be sure that no * outputs with these locations exist. @@ -247,10 +247,10 @@ TEST_F(fragment_builtin, inputs_have_explicit_location) if (var->data.mode != ir_var_shader_in) continue; - EXPECT_TRUE(var->explicit_location); + EXPECT_TRUE(var->data.explicit_location); EXPECT_NE(-1, var->location); EXPECT_GT(VARYING_SLOT_VAR0, var->location); - EXPECT_EQ(0u, var->location_frac); + EXPECT_EQ(0u, var->data.location_frac); /* Several varyings only exist in the vertex / geometry shader. Be sure * that no inputs with these locations exist. @@ -267,7 +267,7 @@ TEST_F(fragment_builtin, outputs_have_explicit_location) if (var->data.mode != ir_var_shader_out) continue; - EXPECT_TRUE(var->explicit_location); + EXPECT_TRUE(var->data.explicit_location); EXPECT_NE(-1, var->location); /* gl_FragData[] has location FRAG_RESULT_DATA0. Locations beyond that @@ -275,7 +275,7 @@ TEST_F(fragment_builtin, outputs_have_explicit_location) */ EXPECT_GE(FRAG_RESULT_DATA0, var->location); - EXPECT_EQ(0u, var->location_frac); + EXPECT_EQ(0u, var->data.location_frac); } } @@ -320,7 +320,7 @@ TEST_F(geometry_builtin, inputs_have_explicit_location) if (var->is_interface_instance()) { EXPECT_STREQ("gl_in", var->name); - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); ASSERT_TRUE(var->type->is_array()); @@ -342,10 +342,10 @@ TEST_F(geometry_builtin, inputs_have_explicit_location) EXPECT_NE(VARYING_SLOT_FACE, input->location); } } else { - EXPECT_TRUE(var->explicit_location); + EXPECT_TRUE(var->data.explicit_location); EXPECT_NE(-1, var->location); EXPECT_GT(VARYING_SLOT_VAR0, var->location); - EXPECT_EQ(0u, var->location_frac); + EXPECT_EQ(0u, var->data.location_frac); } /* Several varyings only exist in the fragment shader. Be sure that no @@ -364,10 +364,10 @@ TEST_F(geometry_builtin, outputs_have_explicit_location) if (var->data.mode != ir_var_shader_out) continue; - EXPECT_TRUE(var->explicit_location); + EXPECT_TRUE(var->data.explicit_location); EXPECT_NE(-1, var->location); EXPECT_GT(VARYING_SLOT_VAR0, var->location); - EXPECT_EQ(0u, var->location_frac); + EXPECT_EQ(0u, var->data.location_frac); /* Several varyings only exist in the fragment shader. Be sure that no * outputs with these locations exist. diff --git a/src/glsl/tests/invalidate_locations_test.cpp b/src/glsl/tests/invalidate_locations_test.cpp index f70dc6f..b76491a 100644 --- a/src/glsl/tests/invalidate_locations_test.cpp +++ b/src/glsl/tests/invalidate_locations_test.cpp @@ -64,20 +64,20 @@ TEST_F(invalidate_locations, simple_vertex_in_generic) "a", ir_var_shader_in); - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); var->location = VERT_ATTRIB_GENERIC0; - var->location_frac = 2; + var->data.location_frac = 2; ir.push_tail(var); link_invalidate_variable_locations(&ir); EXPECT_EQ(-1, var->location); - EXPECT_EQ(0u, var->location_frac); - EXPECT_FALSE(var->explicit_location); - EXPECT_TRUE(var->is_unmatched_generic_inout); + EXPECT_EQ(0u, var->data.location_frac); + EXPECT_FALSE(var->data.explicit_location); + EXPECT_TRUE(var->data.is_unmatched_generic_inout); } TEST_F(invalidate_locations, explicit_location_vertex_in_generic) @@ -87,20 +87,20 @@ TEST_F(invalidate_locations, explicit_location_vertex_in_generic) "a", ir_var_shader_in); - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); var->location = VERT_ATTRIB_GENERIC0; - var->explicit_location = true; + var->data.explicit_location = true; ir.push_tail(var); link_invalidate_variable_locations(&ir); EXPECT_EQ(VERT_ATTRIB_GENERIC0, var->location); - EXPECT_EQ(0u, var->location_frac); - EXPECT_TRUE(var->explicit_location); - EXPECT_FALSE(var->is_unmatched_generic_inout); + EXPECT_EQ(0u, var->data.location_frac); + EXPECT_TRUE(var->data.explicit_location); + EXPECT_FALSE(var->data.is_unmatched_generic_inout); } TEST_F(invalidate_locations, explicit_location_frac_vertex_in_generic) @@ -110,21 +110,21 @@ TEST_F(invalidate_locations, explicit_location_frac_vertex_in_generic) "a", ir_var_shader_in); - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); var->location = VERT_ATTRIB_GENERIC0; - var->location_frac = 2; - var->explicit_location = true; + var->data.location_frac = 2; + var->data.explicit_location = true; ir.push_tail(var); link_invalidate_variable_locations(&ir); EXPECT_EQ(VERT_ATTRIB_GENERIC0, var->location); - EXPECT_EQ(2u, var->location_frac); - EXPECT_TRUE(var->explicit_location); - EXPECT_FALSE(var->is_unmatched_generic_inout); + EXPECT_EQ(2u, var->data.location_frac); + EXPECT_TRUE(var->data.explicit_location); + EXPECT_FALSE(var->data.is_unmatched_generic_inout); } TEST_F(invalidate_locations, vertex_in_builtin) @@ -134,20 +134,20 @@ TEST_F(invalidate_locations, vertex_in_builtin) "gl_Vertex", ir_var_shader_in); - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); var->location = VERT_ATTRIB_POS; - var->explicit_location = true; + var->data.explicit_location = true; ir.push_tail(var); link_invalidate_variable_locations(&ir); EXPECT_EQ(VERT_ATTRIB_POS, var->location); - EXPECT_EQ(0u, var->location_frac); - EXPECT_TRUE(var->explicit_location); - EXPECT_FALSE(var->is_unmatched_generic_inout); + EXPECT_EQ(0u, var->data.location_frac); + EXPECT_TRUE(var->data.explicit_location); + EXPECT_FALSE(var->data.is_unmatched_generic_inout); } TEST_F(invalidate_locations, simple_vertex_out_generic) @@ -157,7 +157,7 @@ TEST_F(invalidate_locations, simple_vertex_out_generic) "a", ir_var_shader_out); - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); var->location = VARYING_SLOT_VAR0; @@ -167,9 +167,9 @@ TEST_F(invalidate_locations, simple_vertex_out_generic) link_invalidate_variable_locations(&ir); EXPECT_EQ(-1, var->location); - EXPECT_EQ(0u, var->location_frac); - EXPECT_FALSE(var->explicit_location); - EXPECT_TRUE(var->is_unmatched_generic_inout); + EXPECT_EQ(0u, var->data.location_frac); + EXPECT_FALSE(var->data.explicit_location); + EXPECT_TRUE(var->data.is_unmatched_generic_inout); } TEST_F(invalidate_locations, vertex_out_builtin) @@ -179,18 +179,18 @@ TEST_F(invalidate_locations, vertex_out_builtin) "gl_FrontColor", ir_var_shader_out); - EXPECT_FALSE(var->explicit_location); + EXPECT_FALSE(var->data.explicit_location); EXPECT_EQ(-1, var->location); var->location = VARYING_SLOT_COL0; - var->explicit_location = true; + var->data.explicit_location = true; ir.push_tail(var); link_invalidate_variable_locations(&ir); EXPECT_EQ(VARYING_SLOT_COL0, var->location); - EXPECT_EQ(0u, var->location_frac); - EXPECT_TRUE(var->explicit_location); - EXPECT_FALSE(var->is_unmatched_generic_inout); + EXPECT_EQ(0u, var->data.location_frac); + EXPECT_TRUE(var->data.explicit_location); + EXPECT_FALSE(var->data.is_unmatched_generic_inout); } -- 1.8.3.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev