Mesa (master): d3d12: Only support DXGI and GDI APIs on Windows

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Dec 16 16:42:47 UTC 2020


Module: Mesa
Branch: master
Commit: ee4c80f77df6310807db6a8f29b1389a7c3a2c43
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ee4c80f77df6310807db6a8f29b1389a7c3a2c43

Author: Jesse Natalie <jenatali at microsoft.com>
Date:   Tue Dec  8 10:58:16 2020 -0800

d3d12: Only support DXGI and GDI APIs on Windows

Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7937>

---

 src/gallium/drivers/d3d12/d3d12_public.h   | 2 ++
 src/gallium/drivers/d3d12/d3d12_screen.cpp | 3 +++
 src/gallium/drivers/d3d12/meson.build      | 5 ++++-
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/d3d12/d3d12_public.h b/src/gallium/drivers/d3d12/d3d12_public.h
index 12dd39f3cba..bd947e2701b 100644
--- a/src/gallium/drivers/d3d12/d3d12_public.h
+++ b/src/gallium/drivers/d3d12/d3d12_public.h
@@ -32,8 +32,10 @@ typedef struct _LUID LUID;
 extern "C" {
 #endif
 
+#ifdef _WIN32
 struct pipe_screen *
 d3d12_create_dxgi_screen(struct sw_winsys *winsys, LUID *adapter_luid);
+#endif
 
 struct pipe_screen *
 d3d12_create_dxcore_screen(struct sw_winsys *winsys, LUID *adapter_luid);
diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp b/src/gallium/drivers/d3d12/d3d12_screen.cpp
index 666875e045c..4ec192e004d 100644
--- a/src/gallium/drivers/d3d12/d3d12_screen.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp
@@ -633,9 +633,12 @@ d3d12_flush_frontbuffer(struct pipe_screen * pscreen,
       winsys->displaytarget_unmap(winsys, res->dt);
    }
 
+#ifdef _WIN32
+   // WindowFromDC is Windows-only, and this method requires an HWND, so only use it on Windows
    ID3D12SharingContract *sharing_contract;
    if (SUCCEEDED(screen->cmdqueue->QueryInterface(IID_PPV_ARGS(&sharing_contract))))
       sharing_contract->Present(d3d12_res, 0, WindowFromDC((HDC)winsys_drawable_handle));
+#endif
 
    winsys->displaytarget_display(winsys, res->dt, winsys_drawable_handle, sub_box);
 }
diff --git a/src/gallium/drivers/d3d12/meson.build b/src/gallium/drivers/d3d12/meson.build
index 7203fe1694c..6132654863b 100644
--- a/src/gallium/drivers/d3d12/meson.build
+++ b/src/gallium/drivers/d3d12/meson.build
@@ -28,7 +28,6 @@ files_libd3d12 = files(
   'd3d12_descriptor_pool.cpp',
   'd3d12_draw.cpp',
   'd3d12_dxcore_screen.cpp',
-  'd3d12_dxgi_screen.cpp',
   'd3d12_fence.cpp',
   'd3d12_format.c',
   'd3d12_gs_variant.cpp',
@@ -45,6 +44,10 @@ files_libd3d12 = files(
   'd3d12_surface.cpp',
 )
 
+if host_machine.system() == 'windows'
+  files_libd3d12 += files('d3d12_dxgi_screen.cpp')
+endif
+
 libd3d12 = static_library(
   'd3d12',
   files_libd3d12,



More information about the mesa-commit mailing list