summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2009-07-22 23:58:35 -0700
committerCorbin Simpson <MostAwesomeDude@gmail.com>2009-07-23 00:00:28 -0700
commit07961bb05e5ba05205b9f53834863664f1023870 (patch)
tree9ac4af62bf551fdb8ce95060d7f1cd3058ece667 /src/gallium/drivers/r300
parent895c435defa83f49b2145f316a7d8d203b2fe374 (diff)
r300g: Actually mark shaders as translated/untranslated.
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.
Diffstat (limited to 'src/gallium/drivers/r300')
-rw-r--r--src/gallium/drivers/r300/r300_fs.c3
-rw-r--r--src/gallium/drivers/r300/r300_state.c4
-rw-r--r--src/gallium/drivers/r300/r300_vs.c3
3 files changed, 8 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_fs.c b/src/gallium/drivers/r300/r300_fs.c
index 8672e211bc..ca8ef99902 100644
--- a/src/gallium/drivers/r300/r300_fs.c
+++ b/src/gallium/drivers/r300/r300_fs.c
@@ -105,4 +105,7 @@ void r300_translate_fragment_shader(struct r300_context* r300,
tgsi_parse_free(&parser);
FREE(assembler);
+
+ /* And, finally... */
+ fs->translated = TRUE;
}
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 68da0aa4cb..162740f594 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -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;
diff --git a/src/gallium/drivers/r300/r300_vs.c b/src/gallium/drivers/r300/r300_vs.c
index a664a316e8..741a1b6989 100644
--- a/src/gallium/drivers/r300/r300_vs.c
+++ b/src/gallium/drivers/r300/r300_vs.c
@@ -408,4 +408,7 @@ void r300_translate_vertex_shader(struct r300_context* r300,
tgsi_parse_free(&parser);
FREE(assembler);
+
+ /* And, finally... */
+ vs->translated = TRUE;
}