d3d12: Only support DXGI and GDI APIs on Windows
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7937>
This commit is contained in:
@@ -32,8 +32,10 @@ typedef struct _LUID LUID;
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
struct pipe_screen *
|
struct pipe_screen *
|
||||||
d3d12_create_dxgi_screen(struct sw_winsys *winsys, LUID *adapter_luid);
|
d3d12_create_dxgi_screen(struct sw_winsys *winsys, LUID *adapter_luid);
|
||||||
|
#endif
|
||||||
|
|
||||||
struct pipe_screen *
|
struct pipe_screen *
|
||||||
d3d12_create_dxcore_screen(struct sw_winsys *winsys, LUID *adapter_luid);
|
d3d12_create_dxcore_screen(struct sw_winsys *winsys, LUID *adapter_luid);
|
||||||
|
@@ -633,9 +633,12 @@ d3d12_flush_frontbuffer(struct pipe_screen * pscreen,
|
|||||||
winsys->displaytarget_unmap(winsys, res->dt);
|
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;
|
ID3D12SharingContract *sharing_contract;
|
||||||
if (SUCCEEDED(screen->cmdqueue->QueryInterface(IID_PPV_ARGS(&sharing_contract))))
|
if (SUCCEEDED(screen->cmdqueue->QueryInterface(IID_PPV_ARGS(&sharing_contract))))
|
||||||
sharing_contract->Present(d3d12_res, 0, WindowFromDC((HDC)winsys_drawable_handle));
|
sharing_contract->Present(d3d12_res, 0, WindowFromDC((HDC)winsys_drawable_handle));
|
||||||
|
#endif
|
||||||
|
|
||||||
winsys->displaytarget_display(winsys, res->dt, winsys_drawable_handle, sub_box);
|
winsys->displaytarget_display(winsys, res->dt, winsys_drawable_handle, sub_box);
|
||||||
}
|
}
|
||||||
|
@@ -28,7 +28,6 @@ files_libd3d12 = files(
|
|||||||
'd3d12_descriptor_pool.cpp',
|
'd3d12_descriptor_pool.cpp',
|
||||||
'd3d12_draw.cpp',
|
'd3d12_draw.cpp',
|
||||||
'd3d12_dxcore_screen.cpp',
|
'd3d12_dxcore_screen.cpp',
|
||||||
'd3d12_dxgi_screen.cpp',
|
|
||||||
'd3d12_fence.cpp',
|
'd3d12_fence.cpp',
|
||||||
'd3d12_format.c',
|
'd3d12_format.c',
|
||||||
'd3d12_gs_variant.cpp',
|
'd3d12_gs_variant.cpp',
|
||||||
@@ -45,6 +44,10 @@ files_libd3d12 = files(
|
|||||||
'd3d12_surface.cpp',
|
'd3d12_surface.cpp',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if host_machine.system() == 'windows'
|
||||||
|
files_libd3d12 += files('d3d12_dxgi_screen.cpp')
|
||||||
|
endif
|
||||||
|
|
||||||
libd3d12 = static_library(
|
libd3d12 = static_library(
|
||||||
'd3d12',
|
'd3d12',
|
||||||
files_libd3d12,
|
files_libd3d12,
|
||||||
|
Reference in New Issue
Block a user