i965: Fix "handle nir_intrinsic_image_size"

I pushed a half-baked version of "i965: handle nir_intrinsic_image_size" by
accident. Not having the Reviewed-by: tags on the last two commits should
have been a red flag but I somehow missed it after the QA check.

This patch should fix image-size for non-int images. I will add support to
the piglit test for all the other image types.

Sorry for the noise.

Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
Martin Peres 2015-08-20 15:15:56 +03:00
parent e5851cff45
commit 56ebd3314b
1 changed files with 3 additions and 4 deletions

View File

@ -1410,7 +1410,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
/* Get the referenced image variable and type. */
const nir_variable *var = instr->variables[0]->var;
const glsl_type *type = var->type->without_array();
const brw_reg_type base_type = get_image_base_type(type);
/* Get the size of the image. */
const fs_reg image = get_nir_image_deref(instr->variables[0]);
@ -1437,14 +1436,14 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
bld.MOV(offset(retype(dest, BRW_REGISTER_TYPE_D), bld, c),
fs_reg(1));
} else if (c == 1 && is_1d_array_image) {
bld.MOV(offset(retype(dest, base_type), bld, c),
bld.MOV(offset(retype(dest, BRW_REGISTER_TYPE_D), bld, c),
offset(size, bld, 2));
} else if (c == 2 && is_cube_array_image) {
bld.emit(SHADER_OPCODE_INT_QUOTIENT,
offset(retype(dest, base_type), bld, c),
offset(retype(dest, BRW_REGISTER_TYPE_D), bld, c),
offset(size, bld, c), fs_reg(6));
} else {
bld.MOV(offset(retype(dest, base_type), bld, c),
bld.MOV(offset(retype(dest, BRW_REGISTER_TYPE_D), bld, c),
offset(size, bld, c));
}
}