r300g: only check for an empty shader if there are no compile errors
authorMarek Olšák <maraeo@gmail.com>
Tue, 31 Aug 2010 22:59:52 +0000 (00:59 +0200)
committerMarek Olšák <maraeo@gmail.com>
Sat, 4 Sep 2010 16:56:20 +0000 (18:56 +0200)
src/gallium/drivers/r300/r300_fs.c

index 2b9861cae38adfb9a0ecc1d9ba702875466eb0b1..485faefc6ac58e2ae67e1cbf41e078f74de081a6 100644 (file)
@@ -424,14 +424,6 @@ static void r300_translate_fragment_shader(
     /* Invoke the compiler */
     r3xx_compile_fragment_program(&compiler);
 
-    /* Shaders with zero instructions are invalid,
-     * use the dummy shader instead. */
-    if (shader->code.code.r500.inst_end == -1) {
-        rc_destroy(&compiler.Base);
-        r300_dummy_fragment_shader(r300, shader);
-        return;
-    }
-
     if (compiler.Base.Error) {
         fprintf(stderr, "r300 FP: Compiler Error:\n%sUsing a dummy shader"
                 " instead.\n", compiler.Base.ErrorMsg);
@@ -447,6 +439,14 @@ static void r300_translate_fragment_shader(
         return;
     }
 
+    /* Shaders with zero instructions are invalid,
+     * use the dummy shader instead. */
+    if (shader->code.code.r500.inst_end == -1) {
+        rc_destroy(&compiler.Base);
+        r300_dummy_fragment_shader(r300, shader);
+        return;
+    }
+
     /* Initialize numbers of constants for each type. */
     shader->externals_count = 0;
     for (i = 0;