r300g: handle vertex format PIPE_FORMAT_NONE
authorMarek Olšák <marek.olsak@amd.com>
Sun, 4 Jan 2015 22:53:23 +0000 (23:53 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Sun, 4 Jan 2015 22:54:47 +0000 (23:54 +0100)
src/gallium/drivers/r300/r300_state_inlines.h

index 62c03b3909bf38c1daaea81678e6f44fbba4607e..97619dbd2ba38ae355d6d5ba0053ef3cbde31120 100644 (file)
@@ -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",