i965: Disable emitting if () statements on gen6 until we really fix them.
authorEric Anholt <eric@anholt.net>
Thu, 7 Oct 2010 16:13:09 +0000 (09:13 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 7 Oct 2010 23:41:13 +0000 (16:41 -0700)
src/mesa/drivers/dri/i965/brw_context.c
src/mesa/drivers/dri/i965/brw_fs.cpp

index 4b44e2a..fa82dfd 100644 (file)
@@ -122,6 +122,9 @@ GLboolean brwCreateContext( int api,
         (i == MESA_SHADER_FRAGMENT);
       ctx->ShaderCompilerOptions[i].EmitNoIndirectTemp =
         (i == MESA_SHADER_FRAGMENT);
+
+      if (intel->gen == 6)
+        ctx->ShaderCompilerOptions[i].EmitNoIfs = GL_TRUE;
    }
 
    ctx->Const.VertexProgram.MaxNativeInstructions = (16 * 1024);
index b93c27e..0b342c2 100644 (file)
@@ -118,6 +118,7 @@ brw_compile_shader(GLcontext *ctx, struct gl_shader *shader)
 GLboolean
 brw_link_shader(GLcontext *ctx, struct gl_shader_program *prog)
 {
+   struct intel_context *intel = intel_context(ctx);
    if (using_new_fs == -1)
       using_new_fs = getenv("INTEL_NEW_FS") != NULL;
 
@@ -162,6 +163,9 @@ brw_link_shader(GLcontext *ctx, struct gl_shader_program *prog)
                                                   GL_TRUE, /* temp */
                                                   GL_TRUE /* uniform */
                                                   ) || progress;
+           if (intel->gen == 6) {
+              progress = do_if_to_cond_assign(shader->ir) || progress;
+           }
         } while (progress);
 
         validate_ir_tree(shader->ir);