gallium: Only use Asahi's software path on macOS
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Thu, 9 Jun 2022 13:45:37 +0000 (09:45 -0400)
committerAlyssa Rosenzweig <alyssa@collabora.com>
Sat, 29 Oct 2022 16:04:41 +0000 (12:04 -0400)
On macOS, we don't have DRM or any real WSI, so Asahi has to pretend to be a
software rasterizer to load. On Linux, we do have DRM and proper WSI, so we
don't want that. For faking Asahi devices on Linux, we should use drm-shim
instead. This makes sure we don't accidentally load Asahi on non-M1 Linux.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Acked-by: Eric Engestrom <eric@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15940>

src/gallium/auxiliary/target-helpers/inline_sw_helper.h
src/gallium/auxiliary/target-helpers/sw_helper.h

index 91056dc..91321a8 100644 (file)
@@ -30,7 +30,7 @@
 #include "d3d12/d3d12_public.h"
 #endif
 
-#ifdef GALLIUM_ASAHI
+#if defined(GALLIUM_ASAHI) && __APPLE__
 #include "asahi/agx_public.h"
 #endif
 
@@ -67,7 +67,7 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
       screen = d3d12_create_dxcore_screen(winsys, NULL);
 #endif
 
-#if defined(GALLIUM_ASAHI)
+#if defined(GALLIUM_ASAHI) && __APPLE__
    if (screen == NULL && strcmp(driver, "asahi") == 0)
       screen = agx_screen_create(0, NULL, winsys);
 #endif
@@ -85,7 +85,7 @@ sw_screen_create_vk(struct sw_winsys *winsys, bool sw_vk)
 #if defined(GALLIUM_D3D12)
       (sw_vk || only_sw) ? "" : "d3d12",
 #endif
-#if defined(GALLIUM_ASAHI)
+#if defined(GALLIUM_ASAHI) && __APPLE__
       (sw_vk || only_sw) ? "" : "asahi",
 #endif
 #if defined(GALLIUM_LLVMPIPE)
index 29d65ae..3695a06 100644 (file)
@@ -21,7 +21,7 @@
 #include "d3d12/d3d12_public.h"
 #endif
 
-#ifdef GALLIUM_ASAHI
+#if defined(GALLIUM_ASAHI) && __APPLE__
 #include "asahi/agx_public.h"
 #endif
 
@@ -71,7 +71,7 @@ sw_screen_create_named(struct sw_winsys *winsys, const struct pipe_screen_config
       screen = d3d12_create_dxcore_screen(winsys, NULL);
 #endif
 
-#if defined(GALLIUM_ASAHI)
+#if defined(GALLIUM_ASAHI) && __APPLE__
    if (screen == NULL && strcmp(driver, "asahi") == 0)
       screen = agx_screen_create(0, NULL, winsys);
 #endif
@@ -88,7 +88,7 @@ sw_screen_create_vk(struct sw_winsys *winsys, const struct pipe_screen_config *c
 #if defined(GALLIUM_D3D12)
       (sw_vk || only_sw) ? "" : "d3d12",
 #endif
-#if defined(GALLIUM_ASAHI)
+#if defined(GALLIUM_ASAHI) && __APPLE__
       (sw_vk || only_sw) ? "" : "asahi",
 #endif
 #if defined(GALLIUM_LLVMPIPE)