mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
i965/vec4: Remove broken vector size deduction in setup_builtin_uniform_values().
This seemed to be trying to deduce the number of uniform vector components from the parameter swizzle, but the algorithm would always give 4 as result. Instead grab the correct number of components from the GLSL type. Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
132cdcc468
commit
5bcca9f8dc
1 changed files with 8 additions and 13 deletions
|
|
@ -756,20 +756,15 @@ vec4_visitor::setup_builtin_uniform_values(ir_variable *ir)
|
|||
&this->prog->Parameters->ParameterValues[index][0];
|
||||
|
||||
assert(this->uniforms < uniform_array_size);
|
||||
this->uniform_vector_size[this->uniforms] = 0;
|
||||
/* Add each of the unique swizzled channels of the element.
|
||||
* This will end up matching the size of the glsl_type of this field.
|
||||
*/
|
||||
int last_swiz = -1;
|
||||
for (unsigned int j = 0; j < 4; j++) {
|
||||
int swiz = GET_SWZ(slots[i].swizzle, j);
|
||||
last_swiz = swiz;
|
||||
|
||||
stage_prog_data->param[this->uniforms * 4 + j] = &values[swiz];
|
||||
assert(this->uniforms < uniform_array_size);
|
||||
if (swiz <= last_swiz)
|
||||
this->uniform_vector_size[this->uniforms]++;
|
||||
}
|
||||
for (unsigned j = 0; j < 4; j++)
|
||||
stage_prog_data->param[this->uniforms * 4 + j] =
|
||||
&values[GET_SWZ(slots[i].swizzle, j)];
|
||||
|
||||
this->uniform_vector_size[this->uniforms] =
|
||||
(ir->type->is_scalar() || ir->type->is_vector() ||
|
||||
ir->type->is_matrix() ? ir->type->vector_elements : 4);
|
||||
|
||||
this->uniforms++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue