[Mesa-dev] [PATCH 4/4] i965: Precompile ARB programs.

Kenneth Graunke kenneth at whitecape.org
Mon Nov 24 00:28:22 PST 2014


We already precompile GLSL programs; it seems logical to precompile ARB
programs as well.  We just never hooked it up.

This also makes the programs compile even if no drawing occurs, which is
useful for shader-db.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
 src/mesa/drivers/dri/i965/brw_program.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c
index 17edb09..d9a3f05 100644
--- a/src/mesa/drivers/dri/i965/brw_program.c
+++ b/src/mesa/drivers/dri/i965/brw_program.c
@@ -42,6 +42,7 @@
 #include "glsl/ir.h"
 
 #include "brw_context.h"
+#include "brw_shader.h"
 #include "brw_wm.h"
 
 static unsigned
@@ -136,6 +137,10 @@ brwProgramStringNotify(struct gl_context *ctx,
       if (newFP == curFP)
 	 brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM;
       newFP->id = get_new_program_id(brw->intelScreen);
+
+      brw_add_texrect_params(prog);
+
+      brw_fs_precompile(ctx, NULL, prog);
       break;
    }
    case GL_VERTEX_PROGRAM_ARB: {
@@ -154,6 +159,10 @@ brwProgramStringNotify(struct gl_context *ctx,
       /* Also tell tnl about it:
        */
       _tnl_program_string(ctx, target, prog);
+
+      brw_add_texrect_params(prog);
+
+      brw_vs_precompile(ctx, NULL, prog);
       break;
    }
    default:
@@ -167,8 +176,6 @@ brwProgramStringNotify(struct gl_context *ctx,
       unreachable("Unexpected target in brwProgramStringNotify");
    }
 
-   brw_add_texrect_params(prog);
-
    return true;
 }
 
-- 
2.1.3



More information about the mesa-dev mailing list