panfrost: Default to util_pack_color for clears
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Sat, 29 Jun 2019 01:46:43 +0000 (18:46 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Sat, 29 Jun 2019 01:48:13 +0000 (18:48 -0700)
This might help as we bringup more render-target formats.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pan_job.c

index 22f0f492b5d84a81b1d92285516870fdafbff499..2f7fe9e3cc3d39160ee60e7820ab5208273fbbfb 100644 (file)
@@ -27,6 +27,7 @@
 #include "util/hash_table.h"
 #include "util/ralloc.h"
 #include "util/u_format.h"
+#include "util/u_pack_color.h"
 
 struct panfrost_job *
 panfrost_create_job(struct panfrost_context *ctx)
@@ -210,8 +211,12 @@ pan_pack_color(const union pipe_color_union *color, enum pipe_format format)
                 /* Then we pack into a sparse u32. TODO: Why these shifts? */
                 return (b5 << 25) | (g6 << 14) | (r5 << 5);
         } else {
-                /* Unknown format */
-                assert(0);
+                /* Try Gallium's generic default path. Doesn't work for all
+                 * formats but it's a good guess. */
+
+                union util_color out;
+                util_pack_color(color->f, format, &out);
+                return out.ui[0];
         }
 
         return 0;