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@microsoft.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
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:
Jesse Natalie 2020-11-24 11:54:07 -08:00 committed by Marge Bot
parent c37d8ae82b
commit bc5f69faee
26 changed files with 40 additions and 30 deletions

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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>

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -26,7 +26,7 @@
#include "util/u_inlines.h"
#include <d3d12.h>
#include <directx/d3d12.h>
struct pipe_screen;
struct d3d12_screen;

View File

@ -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"

View File

@ -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;

View File

@ -38,7 +38,7 @@
#include "frontend/sw_winsys.h"
#include <d3d12.h>
#include <directx/d3d12.h>
#include <memory>
static bool

View File

@ -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;

View File

@ -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[] = {

View File

@ -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;

View File

@ -26,7 +26,7 @@
#include "pipe/p_state.h"
#include <d3d12.h>
#include <directx/d3d12.h>
struct d3d12_descriptor_handle;
struct pipe_context;

View File

@ -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(

View File

@ -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"

View File

@ -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',
)

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -26,7 +26,7 @@
#include <vector>
#include <assert.h>
#include <d3d12.h>
#include <directx/d3d12.h>
#include "util/list.h"

View File

@ -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(

View File

@ -0,0 +1,5 @@
[wrap-git]
directory = DirectX-Headers-1.0
url = https://github.com/microsoft/DirectX-Headers.git
revision = head