i965: Set the variable type when dereferencing an array.

We don't set the type on the array virtual reg as a whole, so here's
the right place.

Fixes:
glsl1-GLSL 1.20 arrays
glsl1-temp array with constant indexing, fragment shader
glsl1-temp array with swizzled variable indexing
This commit is contained in:
Eric Anholt 2010-09-27 22:19:51 -07:00
parent 719f84d9ab
commit 07fc8eed8f
1 changed files with 15 additions and 0 deletions

View File

@ -613,6 +613,21 @@ fs_visitor::visit(ir_dereference_array *ir)
element_size = ir->type->vector_elements;
} else {
element_size = type_size(ir->type);
switch (ir->type->base_type) {
case GLSL_TYPE_UINT:
this->result.type = BRW_REGISTER_TYPE_UD;
break;
case GLSL_TYPE_INT:
case GLSL_TYPE_BOOL:
this->result.type = BRW_REGISTER_TYPE_D;
break;
case GLSL_TYPE_FLOAT:
this->result.type = BRW_REGISTER_TYPE_F;
break;
default:
/* deref producing struct, no need to tweak type yet. */
break;
}
}
if (index) {