Mesa (9.1): i965/gen4: Fix fragment program rectangle texture shadow compares.

Carl Worth cworth at kemper.freedesktop.org
Thu Oct 3 05:00:10 UTC 2013


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

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Sep 18 12:32:31 2013 -0700

i965/gen4: Fix fragment program rectangle texture shadow compares.

The rescale_texcoord(), if it does something, will return just the
GLSL-sized coordinate, leaving out the 3rd and 4th components where we
were storing our projected shadow compare and the texture projector.
Deref the shadow compare before using the shared rescale-the-coordinate
code to fix the problem.

Fixes piglit tex-shadow2drect.shader_test and txp-shadow2drect.shader_test

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69525
NOTE: This is a candidate for stable branches.
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
(cherry picked from commit 938956ad52bc7659212b5877080967d4af0aad81)

---

 src/mesa/drivers/dri/i965/brw_fs_fp.cpp |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
index 5f5f6a9..0ced258 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_fp.cpp
@@ -493,15 +493,15 @@ fs_visitor::emit_fragment_program_code()
          ir_constant_data junk_data;
          ir->coordinate = new(mem_ctx) ir_constant(coordinate_type, &junk_data);
 
-         coordinate = rescale_texcoord(ir, coordinate,
-                                       fpi->TexSrcTarget == TEXTURE_RECT_INDEX,
-                                       fpi->TexSrcUnit, fpi->TexSrcUnit);
-
          if (fpi->TexShadow) {
             shadow_c = regoffset(coordinate, 2);
             ir->shadow_comparitor = new(mem_ctx) ir_constant(0.0f);
          }
 
+         coordinate = rescale_texcoord(ir, coordinate,
+                                       fpi->TexSrcTarget == TEXTURE_RECT_INDEX,
+                                       fpi->TexSrcUnit, fpi->TexSrcUnit);
+
          fs_inst *inst;
          if (intel->gen >= 7) {
             inst = emit_texture_gen7(ir, dst, coordinate, shadow_c, lod, dpdy);




More information about the mesa-commit mailing list