swrast: Only avoid empty _TexEnvPrograms
authorIan Romanick <ian.d.romanick@intel.com>
Sat, 11 Feb 2012 00:00:27 +0000 (16:00 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 15 Feb 2012 22:50:40 +0000 (14:50 -0800)
If the generated shader for _TexEnvProgram is empty, force the use of
the fixed-function code.  Otherwise, go ahead and use the shader.
This works around a mysterious issue on i915 where fixed-function
software fallbacks are not working correctly.

This isn't really the fix we want, but it works around the issue.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45872
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45876

src/mesa/swrast/s_fragprog.c

index cd20d8e3647f4dfd621ea004b44a23fa81d79211..8d59371c8367c718b4934a1523c8be466654aa2a 100644 (file)
@@ -40,7 +40,8 @@ GLboolean
 _swrast_use_fragment_program(struct gl_context *ctx)
 {
    struct gl_fragment_program *fp = ctx->FragmentProgram._Current;
-   return fp && fp != ctx->FragmentProgram._TexEnvProgram;
+   return fp && !(fp == ctx->FragmentProgram._TexEnvProgram
+                  && fp->Base.NumInstructions == 0);
 }
 
 /**