Mesa (master): d3d12: Use DirectX-Headers wrap for d3d12.h
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Dec 16 16:42:47 UTC 2020
Module: Mesa
Branch: master
Commit: bc5f69faee969cf32fdb7cd31b8b12206d82a77e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc5f69faee969cf32fdb7cd31b8b12206d82a77e
Author: Jesse Natalie <jenatali at microsoft.com>
Date: Tue Nov 24 11:54:07 2020 -0800
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 <billkris at microsoft.com>
Reviewed-by: Dylan Baker <dylan at pnwbakers.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7937>
---
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 +-
src/gallium/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 +-
src/gallium/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 ++++++++------
src/microsoft/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(-)
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 <stdint.h>
#define D3D12_IGNORE_SDK_LAYERS
-#include <d3d12.h>
+#include <directx/d3d12.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
#include <dxcapi.h>
#include <wrl.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
#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 <d3d12.h>
+#include <directx/d3d12.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
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 <dxgiformat.h>
+#include <directx/dxgiformat.h>
#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 <d3d12.h>
+#include <directx/d3d12.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
#include <memory>
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 <d3d12.h>
+#include <directx/d3d12.h>
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 <dxgi1_4.h>
-#include <d3d12sdklayers.h>
+#include <directx/d3d12sdklayers.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
#include <dxgi1_4.h>
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 <d3d12.h>
+#include <directx/d3d12.h>
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 <Windows.h>
#include <dxgi1_4.h>
-#include <d3d12.h>
+#include <directx/d3d12.h>
#include <wrl.h>
#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 <stdexcept>
#include <vector>
-#include <d3d12.h>
+#include <directx/d3d12.h>
#include <dxgi1_4.h>
#include <gtest/gtest.h>
#include <wrl.h>
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 <stdint.h>
#include <stdexcept>
-#include <d3d12.h>
+#include <directx/d3d12.h>
#include <dxgi1_4.h>
#include <gtest/gtest.h>
#include <wrl.h>
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 <stdint.h>
#include <stdexcept>
-#include <d3d12.h>
+#include <directx/d3d12.h>
#include <dxgi1_4.h>
#include <gtest/gtest.h>
#include <wrl.h>
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 <vector>
#include <assert.h>
-#include <d3d12.h>
+#include <directx/d3d12.h>
#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
More information about the mesa-commit
mailing list