glsl: simply packing class comparison
Handle comparing the packing class using the same method as we do for var->data.is_xfb_only Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
@@ -1775,6 +1775,7 @@ varying_matches::assign_locations(struct gl_shader_program *prog,
|
|||||||
unsigned generic_location = 0;
|
unsigned generic_location = 0;
|
||||||
unsigned generic_patch_location = MAX_VARYING*4;
|
unsigned generic_patch_location = MAX_VARYING*4;
|
||||||
bool previous_var_xfb_only = false;
|
bool previous_var_xfb_only = false;
|
||||||
|
unsigned previous_packing_class = ~0u;
|
||||||
|
|
||||||
for (unsigned i = 0; i < this->num_matches; i++) {
|
for (unsigned i = 0; i < this->num_matches; i++) {
|
||||||
unsigned *location = &generic_location;
|
unsigned *location = &generic_location;
|
||||||
@@ -1809,12 +1810,12 @@ varying_matches::assign_locations(struct gl_shader_program *prog,
|
|||||||
if (var->data.must_be_shader_input ||
|
if (var->data.must_be_shader_input ||
|
||||||
(this->disable_varying_packing &&
|
(this->disable_varying_packing &&
|
||||||
!(previous_var_xfb_only && var->data.is_xfb_only)) ||
|
!(previous_var_xfb_only && var->data.is_xfb_only)) ||
|
||||||
(i > 0 && this->matches[i - 1].packing_class
|
(previous_packing_class != this->matches[i].packing_class )) {
|
||||||
!= this->matches[i].packing_class )) {
|
|
||||||
*location = ALIGN(*location, 4);
|
*location = ALIGN(*location, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
previous_var_xfb_only = var->data.is_xfb_only;
|
previous_var_xfb_only = var->data.is_xfb_only;
|
||||||
|
previous_packing_class = this->matches[i].packing_class;
|
||||||
|
|
||||||
/* The number of components taken up by this variable. For vertex shader
|
/* The number of components taken up by this variable. For vertex shader
|
||||||
* inputs, we use the number of slots * 4, as they have different
|
* inputs, we use the number of slots * 4, as they have different
|
||||||
|
Reference in New Issue
Block a user