Mesa (10.0): i965: fold offset into coord for textureOffset(gsampler2DRect )

Carl Worth cworth at kemper.freedesktop.org
Thu Jan 9 20:57:13 UTC 2014


Module: Mesa
Branch: 10.0
Commit: c24489b0ef74a34aae440658021c7c44936a9e6f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c24489b0ef74a34aae440658021c7c44936a9e6f

Author: Chris Forbes <chrisf at ijw.co.nz>
Date:   Wed Dec 18 21:27:59 2013 +1300

i965: fold offset into coord for textureOffset(gsampler2DRect)

The hardware is broken with nonzero texel offsets and unnormalized
coordinates; instead of doing correct offsetting, we get garbage.

This just extends the existing workaround for ir_txf and
ir_tg4+gsampler2DRect to also consider ir_tex+gsampler2DRect.

Fixes broken rendering in 'tesseract' when 'mesa_texrectoffset_bug' is
not enabled; also fixes the new piglit test
'tests/spec/glsl-1.30/execution/fs-textureOffset-Rect'.

Has been broken ~forever; suggesting including this in only 10.0 because
the lowering pass doesn't exist in 9.2 or earlier so would require quite
a different patch.

Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Cc: Lee Salzman <lsalzman at gmail.com>
Cc: "10.0" <mesa-stable at lists.freedesktop.org>
(cherry picked from commit 9e99735f301ebf85f8d0bfdce2bad441a5aac7f8)

---

 src/mesa/drivers/dri/i965/brw_lower_unnormalized_offset.cpp |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/mesa/drivers/dri/i965/brw_lower_unnormalized_offset.cpp b/src/mesa/drivers/dri/i965/brw_lower_unnormalized_offset.cpp
index df4fe4b..c95d7f3 100644
--- a/src/mesa/drivers/dri/i965/brw_lower_unnormalized_offset.cpp
+++ b/src/mesa/drivers/dri/i965/brw_lower_unnormalized_offset.cpp
@@ -55,7 +55,7 @@ brw_lower_unnormalized_offset_visitor::visit_leave(ir_texture *ir)
    if (!ir->offset)
       return visit_continue;
 
-   if (ir->op == ir_tg4) {
+   if (ir->op == ir_tg4 || ir->op == ir_tex) {
       if (ir->sampler->type->sampler_dimensionality != GLSL_SAMPLER_DIM_RECT)
          return visit_continue;
    }




More information about the mesa-commit mailing list