glsl: fix explicit location validation for doubles
Previously we would fail to find a match for the second half of a dvec4 as 'i' would get incremented to 1 before we added the var to the array at component 0. Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
This commit is contained in:
@@ -392,7 +392,8 @@ cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
|
||||
}
|
||||
|
||||
while (idx < slot_limit) {
|
||||
for (unsigned i = var->data.location_frac; i < last_comp; i++) {
|
||||
unsigned i = var->data.location_frac;
|
||||
while (i < last_comp) {
|
||||
if (explicit_locations[idx][i] != NULL) {
|
||||
linker_error(prog,
|
||||
"%s shader has multiple outputs explicitly "
|
||||
@@ -418,6 +419,7 @@ cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
|
||||
}
|
||||
|
||||
explicit_locations[idx][i] = var;
|
||||
i++;
|
||||
|
||||
/* We need to do some special handling for doubles as dvec3 and
|
||||
* dvec4 consume two consecutive locations. We don't need to
|
||||
|
Reference in New Issue
Block a user