panfrost: Add app blacklist
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 5 Aug 2019 15:20:24 +0000 (08:20 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 5 Aug 2019 16:04:47 +0000 (16:04 +0000)
In preparation for an initial 19.2 release, add a blacklist for apps
known to be buggy under Panfrost to protect users. Panfrost is NOT a
conformant implementation at this time.

Distros: please do not revert this patch. If blacklisted apps are run
using Panfrost, dragons will bite you. Thanks :)

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Acked-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
src/gallium/drivers/panfrost/pan_screen.c

index 5b51faa7f5665cf7e49aa803af399b85172dc991..b2fac88e956e9146887f5911192d4872a8d52707 100644 (file)
@@ -33,6 +33,7 @@
 #include "util/u_video.h"
 #include "util/u_screen.h"
 #include "util/os_time.h"
+#include "util/u_process.h"
 #include "pipe/p_defines.h"
 #include "pipe/p_screen.h"
 #include "draw/draw_context.h"
@@ -583,10 +584,23 @@ panfrost_screen_get_compiler_options(struct pipe_screen *pscreen,
 struct pipe_screen *
 panfrost_create_screen(int fd, struct renderonly *ro)
 {
-        struct panfrost_screen *screen = rzalloc(NULL, struct panfrost_screen);
-
         pan_debug = debug_get_option_pan_debug();
 
+        /* Blacklist apps known to be buggy under Panfrost */
+        const char *proc = util_get_process_name();
+        const char *blacklist[] = {
+                "chromium",
+                "chrome",
+        };
+
+        for (unsigned i = 0; i < ARRAY_SIZE(blacklist); ++i) {
+                if ((strcmp(blacklist[i], proc) == 0))
+                        return NULL;
+        }
+
+        /* Create the screen */
+        struct panfrost_screen *screen = rzalloc(NULL, struct panfrost_screen);
+
         if (!screen)
                 return NULL;