summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_state.c
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2009-05-20 14:55:03 -0700
committerCorbin Simpson <MostAwesomeDude@gmail.com>2009-05-20 14:55:03 -0700
commitd04c85d01bf37d480df8b9a21d9a79194d2e67f3 (patch)
tree9f9a5cd4c8d16a2a854f7ff4d4a892a0586f7947 /src/gallium/drivers/r300/r300_state.c
parent4151c0ea91212ac5ec73fa6d1936df9254978672 (diff)
r300-gallium: Another constantbuf shader recompile test.
Less briefly... Shaders need to be recompiled if their constantbuf offsets have changed. However, since we only change them from shaders if immediates need to be emitted, we shouldn't bother if the shader doesn't use immediates.
Diffstat (limited to 'src/gallium/drivers/r300/r300_state.c')
-rw-r--r--src/gallium/drivers/r300/r300_state.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 4e65fbbabe..0461ffd681 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -151,10 +151,12 @@ static void
/* 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) {
+ if (shader == PIPE_SHADER_FRAGMENT && r300->fs &&
+ r300->fs->uses_imms) {
r300->fs->translated = FALSE;
r300_translate_fragment_shader(r300, r300->fs);
- } else if (shader == PIPE_SHADER_VERTEX && r300->vs) {
+ } else if (shader == PIPE_SHADER_VERTEX && r300->vs &&
+ r300->vs->uses_imms) {
r300->vs->translated = FALSE;
r300_translate_vertex_shader(r300, r300->vs);
}