Mesa (master): r300-gallium: Re-translate shaders if constants change.

Corbin Simpson csimpson at kemper.freedesktop.org
Sun Apr 5 19:13:09 UTC 2009


Module: Mesa
Branch: master
Commit: 50ee103cf02b66d68a2728840c9c2f990773576b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=50ee103cf02b66d68a2728840c9c2f990773576b

Author: Corbin Simpson <MostAwesomeDude at gmail.com>
Date:   Sun Apr  5 01:32:00 2009 -0700

r300-gallium: Re-translate shaders if constants change.

---

 src/gallium/drivers/r300/r300_state.c         |    9 +++++++--
 src/gallium/drivers/r300/r300_state_derived.c |    3 ++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 5b3bb32..095df04 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -153,8 +153,13 @@ static void
 
     /* If the number of constants have changed, invalidate the shader. */
     if (r300->shader_constants[shader].user_count != i) {
-        r300->fs->translated = FALSE;
-        r300_translate_fragment_shader(r300, r300->fs);
+        if (shader == PIPE_SHADER_FRAGMENT && r300->fs) {
+            r300->fs->translated = FALSE;
+            r300_translate_fragment_shader(r300, r300->fs);
+        } else if (shader == PIPE_SHADER_VERTEX && r300->vs) {
+            r300->vs->translated = FALSE;
+            r300_translate_vertex_shader(r300, r300->vs);
+        }
     }
 }
 
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index 2f34698..f1feafb 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -305,7 +305,8 @@ static void r300_update_rs_block(struct r300_context* r300)
 
 void r300_update_derived_state(struct r300_context* r300)
 {
-    if (r300->dirty_state & R300_NEW_FRAGMENT_SHADER) {
+    if (r300->dirty_state &
+            (R300_NEW_FRAGMENT_SHADER | R300_NEW_VERTEX_SHADER)) {
         r300_update_vertex_layout(r300);
     }
 




More information about the mesa-commit mailing list