r300g: Actually mark shaders as translated/untranslated.
authorCorbin Simpson <MostAwesomeDude@gmail.com>
Thu, 23 Jul 2009 06:58:35 +0000 (23:58 -0700)
committerCorbin Simpson <MostAwesomeDude@gmail.com>
Thu, 23 Jul 2009 07:00:28 +0000 (00:00 -0700)
Also trust that Gallium will not give us TGSI that miscounts shader consts.

This creates a 20x speedup on glxgears, from 8 FPS to 160 FPS.

src/gallium/drivers/r300/r300_fs.c
src/gallium/drivers/r300/r300_state.c
src/gallium/drivers/r300/r300_vs.c

index 8672e211bc4e6dd8e08fd0f9bba03ca590be8683..ca8ef9990244a76c5fb1977b4d2a51c18dfaa29a 100644 (file)
@@ -105,4 +105,7 @@ void r300_translate_fragment_shader(struct r300_context* r300,
 
     tgsi_parse_free(&parser);
     FREE(assembler);
+
+    /* And, finally... */
+    fs->translated = TRUE;
 }
index 68da0aa4cbbc878cc4aed2d3106a8d80a5cbee07..162740f594de12f8a1ffb3fa4aa7de039e6eaa03 100644 (file)
@@ -155,7 +155,7 @@ static void
     }
 
     r300->dirty_state |= R300_NEW_CONSTANTS;
-
+#if 0
     /* If the number of constants have changed, invalidate the shader. */
     if (r300->shader_constants[shader].user_count != i) {
         if (shader == PIPE_SHADER_FRAGMENT && r300->fs &&
@@ -168,6 +168,7 @@ static void
             r300_translate_vertex_shader(r300, r300->vs);
         }
     }
+#endif
 }
 
 /* Create a new depth, stencil, and alpha state based on the CSO dsa state.
@@ -315,7 +316,6 @@ static void r300_bind_fs_state(struct pipe_context* pipe, void* shader)
         r300_translate_fragment_shader(r300, fs);
     }
 
-    fs->translated = TRUE;
     r300->fs = fs;
 
     r300->dirty_state |= R300_NEW_FRAGMENT_SHADER;
index a664a316e8c6e75d4a7926fea86e2a583bf14d8b..741a1b69895c6cffc560679114a58900baa9a5a7 100644 (file)
@@ -408,4 +408,7 @@ void r300_translate_vertex_shader(struct r300_context* r300,
 
     tgsi_parse_free(&parser);
     FREE(assembler);
+
+    /* And, finally... */
+    vs->translated = TRUE;
 }