From bc5f69faee969cf32fdb7cd31b8b12206d82a77e Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Tue, 24 Nov 2020 11:54:07 -0800 Subject: [PATCH] d3d12: Use DirectX-Headers wrap for d3d12.h This does 2 things for us: 1. Allows us to compile-time depend on any features from new headers, instead of having to conditionally compile based on Windows SDK version. 2. Allows us to reference d3d12.h when compiling for non-Windows. Reviewed-by: Bill Kristiansen Reviewed-by: Dylan Baker Reviewed-by: Erik Faye-Lund Part-of: --- meson.build | 6 ++++-- src/gallium/drivers/d3d12/d3d12_batch.h | 2 +- src/gallium/drivers/d3d12/d3d12_bufmgr.cpp | 2 +- src/gallium/drivers/d3d12/d3d12_bufmgr.h | 2 +- src/gallium/drivers/d3d12/d3d12_compiler.cpp | 2 +- src/gallium/drivers/d3d12/d3d12_context.h | 2 +- .../drivers/d3d12/d3d12_descriptor_pool.cpp | 2 +- src/gallium/drivers/d3d12/d3d12_descriptor_pool.h | 2 +- src/gallium/drivers/d3d12/d3d12_fence.h | 2 +- src/gallium/drivers/d3d12/d3d12_format.h | 2 +- src/gallium/drivers/d3d12/d3d12_pipeline_state.h | 2 +- src/gallium/drivers/d3d12/d3d12_resource.cpp | 2 +- src/gallium/drivers/d3d12/d3d12_resource.h | 2 +- src/gallium/drivers/d3d12/d3d12_screen.cpp | 2 +- src/gallium/drivers/d3d12/d3d12_screen.h | 2 +- src/gallium/drivers/d3d12/d3d12_surface.h | 2 +- src/gallium/drivers/d3d12/meson.build | 2 +- .../winsys/d3d12/wgl/d3d12_wgl_framebuffer.cpp | 2 +- src/gallium/winsys/d3d12/wgl/meson.build | 1 + src/microsoft/clc/clc_compiler_test.cpp | 2 +- src/microsoft/clc/compute_test.cpp | 2 +- src/microsoft/clc/compute_test.h | 2 +- src/microsoft/clc/meson.build | 14 ++++++++------ .../resource_state_manager/D3D12ResourceState.h | 2 +- src/microsoft/resource_state_manager/meson.build | 2 +- subprojects/DirectX-Headers.wrap | 5 +++++ 26 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 subprojects/DirectX-Headers.wrap diff --git a/meson.build b/meson.build index e26ba52ba70..a3ea925ddd5 100644 --- a/meson.build +++ b/meson.build @@ -572,8 +572,10 @@ if with_gallium_zink dep_vulkan = dependency('vulkan') endif -if with_gallium_d3d12 and not cpp.check_header('d3d12.h') - error('The D3D12 driver requires d3d12.h from the Windows SDK') +if with_gallium_d3d12 or with_microsoft_clc + dep_dxheaders = dependency('DirectX-Headers', fallback : ['DirectX-Headers', 'dep_dxheaders'], + required : with_gallium_d3d12 + ) endif if with_vulkan_overlay_layer or with_aco_tests diff --git a/src/gallium/drivers/d3d12/d3d12_batch.h b/src/gallium/drivers/d3d12/d3d12_batch.h index 0f90a4bd893..7180d957f58 100644 --- a/src/gallium/drivers/d3d12/d3d12_batch.h +++ b/src/gallium/drivers/d3d12/d3d12_batch.h @@ -28,7 +28,7 @@ #include #define D3D12_IGNORE_SDK_LAYERS -#include +#include struct d3d12_bo; struct d3d12_descriptor_heap; diff --git a/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp b/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp index 758ff94c8f2..dbec3cb2def 100644 --- a/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp +++ b/src/gallium/drivers/d3d12/d3d12_bufmgr.cpp @@ -33,7 +33,7 @@ #include "util/format/u_format.h" #include "util/u_memory.h" -#include +#include struct d3d12_bufmgr { struct pb_manager base; diff --git a/src/gallium/drivers/d3d12/d3d12_bufmgr.h b/src/gallium/drivers/d3d12/d3d12_bufmgr.h index 4aee2c22d18..f66dd6aa564 100644 --- a/src/gallium/drivers/d3d12/d3d12_bufmgr.h +++ b/src/gallium/drivers/d3d12/d3d12_bufmgr.h @@ -27,7 +27,7 @@ #include "pipebuffer/pb_buffer.h" #include "util/u_atomic.h" -#include +#include struct d3d12_bufmgr; struct d3d12_screen; diff --git a/src/gallium/drivers/d3d12/d3d12_compiler.cpp b/src/gallium/drivers/d3d12/d3d12_compiler.cpp index 5b5ef4ca851..390299d15f7 100644 --- a/src/gallium/drivers/d3d12/d3d12_compiler.cpp +++ b/src/gallium/drivers/d3d12/d3d12_compiler.cpp @@ -41,7 +41,7 @@ #include "util/u_prim.h" #include "util/u_simple_shaders.h" -#include +#include #include #include diff --git a/src/gallium/drivers/d3d12/d3d12_context.h b/src/gallium/drivers/d3d12/d3d12_context.h index a077f56de54..fc75d7a5627 100644 --- a/src/gallium/drivers/d3d12/d3d12_context.h +++ b/src/gallium/drivers/d3d12/d3d12_context.h @@ -37,7 +37,7 @@ #include "util/slab.h" #include "util/u_suballoc.h" -#include +#include #define D3D12_GFX_SHADER_STAGES (PIPE_SHADER_TYPES - 1) diff --git a/src/gallium/drivers/d3d12/d3d12_descriptor_pool.cpp b/src/gallium/drivers/d3d12/d3d12_descriptor_pool.cpp index b83fe1b2976..d62f8e76fcf 100644 --- a/src/gallium/drivers/d3d12/d3d12_descriptor_pool.cpp +++ b/src/gallium/drivers/d3d12/d3d12_descriptor_pool.cpp @@ -32,7 +32,7 @@ #include "util/u_dynarray.h" #include "util/u_memory.h" -#include +#include struct d3d12_descriptor_pool { ID3D12Device *dev; diff --git a/src/gallium/drivers/d3d12/d3d12_descriptor_pool.h b/src/gallium/drivers/d3d12/d3d12_descriptor_pool.h index 324e55a3e4d..11108951ab6 100644 --- a/src/gallium/drivers/d3d12/d3d12_descriptor_pool.h +++ b/src/gallium/drivers/d3d12/d3d12_descriptor_pool.h @@ -27,7 +27,7 @@ #include "pipe/p_context.h" #define D3D12_IGNORE_SDK_LAYERS -#include +#include struct d3d12_descriptor_pool; struct d3d12_descriptor_heap; diff --git a/src/gallium/drivers/d3d12/d3d12_fence.h b/src/gallium/drivers/d3d12/d3d12_fence.h index d14204eba0f..c72d8017bad 100644 --- a/src/gallium/drivers/d3d12/d3d12_fence.h +++ b/src/gallium/drivers/d3d12/d3d12_fence.h @@ -26,7 +26,7 @@ #include "util/u_inlines.h" -#include +#include struct pipe_screen; struct d3d12_screen; diff --git a/src/gallium/drivers/d3d12/d3d12_format.h b/src/gallium/drivers/d3d12/d3d12_format.h index 538de9c2fdd..962335731a5 100644 --- a/src/gallium/drivers/d3d12/d3d12_format.h +++ b/src/gallium/drivers/d3d12/d3d12_format.h @@ -24,7 +24,7 @@ #ifndef D3D12_FORMATS_H #define D3D12_FORMATS_H -#include +#include #include "pipe/p_format.h" #include "pipe/p_defines.h" diff --git a/src/gallium/drivers/d3d12/d3d12_pipeline_state.h b/src/gallium/drivers/d3d12/d3d12_pipeline_state.h index 015b1a1176f..972d291fe93 100644 --- a/src/gallium/drivers/d3d12/d3d12_pipeline_state.h +++ b/src/gallium/drivers/d3d12/d3d12_pipeline_state.h @@ -27,7 +27,7 @@ #include "pipe/p_state.h" #define D3D12_IGNORE_SDK_LAYERS -#include +#include struct d3d12_context; struct d3d12_root_signature; diff --git a/src/gallium/drivers/d3d12/d3d12_resource.cpp b/src/gallium/drivers/d3d12/d3d12_resource.cpp index a41ec322a56..cf236a0db2b 100644 --- a/src/gallium/drivers/d3d12/d3d12_resource.cpp +++ b/src/gallium/drivers/d3d12/d3d12_resource.cpp @@ -38,7 +38,7 @@ #include "frontend/sw_winsys.h" -#include +#include #include static bool diff --git a/src/gallium/drivers/d3d12/d3d12_resource.h b/src/gallium/drivers/d3d12/d3d12_resource.h index 62ecf6bb51b..4c8dccb02e9 100644 --- a/src/gallium/drivers/d3d12/d3d12_resource.h +++ b/src/gallium/drivers/d3d12/d3d12_resource.h @@ -29,7 +29,7 @@ struct pipe_screen; #include "util/u_range.h" #include "util/u_transfer.h" -#include +#include struct d3d12_resource { struct pipe_resource base; diff --git a/src/gallium/drivers/d3d12/d3d12_screen.cpp b/src/gallium/drivers/d3d12/d3d12_screen.cpp index 3f12eae117e..e85fc7c8acc 100644 --- a/src/gallium/drivers/d3d12/d3d12_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_screen.cpp @@ -43,7 +43,7 @@ #include "frontend/sw_winsys.h" #include -#include +#include static const struct debug_named_value debug_options[] = { diff --git a/src/gallium/drivers/d3d12/d3d12_screen.h b/src/gallium/drivers/d3d12/d3d12_screen.h index 837093987d5..76e43d4f199 100644 --- a/src/gallium/drivers/d3d12/d3d12_screen.h +++ b/src/gallium/drivers/d3d12/d3d12_screen.h @@ -29,7 +29,7 @@ #include "util/slab.h" #define D3D12_IGNORE_SDK_LAYERS -#include +#include #include struct pb_manager; diff --git a/src/gallium/drivers/d3d12/d3d12_surface.h b/src/gallium/drivers/d3d12/d3d12_surface.h index c21933a5e5d..b0409849ec7 100644 --- a/src/gallium/drivers/d3d12/d3d12_surface.h +++ b/src/gallium/drivers/d3d12/d3d12_surface.h @@ -26,7 +26,7 @@ #include "pipe/p_state.h" -#include +#include struct d3d12_descriptor_handle; struct pipe_context; diff --git a/src/gallium/drivers/d3d12/meson.build b/src/gallium/drivers/d3d12/meson.build index dc2ae22aa45..44a968121f3 100644 --- a/src/gallium/drivers/d3d12/meson.build +++ b/src/gallium/drivers/d3d12/meson.build @@ -48,7 +48,7 @@ libd3d12 = static_library( files_libd3d12, gnu_symbol_visibility : 'hidden', include_directories : [inc_include, inc_src, inc_mesa, inc_gallium, inc_gallium_aux], - dependencies: [idep_nir_headers, idep_libdxil_compiler, idep_libd3d12_resource_state], + dependencies: [idep_nir_headers, idep_libdxil_compiler, idep_libd3d12_resource_state, dep_dxheaders], ) driver_d3d12 = declare_dependency( diff --git a/src/gallium/winsys/d3d12/wgl/d3d12_wgl_framebuffer.cpp b/src/gallium/winsys/d3d12/wgl/d3d12_wgl_framebuffer.cpp index 32723d9fe58..9ac8b80b2e6 100644 --- a/src/gallium/winsys/d3d12/wgl/d3d12_wgl_framebuffer.cpp +++ b/src/gallium/winsys/d3d12/wgl/d3d12_wgl_framebuffer.cpp @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include "util/u_memory.h" diff --git a/src/gallium/winsys/d3d12/wgl/meson.build b/src/gallium/winsys/d3d12/wgl/meson.build index 8f05beeb885..0a25f9844a9 100644 --- a/src/gallium/winsys/d3d12/wgl/meson.build +++ b/src/gallium/winsys/d3d12/wgl/meson.build @@ -24,6 +24,7 @@ libd3d12winsys = static_library( 'd3d12winsys', files('d3d12_wgl_framebuffer.cpp', 'd3d12_wgl_winsys.c'), include_directories : [inc_src, inc_wgl, inc_include, inc_gallium, inc_gallium_aux, inc_gallium_drivers], + dependencies : [dep_dxheaders], gnu_symbol_visibility : 'hidden', ) diff --git a/src/microsoft/clc/clc_compiler_test.cpp b/src/microsoft/clc/clc_compiler_test.cpp index 882db6ac23f..d38861434ad 100644 --- a/src/microsoft/clc/clc_compiler_test.cpp +++ b/src/microsoft/clc/clc_compiler_test.cpp @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/microsoft/clc/compute_test.cpp b/src/microsoft/clc/compute_test.cpp index 46f5d87014c..44e48871eb5 100644 --- a/src/microsoft/clc/compute_test.cpp +++ b/src/microsoft/clc/compute_test.cpp @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/microsoft/clc/compute_test.h b/src/microsoft/clc/compute_test.h index 6fb06e6ab67..11e7d1cc4d7 100644 --- a/src/microsoft/clc/compute_test.h +++ b/src/microsoft/clc/compute_test.h @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/microsoft/clc/meson.build b/src/microsoft/clc/meson.build index d89e8b6a3e2..6cf54f1cce0 100644 --- a/src/microsoft/clc/meson.build +++ b/src/microsoft/clc/meson.build @@ -59,10 +59,12 @@ libclc_compiler = shared_library( dep_llvmspirvlib, idep_mesautil, idep_libdxil_compiler, idep_nir, dep_spirv_tools] ) -clc_compiler_test = executable('clc_compiler_test', - ['clc_compiler_test.cpp', 'compute_test.cpp'], - link_with : [libclc_compiler], - dependencies : [idep_gtest, idep_mesautil], - include_directories : [inc_include, inc_src]) +if dep_dxheaders.found() + clc_compiler_test = executable('clc_compiler_test', + ['clc_compiler_test.cpp', 'compute_test.cpp'], + link_with : [libclc_compiler], + dependencies : [idep_gtest, idep_mesautil, idep_libdxil_compiler, dep_dxheaders], + include_directories : [inc_include, inc_src]) -test('clc_compiler_test', clc_compiler_test, timeout: 180) + test('clc_compiler_test', clc_compiler_test, timeout: 180) +endif diff --git a/src/microsoft/resource_state_manager/D3D12ResourceState.h b/src/microsoft/resource_state_manager/D3D12ResourceState.h index 12342e0dc4b..07071a3b85a 100644 --- a/src/microsoft/resource_state_manager/D3D12ResourceState.h +++ b/src/microsoft/resource_state_manager/D3D12ResourceState.h @@ -26,7 +26,7 @@ #include #include -#include +#include #include "util/list.h" diff --git a/src/microsoft/resource_state_manager/meson.build b/src/microsoft/resource_state_manager/meson.build index f9167a6295c..7ee6b2c8dd4 100644 --- a/src/microsoft/resource_state_manager/meson.build +++ b/src/microsoft/resource_state_manager/meson.build @@ -28,7 +28,7 @@ libd3d12_resource_state = static_library( files_libd3d12_resource_state, gnu_symbol_visibility : 'hidden', include_directories : [inc_include, inc_src, inc_mesa], - dependencies: [], + dependencies: [dep_dxheaders], ) idep_libd3d12_resource_state = declare_dependency( diff --git a/subprojects/DirectX-Headers.wrap b/subprojects/DirectX-Headers.wrap new file mode 100644 index 00000000000..0c89d9fa30b --- /dev/null +++ b/subprojects/DirectX-Headers.wrap @@ -0,0 +1,5 @@ +[wrap-git] +directory = DirectX-Headers-1.0 + +url = https://github.com/microsoft/DirectX-Headers.git +revision = head