Mesa (master): r300g: set undefined vertex swizzles to (0,0,0,1) respectively

Marek Olšák mareko at kemper.freedesktop.org
Mon Apr 26 22:16:12 UTC 2010


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Apr 27 00:01:03 2010 +0200

r300g: set undefined vertex swizzles to (0,0,0,1) respectively

---

 src/gallium/drivers/r300/r300_state_inlines.h |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state_inlines.h b/src/gallium/drivers/r300/r300_state_inlines.h
index c2bff67..fcbdb91 100644
--- a/src/gallium/drivers/r300/r300_state_inlines.h
+++ b/src/gallium/drivers/r300/r300_state_inlines.h
@@ -453,10 +453,17 @@ r300_translate_vertex_data_swizzle(enum pipe_format format) {
         return 0;
     }
 
-    for (i = 0; i < 4; i++) {
+    for (i = 0; i < desc->nr_channels; i++) {
         swizzle |=
             MIN2(desc->swizzle[i], R300_SWIZZLE_SELECT_FP_ONE) << (3*i);
     }
+    /* Set (0,0,0,1) in unused components. */
+    for (; i < 3; i++) {
+        swizzle |= R300_SWIZZLE_SELECT_FP_ZERO << (3*i);
+    }
+    for (; i < 4; i++) {
+        swizzle |= R300_SWIZZLE_SELECT_FP_ONE << (3*i);
+    }
 
     return swizzle | (0xf << R300_WRITE_ENA_SHIFT);
 }




More information about the mesa-commit mailing list