mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 13:40:11 +01:00
ir_to_mesa: Stop converting uniform booleans.
Excess conversions considered harmful.
Recently Matt reworked the boolean uniform handling to use the value of
UniformBooleanTrue, rather than integer 1, when uploading uniforms:
mesa: Upload boolean uniforms using UniformBooleanTrue.
glsl: Use UniformBooleanTrue value for uniform initializers.
Marek then set the default to 1.0f for drivers without native integer
support:
mesa: set UniformBooleanTrue = 1.0f by default
However, ir_to_mesa was assuming a value of integer 1, and arranging for
it to be converted to 1.0f on upload. Since Marek's commit, we were
uploading 1.0f = 0x3f800000 which was being interpreted as the integer
value 1065353216 and converted to float as 1.06535322E9, which broke
assumptions in ir_to_mesa that "true" was exactly 1.0f.
+13 Piglits on classic swrast (fs-bool-less-compare-true,
{vs,fs}-op-not-bool-using-if, glsl-1.20/execution/uniform-initializer).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83573
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
c68073e65f
commit
e36bbff0e6
1 changed files with 1 additions and 6 deletions
|
|
@ -2505,12 +2505,7 @@ _mesa_associate_uniform_storage(struct gl_context *ctx,
|
|||
columns = storage->type->matrix_columns;
|
||||
break;
|
||||
case GLSL_TYPE_BOOL:
|
||||
if (ctx->Const.NativeIntegers) {
|
||||
format = (ctx->Const.UniformBooleanTrue == 1)
|
||||
? uniform_bool_int_0_1 : uniform_bool_int_0_not0;
|
||||
} else {
|
||||
format = uniform_bool_float;
|
||||
}
|
||||
format = uniform_native;
|
||||
columns = 1;
|
||||
break;
|
||||
case GLSL_TYPE_SAMPLER:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue