diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 78c1bc6ea6b..3b56340343f 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -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) {