On 07/18/2012 01:16 PM, Paul Berry wrote:
The i965 back-end needs to compile dFdy() differently for FBOs and
window system framebuffers, because Y coordinates are flipped between
the two (see commit 82d2596: i965: Compute dFdy() correctly for FBOs).
This boolean will allow it to avoid unnecessarily recompiling shaders
that don't use dFdy().
---
  src/mesa/main/mtypes.h     |    1 +
  src/mesa/program/program.c |    2 ++
  2 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 1f74e6a..4769e10 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2011,6 +2011,7 @@ struct gl_fragment_program
  {
     struct gl_program Base;   /**<  base class */
     GLboolean UsesKill;          /**<  shader uses KIL instruction */
+   GLboolean UsesDFdy;          /**<  shader uses DDY instruction */
     GLboolean OriginUpperLeft;
     GLboolean PixelCenterInteger;
     enum gl_frag_depth_layout FragDepthLayout;
diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c
index 582cbcc..3ad8377 100644
--- a/src/mesa/program/program.c
+++ b/src/mesa/program/program.c
@@ -551,6 +551,7 @@ _mesa_clone_program(struct gl_context *ctx, const struct 
gl_program *prog)
              = (const struct gl_fragment_program *) prog;
           struct gl_fragment_program *fpc = (struct gl_fragment_program *) 
clone;
           fpc->UsesKill = fp->UsesKill;
+         fpc->UsesDFdy = fp->UsesDFdy;
           fpc->OriginUpperLeft = fp->OriginUpperLeft;
           fpc->PixelCenterInteger = fp->PixelCenterInteger;
        }
@@ -772,6 +773,7 @@ _mesa_combine_programs(struct gl_context *ctx,
        newFprog = (struct gl_fragment_program *) newProg;

        newFprog->UsesKill = fprogA->UsesKill || fprogB->UsesKill;
+      newFprog->UsesDFdy = fprogA->UsesDFdy || fprogB->UsesDFdy;

        /* We'll do a search and replace for instances
         * of progB_colorFile/progB_colorIndex below...

Reviewed-by: Brian Paul <bri...@vmware.com>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to