glsl: Add a lowering pass to move discards out of if-statements.
[mesa.git] / src / mesa / program / ir_to_mesa.cpp
index 5dd602fd83f45f8f6954625da362071671849285..d9d86b6c29fccfc3925ea8e4013876e50c501bca 100644 (file)
@@ -2858,8 +2858,10 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
 
         progress = lower_quadop_vector(ir, true) || progress;
 
-        if (options->EmitNoIfs)
+        if (options->EmitNoIfs) {
+           progress = lower_discard(ir) || progress;
            progress = do_if_to_cond_assign(ir) || progress;
+        }
 
         if (options->EmitNoNoise)
            progress = lower_noise(ir) || progress;