glsl: Fix lack of i2u in lower_ubo_reference.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 7 Apr 2014 05:41:34 +0000 (22:41 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 8 Apr 2014 07:01:58 +0000 (00:01 -0700)
commite14b93371cc8394bd69622f6b60cfdf8ba177360
tree10a291ed187aa298fe52574811f688b618c774f3
parent4311f9878d0d43a4214d6716eacf85e3443acd45
glsl: Fix lack of i2u in lower_ubo_reference.

ir_binop_ubo_load takes unsigned integer operands.  However, the array
index used to compute these offsets may be a signed integer.  (For
example, see Piglit's spec/glsl-1.40/uniform_buffer/fs-bvec-array).

For some reason, we were missing an ir_binop_i2u cast, and ir_validator
was failing to catch that.

Without this change, ir_builder's type inference code broke for me when
writing a new optimization pass.

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/glsl/lower_ubo_reference.cpp