From: Ian Romanick <ian.d.roman...@intel.com>

Signed-off-by: Ian Romanick <ian.d.roman...@intel.com>
---
 src/mesa/drivers/dri/i965/brw_meta_fast_clear.c | 37 ++++++++++++-------------
 1 file changed, 17 insertions(+), 20 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c 
b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
index 00c59f3..37dffb9 100644
--- a/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
+++ b/src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
@@ -124,31 +124,28 @@ brw_bind_rep_write_shader(struct brw_context *brw, float 
*color)
       "   gl_FragColor = color;\n"
       "}\n";
 
-   GLuint vs, fs;
    struct brw_fast_clear_state *clear = brw->fast_clear_state;
    struct gl_context *ctx = &brw->ctx;
 
-   if (clear->shader_prog) {
-      _mesa_UseProgram(clear->shader_prog);
-      _mesa_Uniform4fv(clear->color_location, 1, color);
-      return;
+   if (clear->shader_prog == 0) {
+      GLuint vs =
+         _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER, 
vs_source);
+      GLuint fs =
+         _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, 
fs_source);
+
+      clear->shader_prog = _mesa_CreateProgram();
+      _mesa_AttachShader(clear->shader_prog, fs);
+      _mesa_DeleteShader(fs);
+      _mesa_AttachShader(clear->shader_prog, vs);
+      _mesa_DeleteShader(vs);
+      _mesa_BindAttribLocation(clear->shader_prog, 0, "position");
+      _mesa_ObjectLabel(GL_PROGRAM, clear->shader_prog, -1, "meta repclear");
+      _mesa_LinkProgram(clear->shader_prog);
+
+      clear->color_location =
+         _mesa_GetUniformLocation(clear->shader_prog, "color");
    }
 
-   vs = _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source);
-   fs = _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, 
fs_source);
-
-   clear->shader_prog = _mesa_CreateProgram();
-   _mesa_AttachShader(clear->shader_prog, fs);
-   _mesa_DeleteShader(fs);
-   _mesa_AttachShader(clear->shader_prog, vs);
-   _mesa_DeleteShader(vs);
-   _mesa_BindAttribLocation(clear->shader_prog, 0, "position");
-   _mesa_ObjectLabel(GL_PROGRAM, clear->shader_prog, -1, "meta repclear");
-   _mesa_LinkProgram(clear->shader_prog);
-
-   clear->color_location =
-      _mesa_GetUniformLocation(clear->shader_prog, "color");
-
    _mesa_UseProgram(clear->shader_prog);
    _mesa_Uniform4fv(clear->color_location, 1, color);
 }
-- 
2.5.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to