glsl_to_tgsi: set correct register type for array and structure elements
authorBryan Cain <bryancain3@gmail.com>
Tue, 23 Oct 2012 16:58:40 +0000 (11:58 -0500)
committerAndreas Boll <andreas.boll.dev@gmail.com>
Mon, 29 Oct 2012 14:49:00 +0000 (15:49 +0100)
commit170f0459a2367406d4ec838b2eebdc6ff2f84f2c
tree097cbf667d75c3881660580f0a5c06eb369d9183
parent96ed6c90eff58ce030c39c2b4db6daf512586b34
glsl_to_tgsi: set correct register type for array and structure elements

This fixes an issue where glsl_to_tgsi_visior::get_opcode() would emit the
wrong opcode because the register type was GLSL_TYPE_ARRAY/STRUCT instead of
GLSL_TYPE_FLOAT/INT/UINT/BOOL, so the function would use the float opcodes for
operations on integer or boolean values dereferenced from an array or
structure.  Assertions have been added to get_opcode() to prevent this bug
from reappearing in the future.

NOTE: This is a candidate for the stable branches.

Reviewed-by: Brian Paul <brianp@vmware.com>
Tested-by: Andreas Boll <andreas.boll.dev@gmail.com>
src/mesa/state_tracker/st_glsl_to_tgsi.cpp