Mesa (8.0): Revert "i965: Avoid unnecessary recompiles for shaders that don 't use dFdy()."

Ian Romanick idr at kemper.freedesktop.org
Sat Oct 13 03:07:53 UTC 2012


Module: Mesa
Branch: 8.0
Commit: 454841bedd83bb863c8b88eea78e45fc47ba3825
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=454841bedd83bb863c8b88eea78e45fc47ba3825

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Oct 12 20:06:45 2012 -0700

Revert "i965: Avoid unnecessary recompiles for shaders that don't use dFdy()."

This patch depends on some other patches that were not picked over.  As
a result, this patch causes a bunch of piglit regressions on SNB.

This reverts commit 55d23cfc561e53a8514163a188811bddcc09b7df.

---

 src/mesa/drivers/dri/i965/brw_fs.cpp      |    8 +++++++-
 src/mesa/drivers/dri/i965/brw_fs_emit.cpp |    4 ----
 src/mesa/drivers/dri/i965/brw_wm.c        |    8 +++++++-
 src/mesa/drivers/dri/i965/brw_wm_emit.c   |    4 ----
 4 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index f213ca2..6a876cc 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -1884,13 +1884,19 @@ brw_fs_precompile(struct gl_context *ctx, struct gl_shader_program *prog)
    struct brw_context *brw = brw_context(ctx);
    struct brw_wm_prog_key key;
 
+   /* As a temporary measure we assume that all programs use dFdy() (and hence
+    * need to be compiled differently depending on whether we're rendering to
+    * an FBO).  FIXME: set this bool correctly based on the contents of the
+    * program.
+    */
+   bool program_uses_dfdy = true;
+
    if (!prog->_LinkedShaders[MESA_SHADER_FRAGMENT])
       return true;
 
    struct gl_fragment_program *fp = (struct gl_fragment_program *)
       prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program;
    struct brw_fragment_program *bfp = brw_fragment_program(fp);
-   bool program_uses_dfdy = fp->UsesDFdy;
 
    memset(&key, 0, sizeof(key));
 
diff --git a/src/mesa/drivers/dri/i965/brw_fs_emit.cpp b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp
index e7871a0..ebead4f 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_emit.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp
@@ -921,10 +921,6 @@ fs_visitor::generate_code()
 	 generate_ddx(inst, dst, src[0]);
 	 break;
       case FS_OPCODE_DDY:
-         /* Make sure fp->UsesDFdy flag got set (otherwise there's no
-          * guarantee that c->key.render_to_fbo is set).
-          */
-         assert(fp->UsesDFdy);
 	 generate_ddy(inst, dst, src[0], c->key.render_to_fbo);
 	 break;
 
diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c
index 86bc182..11fb03d 100644
--- a/src/mesa/drivers/dri/i965/brw_wm.c
+++ b/src/mesa/drivers/dri/i965/brw_wm.c
@@ -417,7 +417,13 @@ static void brw_wm_populate_key( struct brw_context *brw,
    GLuint lookup = 0;
    GLuint line_aa;
    GLuint i;
-   bool program_uses_dfdy = fp->program.UsesDFdy;
+
+   /* As a temporary measure we assume that all programs use dFdy() (and hence
+    * need to be compiled differently depending on whether we're rendering to
+    * an FBO).  FIXME: set this bool correctly based on the contents of the
+    * program.
+    */
+   bool program_uses_dfdy = true;
 
    memset(key, 0, sizeof(*key));
 
diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c
index f98d2f7..e565b71 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c
@@ -1750,10 +1750,6 @@ void brw_wm_emit( struct brw_wm_compile *c )
 	 break;
 
       case OPCODE_DDY:
-         /* Make sure fp->program.UsesDFdy flag got set (otherwise there's no
-          * guarantee that c->key.render_to_fbo is set).
-          */
-         assert(c->fp->program.UsesDFdy);
 	 emit_ddxy(p, dst, dst_flags, false, args[0], c->key.render_to_fbo);
 	 break;
 




More information about the mesa-commit mailing list