nouveau: fix nir and TGSI shader cache collision
authorKarol Herbst <kherbst@redhat.com>
Tue, 10 Apr 2018 14:41:01 +0000 (16:41 +0200)
committerKarol Herbst <kherbst@redhat.com>
Sun, 17 Mar 2019 09:33:28 +0000 (10:33 +0100)
v9: rename variable to driver_flags
    use constants for shader cache flags

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
src/gallium/drivers/nouveau/nouveau_screen.c
src/gallium/drivers/nouveau/nouveau_screen.h

index 98b44b7df0bd19ccf97c6c9caf046659053f9067..cbd45a1dc35e7cd6cc19c7ab280fd4b7c01693e1 100644 (file)
@@ -151,6 +151,7 @@ nouveau_disk_cache_create(struct nouveau_screen *screen)
    struct mesa_sha1 ctx;
    unsigned char sha1[20];
    char cache_id[20 * 2 + 1];
+   uint64_t driver_flags = 0;
 
    _mesa_sha1_init(&ctx);
    if (!disk_cache_get_function_identifier(nouveau_disk_cache_create,
@@ -160,9 +161,14 @@ nouveau_disk_cache_create(struct nouveau_screen *screen)
    _mesa_sha1_final(&ctx, sha1);
    disk_cache_format_hex_id(cache_id, sha1, 20 * 2);
 
+   if (screen->prefer_nir)
+      driver_flags |= NOUVEAU_SHADER_CACHE_FLAGS_IR_NIR;
+   else
+      driver_flags |= NOUVEAU_SHADER_CACHE_FLAGS_IR_TGSI;
+
    screen->disk_shader_cache =
       disk_cache_create(nouveau_screen_get_name(&screen->base),
-                        cache_id, 0);
+                        cache_id, driver_flags);
 }
 
 int
index 4598d6a60e3973c9aa3c3339c3ca3ae5d415c967..1302c608bec29026308c91386609b65e804bf887 100644 (file)
@@ -17,6 +17,9 @@ extern int nouveau_mesa_debug;
 
 struct nouveau_bo;
 
+#define NOUVEAU_SHADER_CACHE_FLAGS_IR_TGSI 0 << 0
+#define NOUVEAU_SHADER_CACHE_FLAGS_IR_NIR  1 << 0
+
 struct nouveau_screen {
    struct pipe_screen base;
    struct nouveau_drm *drm;