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