Mesa (master): r300g: handle vertex format PIPE_FORMAT_NONE

Marek Olšák mareko at kemper.freedesktop.org
Sun Jan 4 22:57:23 UTC 2015


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sun Jan  4 23:53:23 2015 +0100

r300g: handle vertex format PIPE_FORMAT_NONE

---

 src/gallium/drivers/r300/r300_state_inlines.h |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_state_inlines.h b/src/gallium/drivers/r300/r300_state_inlines.h
index 62c03b3..97619db 100644
--- a/src/gallium/drivers/r300/r300_state_inlines.h
+++ b/src/gallium/drivers/r300/r300_state_inlines.h
@@ -343,6 +343,9 @@ r300_translate_vertex_data_type(enum pipe_format format) {
     const struct util_format_description *desc;
     unsigned i;
 
+    if (!format)
+        format = PIPE_FORMAT_R32_FLOAT;
+
     desc = util_format_description(format);
 
     if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) {
@@ -410,10 +413,16 @@ r300_translate_vertex_data_type(enum pipe_format format) {
 
 static INLINE uint16_t
 r300_translate_vertex_data_swizzle(enum pipe_format format) {
-    const struct util_format_description *desc = util_format_description(format);
+    const struct util_format_description *desc;
     unsigned i, swizzle = 0;
 
-    assert(format);
+    if (!format)
+        return (R300_SWIZZLE_SELECT_FP_ZERO << R300_SWIZZLE_SELECT_X_SHIFT) |
+               (R300_SWIZZLE_SELECT_FP_ZERO << R300_SWIZZLE_SELECT_Y_SHIFT) |
+               (R300_SWIZZLE_SELECT_FP_ZERO << R300_SWIZZLE_SELECT_Z_SHIFT) |
+               (R300_SWIZZLE_SELECT_FP_ONE << R300_SWIZZLE_SELECT_W_SHIFT);
+
+    desc = util_format_description(format);
 
     if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) {
         fprintf(stderr, "r300: Bad format %s in %s:%d\n",




More information about the mesa-commit mailing list