Mesa (master): gallium/dri: Add D3D12 software driver option
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Dec 16 16:42:47 UTC 2020
Module: Mesa
Branch: master
Commit: 0507da62c47ad6ca0b5c4f9bb2209d773c3e444c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0507da62c47ad6ca0b5c4f9bb2209d773c3e444c
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Mon Dec 7 13:19:58 2020 -0800
gallium/dri: Add D3D12 software driver option
This lets you use GALLIUM_DRIVER=d3d12 to choose the d3d12
backend with a software winsys.
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7937>
---
src/gallium/auxiliary/target-helpers/inline_sw_helper.h | 11 +++++++++++
src/gallium/auxiliary/target-helpers/sw_helper.h | 11 +++++++++++
src/gallium/targets/dri/meson.build | 5 +++--
src/gallium/targets/dri/target.c | 4 ++++
4 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h
index 6106cc02044..e3300940555 100644
--- a/src/gallium/auxiliary/target-helpers/inline_sw_helper.h
+++ b/src/gallium/auxiliary/target-helpers/inline_sw_helper.h
@@ -27,6 +27,10 @@
#include "virgl/vtest/virgl_vtest_public.h"
#endif
+#ifdef GALLIUM_D3D12
+#include "d3d12/d3d12_public.h"
+#endif
+
static inline struct pipe_screen *
sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
{
@@ -60,6 +64,11 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
screen = zink_create_screen(winsys);
#endif
+#if defined(GALLIUM_D3D12)
+ if (screen == NULL && strcmp(driver, "d3d12") == 0)
+ screen = d3d12_create_dxcore_screen(winsys, NULL);
+#endif
+
return screen;
}
@@ -78,6 +87,8 @@ sw_screen_create(struct sw_winsys *winsys)
default_driver = "swr";
#elif defined(GALLIUM_ZINK)
default_driver = "zink";
+#elif defined(GALLIUM_D3D12)
+ default_driver = "d3d12";
#else
default_driver = "";
#endif
diff --git a/src/gallium/auxiliary/target-helpers/sw_helper.h b/src/gallium/auxiliary/target-helpers/sw_helper.h
index 76cfe14f1d0..fd1ad904dfb 100644
--- a/src/gallium/auxiliary/target-helpers/sw_helper.h
+++ b/src/gallium/auxiliary/target-helpers/sw_helper.h
@@ -16,6 +16,10 @@
#include "zink/zink_public.h"
#endif
+#ifdef GALLIUM_D3D12
+#include "d3d12/d3d12_public.h"
+#endif
+
#ifdef GALLIUM_SOFTPIPE
#include "softpipe/sp_public.h"
#endif
@@ -66,6 +70,11 @@ sw_screen_create_named(struct sw_winsys *winsys, const char *driver)
screen = zink_create_screen(winsys);
#endif
+#if defined(GALLIUM_D3D12)
+ if (screen == NULL && strcmp(driver, "d3d12") == 0)
+ screen = d3d12_create_dxcore_screen(winsys, NULL);
+#endif
+
return screen;
}
@@ -84,6 +93,8 @@ sw_screen_create(struct sw_winsys *winsys)
default_driver = "swr";
#elif defined(GALLIUM_ZINK)
default_driver = "zink";
+#elif defined(GALLIUM_D3D12)
+ default_driver = "d3d12";
#else
default_driver = "";
#endif
diff --git a/src/gallium/targets/dri/meson.build b/src/gallium/targets/dri/meson.build
index be568b250aa..d12221e7598 100644
--- a/src/gallium/targets/dri/meson.build
+++ b/src/gallium/targets/dri/meson.build
@@ -57,7 +57,7 @@ libgallium_dri = shared_library(
driver_swrast, driver_r300, driver_r600, driver_radeonsi, driver_nouveau,
driver_kmsro, driver_v3d, driver_vc4, driver_freedreno, driver_etnaviv,
driver_tegra, driver_i915, driver_svga, driver_virgl,
- driver_swr, driver_panfrost, driver_iris, driver_lima, driver_zink
+ driver_swr, driver_panfrost, driver_iris, driver_lima, driver_zink, driver_d3d12
],
# Will be deleted during installation, see install_megadrivers.py
install : true,
@@ -104,7 +104,8 @@ foreach d : [[with_gallium_kmsro, [
[with_gallium_svga, 'vmwgfx_dri.so'],
[with_gallium_virgl, 'virtio_gpu_dri.so'],
[with_gallium_lima, 'lima_dri.so'],
- [with_gallium_zink, 'zink_dri.so']]
+ [with_gallium_zink, 'zink_dri.so'],
+ [with_gallium_d3d12, 'd3d12_dri.so']]
if d[0]
gallium_dri_drivers += d[1]
endif
diff --git a/src/gallium/targets/dri/target.c b/src/gallium/targets/dri/target.c
index 6bd41c5be76..3ecc6159612 100644
--- a/src/gallium/targets/dri/target.c
+++ b/src/gallium/targets/dri/target.c
@@ -121,3 +121,7 @@ DEFINE_LOADER_DRM_ENTRYPOINT(lima)
#if defined(GALLIUM_ZINK)
DEFINE_LOADER_DRM_ENTRYPOINT(zink);
#endif
+
+#if defined(GALLIUM_D3D12)
+DEFINE_LOADER_DRM_ENTRYPOINT(d3d12);
+#endif
More information about the mesa-commit
mailing list