From 4c4934636cb286e7d7836afc26e9d392e2f0f155 Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Tue, 24 Sep 2013 15:18:52 -0700 Subject: [PATCH] i965/blorp: retype destination register for texture SEND instruction to UW. From the bspec documentation of the SEND instruction: "destination region cannot cross the 256-bit register boundary." To avoid violating this restriction when executing SIMD16 texturing operations (such as those used by blorp), we need to ensure that the destination of the SEND instruction doesn't exceed 256 bits in size. An easy way to do this is to set the type of the destination register to UW (unsigned word), since 16 unsigned words can fit inside a 256-bit register. Fortunately, this has no effect on the sampling operation, since the sampler always infers the destination data type from the sampler message rather than from the type of the instruction operand. Previously, we did this for texturing operations issued by the vec4 and fs back-ends, but not for blorp. This patch makes blorp use the same trick. I haven't observed any behavioural difference on actual hardware due to this patch, but it avoids a warning from the simulator so it seems like the right thing to do. Reviewed-by: Matt Turner Reviewed-by: Eric Anholt Acked-by: Chad Versace --- src/mesa/drivers/dri/i965/brw_blorp_blit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp index f07d39f9bb9..027c72e2ac1 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp +++ b/src/mesa/drivers/dri/i965/brw_blorp_blit.cpp @@ -1928,7 +1928,7 @@ brw_blorp_blit_program::texture_lookup(struct brw_reg dst, } brw_SAMPLE(&func, - retype(dst, BRW_REGISTER_TYPE_F) /* dest */, + retype(dst, BRW_REGISTER_TYPE_UW) /* dest */, base_mrf /* msg_reg_nr */, brw_message_reg(base_mrf) /* src0 */, BRW_BLORP_TEXTURE_BINDING_TABLE_INDEX, -- 2.30.2