aboutsummaryrefslogtreecommitdiff
path: root/contrib/DirectX-Headers-1.618.2/include
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/DirectX-Headers-1.618.2/include')
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h85
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl119
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp2634
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h2651
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h36886
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl7014
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h899
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl101
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h977
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl291
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h4280
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl1860
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h495
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h10726
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl3818
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h1133
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl991
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h998
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl195
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h36
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h193
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h1162
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h2072
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h12
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h1718
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h128
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h105
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h612
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h1227
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h2570
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxcore.h41
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxcore_interface.h497
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.h57
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.idl53
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h144
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl139
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h201
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h406
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/oaidl.h5
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/ocidl.h5
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpc.h5
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpcndr.h78
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h3
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h124
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/winapifamily.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/client.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/implements.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h6
-rw-r--r--contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h803
49 files changed, 88573 insertions, 0 deletions
diff --git a/contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h b/contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h
new file mode 100644
index 0000000..303567a
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/composition/dcomp-preview.h
@@ -0,0 +1,85 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 * dcomp-preview.h - Preview versions of upcoming DirectComposition interfaces.
7 *
8 * This file provides preview versions of DirectComposition interfaces that may eventually
9 * be integrated into the official dcomp.h header of the Windows SDK. The inclusion of an
10 * interface in this file does not guarantee its future adoption. However, if an interface is
11 * adopted exactly as defined here, the official definition—including its GUID—will be identical
12 * to the preview version.
13 *
14 * If any modifications are made to an interface prior to its official release, the GUID will be
15 * updated accordingly. This guarantees that a QueryInterface (QI) call for a PREVIEW_ interface
16 * is safe: a QI will only succeed if the GUID matches, and will gracefully fail if the official
17 * version differs.
18 *
19 * Developers can transition to the official interfaces by removing the "PREVIEW_" prefix, provided
20 * that the GUIDs remain the same. Note that some PREVIEW_ interfaces may eventually be deprecated
21 * and removed from this file. For a smooth migration, it is recommended to adopt the official
22 * interfaces as soon as they become available in the Windows SDK. The preview interfaces will
23 * remain available long enough to support this transition.
24 *
25 * Always query for these interfaces using QueryInterface and validate the results, rather than
26 * assuming that the target Windows system supports the required features.
27 *
28 *-------------------------------------------------------------------------------------*/
29#pragma once
30
31#if (NTDDI_VERSION >= NTDDI_WIN11_GE)
32
33//+-----------------------------------------------------------------------------
34//
35// Interface:
36// PREVIEW_IDCompositionDynamicTexture
37//
38// Synopsis:
39// An interface representing a dynamically changing texture that can be
40// bound to a dcomp visual as content.
41//
42//------------------------------------------------------------------------------
43#undef INTERFACE
44#define INTERFACE PREVIEW_IDCompositionDynamicTexture
45DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDynamicTexture, IUnknown, "A1DE1D3F-6405-447F-8E95-1383A34B0277")
46{
47 // Set the current texture, assuming that every pixel has changed.
48 STDMETHOD(SetTexture)(THIS_
49 _In_ IDCompositionTexture* pTexture) PURE;
50
51 // Set the current texture, assuming that only the pixels within the specified dirty rects
52 // have changed.
53 //
54 // DWM will use these dirty rects to optimize redrawing the texture on the screen.
55 // However, it does not verify the accuracy of the provided rects, so the caller must ensure
56 // that every changed pixel is covered by at least one rect. There are no guarantees regarding
57 // the redrawing of pixels outside the specified dirty rects; DWM may choose to redraw
58 // additional areas if necessary.
59 //
60 // If the provided array is empty or if the dirty rects are empty, this method treats the
61 // texture as unchanged, allowing DWM to skip redrawing.
62 STDMETHOD(SetTexture)(THIS_
63 _In_ IDCompositionTexture* pTexture,
64 _In_count_(rectCount) const D2D_RECT_L *pRects,
65 _In_ size_t rectCount) PURE;
66};
67
68//+-----------------------------------------------------------------------------
69//
70// Interface:
71// PREVIEW_IDCompositionDevice5
72//
73// Synopsis:
74// Serves as the root factory for composition dynamic textures
75//
76//------------------------------------------------------------------------------
77#undef INTERFACE
78#define INTERFACE PREVIEW_IDCompositionDevice5
79DECLARE_INTERFACE_IID_(PREVIEW_IDCompositionDevice5, IDCompositionDevice4, "2C6BEBFE-A603-472F-AF34-D2443356E61B")
80{
81 STDMETHOD(CreateDynamicTexture)(THIS_
82 _Outptr_ PREVIEW_IDCompositionDynamicTexture** compositionDynamicTexture) PURE;
83};
84
85#endif // #if (NTDDI_VERSION >= NTDDI_WIN11_GE)
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl
new file mode 100644
index 0000000..1384b73
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12MarkerApiEnums.idl
@@ -0,0 +1,119 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 *
5 *-------------------------------------------------------------------------------------*/
6typedef enum D3D12_MARKER_API {
7 D3D12_MARKER_API_SETMARKER = 0,
8 D3D12_MARKER_API_BEGINEVENT = 1,
9 D3D12_MARKER_API_ENDEVENT = 2,
10 D3D12_MARKER_API_DRAWINSTANCED = 3,
11 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
12 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
13 D3D12_MARKER_API_DISPATCH = 6,
14 D3D12_MARKER_API_COPYBUFFERREGION = 7,
15 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16 D3D12_MARKER_API_COPYRESOURCE = 9,
17 D3D12_MARKER_API_COPYTILES = 10,
18 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
19 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
20 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
21 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
22 D3D12_MARKER_API_RESOURCEBARRIER = 15,
23 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
24 D3D12_MARKER_API_PRESENT = 17,
25 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
26 D3D12_MARKER_API_BEGINSUBMISSION = 19,
27 D3D12_MARKER_API_ENDSUBMISSION = 20,
28 D3D12_MARKER_API_DECODEFRAME = 21,
29 D3D12_MARKER_API_PROCESSFRAMES = 22,
30 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
31 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
32 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
33 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
34 D3D12_MARKER_API_DECODEFRAME1 = 27,
35 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
36 D3D12_MARKER_API_DECODEFRAME2 = 29,
37 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
38 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
39 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
40 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
41 D3D12_MARKER_API_DISPATCHRAYS = 34,
42 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
43 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
44 D3D12_MARKER_API_ESTIMATEMOTION = 37,
45 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
46 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
47 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
48 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
49 D3D12_MARKER_API_DISPATCHMESH = 42,
50 D3D12_MARKER_API_ENCODEFRAME = 43,
51 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
52 D3D12_MARKER_API_BARRIER = 45,
53 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
54 D3D12_MARKER_API_DISPATCHGRAPH = 47,
55 D3D12_MARKER_API_SETPROGRAM = 48,
56 D3D12_MARKER_API_ENCODEFRAME1 = 49,
57 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
58 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
59 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
60 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53,
61} D3D12_MARKER_API;
62
63typedef enum D3D12_AUTO_BREADCRUMB_OP {
64 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
65 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
66 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
67 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
68 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
69 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
70 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
71 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
72 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
73 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
74 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
75 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
76 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
77 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
78 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
79 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
80 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
81 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
82 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
83 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
84 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
85 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
86 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
87 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
88 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
89 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
90 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
91 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
92 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
93 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
94 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
95 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
96 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
97 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
98 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
99 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
100 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
101 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
102 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
103 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
104 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
105 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
106 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
107 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
108 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
109 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
110 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
111 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
112 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
113 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
114 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
115 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
116 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
117 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS,
118} D3D12_AUTO_BREADCRUMB_OP;
119
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp
new file mode 100644
index 0000000..b951454
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/D3D12TokenizedProgramFormat.hpp
@@ -0,0 +1,2634 @@
1#pragma once
2//*********************************************************
3//
4// Copyright (c) Microsoft Corporation.
5// Licensed under the MIT License (MIT).
6//
7//*********************************************************
8//
9// High Level Goals
10//
11// - Serve as the runtime/DDI representation for all D3D11 tokenized code,
12// for all classes of programs, including pixel program, vertex program,
13// geometry program, etc.
14//
15// - Any information that HLSL needs to give to drivers is encoded in
16// this token format in some form.
17//
18// - Enable common tools and source code for managing all tokenizable
19// program formats.
20//
21// - Support extensible token definitions, allowing full customizations for
22// specific program classes, while maintaining general conventions for all
23// program models.
24//
25// - Binary backwards compatible with D3D10. Any token name that was originally
26// defined with "D3D10" in it is unchanged; D3D11 only adds new tokens.
27//
28// ----------------------------------------------------------------------------
29//
30// Low Level Feature Summary
31//
32// - DWORD based tokens always, for simplicity
33// - Opcode token is generally a single DWORD, though there is a bit indicating
34// if extended information (extra DWORD(s)) are present
35// - Operand tokens are a completely self contained, extensible format,
36// with scalar and 4-vector data types as first class citizens, but
37// allowance for extension to n-component vectors.
38// - Initial operand token identifies register type, register file
39// structure/dimensionality and mode of indexing for each dimension,
40// and choice of component selection mechanism (i.e. mask vs. swizzle etc).
41// - Optional additional extended operand tokens can defined things like
42// modifiers (which are not needed by default).
43// - Operand's immediate index value(s), if needed, appear as subsequent DWORD
44// values, and if relative addressing is specified, an additional completely
45// self contained operand definition appears nested in the token sequence.
46//
47// ----------------------------------------------------------------------------
48
49#include <winapifamily.h>
50
51#pragma region Application Family
52#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
53
54// ----------------------------------------------------------------------------
55// Version Token (VerTok)
56//
57// [07:00] minor version number (0-255)
58// [15:08] major version number (0-255)
59// [31:16] D3D10_SB_TOKENIZED_PROGRAM_TYPE
60//
61// ----------------------------------------------------------------------------
62
63typedef enum D3D10_SB_TOKENIZED_PROGRAM_TYPE
64{
65 D3D10_SB_PIXEL_SHADER = 0,
66 D3D10_SB_VERTEX_SHADER = 1,
67 D3D10_SB_GEOMETRY_SHADER = 2,
68
69 // D3D11 Shaders
70 D3D11_SB_HULL_SHADER = 3,
71 D3D11_SB_DOMAIN_SHADER = 4,
72 D3D11_SB_COMPUTE_SHADER = 5,
73
74 // Subset of D3D12 Shaders where this field is referenced by runtime
75 // Entries from 6-12 are unique to state objects
76 // (e.g. library, callable and raytracing shaders)
77 D3D12_SB_MESH_SHADER = 13,
78 D3D12_SB_AMPLIFICATION_SHADER = 14,
79
80 D3D11_SB_RESERVED0 = 0xFFF0
81} D3D10_SB_TOKENIZED_PROGRAM_TYPE;
82
83#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK 0xffff0000
84#define D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT 16
85
86// DECODER MACRO: Retrieve program type from version token
87#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_TYPE(VerTok) ((D3D10_SB_TOKENIZED_PROGRAM_TYPE)(((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT))
88
89#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK 0x000000f0
90#define D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT 4
91#define D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK 0x0000000f
92
93// DECODER MACRO: Retrieve major version # from version token
94#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION(VerTok) (((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK)>>D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)
95// DECODER MACRO: Retrieve minor version # from version token
96#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION(VerTok) ((VerTok)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK)
97
98// ENCODER MACRO: Create complete VerTok
99#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_VERSION_TOKEN(ProgType,MajorVer,MinorVer) ((((ProgType)<<D3D10_SB_TOKENIZED_PROGRAM_TYPE_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_TYPE_MASK)|\
100 ((((MajorVer)<<D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_SHIFT)&D3D10_SB_TOKENIZED_PROGRAM_MAJOR_VERSION_MASK))|\
101 ((MinorVer)&D3D10_SB_TOKENIZED_PROGRAM_MINOR_VERSION_MASK))
102
103// ----------------------------------------------------------------------------
104// Length Token (LenTok)
105//
106// Always follows VerTok
107//
108// [31:00] Unsigned integer count of number of
109// DWORDs in program code, including version
110// and length tokens. So the minimum value
111// is 0x00000002 (if an empty program is ever
112// valid).
113//
114// ----------------------------------------------------------------------------
115
116// DECODER MACRO: Retrieve program length
117#define DECODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(LenTok) (LenTok)
118// ENCODER MACRO: Create complete LenTok
119#define ENCODE_D3D10_SB_TOKENIZED_PROGRAM_LENGTH(Length) (Length)
120#define MAX_D3D10_SB_TOKENIZED_PROGRAM_LENGTH (0xffffffff)
121
122// ----------------------------------------------------------------------------
123// Opcode Format (OpcodeToken0)
124//
125// [10:00] D3D10_SB_OPCODE_TYPE
126// if( [10:00] == D3D10_SB_OPCODE_CUSTOMDATA )
127// {
128// Token starts a custom-data block. See "Custom-Data Block Format".
129// }
130// else // standard opcode token
131// {
132// [23:11] Opcode-Specific Controls
133// [30:24] Instruction length in DWORDs including the opcode token.
134// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
135// contains extended opcode token.
136// }
137//
138// ----------------------------------------------------------------------------
139
140typedef enum D3D10_SB_OPCODE_TYPE {
141 D3D10_SB_OPCODE_ADD ,
142 D3D10_SB_OPCODE_AND ,
143 D3D10_SB_OPCODE_BREAK ,
144 D3D10_SB_OPCODE_BREAKC ,
145 D3D10_SB_OPCODE_CALL ,
146 D3D10_SB_OPCODE_CALLC ,
147 D3D10_SB_OPCODE_CASE ,
148 D3D10_SB_OPCODE_CONTINUE ,
149 D3D10_SB_OPCODE_CONTINUEC ,
150 D3D10_SB_OPCODE_CUT ,
151 D3D10_SB_OPCODE_DEFAULT ,
152 D3D10_SB_OPCODE_DERIV_RTX ,
153 D3D10_SB_OPCODE_DERIV_RTY ,
154 D3D10_SB_OPCODE_DISCARD ,
155 D3D10_SB_OPCODE_DIV ,
156 D3D10_SB_OPCODE_DP2 ,
157 D3D10_SB_OPCODE_DP3 ,
158 D3D10_SB_OPCODE_DP4 ,
159 D3D10_SB_OPCODE_ELSE ,
160 D3D10_SB_OPCODE_EMIT ,
161 D3D10_SB_OPCODE_EMITTHENCUT ,
162 D3D10_SB_OPCODE_ENDIF ,
163 D3D10_SB_OPCODE_ENDLOOP ,
164 D3D10_SB_OPCODE_ENDSWITCH ,
165 D3D10_SB_OPCODE_EQ ,
166 D3D10_SB_OPCODE_EXP ,
167 D3D10_SB_OPCODE_FRC ,
168 D3D10_SB_OPCODE_FTOI ,
169 D3D10_SB_OPCODE_FTOU ,
170 D3D10_SB_OPCODE_GE ,
171 D3D10_SB_OPCODE_IADD ,
172 D3D10_SB_OPCODE_IF ,
173 D3D10_SB_OPCODE_IEQ ,
174 D3D10_SB_OPCODE_IGE ,
175 D3D10_SB_OPCODE_ILT ,
176 D3D10_SB_OPCODE_IMAD ,
177 D3D10_SB_OPCODE_IMAX ,
178 D3D10_SB_OPCODE_IMIN ,
179 D3D10_SB_OPCODE_IMUL ,
180 D3D10_SB_OPCODE_INE ,
181 D3D10_SB_OPCODE_INEG ,
182 D3D10_SB_OPCODE_ISHL ,
183 D3D10_SB_OPCODE_ISHR ,
184 D3D10_SB_OPCODE_ITOF ,
185 D3D10_SB_OPCODE_LABEL ,
186 D3D10_SB_OPCODE_LD ,
187 D3D10_SB_OPCODE_LD_MS ,
188 D3D10_SB_OPCODE_LOG ,
189 D3D10_SB_OPCODE_LOOP ,
190 D3D10_SB_OPCODE_LT ,
191 D3D10_SB_OPCODE_MAD ,
192 D3D10_SB_OPCODE_MIN ,
193 D3D10_SB_OPCODE_MAX ,
194 D3D10_SB_OPCODE_CUSTOMDATA ,
195 D3D10_SB_OPCODE_MOV ,
196 D3D10_SB_OPCODE_MOVC ,
197 D3D10_SB_OPCODE_MUL ,
198 D3D10_SB_OPCODE_NE ,
199 D3D10_SB_OPCODE_NOP ,
200 D3D10_SB_OPCODE_NOT ,
201 D3D10_SB_OPCODE_OR ,
202 D3D10_SB_OPCODE_RESINFO ,
203 D3D10_SB_OPCODE_RET ,
204 D3D10_SB_OPCODE_RETC ,
205 D3D10_SB_OPCODE_ROUND_NE ,
206 D3D10_SB_OPCODE_ROUND_NI ,
207 D3D10_SB_OPCODE_ROUND_PI ,
208 D3D10_SB_OPCODE_ROUND_Z ,
209 D3D10_SB_OPCODE_RSQ ,
210 D3D10_SB_OPCODE_SAMPLE ,
211 D3D10_SB_OPCODE_SAMPLE_C ,
212 D3D10_SB_OPCODE_SAMPLE_C_LZ ,
213 D3D10_SB_OPCODE_SAMPLE_L ,
214 D3D10_SB_OPCODE_SAMPLE_D ,
215 D3D10_SB_OPCODE_SAMPLE_B ,
216 D3D10_SB_OPCODE_SQRT ,
217 D3D10_SB_OPCODE_SWITCH ,
218 D3D10_SB_OPCODE_SINCOS ,
219 D3D10_SB_OPCODE_UDIV ,
220 D3D10_SB_OPCODE_ULT ,
221 D3D10_SB_OPCODE_UGE ,
222 D3D10_SB_OPCODE_UMUL ,
223 D3D10_SB_OPCODE_UMAD ,
224 D3D10_SB_OPCODE_UMAX ,
225 D3D10_SB_OPCODE_UMIN ,
226 D3D10_SB_OPCODE_USHR ,
227 D3D10_SB_OPCODE_UTOF ,
228 D3D10_SB_OPCODE_XOR ,
229 D3D10_SB_OPCODE_DCL_RESOURCE , // DCL* opcodes have
230 D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER , // custom operand formats.
231 D3D10_SB_OPCODE_DCL_SAMPLER ,
232 D3D10_SB_OPCODE_DCL_INDEX_RANGE ,
233 D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY ,
234 D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE ,
235 D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT ,
236 D3D10_SB_OPCODE_DCL_INPUT ,
237 D3D10_SB_OPCODE_DCL_INPUT_SGV ,
238 D3D10_SB_OPCODE_DCL_INPUT_SIV ,
239 D3D10_SB_OPCODE_DCL_INPUT_PS ,
240 D3D10_SB_OPCODE_DCL_INPUT_PS_SGV ,
241 D3D10_SB_OPCODE_DCL_INPUT_PS_SIV ,
242 D3D10_SB_OPCODE_DCL_OUTPUT ,
243 D3D10_SB_OPCODE_DCL_OUTPUT_SGV ,
244 D3D10_SB_OPCODE_DCL_OUTPUT_SIV ,
245 D3D10_SB_OPCODE_DCL_TEMPS ,
246 D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP ,
247 D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS ,
248
249// -----------------------------------------------
250
251 // This marks the end of D3D10.0 opcodes
252 D3D10_SB_OPCODE_RESERVED0,
253
254// ---------- DX 10.1 op codes---------------------
255
256 D3D10_1_SB_OPCODE_LOD,
257 D3D10_1_SB_OPCODE_GATHER4,
258 D3D10_1_SB_OPCODE_SAMPLE_POS,
259 D3D10_1_SB_OPCODE_SAMPLE_INFO,
260
261// -----------------------------------------------
262
263 // This marks the end of D3D10.1 opcodes
264 D3D10_1_SB_OPCODE_RESERVED1,
265
266// ---------- DX 11 op codes---------------------
267 D3D11_SB_OPCODE_HS_DECLS , // token marks beginning of HS sub-shader
268 D3D11_SB_OPCODE_HS_CONTROL_POINT_PHASE , // token marks beginning of HS sub-shader
269 D3D11_SB_OPCODE_HS_FORK_PHASE , // token marks beginning of HS sub-shader
270 D3D11_SB_OPCODE_HS_JOIN_PHASE , // token marks beginning of HS sub-shader
271
272 D3D11_SB_OPCODE_EMIT_STREAM ,
273 D3D11_SB_OPCODE_CUT_STREAM ,
274 D3D11_SB_OPCODE_EMITTHENCUT_STREAM ,
275 D3D11_SB_OPCODE_INTERFACE_CALL ,
276
277 D3D11_SB_OPCODE_BUFINFO ,
278 D3D11_SB_OPCODE_DERIV_RTX_COARSE ,
279 D3D11_SB_OPCODE_DERIV_RTX_FINE ,
280 D3D11_SB_OPCODE_DERIV_RTY_COARSE ,
281 D3D11_SB_OPCODE_DERIV_RTY_FINE ,
282 D3D11_SB_OPCODE_GATHER4_C ,
283 D3D11_SB_OPCODE_GATHER4_PO ,
284 D3D11_SB_OPCODE_GATHER4_PO_C ,
285 D3D11_SB_OPCODE_RCP ,
286 D3D11_SB_OPCODE_F32TOF16 ,
287 D3D11_SB_OPCODE_F16TOF32 ,
288 D3D11_SB_OPCODE_UADDC ,
289 D3D11_SB_OPCODE_USUBB ,
290 D3D11_SB_OPCODE_COUNTBITS ,
291 D3D11_SB_OPCODE_FIRSTBIT_HI ,
292 D3D11_SB_OPCODE_FIRSTBIT_LO ,
293 D3D11_SB_OPCODE_FIRSTBIT_SHI ,
294 D3D11_SB_OPCODE_UBFE ,
295 D3D11_SB_OPCODE_IBFE ,
296 D3D11_SB_OPCODE_BFI ,
297 D3D11_SB_OPCODE_BFREV ,
298 D3D11_SB_OPCODE_SWAPC ,
299
300 D3D11_SB_OPCODE_DCL_STREAM ,
301 D3D11_SB_OPCODE_DCL_FUNCTION_BODY ,
302 D3D11_SB_OPCODE_DCL_FUNCTION_TABLE ,
303 D3D11_SB_OPCODE_DCL_INTERFACE ,
304
305 D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT ,
306 D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT ,
307 D3D11_SB_OPCODE_DCL_TESS_DOMAIN ,
308 D3D11_SB_OPCODE_DCL_TESS_PARTITIONING ,
309 D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE ,
310 D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR ,
311 D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT ,
312 D3D11_SB_OPCODE_DCL_HS_JOIN_PHASE_INSTANCE_COUNT ,
313
314 D3D11_SB_OPCODE_DCL_THREAD_GROUP ,
315 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED ,
316 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW ,
317 D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED,
318 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW,
319 D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED,
320 D3D11_SB_OPCODE_DCL_RESOURCE_RAW ,
321 D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED ,
322 D3D11_SB_OPCODE_LD_UAV_TYPED ,
323 D3D11_SB_OPCODE_STORE_UAV_TYPED ,
324 D3D11_SB_OPCODE_LD_RAW ,
325 D3D11_SB_OPCODE_STORE_RAW ,
326 D3D11_SB_OPCODE_LD_STRUCTURED ,
327 D3D11_SB_OPCODE_STORE_STRUCTURED ,
328 D3D11_SB_OPCODE_ATOMIC_AND ,
329 D3D11_SB_OPCODE_ATOMIC_OR ,
330 D3D11_SB_OPCODE_ATOMIC_XOR ,
331 D3D11_SB_OPCODE_ATOMIC_CMP_STORE ,
332 D3D11_SB_OPCODE_ATOMIC_IADD ,
333 D3D11_SB_OPCODE_ATOMIC_IMAX ,
334 D3D11_SB_OPCODE_ATOMIC_IMIN ,
335 D3D11_SB_OPCODE_ATOMIC_UMAX ,
336 D3D11_SB_OPCODE_ATOMIC_UMIN ,
337 D3D11_SB_OPCODE_IMM_ATOMIC_ALLOC ,
338 D3D11_SB_OPCODE_IMM_ATOMIC_CONSUME ,
339 D3D11_SB_OPCODE_IMM_ATOMIC_IADD ,
340 D3D11_SB_OPCODE_IMM_ATOMIC_AND ,
341 D3D11_SB_OPCODE_IMM_ATOMIC_OR ,
342 D3D11_SB_OPCODE_IMM_ATOMIC_XOR ,
343 D3D11_SB_OPCODE_IMM_ATOMIC_EXCH ,
344 D3D11_SB_OPCODE_IMM_ATOMIC_CMP_EXCH ,
345 D3D11_SB_OPCODE_IMM_ATOMIC_IMAX ,
346 D3D11_SB_OPCODE_IMM_ATOMIC_IMIN ,
347 D3D11_SB_OPCODE_IMM_ATOMIC_UMAX ,
348 D3D11_SB_OPCODE_IMM_ATOMIC_UMIN ,
349 D3D11_SB_OPCODE_SYNC ,
350
351 D3D11_SB_OPCODE_DADD ,
352 D3D11_SB_OPCODE_DMAX ,
353 D3D11_SB_OPCODE_DMIN ,
354 D3D11_SB_OPCODE_DMUL ,
355 D3D11_SB_OPCODE_DEQ ,
356 D3D11_SB_OPCODE_DGE ,
357 D3D11_SB_OPCODE_DLT ,
358 D3D11_SB_OPCODE_DNE ,
359 D3D11_SB_OPCODE_DMOV ,
360 D3D11_SB_OPCODE_DMOVC ,
361 D3D11_SB_OPCODE_DTOF ,
362 D3D11_SB_OPCODE_FTOD ,
363
364 D3D11_SB_OPCODE_EVAL_SNAPPED ,
365 D3D11_SB_OPCODE_EVAL_SAMPLE_INDEX ,
366 D3D11_SB_OPCODE_EVAL_CENTROID ,
367
368 D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT ,
369
370 D3D11_SB_OPCODE_ABORT ,
371 D3D11_SB_OPCODE_DEBUG_BREAK ,
372
373// -----------------------------------------------
374
375 // This marks the end of D3D11.0 opcodes
376 D3D11_SB_OPCODE_RESERVED0,
377
378 D3D11_1_SB_OPCODE_DDIV,
379 D3D11_1_SB_OPCODE_DFMA,
380 D3D11_1_SB_OPCODE_DRCP,
381
382 D3D11_1_SB_OPCODE_MSAD,
383
384 D3D11_1_SB_OPCODE_DTOI,
385 D3D11_1_SB_OPCODE_DTOU,
386 D3D11_1_SB_OPCODE_ITOD,
387 D3D11_1_SB_OPCODE_UTOD,
388
389// -----------------------------------------------
390
391 // This marks the end of D3D11.1 opcodes
392 D3D11_1_SB_OPCODE_RESERVED0,
393
394 D3DWDDM1_3_SB_OPCODE_GATHER4_FEEDBACK,
395 D3DWDDM1_3_SB_OPCODE_GATHER4_C_FEEDBACK,
396 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_FEEDBACK,
397 D3DWDDM1_3_SB_OPCODE_GATHER4_PO_C_FEEDBACK,
398 D3DWDDM1_3_SB_OPCODE_LD_FEEDBACK,
399 D3DWDDM1_3_SB_OPCODE_LD_MS_FEEDBACK,
400 D3DWDDM1_3_SB_OPCODE_LD_UAV_TYPED_FEEDBACK,
401 D3DWDDM1_3_SB_OPCODE_LD_RAW_FEEDBACK,
402 D3DWDDM1_3_SB_OPCODE_LD_STRUCTURED_FEEDBACK,
403 D3DWDDM1_3_SB_OPCODE_SAMPLE_L_FEEDBACK,
404 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_LZ_FEEDBACK,
405
406 D3DWDDM1_3_SB_OPCODE_SAMPLE_CLAMP_FEEDBACK,
407 D3DWDDM1_3_SB_OPCODE_SAMPLE_B_CLAMP_FEEDBACK,
408 D3DWDDM1_3_SB_OPCODE_SAMPLE_D_CLAMP_FEEDBACK,
409 D3DWDDM1_3_SB_OPCODE_SAMPLE_C_CLAMP_FEEDBACK,
410
411 D3DWDDM1_3_SB_OPCODE_CHECK_ACCESS_FULLY_MAPPED,
412
413// -----------------------------------------------
414
415 // This marks the end of WDDM 1.3 opcodes
416 D3DWDDM1_3_SB_OPCODE_RESERVED0,
417
418 D3D10_SB_NUM_OPCODES // Should be the last entry
419} D3D10_SB_OPCODE_TYPE;
420
421#define D3D10_SB_OPCODE_TYPE_MASK 0x00007ff
422// DECODER MACRO: Retrieve program opcode
423#define DECODE_D3D10_SB_OPCODE_TYPE(OpcodeToken0) ((D3D10_SB_OPCODE_TYPE)((OpcodeToken0)&D3D10_SB_OPCODE_TYPE_MASK))
424// ENCODER MACRO: Create the opcode-type portion of OpcodeToken0
425#define ENCODE_D3D10_SB_OPCODE_TYPE(OpcodeName) ((OpcodeName)&D3D10_SB_OPCODE_TYPE_MASK)
426
427#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK 0x7f000000
428#define D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT 24
429// DECODER MACRO: Retrieve instruction length
430// in # of DWORDs including the opcode token(s).
431// The range is 1-127.
432#define DECODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)>> D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)
433
434// ENCODER MACRO: Store instruction length
435// portion of OpcodeToken0, in # of DWORDs
436// including the opcode token(s).
437// Valid range is 1-127.
438#define ENCODE_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH(Length) (((Length)<<D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_SHIFT)&D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH_MASK)
439#define MAX_D3D10_SB_TOKENIZED_INSTRUCTION_LENGTH 127
440
441#define D3D10_SB_INSTRUCTION_SATURATE_MASK 0x00002000
442// DECODER MACRO: Check OpcodeToken0 to see if an instruction
443// is to saturate the result [0..1]
444// This flag is indicated by one of the bits in the
445// opcode specific control range.
446#define DECODE_IS_D3D10_SB_INSTRUCTION_SATURATE_ENABLED(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_INSTRUCTION_SATURATE_MASK)
447// ENCODER MACRO: Encode in OpcodeToken0 if instruction is to saturate the result.
448#define ENCODE_D3D10_SB_INSTRUCTION_SATURATE(bSat) (((bSat)!=0)?D3D10_SB_INSTRUCTION_SATURATE_MASK:0)
449
450// Boolean test for conditional instructions such as if (if_z or if_nz)
451// This is part of the opcode specific control range.
452typedef enum D3D10_SB_INSTRUCTION_TEST_BOOLEAN
453{
454 D3D10_SB_INSTRUCTION_TEST_ZERO = 0,
455 D3D10_SB_INSTRUCTION_TEST_NONZERO = 1
456} D3D10_SB_INSTRUCTION_TEST_BOOLEAN;
457#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK 0x00040000
458#define D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT 18
459
460// DECODER MACRO: For an OpcodeToken0 for requires either a
461// zero or non-zero test, determine which test was chosen.
462#define DECODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(OpcodeToken0) ((D3D10_SB_INSTRUCTION_TEST_BOOLEAN)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)>>D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT))
463// ENCODER MACRO: Store "zero" or "nonzero" in the opcode
464// specific control range of OpcodeToken0
465#define ENCODE_D3D10_SB_INSTRUCTION_TEST_BOOLEAN(Boolean) (((Boolean)<<D3D10_SB_INSTRUCTION_TEST_BOOLEAN_SHIFT)&D3D10_SB_INSTRUCTION_TEST_BOOLEAN_MASK)
466
467// Precise value mask (bits 19-22)
468// This is part of the opcode specific control range.
469// It's 1 bit per-channel of the output, for instructions with multiple
470// output operands, it applies to that component in each operand. This
471// uses the components defined in D3D10_SB_COMPONENT_NAME.
472#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK 0x00780000
473#define D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT 19
474
475// DECODER MACRO: this macro extracts from OpcodeToken0 the 4 component
476// (xyzw) mask, as a field of D3D10_SB_4_COMPONENT_[X|Y|Z|W] flags.
477#define DECODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)>>D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT))
478// ENCODER MACRO: Given a set of
479// D3D10_SB_OPERAND_4_COMPONENT_[X|Y|Z|W] values
480// or'd together, encode them in OpcodeToken0.
481#define ENCODE_D3D11_SB_INSTRUCTION_PRECISE_VALUES(ComponentMask) (((ComponentMask)<<D3D11_SB_INSTRUCTION_PRECISE_VALUES_SHIFT)&D3D11_SB_INSTRUCTION_PRECISE_VALUES_MASK)
482
483// resinfo instruction return type
484typedef enum D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE
485{
486 D3D10_SB_RESINFO_INSTRUCTION_RETURN_FLOAT = 0,
487 D3D10_SB_RESINFO_INSTRUCTION_RETURN_RCPFLOAT = 1,
488 D3D10_SB_RESINFO_INSTRUCTION_RETURN_UINT = 2
489} D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE;
490
491#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
492#define D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT 11
493
494// DECODER MACRO: For an OpcodeToken0 for the resinfo instruction,
495// determine the return type.
496#define DECODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT))
497// ENCODER MACRO: Encode the return type for the resinfo instruction
498// in the opcode specific control range of OpcodeToken0
499#define ENCODE_D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_RESINFO_INSTRUCTION_RETURN_TYPE_MASK)
500
501// sync instruction flags
502#define D3D11_SB_SYNC_THREADS_IN_GROUP 0x00000800
503#define D3D11_SB_SYNC_THREAD_GROUP_SHARED_MEMORY 0x00001000
504#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GROUP 0x00002000
505#define D3D11_SB_SYNC_UNORDERED_ACCESS_VIEW_MEMORY_GLOBAL 0x00004000
506#define D3D11_SB_SYNC_FLAGS_MASK 0x00007800
507
508// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
509#define DECODE_D3D11_SB_SYNC_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_SYNC_FLAGS_MASK)
510
511// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
512#define ENCODE_D3D11_SB_SYNC_FLAGS(Flags) ((Flags)&D3D11_SB_SYNC_FLAGS_MASK)
513
514#define D3D10_SB_OPCODE_EXTENDED_MASK 0x80000000
515#define D3D10_SB_OPCODE_EXTENDED_SHIFT 31
516// DECODER MACRO: Determine if the opcode is extended
517// by an additional opcode token. Currently there are no
518// extended opcodes.
519#define DECODE_IS_D3D10_SB_OPCODE_EXTENDED(OpcodeToken0) (((OpcodeToken0)&D3D10_SB_OPCODE_EXTENDED_MASK)>> D3D10_SB_OPCODE_EXTENDED_SHIFT)
520// ENCODER MACRO: Store in OpcodeToken0 whether the opcode is extended
521// by an additional opcode token.
522#define ENCODE_D3D10_SB_OPCODE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPCODE_EXTENDED_MASK:0)
523
524// ----------------------------------------------------------------------------
525// Extended Opcode Format (OpcodeToken1)
526//
527// If bit31 of an opcode token is set, the
528// opcode has an additional extended opcode token DWORD
529// directly following OpcodeToken0. Other tokens
530// expected for the opcode, such as the operand
531// token(s) always follow
532// OpcodeToken0 AND OpcodeToken1..n (extended
533// opcode tokens, if present).
534//
535// [05:00] D3D10_SB_EXTENDED_OPCODE_TYPE
536// [30:06] if([05:00] == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS)
537// {
538// This custom opcode contains controls for SAMPLE.
539// [08:06] Ignored, 0.
540// [12:09] U texel immediate offset (4 bit 2's comp) (0 default)
541// [16:13] V texel immediate offset (4 bit 2's comp) (0 default)
542// [20:17] W texel immediate offset (4 bit 2's comp) (0 default)
543// [30:14] Ignored, 0.
544// }
545// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM )
546// {
547// [10:06] D3D10_SB_RESOURCE_DIMENSION
548// [22:11] When dimension is D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER this holds the buffer stride, otherwise 0
549// [30:23] Ignored, 0.
550// }
551// else if( [05:00] == D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE )
552// {
553// [09:06] D3D10_SB_RESOURCE_RETURN_TYPE for component X
554// [13:10] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
555// [17:14] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
556// [21:18] D3D10_SB_RESOURCE_RETURN_TYPE for component W
557// [30:22] Ignored, 0.
558// }
559// else
560// {
561// [30:04] Ignored, 0.
562// }
563// [31] 0 normally. 1 there is another extended opcode. Any number
564// of extended opcode tokens can be chained. It is possible that some extended
565// opcode tokens could include multiple DWORDS - that is defined
566// on a case by case basis.
567//
568// ----------------------------------------------------------------------------
569typedef enum D3D10_SB_EXTENDED_OPCODE_TYPE
570{
571 D3D10_SB_EXTENDED_OPCODE_EMPTY = 0,
572 D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS = 1,
573 D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM = 2,
574 D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE = 3,
575} D3D10_SB_EXTENDED_OPCODE_TYPE;
576#define D3D11_SB_MAX_SIMULTANEOUS_EXTENDED_OPCODES 3
577
578#define D3D10_SB_EXTENDED_OPCODE_TYPE_MASK 0x0000003f
579
580// DECODER MACRO: Given an extended opcode
581// token (OpcodeToken1), figure out what type
582// of token it is (from D3D10_SB_EXTENDED_OPCODE_TYPE enum)
583// to be able to interpret the rest of the token's contents.
584#define DECODE_D3D10_SB_EXTENDED_OPCODE_TYPE(OpcodeToken1) ((D3D10_SB_EXTENDED_OPCODE_TYPE)((OpcodeToken1)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK))
585
586// ENCODER MACRO: Store extended opcode token
587// type in OpcodeToken1.
588#define ENCODE_D3D10_SB_EXTENDED_OPCODE_TYPE(ExtOpcodeType) ((ExtOpcodeType)&D3D10_SB_EXTENDED_OPCODE_TYPE_MASK)
589
590typedef enum D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD
591{
592 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_U = 0,
593 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_V = 1,
594 D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_W = 2,
595} D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD;
596#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK (3)
597#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord) (9+4*((Coord)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_COORD_MASK))
598#define D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord) (0x0000000f<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))
599
600// DECODER MACRO: Given an extended opcode token
601// (OpcodeToken1), and extended token type ==
602// D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS, determine the immediate
603// texel address offset for u/v/w (D3D10_SB_ADDRESS_OFFSET_COORD)
604// This macro returns a (signed) integer, by sign extending the
605// decoded 4 bit 2's complement immediate value.
606#define DECODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,OpcodeToken1) ((((OpcodeToken1)&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))>>(D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))))
607
608// ENCODER MACRO: Store the immediate texel address offset
609// for U or V or W Coord (D3D10_SB_ADDRESS_OFFSET_COORD) in an extended
610// opcode token (OpcodeToken1) that has extended opcode
611// type == D3D10_SB_EXTENDED_OPCODE_SAMPLE_CONTROLS (opcode type encoded separately)
612// A 2's complement number is expected as input, from which the LSB 4 bits are extracted.
613#define ENCODE_IMMEDIATE_D3D10_SB_ADDRESS_OFFSET(Coord,ImmediateOffset) (((ImmediateOffset)<<D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_SHIFT(Coord))&D3D10_SB_IMMEDIATE_ADDRESS_OFFSET_MASK(Coord))
614
615#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK 0x000007C0
616#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT 6
617
618// DECODER MACRO: Given an extended resource declaration token,
619// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the resource dimension
620// (D3D10_SB_RESOURCE_DIMENSION enum)
621#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(OpcodeTokenN) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT))
622
623// ENCODER MACRO: Store resource dimension
624// (D3D10_SB_RESOURCE_DIMENSION enum) into a
625// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
626#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_MASK)
627
628#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK 0x007FF800
629#define D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT 11
630
631// DECODER MACRO: Given an extended resource declaration token for a structured buffer,
632// (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM), determine the structure stride
633// (12-bit unsigned integer)
634#define DECODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(OpcodeTokenN) (((OpcodeTokenN)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)>>D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)
635
636// ENCODER MACRO: Store resource dimension structure stride
637// (12-bit unsigned integer) into a
638// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_DIM)
639#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE(Stride) (((Stride)<<D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_SHIFT)&D3D11_SB_EXTENDED_RESOURCE_DIMENSION_STRUCTURE_STRIDE_MASK)
640
641#define D3D10_SB_RESOURCE_RETURN_TYPE_MASK 0x0000000f
642#define D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS 0x00000004
643#define D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT 6
644
645// DECODER MACRO: Get the resource return type for component (0-3) from
646// an extended resource declaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
647#define DECODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(OpcodeTokenN, Component) \
648 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((OpcodeTokenN) >> \
649 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
650
651// ENCODER MACRO: Generate a resource return type for a component in an extended
652// resource delcaration token (D3D11_SB_EXTENDED_OPCODE_RESOURCE_RETURN_TYPE)
653#define ENCODE_D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE(ReturnType, Component) \
654 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS + D3D11_SB_EXTENDED_RESOURCE_RETURN_TYPE_SHIFT))
655
656// ----------------------------------------------------------------------------
657// Custom-Data Block Format
658//
659// DWORD 0 (CustomDataDescTok):
660// [10:00] == D3D10_SB_OPCODE_CUSTOMDATA
661// [31:11] == D3D10_SB_CUSTOMDATA_CLASS
662//
663// DWORD 1:
664// 32-bit unsigned integer count of number
665// of DWORDs in custom-data block,
666// including DWORD 0 and DWORD 1.
667// So the minimum value is 0x00000002,
668// meaning empty custom-data.
669//
670// Layout of custom-data contents, for the various meta-data classes,
671// not defined in this file.
672//
673// ----------------------------------------------------------------------------
674
675typedef enum D3D10_SB_CUSTOMDATA_CLASS
676{
677 D3D10_SB_CUSTOMDATA_COMMENT = 0,
678 D3D10_SB_CUSTOMDATA_DEBUGINFO,
679 D3D10_SB_CUSTOMDATA_OPAQUE,
680 D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER,
681 D3D11_SB_CUSTOMDATA_SHADER_MESSAGE,
682 D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9,
683} D3D10_SB_CUSTOMDATA_CLASS;
684
685#define D3D10_SB_CUSTOMDATA_CLASS_MASK 0xfffff800
686#define D3D10_SB_CUSTOMDATA_CLASS_SHIFT 11
687// DECODER MACRO: Find out what class of custom-data is present.
688// The contents of the custom-data block are defined
689// for each class of custom-data.
690#define DECODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataDescTok) ((D3D10_SB_CUSTOMDATA_CLASS)(((CustomDataDescTok)&D3D10_SB_CUSTOMDATA_CLASS_MASK)>>D3D10_SB_CUSTOMDATA_CLASS_SHIFT))
691// ENCODER MACRO: Create complete CustomDataDescTok
692#define ENCODE_D3D10_SB_CUSTOMDATA_CLASS(CustomDataClass) (ENCODE_D3D10_SB_OPCODE_TYPE(D3D10_SB_OPCODE_CUSTOMDATA)|(((CustomDataClass)<<D3D10_SB_CUSTOMDATA_CLASS_SHIFT)&D3D10_SB_CUSTOMDATA_CLASS_MASK))
693
694// ----------------------------------------------------------------------------
695// Instruction Operand Format (OperandToken0)
696//
697// [01:00] D3D10_SB_OPERAND_NUM_COMPONENTS
698// [11:02] Component Selection
699// if([01:00] == D3D10_SB_OPERAND_0_COMPONENT)
700// [11:02] = Ignored, 0
701// else if([01:00] == D3D10_SB_OPERAND_1_COMPONENT
702// [11:02] = Ignored, 0
703// else if([01:00] == D3D10_SB_OPERAND_4_COMPONENT
704// {
705// [03:02] = D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
706// if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE)
707// {
708// [07:04] = D3D10_SB_OPERAND_4_COMPONENT_MASK
709// [11:08] = Ignored, 0
710// }
711// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE)
712// {
713// [11:04] = D3D10_SB_4_COMPONENT_SWIZZLE
714// }
715// else if([03:02] == D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE)
716// {
717// [05:04] = D3D10_SB_4_COMPONENT_NAME
718// [11:06] = Ignored, 0
719// }
720// }
721// else if([01:00] == D3D10_SB_OPERAND_N_COMPONENT)
722// {
723// Currently not defined.
724// }
725// [19:12] D3D10_SB_OPERAND_TYPE
726// [21:20] D3D10_SB_OPERAND_INDEX_DIMENSION:
727// Number of dimensions in the register
728// file (NOT the # of dimensions in the
729// individual register or memory
730// resource being referenced).
731// [24:22] if( [21:20] >= D3D10_SB_OPERAND_INDEX_1D )
732// D3D10_SB_OPERAND_INDEX_REPRESENTATION for first operand index
733// else
734// Ignored, 0
735// [27:25] if( [21:20] >= D3D10_SB_OPERAND_INDEX_2D )
736// D3D10_SB_OPERAND_INDEX_REPRESENTATION for second operand index
737// else
738// Ignored, 0
739// [30:28] if( [21:20] == D3D10_SB_OPERAND_INDEX_3D )
740// D3D10_SB_OPERAND_INDEX_REPRESENTATION for third operand index
741// else
742// Ignored, 0
743// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
744// contains extended operand description.
745//
746// ----------------------------------------------------------------------------
747
748// Number of components in data vector referred to by operand.
749typedef enum D3D10_SB_OPERAND_NUM_COMPONENTS
750{
751 D3D10_SB_OPERAND_0_COMPONENT = 0,
752 D3D10_SB_OPERAND_1_COMPONENT = 1,
753 D3D10_SB_OPERAND_4_COMPONENT = 2,
754 D3D10_SB_OPERAND_N_COMPONENT = 3 // unused for now
755} D3D10_SB_OPERAND_NUM_COMPONENTS;
756#define D3D10_SB_OPERAND_NUM_COMPONENTS_MASK 0x00000003
757
758// DECODER MACRO: Extract from OperandToken0 how many components
759// the data vector referred to by the operand contains.
760// (D3D10_SB_OPERAND_NUM_COMPONENTS enum)
761#define DECODE_D3D10_SB_OPERAND_NUM_COMPONENTS(OperandToken0) ((D3D10_SB_OPERAND_NUM_COMPONENTS)((OperandToken0)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK))
762
763// ENCODER MACRO: Define in OperandToken0 how many components
764// the data vector referred to by the operand contains.
765// (D3D10_SB_OPERAND_NUM_COMPONENTS enum).
766#define ENCODE_D3D10_SB_OPERAND_NUM_COMPONENTS(NumComp) ((NumComp)&D3D10_SB_OPERAND_NUM_COMPONENTS_MASK)
767
768typedef enum D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
769{
770 D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE = 0, // mask 4 components
771 D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE = 1, // swizzle 4 components
772 D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE = 2, // select 1 of 4 components
773} D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE;
774
775#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK 0x0000000c
776#define D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT 2
777
778// DECODER MACRO: For an operand representing 4component data,
779// extract from OperandToken0 the method for selecting data from
780// the 4 components (D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE).
781#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(OperandToken0) ((D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT))
782
783// ENCODER MACRO: For an operand representing 4component data,
784// encode in OperandToken0 a value from D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE
785#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE(SelectionMode) (((SelectionMode)<<D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECTION_MODE_MASK)
786
787typedef enum D3D10_SB_4_COMPONENT_NAME
788{
789 D3D10_SB_4_COMPONENT_X = 0,
790 D3D10_SB_4_COMPONENT_Y = 1,
791 D3D10_SB_4_COMPONENT_Z = 2,
792 D3D10_SB_4_COMPONENT_W = 3,
793 D3D10_SB_4_COMPONENT_R = 0,
794 D3D10_SB_4_COMPONENT_G = 1,
795 D3D10_SB_4_COMPONENT_B = 2,
796 D3D10_SB_4_COMPONENT_A = 3
797} D3D10_SB_4_COMPONENT_NAME;
798#define D3D10_SB_4_COMPONENT_NAME_MASK 3
799
800// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE:
801
802#define D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK 0x000000f0
803#define D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT 4
804#define D3D10_SB_OPERAND_4_COMPONENT_MASK_X 0x00000010
805#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Y 0x00000020
806#define D3D10_SB_OPERAND_4_COMPONENT_MASK_Z 0x00000040
807#define D3D10_SB_OPERAND_4_COMPONENT_MASK_W 0x00000080
808#define D3D10_SB_OPERAND_4_COMPONENT_MASK_R D3D10_SB_OPERAND_4_COMPONENT_MASK_X
809#define D3D10_SB_OPERAND_4_COMPONENT_MASK_G D3D10_SB_OPERAND_4_COMPONENT_MASK_Y
810#define D3D10_SB_OPERAND_4_COMPONENT_MASK_B D3D10_SB_OPERAND_4_COMPONENT_MASK_Z
811#define D3D10_SB_OPERAND_4_COMPONENT_MASK_A D3D10_SB_OPERAND_4_COMPONENT_MASK_W
812#define D3D10_SB_OPERAND_4_COMPONENT_MASK_ALL D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK
813
814// DECODER MACRO: When 4 component selection mode is
815// D3D10_SB_OPERAND_4_COMPONENT_MASK_MODE, this macro
816// extracts from OperandToken0 the 4 component (xyzw) mask,
817// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
818// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
819// can be tested on OperandToken0 directly, without this macro.
820#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
821
822// ENCODER MACRO: Given a set of
823// D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] values
824// or'd together, encode them in OperandToken0.
825#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentMask) ((ComponentMask)&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
826
827// ENCODER/DECODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME,
828// generate the 4-component mask for it.
829// This can be used in loops that build masks or read masks.
830// Alternatively, the D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] masks
831// can be used directly, without this macro.
832#define D3D10_SB_OPERAND_4_COMPONENT_MASK(ComponentName) ((1<<(D3D10_SB_OPERAND_4_COMPONENT_MASK_SHIFT+ComponentName))&D3D10_SB_OPERAND_4_COMPONENT_MASK_MASK)
833
834// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE:
835
836#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK 0x00000ff0
837#define D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT 4
838
839// DECODER MACRO: When 4 component selection mode is
840// D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MODE, this macro
841// extracts from OperandToken0 the 4 component swizzle,
842// as a field of D3D10_SB_OPERAND_4_COMPONENT_MASK_[X|Y|Z|W] flags.
843#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(OperandToken0) ((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_MASK)
844
845// DECODER MACRO: Pass a D3D10_SB_4_COMPONENT_NAME as "DestComp" in following
846// macro to extract, from OperandToken0 or from a decoded swizzle,
847// the swizzle source component (D3D10_SB_4_COMPONENT_NAME enum):
848#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SOURCE(OperandToken0,DestComp) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)>>(D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT+2*((DestComp)&D3D10_SB_4_COMPONENT_NAME_MASK)))&D3D10_SB_4_COMPONENT_NAME_MASK))
849
850// ENCODER MACRO: Generate a 4 component swizzle given
851// 4 D3D10_SB_4_COMPONENT_NAME source values for dest
852// components x, y, z, w respectively.
853#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(XSrc,YSrc,ZSrc,WSrc) ((((XSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)| \
854 (((YSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<2)| \
855 (((ZSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<4)| \
856 (((WSrc)&D3D10_SB_4_COMPONENT_NAME_MASK)<<6) \
857 )<<D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE_SHIFT)
858
859// ENCODER/DECODER MACROS: Various common swizzle patterns
860// (noswizzle and replicate of each channels)
861#define D3D10_SB_OPERAND_4_COMPONENT_NOSWIZZLE ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
862 D3D10_SB_4_COMPONENT_Y,\
863 D3D10_SB_4_COMPONENT_Z,\
864 D3D10_SB_4_COMPONENT_W)
865
866#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_X,\
867 D3D10_SB_4_COMPONENT_X,\
868 D3D10_SB_4_COMPONENT_X,\
869 D3D10_SB_4_COMPONENT_X)
870
871#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Y,\
872 D3D10_SB_4_COMPONENT_Y,\
873 D3D10_SB_4_COMPONENT_Y,\
874 D3D10_SB_4_COMPONENT_Y)
875
876#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_Z,\
877 D3D10_SB_4_COMPONENT_Z,\
878 D3D10_SB_4_COMPONENT_Z,\
879 D3D10_SB_4_COMPONENT_Z)
880
881#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SWIZZLE(D3D10_SB_4_COMPONENT_W,\
882 D3D10_SB_4_COMPONENT_W,\
883 D3D10_SB_4_COMPONENT_W,\
884 D3D10_SB_4_COMPONENT_W)
885
886#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATERED D3D10_SB_OPERAND_4_COMPONENT_REPLICATEX
887#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEGREEN D3D10_SB_OPERAND_4_COMPONENT_REPLICATEY
888#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEBLUE D3D10_SB_OPERAND_4_COMPONENT_REPLICATEZ
889#define D3D10_SB_OPERAND_4_COMPONENT_REPLICATEALPHA D3D10_SB_OPERAND_4_COMPONENT_REPLICATEW
890
891// MACROS FOR USE IN D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE:
892#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK 0x00000030
893#define D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT 4
894
895// DECODER MACRO: When 4 component selection mode is
896// D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE, this macro
897// extracts from OperandToken0 a D3D10_SB_4_COMPONENT_NAME
898// which picks one of the 4 components.
899#define DECODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(OperandToken0) ((D3D10_SB_4_COMPONENT_NAME)(((OperandToken0)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)>>D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT))
900
901// ENCODER MACRO: Given a D3D10_SB_4_COMPONENT_NAME selecting
902// a single component for D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MODE,
903// encode it into OperandToken0
904#define ENCODE_D3D10_SB_OPERAND_4_COMPONENT_SELECT_1(SelectedComp) (((SelectedComp)<<D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_SHIFT)&D3D10_SB_OPERAND_4_COMPONENT_SELECT_1_MASK)
905
906// MACROS FOR DETERMINING OPERAND TYPE:
907
908typedef enum D3D10_SB_OPERAND_TYPE
909{
910 D3D10_SB_OPERAND_TYPE_TEMP = 0, // Temporary Register File
911 D3D10_SB_OPERAND_TYPE_INPUT = 1, // General Input Register File
912 D3D10_SB_OPERAND_TYPE_OUTPUT = 2, // General Output Register File
913 D3D10_SB_OPERAND_TYPE_INDEXABLE_TEMP = 3, // Temporary Register File (indexable)
914 D3D10_SB_OPERAND_TYPE_IMMEDIATE32 = 4, // 32bit/component immediate value(s)
915 // If for example, operand token bits
916 // [01:00]==D3D10_SB_OPERAND_4_COMPONENT,
917 // this means that the operand type:
918 // D3D10_SB_OPERAND_TYPE_IMMEDIATE32
919 // results in 4 additional 32bit
920 // DWORDS present for the operand.
921 D3D10_SB_OPERAND_TYPE_IMMEDIATE64 = 5, // 64bit/comp.imm.val(s)HI:LO
922 D3D10_SB_OPERAND_TYPE_SAMPLER = 6, // Reference to sampler state
923 D3D10_SB_OPERAND_TYPE_RESOURCE = 7, // Reference to memory resource (e.g. texture)
924 D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER= 8, // Reference to constant buffer
925 D3D10_SB_OPERAND_TYPE_IMMEDIATE_CONSTANT_BUFFER= 9, // Reference to immediate constant buffer
926 D3D10_SB_OPERAND_TYPE_LABEL = 10, // Label
927 D3D10_SB_OPERAND_TYPE_INPUT_PRIMITIVEID = 11, // Input primitive ID
928 D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH = 12, // Output Depth
929 D3D10_SB_OPERAND_TYPE_NULL = 13, // Null register, used to discard results of operations
930 // Below Are operands new in DX 10.1
931 D3D10_SB_OPERAND_TYPE_RASTERIZER = 14, // DX10.1 Rasterizer register, used to denote the depth/stencil and render target resources
932 D3D10_SB_OPERAND_TYPE_OUTPUT_COVERAGE_MASK = 15, // DX10.1 PS output MSAA coverage mask (scalar)
933 // Below Are operands new in DX 11
934 D3D11_SB_OPERAND_TYPE_STREAM = 16, // Reference to GS stream output resource
935 D3D11_SB_OPERAND_TYPE_FUNCTION_BODY = 17, // Reference to a function definition
936 D3D11_SB_OPERAND_TYPE_FUNCTION_TABLE = 18, // Reference to a set of functions used by a class
937 D3D11_SB_OPERAND_TYPE_INTERFACE = 19, // Reference to an interface
938 D3D11_SB_OPERAND_TYPE_FUNCTION_INPUT = 20, // Reference to an input parameter to a function
939 D3D11_SB_OPERAND_TYPE_FUNCTION_OUTPUT = 21, // Reference to an output parameter to a function
940 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT_ID = 22, // HS Control Point phase input saying which output control point ID this is
941 D3D11_SB_OPERAND_TYPE_INPUT_FORK_INSTANCE_ID = 23, // HS Fork Phase input instance ID
942 D3D11_SB_OPERAND_TYPE_INPUT_JOIN_INSTANCE_ID = 24, // HS Join Phase input instance ID
943 D3D11_SB_OPERAND_TYPE_INPUT_CONTROL_POINT = 25, // HS Fork+Join, DS phase input control points (array of them)
944 D3D11_SB_OPERAND_TYPE_OUTPUT_CONTROL_POINT = 26, // HS Fork+Join phase output control points (array of them)
945 D3D11_SB_OPERAND_TYPE_INPUT_PATCH_CONSTANT = 27, // DS+HSJoin Input Patch Constants (array of them)
946 D3D11_SB_OPERAND_TYPE_INPUT_DOMAIN_POINT = 28, // DS Input Domain point
947 D3D11_SB_OPERAND_TYPE_THIS_POINTER = 29, // Reference to an interface this pointer
948 D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW = 30, // Reference to UAV u#
949 D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY = 31, // Reference to Thread Group Shared Memory g#
950 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID = 32, // Compute Shader Thread ID
951 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_GROUP_ID = 33, // Compute Shader Thread Group ID
952 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP = 34, // Compute Shader Thread ID In Thread Group
953 D3D11_SB_OPERAND_TYPE_INPUT_COVERAGE_MASK = 35, // Pixel shader coverage mask input
954 D3D11_SB_OPERAND_TYPE_INPUT_THREAD_ID_IN_GROUP_FLATTENED = 36, // Compute Shader Thread ID In Group Flattened to a 1D value.
955 D3D11_SB_OPERAND_TYPE_INPUT_GS_INSTANCE_ID = 37, // Input GS instance ID
956 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL = 38, // Output Depth, forced to be greater than or equal than current depth
957 D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL = 39, // Output Depth, forced to be less than or equal to current depth
958 D3D11_SB_OPERAND_TYPE_CYCLE_COUNTER = 40, // Cycle counter
959 D3D11_SB_OPERAND_TYPE_OUTPUT_STENCIL_REF = 41, // DX11 PS output stencil reference (scalar)
960 D3D11_SB_OPERAND_TYPE_INNER_COVERAGE = 42, // DX11 PS input inner coverage (scalar)
961} D3D10_SB_OPERAND_TYPE;
962
963#define D3D10_SB_OPERAND_TYPE_MASK 0x000ff000
964#define D3D10_SB_OPERAND_TYPE_SHIFT 12
965
966// DECODER MACRO: Determine operand type from OperandToken0.
967#define DECODE_D3D10_SB_OPERAND_TYPE(OperandToken0) ((D3D10_SB_OPERAND_TYPE)(((OperandToken0)&D3D10_SB_OPERAND_TYPE_MASK)>>D3D10_SB_OPERAND_TYPE_SHIFT))
968
969// ENCODER MACRO: Store operand type in OperandToken0.
970#define ENCODE_D3D10_SB_OPERAND_TYPE(OperandType) (((OperandType)<<D3D10_SB_OPERAND_TYPE_SHIFT)&D3D10_SB_OPERAND_TYPE_MASK)
971
972typedef enum D3D10_SB_OPERAND_INDEX_DIMENSION
973{
974 D3D10_SB_OPERAND_INDEX_0D = 0, // e.g. Position
975 D3D10_SB_OPERAND_INDEX_1D = 1, // Most common. e.g. Temp registers.
976 D3D10_SB_OPERAND_INDEX_2D = 2, // e.g. Geometry Program Input registers.
977 D3D10_SB_OPERAND_INDEX_3D = 3, // 3D rarely if ever used.
978} D3D10_SB_OPERAND_INDEX_DIMENSION;
979#define D3D10_SB_OPERAND_INDEX_DIMENSION_MASK 0x00300000
980#define D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT 20
981
982// DECODER MACRO: Determine operand index dimension from OperandToken0.
983#define DECODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandToken0) ((D3D10_SB_OPERAND_INDEX_DIMENSION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)>>D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT))
984
985// ENCODER MACRO: Store operand index dimension
986// (D3D10_SB_OPERAND_INDEX_DIMENSION enum) in OperandToken0.
987#define ENCODE_D3D10_SB_OPERAND_INDEX_DIMENSION(OperandIndexDim) (((OperandIndexDim)<<D3D10_SB_OPERAND_INDEX_DIMENSION_SHIFT)&D3D10_SB_OPERAND_INDEX_DIMENSION_MASK)
988
989typedef enum D3D10_SB_OPERAND_INDEX_REPRESENTATION
990{
991 D3D10_SB_OPERAND_INDEX_IMMEDIATE32 = 0, // Extra DWORD
992 D3D10_SB_OPERAND_INDEX_IMMEDIATE64 = 1, // 2 Extra DWORDs
993 // (HI32:LO32)
994 D3D10_SB_OPERAND_INDEX_RELATIVE = 2, // Extra operand
995 D3D10_SB_OPERAND_INDEX_IMMEDIATE32_PLUS_RELATIVE = 3, // Extra DWORD followed by
996 // extra operand
997 D3D10_SB_OPERAND_INDEX_IMMEDIATE64_PLUS_RELATIVE = 4, // 2 Extra DWORDS
998 // (HI32:LO32) followed
999 // by extra operand
1000} D3D10_SB_OPERAND_INDEX_REPRESENTATION;
1001#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim) (22+3*((Dim)&3))
1002#define D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim) (0x3<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))
1003
1004// DECODER MACRO: Determine from OperandToken0 what representation
1005// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1006// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1007#define DECODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,OperandToken0) ((D3D10_SB_OPERAND_INDEX_REPRESENTATION)(((OperandToken0)&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))>>D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim)))
1008
1009// ENCODER MACRO: Store in OperandToken0 what representation
1010// an operand index is provided as (D3D10_SB_OPERAND_INDEX_REPRESENTATION enum),
1011// for index dimension [0], [1] or [2], depending on D3D10_SB_OPERAND_INDEX_DIMENSION.
1012#define ENCODE_D3D10_SB_OPERAND_INDEX_REPRESENTATION(Dim,IndexRepresentation) (((IndexRepresentation)<<D3D10_SB_OPERAND_INDEX_REPRESENTATION_SHIFT(Dim))&D3D10_SB_OPERAND_INDEX_REPRESENTATION_MASK(Dim))
1013
1014#define D3D10_SB_OPERAND_EXTENDED_MASK 0x80000000
1015#define D3D10_SB_OPERAND_EXTENDED_SHIFT 31
1016
1017// DECODER MACRO: Determine if the operand is extended
1018// by an additional opcode token.
1019#define DECODE_IS_D3D10_SB_OPERAND_EXTENDED(OperandToken0) (((OperandToken0)&D3D10_SB_OPERAND_EXTENDED_MASK)>>D3D10_SB_OPERAND_EXTENDED_SHIFT)
1020
1021// ENCODER MACRO: Store in OperandToken0 whether the operand is extended
1022// by an additional operand token.
1023#define ENCODE_D3D10_SB_OPERAND_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_EXTENDED_MASK:0)
1024
1025// ----------------------------------------------------------------------------
1026// Extended Instruction Operand Format (OperandToken1)
1027//
1028// If bit31 of an operand token is set, the
1029// operand has additional data in a second DWORD
1030// directly following OperandToken0. Other tokens
1031// expected for the operand, such as immmediate
1032// values or relative address operands (full
1033// operands in themselves) always follow
1034// OperandToken0 AND OperandToken1..n (extended
1035// operand tokens, if present).
1036//
1037// [05:00] D3D10_SB_EXTENDED_OPERAND_TYPE
1038// [16:06] if([05:00] == D3D10_SB_EXTENDED_OPERAND_MODIFIER)
1039// {
1040// [13:06] D3D10_SB_OPERAND_MODIFIER
1041// [16:14] Min Precision: D3D11_SB_OPERAND_MIN_PRECISION
1042// [17:17] Non-uniform: D3D12_SB_OPERAND_NON_UNIFORM
1043// }
1044// else
1045// {
1046// [17:06] Ignored, 0.
1047// }
1048// [30:18] Ignored, 0.
1049// [31] 0 normally. 1 if second order extended operand definition,
1050// meaning next DWORD contains yet ANOTHER extended operand
1051// description. Currently no second order extensions defined.
1052// This would be useful if a particular extended operand does
1053// not have enough space to store the required information in
1054// a single token and so is extended further.
1055//
1056// ----------------------------------------------------------------------------
1057
1058typedef enum D3D10_SB_EXTENDED_OPERAND_TYPE
1059{
1060 D3D10_SB_EXTENDED_OPERAND_EMPTY = 0, // Might be used if this
1061 // enum is full and
1062 // further extended opcode
1063 // is needed.
1064 D3D10_SB_EXTENDED_OPERAND_MODIFIER = 1,
1065} D3D10_SB_EXTENDED_OPERAND_TYPE;
1066#define D3D10_SB_EXTENDED_OPERAND_TYPE_MASK 0x0000003f
1067
1068// DECODER MACRO: Given an extended operand
1069// token (OperandToken1), figure out what type
1070// of token it is (from D3D10_SB_EXTENDED_OPERAND_TYPE enum)
1071// to be able to interpret the rest of the token's contents.
1072#define DECODE_D3D10_SB_EXTENDED_OPERAND_TYPE(OperandToken1) ((D3D10_SB_EXTENDED_OPERAND_TYPE)((OperandToken1)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK))
1073
1074// ENCODER MACRO: Store extended operand token
1075// type in OperandToken1.
1076#define ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(ExtOperandType) ((ExtOperandType)&D3D10_SB_EXTENDED_OPERAND_TYPE_MASK)
1077
1078typedef enum D3D10_SB_OPERAND_MODIFIER
1079{
1080 D3D10_SB_OPERAND_MODIFIER_NONE = 0, // Nop. This is the implied
1081 // default if the extended
1082 // operand is not present for
1083 // an operand for which source
1084 // modifiers are meaningful
1085 D3D10_SB_OPERAND_MODIFIER_NEG = 1, // Negate
1086 D3D10_SB_OPERAND_MODIFIER_ABS = 2, // Absolute value, abs()
1087 D3D10_SB_OPERAND_MODIFIER_ABSNEG = 3, // -abs()
1088} D3D10_SB_OPERAND_MODIFIER;
1089#define D3D10_SB_OPERAND_MODIFIER_MASK 0x00003fc0
1090#define D3D10_SB_OPERAND_MODIFIER_SHIFT 6
1091
1092// DECODER MACRO: Given a D3D10_SB_EXTENDED_OPERAND_MODIFIER
1093// extended token (OperandToken1), determine the source modifier
1094// (D3D10_SB_OPERAND_MODIFIER enum)
1095#define DECODE_D3D10_SB_OPERAND_MODIFIER(OperandToken1) ((D3D10_SB_OPERAND_MODIFIER)(((OperandToken1)&D3D10_SB_OPERAND_MODIFIER_MASK)>>D3D10_SB_OPERAND_MODIFIER_SHIFT))
1096
1097// ENCODER MACRO: Generate a complete source modifier extended token
1098// (OperandToken1), given D3D10_SB_OPERAND_MODIFIER enum (the
1099// ext. operand type is also set to D3D10_SB_EXTENDED_OPERAND_MODIFIER).
1100#define ENCODE_D3D10_SB_EXTENDED_OPERAND_MODIFIER(SourceMod) ((((SourceMod)<<D3D10_SB_OPERAND_MODIFIER_SHIFT)&D3D10_SB_OPERAND_MODIFIER_MASK)| \
1101 ENCODE_D3D10_SB_EXTENDED_OPERAND_TYPE(D3D10_SB_EXTENDED_OPERAND_MODIFIER) | \
1102 ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(0))
1103
1104// Min precision specifier for source/dest operands. This
1105// fits in the extended operand token field. Implementations are free to
1106// execute at higher precision than the min - details spec'ed elsewhere.
1107// This is part of the opcode specific control range.
1108typedef enum D3D11_SB_OPERAND_MIN_PRECISION
1109{
1110 D3D11_SB_OPERAND_MIN_PRECISION_DEFAULT = 0, // Default precision
1111 // for the shader model
1112 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
1113 D3D11_SB_OPERAND_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
1114 D3D11_SB_OPERAND_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
1115 D3D11_SB_OPERAND_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
1116} D3D11_SB_OPERAND_MIN_PRECISION;
1117#define D3D11_SB_OPERAND_MIN_PRECISION_MASK 0x0001C000
1118#define D3D11_SB_OPERAND_MIN_PRECISION_SHIFT 14
1119
1120// DECODER MACRO: For an OperandToken1 that can specify
1121// a minimum precision for execution, find out what it is.
1122#define DECODE_D3D11_SB_OPERAND_MIN_PRECISION(OperandToken1) ((D3D11_SB_OPERAND_MIN_PRECISION)(((OperandToken1)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)>> D3D11_SB_OPERAND_MIN_PRECISION_SHIFT))
1123
1124// ENCODER MACRO: Encode minimum precision for execution
1125// into the extended operand token, OperandToken1
1126#define ENCODE_D3D11_SB_OPERAND_MIN_PRECISION(MinPrecision) (((MinPrecision)<< D3D11_SB_OPERAND_MIN_PRECISION_SHIFT)& D3D11_SB_OPERAND_MIN_PRECISION_MASK)
1127
1128
1129// Non-uniform extended operand modifier.
1130#define D3D12_SB_OPERAND_NON_UNIFORM_MASK 0x00020000
1131#define D3D12_SB_OPERAND_NON_UNIFORM_SHIFT 17
1132
1133// DECODER MACRO: For an OperandToken1 that can specify a non-uniform operand
1134#define DECODE_D3D12_SB_OPERAND_NON_UNIFORM(OperandToken1) (((OperandToken1)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)>> D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)
1135
1136// ENCODER MACRO: Encode non-uniform state into the extended operand token, OperandToken1
1137#define ENCODE_D3D12_SB_OPERAND_NON_UNIFORM(NonUniform) (((NonUniform)<< D3D12_SB_OPERAND_NON_UNIFORM_SHIFT)& D3D12_SB_OPERAND_NON_UNIFORM_MASK)
1138
1139
1140#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK 0x80000000
1141#define D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT 31
1142// DECODER MACRO: Determine if an extended operand token
1143// (OperandToken1) is further extended by yet another token
1144// (OperandToken2). Currently there are no secondary
1145// extended operand tokens.
1146#define DECODE_IS_D3D10_SB_OPERAND_DOUBLE_EXTENDED(OperandToken1) (((OperandToken1)&D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK)>>D3D10_SB_OPERAND_DOUBLE_EXTENDED_SHIFT)
1147
1148// ENCODER MACRO: Store in OperandToken1 whether the operand is extended
1149// by an additional operand token. Currently there are no secondary
1150// extended operand tokens.
1151#define ENCODE_D3D10_SB_OPERAND_DOUBLE_EXTENDED(bExtended) (((bExtended)!=0)?D3D10_SB_OPERAND_DOUBLE_EXTENDED_MASK:0)
1152
1153// ----------------------------------------------------------------------------
1154// Name Token (NameToken) (used in declaration statements)
1155//
1156// [15:00] D3D10_SB_NAME enumeration
1157// [31:16] Reserved, 0
1158//
1159// ----------------------------------------------------------------------------
1160#define D3D10_SB_NAME_MASK 0x0000ffff
1161
1162// DECODER MACRO: Get the name from NameToken
1163#define DECODE_D3D10_SB_NAME(NameToken) ((D3D10_SB_NAME)((NameToken)&D3D10_SB_NAME_MASK))
1164
1165// ENCODER MACRO: Generate a complete NameToken given a D3D10_SB_NAME
1166#define ENCODE_D3D10_SB_NAME(Name) ((Name)&D3D10_SB_NAME_MASK)
1167
1168//---------------------------------------------------------------------
1169// Declaration Statements
1170//
1171// Declarations start with a standard opcode token,
1172// having opcode type being D3D10_SB_OPCODE_DCL*.
1173// Each particular declaration type has custom
1174// operand token(s), described below.
1175//---------------------------------------------------------------------
1176
1177// ----------------------------------------------------------------------------
1178// Global Flags Declaration
1179//
1180// OpcodeToken0:
1181//
1182// [10:00] D3D10_SB_OPCODE_DCL_GLOBAL_FLAGS
1183// [11:11] Refactoring allowed if bit set.
1184// [12:12] Enable double precision float ops.
1185// [13:13] Force early depth-stencil test.
1186// [14:14] Enable RAW and structured buffers in non-CS 4.x shaders.
1187// [15:15] Skip optimizations of shader IL when translating to native code
1188// [16:16] Enable minimum-precision data types
1189// [17:17] Enable 11.1 double-precision floating-point instruction extensions
1190// [18:18] Enable 11.1 non-double instruction extensions
1191// [23:19] Reserved for future flags.
1192// [30:24] Instruction length in DWORDs including the opcode token. == 1
1193// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1194// contains extended operand description. This dcl is currently not
1195// extended.
1196//
1197// OpcodeToken0 is followed by no operands.
1198//
1199// ----------------------------------------------------------------------------
1200#define D3D10_SB_GLOBAL_FLAG_REFACTORING_ALLOWED (1<<11)
1201#define D3D11_SB_GLOBAL_FLAG_ENABLE_DOUBLE_PRECISION_FLOAT_OPS (1<<12)
1202#define D3D11_SB_GLOBAL_FLAG_FORCE_EARLY_DEPTH_STENCIL (1<<13)
1203#define D3D11_SB_GLOBAL_FLAG_ENABLE_RAW_AND_STRUCTURED_BUFFERS (1<<14)
1204#define D3D11_1_SB_GLOBAL_FLAG_SKIP_OPTIMIZATION (1<<15)
1205#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_MINIMUM_PRECISION (1<<16)
1206#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_DOUBLE_EXTENSIONS (1<<17)
1207#define D3D11_1_SB_GLOBAL_FLAG_ENABLE_SHADER_EXTENSIONS (1<<18)
1208#define D3D12_SB_GLOBAL_FLAG_ALL_RESOURCES_BOUND (1<<19)
1209
1210#define D3D10_SB_GLOBAL_FLAGS_MASK 0x00fff800
1211
1212// DECODER MACRO: Get global flags
1213#define DECODE_D3D10_SB_GLOBAL_FLAGS(OpcodeToken0) ((OpcodeToken0)&D3D10_SB_GLOBAL_FLAGS_MASK)
1214
1215// ENCODER MACRO: Encode global flags
1216#define ENCODE_D3D10_SB_GLOBAL_FLAGS(Flags) ((Flags)&D3D10_SB_GLOBAL_FLAGS_MASK)
1217
1218// ----------------------------------------------------------------------------
1219// Resource Declaration (non multisampled)
1220//
1221// OpcodeToken0:
1222//
1223// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE
1224// [15:11] D3D10_SB_RESOURCE_DIMENSION
1225// [23:16] Ignored, 0
1226// [30:24] Instruction length in DWORDs including the opcode token.
1227// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1228// contains extended operand description. This dcl is currently not
1229// extended.
1230//
1231// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1232// (1) an operand, starting with OperandToken0, defining which
1233// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1234// (2) a Resource Return Type token (ResourceReturnTypeToken)
1235//
1236// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1237// (1) an operand, starting with OperandToken0, defining which
1238// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1239// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1240// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1241// 1 <id>: variable ID being declared
1242// 2 <lbound>: the lower bound of the range of resources in the space
1243// 3 <ubound>: the upper bound (inclusive) of this range
1244// As opposed to when the t# is used in shader instructions, where the register
1245// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1246// dimensions are as follows: (t<id>[<idx>]):
1247// 1 <id>: variable ID being used (matches dcl)
1248// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1249// (2) a Resource Return Type token (ResourceReturnTypeToken)
1250// (3) a DWORD indicating the space index.
1251//
1252// ----------------------------------------------------------------------------
1253#define D3D10_SB_RESOURCE_DIMENSION_MASK 0x0000F800
1254#define D3D10_SB_RESOURCE_DIMENSION_SHIFT 11
1255
1256// DECODER MACRO: Given a resource declaration token,
1257// (OpcodeToken0), determine the resource dimension
1258// (D3D10_SB_RESOURCE_DIMENSION enum)
1259#define DECODE_D3D10_SB_RESOURCE_DIMENSION(OpcodeToken0) ((D3D10_SB_RESOURCE_DIMENSION)(((OpcodeToken0)&D3D10_SB_RESOURCE_DIMENSION_MASK)>>D3D10_SB_RESOURCE_DIMENSION_SHIFT))
1260
1261// ENCODER MACRO: Store resource dimension
1262// (D3D10_SB_RESOURCE_DIMENSION enum) into a
1263// a resource declaration token (OpcodeToken0)
1264#define ENCODE_D3D10_SB_RESOURCE_DIMENSION(ResourceDim) (((ResourceDim)<<D3D10_SB_RESOURCE_DIMENSION_SHIFT)&D3D10_SB_RESOURCE_DIMENSION_MASK)
1265
1266// ----------------------------------------------------------------------------
1267// Resource Declaration (multisampled)
1268//
1269// OpcodeToken0:
1270//
1271// [10:00] D3D10_SB_OPCODE_DCL_RESOURCE (same opcode as non-multisampled case)
1272// [15:11] D3D10_SB_RESOURCE_DIMENSION (must be TEXTURE2DMS or TEXTURE2DMSARRAY)
1273// [22:16] Sample count 1...127. 0 is currently disallowed, though
1274// in future versions 0 could mean "configurable" sample count
1275// [23:23] Ignored, 0
1276// [30:24] Instruction length in DWORDs including the opcode token.
1277// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1278// contains extended operand description. This dcl is currently not
1279// extended.
1280//
1281// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
1282// (1) an operand, starting with OperandToken0, defining which
1283// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1284// (2) a Resource Return Type token (ResourceReturnTypeToken)
1285//
1286// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1287// (1) an operand, starting with OperandToken0, defining which
1288// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
1289// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1290// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
1291// 1 <id>: variable ID being declared
1292// 2 <lbound>: the lower bound of the range of resources in the space
1293// 3 <ubound>: the upper bound (inclusive) of this range
1294// As opposed to when the t# is used in shader instructions, where the register
1295// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1296// dimensions are as follows: (t<id>[<idx>]):
1297// 1 <id>: variable ID being used (matches dcl)
1298// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
1299// (2) a Resource Return Type token (ResourceReturnTypeToken)
1300// (3) a DWORD indicating the space index.
1301//
1302// ----------------------------------------------------------------------------
1303
1304// use same macro for encoding/decoding resource dimension aas the non-msaa declaration
1305
1306#define D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK 0x07F0000
1307#define D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT 16
1308
1309// DECODER MACRO: Given a resource declaration token,
1310// (OpcodeToken0), determine the resource sample count (1..127)
1311#define DECODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)>>D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT))
1312
1313// ENCODER MACRO: Store resource sample count up to 127 into a
1314// a resource declaration token (OpcodeToken0)
1315#define ENCODE_D3D10_SB_RESOURCE_SAMPLE_COUNT(SampleCount) (((SampleCount > 127 ? 127 : SampleCount)<<D3D10_SB_RESOURCE_SAMPLE_COUNT_SHIFT)&D3D10_SB_RESOURCE_SAMPLE_COUNT_MASK)
1316
1317// ----------------------------------------------------------------------------
1318// Resource Return Type Token (ResourceReturnTypeToken) (used in resource
1319// declaration statements)
1320//
1321// [03:00] D3D10_SB_RESOURCE_RETURN_TYPE for component X
1322// [07:04] D3D10_SB_RESOURCE_RETURN_TYPE for component Y
1323// [11:08] D3D10_SB_RESOURCE_RETURN_TYPE for component Z
1324// [15:12] D3D10_SB_RESOURCE_RETURN_TYPE for component W
1325// [31:16] Reserved, 0
1326//
1327// ----------------------------------------------------------------------------
1328// DECODER MACRO: Get the resource return type for component (0-3) from
1329// ResourceReturnTypeToken
1330#define DECODE_D3D10_SB_RESOURCE_RETURN_TYPE(ResourceReturnTypeToken, Component) \
1331 ((D3D10_SB_RESOURCE_RETURN_TYPE)(((ResourceReturnTypeToken) >> \
1332 (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))&D3D10_SB_RESOURCE_RETURN_TYPE_MASK))
1333
1334// ENCODER MACRO: Generate a resource return type for a component
1335#define ENCODE_D3D10_SB_RESOURCE_RETURN_TYPE(ReturnType, Component) \
1336 (((ReturnType)&D3D10_SB_RESOURCE_RETURN_TYPE_MASK) << (Component * D3D10_SB_RESOURCE_RETURN_TYPE_NUMBITS))
1337
1338// ----------------------------------------------------------------------------
1339// Sampler Declaration
1340//
1341// OpcodeToken0:
1342//
1343// [10:00] D3D10_SB_OPCODE_DCL_SAMPLER
1344// [14:11] D3D10_SB_SAMPLER_MODE
1345// [23:15] Ignored, 0
1346// [30:24] Instruction length in DWORDs including the opcode token.
1347// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1348// contains extended operand description. This dcl is currently not
1349// extended.
1350//
1351// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
1352// (1) Operand starting with OperandToken0, defining which sampler
1353// (D3D10_SB_OPERAND_TYPE_SAMPLER) register # is being declared.
1354//
1355// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
1356// (1) an operand, starting with OperandToken0, defining which
1357// s# register (D3D10_SB_OPERAND_TYPE_SAMPLER) is being declared.
1358// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1359// and the meaning of the index dimensions are as follows: (s<id>[<lbound>:<ubound>])
1360// 1 <id>: variable ID being declared
1361// 2 <lbound>: the lower bound of the range of samplers in the space
1362// 3 <ubound>: the upper bound (inclusive) of this range
1363// As opposed to when the s# is used in shader instructions, where the register
1364// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
1365// dimensions are as follows: (s<id>[<idx>]):
1366// 1 <id>: variable ID being used (matches dcl)
1367// 2 <idx>: absolute index of sampler within space (may be dynamically indexed)
1368// (2) a DWORD indicating the space index.
1369//
1370// ----------------------------------------------------------------------------
1371typedef enum D3D10_SB_SAMPLER_MODE
1372{
1373 D3D10_SB_SAMPLER_MODE_DEFAULT = 0,
1374 D3D10_SB_SAMPLER_MODE_COMPARISON = 1,
1375 D3D10_SB_SAMPLER_MODE_MONO = 2,
1376} D3D10_SB_SAMPLER_MODE;
1377
1378#define D3D10_SB_SAMPLER_MODE_MASK 0x00007800
1379#define D3D10_SB_SAMPLER_MODE_SHIFT 11
1380
1381// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1382#define DECODE_D3D10_SB_SAMPLER_MODE(OpcodeToken0) ((D3D10_SB_SAMPLER_MODE)(((OpcodeToken0)&D3D10_SB_SAMPLER_MODE_MASK)>>D3D10_SB_SAMPLER_MODE_SHIFT))
1383
1384// ENCODER MACRO: Generate a resource return type for a component
1385#define ENCODE_D3D10_SB_SAMPLER_MODE(SamplerMode) (((SamplerMode)<<D3D10_SB_SAMPLER_MODE_SHIFT)&D3D10_SB_SAMPLER_MODE_MASK)
1386
1387// ----------------------------------------------------------------------------
1388// Input Register Declaration (see separate declarations for Pixel Shaders)
1389//
1390// OpcodeToken0:
1391//
1392// [10:00] D3D10_SB_OPCODE_DCL_INPUT
1393// [23:11] Ignored, 0
1394// [30:24] Instruction length in DWORDs including the opcode token.
1395// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1396// contains extended operand description. This dcl is currently not
1397// extended.
1398//
1399// OpcodeToken0 is followed by 1 operand:
1400// (1) Operand, starting with OperandToken0, defining which input
1401// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1402// including writemask.
1403//
1404// ----------------------------------------------------------------------------
1405
1406// ----------------------------------------------------------------------------
1407// Input Register Declaration w/System Interpreted Value
1408// (see separate declarations for Pixel Shaders)
1409//
1410// OpcodeToken0:
1411//
1412// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SIV
1413// [23:11] Ignored, 0
1414// [30:24] Instruction length in DWORDs including the opcode token.
1415// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1416// contains extended operand description. This dcl is currently not
1417// extended.
1418//
1419// OpcodeToken0 is followed by 2 operands:
1420// (1) Operand, starting with OperandToken0, defining which input
1421// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1422// including writemask. For Geometry Shaders, the input is
1423// v[vertex][attribute], and this declaration is only for which register
1424// on the attribute axis is being declared. The vertex axis value must
1425// be equal to the # of vertices in the current input primitive for the GS
1426// (i.e. 6 for triangle + adjacency).
1427// (2) a System Interpreted Value Name (NameToken)
1428//
1429// ----------------------------------------------------------------------------
1430
1431// ----------------------------------------------------------------------------
1432// Input Register Declaration w/System Generated Value
1433// (available for all shaders incl. Pixel Shader, no interpolation mode needed)
1434//
1435// OpcodeToken0:
1436//
1437// [10:00] D3D10_SB_OPCODE_DCL_INPUT_SGV
1438// [23:11] Ignored, 0
1439// [30:24] Instruction length in DWORDs including the opcode token.
1440// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1441// contains extended operand description. This dcl is currently not
1442// extended.
1443//
1444// OpcodeToken0 is followed by 2 operands:
1445// (1) Operand, starting with OperandToken0, defining which input
1446// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1447// including writemask.
1448// (2) a System Generated Value Name (NameToken)
1449//
1450// ----------------------------------------------------------------------------
1451
1452// ----------------------------------------------------------------------------
1453// Pixel Shader Input Register Declaration
1454//
1455// OpcodeToken0:
1456//
1457// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS
1458// [14:11] D3D10_SB_INTERPOLATION_MODE
1459// [23:15] Ignored, 0
1460// [30:24] Instruction length in DWORDs including the opcode token.
1461// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1462// contains extended operand description. This dcl is currently not
1463// extended.
1464//
1465// OpcodeToken0 is followed by 1 operand:
1466// (1) Operand, starting with OperandToken0, defining which input
1467// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared,
1468// including writemask.
1469//
1470// ----------------------------------------------------------------------------
1471#define D3D10_SB_INPUT_INTERPOLATION_MODE_MASK 0x00007800
1472#define D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT 11
1473
1474// DECODER MACRO: Find out interpolation mode for the input register
1475#define DECODE_D3D10_SB_INPUT_INTERPOLATION_MODE(OpcodeToken0) ((D3D10_SB_INTERPOLATION_MODE)(((OpcodeToken0)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)>>D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT))
1476
1477// ENCODER MACRO: Encode interpolation mode for a register.
1478#define ENCODE_D3D10_SB_INPUT_INTERPOLATION_MODE(InterpolationMode) (((InterpolationMode)<<D3D10_SB_INPUT_INTERPOLATION_MODE_SHIFT)&D3D10_SB_INPUT_INTERPOLATION_MODE_MASK)
1479
1480// ----------------------------------------------------------------------------
1481// Pixel Shader Input Register Declaration w/System Interpreted Value
1482//
1483// OpcodeToken0:
1484//
1485// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SIV
1486// [14:11] D3D10_SB_INTERPOLATION_MODE
1487// [23:15] Ignored, 0
1488// [30:24] Instruction length in DWORDs including the opcode token.
1489// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1490// contains extended operand description. This dcl is currently not
1491// extended.
1492//
1493// OpcodeToken0 is followed by 2 operands:
1494// (1) Operand, starting with OperandToken0, defining which input
1495// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1496// (2) a System Interpreted Value Name (NameToken)
1497//
1498// ----------------------------------------------------------------------------
1499
1500// ----------------------------------------------------------------------------
1501// Pixel Shader Input Register Declaration w/System Generated Value
1502//
1503// OpcodeToken0:
1504//
1505// [10:00] D3D10_SB_OPCODE_DCL_INPUT_PS_SGV
1506// [23:11] Ignored, 0
1507// [30:24] Instruction length in DWORDs including the opcode token.
1508// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1509// contains extended operand description. This dcl is currently not
1510// extended.
1511//
1512// OpcodeToken0 is followed by 2 operands:
1513// (1) Operand, starting with OperandToken0, defining which input
1514// v# register (D3D10_SB_OPERAND_TYPE_INPUT) is being declared.
1515// (2) a System Generated Value Name (NameToken)
1516//
1517// ----------------------------------------------------------------------------
1518
1519// ----------------------------------------------------------------------------
1520// Output Register Declaration
1521//
1522// OpcodeToken0:
1523//
1524// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT
1525// [23:11] Ignored, 0
1526// [30:24] Instruction length in DWORDs including the opcode token.
1527// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1528// contains extended operand description. This dcl is currently not
1529// extended.
1530//
1531// OpcodeToken0 is followed by 1 operand:
1532// (1) Operand, starting with OperandToken0, defining which
1533// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1534// including writemask.
1535// (in Pixel Shader, output can also be one of
1536// D3D10_SB_OPERAND_TYPE_OUTPUT_DEPTH,
1537// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_GREATER_EQUAL, or
1538// D3D11_SB_OPERAND_TYPE_OUTPUT_DEPTH_LESS_EQUAL )
1539//
1540// ----------------------------------------------------------------------------
1541
1542// ----------------------------------------------------------------------------
1543// Output Register Declaration w/System Interpreted Value
1544//
1545// OpcodeToken0:
1546//
1547// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SIV
1548// [23:11] Ignored, 0
1549// [30:24] Instruction length in DWORDs including the opcode token.
1550// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1551// contains extended operand description. This dcl is currently not
1552// extended.
1553//
1554// OpcodeToken0 is followed by 2 operands:
1555// (1) an operand, starting with OperandToken0, defining which
1556// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1557// including writemask.
1558// (2) a System Interpreted Name token (NameToken)
1559//
1560// ----------------------------------------------------------------------------
1561
1562// ----------------------------------------------------------------------------
1563// Output Register Declaration w/System Generated Value
1564//
1565// OpcodeToken0:
1566//
1567// [10:00] D3D10_SB_OPCODE_DCL_OUTPUT_SGV
1568// [23:11] Ignored, 0
1569// [30:24] Instruction length in DWORDs including the opcode token.
1570// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1571// contains extended operand description. This dcl is currently not
1572// extended.
1573//
1574// OpcodeToken0 is followed by 2 operands:
1575// (1) an operand, starting with OperandToken0, defining which
1576// o# register (D3D10_SB_OPERAND_TYPE_OUTPUT) is being declared,
1577// including writemask.
1578// (2) a System Generated Name token (NameToken)
1579//
1580// ----------------------------------------------------------------------------
1581
1582
1583// ----------------------------------------------------------------------------
1584// Input or Output Register Indexing Range Declaration
1585//
1586// OpcodeToken0:
1587//
1588// [10:00] D3D10_SB_OPCODE_DCL_INDEX_RANGE
1589// [23:11] Ignored, 0
1590// [30:24] Instruction length in DWORDs including the opcode token.
1591// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1592// contains extended operand description. This dcl is currently not
1593// extended.
1594//
1595// OpcodeToken0 is followed by 2 operands:
1596// (1) an operand, starting with OperandToken0, defining which
1597// input (v#) or output (o#) register is having its array indexing range
1598// declared, including writemask. For Geometry Shader inputs,
1599// it is assumed that the vertex axis is always fully indexable,
1600// and 0 must be specified as the vertex# in this declaration, so that
1601// only the a range of attributes are having their index range defined.
1602//
1603// (2) a DWORD representing the count of registers starting from the one
1604// indicated in (1).
1605//
1606// ----------------------------------------------------------------------------
1607
1608// ----------------------------------------------------------------------------
1609// Temp Register Declaration r0...r(n-1)
1610//
1611// OpcodeToken0:
1612//
1613// [10:00] D3D10_SB_OPCODE_DCL_TEMPS
1614// [23:11] Ignored, 0
1615// [30:24] Instruction length in DWORDs including the opcode token.
1616// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1617// contains extended operand description. This dcl is currently not
1618// extended.
1619//
1620// OpcodeToken0 is followed by 1 operand:
1621// (1) DWORD (unsigned int) indicating how many temps are being declared.
1622// i.e. 5 means r0...r4 are declared.
1623//
1624// ----------------------------------------------------------------------------
1625
1626// ----------------------------------------------------------------------------
1627// Indexable Temp Register (x#[size]) Declaration
1628//
1629// OpcodeToken0:
1630//
1631// [10:00] D3D10_SB_OPCODE_DCL_INDEXABLE_TEMP
1632// [23:11] Ignored, 0
1633// [30:24] Instruction length in DWORDs including the opcode token.
1634// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1635// contains extended operand description. This dcl is currently not
1636// extended.
1637//
1638// OpcodeToken0 is followed by 3 DWORDs:
1639// (1) Register index (defines which x# register is declared)
1640// (2) Number of registers in this register bank
1641// (3) Number of components in the array (1-4). 1 means .x, 2 means .xy etc.
1642//
1643// ----------------------------------------------------------------------------
1644
1645// ----------------------------------------------------------------------------
1646// Constant Buffer Declaration
1647//
1648// OpcodeToken0:
1649//
1650// [10:00] D3D10_SB_OPCODE_DCL_CONSTANT_BUFFER
1651// [11] D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1652// [23:12] Ignored, 0
1653// [30:24] Instruction length in DWORDs including the opcode token.
1654// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1655// contains extended operand description. This dcl is currently not
1656// extended.
1657//
1658// OpcodeToken0 is followed by 1 operand on Shader Model 4.0 through 5.0:
1659// (1) Operand, starting with OperandToken0, defining which CB slot (cb#[size])
1660// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1661// The indexing dimension for the register must be
1662// D3D10_SB_OPERAND_INDEX_DIMENSION_2D, where the first index specifies
1663// which cb#[] is being declared, and the second (array) index specifies the size
1664// of the buffer, as a count of 32-bit*4 elements. (As opposed to when the
1665// cb#[] is used in shader instructions, and the array index represents which
1666// location in the constant buffer is being referenced.)
1667// If the size is specified as 0, the CB size is not known (any size CB
1668// can be bound to the slot).
1669//
1670// The order of constant buffer declarations in a shader indicates their
1671// relative priority from highest to lowest (hint to driver).
1672//
1673// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
1674// (1) Operand, starting with OperandToken0, defining which CB range (ID and bounds)
1675// is being declared. (operand type: D3D10_SB_OPERAND_TYPE_CONSTANT_BUFFER)
1676// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
1677// and the meaning of the index dimensions are as follows: (cb<id>[<lbound>:<ubound>])
1678// 1 <id>: variable ID being declared
1679// 2 <lbound>: the lower bound of the range of constant buffers in the space
1680// 3 <ubound>: the upper bound (inclusive) of this range
1681// As opposed to when the cb#[] is used in shader instructions: (cb<id>[<idx>][<loc>])
1682// 1 <id>: variable ID being used (matches dcl)
1683// 2 <idx>: absolute index of constant buffer within space (may be dynamically indexed)
1684// 3 <loc>: location of vector within constant buffer being referenced,
1685// which may also be dynamically indexed, with no access pattern flag required.
1686// (2) a DWORD indicating the size of the constant buffer as a count of 16-byte vectors.
1687// Each vector is 32-bit*4 elements == 128-bits == 16 bytes.
1688// If the size is specified as 0, the CB size is not known (any size CB
1689// can be bound to the slot).
1690// (3) a DWORD indicating the space index.
1691//
1692// ----------------------------------------------------------------------------
1693
1694typedef enum D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN
1695{
1696 D3D10_SB_CONSTANT_BUFFER_IMMEDIATE_INDEXED = 0,
1697 D3D10_SB_CONSTANT_BUFFER_DYNAMIC_INDEXED = 1
1698} D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN;
1699
1700#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK 0x00000800
1701#define D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT 11
1702
1703// DECODER MACRO: Find out if a Constant Buffer is going to be indexed or not
1704#define DECODE_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(OpcodeToken0) ((D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN)(((OpcodeToken0)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)>>D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT))
1705
1706// ENCODER MACRO: Encode the access pattern for the Constant Buffer
1707#define ENCODE_D3D10_SB_D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN(AccessPattern) (((AccessPattern)<<D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_SHIFT)&D3D10_SB_CONSTANT_BUFFER_ACCESS_PATTERN_MASK)
1708
1709// ----------------------------------------------------------------------------
1710// Immediate Constant Buffer Declaration
1711//
1712// OpcodeToken0:
1713//
1714// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1715// [31:11] == D3D10_SB_CUSTOMDATA_DCL_IMMEDIATE_CONSTANT_BUFFER
1716//
1717// OpcodeToken0 is followed by:
1718// (1) DWORD indicating length of declaration, including OpcodeToken0.
1719// This length must = 2(for OpcodeToken0 and 1) + a multiple of 4
1720// (# of immediate constants)
1721// (2) Sequence of 4-tuples of DWORDs defining the Immediate Constant Buffer.
1722// The number of 4-tuples is (length above - 1) / 4
1723// ----------------------------------------------------------------------------
1724
1725// ----------------------------------------------------------------------------
1726// Shader Message Declaration
1727//
1728// OpcodeToken0:
1729//
1730// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1731// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_MESSAGE
1732//
1733// OpcodeToken0 is followed by:
1734// (1) DWORD indicating length of declaration, including OpcodeToken0.
1735// (2) DWORD (D3D11_SB_SHADER_MESSAGE_ID) indicating shader message or error.
1736// (3) D3D11_SB_SHADER_MESSAGE_FORMAT indicating the convention for formatting the message.
1737// (4) DWORD indicating the number of characters in the string without the terminator.
1738// (5) DWORD indicating the number of operands.
1739// (6) DWORD indicating length of operands.
1740// (7) Encoded operands.
1741// (8) String with trailing zero, padded to a multiple of DWORDs.
1742// The string is in the given format and the operands given should
1743// be used for argument substitutions when formatting.
1744// ----------------------------------------------------------------------------
1745
1746typedef enum D3D11_SB_SHADER_MESSAGE_ID
1747{
1748 D3D11_SB_SHADER_MESSAGE_ID_MESSAGE = 0x00200102,
1749 D3D11_SB_SHADER_MESSAGE_ID_ERROR = 0x00200103
1750} D3D11_SB_SHADER_MESSAGE_ID;
1751
1752typedef enum D3D11_SB_SHADER_MESSAGE_FORMAT
1753{
1754 // No formatting, just a text string. Operands are ignored.
1755 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_TEXT,
1756 // Format string follows C/C++ printf conventions.
1757 D3D11_SB_SHADER_MESSAGE_FORMAT_ANSI_PRINTF,
1758} D3D11_SB_SHADER_MESSAGE_FORMAT;
1759
1760// ----------------------------------------------------------------------------
1761// Shader Clip Plane Constant Mappings for DX9 hardware
1762//
1763// OpcodeToken0:
1764//
1765// [10:00] D3D10_SB_OPCODE_CUSTOMDATA
1766// [31:11] == D3D11_SB_CUSTOMDATA_SHADER_CLIP_PLANE_CONSTANT_MAPPINGS_FOR_DX9
1767//
1768// OpcodeToken0 is followed by:
1769// (1) DWORD indicating length of declaration, including OpcodeToken0.
1770// (2) DWORD indicating number of constant mappings (up to 6 mappings).
1771// (3+) Constant mapping tables in following format.
1772//
1773// struct _Clip_Plane_Constant_Mapping
1774// {
1775// WORD ConstantBufferIndex; // cb[n]
1776// WORD StartConstantElement; // starting index of cb[n][m]
1777// WORD ConstantElemntCount; // number of elements cb[n][m] ~ cb[n][m+l]
1778// WORD Reserved; //
1779// };
1780// ----------------------------------------------------------------------------
1781
1782// ----------------------------------------------------------------------------
1783// Geometry Shader Input Primitive Declaration
1784//
1785// OpcodeToken0:
1786//
1787// [10:00] D3D10_SB_OPCODE_DCL_GS_INPUT_PRIMITIVE
1788// [16:11] D3D10_SB_PRIMITIVE [not D3D10_SB_PRIMITIVE_TOPOLOGY]
1789// [23:17] Ignored, 0
1790// [30:24] Instruction length in DWORDs including the opcode token. == 1
1791// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1792// contains extended operand description. This dcl is currently not
1793// extended.
1794//
1795// ----------------------------------------------------------------------------
1796
1797#define D3D10_SB_GS_INPUT_PRIMITIVE_MASK 0x0001f800
1798#define D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT 11
1799
1800// DECODER MACRO: Given a primitive topology declaration,
1801// (OpcodeToken0), determine the primitive topology
1802// (D3D10_SB_PRIMITIVE enum)
1803#define DECODE_D3D10_SB_GS_INPUT_PRIMITIVE(OpcodeToken0) ((D3D10_SB_PRIMITIVE)(((OpcodeToken0)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)>>D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT))
1804
1805// ENCODER MACRO: Store primitive topology
1806// (D3D10_SB_PRIMITIVE enum) into a
1807// a primitive topology declaration token (OpcodeToken0)
1808#define ENCODE_D3D10_SB_GS_INPUT_PRIMITIVE(Prim) (((Prim)<<D3D10_SB_GS_INPUT_PRIMITIVE_SHIFT)&D3D10_SB_GS_INPUT_PRIMITIVE_MASK)
1809
1810// ----------------------------------------------------------------------------
1811// Geometry Shader Output Topology Declaration
1812//
1813// OpcodeToken0:
1814//
1815// [10:00] D3D10_SB_OPCODE_DCL_GS_OUTPUT_PRIMITIVE_TOPOLOGY
1816// [17:11] D3D10_SB_PRIMITIVE_TOPOLOGY
1817// [23:18] Ignored, 0
1818// [30:24] Instruction length in DWORDs including the opcode token. == 1
1819// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1820// contains extended operand description. This dcl is currently not
1821// extended.
1822//
1823// ----------------------------------------------------------------------------
1824
1825#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK 0x0001f800
1826#define D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT 11
1827
1828// DECODER MACRO: Given a primitive topology declaration,
1829// (OpcodeToken0), determine the primitive topology
1830// (D3D10_SB_PRIMITIVE_TOPOLOGY enum)
1831#define DECODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(OpcodeToken0) ((D3D10_SB_PRIMITIVE_TOPOLOGY)(((OpcodeToken0)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)>>D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT))
1832
1833// ENCODER MACRO: Store primitive topology
1834// (D3D10_SB_PRIMITIVE_TOPOLOGY enum) into a
1835// a primitive topology declaration token (OpcodeToken0)
1836#define ENCODE_D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY(PrimTopology) (((PrimTopology)<<D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_SHIFT)&D3D10_SB_GS_OUTPUT_PRIMITIVE_TOPOLOGY_MASK)
1837
1838// ----------------------------------------------------------------------------
1839// Geometry Shader Maximum Output Vertex Count Declaration
1840//
1841// OpcodeToken0:
1842//
1843// [10:00] D3D10_SB_OPCODE_DCL_MAX_OUTPUT_VERTEX_COUNT
1844// [23:11] Ignored, 0
1845// [30:24] Instruction length in DWORDs including the opcode token.
1846// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1847// contains extended operand description. This dcl is currently not
1848// extended.
1849//
1850// OpcodeToken0 is followed by a DWORD representing the
1851// maximum number of primitives that could be output
1852// by the Geometry Shader.
1853//
1854// ----------------------------------------------------------------------------
1855
1856// ----------------------------------------------------------------------------
1857// Geometry Shader Instance Count Declaration
1858//
1859// OpcodeToken0:
1860//
1861// [10:00] D3D11_SB_OPCODE_DCL_GS_INSTANCE_COUNT
1862// [23:11] Ignored, 0
1863// [30:24] Instruction length in DWORDs including the opcode token.
1864// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1865// contains extended operand description. This dcl is currently not
1866// extended.
1867//
1868// OpcodeToken0 is followed by a UINT32 representing the
1869// number of instances of the geometry shader program to execute.
1870//
1871// ----------------------------------------------------------------------------
1872
1873// ----------------------------------------------------------------------------
1874// Hull Shader Declaration Phase: HS/DS Input Control Point Count
1875//
1876// OpcodeToken0:
1877//
1878// [10:00] D3D11_SB_OPCODE_DCL_INPUT_CONTROL_POINT_COUNT
1879// [16:11] Control point count
1880// [23:17] Ignored, 0
1881// [30:24] Instruction length in DWORDs including the opcode token. == 1
1882// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1883// contains extended operand description. This dcl is currently not
1884// extended.
1885//
1886// ----------------------------------------------------------------------------
1887#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1888#define D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT 11
1889
1890// DECODER MACRO: Given an input control point count declaration token,
1891// (OpcodeToken0), determine the control point count
1892#define DECODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT))
1893
1894// ENCODER MACRO: Store input control point count into a declaration token
1895#define ENCODE_D3D11_SB_INPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_INPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_INPUT_CONTROL_POINT_COUNT_MASK)
1896
1897// ----------------------------------------------------------------------------
1898// Hull Shader Declaration Phase: HS Output Control Point Count
1899//
1900// OpcodeToken0:
1901//
1902// [10:00] D3D11_SB_OPCODE_DCL_OUTPUT_CONTROL_POINT_COUNT
1903// [16:11] Control point count
1904// [23:17] Ignored, 0
1905// [30:24] Instruction length in DWORDs including the opcode token. == 1
1906// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1907// contains extended operand description. This dcl is currently not
1908// extended.
1909//
1910// ----------------------------------------------------------------------------
1911#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK 0x0001f800
1912#define D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT 11
1913
1914// DECODER MACRO: Given an output control point count declaration token,
1915// (OpcodeToken0), determine the control point count
1916#define DECODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)>>D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT))
1917
1918// ENCODER MACRO: Store output control point count into a declaration token
1919#define ENCODE_D3D11_SB_OUTPUT_CONTROL_POINT_COUNT(Count) (((Count)<<D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_SHIFT)&D3D11_SB_OUTPUT_CONTROL_POINT_COUNT_MASK)
1920
1921// ----------------------------------------------------------------------------
1922// Hull Shader Declaration Phase: Tessellator Domain
1923//
1924// OpcodeToken0:
1925//
1926// [10:00] D3D11_SB_OPCODE_DCL_TESS_DOMAIN
1927// [12:11] Domain
1928// [23:13] Ignored, 0
1929// [30:24] Instruction length in DWORDs including the opcode token. == 1
1930// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1931// contains extended operand description. This dcl is currently not
1932// extended.
1933//
1934// ----------------------------------------------------------------------------
1935typedef enum D3D11_SB_TESSELLATOR_DOMAIN
1936{
1937 D3D11_SB_TESSELLATOR_DOMAIN_UNDEFINED = 0,
1938 D3D11_SB_TESSELLATOR_DOMAIN_ISOLINE = 1,
1939 D3D11_SB_TESSELLATOR_DOMAIN_TRI = 2,
1940 D3D11_SB_TESSELLATOR_DOMAIN_QUAD = 3
1941} D3D11_SB_TESSELLATOR_DOMAIN;
1942
1943#define D3D11_SB_TESS_DOMAIN_MASK 0x00001800
1944#define D3D11_SB_TESS_DOMAIN_SHIFT 11
1945
1946// DECODER MACRO: Given a tessellator domain declaration,
1947// (OpcodeToken0), determine the domain
1948// (D3D11_SB_TESSELLATOR_DOMAIN enum)
1949#define DECODE_D3D11_SB_TESS_DOMAIN(OpcodeToken0) ((D3D11_SB_TESSELLATOR_DOMAIN)(((OpcodeToken0)&D3D11_SB_TESS_DOMAIN_MASK)>>D3D11_SB_TESS_DOMAIN_SHIFT))
1950
1951// ENCODER MACRO: Store tessellator domain
1952// (D3D11_SB_TESSELLATOR_DOMAIN enum) into a
1953// a tessellator domain declaration token (OpcodeToken0)
1954#define ENCODE_D3D11_SB_TESS_DOMAIN(Domain) (((Domain)<<D3D11_SB_TESS_DOMAIN_SHIFT)&D3D11_SB_TESS_DOMAIN_MASK)
1955
1956// ----------------------------------------------------------------------------
1957// Hull Shader Declaration Phase: Tessellator Partitioning
1958//
1959// OpcodeToken0:
1960//
1961// [10:00] D3D11_SB_OPCODE_DCL_TESS_PARTITIONING
1962// [13:11] Partitioning
1963// [23:14] Ignored, 0
1964// [30:24] Instruction length in DWORDs including the opcode token. == 1
1965// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
1966// contains extended operand description. This dcl is currently not
1967// extended.
1968//
1969// ----------------------------------------------------------------------------
1970typedef enum D3D11_SB_TESSELLATOR_PARTITIONING
1971{
1972 D3D11_SB_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1973 D3D11_SB_TESSELLATOR_PARTITIONING_INTEGER = 1,
1974 D3D11_SB_TESSELLATOR_PARTITIONING_POW2 = 2,
1975 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1976 D3D11_SB_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4
1977} D3D11_SB_TESSELLATOR_PARTITIONING;
1978
1979#define D3D11_SB_TESS_PARTITIONING_MASK 0x00003800
1980#define D3D11_SB_TESS_PARTITIONING_SHIFT 11
1981
1982// DECODER MACRO: Given a tessellator partitioning declaration,
1983// (OpcodeToken0), determine the domain
1984// (D3D11_SB_TESSELLATOR_PARTITIONING enum)
1985#define DECODE_D3D11_SB_TESS_PARTITIONING(OpcodeToken0) ((D3D11_SB_TESSELLATOR_PARTITIONING)(((OpcodeToken0)&D3D11_SB_TESS_PARTITIONING_MASK)>>D3D11_SB_TESS_PARTITIONING_SHIFT))
1986
1987// ENCODER MACRO: Store tessellator partitioning
1988// (D3D11_SB_TESSELLATOR_PARTITIONING enum) into a
1989// a tessellator partitioning declaration token (OpcodeToken0)
1990#define ENCODE_D3D11_SB_TESS_PARTITIONING(Partitioning) (((Partitioning)<<D3D11_SB_TESS_PARTITIONING_SHIFT)&D3D11_SB_TESS_PARTITIONING_MASK)
1991
1992// ----------------------------------------------------------------------------
1993// Hull Shader Declaration Phase: Tessellator Output Primitive
1994//
1995// OpcodeToken0:
1996//
1997// [10:00] D3D11_SB_OPCODE_DCL_TESS_OUTPUT_PRIMITIVE
1998// [13:11] Output Primitive
1999// [23:14] Ignored, 0
2000// [30:24] Instruction length in DWORDs including the opcode token. == 1
2001// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2002// contains extended operand description. This dcl is currently not
2003// extended.
2004//
2005// ----------------------------------------------------------------------------
2006typedef enum D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE
2007{
2008 D3D11_SB_TESSELLATOR_OUTPUT_UNDEFINED = 0,
2009 D3D11_SB_TESSELLATOR_OUTPUT_POINT = 1,
2010 D3D11_SB_TESSELLATOR_OUTPUT_LINE = 2,
2011 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
2012 D3D11_SB_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4
2013} D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE;
2014
2015#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK 0x00003800
2016#define D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT 11
2017
2018// DECODER MACRO: Given a tessellator output primitive declaration,
2019// (OpcodeToken0), determine the domain
2020// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum)
2021#define DECODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OpcodeToken0) ((D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE)(((OpcodeToken0)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)>>D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT))
2022
2023// ENCODER MACRO: Store tessellator output primitive
2024// (D3D11_SB_TESSELLATOR_OUTPUT_PRIMITIVE enum) into a
2025// a tessellator output primitive declaration token (OpcodeToken0)
2026#define ENCODE_D3D11_SB_TESS_OUTPUT_PRIMITIVE(OutputPrimitive) (((OutputPrimitive)<<D3D11_SB_TESS_OUTPUT_PRIMITIVE_SHIFT)&D3D11_SB_TESS_OUTPUT_PRIMITIVE_MASK)
2027
2028
2029// ----------------------------------------------------------------------------
2030// Hull Shader Declaration Phase: Hull Shader Max Tessfactor
2031//
2032// OpcodeToken0:
2033//
2034// [10:00] D3D11_SB_OPCODE_DCL_HS_MAX_TESSFACTOR
2035// [23:11] Ignored, 0
2036// [30:24] Instruction length in DWORDs including the opcode token.
2037// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2038// contains extended operand description. This dcl is currently not
2039// extended.
2040//
2041// OpcodeToken0 is followed by a float32 representing the
2042// maximum TessFactor.
2043//
2044// ----------------------------------------------------------------------------
2045
2046// ----------------------------------------------------------------------------
2047// Hull Shader Declaration Phase: Hull Shader Fork Phase Instance Count
2048//
2049// OpcodeToken0:
2050//
2051// [10:00] D3D11_SB_OPCODE_DCL_HS_FORK_PHASE_INSTANCE_COUNT
2052// [23:11] Ignored, 0
2053// [30:24] Instruction length in DWORDs including the opcode token.
2054// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2055// contains extended operand description. This dcl is currently not
2056// extended.
2057//
2058// OpcodeToken0 is followed by a UINT32 representing the
2059// number of instances of the current fork phase program to execute.
2060//
2061// ----------------------------------------------------------------------------
2062
2063typedef enum D3D10_SB_INTERPOLATION_MODE
2064{
2065 D3D10_SB_INTERPOLATION_UNDEFINED = 0,
2066 D3D10_SB_INTERPOLATION_CONSTANT = 1,
2067 D3D10_SB_INTERPOLATION_LINEAR = 2,
2068 D3D10_SB_INTERPOLATION_LINEAR_CENTROID = 3,
2069 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
2070 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
2071 D3D10_SB_INTERPOLATION_LINEAR_SAMPLE = 6, // DX10.1
2072 D3D10_SB_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7, // DX10.1
2073} D3D10_SB_INTERPOLATION_MODE;
2074
2075// Keep PRIMITIVE_TOPOLOGY values in sync with earlier DX versions (HW consumes values directly).
2076typedef enum D3D10_SB_PRIMITIVE_TOPOLOGY
2077{
2078 D3D10_SB_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
2079 D3D10_SB_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
2080 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST = 2,
2081 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
2082 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
2083 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
2084 // 6 is reserved for legacy triangle fans
2085 // Adjacency values should be equal to (0x8 & non-adjacency):
2086 D3D10_SB_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
2087 D3D10_SB_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
2088 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
2089 D3D10_SB_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
2090} D3D10_SB_PRIMITIVE_TOPOLOGY;
2091
2092typedef enum D3D10_SB_PRIMITIVE
2093{
2094 D3D10_SB_PRIMITIVE_UNDEFINED = 0,
2095 D3D10_SB_PRIMITIVE_POINT = 1,
2096 D3D10_SB_PRIMITIVE_LINE = 2,
2097 D3D10_SB_PRIMITIVE_TRIANGLE = 3,
2098 // Adjacency values should be equal to (0x4 & non-adjacency):
2099 D3D10_SB_PRIMITIVE_LINE_ADJ = 6,
2100 D3D10_SB_PRIMITIVE_TRIANGLE_ADJ = 7,
2101 D3D11_SB_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
2102 D3D11_SB_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
2103 D3D11_SB_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
2104 D3D11_SB_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
2105 D3D11_SB_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
2106 D3D11_SB_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
2107 D3D11_SB_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
2108 D3D11_SB_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
2109 D3D11_SB_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
2110 D3D11_SB_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
2111 D3D11_SB_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
2112 D3D11_SB_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
2113 D3D11_SB_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
2114 D3D11_SB_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
2115 D3D11_SB_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
2116 D3D11_SB_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
2117 D3D11_SB_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
2118 D3D11_SB_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
2119 D3D11_SB_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
2120 D3D11_SB_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
2121 D3D11_SB_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
2122 D3D11_SB_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
2123 D3D11_SB_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
2124 D3D11_SB_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
2125 D3D11_SB_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
2126 D3D11_SB_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
2127 D3D11_SB_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
2128 D3D11_SB_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
2129 D3D11_SB_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
2130 D3D11_SB_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
2131 D3D11_SB_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
2132 D3D11_SB_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
2133} D3D10_SB_PRIMITIVE;
2134
2135typedef enum D3D10_SB_COMPONENT_MASK
2136{
2137 D3D10_SB_COMPONENT_MASK_X = 1,
2138 D3D10_SB_COMPONENT_MASK_Y = 2,
2139 D3D10_SB_COMPONENT_MASK_Z = 4,
2140 D3D10_SB_COMPONENT_MASK_W = 8,
2141 D3D10_SB_COMPONENT_MASK_R = 1,
2142 D3D10_SB_COMPONENT_MASK_G = 2,
2143 D3D10_SB_COMPONENT_MASK_B = 4,
2144 D3D10_SB_COMPONENT_MASK_A = 8,
2145 D3D10_SB_COMPONENT_MASK_ALL = 15,
2146} D3D10_SB_COMPONENT_MASK;
2147
2148typedef enum D3D10_SB_NAME
2149{
2150 D3D10_SB_NAME_UNDEFINED = 0,
2151 D3D10_SB_NAME_POSITION = 1,
2152 D3D10_SB_NAME_CLIP_DISTANCE = 2,
2153 D3D10_SB_NAME_CULL_DISTANCE = 3,
2154 D3D10_SB_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
2155 D3D10_SB_NAME_VIEWPORT_ARRAY_INDEX = 5,
2156 D3D10_SB_NAME_VERTEX_ID = 6,
2157 D3D10_SB_NAME_PRIMITIVE_ID = 7,
2158 D3D10_SB_NAME_INSTANCE_ID = 8,
2159 D3D10_SB_NAME_IS_FRONT_FACE = 9,
2160 D3D10_SB_NAME_SAMPLE_INDEX = 10,
2161 // The following are added for D3D11
2162 D3D11_SB_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR = 11,
2163 D3D11_SB_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR = 12,
2164 D3D11_SB_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR = 13,
2165 D3D11_SB_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR = 14,
2166 D3D11_SB_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR = 15,
2167 D3D11_SB_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR = 16,
2168 D3D11_SB_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR = 17,
2169 D3D11_SB_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR = 18,
2170 D3D11_SB_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR = 19,
2171 D3D11_SB_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 20,
2172 D3D11_SB_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 21,
2173 D3D11_SB_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 22,
2174 // The following are added for D3D12
2175 D3D12_SB_NAME_BARYCENTRICS = 23,
2176 D3D12_SB_NAME_SHADINGRATE = 24,
2177 D3D12_SB_NAME_CULLPRIMITIVE = 25,
2178} D3D10_SB_NAME;
2179
2180typedef enum D3D10_SB_RESOURCE_DIMENSION
2181{
2182 D3D10_SB_RESOURCE_DIMENSION_UNKNOWN = 0,
2183 D3D10_SB_RESOURCE_DIMENSION_BUFFER = 1,
2184 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1D = 2,
2185 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2D = 3,
2186 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMS = 4,
2187 D3D10_SB_RESOURCE_DIMENSION_TEXTURE3D = 5,
2188 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBE = 6,
2189 D3D10_SB_RESOURCE_DIMENSION_TEXTURE1DARRAY = 7,
2190 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DARRAY = 8,
2191 D3D10_SB_RESOURCE_DIMENSION_TEXTURE2DMSARRAY = 9,
2192 D3D10_SB_RESOURCE_DIMENSION_TEXTURECUBEARRAY = 10,
2193 D3D11_SB_RESOURCE_DIMENSION_RAW_BUFFER = 11,
2194 D3D11_SB_RESOURCE_DIMENSION_STRUCTURED_BUFFER = 12,
2195} D3D10_SB_RESOURCE_DIMENSION;
2196
2197typedef enum D3D10_SB_RESOURCE_RETURN_TYPE
2198{
2199 D3D10_SB_RETURN_TYPE_UNORM = 1,
2200 D3D10_SB_RETURN_TYPE_SNORM = 2,
2201 D3D10_SB_RETURN_TYPE_SINT = 3,
2202 D3D10_SB_RETURN_TYPE_UINT = 4,
2203 D3D10_SB_RETURN_TYPE_FLOAT = 5,
2204 D3D10_SB_RETURN_TYPE_MIXED = 6,
2205 D3D11_SB_RETURN_TYPE_DOUBLE = 7,
2206 D3D11_SB_RETURN_TYPE_CONTINUED = 8,
2207 D3D11_SB_RETURN_TYPE_UNUSED = 9,
2208} D3D10_SB_RESOURCE_RETURN_TYPE;
2209
2210typedef enum D3D10_SB_REGISTER_COMPONENT_TYPE
2211{
2212 D3D10_SB_REGISTER_COMPONENT_UNKNOWN = 0,
2213 D3D10_SB_REGISTER_COMPONENT_UINT32 = 1,
2214 D3D10_SB_REGISTER_COMPONENT_SINT32 = 2,
2215 D3D10_SB_REGISTER_COMPONENT_FLOAT32 = 3,
2216 // Below types aren't used in DXBC, only signatures from DXIL shaders
2217 D3D10_SB_REGISTER_COMPONENT_UINT16 = 4,
2218 D3D10_SB_REGISTER_COMPONENT_SINT16 = 5,
2219 D3D10_SB_REGISTER_COMPONENT_FLOAT16 = 6,
2220 D3D10_SB_REGISTER_COMPONENT_UINT64 = 7,
2221 D3D10_SB_REGISTER_COMPONENT_SINT64 = 8,
2222 D3D10_SB_REGISTER_COMPONENT_FLOAT64 = 9,
2223} D3D10_SB_REGISTER_COMPONENT_TYPE;
2224
2225typedef enum D3D10_SB_INSTRUCTION_RETURN_TYPE
2226{
2227 D3D10_SB_INSTRUCTION_RETURN_FLOAT = 0,
2228 D3D10_SB_INSTRUCTION_RETURN_UINT = 1
2229} D3D10_SB_INSTRUCTION_RETURN_TYPE;
2230
2231#define D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK 0x00001800
2232#define D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT 11
2233
2234// DECODER MACRO: For an OpcodeToken0 with the return type
2235// determine the return type.
2236#define DECODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(OpcodeToken0) ((D3D10_SB_INSTRUCTION_RETURN_TYPE)(((OpcodeToken0)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)>>D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT))
2237// ENCODER MACRO: Encode the return type for instructions
2238// in the opcode specific control range of OpcodeToken0
2239#define ENCODE_D3D10_SB_INSTRUCTION_RETURN_TYPE(ReturnType) (((ReturnType)<<D3D10_SB_INSTRUCTION_RETURN_TYPE_SHIFT)&D3D10_SB_INSTRUCTION_RETURN_TYPE_MASK)
2240
2241// ----------------------------------------------------------------------------
2242// Interface function body Declaration
2243//
2244// OpcodeToken0:
2245//
2246// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_BODY
2247// [23:11] Ignored, 0
2248// [30:24] Instruction length in DWORDs including the opcode token.
2249// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2250// contains extended operand description. If it is extended, then
2251// it contains the actual instruction length in DWORDs, since
2252// it may not fit into 7 bits if enough operands are defined.
2253//
2254// OpcodeToken0 is followed by a DWORD that represents the function body
2255// identifier.
2256//
2257// ----------------------------------------------------------------------------
2258
2259// ----------------------------------------------------------------------------
2260// Interface function table Declaration
2261//
2262// OpcodeToken0:
2263//
2264// [10:00] D3D10_SB_OPCODE_DCL_FUNCTION_TABLE
2265// [23:11] Ignored, 0
2266// [30:24] Instruction length in DWORDs including the opcode token.
2267// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2268// contains extended operand description. If it is extended, then
2269// it contains the actual instruction length in DWORDs, since
2270// it may not fit into 7 bits if enough functions are defined.
2271//
2272// OpcodeToken0 is followed by a DWORD that represents the function table
2273// identifier and another DWORD (TableLength) that gives the number of
2274// functions in the table.
2275//
2276// This is followed by TableLength DWORDs which are function body indices.
2277//
2278// ----------------------------------------------------------------------------
2279
2280// ----------------------------------------------------------------------------
2281// Interface Declaration
2282//
2283// OpcodeToken0:
2284//
2285// [10:00] D3D10_SB_OPCODE_DCL_INTERFACE
2286// [11] 1 if the interface is indexed dynamically, 0 otherwise.
2287// [23:12] Ignored, 0
2288// [30:24] Instruction length in DWORDs including the opcode token.
2289// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2290// contains extended operand description. If it is extended, then
2291// it contains the actual instruction length in DWORDs, since
2292// it may not fit into 7 bits if enough types are used.
2293//
2294// OpcodeToken0 is followed by a DWORD that represents the interface
2295// identifier. Next is a DWORD that gives the expected function table
2296// length. Then another DWORD (OpcodeToken3) with the following layout:
2297//
2298// [15:00] TableLength, the number of types that implement this interface
2299// [31:16] ArrayLength, the number of interfaces that are defined in this array.
2300//
2301// This is followed by TableLength DWORDs which are function table
2302// identifiers, representing possible tables for a given interface.
2303//
2304// ----------------------------------------------------------------------------
2305
2306#define D3D11_SB_INTERFACE_INDEXED_BIT_MASK 0x00000800
2307#define D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT 11
2308
2309#define D3D11_SB_INTERFACE_TABLE_LENGTH_MASK 0x0000ffff
2310#define D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT 0
2311
2312#define D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK 0xffff0000
2313#define D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT 16
2314
2315// get/set the indexed bit for an interface definition
2316#define DECODE_D3D11_SB_INTERFACE_INDEXED_BIT(OpcodeToken0) ((((OpcodeToken0)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)>>D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT) ? true : false)
2317#define ENCODE_D3D11_SB_INTERFACE_INDEXED_BIT(IndexedBit) (((IndexedBit)<<D3D11_SB_INTERFACE_INDEXED_BIT_SHIFT)&D3D11_SB_INTERFACE_INDEXED_BIT_MASK)
2318
2319// get/set the table length for an interface definition
2320#define DECODE_D3D11_SB_INTERFACE_TABLE_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)>>D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT))
2321#define ENCODE_D3D11_SB_INTERFACE_TABLE_LENGTH(TableLength) (((TableLength)<<D3D11_SB_INTERFACE_TABLE_LENGTH_SHIFT)&D3D11_SB_INTERFACE_TABLE_LENGTH_MASK)
2322
2323// get/set the array length for an interface definition
2324#define DECODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(OpcodeToken0) ((UINT)(((OpcodeToken0)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)>>D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT))
2325#define ENCODE_D3D11_SB_INTERFACE_ARRAY_LENGTH(ArrayLength) (((ArrayLength)<<D3D11_SB_INTERFACE_ARRAY_LENGTH_SHIFT)&D3D11_SB_INTERFACE_ARRAY_LENGTH_MASK)
2326
2327// ----------------------------------------------------------------------------
2328// Interface call
2329//
2330// OpcodeToken0:
2331//
2332// [10:00] D3D10_SB_OPCODE_INTERFACE_CALL
2333// [23:11] Ignored, 0
2334// [30:24] Instruction length in DWORDs including the opcode token.
2335// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2336// contains extended operand description. If it is extended, then
2337// it contains the actual instruction length in DWORDs, since
2338// it may not fit into 7 bits if enough types are used.
2339//
2340// OpcodeToken0 is followed by a DWORD that gives the function index to
2341// call in the function table specified for the given interface.
2342// Next is the interface operand.
2343//
2344// ----------------------------------------------------------------------------
2345
2346// ----------------------------------------------------------------------------
2347// Thread Group Declaration (Compute Shader)
2348//
2349// OpcodeToken0:
2350//
2351// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP
2352// [23:11] Ignored, 0
2353// [30:24] Instruction length in DWORDs including the opcode token.
2354// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2355// contains extended operand description. If it is extended, then
2356// it contains the actual instruction length in DWORDs, since
2357// it may not fit into 7 bits if enough types are used.
2358//
2359// OpcodeToken0 is followed by 3 DWORDs, the Thread Group dimensions as UINT32:
2360// x, y, z
2361//
2362// ----------------------------------------------------------------------------
2363
2364// ----------------------------------------------------------------------------
2365// Typed Unordered Access View Declaration
2366//
2367// OpcodeToken0:
2368//
2369// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED
2370// [15:11] D3D10_SB_RESOURCE_DIMENSION
2371// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2372// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2373// [23:18] Ignored, 0
2374// [30:24] Instruction length in DWORDs including the opcode token.
2375// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2376// contains extended operand description. This dcl is currently not
2377// extended.
2378//
2379// OpcodeToken0 is followed by 2 operands on Shader Models 4.0 through 5.0:
2380// (1) an operand, starting with OperandToken0, defining which
2381// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2382// (2) a Resource Return Type token (ResourceReturnTypeToken)
2383//
2384// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2385// (1) an operand, starting with OperandToken0, defining which
2386// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2387// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2388// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2389// 1 <id>: variable ID being declared
2390// 2 <lbound>: the lower bound of the range of UAV's in the space
2391// 3 <ubound>: the upper bound (inclusive) of this range
2392// As opposed to when the u# is used in shader instructions, where the register
2393// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2394// dimensions are as follows: (u<id>[<idx>]):
2395// 1 <id>: variable ID being used (matches dcl)
2396// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2397// (2) a Resource Return Type token (ResourceReturnTypeToken)
2398// (3) a DWORD indicating the space index.
2399//
2400// ----------------------------------------------------------------------------
2401// UAV access scope flags
2402#define D3D11_SB_GLOBALLY_COHERENT_ACCESS 0x00010000
2403#define D3D11_SB_ACCESS_COHERENCY_MASK 0x00010000
2404
2405// DECODER MACRO: Retrieve flags for sync instruction from OpcodeToken0.
2406#define DECODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_ACCESS_COHERENCY_MASK)
2407
2408// ENCODER MACRO: Given a set of sync instruciton flags, encode them in OpcodeToken0.
2409#define ENCODE_D3D11_SB_ACCESS_COHERENCY_FLAGS(Flags) ((Flags)&D3D11_SB_ACCESS_COHERENCY_MASK)
2410
2411// Additional UAV access flags
2412#define D3D11_SB_RASTERIZER_ORDERED_ACCESS 0x00020000
2413
2414// Resource flags mask. Use to retrieve all resource flags, including the order preserving counter.
2415#define D3D11_SB_RESOURCE_FLAGS_MASK (D3D11_SB_GLOBALLY_COHERENT_ACCESS|D3D11_SB_RASTERIZER_ORDERED_ACCESS|D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER)
2416
2417// DECODER MACRO: Retrieve UAV access flags for from OpcodeToken0.
2418#define DECODE_D3D11_SB_RESOURCE_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_RESOURCE_FLAGS_MASK)
2419
2420// ENCODER MACRO: Given UAV access flags, encode them in OpcodeToken0.
2421#define ENCODE_D3D11_SB_RESOURCE_FLAGS(Flags) ((Flags)&D3D11_SB_RESOURCE_FLAGS_MASK)
2422
2423// ----------------------------------------------------------------------------
2424// Raw Unordered Access View Declaration
2425//
2426// OpcodeToken0:
2427//
2428// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW
2429// [15:11] Ignored, 0
2430// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2431// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2432// [23:18] Ignored, 0
2433// [30:24] Instruction length in DWORDs including the opcode token.
2434// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2435// contains extended operand description. This dcl is currently not
2436// extended.
2437//
2438// OpcodeToken0 is followed by 1 operand on Shader Models 4.0 through 5.0:
2439// (1) an operand, starting with OperandToken0, defining which
2440// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2441//
2442// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2443// (1) an operand, starting with OperandToken0, defining which
2444// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2445// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2446// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2447// 1 <id>: variable ID being declared
2448// 2 <lbound>: the lower bound of the range of UAV's in the space
2449// 3 <ubound>: the upper bound (inclusive) of this range
2450// As opposed to when the u# is used in shader instructions, where the register
2451// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2452// dimensions are as follows: (u<id>[<idx>]):
2453// 1 <id>: variable ID being used (matches dcl)
2454// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2455// (2) a DWORD indicating the space index.
2456//
2457// ----------------------------------------------------------------------------
2458
2459// ----------------------------------------------------------------------------
2460// Structured Unordered Access View Declaration
2461//
2462// OpcodeToken0:
2463//
2464// [10:00] D3D11_SB_OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED
2465// [15:11] Ignored, 0
2466// [16:16] D3D11_SB_GLOBALLY_COHERENT_ACCESS or 0 (LOCALLY_COHERENT)
2467// [17:17] D3D11_SB_RASTERIZER_ORDERED_ACCESS or 0
2468// [22:18] Ignored, 0
2469// [23:23] D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER or 0
2470//
2471// The presence of this flag means that if a UAV is bound to the
2472// corresponding slot, it must have been created with
2473// D3D11_BUFFER_UAV_FLAG_COUNTER at the API. Also, the shader
2474// can contain either imm_atomic_alloc or _consume instructions
2475// operating on the given UAV.
2476//
2477// If this flag is not present, the shader can still contain
2478// either imm_atomic_alloc or imm_atomic_consume instructions for
2479// this UAV. But if such instructions are present in this case,
2480// and a UAV is bound corresponding slot, it must have been created
2481// with the D3D11_BUFFER_UAV_FLAG_APPEND flag at the API.
2482// Append buffers have a counter as well, but values returned
2483// to the shader are only valid for the lifetime of the shader
2484// invocation.
2485//
2486// [30:24] Instruction length in DWORDs including the opcode token.
2487// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2488// contains extended operand description. This dcl is currently not
2489// extended.
2490//
2491// OpcodeToken0 is followed by 2 operands:
2492// (1) an operand, starting with OperandToken0, defining which
2493// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is
2494// being declared.
2495// (2) a DWORD indicating UINT32 byte stride
2496//
2497// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2498// (1) an operand, starting with OperandToken0, defining which
2499// u# register (D3D11_SB_OPERAND_TYPE_UNORDERED_ACCESS_VIEW) is being declared.
2500// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2501// and the meaning of the index dimensions are as follows: (u<id>[<lbound>:<ubound>])
2502// 1 <id>: variable ID being declared
2503// 2 <lbound>: the lower bound of the range of UAV's in the space
2504// 3 <ubound>: the upper bound (inclusive) of this range
2505// As opposed to when the u# is used in shader instructions, where the register
2506// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2507// dimensions are as follows: (u<id>[<idx>]):
2508// 1 <id>: variable ID being used (matches dcl)
2509// 2 <idx>: absolute index of uav within space (may be dynamically indexed)
2510// (2) a DWORD indicating UINT32 byte stride
2511// (3) a DWORD indicating the space index.
2512//
2513// ----------------------------------------------------------------------------
2514// UAV flags
2515#define D3D11_SB_UAV_HAS_ORDER_PRESERVING_COUNTER 0x00800000
2516#define D3D11_SB_UAV_FLAGS_MASK 0x00800000
2517
2518// DECODER MACRO: Retrieve flags about UAV from OpcodeToken0.
2519#define DECODE_D3D11_SB_UAV_FLAGS(OperandToken0) ((OperandToken0)&D3D11_SB_UAV_FLAGS_MASK)
2520
2521// ENCODER MACRO: Given a set of UAV flags, encode them in OpcodeToken0.
2522#define ENCODE_D3D11_SB_UAV_FLAGS(Flags) ((Flags)&D3D11_SB_UAV_FLAGS_MASK)
2523
2524// ----------------------------------------------------------------------------
2525// Raw Thread Group Shared Memory Declaration
2526//
2527// OpcodeToken0:
2528//
2529// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_RAW
2530// [23:11] Ignored, 0
2531// [30:24] Instruction length in DWORDs including the opcode token.
2532// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2533// contains extended operand description. This dcl is currently not
2534// extended.
2535//
2536// OpcodeToken0 is followed by 2 operands:
2537// (1) an operand, starting with OperandToken0, defining which
2538// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is being declared.
2539// (2) a DWORD indicating the byte count, which must be a multiple of 4.
2540//
2541// ----------------------------------------------------------------------------
2542
2543// ----------------------------------------------------------------------------
2544// Structured Thread Group Shared Memory Declaration
2545//
2546// OpcodeToken0:
2547//
2548// [10:00] D3D11_SB_OPCODE_DCL_THREAD_GROUP_SHARED_MEMORY_STRUCTURED
2549// [23:11] Ignored, 0
2550// [30:24] Instruction length in DWORDs including the opcode token.
2551// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2552// contains extended operand description. This dcl is currently not
2553// extended.
2554//
2555// OpcodeToken0 is followed by 3 operands:
2556// (1) an operand, starting with OperandToken0, defining which
2557// g# register (D3D11_SB_OPERAND_TYPE_THREAD_GROUP_SHARED_MEMORY) is
2558// being declared.
2559// (2) a DWORD indicating UINT32 struct byte stride
2560// (3) a DWORD indicating UINT32 struct count
2561//
2562// ----------------------------------------------------------------------------
2563
2564// ----------------------------------------------------------------------------
2565// Raw Shader Resource View Declaration
2566//
2567// OpcodeToken0:
2568//
2569// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_RAW
2570// [23:11] Ignored, 0
2571// [30:24] Instruction length in DWORDs including the opcode token.
2572// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2573// contains extended operand description. This dcl is currently not
2574// extended.
2575//
2576// OpcodeToken0 is followed by 1 operand:
2577// (1) an operand, starting with OperandToken0, defining which
2578// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2579//
2580// OpcodeToken0 is followed by 2 operands on Shader Model 5.1 and later:
2581// (1) an operand, starting with OperandToken0, defining which
2582// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2583// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2584// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2585// 1 <id>: variable ID being declared
2586// 2 <lbound>: the lower bound of the range of resources in the space
2587// 3 <ubound>: the upper bound (inclusive) of this range
2588// As opposed to when the t# is used in shader instructions, where the register
2589// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2590// dimensions are as follows: (t<id>[<idx>]):
2591// 1 <id>: variable ID being used (matches dcl)
2592// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2593// (2) a DWORD indicating the space index.
2594//
2595// ----------------------------------------------------------------------------
2596
2597// ----------------------------------------------------------------------------
2598// Structured Shader Resource View Declaration
2599//
2600// OpcodeToken0:
2601//
2602// [10:00] D3D11_SB_OPCODE_DCL_RESOURCE_STRUCTURED
2603// [23:11] Ignored, 0
2604// [30:24] Instruction length in DWORDs including the opcode token.
2605// [31] 0 normally. 1 if extended operand definition, meaning next DWORD
2606// contains extended operand description. This dcl is currently not
2607// extended.
2608//
2609// OpcodeToken0 is followed by 2 operands:
2610// (1) an operand, starting with OperandToken0, defining which
2611// g# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is
2612// being declared.
2613// (2) a DWORD indicating UINT32 struct byte stride
2614//
2615// OpcodeToken0 is followed by 3 operands on Shader Model 5.1 and later:
2616// (1) an operand, starting with OperandToken0, defining which
2617// t# register (D3D10_SB_OPERAND_TYPE_RESOURCE) is being declared.
2618// The indexing dimension for the register must be D3D10_SB_OPERAND_INDEX_DIMENSION_3D,
2619// and the meaning of the index dimensions are as follows: (t<id>[<lbound>:<ubound>])
2620// 1 <id>: variable ID being declared
2621// 2 <lbound>: the lower bound of the range of resources in the space
2622// 3 <ubound>: the upper bound (inclusive) of this range
2623// As opposed to when the t# is used in shader instructions, where the register
2624// must be D3D10_SB_OPERAND_INDEX_DIMENSION_2D, and the meaning of the index
2625// dimensions are as follows: (t<id>[<idx>]):
2626// 1 <id>: variable ID being used (matches dcl)
2627// 2 <idx>: absolute index of resource within space (may be dynamically indexed)
2628// (2) a DWORD indicating UINT32 struct byte stride
2629// (3) a DWORD indicating the space index.
2630//
2631// ----------------------------------------------------------------------------
2632
2633#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
2634#pragma endregion
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h b/contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h
new file mode 100644
index 0000000..3bd1921
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/DirectML.h
@@ -0,0 +1,2651 @@
1// Copyright (c) Microsoft Corporation. All rights reserved.
2
3#ifndef DIRECTML_H
4#define DIRECTML_H
5#pragma once
6
7#ifdef _GAMING_XBOX_SCARLETT
8#include "d3d12_xs.h"
9#elif _GAMING_XBOX_XBOXONE
10#include "d3d12_x.h"
11#else
12#include "d3d12.h"
13#endif
14
15#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
16
17#ifndef DML_DECLARE_INTERFACE
18#define DML_DECLARE_INTERFACE(iid) DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE
19#endif
20
21#ifndef DML_TARGET_VERSION
22
23#if !defined(NTDDI_VERSION) || defined(DML_TARGET_VERSION_USE_LATEST) // Use the latest if using redist or no Windows target set.
24#define DML_TARGET_VERSION 0x6400
25#elif defined(NTDDI_WIN10_ZN) && NTDDI_VERSION >= NTDDI_WIN10_ZN
26#define DML_TARGET_VERSION 0x6000
27#elif defined(NTDDI_WIN10_NI) && NTDDI_VERSION >= NTDDI_WIN10_NI
28#define DML_TARGET_VERSION 0x5000
29#elif defined(NTDDI_WIN10_CO) && NTDDI_VERSION >= NTDDI_WIN10_CO
30#define DML_TARGET_VERSION 0x4000
31#elif defined(NTDDI_WIN10_FE) && NTDDI_VERSION >= NTDDI_WIN10_FE
32#define DML_TARGET_VERSION 0x3000
33#elif defined(NTDDI_WIN10_VB) && NTDDI_VERSION >= NTDDI_WIN10_VB // Windows 10 2004 Update
34#define DML_TARGET_VERSION 0x2000
35#else // defined(NTDDI_WIN10_19H1) && NTDDI_VERSION >= NTDDI_WIN10_19H1 // Windows 10 1903 Update
36#define DML_TARGET_VERSION 0x1000
37#endif
38
39#endif // !defined(DML_TARGET_VERSION)
40
41// ===================================================================================================================
42// DirectML constants
43// ===================================================================================================================
44
45static const UINT DML_TENSOR_DIMENSION_COUNT_MAX = 5;
46#if DML_TARGET_VERSION >= 0x3000
47static const UINT DML_TENSOR_DIMENSION_COUNT_MAX1 = 8;
48#endif
49
50static const UINT DML_TEMPORARY_BUFFER_ALIGNMENT = 256;
51static const UINT DML_PERSISTENT_BUFFER_ALIGNMENT = 256;
52
53static const UINT DML_MINIMUM_BUFFER_TENSOR_ALIGNMENT = 16;
54
55
56// ===================================================================================================================
57// Interface declarations
58// ===================================================================================================================
59
60interface IDMLObject;
61interface IDMLDevice;
62interface IDMLDeviceChild;
63interface IDMLPageable;
64interface IDMLDispatchable;
65interface IDMLOperator;
66interface IDMLCompiledOperator;
67interface IDMLOperatorInitializer;
68interface IDMLBindingTable;
69interface IDMLCommandRecorder;
70
71
72// ===================================================================================================================
73// Tensor descriptions
74// ===================================================================================================================
75
76enum DML_TENSOR_DATA_TYPE
77{
78 DML_TENSOR_DATA_TYPE_UNKNOWN,
79 DML_TENSOR_DATA_TYPE_FLOAT32,
80 DML_TENSOR_DATA_TYPE_FLOAT16,
81 DML_TENSOR_DATA_TYPE_UINT32,
82 DML_TENSOR_DATA_TYPE_UINT16,
83 DML_TENSOR_DATA_TYPE_UINT8,
84 DML_TENSOR_DATA_TYPE_INT32,
85 DML_TENSOR_DATA_TYPE_INT16,
86 DML_TENSOR_DATA_TYPE_INT8,
87 DML_TENSOR_DATA_TYPE_FLOAT64,
88 DML_TENSOR_DATA_TYPE_UINT64,
89 DML_TENSOR_DATA_TYPE_INT64,
90#if DML_TARGET_VERSION >= 0x6300
91 DML_TENSOR_DATA_TYPE_UINT4,
92 DML_TENSOR_DATA_TYPE_INT4,
93#endif // DML_TARGET_VERSION >= 0x6300
94};
95
96enum DML_TENSOR_TYPE
97{
98 DML_TENSOR_TYPE_INVALID,
99
100 DML_TENSOR_TYPE_BUFFER,
101};
102
103enum DML_TENSOR_FLAGS
104{
105 DML_TENSOR_FLAG_NONE = 0x0,
106 DML_TENSOR_FLAG_OWNED_BY_DML = 0x1,
107};
108
109DEFINE_ENUM_FLAG_OPERATORS(DML_TENSOR_FLAGS)
110
111struct DML_BUFFER_TENSOR_DESC
112{
113 DML_TENSOR_DATA_TYPE DataType;
114 DML_TENSOR_FLAGS Flags;
115 UINT DimensionCount;
116 _Field_size_(DimensionCount) const UINT* Sizes;
117 _Field_size_opt_(DimensionCount) const UINT* Strides;
118 UINT64 TotalTensorSizeInBytes;
119 UINT GuaranteedBaseOffsetAlignment;
120};
121
122struct DML_TENSOR_DESC
123{
124 DML_TENSOR_TYPE Type;
125 _Field_size_(_Inexpressible_("Dependent on tensor type")) const void* Desc;
126};
127
128
129// ===================================================================================================================
130// Operator types
131// ===================================================================================================================
132
133enum DML_OPERATOR_TYPE
134{
135 DML_OPERATOR_INVALID,
136
137 DML_OPERATOR_ELEMENT_WISE_IDENTITY,
138 DML_OPERATOR_ELEMENT_WISE_ABS,
139 DML_OPERATOR_ELEMENT_WISE_ACOS,
140 DML_OPERATOR_ELEMENT_WISE_ADD,
141 DML_OPERATOR_ELEMENT_WISE_ASIN,
142 DML_OPERATOR_ELEMENT_WISE_ATAN,
143 DML_OPERATOR_ELEMENT_WISE_CEIL,
144 DML_OPERATOR_ELEMENT_WISE_CLIP,
145 DML_OPERATOR_ELEMENT_WISE_COS,
146 DML_OPERATOR_ELEMENT_WISE_DIVIDE,
147 DML_OPERATOR_ELEMENT_WISE_EXP,
148 DML_OPERATOR_ELEMENT_WISE_FLOOR,
149 DML_OPERATOR_ELEMENT_WISE_LOG,
150 DML_OPERATOR_ELEMENT_WISE_LOGICAL_AND,
151 DML_OPERATOR_ELEMENT_WISE_LOGICAL_EQUALS,
152 DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN,
153 DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN,
154 DML_OPERATOR_ELEMENT_WISE_LOGICAL_NOT,
155 DML_OPERATOR_ELEMENT_WISE_LOGICAL_OR,
156 DML_OPERATOR_ELEMENT_WISE_LOGICAL_XOR,
157 DML_OPERATOR_ELEMENT_WISE_MAX,
158 DML_OPERATOR_ELEMENT_WISE_MEAN,
159 DML_OPERATOR_ELEMENT_WISE_MIN,
160 DML_OPERATOR_ELEMENT_WISE_MULTIPLY,
161 DML_OPERATOR_ELEMENT_WISE_POW,
162 DML_OPERATOR_ELEMENT_WISE_CONSTANT_POW,
163 DML_OPERATOR_ELEMENT_WISE_RECIP,
164 DML_OPERATOR_ELEMENT_WISE_SIN,
165 DML_OPERATOR_ELEMENT_WISE_SQRT,
166 DML_OPERATOR_ELEMENT_WISE_SUBTRACT,
167 DML_OPERATOR_ELEMENT_WISE_TAN,
168 DML_OPERATOR_ELEMENT_WISE_THRESHOLD,
169 DML_OPERATOR_ELEMENT_WISE_QUANTIZE_LINEAR,
170 DML_OPERATOR_ELEMENT_WISE_DEQUANTIZE_LINEAR,
171 DML_OPERATOR_ACTIVATION_ELU,
172 DML_OPERATOR_ACTIVATION_HARDMAX,
173 DML_OPERATOR_ACTIVATION_HARD_SIGMOID,
174 DML_OPERATOR_ACTIVATION_IDENTITY,
175 DML_OPERATOR_ACTIVATION_LEAKY_RELU,
176 DML_OPERATOR_ACTIVATION_LINEAR,
177 DML_OPERATOR_ACTIVATION_LOG_SOFTMAX,
178 DML_OPERATOR_ACTIVATION_PARAMETERIZED_RELU,
179 DML_OPERATOR_ACTIVATION_PARAMETRIC_SOFTPLUS,
180 DML_OPERATOR_ACTIVATION_RELU,
181 DML_OPERATOR_ACTIVATION_SCALED_ELU,
182 DML_OPERATOR_ACTIVATION_SCALED_TANH,
183 DML_OPERATOR_ACTIVATION_SIGMOID,
184 DML_OPERATOR_ACTIVATION_SOFTMAX,
185 DML_OPERATOR_ACTIVATION_SOFTPLUS,
186 DML_OPERATOR_ACTIVATION_SOFTSIGN,
187 DML_OPERATOR_ACTIVATION_TANH,
188 DML_OPERATOR_ACTIVATION_THRESHOLDED_RELU,
189 DML_OPERATOR_CONVOLUTION,
190 DML_OPERATOR_GEMM,
191 DML_OPERATOR_REDUCE,
192 DML_OPERATOR_AVERAGE_POOLING,
193 DML_OPERATOR_LP_POOLING,
194 DML_OPERATOR_MAX_POOLING,
195 DML_OPERATOR_ROI_POOLING,
196 DML_OPERATOR_SLICE,
197 DML_OPERATOR_CAST,
198 DML_OPERATOR_SPLIT,
199 DML_OPERATOR_JOIN,
200 DML_OPERATOR_PADDING,
201 DML_OPERATOR_VALUE_SCALE_2D,
202 DML_OPERATOR_UPSAMPLE_2D,
203 DML_OPERATOR_GATHER,
204 DML_OPERATOR_SPACE_TO_DEPTH,
205 DML_OPERATOR_DEPTH_TO_SPACE,
206 DML_OPERATOR_TILE,
207 DML_OPERATOR_TOP_K,
208 DML_OPERATOR_BATCH_NORMALIZATION,
209 DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION,
210 DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION,
211 DML_OPERATOR_LP_NORMALIZATION,
212 DML_OPERATOR_RNN,
213 DML_OPERATOR_LSTM,
214 DML_OPERATOR_GRU,
215
216#if DML_TARGET_VERSION >= 0x2000
217 DML_OPERATOR_ELEMENT_WISE_SIGN,
218 DML_OPERATOR_ELEMENT_WISE_IS_NAN,
219 DML_OPERATOR_ELEMENT_WISE_ERF,
220 DML_OPERATOR_ELEMENT_WISE_SINH,
221 DML_OPERATOR_ELEMENT_WISE_COSH,
222 DML_OPERATOR_ELEMENT_WISE_TANH,
223 DML_OPERATOR_ELEMENT_WISE_ASINH,
224 DML_OPERATOR_ELEMENT_WISE_ACOSH,
225 DML_OPERATOR_ELEMENT_WISE_ATANH,
226 DML_OPERATOR_ELEMENT_WISE_IF,
227 DML_OPERATOR_ELEMENT_WISE_ADD1,
228 DML_OPERATOR_ACTIVATION_SHRINK,
229 DML_OPERATOR_MAX_POOLING1,
230 DML_OPERATOR_MAX_UNPOOLING,
231 DML_OPERATOR_DIAGONAL_MATRIX,
232 DML_OPERATOR_SCATTER_ELEMENTS,
233 DML_OPERATOR_SCATTER = DML_OPERATOR_SCATTER_ELEMENTS, // Alias name for backwards compatibility.
234 DML_OPERATOR_ONE_HOT,
235 DML_OPERATOR_RESAMPLE,
236#endif // DML_TARGET_VERSION >= 0x2000
237
238#if DML_TARGET_VERSION >= 0x2100
239 DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_LEFT,
240 DML_OPERATOR_ELEMENT_WISE_BIT_SHIFT_RIGHT,
241 DML_OPERATOR_ELEMENT_WISE_ROUND,
242 DML_OPERATOR_ELEMENT_WISE_IS_INFINITY,
243 DML_OPERATOR_ELEMENT_WISE_MODULUS_TRUNCATE,
244 DML_OPERATOR_ELEMENT_WISE_MODULUS_FLOOR,
245 DML_OPERATOR_FILL_VALUE_CONSTANT,
246 DML_OPERATOR_FILL_VALUE_SEQUENCE,
247 DML_OPERATOR_CUMULATIVE_SUMMATION,
248 DML_OPERATOR_REVERSE_SUBSEQUENCES,
249 DML_OPERATOR_GATHER_ELEMENTS,
250 DML_OPERATOR_GATHER_ND,
251 DML_OPERATOR_SCATTER_ND,
252 DML_OPERATOR_MAX_POOLING2,
253 DML_OPERATOR_SLICE1,
254 DML_OPERATOR_TOP_K1,
255 DML_OPERATOR_DEPTH_TO_SPACE1,
256 DML_OPERATOR_SPACE_TO_DEPTH1,
257 DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION1,
258 DML_OPERATOR_RESAMPLE1,
259 DML_OPERATOR_MATRIX_MULTIPLY_INTEGER,
260 DML_OPERATOR_QUANTIZED_LINEAR_MATRIX_MULTIPLY,
261 DML_OPERATOR_CONVOLUTION_INTEGER,
262 DML_OPERATOR_QUANTIZED_LINEAR_CONVOLUTION,
263#endif // DML_TARGET_VERSION >= 0x2100
264
265#if DML_TARGET_VERSION >= 0x3000
266 DML_OPERATOR_ELEMENT_WISE_BIT_AND,
267 DML_OPERATOR_ELEMENT_WISE_BIT_OR,
268 DML_OPERATOR_ELEMENT_WISE_BIT_XOR,
269 DML_OPERATOR_ELEMENT_WISE_BIT_NOT,
270 DML_OPERATOR_ELEMENT_WISE_BIT_COUNT,
271 DML_OPERATOR_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL,
272 DML_OPERATOR_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL,
273 DML_OPERATOR_ACTIVATION_CELU,
274 DML_OPERATOR_ACTIVATION_RELU_GRAD,
275 DML_OPERATOR_AVERAGE_POOLING_GRAD,
276 DML_OPERATOR_MAX_POOLING_GRAD,
277 DML_OPERATOR_RANDOM_GENERATOR,
278 DML_OPERATOR_NONZERO_COORDINATES,
279 DML_OPERATOR_RESAMPLE_GRAD,
280 DML_OPERATOR_SLICE_GRAD,
281 DML_OPERATOR_ADAM_OPTIMIZER,
282 DML_OPERATOR_ARGMIN,
283 DML_OPERATOR_ARGMAX,
284 DML_OPERATOR_ROI_ALIGN,
285 DML_OPERATOR_GATHER_ND1,
286#endif // DML_TARGET_VERSION >= 0x3000
287
288#if DML_TARGET_VERSION >= 0x3100
289 DML_OPERATOR_ELEMENT_WISE_ATAN_YX,
290 DML_OPERATOR_ELEMENT_WISE_CLIP_GRAD,
291 DML_OPERATOR_ELEMENT_WISE_DIFFERENCE_SQUARE,
292 DML_OPERATOR_LOCAL_RESPONSE_NORMALIZATION_GRAD,
293 DML_OPERATOR_CUMULATIVE_PRODUCT,
294 DML_OPERATOR_BATCH_NORMALIZATION_GRAD,
295#endif // DML_TARGET_VERSION >= 0x3100
296
297#if DML_TARGET_VERSION >= 0x4000
298 DML_OPERATOR_ELEMENT_WISE_QUANTIZED_LINEAR_ADD,
299 DML_OPERATOR_DYNAMIC_QUANTIZE_LINEAR,
300 DML_OPERATOR_ROI_ALIGN1,
301#endif // DML_TARGET_VERSION >= 0x4000
302
303#if DML_TARGET_VERSION >= 0x4100
304 DML_OPERATOR_ROI_ALIGN_GRAD,
305 DML_OPERATOR_BATCH_NORMALIZATION_TRAINING,
306 DML_OPERATOR_BATCH_NORMALIZATION_TRAINING_GRAD,
307#endif // DML_TARGET_VERSION >= 0x4100
308
309#if DML_TARGET_VERSION >= 0x5000
310 DML_OPERATOR_ELEMENT_WISE_CLIP1,
311 DML_OPERATOR_ELEMENT_WISE_CLIP_GRAD1,
312 DML_OPERATOR_PADDING1,
313 DML_OPERATOR_ELEMENT_WISE_NEGATE,
314#endif // DML_TARGET_VERSION >= 0x5000
315
316#if DML_TARGET_VERSION >= 0x5100
317 DML_OPERATOR_ACTIVATION_GELU,
318 DML_OPERATOR_ACTIVATION_SOFTMAX1,
319 DML_OPERATOR_ACTIVATION_LOG_SOFTMAX1,
320 DML_OPERATOR_ACTIVATION_HARDMAX1,
321 DML_OPERATOR_RESAMPLE2,
322 DML_OPERATOR_RESAMPLE_GRAD1,
323 DML_OPERATOR_DIAGONAL_MATRIX1,
324#endif // DML_TARGET_VERSION >= 0x5100
325
326#if DML_TARGET_VERSION >= 0x6100
327 DML_OPERATOR_MULTIHEAD_ATTENTION,
328#endif // DML_TARGET_VERSION >= 0x6100
329
330#if DML_TARGET_VERSION >= 0x6200
331 DML_OPERATOR_LP_POOLING1,
332 DML_OPERATOR_AVERAGE_POOLING1,
333 DML_OPERATOR_ACTIVATION_SWISH,
334 DML_OPERATOR_ACTIVATION_HARD_SWISH,
335 DML_OPERATOR_QUANTIZED_LINEAR_AVERAGE_POOLING,
336 DML_OPERATOR_MATRIX_MULTIPLY_INTEGER_TO_FLOAT,
337#endif // DML_TARGET_VERSION >= 0x6200
338
339#if DML_TARGET_VERSION >= 0x6300
340 DML_OPERATOR_MEAN_VARIANCE_NORMALIZATION2,
341 DML_OPERATOR_MULTIHEAD_ATTENTION1,
342 DML_OPERATOR_QUANTIZE,
343 DML_OPERATOR_DEQUANTIZE,
344#endif // DML_TARGET_VERSION >= 0x6300
345
346#if DML_TARGET_VERSION >= 0x6400
347 DML_OPERATOR_RESAMPLE3,
348 DML_OPERATOR_FOLD,
349 DML_OPERATOR_UNFOLD,
350#endif // DML_TARGET_VERSION >= 0x6400
351};
352
353// ===================================================================================================================
354// Operator enumerations and structures
355// ===================================================================================================================
356
357enum DML_REDUCE_FUNCTION
358{
359 DML_REDUCE_FUNCTION_ARGMAX,
360 DML_REDUCE_FUNCTION_ARGMIN,
361 DML_REDUCE_FUNCTION_AVERAGE,
362 DML_REDUCE_FUNCTION_L1,
363 DML_REDUCE_FUNCTION_L2,
364 DML_REDUCE_FUNCTION_LOG_SUM,
365 DML_REDUCE_FUNCTION_LOG_SUM_EXP,
366 DML_REDUCE_FUNCTION_MAX,
367 DML_REDUCE_FUNCTION_MIN,
368 DML_REDUCE_FUNCTION_MULTIPLY,
369 DML_REDUCE_FUNCTION_SUM,
370 DML_REDUCE_FUNCTION_SUM_SQUARE,
371};
372
373enum DML_MATRIX_TRANSFORM
374{
375 DML_MATRIX_TRANSFORM_NONE,
376 DML_MATRIX_TRANSFORM_TRANSPOSE,
377};
378
379enum DML_CONVOLUTION_MODE
380{
381 DML_CONVOLUTION_MODE_CONVOLUTION,
382 DML_CONVOLUTION_MODE_CROSS_CORRELATION,
383};
384
385enum DML_CONVOLUTION_DIRECTION
386{
387 DML_CONVOLUTION_DIRECTION_FORWARD,
388 DML_CONVOLUTION_DIRECTION_BACKWARD,
389};
390
391enum DML_PADDING_MODE
392{
393 DML_PADDING_MODE_CONSTANT,
394 DML_PADDING_MODE_EDGE,
395 DML_PADDING_MODE_REFLECTION,
396
397#if DML_TARGET_VERSION >= 0x3000
398 DML_PADDING_MODE_SYMMETRIC,
399#endif
400
401#if DML_TARGET_VERSION >= 0x6400
402 DML_PADDING_MODE_WRAP,
403#endif
404};
405
406enum DML_INTERPOLATION_MODE
407{
408 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR,
409 DML_INTERPOLATION_MODE_LINEAR,
410};
411
412struct DML_SCALE_BIAS
413{
414 FLOAT Scale;
415 FLOAT Bias;
416};
417
418struct DML_SIZE_2D
419{
420 UINT Width;
421 UINT Height;
422};
423
424enum DML_RECURRENT_NETWORK_DIRECTION
425{
426 DML_RECURRENT_NETWORK_DIRECTION_FORWARD,
427 DML_RECURRENT_NETWORK_DIRECTION_BACKWARD,
428 DML_RECURRENT_NETWORK_DIRECTION_BIDIRECTIONAL,
429};
430
431#if DML_TARGET_VERSION >= 0x2100
432
433enum DML_ROUNDING_MODE
434{
435 DML_ROUNDING_MODE_HALVES_TO_NEAREST_EVEN,
436 DML_ROUNDING_MODE_TOWARD_ZERO,
437 DML_ROUNDING_MODE_TOWARD_INFINITY,
438};
439
440enum DML_IS_INFINITY_MODE
441{
442 DML_IS_INFINITY_MODE_EITHER = 0,
443 DML_IS_INFINITY_MODE_POSITIVE = 1,
444 DML_IS_INFINITY_MODE_NEGATIVE = 2,
445};
446
447enum DML_AXIS_DIRECTION
448{
449 DML_AXIS_DIRECTION_INCREASING = 0,
450 DML_AXIS_DIRECTION_DECREASING = 1,
451};
452
453enum DML_DEPTH_SPACE_ORDER
454{
455 DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW,
456 DML_DEPTH_SPACE_ORDER_COLUMN_ROW_DEPTH,
457};
458
459union DML_SCALAR_UNION
460{
461 BYTE Bytes[8];
462 INT8 Int8;
463 UINT8 UInt8;
464 INT16 Int16;
465 UINT16 UInt16;
466 INT32 Int32;
467 UINT32 UInt32;
468 INT64 Int64;
469 UINT64 UInt64;
470 FLOAT Float32;
471 DOUBLE Float64;
472};
473
474#endif // DML_TARGET_VERSION >= 0x2100
475
476#if DML_TARGET_VERSION >= 0x3000
477
478enum DML_RANDOM_GENERATOR_TYPE
479{
480 DML_RANDOM_GENERATOR_TYPE_PHILOX_4X32_10
481};
482
483#endif // DML_TARGET_VERSION >= 0x3000
484
485#if DML_TARGET_VERSION >= 0x6100
486
487enum DML_MULTIHEAD_ATTENTION_MASK_TYPE
488{
489 DML_MULTIHEAD_ATTENTION_MASK_TYPE_NONE,
490 DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_SEQUENCE_LENGTH,
491 DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_SEQUENCE_END_START,
492 DML_MULTIHEAD_ATTENTION_MASK_TYPE_KEY_QUERY_SEQUENCE_LENGTH_START_END,
493 DML_MULTIHEAD_ATTENTION_MASK_TYPE_BOOLEAN,
494};
495
496#endif // DML_TARGET_VERSION >= 0x6100
497
498#if DML_TARGET_VERSION >= 0x6300
499
500enum DML_QUANTIZATION_TYPE
501{
502 DML_QUANTIZATION_TYPE_NONE,
503 DML_QUANTIZATION_TYPE_SCALE,
504 DML_QUANTIZATION_TYPE_SCALE_ZERO_POINT,
505};
506
507#endif // DML_TARGET_VERSION >= 0x6300
508
509// ===================================================================================================================
510// Operator descriptions
511// ===================================================================================================================
512
513struct DML_OPERATOR_DESC
514{
515 DML_OPERATOR_TYPE Type;
516 _Field_size_(_Inexpressible_("Dependent on operator type")) const void* Desc;
517};
518
519struct DML_ELEMENT_WISE_IDENTITY_OPERATOR_DESC
520{
521 const DML_TENSOR_DESC* InputTensor;
522 const DML_TENSOR_DESC* OutputTensor;
523 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
524};
525
526struct DML_ELEMENT_WISE_ABS_OPERATOR_DESC
527{
528 const DML_TENSOR_DESC* InputTensor;
529 const DML_TENSOR_DESC* OutputTensor;
530 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
531};
532
533struct DML_ELEMENT_WISE_ACOS_OPERATOR_DESC
534{
535 const DML_TENSOR_DESC* InputTensor;
536 const DML_TENSOR_DESC* OutputTensor;
537 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
538};
539
540struct DML_ELEMENT_WISE_ADD_OPERATOR_DESC
541{
542 const DML_TENSOR_DESC* ATensor;
543 const DML_TENSOR_DESC* BTensor;
544 const DML_TENSOR_DESC* OutputTensor;
545};
546
547struct DML_ELEMENT_WISE_ADD1_OPERATOR_DESC
548{
549 const DML_TENSOR_DESC* ATensor;
550 const DML_TENSOR_DESC* BTensor;
551 const DML_TENSOR_DESC* OutputTensor;
552 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
553};
554
555struct DML_ELEMENT_WISE_ASIN_OPERATOR_DESC
556{
557 const DML_TENSOR_DESC* InputTensor;
558 const DML_TENSOR_DESC* OutputTensor;
559 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
560};
561
562struct DML_ELEMENT_WISE_ATAN_OPERATOR_DESC
563{
564 const DML_TENSOR_DESC* InputTensor;
565 const DML_TENSOR_DESC* OutputTensor;
566 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
567};
568
569struct DML_ELEMENT_WISE_CEIL_OPERATOR_DESC
570{
571 const DML_TENSOR_DESC* InputTensor;
572 const DML_TENSOR_DESC* OutputTensor;
573 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
574};
575
576struct DML_ELEMENT_WISE_CLIP_OPERATOR_DESC
577{
578 const DML_TENSOR_DESC* InputTensor;
579 const DML_TENSOR_DESC* OutputTensor;
580 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
581 FLOAT Min;
582 FLOAT Max;
583};
584
585struct DML_ELEMENT_WISE_COS_OPERATOR_DESC
586{
587 const DML_TENSOR_DESC* InputTensor;
588 const DML_TENSOR_DESC* OutputTensor;
589 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
590};
591
592struct DML_ELEMENT_WISE_DIVIDE_OPERATOR_DESC
593{
594 const DML_TENSOR_DESC* ATensor;
595 const DML_TENSOR_DESC* BTensor;
596 const DML_TENSOR_DESC* OutputTensor;
597};
598
599struct DML_ELEMENT_WISE_EXP_OPERATOR_DESC
600{
601 const DML_TENSOR_DESC* InputTensor;
602 const DML_TENSOR_DESC* OutputTensor;
603 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
604};
605
606struct DML_ELEMENT_WISE_FLOOR_OPERATOR_DESC
607{
608 const DML_TENSOR_DESC* InputTensor;
609 const DML_TENSOR_DESC* OutputTensor;
610 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
611};
612
613struct DML_ELEMENT_WISE_LOG_OPERATOR_DESC
614{
615 const DML_TENSOR_DESC* InputTensor;
616 const DML_TENSOR_DESC* OutputTensor;
617 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
618};
619
620struct DML_ELEMENT_WISE_LOGICAL_AND_OPERATOR_DESC
621{
622 const DML_TENSOR_DESC* ATensor;
623 const DML_TENSOR_DESC* BTensor;
624 const DML_TENSOR_DESC* OutputTensor;
625};
626
627struct DML_ELEMENT_WISE_LOGICAL_EQUALS_OPERATOR_DESC
628{
629 const DML_TENSOR_DESC* ATensor;
630 const DML_TENSOR_DESC* BTensor;
631 const DML_TENSOR_DESC* OutputTensor;
632};
633
634struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OPERATOR_DESC
635{
636 const DML_TENSOR_DESC* ATensor;
637 const DML_TENSOR_DESC* BTensor;
638 const DML_TENSOR_DESC* OutputTensor;
639};
640
641struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OPERATOR_DESC
642{
643 const DML_TENSOR_DESC* ATensor;
644 const DML_TENSOR_DESC* BTensor;
645 const DML_TENSOR_DESC* OutputTensor;
646};
647
648struct DML_ELEMENT_WISE_LOGICAL_NOT_OPERATOR_DESC
649{
650 const DML_TENSOR_DESC* InputTensor;
651 const DML_TENSOR_DESC* OutputTensor;
652};
653
654struct DML_ELEMENT_WISE_LOGICAL_OR_OPERATOR_DESC
655{
656 const DML_TENSOR_DESC* ATensor;
657 const DML_TENSOR_DESC* BTensor;
658 const DML_TENSOR_DESC* OutputTensor;
659};
660
661struct DML_ELEMENT_WISE_LOGICAL_XOR_OPERATOR_DESC
662{
663 const DML_TENSOR_DESC* ATensor;
664 const DML_TENSOR_DESC* BTensor;
665 const DML_TENSOR_DESC* OutputTensor;
666};
667
668struct DML_ELEMENT_WISE_MAX_OPERATOR_DESC
669{
670 const DML_TENSOR_DESC* ATensor;
671 const DML_TENSOR_DESC* BTensor;
672 const DML_TENSOR_DESC* OutputTensor;
673};
674
675struct DML_ELEMENT_WISE_MEAN_OPERATOR_DESC
676{
677 const DML_TENSOR_DESC* ATensor;
678 const DML_TENSOR_DESC* BTensor;
679 const DML_TENSOR_DESC* OutputTensor;
680};
681
682struct DML_ELEMENT_WISE_MIN_OPERATOR_DESC
683{
684 const DML_TENSOR_DESC* ATensor;
685 const DML_TENSOR_DESC* BTensor;
686 const DML_TENSOR_DESC* OutputTensor;
687};
688
689struct DML_ELEMENT_WISE_MULTIPLY_OPERATOR_DESC
690{
691 const DML_TENSOR_DESC* ATensor;
692 const DML_TENSOR_DESC* BTensor;
693 const DML_TENSOR_DESC* OutputTensor;
694};
695
696struct DML_ELEMENT_WISE_POW_OPERATOR_DESC
697{
698 const DML_TENSOR_DESC* InputTensor;
699 const DML_TENSOR_DESC* ExponentTensor;
700 const DML_TENSOR_DESC* OutputTensor;
701 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
702};
703
704struct DML_ELEMENT_WISE_CONSTANT_POW_OPERATOR_DESC
705{
706 const DML_TENSOR_DESC* InputTensor;
707 const DML_TENSOR_DESC* OutputTensor;
708 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
709 FLOAT Exponent;
710};
711
712struct DML_ELEMENT_WISE_RECIP_OPERATOR_DESC
713{
714 const DML_TENSOR_DESC* InputTensor;
715 const DML_TENSOR_DESC* OutputTensor;
716 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
717};
718
719struct DML_ELEMENT_WISE_SIN_OPERATOR_DESC
720{
721 const DML_TENSOR_DESC* InputTensor;
722 const DML_TENSOR_DESC* OutputTensor;
723 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
724};
725
726struct DML_ELEMENT_WISE_SQRT_OPERATOR_DESC
727{
728 const DML_TENSOR_DESC* InputTensor;
729 const DML_TENSOR_DESC* OutputTensor;
730 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
731};
732
733struct DML_ELEMENT_WISE_SUBTRACT_OPERATOR_DESC
734{
735 const DML_TENSOR_DESC* ATensor;
736 const DML_TENSOR_DESC* BTensor;
737 const DML_TENSOR_DESC* OutputTensor;
738};
739
740struct DML_ELEMENT_WISE_TAN_OPERATOR_DESC
741{
742 const DML_TENSOR_DESC* InputTensor;
743 const DML_TENSOR_DESC* OutputTensor;
744 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
745};
746
747struct DML_ELEMENT_WISE_THRESHOLD_OPERATOR_DESC
748{
749 const DML_TENSOR_DESC* InputTensor;
750 const DML_TENSOR_DESC* OutputTensor;
751 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
752 FLOAT Min;
753};
754
755struct DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC
756{
757 const DML_TENSOR_DESC* InputTensor;
758 const DML_TENSOR_DESC* ScaleTensor;
759 _Maybenull_ const DML_TENSOR_DESC* ZeroPointTensor;
760 const DML_TENSOR_DESC* OutputTensor;
761};
762
763struct DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC
764{
765 const DML_TENSOR_DESC* InputTensor;
766 const DML_TENSOR_DESC* ScaleTensor;
767 _Maybenull_ const DML_TENSOR_DESC* ZeroPointTensor;
768 const DML_TENSOR_DESC* OutputTensor;
769};
770
771struct DML_ACTIVATION_ELU_OPERATOR_DESC
772{
773 const DML_TENSOR_DESC* InputTensor;
774 const DML_TENSOR_DESC* OutputTensor;
775 FLOAT Alpha;
776};
777
778struct DML_ACTIVATION_HARDMAX_OPERATOR_DESC
779{
780 const DML_TENSOR_DESC* InputTensor;
781 const DML_TENSOR_DESC* OutputTensor;
782};
783
784struct DML_ACTIVATION_HARD_SIGMOID_OPERATOR_DESC
785{
786 const DML_TENSOR_DESC* InputTensor;
787 const DML_TENSOR_DESC* OutputTensor;
788 FLOAT Alpha;
789 FLOAT Beta;
790};
791
792struct DML_ACTIVATION_IDENTITY_OPERATOR_DESC
793{
794 const DML_TENSOR_DESC* InputTensor;
795 const DML_TENSOR_DESC* OutputTensor;
796};
797
798struct DML_ACTIVATION_LEAKY_RELU_OPERATOR_DESC
799{
800 const DML_TENSOR_DESC* InputTensor;
801 const DML_TENSOR_DESC* OutputTensor;
802 FLOAT Alpha;
803};
804
805struct DML_ACTIVATION_LINEAR_OPERATOR_DESC
806{
807 const DML_TENSOR_DESC* InputTensor;
808 const DML_TENSOR_DESC* OutputTensor;
809 FLOAT Alpha;
810 FLOAT Beta;
811};
812
813struct DML_ACTIVATION_LOG_SOFTMAX_OPERATOR_DESC
814{
815 const DML_TENSOR_DESC* InputTensor;
816 const DML_TENSOR_DESC* OutputTensor;
817};
818
819struct DML_ACTIVATION_PARAMETERIZED_RELU_OPERATOR_DESC
820{
821 const DML_TENSOR_DESC* InputTensor;
822 const DML_TENSOR_DESC* SlopeTensor;
823 const DML_TENSOR_DESC* OutputTensor;
824};
825
826struct DML_ACTIVATION_PARAMETRIC_SOFTPLUS_OPERATOR_DESC
827{
828 const DML_TENSOR_DESC* InputTensor;
829 const DML_TENSOR_DESC* OutputTensor;
830 FLOAT Alpha;
831 FLOAT Beta;
832};
833
834struct DML_ACTIVATION_RELU_OPERATOR_DESC
835{
836 const DML_TENSOR_DESC* InputTensor;
837 const DML_TENSOR_DESC* OutputTensor;
838};
839
840struct DML_ACTIVATION_SCALED_ELU_OPERATOR_DESC
841{
842 const DML_TENSOR_DESC* InputTensor;
843 const DML_TENSOR_DESC* OutputTensor;
844 FLOAT Alpha;
845 FLOAT Gamma;
846};
847
848struct DML_ACTIVATION_SCALED_TANH_OPERATOR_DESC
849{
850 const DML_TENSOR_DESC* InputTensor;
851 const DML_TENSOR_DESC* OutputTensor;
852 FLOAT Alpha;
853 FLOAT Beta;
854};
855
856struct DML_ACTIVATION_SIGMOID_OPERATOR_DESC
857{
858 const DML_TENSOR_DESC* InputTensor;
859 const DML_TENSOR_DESC* OutputTensor;
860};
861
862struct DML_ACTIVATION_SOFTMAX_OPERATOR_DESC
863{
864 const DML_TENSOR_DESC* InputTensor;
865 const DML_TENSOR_DESC* OutputTensor;
866};
867
868struct DML_ACTIVATION_SOFTPLUS_OPERATOR_DESC
869{
870 const DML_TENSOR_DESC* InputTensor;
871 const DML_TENSOR_DESC* OutputTensor;
872 FLOAT Steepness;
873};
874
875struct DML_ACTIVATION_SOFTSIGN_OPERATOR_DESC
876{
877 const DML_TENSOR_DESC* InputTensor;
878 const DML_TENSOR_DESC* OutputTensor;
879};
880
881struct DML_ACTIVATION_TANH_OPERATOR_DESC
882{
883 const DML_TENSOR_DESC* InputTensor;
884 const DML_TENSOR_DESC* OutputTensor;
885};
886
887struct DML_ACTIVATION_THRESHOLDED_RELU_OPERATOR_DESC
888{
889 const DML_TENSOR_DESC* InputTensor;
890 const DML_TENSOR_DESC* OutputTensor;
891 FLOAT Alpha;
892};
893
894struct DML_CONVOLUTION_OPERATOR_DESC
895{
896 const DML_TENSOR_DESC* InputTensor;
897 const DML_TENSOR_DESC* FilterTensor;
898 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
899 const DML_TENSOR_DESC* OutputTensor;
900 DML_CONVOLUTION_MODE Mode;
901 DML_CONVOLUTION_DIRECTION Direction;
902 UINT DimensionCount;
903 _Field_size_(DimensionCount) const UINT* Strides;
904 _Field_size_(DimensionCount) const UINT* Dilations;
905 _Field_size_(DimensionCount) const UINT* StartPadding;
906 _Field_size_(DimensionCount) const UINT* EndPadding;
907 _Field_size_(DimensionCount) const UINT* OutputPadding;
908 UINT GroupCount;
909 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
910};
911
912struct DML_GEMM_OPERATOR_DESC
913{
914 const DML_TENSOR_DESC* ATensor;
915 const DML_TENSOR_DESC* BTensor;
916 _Maybenull_ const DML_TENSOR_DESC* CTensor;
917 const DML_TENSOR_DESC* OutputTensor;
918 DML_MATRIX_TRANSFORM TransA;
919 DML_MATRIX_TRANSFORM TransB;
920 FLOAT Alpha;
921 FLOAT Beta;
922 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
923};
924
925struct DML_REDUCE_OPERATOR_DESC
926{
927 DML_REDUCE_FUNCTION Function;
928 const DML_TENSOR_DESC* InputTensor;
929 const DML_TENSOR_DESC* OutputTensor;
930 UINT AxisCount;
931 _Field_size_(AxisCount) const UINT* Axes;
932};
933
934struct DML_AVERAGE_POOLING_OPERATOR_DESC
935{
936 const DML_TENSOR_DESC* InputTensor;
937 const DML_TENSOR_DESC* OutputTensor;
938 UINT DimensionCount;
939 _Field_size_(DimensionCount) const UINT* Strides;
940 _Field_size_(DimensionCount) const UINT* WindowSize;
941 _Field_size_(DimensionCount) const UINT* StartPadding;
942 _Field_size_(DimensionCount) const UINT* EndPadding;
943 BOOL IncludePadding;
944};
945
946struct DML_LP_POOLING_OPERATOR_DESC
947{
948 const DML_TENSOR_DESC* InputTensor;
949 const DML_TENSOR_DESC* OutputTensor;
950 UINT DimensionCount;
951 _Field_size_(DimensionCount) const UINT* Strides;
952 _Field_size_(DimensionCount) const UINT* WindowSize;
953 _Field_size_(DimensionCount) const UINT* StartPadding;
954 _Field_size_(DimensionCount) const UINT* EndPadding;
955 UINT P;
956};
957
958struct DML_MAX_POOLING_OPERATOR_DESC
959{
960 const DML_TENSOR_DESC* InputTensor;
961 const DML_TENSOR_DESC* OutputTensor;
962 UINT DimensionCount;
963 _Field_size_(DimensionCount) const UINT* Strides;
964 _Field_size_(DimensionCount) const UINT* WindowSize;
965 _Field_size_(DimensionCount) const UINT* StartPadding;
966 _Field_size_(DimensionCount) const UINT* EndPadding;
967};
968
969struct DML_ROI_POOLING_OPERATOR_DESC
970{
971 const DML_TENSOR_DESC* InputTensor;
972 const DML_TENSOR_DESC* ROITensor;
973 const DML_TENSOR_DESC* OutputTensor;
974 FLOAT SpatialScale;
975 DML_SIZE_2D PooledSize;
976};
977
978struct DML_SLICE_OPERATOR_DESC
979{
980 const DML_TENSOR_DESC* InputTensor;
981 const DML_TENSOR_DESC* OutputTensor;
982 UINT DimensionCount;
983 _Field_size_(DimensionCount) const UINT* Offsets;
984 _Field_size_(DimensionCount) const UINT* Sizes;
985 _Field_size_(DimensionCount) const UINT* Strides;
986};
987
988struct DML_CAST_OPERATOR_DESC
989{
990 const DML_TENSOR_DESC* InputTensor;
991 const DML_TENSOR_DESC* OutputTensor;
992};
993
994struct DML_SPLIT_OPERATOR_DESC
995{
996 const DML_TENSOR_DESC* InputTensor;
997 UINT OutputCount;
998 _Field_size_(OutputCount) const DML_TENSOR_DESC* OutputTensors;
999 UINT Axis;
1000};
1001
1002struct DML_JOIN_OPERATOR_DESC
1003{
1004 UINT InputCount;
1005 _Field_size_(InputCount) const DML_TENSOR_DESC* InputTensors;
1006 const DML_TENSOR_DESC* OutputTensor;
1007 UINT Axis;
1008};
1009
1010struct DML_PADDING_OPERATOR_DESC
1011{
1012 const DML_TENSOR_DESC* InputTensor;
1013 const DML_TENSOR_DESC* OutputTensor;
1014 DML_PADDING_MODE PaddingMode;
1015 FLOAT PaddingValue;
1016 UINT DimensionCount;
1017 _Field_size_(DimensionCount) const UINT* StartPadding;
1018 _Field_size_(DimensionCount) const UINT* EndPadding;
1019};
1020
1021struct DML_VALUE_SCALE_2D_OPERATOR_DESC
1022{
1023 const DML_TENSOR_DESC* InputTensor;
1024 const DML_TENSOR_DESC* OutputTensor;
1025 FLOAT Scale;
1026 UINT ChannelCount;
1027 _Field_size_(ChannelCount) const FLOAT* Bias;
1028};
1029
1030struct DML_UPSAMPLE_2D_OPERATOR_DESC
1031{
1032 const DML_TENSOR_DESC* InputTensor;
1033 const DML_TENSOR_DESC* OutputTensor;
1034 DML_SIZE_2D ScaleSize;
1035 DML_INTERPOLATION_MODE InterpolationMode;
1036};
1037
1038struct DML_GATHER_OPERATOR_DESC
1039{
1040 const DML_TENSOR_DESC* InputTensor;
1041 const DML_TENSOR_DESC* IndicesTensor;
1042 const DML_TENSOR_DESC* OutputTensor;
1043 UINT Axis;
1044 UINT IndexDimensions;
1045};
1046
1047struct DML_SPACE_TO_DEPTH_OPERATOR_DESC
1048{
1049 const DML_TENSOR_DESC* InputTensor;
1050 const DML_TENSOR_DESC* OutputTensor;
1051 UINT BlockSize;
1052};
1053
1054struct DML_DEPTH_TO_SPACE_OPERATOR_DESC
1055{
1056 const DML_TENSOR_DESC* InputTensor;
1057 const DML_TENSOR_DESC* OutputTensor;
1058 UINT BlockSize;
1059};
1060
1061struct DML_TILE_OPERATOR_DESC
1062{
1063 const DML_TENSOR_DESC* InputTensor;
1064 const DML_TENSOR_DESC* OutputTensor;
1065 UINT RepeatsCount;
1066 _Field_size_(RepeatsCount) const UINT* Repeats;
1067};
1068
1069struct DML_TOP_K_OPERATOR_DESC
1070{
1071 const DML_TENSOR_DESC* InputTensor;
1072 const DML_TENSOR_DESC* OutputValueTensor;
1073 const DML_TENSOR_DESC* OutputIndexTensor;
1074 UINT Axis;
1075 UINT K;
1076};
1077
1078struct DML_BATCH_NORMALIZATION_OPERATOR_DESC
1079{
1080 const DML_TENSOR_DESC* InputTensor;
1081 const DML_TENSOR_DESC* MeanTensor;
1082 const DML_TENSOR_DESC* VarianceTensor;
1083 const DML_TENSOR_DESC* ScaleTensor;
1084 const DML_TENSOR_DESC* BiasTensor;
1085 const DML_TENSOR_DESC* OutputTensor;
1086 BOOL Spatial;
1087 FLOAT Epsilon;
1088 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1089};
1090
1091struct DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC
1092{
1093 const DML_TENSOR_DESC* InputTensor;
1094 _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
1095 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1096 const DML_TENSOR_DESC* OutputTensor;
1097 BOOL CrossChannel;
1098 BOOL NormalizeVariance;
1099 FLOAT Epsilon;
1100 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1101};
1102
1103struct DML_LOCAL_RESPONSE_NORMALIZATION_OPERATOR_DESC
1104{
1105 const DML_TENSOR_DESC* InputTensor;
1106 const DML_TENSOR_DESC* OutputTensor;
1107 BOOL CrossChannel;
1108 UINT LocalSize;
1109 FLOAT Alpha;
1110 FLOAT Beta;
1111 FLOAT Bias;
1112};
1113
1114struct DML_LP_NORMALIZATION_OPERATOR_DESC
1115{
1116 const DML_TENSOR_DESC* InputTensor;
1117 const DML_TENSOR_DESC* OutputTensor;
1118 UINT Axis;
1119 FLOAT Epsilon;
1120 UINT P;
1121};
1122
1123struct DML_RNN_OPERATOR_DESC
1124{
1125 const DML_TENSOR_DESC* InputTensor;
1126 const DML_TENSOR_DESC* WeightTensor;
1127 const DML_TENSOR_DESC* RecurrenceTensor;
1128 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1129 _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
1130 _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
1131 _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
1132 _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
1133 UINT ActivationDescCount;
1134 _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
1135 DML_RECURRENT_NETWORK_DIRECTION Direction;
1136};
1137
1138struct DML_LSTM_OPERATOR_DESC
1139{
1140 const DML_TENSOR_DESC* InputTensor;
1141 const DML_TENSOR_DESC* WeightTensor;
1142 const DML_TENSOR_DESC* RecurrenceTensor;
1143 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1144 _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
1145 _Maybenull_ const DML_TENSOR_DESC* CellMemInitTensor;
1146 _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
1147 _Maybenull_ const DML_TENSOR_DESC* PeepholeTensor;
1148 _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
1149 _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
1150 _Maybenull_ const DML_TENSOR_DESC* OutputCellSingleTensor;
1151 UINT ActivationDescCount;
1152 _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
1153 DML_RECURRENT_NETWORK_DIRECTION Direction;
1154 float ClipThreshold;
1155 BOOL UseClipThreshold;
1156 BOOL CoupleInputForget;
1157};
1158
1159struct DML_GRU_OPERATOR_DESC
1160{
1161 const DML_TENSOR_DESC* InputTensor;
1162 const DML_TENSOR_DESC* WeightTensor;
1163 const DML_TENSOR_DESC* RecurrenceTensor;
1164 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1165 _Maybenull_ const DML_TENSOR_DESC* HiddenInitTensor;
1166 _Maybenull_ const DML_TENSOR_DESC* SequenceLengthsTensor;
1167 _Maybenull_ const DML_TENSOR_DESC* OutputSequenceTensor;
1168 _Maybenull_ const DML_TENSOR_DESC* OutputSingleTensor;
1169 UINT ActivationDescCount;
1170 _Field_size_(ActivationDescCount) const DML_OPERATOR_DESC* ActivationDescs;
1171 DML_RECURRENT_NETWORK_DIRECTION Direction;
1172 BOOL LinearBeforeReset;
1173};
1174
1175#if DML_TARGET_VERSION >= 0x2000
1176
1177struct DML_ELEMENT_WISE_SIGN_OPERATOR_DESC
1178{
1179 const DML_TENSOR_DESC* InputTensor;
1180 const DML_TENSOR_DESC* OutputTensor;
1181};
1182
1183struct DML_ELEMENT_WISE_IS_NAN_OPERATOR_DESC
1184{
1185 const DML_TENSOR_DESC* InputTensor;
1186 const DML_TENSOR_DESC* OutputTensor;
1187};
1188
1189struct DML_ELEMENT_WISE_ERF_OPERATOR_DESC
1190{
1191 const DML_TENSOR_DESC* InputTensor;
1192 const DML_TENSOR_DESC* OutputTensor;
1193 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1194};
1195
1196struct DML_ELEMENT_WISE_SINH_OPERATOR_DESC
1197{
1198 const DML_TENSOR_DESC* InputTensor;
1199 const DML_TENSOR_DESC* OutputTensor;
1200 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1201};
1202
1203struct DML_ELEMENT_WISE_COSH_OPERATOR_DESC
1204{
1205 const DML_TENSOR_DESC* InputTensor;
1206 const DML_TENSOR_DESC* OutputTensor;
1207 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1208};
1209
1210struct DML_ELEMENT_WISE_TANH_OPERATOR_DESC
1211{
1212 const DML_TENSOR_DESC* InputTensor;
1213 const DML_TENSOR_DESC* OutputTensor;
1214 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1215};
1216
1217struct DML_ELEMENT_WISE_ASINH_OPERATOR_DESC
1218{
1219 const DML_TENSOR_DESC* InputTensor;
1220 const DML_TENSOR_DESC* OutputTensor;
1221 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1222};
1223
1224struct DML_ELEMENT_WISE_ACOSH_OPERATOR_DESC
1225{
1226 const DML_TENSOR_DESC* InputTensor;
1227 const DML_TENSOR_DESC* OutputTensor;
1228 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1229};
1230
1231struct DML_ELEMENT_WISE_ATANH_OPERATOR_DESC
1232{
1233 const DML_TENSOR_DESC* InputTensor;
1234 const DML_TENSOR_DESC* OutputTensor;
1235 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1236};
1237
1238struct DML_ELEMENT_WISE_IF_OPERATOR_DESC
1239{
1240 const DML_TENSOR_DESC* ConditionTensor;
1241 const DML_TENSOR_DESC* ATensor;
1242 const DML_TENSOR_DESC* BTensor;
1243 const DML_TENSOR_DESC* OutputTensor;
1244};
1245
1246struct DML_ACTIVATION_SHRINK_OPERATOR_DESC
1247{
1248 const DML_TENSOR_DESC* InputTensor;
1249 const DML_TENSOR_DESC* OutputTensor;
1250 FLOAT Bias;
1251 FLOAT Threshold;
1252};
1253
1254struct DML_MAX_POOLING1_OPERATOR_DESC
1255{
1256 const DML_TENSOR_DESC* InputTensor;
1257 const DML_TENSOR_DESC* OutputTensor;
1258 _Maybenull_ const DML_TENSOR_DESC* OutputIndicesTensor;
1259 UINT DimensionCount;
1260 _Field_size_(DimensionCount) const UINT* Strides;
1261 _Field_size_(DimensionCount) const UINT* WindowSize;
1262 _Field_size_(DimensionCount) const UINT* StartPadding;
1263 _Field_size_(DimensionCount) const UINT* EndPadding;
1264};
1265
1266struct DML_MAX_UNPOOLING_OPERATOR_DESC
1267{
1268 const DML_TENSOR_DESC* InputTensor;
1269 const DML_TENSOR_DESC* IndicesTensor;
1270 const DML_TENSOR_DESC* OutputTensor;
1271};
1272
1273struct DML_DIAGONAL_MATRIX_OPERATOR_DESC
1274{
1275 const DML_TENSOR_DESC* OutputTensor;
1276 INT Offset;
1277 FLOAT Value;
1278};
1279
1280struct DML_SCATTER_OPERATOR_DESC
1281{
1282 const DML_TENSOR_DESC* InputTensor;
1283 const DML_TENSOR_DESC* IndicesTensor;
1284 const DML_TENSOR_DESC* UpdatesTensor;
1285 const DML_TENSOR_DESC* OutputTensor;
1286 UINT Axis;
1287};
1288
1289struct DML_ONE_HOT_OPERATOR_DESC
1290{
1291 const DML_TENSOR_DESC* IndicesTensor;
1292 const DML_TENSOR_DESC* ValuesTensor;
1293 const DML_TENSOR_DESC* OutputTensor;
1294 UINT Axis;
1295};
1296
1297struct DML_RESAMPLE_OPERATOR_DESC
1298{
1299 const DML_TENSOR_DESC* InputTensor;
1300 const DML_TENSOR_DESC* OutputTensor;
1301 DML_INTERPOLATION_MODE InterpolationMode;
1302 UINT ScaleCount;
1303 _Field_size_(ScaleCount) const FLOAT* Scales;
1304};
1305
1306#endif // DML_TARGET_VERSION >= 0x2000
1307
1308#if DML_TARGET_VERSION >= 0x2100
1309
1310struct DML_ELEMENT_WISE_BIT_SHIFT_LEFT_OPERATOR_DESC
1311{
1312 const DML_TENSOR_DESC* ATensor;
1313 const DML_TENSOR_DESC* BTensor;
1314 const DML_TENSOR_DESC* OutputTensor;
1315};
1316
1317struct DML_ELEMENT_WISE_BIT_SHIFT_RIGHT_OPERATOR_DESC
1318{
1319 const DML_TENSOR_DESC* ATensor;
1320 const DML_TENSOR_DESC* BTensor;
1321 const DML_TENSOR_DESC* OutputTensor;
1322};
1323
1324struct DML_ELEMENT_WISE_ROUND_OPERATOR_DESC
1325{
1326 const DML_TENSOR_DESC* InputTensor;
1327 const DML_TENSOR_DESC* OutputTensor;
1328 DML_ROUNDING_MODE RoundingMode;
1329};
1330
1331struct DML_ELEMENT_WISE_IS_INFINITY_OPERATOR_DESC
1332{
1333 const DML_TENSOR_DESC* InputTensor;
1334 const DML_TENSOR_DESC* OutputTensor;
1335 DML_IS_INFINITY_MODE InfinityMode;
1336};
1337
1338struct DML_ELEMENT_WISE_MODULUS_TRUNCATE_OPERATOR_DESC
1339{
1340 const DML_TENSOR_DESC* ATensor;
1341 const DML_TENSOR_DESC* BTensor;
1342 const DML_TENSOR_DESC* OutputTensor;
1343};
1344
1345struct DML_ELEMENT_WISE_MODULUS_FLOOR_OPERATOR_DESC
1346{
1347 const DML_TENSOR_DESC* ATensor;
1348 const DML_TENSOR_DESC* BTensor;
1349 const DML_TENSOR_DESC* OutputTensor;
1350};
1351
1352struct DML_FILL_VALUE_CONSTANT_OPERATOR_DESC
1353{
1354 const DML_TENSOR_DESC* OutputTensor;
1355 DML_TENSOR_DATA_TYPE ValueDataType;
1356 DML_SCALAR_UNION Value;
1357};
1358
1359struct DML_FILL_VALUE_SEQUENCE_OPERATOR_DESC
1360{
1361 const DML_TENSOR_DESC* OutputTensor;
1362 DML_TENSOR_DATA_TYPE ValueDataType;
1363 DML_SCALAR_UNION ValueStart;
1364 DML_SCALAR_UNION ValueDelta;
1365};
1366
1367struct DML_CUMULATIVE_SUMMATION_OPERATOR_DESC
1368{
1369 const DML_TENSOR_DESC* InputTensor;
1370 const DML_TENSOR_DESC* OutputTensor;
1371 UINT Axis;
1372 DML_AXIS_DIRECTION AxisDirection;
1373 BOOL HasExclusiveSum;
1374};
1375
1376struct DML_REVERSE_SUBSEQUENCES_OPERATOR_DESC
1377{
1378 const DML_TENSOR_DESC* InputTensor;
1379 const DML_TENSOR_DESC* SequenceLengthsTensor;
1380 const DML_TENSOR_DESC* OutputTensor;
1381 UINT Axis;
1382};
1383
1384struct DML_GATHER_ELEMENTS_OPERATOR_DESC
1385{
1386 const DML_TENSOR_DESC* InputTensor;
1387 const DML_TENSOR_DESC* IndicesTensor;
1388 const DML_TENSOR_DESC* OutputTensor;
1389 UINT Axis;
1390};
1391
1392// Alias existing operator, symmetric with DML_GATHER_ELEMENTS_OPERATOR_DESC.
1393using DML_SCATTER_ELEMENTS_OPERATOR_DESC = DML_SCATTER_OPERATOR_DESC;
1394
1395struct DML_GATHER_ND_OPERATOR_DESC
1396{
1397 const DML_TENSOR_DESC* InputTensor;
1398 const DML_TENSOR_DESC* IndicesTensor;
1399 const DML_TENSOR_DESC* OutputTensor;
1400 UINT InputDimensionCount;
1401 UINT IndicesDimensionCount;
1402};
1403
1404struct DML_SCATTER_ND_OPERATOR_DESC
1405{
1406 const DML_TENSOR_DESC* InputTensor;
1407 const DML_TENSOR_DESC* IndicesTensor;
1408 const DML_TENSOR_DESC* UpdatesTensor;
1409 const DML_TENSOR_DESC* OutputTensor;
1410 UINT InputDimensionCount;
1411 UINT IndicesDimensionCount;
1412};
1413
1414struct DML_MAX_POOLING2_OPERATOR_DESC
1415{
1416 const DML_TENSOR_DESC* InputTensor;
1417 const DML_TENSOR_DESC* OutputTensor;
1418 _Maybenull_ const DML_TENSOR_DESC* OutputIndicesTensor;
1419 UINT DimensionCount;
1420 _Field_size_(DimensionCount) const UINT* Strides;
1421 _Field_size_(DimensionCount) const UINT* WindowSize;
1422 _Field_size_(DimensionCount) const UINT* StartPadding;
1423 _Field_size_(DimensionCount) const UINT* EndPadding;
1424 _Field_size_(DimensionCount) const UINT* Dilations;
1425};
1426
1427struct DML_SLICE1_OPERATOR_DESC
1428{
1429 const DML_TENSOR_DESC* InputTensor;
1430 const DML_TENSOR_DESC* OutputTensor;
1431 UINT DimensionCount;
1432 _Field_size_(DimensionCount) const UINT* InputWindowOffsets;
1433 _Field_size_(DimensionCount) const UINT* InputWindowSizes;
1434 _Field_size_(DimensionCount) const INT* InputWindowStrides;
1435};
1436
1437struct DML_TOP_K1_OPERATOR_DESC
1438{
1439 const DML_TENSOR_DESC* InputTensor;
1440 const DML_TENSOR_DESC* OutputValueTensor;
1441 const DML_TENSOR_DESC* OutputIndexTensor;
1442 UINT Axis;
1443 UINT K;
1444 DML_AXIS_DIRECTION AxisDirection;
1445};
1446
1447struct DML_DEPTH_TO_SPACE1_OPERATOR_DESC
1448{
1449 const DML_TENSOR_DESC* InputTensor;
1450 const DML_TENSOR_DESC* OutputTensor;
1451 UINT BlockSize;
1452 DML_DEPTH_SPACE_ORDER Order;
1453};
1454
1455struct DML_SPACE_TO_DEPTH1_OPERATOR_DESC
1456{
1457 const DML_TENSOR_DESC* InputTensor;
1458 const DML_TENSOR_DESC* OutputTensor;
1459 UINT BlockSize;
1460 DML_DEPTH_SPACE_ORDER Order;
1461};
1462
1463struct DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC
1464{
1465 const DML_TENSOR_DESC* InputTensor;
1466 _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
1467 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1468 const DML_TENSOR_DESC* OutputTensor;
1469 UINT AxisCount;
1470 _Field_size_(AxisCount) const UINT* Axes;
1471 BOOL NormalizeVariance;
1472 FLOAT Epsilon;
1473 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1474};
1475
1476struct DML_RESAMPLE1_OPERATOR_DESC
1477{
1478 const DML_TENSOR_DESC* InputTensor;
1479 const DML_TENSOR_DESC* OutputTensor;
1480 DML_INTERPOLATION_MODE InterpolationMode;
1481 UINT DimensionCount;
1482 _Field_size_(DimensionCount) const FLOAT* Scales;
1483 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1484 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1485};
1486
1487struct DML_MATRIX_MULTIPLY_INTEGER_OPERATOR_DESC
1488{
1489 const DML_TENSOR_DESC* ATensor;
1490 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
1491 const DML_TENSOR_DESC* BTensor;
1492 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
1493 const DML_TENSOR_DESC* OutputTensor;
1494};
1495
1496struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC
1497{
1498 const DML_TENSOR_DESC* ATensor;
1499 const DML_TENSOR_DESC* AScaleTensor;
1500 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
1501 const DML_TENSOR_DESC* BTensor;
1502 const DML_TENSOR_DESC* BScaleTensor;
1503 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
1504 const DML_TENSOR_DESC* OutputScaleTensor;
1505 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
1506 const DML_TENSOR_DESC* OutputTensor;
1507};
1508
1509struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC
1510{
1511 const DML_TENSOR_DESC* InputTensor;
1512 _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
1513 const DML_TENSOR_DESC* FilterTensor;
1514 _Maybenull_ const DML_TENSOR_DESC* FilterZeroPointTensor;
1515 const DML_TENSOR_DESC* OutputTensor;
1516 UINT DimensionCount;
1517 _Field_size_(DimensionCount) const UINT* Strides;
1518 _Field_size_(DimensionCount) const UINT* Dilations;
1519 _Field_size_(DimensionCount) const UINT* StartPadding;
1520 _Field_size_(DimensionCount) const UINT* EndPadding;
1521 UINT GroupCount;
1522};
1523
1524struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC
1525{
1526 const DML_TENSOR_DESC* InputTensor;
1527 const DML_TENSOR_DESC* InputScaleTensor;
1528 _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
1529 const DML_TENSOR_DESC* FilterTensor;
1530 const DML_TENSOR_DESC* FilterScaleTensor;
1531 _Maybenull_ const DML_TENSOR_DESC* FilterZeroPointTensor;
1532 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
1533 const DML_TENSOR_DESC* OutputScaleTensor;
1534 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
1535 const DML_TENSOR_DESC* OutputTensor;
1536 UINT DimensionCount;
1537 _Field_size_(DimensionCount) const UINT* Strides;
1538 _Field_size_(DimensionCount) const UINT* Dilations;
1539 _Field_size_(DimensionCount) const UINT* StartPadding;
1540 _Field_size_(DimensionCount) const UINT* EndPadding;
1541 UINT GroupCount;
1542};
1543
1544#endif // DML_TARGET_VERSION >= 0x2100
1545
1546#if DML_TARGET_VERSION >= 0x3000
1547
1548struct DML_ELEMENT_WISE_BIT_AND_OPERATOR_DESC
1549{
1550 const DML_TENSOR_DESC* ATensor;
1551 const DML_TENSOR_DESC* BTensor;
1552 const DML_TENSOR_DESC* OutputTensor;
1553};
1554
1555struct DML_ELEMENT_WISE_BIT_OR_OPERATOR_DESC
1556{
1557 const DML_TENSOR_DESC* ATensor;
1558 const DML_TENSOR_DESC* BTensor;
1559 const DML_TENSOR_DESC* OutputTensor;
1560};
1561
1562struct DML_ELEMENT_WISE_BIT_XOR_OPERATOR_DESC
1563{
1564 const DML_TENSOR_DESC* ATensor;
1565 const DML_TENSOR_DESC* BTensor;
1566 const DML_TENSOR_DESC* OutputTensor;
1567};
1568
1569struct DML_ELEMENT_WISE_BIT_NOT_OPERATOR_DESC
1570{
1571 const DML_TENSOR_DESC* InputTensor;
1572 const DML_TENSOR_DESC* OutputTensor;
1573};
1574
1575struct DML_ELEMENT_WISE_BIT_COUNT_OPERATOR_DESC
1576{
1577 const DML_TENSOR_DESC* InputTensor;
1578 const DML_TENSOR_DESC* OutputTensor;
1579};
1580
1581struct DML_ELEMENT_WISE_LOGICAL_GREATER_THAN_OR_EQUAL_OPERATOR_DESC
1582{
1583 const DML_TENSOR_DESC* ATensor;
1584 const DML_TENSOR_DESC* BTensor;
1585 const DML_TENSOR_DESC* OutputTensor;
1586};
1587
1588struct DML_ELEMENT_WISE_LOGICAL_LESS_THAN_OR_EQUAL_OPERATOR_DESC
1589{
1590 const DML_TENSOR_DESC* ATensor;
1591 const DML_TENSOR_DESC* BTensor;
1592 const DML_TENSOR_DESC* OutputTensor;
1593};
1594
1595struct DML_ACTIVATION_CELU_OPERATOR_DESC
1596{
1597 const DML_TENSOR_DESC* InputTensor;
1598 const DML_TENSOR_DESC* OutputTensor;
1599 FLOAT Alpha;
1600};
1601
1602struct DML_ACTIVATION_RELU_GRAD_OPERATOR_DESC
1603{
1604 const DML_TENSOR_DESC* InputTensor;
1605 const DML_TENSOR_DESC* InputGradientTensor;
1606 const DML_TENSOR_DESC* OutputGradientTensor;
1607};
1608
1609struct DML_AVERAGE_POOLING_GRAD_OPERATOR_DESC
1610{
1611 const DML_TENSOR_DESC* InputGradientTensor;
1612 const DML_TENSOR_DESC* OutputGradientTensor;
1613 UINT DimensionCount;
1614 _Field_size_(DimensionCount) const UINT* Strides;
1615 _Field_size_(DimensionCount) const UINT* WindowSize;
1616 _Field_size_(DimensionCount) const UINT* StartPadding;
1617 _Field_size_(DimensionCount) const UINT* EndPadding;
1618 BOOL IncludePadding;
1619};
1620
1621struct DML_MAX_POOLING_GRAD_OPERATOR_DESC
1622{
1623 const DML_TENSOR_DESC* InputTensor;
1624 const DML_TENSOR_DESC* InputGradientTensor;
1625 const DML_TENSOR_DESC* OutputGradientTensor;
1626 UINT DimensionCount;
1627 _Field_size_(DimensionCount) const UINT* Strides;
1628 _Field_size_(DimensionCount) const UINT* WindowSize;
1629 _Field_size_(DimensionCount) const UINT* StartPadding;
1630 _Field_size_(DimensionCount) const UINT* EndPadding;
1631 _Field_size_(DimensionCount) const UINT* Dilations;
1632};
1633
1634struct DML_RANDOM_GENERATOR_OPERATOR_DESC
1635{
1636 const DML_TENSOR_DESC* InputStateTensor;
1637 const DML_TENSOR_DESC* OutputTensor;
1638 _Maybenull_ const DML_TENSOR_DESC* OutputStateTensor;
1639 DML_RANDOM_GENERATOR_TYPE Type;
1640};
1641
1642struct DML_NONZERO_COORDINATES_OPERATOR_DESC
1643{
1644 const DML_TENSOR_DESC* InputTensor;
1645 const DML_TENSOR_DESC* OutputCountTensor;
1646 const DML_TENSOR_DESC* OutputCoordinatesTensor;
1647};
1648
1649struct DML_RESAMPLE_GRAD_OPERATOR_DESC
1650{
1651 const DML_TENSOR_DESC* InputGradientTensor;
1652 const DML_TENSOR_DESC* OutputGradientTensor;
1653 DML_INTERPOLATION_MODE InterpolationMode;
1654 UINT DimensionCount;
1655 _Field_size_(DimensionCount) const FLOAT* Scales;
1656 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1657 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1658};
1659
1660struct DML_SLICE_GRAD_OPERATOR_DESC
1661{
1662 const DML_TENSOR_DESC* InputGradientTensor;
1663 const DML_TENSOR_DESC* OutputGradientTensor;
1664 UINT DimensionCount;
1665 _Field_size_(DimensionCount) const UINT* InputWindowOffsets;
1666 _Field_size_(DimensionCount) const UINT* InputWindowSizes;
1667 _Field_size_(DimensionCount) const INT* InputWindowStrides;
1668};
1669
1670struct DML_ADAM_OPTIMIZER_OPERATOR_DESC
1671{
1672 const DML_TENSOR_DESC* InputParametersTensor;
1673 const DML_TENSOR_DESC* InputFirstMomentTensor;
1674 const DML_TENSOR_DESC* InputSecondMomentTensor;
1675 const DML_TENSOR_DESC* GradientTensor;
1676 const DML_TENSOR_DESC* TrainingStepTensor;
1677 const DML_TENSOR_DESC* OutputParametersTensor;
1678 const DML_TENSOR_DESC* OutputFirstMomentTensor;
1679 const DML_TENSOR_DESC* OutputSecondMomentTensor;
1680 FLOAT LearningRate;
1681 FLOAT Beta1;
1682 FLOAT Beta2;
1683 FLOAT Epsilon;
1684};
1685
1686struct DML_ARGMIN_OPERATOR_DESC
1687{
1688 const DML_TENSOR_DESC* InputTensor;
1689 const DML_TENSOR_DESC* OutputTensor;
1690 UINT AxisCount;
1691 _Field_size_(AxisCount) const UINT* Axes;
1692 DML_AXIS_DIRECTION AxisDirection;
1693};
1694
1695struct DML_ARGMAX_OPERATOR_DESC
1696{
1697 const DML_TENSOR_DESC* InputTensor;
1698 const DML_TENSOR_DESC* OutputTensor;
1699 UINT AxisCount;
1700 _Field_size_(AxisCount) const UINT* Axes;
1701 DML_AXIS_DIRECTION AxisDirection;
1702};
1703
1704struct DML_ROI_ALIGN_OPERATOR_DESC
1705{
1706 const DML_TENSOR_DESC* InputTensor;
1707 const DML_TENSOR_DESC* ROITensor;
1708 const DML_TENSOR_DESC* BatchIndicesTensor;
1709 const DML_TENSOR_DESC* OutputTensor;
1710 DML_REDUCE_FUNCTION ReductionFunction;
1711 DML_INTERPOLATION_MODE InterpolationMode;
1712 FLOAT SpatialScaleX;
1713 FLOAT SpatialScaleY;
1714 FLOAT OutOfBoundsInputValue;
1715 UINT MinimumSamplesPerOutput;
1716 UINT MaximumSamplesPerOutput;
1717};
1718
1719struct DML_GATHER_ND1_OPERATOR_DESC
1720{
1721 const DML_TENSOR_DESC* InputTensor;
1722 const DML_TENSOR_DESC* IndicesTensor;
1723 const DML_TENSOR_DESC* OutputTensor;
1724 UINT InputDimensionCount;
1725 UINT IndicesDimensionCount;
1726 UINT BatchDimensionCount;
1727};
1728
1729#endif // DML_TARGET_VERSION >= 0x3000
1730
1731#if DML_TARGET_VERSION >= 0x3100
1732
1733struct DML_ELEMENT_WISE_ATAN_YX_OPERATOR_DESC
1734{
1735 const DML_TENSOR_DESC* ATensor;
1736 const DML_TENSOR_DESC* BTensor;
1737 const DML_TENSOR_DESC* OutputTensor;
1738};
1739
1740struct DML_ELEMENT_WISE_CLIP_GRAD_OPERATOR_DESC
1741{
1742 const DML_TENSOR_DESC* InputTensor;
1743 const DML_TENSOR_DESC* InputGradientTensor;
1744 const DML_TENSOR_DESC* OutputGradientTensor;
1745 FLOAT Min;
1746 FLOAT Max;
1747};
1748
1749struct DML_ELEMENT_WISE_DIFFERENCE_SQUARE_OPERATOR_DESC
1750{
1751 const DML_TENSOR_DESC* ATensor;
1752 const DML_TENSOR_DESC* BTensor;
1753 const DML_TENSOR_DESC* OutputTensor;
1754};
1755
1756struct DML_LOCAL_RESPONSE_NORMALIZATION_GRAD_OPERATOR_DESC
1757{
1758 const DML_TENSOR_DESC* InputTensor;
1759 const DML_TENSOR_DESC* InputGradientTensor;
1760 const DML_TENSOR_DESC* OutputGradientTensor;
1761 BOOL CrossChannel;
1762 UINT LocalSize;
1763 FLOAT Alpha;
1764 FLOAT Beta;
1765 FLOAT Bias;
1766};
1767
1768struct DML_CUMULATIVE_PRODUCT_OPERATOR_DESC
1769{
1770 const DML_TENSOR_DESC* InputTensor;
1771 const DML_TENSOR_DESC* OutputTensor;
1772 UINT Axis;
1773 DML_AXIS_DIRECTION AxisDirection;
1774 BOOL HasExclusiveProduct;
1775};
1776
1777struct DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC
1778{
1779 const DML_TENSOR_DESC* InputTensor;
1780 const DML_TENSOR_DESC* InputGradientTensor;
1781 const DML_TENSOR_DESC* MeanTensor;
1782 const DML_TENSOR_DESC* VarianceTensor;
1783 const DML_TENSOR_DESC* ScaleTensor;
1784
1785 const DML_TENSOR_DESC* OutputGradientTensor;
1786 const DML_TENSOR_DESC* OutputScaleGradientTensor;
1787 const DML_TENSOR_DESC* OutputBiasGradientTensor;
1788
1789 FLOAT Epsilon;
1790};
1791
1792#endif // DML_TARGET_VERSION >= 0x3100
1793
1794#if DML_TARGET_VERSION >= 0x4000
1795struct DML_ELEMENT_WISE_QUANTIZED_LINEAR_ADD_OPERATOR_DESC
1796{
1797 const DML_TENSOR_DESC* ATensor;
1798 const DML_TENSOR_DESC* AScaleTensor;
1799 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
1800 const DML_TENSOR_DESC* BTensor;
1801 const DML_TENSOR_DESC* BScaleTensor;
1802 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
1803 const DML_TENSOR_DESC* OutputScaleTensor; // This is an input tensor
1804 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor; // This is an input tensor
1805 const DML_TENSOR_DESC* OutputTensor;
1806};
1807
1808struct DML_DYNAMIC_QUANTIZE_LINEAR_OPERATOR_DESC
1809{
1810 const DML_TENSOR_DESC* InputTensor;
1811 const DML_TENSOR_DESC* OutputTensor;
1812 const DML_TENSOR_DESC* OutputScaleTensor; // This is an output tensor
1813 const DML_TENSOR_DESC* OutputZeroPointTensor; // This is an output tensor
1814};
1815
1816struct DML_ROI_ALIGN1_OPERATOR_DESC
1817{
1818 const DML_TENSOR_DESC* InputTensor;
1819 const DML_TENSOR_DESC* ROITensor;
1820 const DML_TENSOR_DESC* BatchIndicesTensor;
1821 const DML_TENSOR_DESC* OutputTensor;
1822 DML_REDUCE_FUNCTION ReductionFunction;
1823 DML_INTERPOLATION_MODE InterpolationMode;
1824 FLOAT SpatialScaleX;
1825 FLOAT SpatialScaleY;
1826 FLOAT InputPixelOffset;
1827 FLOAT OutputPixelOffset;
1828 FLOAT OutOfBoundsInputValue;
1829 UINT MinimumSamplesPerOutput;
1830 UINT MaximumSamplesPerOutput;
1831 BOOL AlignRegionsToCorners;
1832};
1833
1834#endif // DML_TARGET_VERSION >= 0x4000
1835
1836#if DML_TARGET_VERSION >= 0x4100
1837
1838struct DML_ROI_ALIGN_GRAD_OPERATOR_DESC
1839{
1840 _Maybenull_ const DML_TENSOR_DESC* InputTensor;
1841 const DML_TENSOR_DESC* InputGradientTensor;
1842 const DML_TENSOR_DESC* ROITensor;
1843 const DML_TENSOR_DESC* BatchIndicesTensor;
1844 _Maybenull_ const DML_TENSOR_DESC* OutputGradientTensor;
1845 _Maybenull_ const DML_TENSOR_DESC* OutputROIGradientTensor;
1846 DML_REDUCE_FUNCTION ReductionFunction;
1847 DML_INTERPOLATION_MODE InterpolationMode;
1848 FLOAT SpatialScaleX;
1849 FLOAT SpatialScaleY;
1850 FLOAT InputPixelOffset;
1851 FLOAT OutputPixelOffset;
1852 UINT MinimumSamplesPerOutput;
1853 UINT MaximumSamplesPerOutput;
1854 BOOL AlignRegionsToCorners;
1855};
1856
1857struct DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC
1858{
1859 const DML_TENSOR_DESC* InputTensor;
1860 const DML_TENSOR_DESC* ScaleTensor;
1861 const DML_TENSOR_DESC* BiasTensor;
1862 _Maybenull_ const DML_TENSOR_DESC* FusedAddTensor;
1863 const DML_TENSOR_DESC* OutputTensor;
1864 const DML_TENSOR_DESC* OutputMeanTensor;
1865 const DML_TENSOR_DESC* OutputVarianceTensor;
1866 FLOAT Epsilon;
1867 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
1868};
1869
1870struct DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC
1871{
1872 const DML_TENSOR_DESC* InputTensor;
1873 const DML_TENSOR_DESC* InputGradientTensor;
1874 const DML_TENSOR_DESC* MeanTensor;
1875 const DML_TENSOR_DESC* VarianceTensor;
1876 const DML_TENSOR_DESC* ScaleTensor;
1877 const DML_TENSOR_DESC* OutputGradientTensor;
1878 const DML_TENSOR_DESC* OutputScaleGradientTensor;
1879 const DML_TENSOR_DESC* OutputBiasGradientTensor;
1880 FLOAT Epsilon;
1881};
1882
1883#endif // DML_TARGET_VERSION >= 0x4100
1884
1885#if DML_TARGET_VERSION >= 0x5000
1886
1887struct DML_ELEMENT_WISE_CLIP1_OPERATOR_DESC
1888{
1889 const DML_TENSOR_DESC* InputTensor;
1890 const DML_TENSOR_DESC* OutputTensor;
1891 _Maybenull_ const DML_SCALE_BIAS* ScaleBias;
1892 DML_TENSOR_DATA_TYPE MinMaxDataType;
1893 DML_SCALAR_UNION Min;
1894 DML_SCALAR_UNION Max;
1895};
1896
1897struct DML_ELEMENT_WISE_CLIP_GRAD1_OPERATOR_DESC
1898{
1899 const DML_TENSOR_DESC* InputTensor;
1900 const DML_TENSOR_DESC* InputGradientTensor;
1901 const DML_TENSOR_DESC* OutputGradientTensor;
1902 DML_TENSOR_DATA_TYPE MinMaxDataType;
1903 DML_SCALAR_UNION Min;
1904 DML_SCALAR_UNION Max;
1905};
1906
1907struct DML_PADDING1_OPERATOR_DESC
1908{
1909 const DML_TENSOR_DESC* InputTensor;
1910 const DML_TENSOR_DESC* OutputTensor;
1911 DML_PADDING_MODE PaddingMode;
1912 DML_TENSOR_DATA_TYPE PaddingValueDataType;
1913 DML_SCALAR_UNION PaddingValue;
1914 UINT DimensionCount;
1915 _Field_size_(DimensionCount) const UINT* StartPadding;
1916 _Field_size_(DimensionCount) const UINT* EndPadding;
1917};
1918
1919struct DML_ELEMENT_WISE_NEGATE_OPERATOR_DESC
1920{
1921 const DML_TENSOR_DESC* InputTensor;
1922 const DML_TENSOR_DESC* OutputTensor;
1923};
1924
1925#endif // DML_TARGET_VERSION >= 0x5000
1926
1927#if DML_TARGET_VERSION >= 0x5100
1928
1929struct DML_ACTIVATION_GELU_OPERATOR_DESC
1930{
1931 const DML_TENSOR_DESC* InputTensor;
1932 const DML_TENSOR_DESC* OutputTensor;
1933};
1934
1935struct DML_ACTIVATION_SOFTMAX1_OPERATOR_DESC
1936{
1937 const DML_TENSOR_DESC* InputTensor;
1938 const DML_TENSOR_DESC* OutputTensor;
1939 UINT AxisCount;
1940 _Field_size_(AxisCount) const UINT* Axes;
1941};
1942
1943struct DML_ACTIVATION_LOG_SOFTMAX1_OPERATOR_DESC
1944{
1945 const DML_TENSOR_DESC* InputTensor;
1946 const DML_TENSOR_DESC* OutputTensor;
1947 UINT AxisCount;
1948 _Field_size_(AxisCount) const UINT* Axes;
1949};
1950
1951struct DML_ACTIVATION_HARDMAX1_OPERATOR_DESC
1952{
1953 const DML_TENSOR_DESC* InputTensor;
1954 const DML_TENSOR_DESC* OutputTensor;
1955 UINT AxisCount;
1956 _Field_size_(AxisCount) const UINT* Axes;
1957};
1958
1959struct DML_RESAMPLE2_OPERATOR_DESC
1960{
1961 const DML_TENSOR_DESC* InputTensor;
1962 const DML_TENSOR_DESC* OutputTensor;
1963 DML_INTERPOLATION_MODE InterpolationMode;
1964 DML_AXIS_DIRECTION RoundingDirection;
1965 UINT DimensionCount;
1966 _Field_size_(DimensionCount) const FLOAT* Scales;
1967 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1968 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1969};
1970
1971struct DML_RESAMPLE_GRAD1_OPERATOR_DESC
1972{
1973 const DML_TENSOR_DESC* InputGradientTensor;
1974 const DML_TENSOR_DESC* OutputGradientTensor;
1975 DML_INTERPOLATION_MODE InterpolationMode;
1976 DML_AXIS_DIRECTION RoundingDirection;
1977 UINT DimensionCount;
1978 _Field_size_(DimensionCount) const FLOAT* Scales;
1979 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
1980 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
1981};
1982
1983struct DML_DIAGONAL_MATRIX1_OPERATOR_DESC
1984{
1985 _Maybenull_ const DML_TENSOR_DESC* InputTensor;
1986 const DML_TENSOR_DESC* OutputTensor;
1987 DML_TENSOR_DATA_TYPE ValueDataType;
1988 DML_SCALAR_UNION Value;
1989 INT DiagonalFillBegin;
1990 INT DiagonalFillEnd;
1991};
1992
1993#endif // DML_TARGET_VERSION >= 0x5100
1994
1995#if DML_TARGET_VERSION >= 0x6100
1996
1997struct DML_MULTIHEAD_ATTENTION_OPERATOR_DESC
1998{
1999 _Maybenull_ const DML_TENSOR_DESC* QueryTensor;
2000 _Maybenull_ const DML_TENSOR_DESC* KeyTensor;
2001 _Maybenull_ const DML_TENSOR_DESC* ValueTensor;
2002 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyTensor;
2003 _Maybenull_ const DML_TENSOR_DESC* StackedKeyValueTensor;
2004 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyValueTensor;
2005 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2006 _Maybenull_ const DML_TENSOR_DESC* MaskTensor;
2007 _Maybenull_ const DML_TENSOR_DESC* RelativePositionBiasTensor;
2008 _Maybenull_ const DML_TENSOR_DESC* PastKeyTensor;
2009 _Maybenull_ const DML_TENSOR_DESC* PastValueTensor;
2010 const DML_TENSOR_DESC* OutputTensor;
2011 _Maybenull_ const DML_TENSOR_DESC* OutputPresentKeyTensor;
2012 _Maybenull_ const DML_TENSOR_DESC* OutputPresentValueTensor;
2013 FLOAT Scale;
2014 FLOAT MaskFilterValue;
2015 UINT HeadCount;
2016 DML_MULTIHEAD_ATTENTION_MASK_TYPE MaskType;
2017};
2018
2019#endif // DML_TARGET_VERSION >= 0x6100
2020
2021#if DML_TARGET_VERSION >= 0x6200
2022
2023struct DML_LP_POOLING1_OPERATOR_DESC
2024{
2025 const DML_TENSOR_DESC* InputTensor;
2026 const DML_TENSOR_DESC* OutputTensor;
2027 UINT DimensionCount;
2028 _Field_size_(DimensionCount) const UINT* Strides;
2029 _Field_size_(DimensionCount) const UINT* WindowSize;
2030 _Field_size_(DimensionCount) const UINT* StartPadding;
2031 _Field_size_(DimensionCount) const UINT* EndPadding;
2032 _Field_size_(DimensionCount) const UINT* Dilations;
2033 UINT P;
2034};
2035
2036struct DML_AVERAGE_POOLING1_OPERATOR_DESC
2037{
2038 const DML_TENSOR_DESC* InputTensor;
2039 const DML_TENSOR_DESC* OutputTensor;
2040 UINT DimensionCount;
2041 _Field_size_(DimensionCount) const UINT* Strides;
2042 _Field_size_(DimensionCount) const UINT* WindowSize;
2043 _Field_size_(DimensionCount) const UINT* StartPadding;
2044 _Field_size_(DimensionCount) const UINT* EndPadding;
2045 _Field_size_(DimensionCount) const UINT* Dilations;
2046 BOOL IncludePadding;
2047};
2048
2049struct DML_ACTIVATION_SWISH_OPERATOR_DESC
2050{
2051 const DML_TENSOR_DESC* InputTensor;
2052 const DML_TENSOR_DESC* OutputTensor;
2053 FLOAT SigmoidInputScale;
2054};
2055
2056struct DML_ACTIVATION_HARD_SWISH_OPERATOR_DESC
2057{
2058 const DML_TENSOR_DESC* InputTensor;
2059 const DML_TENSOR_DESC* OutputTensor;
2060 FLOAT Alpha;
2061 FLOAT Beta;
2062};
2063
2064struct DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC
2065{
2066 const DML_TENSOR_DESC* InputTensor;
2067 const DML_TENSOR_DESC* InputScaleTensor;
2068 _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
2069 const DML_TENSOR_DESC* OutputScaleTensor;
2070 _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
2071 const DML_TENSOR_DESC* OutputTensor;
2072 UINT DimensionCount;
2073 _Field_size_(DimensionCount) const UINT* Strides;
2074 _Field_size_(DimensionCount) const UINT* WindowSize;
2075 _Field_size_(DimensionCount) const UINT* StartPadding;
2076 _Field_size_(DimensionCount) const UINT* EndPadding;
2077 _Field_size_(DimensionCount) const UINT* Dilations;
2078 BOOL IncludePadding;
2079};
2080
2081struct DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC
2082{
2083 const DML_TENSOR_DESC* ATensor;
2084 const DML_TENSOR_DESC* AScaleTensor;
2085 _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
2086 const DML_TENSOR_DESC* BTensor;
2087 const DML_TENSOR_DESC* BScaleTensor;
2088 _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
2089 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2090 const DML_TENSOR_DESC* OutputTensor;
2091};
2092
2093#endif // DML_TARGET_VERSION >= 0x6200
2094
2095#if DML_TARGET_VERSION >= 0x6300
2096
2097struct DML_MEAN_VARIANCE_NORMALIZATION2_OPERATOR_DESC
2098{
2099 const DML_TENSOR_DESC* InputTensor;
2100 _Maybenull_ const DML_TENSOR_DESC* ScaleTensor;
2101 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2102 const DML_TENSOR_DESC* OutputTensor;
2103 UINT AxisCount;
2104 _Field_size_(AxisCount) const UINT* Axes;
2105 BOOL UseMean;
2106 BOOL UseVariance;
2107 FLOAT Epsilon;
2108 _Maybenull_ const DML_OPERATOR_DESC* FusedActivation;
2109};
2110
2111struct DML_MULTIHEAD_ATTENTION1_OPERATOR_DESC
2112{
2113 _Maybenull_ const DML_TENSOR_DESC* QueryTensor;
2114 _Maybenull_ const DML_TENSOR_DESC* KeyTensor;
2115 _Maybenull_ const DML_TENSOR_DESC* ValueTensor;
2116 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyTensor;
2117 _Maybenull_ const DML_TENSOR_DESC* StackedKeyValueTensor;
2118 _Maybenull_ const DML_TENSOR_DESC* StackedQueryKeyValueTensor;
2119 _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
2120 _Maybenull_ const DML_TENSOR_DESC* MaskTensor;
2121 _Maybenull_ const DML_TENSOR_DESC* RelativePositionBiasTensor;
2122 _Maybenull_ const DML_TENSOR_DESC* PastKeyTensor;
2123 _Maybenull_ const DML_TENSOR_DESC* PastValueTensor;
2124 _Maybenull_ const DML_TENSOR_DESC* PastSequenceLengthsTensor;
2125 const DML_TENSOR_DESC* OutputTensor;
2126 _Maybenull_ const DML_TENSOR_DESC* OutputPresentKeyTensor;
2127 _Maybenull_ const DML_TENSOR_DESC* OutputPresentValueTensor;
2128 FLOAT Scale;
2129 FLOAT MaskFilterValue;
2130 UINT QueryHeadCount;
2131 UINT KeyValueHeadCount;
2132 DML_MULTIHEAD_ATTENTION_MASK_TYPE MaskType;
2133};
2134
2135struct DML_QUANTIZE_OPERATOR_DESC
2136{
2137 const DML_TENSOR_DESC* InputTensor;
2138 DML_QUANTIZATION_TYPE QuantizationType;
2139 UINT QuantizationTensorCount;
2140 _Field_size_(QuantizationTensorCount) const DML_TENSOR_DESC* QuantizationTensors;
2141 const DML_TENSOR_DESC* OutputTensor;
2142};
2143
2144struct DML_DEQUANTIZE_OPERATOR_DESC
2145{
2146 const DML_TENSOR_DESC* InputTensor;
2147 DML_QUANTIZATION_TYPE QuantizationType;
2148 UINT QuantizationTensorCount;
2149 _Field_size_(QuantizationTensorCount) const DML_TENSOR_DESC* QuantizationTensors;
2150 const DML_TENSOR_DESC* OutputTensor;
2151};
2152
2153#endif // DML_TARGET_VERSION >= 0x6300
2154
2155#if DML_TARGET_VERSION >= 0x6400
2156
2157struct DML_RESAMPLE3_OPERATOR_DESC
2158{
2159 const DML_TENSOR_DESC* InputTensor;
2160 const DML_TENSOR_DESC* OutputTensor;
2161 DML_INTERPOLATION_MODE InterpolationMode;
2162 DML_AXIS_DIRECTION RoundingDirection;
2163 UINT DimensionCount;
2164 _Field_size_(DimensionCount) const FLOAT* Scales;
2165 _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
2166 _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
2167 BOOL Antialiased;
2168};
2169
2170struct DML_FOLD_OPERATOR_DESC
2171{
2172 const DML_TENSOR_DESC* InputTensor;
2173 const DML_TENSOR_DESC* OutputTensor;
2174 UINT DimensionCount;
2175 _Field_size_(DimensionCount) const UINT* WindowSizes; // Size of the extracted patch
2176 _Field_size_(DimensionCount) const UINT* Strides; // Step size of the extracted patches
2177 _Field_size_(DimensionCount) const UINT* Dilations; // Dialations of the extracted patch
2178 _Field_size_(DimensionCount) const UINT* StartPadding; // Start padding of the "source tensor"
2179 _Field_size_(DimensionCount) const UINT* EndPadding; // End padding of the "source tensor"
2180};
2181
2182struct DML_UNFOLD_OPERATOR_DESC
2183{
2184 const DML_TENSOR_DESC* InputTensor;
2185 const DML_TENSOR_DESC* OutputTensor;
2186 UINT DimensionCount;
2187 _Field_size_(DimensionCount) const UINT* WindowSizes; // Size of the extracted patch
2188 _Field_size_(DimensionCount) const UINT* Strides; // Step size of the extracted patches
2189 _Field_size_(DimensionCount) const UINT* Dilations; // Dialations of the extracted patch
2190 _Field_size_(DimensionCount) const UINT* StartPadding; // Start padding of the "source tensor"
2191 _Field_size_(DimensionCount) const UINT* EndPadding; // End padding of the "source tensor"
2192};
2193
2194#endif // DML_TARGET_VERSION >= 0x6400
2195
2196// ===================================================================================================================
2197// DML feature support queries
2198// ===================================================================================================================
2199
2200#if DML_TARGET_VERSION >= 0x2000
2201
2202enum DML_FEATURE_LEVEL
2203{
2204 DML_FEATURE_LEVEL_1_0 = 0x1000,
2205 DML_FEATURE_LEVEL_2_0 = 0x2000,
2206 DML_FEATURE_LEVEL_2_1 = 0x2100,
2207 DML_FEATURE_LEVEL_3_0 = 0x3000,
2208 DML_FEATURE_LEVEL_3_1 = 0x3100,
2209 DML_FEATURE_LEVEL_4_0 = 0x4000,
2210 DML_FEATURE_LEVEL_4_1 = 0x4100,
2211 DML_FEATURE_LEVEL_5_0 = 0x5000,
2212 DML_FEATURE_LEVEL_5_1 = 0x5100,
2213 DML_FEATURE_LEVEL_5_2 = 0x5200,
2214 DML_FEATURE_LEVEL_6_0 = 0x6000,
2215 DML_FEATURE_LEVEL_6_1 = 0x6100,
2216 DML_FEATURE_LEVEL_6_2 = 0x6200,
2217 DML_FEATURE_LEVEL_6_3 = 0x6300,
2218 DML_FEATURE_LEVEL_6_4 = 0x6400,
2219};
2220
2221#endif // DML_TARGET_VERSION >= 0x2000
2222
2223enum DML_FEATURE
2224{
2225 DML_FEATURE_TENSOR_DATA_TYPE_SUPPORT,
2226
2227#if DML_TARGET_VERSION >= 0x2000
2228 DML_FEATURE_FEATURE_LEVELS,
2229#endif // DML_TARGET_VERSION >= 0x2000
2230};
2231
2232struct DML_FEATURE_QUERY_TENSOR_DATA_TYPE_SUPPORT
2233{
2234 DML_TENSOR_DATA_TYPE DataType;
2235};
2236
2237struct DML_FEATURE_DATA_TENSOR_DATA_TYPE_SUPPORT
2238{
2239 BOOL IsSupported;
2240};
2241
2242#if DML_TARGET_VERSION >= 0x2000
2243
2244struct DML_FEATURE_QUERY_FEATURE_LEVELS
2245{
2246 UINT RequestedFeatureLevelCount;
2247 _Field_size_(RequestedFeatureLevelCount) const DML_FEATURE_LEVEL* RequestedFeatureLevels;
2248};
2249
2250struct DML_FEATURE_DATA_FEATURE_LEVELS
2251{
2252 DML_FEATURE_LEVEL MaxSupportedFeatureLevel;
2253};
2254
2255#endif // DML_TARGET_VERSION >= 0x2000
2256
2257// ===================================================================================================================
2258// DML device functions, enumerations, and structures
2259// ===================================================================================================================
2260
2261struct DML_BINDING_TABLE_DESC
2262{
2263 IDMLDispatchable* Dispatchable;
2264 D3D12_CPU_DESCRIPTOR_HANDLE CPUDescriptorHandle;
2265 D3D12_GPU_DESCRIPTOR_HANDLE GPUDescriptorHandle;
2266 UINT SizeInDescriptors;
2267};
2268
2269enum DML_EXECUTION_FLAGS
2270{
2271 DML_EXECUTION_FLAG_NONE = 0,
2272 DML_EXECUTION_FLAG_ALLOW_HALF_PRECISION_COMPUTATION = 0x1,
2273 DML_EXECUTION_FLAG_DISABLE_META_COMMANDS = 0x2,
2274 DML_EXECUTION_FLAG_DESCRIPTORS_VOLATILE = 0x4,
2275};
2276
2277DEFINE_ENUM_FLAG_OPERATORS(DML_EXECUTION_FLAGS)
2278
2279enum DML_CREATE_DEVICE_FLAGS
2280{
2281 DML_CREATE_DEVICE_FLAG_NONE = 0,
2282 DML_CREATE_DEVICE_FLAG_DEBUG = 0x1,
2283};
2284
2285DEFINE_ENUM_FLAG_OPERATORS(DML_CREATE_DEVICE_FLAGS)
2286
2287STDAPI DMLCreateDevice(
2288 ID3D12Device* d3d12Device,
2289 DML_CREATE_DEVICE_FLAGS flags,
2290 REFIID riid, // Expected: IDMLDevice
2291 _COM_Outptr_opt_ void** ppv
2292 );
2293
2294#if DML_TARGET_VERSION >= 0x2000
2295
2296STDAPI DMLCreateDevice1(
2297 ID3D12Device* d3d12Device,
2298 DML_CREATE_DEVICE_FLAGS flags,
2299 DML_FEATURE_LEVEL minimumFeatureLevel,
2300 REFIID riid, // Expected: IDMLDevice
2301 _COM_Outptr_opt_ void** ppv
2302 );
2303
2304#endif // DML_TARGET_VERSION >= 0x2000
2305
2306// ===================================================================================================================
2307// DML object
2308// ===================================================================================================================
2309
2310interface DML_DECLARE_INTERFACE("c8263aac-9e0c-4a2d-9b8e-007521a3317c") IDMLObject : IUnknown
2311{
2312 IFACEMETHOD(GetPrivateData)(
2313 REFGUID guid,
2314 _Inout_ UINT* dataSize,
2315 _Out_writes_bytes_opt_(*dataSize) void* data
2316 ) = 0;
2317
2318 IFACEMETHOD(SetPrivateData)(
2319 REFGUID guid,
2320 UINT dataSize,
2321 _In_reads_bytes_opt_(dataSize) const void* data
2322 ) = 0;
2323
2324 IFACEMETHOD(SetPrivateDataInterface)(
2325 REFGUID guid,
2326 _In_opt_ IUnknown* data
2327 ) = 0;
2328
2329 IFACEMETHOD(SetName)(
2330 PCWSTR name
2331 ) = 0;
2332};
2333
2334// ===================================================================================================================
2335// DML device
2336// ===================================================================================================================
2337
2338interface DML_DECLARE_INTERFACE("6dbd6437-96fd-423f-a98c-ae5e7c2a573f") IDMLDevice : IDMLObject
2339{
2340 IFACEMETHOD(CheckFeatureSupport)(
2341 DML_FEATURE feature,
2342 UINT featureQueryDataSize,
2343 _In_reads_bytes_opt_(featureQueryDataSize) const void* featureQueryData,
2344 UINT featureSupportDataSize,
2345 _Out_writes_bytes_(featureSupportDataSize) void* featureSupportData
2346 ) = 0;
2347
2348 IFACEMETHOD(CreateOperator)(
2349 const DML_OPERATOR_DESC* desc,
2350 REFIID riid, // expected: IDMLOperator
2351 _COM_Outptr_opt_ void** ppv
2352 ) = 0;
2353
2354 IFACEMETHOD(CompileOperator)(
2355 IDMLOperator* op,
2356 DML_EXECUTION_FLAGS flags,
2357 REFIID riid, // expected: IDMLCompiledOperator
2358 _COM_Outptr_opt_ void** ppv
2359 ) = 0;
2360
2361 IFACEMETHOD(CreateOperatorInitializer)(
2362 UINT operatorCount,
2363 _In_reads_opt_(operatorCount) IDMLCompiledOperator* const* operators,
2364 REFIID riid, // expected: IDMLOperatorInitializer
2365 _COM_Outptr_ void** ppv
2366 ) = 0;
2367
2368 IFACEMETHOD(CreateCommandRecorder)(
2369 REFIID riid, // expected: IDMLCommandRecorder
2370 _COM_Outptr_ void** ppv
2371 ) = 0;
2372
2373 IFACEMETHOD(CreateBindingTable)(
2374 _In_opt_ const DML_BINDING_TABLE_DESC* desc,
2375 REFIID riid, // expected: IDMLBindingTable
2376 _COM_Outptr_ void** ppv
2377 ) = 0;
2378
2379 IFACEMETHOD(Evict)(
2380 UINT count,
2381 _In_reads_(count) IDMLPageable* const* ppObjects
2382 ) = 0;
2383
2384 IFACEMETHOD(MakeResident)(
2385 UINT count,
2386 _In_reads_(count) IDMLPageable* const* ppObjects
2387 ) = 0;
2388
2389 IFACEMETHOD(GetDeviceRemovedReason)(
2390 ) = 0;
2391
2392 IFACEMETHOD(GetParentDevice)(
2393 REFIID riid,
2394 _COM_Outptr_ void** ppv
2395 ) = 0;
2396};
2397
2398
2399// ===================================================================================================================
2400// DML device children
2401// ===================================================================================================================
2402
2403interface DML_DECLARE_INTERFACE("27e83142-8165-49e3-974e-2fd66e4cb69d") IDMLDeviceChild : IDMLObject
2404{
2405 IFACEMETHOD(GetDevice)(
2406 REFIID riid, // expected: IDMLDevice
2407 _COM_Outptr_ void** ppv
2408 ) = 0;
2409};
2410
2411interface DML_DECLARE_INTERFACE("b1ab0825-4542-4a4b-8617-6dde6e8f6201") IDMLPageable : IDMLDeviceChild
2412{
2413};
2414
2415
2416// ===================================================================================================================
2417// DML operator
2418// ===================================================================================================================
2419
2420interface DML_DECLARE_INTERFACE("26caae7a-3081-4633-9581-226fbe57695d") IDMLOperator : IDMLDeviceChild
2421{
2422};
2423
2424
2425// ===================================================================================================================
2426// DML dispatchable
2427// ===================================================================================================================
2428
2429struct DML_BINDING_PROPERTIES
2430{
2431 UINT RequiredDescriptorCount;
2432 UINT64 TemporaryResourceSize;
2433 UINT64 PersistentResourceSize;
2434};
2435
2436interface DML_DECLARE_INTERFACE("dcb821a8-1039-441e-9f1c-b1759c2f3cec") IDMLDispatchable : IDMLPageable
2437{
2438 IFACEMETHOD_(DML_BINDING_PROPERTIES, GetBindingProperties)() = 0;
2439};
2440
2441
2442// ===================================================================================================================
2443// DML compiled operator
2444// ===================================================================================================================
2445
2446interface DML_DECLARE_INTERFACE("6b15e56a-bf5c-4902-92d8-da3a650afea4") IDMLCompiledOperator : IDMLDispatchable
2447{
2448};
2449
2450
2451// ===================================================================================================================
2452// DML operator initializer
2453// ===================================================================================================================
2454
2455interface DML_DECLARE_INTERFACE("427c1113-435c-469c-8676-4d5dd072f813") IDMLOperatorInitializer : IDMLDispatchable
2456{
2457 IFACEMETHOD(Reset)(
2458 UINT operatorCount,
2459 _In_reads_opt_(operatorCount) IDMLCompiledOperator* const* operators
2460 ) = 0;
2461};
2462
2463// ===================================================================================================================
2464// DML binding table
2465// ===================================================================================================================
2466
2467enum DML_BINDING_TYPE
2468{
2469 DML_BINDING_TYPE_NONE,
2470 DML_BINDING_TYPE_BUFFER,
2471 DML_BINDING_TYPE_BUFFER_ARRAY,
2472};
2473
2474struct DML_BINDING_DESC
2475{
2476 DML_BINDING_TYPE Type;
2477 _Field_size_opt_(_Inexpressible_("Dependent on binding type")) const void* Desc;
2478};
2479
2480struct DML_BUFFER_BINDING
2481{
2482 _Maybenull_ ID3D12Resource* Buffer;
2483 UINT64 Offset;
2484 UINT64 SizeInBytes;
2485};
2486
2487struct DML_BUFFER_ARRAY_BINDING
2488{
2489 UINT BindingCount;
2490 _Field_size_(BindingCount) const DML_BUFFER_BINDING* Bindings;
2491};
2492
2493interface DML_DECLARE_INTERFACE("29c687dc-de74-4e3b-ab00-1168f2fc3cfc") IDMLBindingTable : IDMLDeviceChild
2494{
2495 IFACEMETHOD_(void, BindInputs)(
2496 UINT bindingCount,
2497 _In_reads_opt_(bindingCount) const DML_BINDING_DESC* bindings
2498 ) = 0;
2499
2500 IFACEMETHOD_(void, BindOutputs)(
2501 UINT bindingCount,
2502 _In_reads_opt_(bindingCount) const DML_BINDING_DESC* bindings
2503 ) = 0;
2504
2505 IFACEMETHOD_(void, BindTemporaryResource)(
2506 _In_opt_ const DML_BINDING_DESC* binding
2507 ) = 0;
2508
2509 IFACEMETHOD_(void, BindPersistentResource)(
2510 _In_opt_ const DML_BINDING_DESC* binding
2511 ) = 0;
2512
2513 IFACEMETHOD(Reset)(
2514 _In_opt_ const DML_BINDING_TABLE_DESC* desc
2515 ) = 0;
2516};
2517
2518
2519// ===================================================================================================================
2520// DML command recorder
2521// ===================================================================================================================
2522
2523interface DML_DECLARE_INTERFACE("e6857a76-2e3e-4fdd-bff4-5d2ba10fb453") IDMLCommandRecorder : IDMLDeviceChild
2524{
2525 IFACEMETHOD_(void, RecordDispatch)(
2526 ID3D12CommandList* commandList,
2527 IDMLDispatchable* dispatchable,
2528 IDMLBindingTable* bindings
2529 ) = 0;
2530};
2531
2532
2533// ===================================================================================================================
2534// DML debug
2535// ===================================================================================================================
2536
2537interface DML_DECLARE_INTERFACE("7d6f3ac9-394a-4ac3-92a7-390cc57a8217") IDMLDebugDevice : IUnknown
2538{
2539 IFACEMETHOD_(void, SetMuteDebugOutput)(
2540 BOOL mute
2541 ) = 0;
2542};
2543
2544
2545// ===================================================================================================================
2546// DML graph
2547// ===================================================================================================================
2548
2549#if DML_TARGET_VERSION >= 0x2100
2550
2551enum DML_GRAPH_EDGE_TYPE
2552{
2553 DML_GRAPH_EDGE_TYPE_INVALID,
2554 DML_GRAPH_EDGE_TYPE_INPUT,
2555 DML_GRAPH_EDGE_TYPE_OUTPUT,
2556 DML_GRAPH_EDGE_TYPE_INTERMEDIATE,
2557};
2558
2559struct DML_GRAPH_EDGE_DESC
2560{
2561 DML_GRAPH_EDGE_TYPE Type;
2562 _Field_size_(_Inexpressible_("Dependent on edge type")) const void* Desc;
2563};
2564
2565struct DML_INPUT_GRAPH_EDGE_DESC
2566{
2567 UINT GraphInputIndex;
2568 UINT ToNodeIndex;
2569 UINT ToNodeInputIndex;
2570 _Field_z_ _Maybenull_ const char* Name;
2571};
2572
2573struct DML_OUTPUT_GRAPH_EDGE_DESC
2574{
2575 UINT FromNodeIndex;
2576 UINT FromNodeOutputIndex;
2577 UINT GraphOutputIndex;
2578 _Field_z_ _Maybenull_ const char* Name;
2579};
2580
2581struct DML_INTERMEDIATE_GRAPH_EDGE_DESC
2582{
2583 UINT FromNodeIndex;
2584 UINT FromNodeOutputIndex;
2585 UINT ToNodeIndex;
2586 UINT ToNodeInputIndex;
2587 _Field_z_ _Maybenull_ const char* Name;
2588};
2589
2590enum DML_GRAPH_NODE_TYPE
2591{
2592 DML_GRAPH_NODE_TYPE_INVALID,
2593 DML_GRAPH_NODE_TYPE_OPERATOR,
2594#if DML_TARGET_VERSION >= 0x6200
2595 DML_GRAPH_NODE_TYPE_CONSTANT
2596#endif // DML_TARGET_VERSION >= 0x6200
2597};
2598
2599struct DML_GRAPH_NODE_DESC
2600{
2601 DML_GRAPH_NODE_TYPE Type;
2602 _Field_size_(_Inexpressible_("Dependent on node type")) const void* Desc;
2603};
2604
2605struct DML_OPERATOR_GRAPH_NODE_DESC
2606{
2607 IDMLOperator* Operator;
2608 _Field_z_ _Maybenull_ const char* Name;
2609};
2610
2611#if DML_TARGET_VERSION >= 0x6200
2612struct DML_CONSTANT_DATA_GRAPH_NODE_DESC
2613{
2614 _Field_size_bytes_(DataSize) const void* Data;
2615 SIZE_T DataSize;
2616 _Field_z_ _Maybenull_ const char* Name;
2617};
2618#endif // DML_TARGET_VERSION >= 0x6200
2619
2620struct DML_GRAPH_DESC
2621{
2622 UINT InputCount;
2623 UINT OutputCount;
2624
2625 UINT NodeCount;
2626 _Field_size_(NodeCount) const DML_GRAPH_NODE_DESC* Nodes;
2627
2628 UINT InputEdgeCount;
2629 _Field_size_opt_(InputEdgeCount) const DML_GRAPH_EDGE_DESC* InputEdges;
2630
2631 UINT OutputEdgeCount;
2632 _Field_size_(OutputEdgeCount) const DML_GRAPH_EDGE_DESC* OutputEdges;
2633
2634 UINT IntermediateEdgeCount;
2635 _Field_size_opt_(IntermediateEdgeCount) const DML_GRAPH_EDGE_DESC* IntermediateEdges;
2636};
2637
2638interface DML_DECLARE_INTERFACE("a0884f9a-d2be-4355-aa5d-5901281ad1d2") IDMLDevice1 : IDMLDevice
2639{
2640 IFACEMETHOD(CompileGraph)(
2641 const DML_GRAPH_DESC* desc,
2642 DML_EXECUTION_FLAGS flags,
2643 REFIID riid, // expected: IDMLCompiledOperator
2644 _COM_Outptr_opt_ void** ppv
2645 ) = 0;
2646};
2647
2648#endif // DML_TARGET_VERSION >= 0x2100
2649
2650#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
2651#endif // DIRECTML_H
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h
new file mode 100644
index 0000000..0d12a2b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.h
@@ -0,0 +1,36886 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12_h__
39#define __d3d12_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Object_FWD_DEFINED__
56#define __ID3D12Object_FWD_DEFINED__
57typedef interface ID3D12Object ID3D12Object;
58
59#endif /* __ID3D12Object_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12DeviceChild_FWD_DEFINED__
63#define __ID3D12DeviceChild_FWD_DEFINED__
64typedef interface ID3D12DeviceChild ID3D12DeviceChild;
65
66#endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12RootSignature_FWD_DEFINED__
70#define __ID3D12RootSignature_FWD_DEFINED__
71typedef interface ID3D12RootSignature ID3D12RootSignature;
72
73#endif /* __ID3D12RootSignature_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
77#define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
78typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
79
80#endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
84#define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
85typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
86
87#endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Pageable_FWD_DEFINED__
91#define __ID3D12Pageable_FWD_DEFINED__
92typedef interface ID3D12Pageable ID3D12Pageable;
93
94#endif /* __ID3D12Pageable_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Heap_FWD_DEFINED__
98#define __ID3D12Heap_FWD_DEFINED__
99typedef interface ID3D12Heap ID3D12Heap;
100
101#endif /* __ID3D12Heap_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12Resource_FWD_DEFINED__
105#define __ID3D12Resource_FWD_DEFINED__
106typedef interface ID3D12Resource ID3D12Resource;
107
108#endif /* __ID3D12Resource_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12CommandAllocator_FWD_DEFINED__
112#define __ID3D12CommandAllocator_FWD_DEFINED__
113typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
114
115#endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12Fence_FWD_DEFINED__
119#define __ID3D12Fence_FWD_DEFINED__
120typedef interface ID3D12Fence ID3D12Fence;
121
122#endif /* __ID3D12Fence_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12Fence1_FWD_DEFINED__
126#define __ID3D12Fence1_FWD_DEFINED__
127typedef interface ID3D12Fence1 ID3D12Fence1;
128
129#endif /* __ID3D12Fence1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12PipelineState_FWD_DEFINED__
133#define __ID3D12PipelineState_FWD_DEFINED__
134typedef interface ID3D12PipelineState ID3D12PipelineState;
135
136#endif /* __ID3D12PipelineState_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12PipelineState1_FWD_DEFINED__
140#define __ID3D12PipelineState1_FWD_DEFINED__
141typedef interface ID3D12PipelineState1 ID3D12PipelineState1;
142
143#endif /* __ID3D12PipelineState1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
147#define __ID3D12DescriptorHeap_FWD_DEFINED__
148typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
149
150#endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12QueryHeap_FWD_DEFINED__
154#define __ID3D12QueryHeap_FWD_DEFINED__
155typedef interface ID3D12QueryHeap ID3D12QueryHeap;
156
157#endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12CommandSignature_FWD_DEFINED__
161#define __ID3D12CommandSignature_FWD_DEFINED__
162typedef interface ID3D12CommandSignature ID3D12CommandSignature;
163
164#endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12CommandList_FWD_DEFINED__
168#define __ID3D12CommandList_FWD_DEFINED__
169typedef interface ID3D12CommandList ID3D12CommandList;
170
171#endif /* __ID3D12CommandList_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
175#define __ID3D12GraphicsCommandList_FWD_DEFINED__
176typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
177
178#endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
182#define __ID3D12GraphicsCommandList1_FWD_DEFINED__
183typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
184
185#endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12GraphicsCommandList2_FWD_DEFINED__
189#define __ID3D12GraphicsCommandList2_FWD_DEFINED__
190typedef interface ID3D12GraphicsCommandList2 ID3D12GraphicsCommandList2;
191
192#endif /* __ID3D12GraphicsCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12CommandQueue_FWD_DEFINED__
196#define __ID3D12CommandQueue_FWD_DEFINED__
197typedef interface ID3D12CommandQueue ID3D12CommandQueue;
198
199#endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12CommandQueue1_FWD_DEFINED__
203#define __ID3D12CommandQueue1_FWD_DEFINED__
204typedef interface ID3D12CommandQueue1 ID3D12CommandQueue1;
205
206#endif /* __ID3D12CommandQueue1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12Device_FWD_DEFINED__
210#define __ID3D12Device_FWD_DEFINED__
211typedef interface ID3D12Device ID3D12Device;
212
213#endif /* __ID3D12Device_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
217#define __ID3D12PipelineLibrary_FWD_DEFINED__
218typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
219
220#endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
224#define __ID3D12PipelineLibrary1_FWD_DEFINED__
225typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
226
227#endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12Device1_FWD_DEFINED__
231#define __ID3D12Device1_FWD_DEFINED__
232typedef interface ID3D12Device1 ID3D12Device1;
233
234#endif /* __ID3D12Device1_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12Device2_FWD_DEFINED__
238#define __ID3D12Device2_FWD_DEFINED__
239typedef interface ID3D12Device2 ID3D12Device2;
240
241#endif /* __ID3D12Device2_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12Device3_FWD_DEFINED__
245#define __ID3D12Device3_FWD_DEFINED__
246typedef interface ID3D12Device3 ID3D12Device3;
247
248#endif /* __ID3D12Device3_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12ProtectedSession_FWD_DEFINED__
252#define __ID3D12ProtectedSession_FWD_DEFINED__
253typedef interface ID3D12ProtectedSession ID3D12ProtectedSession;
254
255#endif /* __ID3D12ProtectedSession_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12ProtectedResourceSession_FWD_DEFINED__
259#define __ID3D12ProtectedResourceSession_FWD_DEFINED__
260typedef interface ID3D12ProtectedResourceSession ID3D12ProtectedResourceSession;
261
262#endif /* __ID3D12ProtectedResourceSession_FWD_DEFINED__ */
263
264
265#ifndef __ID3D12Device4_FWD_DEFINED__
266#define __ID3D12Device4_FWD_DEFINED__
267typedef interface ID3D12Device4 ID3D12Device4;
268
269#endif /* __ID3D12Device4_FWD_DEFINED__ */
270
271
272#ifndef __ID3D12LifetimeOwner_FWD_DEFINED__
273#define __ID3D12LifetimeOwner_FWD_DEFINED__
274typedef interface ID3D12LifetimeOwner ID3D12LifetimeOwner;
275
276#endif /* __ID3D12LifetimeOwner_FWD_DEFINED__ */
277
278
279#ifndef __ID3D12SwapChainAssistant_FWD_DEFINED__
280#define __ID3D12SwapChainAssistant_FWD_DEFINED__
281typedef interface ID3D12SwapChainAssistant ID3D12SwapChainAssistant;
282
283#endif /* __ID3D12SwapChainAssistant_FWD_DEFINED__ */
284
285
286#ifndef __ID3D12LifetimeTracker_FWD_DEFINED__
287#define __ID3D12LifetimeTracker_FWD_DEFINED__
288typedef interface ID3D12LifetimeTracker ID3D12LifetimeTracker;
289
290#endif /* __ID3D12LifetimeTracker_FWD_DEFINED__ */
291
292
293#ifndef __ID3D12StateObject_FWD_DEFINED__
294#define __ID3D12StateObject_FWD_DEFINED__
295typedef interface ID3D12StateObject ID3D12StateObject;
296
297#endif /* __ID3D12StateObject_FWD_DEFINED__ */
298
299
300#ifndef __ID3D12StateObjectProperties_FWD_DEFINED__
301#define __ID3D12StateObjectProperties_FWD_DEFINED__
302typedef interface ID3D12StateObjectProperties ID3D12StateObjectProperties;
303
304#endif /* __ID3D12StateObjectProperties_FWD_DEFINED__ */
305
306
307#ifndef __ID3D12StateObjectProperties1_FWD_DEFINED__
308#define __ID3D12StateObjectProperties1_FWD_DEFINED__
309typedef interface ID3D12StateObjectProperties1 ID3D12StateObjectProperties1;
310
311#endif /* __ID3D12StateObjectProperties1_FWD_DEFINED__ */
312
313
314#ifndef __ID3D12StateObjectProperties2_FWD_DEFINED__
315#define __ID3D12StateObjectProperties2_FWD_DEFINED__
316typedef interface ID3D12StateObjectProperties2 ID3D12StateObjectProperties2;
317
318#endif /* __ID3D12StateObjectProperties2_FWD_DEFINED__ */
319
320
321#ifndef __ID3D12WorkGraphProperties_FWD_DEFINED__
322#define __ID3D12WorkGraphProperties_FWD_DEFINED__
323typedef interface ID3D12WorkGraphProperties ID3D12WorkGraphProperties;
324
325#endif /* __ID3D12WorkGraphProperties_FWD_DEFINED__ */
326
327
328#ifndef __ID3D12Device5_FWD_DEFINED__
329#define __ID3D12Device5_FWD_DEFINED__
330typedef interface ID3D12Device5 ID3D12Device5;
331
332#endif /* __ID3D12Device5_FWD_DEFINED__ */
333
334
335#ifndef __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
336#define __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__
337typedef interface ID3D12DeviceRemovedExtendedDataSettings ID3D12DeviceRemovedExtendedDataSettings;
338
339#endif /* __ID3D12DeviceRemovedExtendedDataSettings_FWD_DEFINED__ */
340
341
342#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
343#define __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__
344typedef interface ID3D12DeviceRemovedExtendedDataSettings1 ID3D12DeviceRemovedExtendedDataSettings1;
345
346#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_FWD_DEFINED__ */
347
348
349#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
350#define __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__
351typedef interface ID3D12DeviceRemovedExtendedDataSettings2 ID3D12DeviceRemovedExtendedDataSettings2;
352
353#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_FWD_DEFINED__ */
354
355
356#ifndef __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
357#define __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__
358typedef interface ID3D12DeviceRemovedExtendedData ID3D12DeviceRemovedExtendedData;
359
360#endif /* __ID3D12DeviceRemovedExtendedData_FWD_DEFINED__ */
361
362
363#ifndef __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
364#define __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__
365typedef interface ID3D12DeviceRemovedExtendedData1 ID3D12DeviceRemovedExtendedData1;
366
367#endif /* __ID3D12DeviceRemovedExtendedData1_FWD_DEFINED__ */
368
369
370#ifndef __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
371#define __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__
372typedef interface ID3D12DeviceRemovedExtendedData2 ID3D12DeviceRemovedExtendedData2;
373
374#endif /* __ID3D12DeviceRemovedExtendedData2_FWD_DEFINED__ */
375
376
377#ifndef __ID3D12Device6_FWD_DEFINED__
378#define __ID3D12Device6_FWD_DEFINED__
379typedef interface ID3D12Device6 ID3D12Device6;
380
381#endif /* __ID3D12Device6_FWD_DEFINED__ */
382
383
384#ifndef __ID3D12ProtectedResourceSession1_FWD_DEFINED__
385#define __ID3D12ProtectedResourceSession1_FWD_DEFINED__
386typedef interface ID3D12ProtectedResourceSession1 ID3D12ProtectedResourceSession1;
387
388#endif /* __ID3D12ProtectedResourceSession1_FWD_DEFINED__ */
389
390
391#ifndef __ID3D12Device7_FWD_DEFINED__
392#define __ID3D12Device7_FWD_DEFINED__
393typedef interface ID3D12Device7 ID3D12Device7;
394
395#endif /* __ID3D12Device7_FWD_DEFINED__ */
396
397
398#ifndef __ID3D12Device8_FWD_DEFINED__
399#define __ID3D12Device8_FWD_DEFINED__
400typedef interface ID3D12Device8 ID3D12Device8;
401
402#endif /* __ID3D12Device8_FWD_DEFINED__ */
403
404
405#ifndef __ID3D12Resource1_FWD_DEFINED__
406#define __ID3D12Resource1_FWD_DEFINED__
407typedef interface ID3D12Resource1 ID3D12Resource1;
408
409#endif /* __ID3D12Resource1_FWD_DEFINED__ */
410
411
412#ifndef __ID3D12Resource2_FWD_DEFINED__
413#define __ID3D12Resource2_FWD_DEFINED__
414typedef interface ID3D12Resource2 ID3D12Resource2;
415
416#endif /* __ID3D12Resource2_FWD_DEFINED__ */
417
418
419#ifndef __ID3D12Heap1_FWD_DEFINED__
420#define __ID3D12Heap1_FWD_DEFINED__
421typedef interface ID3D12Heap1 ID3D12Heap1;
422
423#endif /* __ID3D12Heap1_FWD_DEFINED__ */
424
425
426#ifndef __ID3D12GraphicsCommandList3_FWD_DEFINED__
427#define __ID3D12GraphicsCommandList3_FWD_DEFINED__
428typedef interface ID3D12GraphicsCommandList3 ID3D12GraphicsCommandList3;
429
430#endif /* __ID3D12GraphicsCommandList3_FWD_DEFINED__ */
431
432
433#ifndef __ID3D12MetaCommand_FWD_DEFINED__
434#define __ID3D12MetaCommand_FWD_DEFINED__
435typedef interface ID3D12MetaCommand ID3D12MetaCommand;
436
437#endif /* __ID3D12MetaCommand_FWD_DEFINED__ */
438
439
440#ifndef __ID3D12GraphicsCommandList4_FWD_DEFINED__
441#define __ID3D12GraphicsCommandList4_FWD_DEFINED__
442typedef interface ID3D12GraphicsCommandList4 ID3D12GraphicsCommandList4;
443
444#endif /* __ID3D12GraphicsCommandList4_FWD_DEFINED__ */
445
446
447#ifndef __ID3D12ShaderCacheSession_FWD_DEFINED__
448#define __ID3D12ShaderCacheSession_FWD_DEFINED__
449typedef interface ID3D12ShaderCacheSession ID3D12ShaderCacheSession;
450
451#endif /* __ID3D12ShaderCacheSession_FWD_DEFINED__ */
452
453
454#ifndef __ID3D12Device9_FWD_DEFINED__
455#define __ID3D12Device9_FWD_DEFINED__
456typedef interface ID3D12Device9 ID3D12Device9;
457
458#endif /* __ID3D12Device9_FWD_DEFINED__ */
459
460
461#ifndef __ID3D12Device10_FWD_DEFINED__
462#define __ID3D12Device10_FWD_DEFINED__
463typedef interface ID3D12Device10 ID3D12Device10;
464
465#endif /* __ID3D12Device10_FWD_DEFINED__ */
466
467
468#ifndef __ID3D12Device11_FWD_DEFINED__
469#define __ID3D12Device11_FWD_DEFINED__
470typedef interface ID3D12Device11 ID3D12Device11;
471
472#endif /* __ID3D12Device11_FWD_DEFINED__ */
473
474
475#ifndef __ID3D12Device12_FWD_DEFINED__
476#define __ID3D12Device12_FWD_DEFINED__
477typedef interface ID3D12Device12 ID3D12Device12;
478
479#endif /* __ID3D12Device12_FWD_DEFINED__ */
480
481
482#ifndef __ID3D12Device13_FWD_DEFINED__
483#define __ID3D12Device13_FWD_DEFINED__
484typedef interface ID3D12Device13 ID3D12Device13;
485
486#endif /* __ID3D12Device13_FWD_DEFINED__ */
487
488
489#ifndef __ID3D12Device14_FWD_DEFINED__
490#define __ID3D12Device14_FWD_DEFINED__
491typedef interface ID3D12Device14 ID3D12Device14;
492
493#endif /* __ID3D12Device14_FWD_DEFINED__ */
494
495
496#ifndef __ID3D12StateObjectDatabase_FWD_DEFINED__
497#define __ID3D12StateObjectDatabase_FWD_DEFINED__
498typedef interface ID3D12StateObjectDatabase ID3D12StateObjectDatabase;
499
500#endif /* __ID3D12StateObjectDatabase_FWD_DEFINED__ */
501
502
503#ifndef __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
504#define __ID3D12VirtualizationGuestDevice_FWD_DEFINED__
505typedef interface ID3D12VirtualizationGuestDevice ID3D12VirtualizationGuestDevice;
506
507#endif /* __ID3D12VirtualizationGuestDevice_FWD_DEFINED__ */
508
509
510#ifndef __ID3D12Tools_FWD_DEFINED__
511#define __ID3D12Tools_FWD_DEFINED__
512typedef interface ID3D12Tools ID3D12Tools;
513
514#endif /* __ID3D12Tools_FWD_DEFINED__ */
515
516
517#ifndef __ID3D12Tools1_FWD_DEFINED__
518#define __ID3D12Tools1_FWD_DEFINED__
519typedef interface ID3D12Tools1 ID3D12Tools1;
520
521#endif /* __ID3D12Tools1_FWD_DEFINED__ */
522
523
524#ifndef __ID3D12Tools2_FWD_DEFINED__
525#define __ID3D12Tools2_FWD_DEFINED__
526typedef interface ID3D12Tools2 ID3D12Tools2;
527
528#endif /* __ID3D12Tools2_FWD_DEFINED__ */
529
530
531#ifndef __ID3D12PageableTools_FWD_DEFINED__
532#define __ID3D12PageableTools_FWD_DEFINED__
533typedef interface ID3D12PageableTools ID3D12PageableTools;
534
535#endif /* __ID3D12PageableTools_FWD_DEFINED__ */
536
537
538#ifndef __ID3D12DeviceTools_FWD_DEFINED__
539#define __ID3D12DeviceTools_FWD_DEFINED__
540typedef interface ID3D12DeviceTools ID3D12DeviceTools;
541
542#endif /* __ID3D12DeviceTools_FWD_DEFINED__ */
543
544
545#ifndef __ID3D12DeviceTools1_FWD_DEFINED__
546#define __ID3D12DeviceTools1_FWD_DEFINED__
547typedef interface ID3D12DeviceTools1 ID3D12DeviceTools1;
548
549#endif /* __ID3D12DeviceTools1_FWD_DEFINED__ */
550
551
552#ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
553#define __ID3D12SDKConfiguration_FWD_DEFINED__
554typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
555
556#endif /* __ID3D12SDKConfiguration_FWD_DEFINED__ */
557
558
559#ifndef __ID3D12SDKConfiguration1_FWD_DEFINED__
560#define __ID3D12SDKConfiguration1_FWD_DEFINED__
561typedef interface ID3D12SDKConfiguration1 ID3D12SDKConfiguration1;
562
563#endif /* __ID3D12SDKConfiguration1_FWD_DEFINED__ */
564
565
566#ifndef __ID3D12DeviceFactory_FWD_DEFINED__
567#define __ID3D12DeviceFactory_FWD_DEFINED__
568typedef interface ID3D12DeviceFactory ID3D12DeviceFactory;
569
570#endif /* __ID3D12DeviceFactory_FWD_DEFINED__ */
571
572
573#ifndef __ID3D12DeviceConfiguration_FWD_DEFINED__
574#define __ID3D12DeviceConfiguration_FWD_DEFINED__
575typedef interface ID3D12DeviceConfiguration ID3D12DeviceConfiguration;
576
577#endif /* __ID3D12DeviceConfiguration_FWD_DEFINED__ */
578
579
580#ifndef __ID3D12DeviceConfiguration1_FWD_DEFINED__
581#define __ID3D12DeviceConfiguration1_FWD_DEFINED__
582typedef interface ID3D12DeviceConfiguration1 ID3D12DeviceConfiguration1;
583
584#endif /* __ID3D12DeviceConfiguration1_FWD_DEFINED__ */
585
586
587#ifndef __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
588#define __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__
589typedef interface ID3D12StateObjectDatabaseFactory ID3D12StateObjectDatabaseFactory;
590
591#endif /* __ID3D12StateObjectDatabaseFactory_FWD_DEFINED__ */
592
593
594#ifndef __ID3D12GraphicsCommandList5_FWD_DEFINED__
595#define __ID3D12GraphicsCommandList5_FWD_DEFINED__
596typedef interface ID3D12GraphicsCommandList5 ID3D12GraphicsCommandList5;
597
598#endif /* __ID3D12GraphicsCommandList5_FWD_DEFINED__ */
599
600
601#ifndef __ID3D12GraphicsCommandList6_FWD_DEFINED__
602#define __ID3D12GraphicsCommandList6_FWD_DEFINED__
603typedef interface ID3D12GraphicsCommandList6 ID3D12GraphicsCommandList6;
604
605#endif /* __ID3D12GraphicsCommandList6_FWD_DEFINED__ */
606
607
608#ifndef __ID3D12GraphicsCommandList7_FWD_DEFINED__
609#define __ID3D12GraphicsCommandList7_FWD_DEFINED__
610typedef interface ID3D12GraphicsCommandList7 ID3D12GraphicsCommandList7;
611
612#endif /* __ID3D12GraphicsCommandList7_FWD_DEFINED__ */
613
614
615#ifndef __ID3D12GraphicsCommandList8_FWD_DEFINED__
616#define __ID3D12GraphicsCommandList8_FWD_DEFINED__
617typedef interface ID3D12GraphicsCommandList8 ID3D12GraphicsCommandList8;
618
619#endif /* __ID3D12GraphicsCommandList8_FWD_DEFINED__ */
620
621
622#ifndef __ID3D12GraphicsCommandList9_FWD_DEFINED__
623#define __ID3D12GraphicsCommandList9_FWD_DEFINED__
624typedef interface ID3D12GraphicsCommandList9 ID3D12GraphicsCommandList9;
625
626#endif /* __ID3D12GraphicsCommandList9_FWD_DEFINED__ */
627
628
629#ifndef __ID3D12GraphicsCommandList10_FWD_DEFINED__
630#define __ID3D12GraphicsCommandList10_FWD_DEFINED__
631typedef interface ID3D12GraphicsCommandList10 ID3D12GraphicsCommandList10;
632
633#endif /* __ID3D12GraphicsCommandList10_FWD_DEFINED__ */
634
635
636#ifndef __ID3D12DSRDeviceFactory_FWD_DEFINED__
637#define __ID3D12DSRDeviceFactory_FWD_DEFINED__
638typedef interface ID3D12DSRDeviceFactory ID3D12DSRDeviceFactory;
639
640#endif /* __ID3D12DSRDeviceFactory_FWD_DEFINED__ */
641
642
643#ifndef __ID3D12GBVDiagnostics_FWD_DEFINED__
644#define __ID3D12GBVDiagnostics_FWD_DEFINED__
645typedef interface ID3D12GBVDiagnostics ID3D12GBVDiagnostics;
646
647#endif /* __ID3D12GBVDiagnostics_FWD_DEFINED__ */
648
649
650/* header files for imported files */
651#include "oaidl.h"
652#include "ocidl.h"
653#include "dxgicommon.h"
654#include "dxgiformat.h"
655#include "d3dcommon.h"
656
657#ifdef __cplusplus
658extern "C"{
659#endif
660
661
662/* interface __MIDL_itf_d3d12_0000_0000 */
663/* [local] */
664
665#include <winapifamily.h>
666#pragma region App Family
667#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
668#ifndef _D3D12_CONSTANTS
669#define _D3D12_CONSTANTS
670#define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
671
672#define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
673
674#define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
675
676#define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
677
678#define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
679
680#define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
681
682#define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
683
684#define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
685
686#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
687
688#define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
689
690#define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
691
692#define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
693
694#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
695
696#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
697
698#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
699
700#define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
701
702#define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
703
704#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
705
706#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
707
708#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
709
710#define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
711
712#define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
713
714#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
715
716#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
717
718#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
719
720#define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
721
722#define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
723
724#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
725
726#define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
727
728#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
729
730#define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
731
732#define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
733
734#define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
735
736#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
737
738#define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
739
740#define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
741
742#define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
743
744#define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
745
746#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
747
748#define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
749
750#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
751
752#define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
753
754#define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
755
756#define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
757
758#define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
759
760#define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
761
762#define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
763
764#define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
765
766#define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
767
768#define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
769
770#define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
771
772#define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
773
774#define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
775
776#define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
777
778#define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
779
780#define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
781
782#define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
783
784#define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
785
786#define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
787
788#define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
789
790#define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
791
792#define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
793
794#define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
795
796#define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
797
798#define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
799
800#define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
801
802#define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
803
804#define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
805
806#define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
807
808#define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
809
810#define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
811
812#define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
813
814#define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
815
816#define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
817
818#define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
819
820#define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
821
822#define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
823
824#define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
825
826#define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
827
828#define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
829
830#define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
831
832#define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
833
834#define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
835
836#define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
837
838#define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
839
840#define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
841
842#define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
843
844#define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
845
846#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
847
848#define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
849
850#define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
851
852#define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
853
854#define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
855
856#define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
857
858#define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
859
860#define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
861
862#define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
863
864#define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
865
866#define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
867
868#define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
869
870#define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
871
872#define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
873
874#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
875#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
876#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
877#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
878#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
879#define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
880
881#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
882#define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
883
884#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
885#define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
886
887#define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
888
889#define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
890
891#define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
892
893#define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
894
895#define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
896
897#define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
898
899#define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
900
901#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
902#define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
903
904#define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
905
906#define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
907
908#define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
909
910#define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
911
912#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
913#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
914#define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
915
916#define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
917
918#define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
919
920#define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
921
922#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
923
924#define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
925
926#define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
927
928#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
929
930#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
931
932#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
933
934#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
935
936#define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
937
938#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
939
940#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
941
942#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
943
944#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
945
946#define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
947
948#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
949
950#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
951
952#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
953
954#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
955
956#define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
957
958#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
959
960#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
961
962#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
963
964#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
965
966#define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
967
968#define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
969
970#define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
971
972#define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
973
974#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
975#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
976#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
977#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
978#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
979#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
980#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
981#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
982#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
983#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
984#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
985#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
986#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
987#define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
988
989#define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
990
991#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
992
993#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
994
995#define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
996
997#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
998
999#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1000
1001#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
1002
1003#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
1004
1005#define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
1006
1007#define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
1008
1009#define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1010
1011#define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
1012
1013#define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
1014
1015#define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
1016
1017#define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
1018
1019#define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
1020
1021#define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
1022
1023#define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
1024
1025#define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1026
1027#define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1028
1029#define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
1030
1031#define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
1032
1033#define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
1034
1035#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
1036
1037#define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1038
1039#define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
1040
1041#define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
1042
1043#define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1044
1045#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1046
1047#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1048
1049#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
1050
1051#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1052
1053#define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1054
1055#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
1056
1057#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1058
1059#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
1060
1061#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
1062
1063#define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
1064
1065#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
1066
1067#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1068
1069#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
1070
1071#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
1072
1073#define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
1074
1075#define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
1076
1077#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
1078#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
1079#define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
1080
1081#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
1082
1083#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1084
1085#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
1086
1087#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
1088
1089#define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
1090
1091#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
1092
1093#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1094
1095#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
1096
1097#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
1098
1099#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
1100
1101#define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
1102
1103#define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1104
1105#define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
1106
1107#define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
1108
1109#define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
1110
1111#define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
1112
1113#define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
1114
1115#define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
1116
1117#define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
1118
1119#define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
1120
1121#define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
1122
1123#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
1124
1125#define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
1126
1127#define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
1128
1129#define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
1130
1131#define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
1132
1133#define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
1134
1135#define D3D12_LINEAR_GAMMA ( 1.0f )
1136#define D3D12_MAJOR_VERSION ( 12 )
1137
1138#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
1139#define D3D12_MAX_DEPTH ( 1.0f )
1140#define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
1141
1142#define D3D12_MAX_MAXANISOTROPY ( 16 )
1143
1144#define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
1145
1146#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
1147#define D3D12_MAX_ROOT_COST ( 64 )
1148
1149#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
1150
1151#define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
1152
1153#define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
1154
1155#define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
1156
1157#define D3D12_MAX_VIEW_INSTANCE_COUNT ( 4 )
1158
1159#define D3D12_MINOR_VERSION ( 0 )
1160
1161#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
1162#define D3D12_MIN_DEPTH ( 0.0f )
1163#define D3D12_MIN_MAXANISOTROPY ( 0 )
1164
1165#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
1166#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
1167#define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
1168
1169#define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
1170
1171#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
1172#define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
1173
1174#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1175
1176#define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
1177
1178#define D3D12_PACKED_TILE ( 0xffffffff )
1179
1180#define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
1181
1182#define D3D12_PREVIEW_SDK_VERSION ( 717 )
1183
1184#define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1185
1186#define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
1187
1188#define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
1189
1190#define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
1191
1192#define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
1193
1194#define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
1195
1196#define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
1197
1198#define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
1199
1200#define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
1201
1202#define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1203
1204#define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
1205
1206#define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
1207
1208#define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
1209
1210#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
1211#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
1212
1213#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1214
1215#define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
1216
1217#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
1218
1219#define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1220
1221#define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
1222
1223#define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1224
1225#define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1226
1227#define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
1228
1229#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
1230#define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
1231
1232#define D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT ( 8 )
1233
1234#define D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT ( 256 )
1235
1236#define D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT ( 16 )
1237
1238#define D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES ( 32 )
1239
1240#define D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH ( 31 )
1241
1242#define D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1243
1244#define D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE ( 16777216 )
1245
1246#define D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE ( 536870912 )
1247
1248#define D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS ( 1073741824 )
1249
1250#define D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE ( 4096 )
1251
1252#define D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT ( 128 )
1253
1254#define D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL ( 12 )
1255
1256#define D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT ( 32 )
1257
1258#define D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT ( 64 )
1259
1260#define D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT ( 16 )
1261
1262#define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
1263
1264#define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
1265
1266#define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1267
1268#define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
1269
1270#define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
1271
1272#define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
1273
1274#define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
1275
1276#define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
1277
1278#define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
1279
1280#define D3D12_REQ_MAXANISOTROPY ( 16 )
1281
1282#define D3D12_REQ_MIP_LEVELS ( 15 )
1283
1284#define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
1285
1286#define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1287
1288#define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
1289
1290#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
1291
1292#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
1293#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
1294
1295#define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
1296
1297#define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
1298
1299#define D3D12_REQ_SUBRESOURCES ( 30720 )
1300
1301#define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
1302
1303#define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
1304
1305#define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
1306
1307#define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
1308
1309#define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
1310
1311#define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
1312
1313#define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
1314
1315#define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
1316
1317#define D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT ( 2 )
1318
1319#define D3D12_SDK_VERSION ( 618 )
1320
1321#define D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES ( 32 )
1322
1323#define D3D12_SHADER_MAJOR_VERSION ( 5 )
1324
1325#define D3D12_SHADER_MAX_INSTANCES ( 65535 )
1326
1327#define D3D12_SHADER_MAX_INTERFACES ( 253 )
1328
1329#define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
1330
1331#define D3D12_SHADER_MAX_TYPES ( 65535 )
1332
1333#define D3D12_SHADER_MINOR_VERSION ( 1 )
1334
1335#define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
1336
1337#define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
1338
1339#define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
1340
1341#define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
1342
1343#define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
1344
1345#define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
1346
1347#define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
1348
1349#define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
1350
1351#define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
1352
1353#define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
1354
1355#define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
1356
1357#define D3D12_SO_STREAM_COUNT ( 4 )
1358
1359#define D3D12_SPEC_DATE_DAY ( 14 )
1360
1361#define D3D12_SPEC_DATE_MONTH ( 11 )
1362
1363#define D3D12_SPEC_DATE_YEAR ( 2014 )
1364
1365#define D3D12_SPEC_VERSION ( 1.16 )
1366#define D3D12_SRGB_GAMMA ( 2.2f )
1367#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
1368#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
1369#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
1370#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
1371#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
1372#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
1373#define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
1374
1375#define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
1376
1377#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
1378
1379#define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
1380
1381#define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
1382
1383#define D3D12_STANDARD_VECTOR_SIZE ( 4 )
1384
1385#define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
1386
1387#define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
1388
1389#define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
1390
1391#define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
1392
1393#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
1394
1395#define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
1396
1397#define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
1398
1399#define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
1400
1401#define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
1402
1403#define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
1404
1405#define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
1406
1407#define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
1408
1409#define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
1410
1411#define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
1412
1413#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
1414
1415#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
1416
1417#define D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT ( 4096 )
1418
1419#define D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT ( 8 )
1420
1421#define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
1422
1423#define D3D12_TRACKED_WORKLOAD_MAX_INSTANCES ( 32 )
1424
1425#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
1426
1427#define D3D12_UAV_SLOT_COUNT ( 64 )
1428
1429#define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
1430
1431#define D3D12_VIDEO_DECODE_MAX_ARGUMENTS ( 10 )
1432
1433#define D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS ( 4 )
1434
1435#define D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT ( 256 )
1436
1437#define D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT ( 256 )
1438
1439#define D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN ( 0xffffffff )
1440
1441#define D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX ( 0xff )
1442
1443#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS ( 64 )
1444
1445#define D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS ( 64 )
1446
1447#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN ( 9 )
1448
1449#define D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM ( 8 )
1450
1451#define D3D12_VIDEO_PROCESS_MAX_FILTERS ( 32 )
1452
1453#define D3D12_VIDEO_PROCESS_STEREO_VIEWS ( 2 )
1454
1455#define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
1456
1457#define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
1458
1459#define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
1460
1461#define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
1462
1463#define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
1464
1465#define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1466
1467#define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
1468
1469#define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
1470
1471#define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
1472
1473#define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
1474
1475#define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
1476
1477#define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
1478
1479#define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
1480
1481#define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
1482
1483#define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
1484
1485#define D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES ( 8 )
1486
1487#define D3D12_WORK_GRAPHS_MAX_NODE_DEPTH ( 32 )
1488
1489#endif
1490
1491typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
1492
1493typedef
1494enum D3D12_COMMAND_LIST_TYPE
1495 {
1496 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
1497 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
1498 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
1499 D3D12_COMMAND_LIST_TYPE_COPY = 3,
1500 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
1501 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
1502 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
1503 D3D12_COMMAND_LIST_TYPE_NONE = -1
1504 } D3D12_COMMAND_LIST_TYPE;
1505
1506typedef
1507enum D3D12_COMMAND_QUEUE_FLAGS
1508 {
1509 D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
1510 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
1511 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2
1512 } D3D12_COMMAND_QUEUE_FLAGS;
1513
1514DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )
1515typedef
1516enum D3D12_COMMAND_QUEUE_PRIORITY
1517 {
1518 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
1519 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
1520 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
1521 } D3D12_COMMAND_QUEUE_PRIORITY;
1522
1523typedef struct D3D12_COMMAND_QUEUE_DESC
1524 {
1525 D3D12_COMMAND_LIST_TYPE Type;
1526 INT Priority;
1527 D3D12_COMMAND_QUEUE_FLAGS Flags;
1528 UINT NodeMask;
1529 } D3D12_COMMAND_QUEUE_DESC;
1530
1531typedef
1532enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
1533 {
1534 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
1535 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
1536 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
1537 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
1538 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
1539 } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
1540
1541typedef
1542enum D3D12_INPUT_CLASSIFICATION
1543 {
1544 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
1545 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
1546 } D3D12_INPUT_CLASSIFICATION;
1547
1548typedef struct D3D12_INPUT_ELEMENT_DESC
1549 {
1550 LPCSTR SemanticName;
1551 UINT SemanticIndex;
1552 DXGI_FORMAT Format;
1553 UINT InputSlot;
1554 UINT AlignedByteOffset;
1555 D3D12_INPUT_CLASSIFICATION InputSlotClass;
1556 UINT InstanceDataStepRate;
1557 } D3D12_INPUT_ELEMENT_DESC;
1558
1559typedef
1560enum D3D12_FILL_MODE
1561 {
1562 D3D12_FILL_MODE_WIREFRAME = 2,
1563 D3D12_FILL_MODE_SOLID = 3
1564 } D3D12_FILL_MODE;
1565
1566typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
1567
1568typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
1569
1570typedef
1571enum D3D12_CULL_MODE
1572 {
1573 D3D12_CULL_MODE_NONE = 1,
1574 D3D12_CULL_MODE_FRONT = 2,
1575 D3D12_CULL_MODE_BACK = 3
1576 } D3D12_CULL_MODE;
1577
1578typedef struct D3D12_SO_DECLARATION_ENTRY
1579 {
1580 UINT Stream;
1581 LPCSTR SemanticName;
1582 UINT SemanticIndex;
1583 BYTE StartComponent;
1584 BYTE ComponentCount;
1585 BYTE OutputSlot;
1586 } D3D12_SO_DECLARATION_ENTRY;
1587
1588typedef struct D3D12_VIEWPORT
1589 {
1590 FLOAT TopLeftX;
1591 FLOAT TopLeftY;
1592 FLOAT Width;
1593 FLOAT Height;
1594 FLOAT MinDepth;
1595 FLOAT MaxDepth;
1596 } D3D12_VIEWPORT;
1597
1598typedef RECT D3D12_RECT;
1599
1600typedef struct D3D12_BOX
1601 {
1602 UINT left;
1603 UINT top;
1604 UINT front;
1605 UINT right;
1606 UINT bottom;
1607 UINT back;
1608 } D3D12_BOX;
1609
1610#ifdef __midl
1611#ifndef LUID_DEFINED
1612#define LUID_DEFINED 1
1613typedef struct __LUID
1614 {
1615 DWORD LowPart;
1616 LONG HighPart;
1617 } LUID;
1618
1619typedef struct __LUID *PLUID;
1620
1621#endif
1622#endif
1623typedef
1624enum D3D12_COMPARISON_FUNC
1625 {
1626 D3D12_COMPARISON_FUNC_NONE = 0,
1627 D3D12_COMPARISON_FUNC_NEVER = 1,
1628 D3D12_COMPARISON_FUNC_LESS = 2,
1629 D3D12_COMPARISON_FUNC_EQUAL = 3,
1630 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
1631 D3D12_COMPARISON_FUNC_GREATER = 5,
1632 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
1633 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
1634 D3D12_COMPARISON_FUNC_ALWAYS = 8
1635 } D3D12_COMPARISON_FUNC;
1636
1637typedef
1638enum D3D12_DEPTH_WRITE_MASK
1639 {
1640 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
1641 D3D12_DEPTH_WRITE_MASK_ALL = 1
1642 } D3D12_DEPTH_WRITE_MASK;
1643
1644typedef
1645enum D3D12_STENCIL_OP
1646 {
1647 D3D12_STENCIL_OP_KEEP = 1,
1648 D3D12_STENCIL_OP_ZERO = 2,
1649 D3D12_STENCIL_OP_REPLACE = 3,
1650 D3D12_STENCIL_OP_INCR_SAT = 4,
1651 D3D12_STENCIL_OP_DECR_SAT = 5,
1652 D3D12_STENCIL_OP_INVERT = 6,
1653 D3D12_STENCIL_OP_INCR = 7,
1654 D3D12_STENCIL_OP_DECR = 8
1655 } D3D12_STENCIL_OP;
1656
1657typedef struct D3D12_DEPTH_STENCILOP_DESC
1658 {
1659 D3D12_STENCIL_OP StencilFailOp;
1660 D3D12_STENCIL_OP StencilDepthFailOp;
1661 D3D12_STENCIL_OP StencilPassOp;
1662 D3D12_COMPARISON_FUNC StencilFunc;
1663 } D3D12_DEPTH_STENCILOP_DESC;
1664
1665typedef struct D3D12_DEPTH_STENCIL_DESC
1666 {
1667 BOOL DepthEnable;
1668 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1669 D3D12_COMPARISON_FUNC DepthFunc;
1670 BOOL StencilEnable;
1671 UINT8 StencilReadMask;
1672 UINT8 StencilWriteMask;
1673 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1674 D3D12_DEPTH_STENCILOP_DESC BackFace;
1675 } D3D12_DEPTH_STENCIL_DESC;
1676
1677typedef struct D3D12_DEPTH_STENCIL_DESC1
1678 {
1679 BOOL DepthEnable;
1680 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1681 D3D12_COMPARISON_FUNC DepthFunc;
1682 BOOL StencilEnable;
1683 UINT8 StencilReadMask;
1684 UINT8 StencilWriteMask;
1685 D3D12_DEPTH_STENCILOP_DESC FrontFace;
1686 D3D12_DEPTH_STENCILOP_DESC BackFace;
1687 BOOL DepthBoundsTestEnable;
1688 } D3D12_DEPTH_STENCIL_DESC1;
1689
1690typedef struct D3D12_DEPTH_STENCILOP_DESC1
1691 {
1692 D3D12_STENCIL_OP StencilFailOp;
1693 D3D12_STENCIL_OP StencilDepthFailOp;
1694 D3D12_STENCIL_OP StencilPassOp;
1695 D3D12_COMPARISON_FUNC StencilFunc;
1696 UINT8 StencilReadMask;
1697 UINT8 StencilWriteMask;
1698 } D3D12_DEPTH_STENCILOP_DESC1;
1699
1700typedef struct D3D12_DEPTH_STENCIL_DESC2
1701 {
1702 BOOL DepthEnable;
1703 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
1704 D3D12_COMPARISON_FUNC DepthFunc;
1705 BOOL StencilEnable;
1706 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
1707 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
1708 BOOL DepthBoundsTestEnable;
1709 } D3D12_DEPTH_STENCIL_DESC2;
1710
1711typedef
1712enum D3D12_BLEND
1713 {
1714 D3D12_BLEND_ZERO = 1,
1715 D3D12_BLEND_ONE = 2,
1716 D3D12_BLEND_SRC_COLOR = 3,
1717 D3D12_BLEND_INV_SRC_COLOR = 4,
1718 D3D12_BLEND_SRC_ALPHA = 5,
1719 D3D12_BLEND_INV_SRC_ALPHA = 6,
1720 D3D12_BLEND_DEST_ALPHA = 7,
1721 D3D12_BLEND_INV_DEST_ALPHA = 8,
1722 D3D12_BLEND_DEST_COLOR = 9,
1723 D3D12_BLEND_INV_DEST_COLOR = 10,
1724 D3D12_BLEND_SRC_ALPHA_SAT = 11,
1725 D3D12_BLEND_BLEND_FACTOR = 14,
1726 D3D12_BLEND_INV_BLEND_FACTOR = 15,
1727 D3D12_BLEND_SRC1_COLOR = 16,
1728 D3D12_BLEND_INV_SRC1_COLOR = 17,
1729 D3D12_BLEND_SRC1_ALPHA = 18,
1730 D3D12_BLEND_INV_SRC1_ALPHA = 19,
1731 D3D12_BLEND_ALPHA_FACTOR = 20,
1732 D3D12_BLEND_INV_ALPHA_FACTOR = 21
1733 } D3D12_BLEND;
1734
1735typedef
1736enum D3D12_BLEND_OP
1737 {
1738 D3D12_BLEND_OP_ADD = 1,
1739 D3D12_BLEND_OP_SUBTRACT = 2,
1740 D3D12_BLEND_OP_REV_SUBTRACT = 3,
1741 D3D12_BLEND_OP_MIN = 4,
1742 D3D12_BLEND_OP_MAX = 5
1743 } D3D12_BLEND_OP;
1744
1745typedef
1746enum D3D12_COLOR_WRITE_ENABLE
1747 {
1748 D3D12_COLOR_WRITE_ENABLE_RED = 1,
1749 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
1750 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
1751 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
1752 D3D12_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN ) | D3D12_COLOR_WRITE_ENABLE_BLUE ) | D3D12_COLOR_WRITE_ENABLE_ALPHA )
1753 } D3D12_COLOR_WRITE_ENABLE;
1754
1755typedef
1756enum D3D12_LOGIC_OP
1757 {
1758 D3D12_LOGIC_OP_CLEAR = 0,
1759 D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
1760 D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
1761 D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
1762 D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
1763 D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
1764 D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
1765 D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
1766 D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
1767 D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
1768 D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
1769 D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
1770 D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
1771 D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
1772 D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
1773 D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
1774 } D3D12_LOGIC_OP;
1775
1776typedef struct D3D12_RENDER_TARGET_BLEND_DESC
1777 {
1778 BOOL BlendEnable;
1779 BOOL LogicOpEnable;
1780 D3D12_BLEND SrcBlend;
1781 D3D12_BLEND DestBlend;
1782 D3D12_BLEND_OP BlendOp;
1783 D3D12_BLEND SrcBlendAlpha;
1784 D3D12_BLEND DestBlendAlpha;
1785 D3D12_BLEND_OP BlendOpAlpha;
1786 D3D12_LOGIC_OP LogicOp;
1787 UINT8 RenderTargetWriteMask;
1788 } D3D12_RENDER_TARGET_BLEND_DESC;
1789
1790typedef struct D3D12_BLEND_DESC
1791 {
1792 BOOL AlphaToCoverageEnable;
1793 BOOL IndependentBlendEnable;
1794 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
1795 } D3D12_BLEND_DESC;
1796
1797/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
1798 IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
1799typedef
1800enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
1801 {
1802 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
1803 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
1804 } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
1805
1806typedef struct D3D12_RASTERIZER_DESC
1807 {
1808 D3D12_FILL_MODE FillMode;
1809 D3D12_CULL_MODE CullMode;
1810 BOOL FrontCounterClockwise;
1811 INT DepthBias;
1812 FLOAT DepthBiasClamp;
1813 FLOAT SlopeScaledDepthBias;
1814 BOOL DepthClipEnable;
1815 BOOL MultisampleEnable;
1816 BOOL AntialiasedLineEnable;
1817 UINT ForcedSampleCount;
1818 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1819 } D3D12_RASTERIZER_DESC;
1820
1821typedef struct D3D12_RASTERIZER_DESC1
1822 {
1823 D3D12_FILL_MODE FillMode;
1824 D3D12_CULL_MODE CullMode;
1825 BOOL FrontCounterClockwise;
1826 FLOAT DepthBias;
1827 FLOAT DepthBiasClamp;
1828 FLOAT SlopeScaledDepthBias;
1829 BOOL DepthClipEnable;
1830 BOOL MultisampleEnable;
1831 BOOL AntialiasedLineEnable;
1832 UINT ForcedSampleCount;
1833 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1834 } D3D12_RASTERIZER_DESC1;
1835
1836typedef
1837enum D3D12_LINE_RASTERIZATION_MODE
1838 {
1839 D3D12_LINE_RASTERIZATION_MODE_ALIASED = 0,
1840 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED = ( D3D12_LINE_RASTERIZATION_MODE_ALIASED + 1 ) ,
1841 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE = ( D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED + 1 ) ,
1842 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW = ( D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE + 1 )
1843 } D3D12_LINE_RASTERIZATION_MODE;
1844
1845typedef struct D3D12_RASTERIZER_DESC2
1846 {
1847 D3D12_FILL_MODE FillMode;
1848 D3D12_CULL_MODE CullMode;
1849 BOOL FrontCounterClockwise;
1850 FLOAT DepthBias;
1851 FLOAT DepthBiasClamp;
1852 FLOAT SlopeScaledDepthBias;
1853 BOOL DepthClipEnable;
1854 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
1855 UINT ForcedSampleCount;
1856 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
1857 } D3D12_RASTERIZER_DESC2;
1858
1859
1860
1861extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
1862extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
1863
1864#ifndef __ID3D12Object_INTERFACE_DEFINED__
1865#define __ID3D12Object_INTERFACE_DEFINED__
1866
1867/* interface ID3D12Object */
1868/* [unique][local][object][uuid] */
1869
1870
1871EXTERN_C const IID IID_ID3D12Object;
1872
1873#if defined(__cplusplus) && !defined(CINTERFACE)
1874
1875 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1876 ID3D12Object : public IUnknown
1877 {
1878 public:
1879 virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1880 _In_ REFGUID guid,
1881 _Inout_ UINT *pDataSize,
1882 _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
1883
1884 virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1885 _In_ REFGUID guid,
1886 _In_ UINT DataSize,
1887 _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
1888
1889 virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1890 _In_ REFGUID guid,
1891 _In_opt_ const IUnknown *pData) = 0;
1892
1893 virtual HRESULT STDMETHODCALLTYPE SetName(
1894 _In_z_ LPCWSTR Name) = 0;
1895
1896 };
1897
1898
1899#else /* C style interface */
1900
1901 typedef struct ID3D12ObjectVtbl
1902 {
1903 BEGIN_INTERFACE
1904
1905 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1906 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1907 ID3D12Object * This,
1908 REFIID riid,
1909 _COM_Outptr_ void **ppvObject);
1910
1911 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1912 ULONG ( STDMETHODCALLTYPE *AddRef )(
1913 ID3D12Object * This);
1914
1915 DECLSPEC_XFGVIRT(IUnknown, Release)
1916 ULONG ( STDMETHODCALLTYPE *Release )(
1917 ID3D12Object * This);
1918
1919 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1920 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1921 ID3D12Object * This,
1922 _In_ REFGUID guid,
1923 _Inout_ UINT *pDataSize,
1924 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1925
1926 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1927 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1928 ID3D12Object * This,
1929 _In_ REFGUID guid,
1930 _In_ UINT DataSize,
1931 _In_reads_bytes_opt_( DataSize ) const void *pData);
1932
1933 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1934 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1935 ID3D12Object * This,
1936 _In_ REFGUID guid,
1937 _In_opt_ const IUnknown *pData);
1938
1939 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1940 HRESULT ( STDMETHODCALLTYPE *SetName )(
1941 ID3D12Object * This,
1942 _In_z_ LPCWSTR Name);
1943
1944 END_INTERFACE
1945 } ID3D12ObjectVtbl;
1946
1947 interface ID3D12Object
1948 {
1949 CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1950 };
1951
1952
1953
1954#ifdef COBJMACROS
1955
1956
1957#define ID3D12Object_QueryInterface(This,riid,ppvObject) \
1958 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1959
1960#define ID3D12Object_AddRef(This) \
1961 ( (This)->lpVtbl -> AddRef(This) )
1962
1963#define ID3D12Object_Release(This) \
1964 ( (This)->lpVtbl -> Release(This) )
1965
1966
1967#define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
1968 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1969
1970#define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
1971 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1972
1973#define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
1974 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1975
1976#define ID3D12Object_SetName(This,Name) \
1977 ( (This)->lpVtbl -> SetName(This,Name) )
1978
1979#endif /* COBJMACROS */
1980
1981
1982#endif /* C style interface */
1983
1984
1985
1986
1987#endif /* __ID3D12Object_INTERFACE_DEFINED__ */
1988
1989
1990#ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
1991#define __ID3D12DeviceChild_INTERFACE_DEFINED__
1992
1993/* interface ID3D12DeviceChild */
1994/* [unique][local][object][uuid] */
1995
1996
1997EXTERN_C const IID IID_ID3D12DeviceChild;
1998
1999#if defined(__cplusplus) && !defined(CINTERFACE)
2000
2001 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
2002 ID3D12DeviceChild : public ID3D12Object
2003 {
2004 public:
2005 virtual HRESULT STDMETHODCALLTYPE GetDevice(
2006 REFIID riid,
2007 _COM_Outptr_opt_ void **ppvDevice) = 0;
2008
2009 };
2010
2011
2012#else /* C style interface */
2013
2014 typedef struct ID3D12DeviceChildVtbl
2015 {
2016 BEGIN_INTERFACE
2017
2018 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2019 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2020 ID3D12DeviceChild * This,
2021 REFIID riid,
2022 _COM_Outptr_ void **ppvObject);
2023
2024 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2025 ULONG ( STDMETHODCALLTYPE *AddRef )(
2026 ID3D12DeviceChild * This);
2027
2028 DECLSPEC_XFGVIRT(IUnknown, Release)
2029 ULONG ( STDMETHODCALLTYPE *Release )(
2030 ID3D12DeviceChild * This);
2031
2032 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2033 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2034 ID3D12DeviceChild * This,
2035 _In_ REFGUID guid,
2036 _Inout_ UINT *pDataSize,
2037 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2038
2039 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2040 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2041 ID3D12DeviceChild * This,
2042 _In_ REFGUID guid,
2043 _In_ UINT DataSize,
2044 _In_reads_bytes_opt_( DataSize ) const void *pData);
2045
2046 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2047 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2048 ID3D12DeviceChild * This,
2049 _In_ REFGUID guid,
2050 _In_opt_ const IUnknown *pData);
2051
2052 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2053 HRESULT ( STDMETHODCALLTYPE *SetName )(
2054 ID3D12DeviceChild * This,
2055 _In_z_ LPCWSTR Name);
2056
2057 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2058 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2059 ID3D12DeviceChild * This,
2060 REFIID riid,
2061 _COM_Outptr_opt_ void **ppvDevice);
2062
2063 END_INTERFACE
2064 } ID3D12DeviceChildVtbl;
2065
2066 interface ID3D12DeviceChild
2067 {
2068 CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
2069 };
2070
2071
2072
2073#ifdef COBJMACROS
2074
2075
2076#define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
2077 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2078
2079#define ID3D12DeviceChild_AddRef(This) \
2080 ( (This)->lpVtbl -> AddRef(This) )
2081
2082#define ID3D12DeviceChild_Release(This) \
2083 ( (This)->lpVtbl -> Release(This) )
2084
2085
2086#define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
2087 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2088
2089#define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
2090 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2091
2092#define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
2093 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2094
2095#define ID3D12DeviceChild_SetName(This,Name) \
2096 ( (This)->lpVtbl -> SetName(This,Name) )
2097
2098
2099#define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
2100 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2101
2102#endif /* COBJMACROS */
2103
2104
2105#endif /* C style interface */
2106
2107
2108
2109
2110#endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
2111
2112
2113#ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
2114#define __ID3D12RootSignature_INTERFACE_DEFINED__
2115
2116/* interface ID3D12RootSignature */
2117/* [unique][local][object][uuid] */
2118
2119
2120EXTERN_C const IID IID_ID3D12RootSignature;
2121
2122#if defined(__cplusplus) && !defined(CINTERFACE)
2123
2124 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
2125 ID3D12RootSignature : public ID3D12DeviceChild
2126 {
2127 public:
2128 };
2129
2130
2131#else /* C style interface */
2132
2133 typedef struct ID3D12RootSignatureVtbl
2134 {
2135 BEGIN_INTERFACE
2136
2137 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2138 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2139 ID3D12RootSignature * This,
2140 REFIID riid,
2141 _COM_Outptr_ void **ppvObject);
2142
2143 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2144 ULONG ( STDMETHODCALLTYPE *AddRef )(
2145 ID3D12RootSignature * This);
2146
2147 DECLSPEC_XFGVIRT(IUnknown, Release)
2148 ULONG ( STDMETHODCALLTYPE *Release )(
2149 ID3D12RootSignature * This);
2150
2151 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2152 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2153 ID3D12RootSignature * This,
2154 _In_ REFGUID guid,
2155 _Inout_ UINT *pDataSize,
2156 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2157
2158 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2159 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2160 ID3D12RootSignature * This,
2161 _In_ REFGUID guid,
2162 _In_ UINT DataSize,
2163 _In_reads_bytes_opt_( DataSize ) const void *pData);
2164
2165 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2166 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2167 ID3D12RootSignature * This,
2168 _In_ REFGUID guid,
2169 _In_opt_ const IUnknown *pData);
2170
2171 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2172 HRESULT ( STDMETHODCALLTYPE *SetName )(
2173 ID3D12RootSignature * This,
2174 _In_z_ LPCWSTR Name);
2175
2176 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2177 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2178 ID3D12RootSignature * This,
2179 REFIID riid,
2180 _COM_Outptr_opt_ void **ppvDevice);
2181
2182 END_INTERFACE
2183 } ID3D12RootSignatureVtbl;
2184
2185 interface ID3D12RootSignature
2186 {
2187 CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
2188 };
2189
2190
2191
2192#ifdef COBJMACROS
2193
2194
2195#define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
2196 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2197
2198#define ID3D12RootSignature_AddRef(This) \
2199 ( (This)->lpVtbl -> AddRef(This) )
2200
2201#define ID3D12RootSignature_Release(This) \
2202 ( (This)->lpVtbl -> Release(This) )
2203
2204
2205#define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
2206 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2207
2208#define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
2209 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2210
2211#define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
2212 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2213
2214#define ID3D12RootSignature_SetName(This,Name) \
2215 ( (This)->lpVtbl -> SetName(This,Name) )
2216
2217
2218#define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
2219 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2220
2221
2222#endif /* COBJMACROS */
2223
2224
2225#endif /* C style interface */
2226
2227
2228
2229
2230#endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
2231
2232
2233/* interface __MIDL_itf_d3d12_0000_0001 */
2234/* [local] */
2235
2236typedef struct D3D12_SHADER_BYTECODE
2237 {
2238 _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
2239 SIZE_T BytecodeLength;
2240 } D3D12_SHADER_BYTECODE;
2241
2242typedef struct D3D12_STREAM_OUTPUT_DESC
2243 {
2244 _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
2245 UINT NumEntries;
2246 _Field_size_full_(NumStrides) const UINT *pBufferStrides;
2247 UINT NumStrides;
2248 UINT RasterizedStream;
2249 } D3D12_STREAM_OUTPUT_DESC;
2250
2251typedef struct D3D12_INPUT_LAYOUT_DESC
2252 {
2253 _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
2254 UINT NumElements;
2255 } D3D12_INPUT_LAYOUT_DESC;
2256
2257typedef
2258enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
2259 {
2260 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
2261 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
2262 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
2263 } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
2264
2265typedef
2266enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
2267 {
2268 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
2269 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
2270 } D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
2271
2272typedef struct D3D12_CACHED_PIPELINE_STATE
2273 {
2274 _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
2275 SIZE_T CachedBlobSizeInBytes;
2276 } D3D12_CACHED_PIPELINE_STATE;
2277
2278typedef
2279enum D3D12_PIPELINE_STATE_FLAGS
2280 {
2281 D3D12_PIPELINE_STATE_FLAG_NONE = 0,
2282 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
2283 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
2284 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8
2285 } D3D12_PIPELINE_STATE_FLAGS;
2286
2287DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )
2288typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
2289 {
2290 ID3D12RootSignature *pRootSignature;
2291 D3D12_SHADER_BYTECODE VS;
2292 D3D12_SHADER_BYTECODE PS;
2293 D3D12_SHADER_BYTECODE DS;
2294 D3D12_SHADER_BYTECODE HS;
2295 D3D12_SHADER_BYTECODE GS;
2296 D3D12_STREAM_OUTPUT_DESC StreamOutput;
2297 D3D12_BLEND_DESC BlendState;
2298 UINT SampleMask;
2299 D3D12_RASTERIZER_DESC RasterizerState;
2300 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
2301 D3D12_INPUT_LAYOUT_DESC InputLayout;
2302 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
2303 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
2304 UINT NumRenderTargets;
2305 DXGI_FORMAT RTVFormats[ 8 ];
2306 DXGI_FORMAT DSVFormat;
2307 DXGI_SAMPLE_DESC SampleDesc;
2308 UINT NodeMask;
2309 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2310 D3D12_PIPELINE_STATE_FLAGS Flags;
2311 } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
2312
2313typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
2314 {
2315 ID3D12RootSignature *pRootSignature;
2316 D3D12_SHADER_BYTECODE CS;
2317 UINT NodeMask;
2318 D3D12_CACHED_PIPELINE_STATE CachedPSO;
2319 D3D12_PIPELINE_STATE_FLAGS Flags;
2320 } D3D12_COMPUTE_PIPELINE_STATE_DESC;
2321
2322typedef
2323enum D3D_ROOT_SIGNATURE_VERSION
2324 {
2325 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
2326 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
2327 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
2328 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3
2329 } D3D_ROOT_SIGNATURE_VERSION;
2330
2331typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2332 {
2333 _Field_size_bytes_full_(SerializedBlobSizeInBytes) const void *pSerializedBlob;
2334 SIZE_T SerializedBlobSizeInBytes;
2335 } D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
2336
2337typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
2338 {
2339 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2340 } D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
2341
2342typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
2343 {
2344 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
2345 } D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
2346
2347struct D3D12_RT_FORMAT_ARRAY
2348 {
2349 DXGI_FORMAT RTFormats[ 8 ];
2350 UINT NumRenderTargets;
2351 } ;
2352typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
2353 {
2354 _In_ SIZE_T SizeInBytes;
2355 _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
2356 } D3D12_PIPELINE_STATE_STREAM_DESC;
2357
2358typedef
2359enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
2360 {
2361 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
2362 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
2363 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
2364 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
2365 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
2366 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
2367 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
2368 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
2369 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
2370 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
2371 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
2372 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
2373 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
2374 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
2375 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
2376 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
2377 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
2378 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
2379 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
2380 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
2381 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
2382 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
2383 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
2384 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24,
2385 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25,
2386 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26,
2387 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27,
2388 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28,
2389 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29,
2390 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE + 1 )
2391 } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
2392
2393typedef
2394enum D3D12_FEATURE
2395 {
2396 D3D12_FEATURE_D3D12_OPTIONS = 0,
2397 D3D12_FEATURE_ARCHITECTURE = 1,
2398 D3D12_FEATURE_FEATURE_LEVELS = 2,
2399 D3D12_FEATURE_FORMAT_SUPPORT = 3,
2400 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
2401 D3D12_FEATURE_FORMAT_INFO = 5,
2402 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
2403 D3D12_FEATURE_SHADER_MODEL = 7,
2404 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
2405 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
2406 D3D12_FEATURE_ROOT_SIGNATURE = 12,
2407 D3D12_FEATURE_ARCHITECTURE1 = 16,
2408 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
2409 D3D12_FEATURE_SHADER_CACHE = 19,
2410 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
2411 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
2412 D3D12_FEATURE_EXISTING_HEAPS = 22,
2413 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
2414 D3D12_FEATURE_SERIALIZATION = 24,
2415 D3D12_FEATURE_CROSS_NODE = 25,
2416 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
2417 D3D12_FEATURE_DISPLAYABLE = 28,
2418 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
2419 D3D12_FEATURE_QUERY_META_COMMAND = 31,
2420 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
2421 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
2422 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
2423 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
2424 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
2425 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
2426 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
2427 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
2428 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
2429 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
2430 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
2431 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
2432 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
2433 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
2434 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
2435 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
2436 D3D12_FEATURE_PREDICATION = 50,
2437 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
2438 D3D12_FEATURE_HARDWARE_COPY = 52,
2439 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
2440 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
2441 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
2442 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
2443 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61
2444 } D3D12_FEATURE;
2445
2446typedef
2447enum D3D12_SHADER_MIN_PRECISION_SUPPORT
2448 {
2449 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
2450 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
2451 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
2452 } D3D12_SHADER_MIN_PRECISION_SUPPORT;
2453
2454DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )
2455typedef
2456enum D3D12_TILED_RESOURCES_TIER
2457 {
2458 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
2459 D3D12_TILED_RESOURCES_TIER_1 = 1,
2460 D3D12_TILED_RESOURCES_TIER_2 = 2,
2461 D3D12_TILED_RESOURCES_TIER_3 = 3,
2462 D3D12_TILED_RESOURCES_TIER_4 = 4
2463 } D3D12_TILED_RESOURCES_TIER;
2464
2465typedef
2466enum D3D12_RESOURCE_BINDING_TIER
2467 {
2468 D3D12_RESOURCE_BINDING_TIER_1 = 1,
2469 D3D12_RESOURCE_BINDING_TIER_2 = 2,
2470 D3D12_RESOURCE_BINDING_TIER_3 = 3
2471 } D3D12_RESOURCE_BINDING_TIER;
2472
2473typedef
2474enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
2475 {
2476 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
2477 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
2478 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
2479 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
2480 } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
2481
2482typedef
2483enum D3D12_FORMAT_SUPPORT1
2484 {
2485 D3D12_FORMAT_SUPPORT1_NONE = 0,
2486 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
2487 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
2488 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
2489 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
2490 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
2491 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
2492 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
2493 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
2494 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
2495 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
2496 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
2497 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
2498 D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
2499 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
2500 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
2501 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
2502 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
2503 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
2504 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
2505 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
2506 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
2507 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
2508 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
2509 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
2510 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
2511 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
2512 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
2513 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
2514 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
2515 } D3D12_FORMAT_SUPPORT1;
2516
2517DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )
2518typedef
2519enum D3D12_FORMAT_SUPPORT2
2520 {
2521 D3D12_FORMAT_SUPPORT2_NONE = 0,
2522 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
2523 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
2524 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
2525 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
2526 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
2527 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
2528 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
2529 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
2530 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
2531 D3D12_FORMAT_SUPPORT2_TILED = 0x200,
2532 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000,
2533 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x8000,
2534 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x10000
2535 } D3D12_FORMAT_SUPPORT2;
2536
2537DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )
2538typedef
2539enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
2540 {
2541 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
2542 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
2543 } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
2544
2545DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )
2546typedef
2547enum D3D12_CROSS_NODE_SHARING_TIER
2548 {
2549 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
2550 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
2551 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
2552 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
2553 D3D12_CROSS_NODE_SHARING_TIER_3 = 4
2554 } D3D12_CROSS_NODE_SHARING_TIER;
2555
2556typedef
2557enum D3D12_RESOURCE_HEAP_TIER
2558 {
2559 D3D12_RESOURCE_HEAP_TIER_1 = 1,
2560 D3D12_RESOURCE_HEAP_TIER_2 = 2
2561 } D3D12_RESOURCE_HEAP_TIER;
2562
2563typedef
2564enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
2565 {
2566 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
2567 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
2568 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
2569 } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
2570
2571typedef
2572enum D3D12_VIEW_INSTANCING_TIER
2573 {
2574 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
2575 D3D12_VIEW_INSTANCING_TIER_1 = 1,
2576 D3D12_VIEW_INSTANCING_TIER_2 = 2,
2577 D3D12_VIEW_INSTANCING_TIER_3 = 3
2578 } D3D12_VIEW_INSTANCING_TIER;
2579
2580typedef
2581enum D3D12_WORK_GRAPHS_TIER
2582 {
2583 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
2584 D3D12_WORK_GRAPHS_TIER_1_0 = 10
2585 } D3D12_WORK_GRAPHS_TIER;
2586
2587typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
2588 {
2589 _Out_ BOOL DoublePrecisionFloatShaderOps;
2590 _Out_ BOOL OutputMergerLogicOp;
2591 _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
2592 _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
2593 _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
2594 _Out_ BOOL PSSpecifiedStencilRefSupported;
2595 _Out_ BOOL TypedUAVLoadAdditionalFormats;
2596 _Out_ BOOL ROVsSupported;
2597 _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
2598 _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
2599 _Out_ BOOL StandardSwizzle64KBSupported;
2600 _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
2601 _Out_ BOOL CrossAdapterRowMajorTextureSupported;
2602 _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
2603 _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
2604 } D3D12_FEATURE_DATA_D3D12_OPTIONS;
2605
2606typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
2607 {
2608 _Out_ BOOL WaveOps;
2609 _Out_ UINT WaveLaneCountMin;
2610 _Out_ UINT WaveLaneCountMax;
2611 _Out_ UINT TotalLaneCount;
2612 _Out_ BOOL ExpandedComputeResourceStates;
2613 _Out_ BOOL Int64ShaderOps;
2614 } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
2615
2616typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
2617 {
2618 _Out_ BOOL DepthBoundsTestSupported;
2619 _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
2620 } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
2621
2622typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
2623 {
2624 _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
2625 } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
2626
2627typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
2628 {
2629 _In_ UINT NodeIndex;
2630 _Out_ BOOL TileBasedRenderer;
2631 _Out_ BOOL UMA;
2632 _Out_ BOOL CacheCoherentUMA;
2633 } D3D12_FEATURE_DATA_ARCHITECTURE;
2634
2635typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
2636 {
2637 _In_ UINT NodeIndex;
2638 _Out_ BOOL TileBasedRenderer;
2639 _Out_ BOOL UMA;
2640 _Out_ BOOL CacheCoherentUMA;
2641 _Out_ BOOL IsolatedMMU;
2642 } D3D12_FEATURE_DATA_ARCHITECTURE1;
2643
2644typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
2645 {
2646 _In_ UINT NumFeatureLevels;
2647 _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
2648 _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
2649 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
2650
2651typedef
2652enum D3D_SHADER_MODEL
2653 {
2654 D3D_SHADER_MODEL_NONE = 0,
2655 D3D_SHADER_MODEL_5_1 = 0x51,
2656 D3D_SHADER_MODEL_6_0 = 0x60,
2657 D3D_SHADER_MODEL_6_1 = 0x61,
2658 D3D_SHADER_MODEL_6_2 = 0x62,
2659 D3D_SHADER_MODEL_6_3 = 0x63,
2660 D3D_SHADER_MODEL_6_4 = 0x64,
2661 D3D_SHADER_MODEL_6_5 = 0x65,
2662 D3D_SHADER_MODEL_6_6 = 0x66,
2663 D3D_SHADER_MODEL_6_7 = 0x67,
2664 D3D_SHADER_MODEL_6_8 = 0x68,
2665 D3D_SHADER_MODEL_6_9 = 0x69,
2666 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
2667 } D3D_SHADER_MODEL;
2668
2669typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
2670 {
2671 _Inout_ D3D_SHADER_MODEL HighestShaderModel;
2672 } D3D12_FEATURE_DATA_SHADER_MODEL;
2673
2674typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
2675 {
2676 _In_ DXGI_FORMAT Format;
2677 _Out_ D3D12_FORMAT_SUPPORT1 Support1;
2678 _Out_ D3D12_FORMAT_SUPPORT2 Support2;
2679 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
2680
2681typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
2682 {
2683 _In_ DXGI_FORMAT Format;
2684 _In_ UINT SampleCount;
2685 _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
2686 _Out_ UINT NumQualityLevels;
2687 } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
2688
2689typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
2690 {
2691 DXGI_FORMAT Format;
2692 UINT8 PlaneCount;
2693 } D3D12_FEATURE_DATA_FORMAT_INFO;
2694
2695typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
2696 {
2697 UINT MaxGPUVirtualAddressBitsPerResource;
2698 UINT MaxGPUVirtualAddressBitsPerProcess;
2699 } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
2700
2701typedef
2702enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
2703 {
2704 D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
2705 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
2706 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
2707 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
2708 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
2709 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
2710 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
2711 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
2712 } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
2713
2714DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )
2715typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
2716 {
2717 _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
2718 } D3D12_FEATURE_DATA_SHADER_CACHE;
2719
2720typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
2721 {
2722 _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
2723 _In_ UINT Priority;
2724 _Out_ BOOL PriorityForTypeIsSupported;
2725 } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
2726
2727typedef
2728enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
2729 {
2730 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0,
2731 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
2732 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
2733 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
2734 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = ( 1 << D3D12_COMMAND_LIST_TYPE_COPY ) ,
2735 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
2736 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
2737 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = ( 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
2738 } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
2739
2740DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )
2741typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
2742 {
2743 _Out_ BOOL CopyQueueTimestampQueriesSupported;
2744 _Out_ BOOL CastingFullyTypedFormatSupported;
2745 _Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
2746 _Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
2747 _Out_ BOOL BarycentricsSupported;
2748 } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
2749
2750typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
2751 {
2752 _Out_ BOOL Supported;
2753 } D3D12_FEATURE_DATA_EXISTING_HEAPS;
2754
2755typedef
2756enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
2757 {
2758 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0,
2759 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 ) ,
2760 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 = ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 + 1 )
2761 } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
2762
2763typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
2764 {
2765 _Out_ BOOL DisplayableTexture;
2766 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2767 } D3D12_FEATURE_DATA_DISPLAYABLE;
2768
2769typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
2770 {
2771 _Out_ BOOL MSAA64KBAlignedTextureSupported;
2772 _Out_ D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
2773 _Out_ BOOL Native16BitShaderOpsSupported;
2774 } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
2775
2776typedef
2777enum D3D12_HEAP_SERIALIZATION_TIER
2778 {
2779 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
2780 D3D12_HEAP_SERIALIZATION_TIER_10 = 10
2781 } D3D12_HEAP_SERIALIZATION_TIER;
2782
2783typedef struct D3D12_FEATURE_DATA_SERIALIZATION
2784 {
2785 _In_ UINT NodeIndex;
2786 _Out_ D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
2787 } D3D12_FEATURE_DATA_SERIALIZATION;
2788
2789typedef struct D3D12_FEATURE_DATA_CROSS_NODE
2790 {
2791 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
2792 BOOL AtomicShaderInstructions;
2793 } D3D12_FEATURE_DATA_CROSS_NODE;
2794
2795typedef
2796enum D3D12_RENDER_PASS_TIER
2797 {
2798 D3D12_RENDER_PASS_TIER_0 = 0,
2799 D3D12_RENDER_PASS_TIER_1 = 1,
2800 D3D12_RENDER_PASS_TIER_2 = 2
2801 } D3D12_RENDER_PASS_TIER;
2802
2803typedef
2804enum D3D12_RAYTRACING_TIER
2805 {
2806 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
2807 D3D12_RAYTRACING_TIER_1_0 = 10,
2808 D3D12_RAYTRACING_TIER_1_1 = 11,
2809 D3D12_RAYTRACING_TIER_1_2 = 12
2810 } D3D12_RAYTRACING_TIER;
2811
2812typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
2813 {
2814 _Out_ BOOL SRVOnlyTiledResourceTier3;
2815 _Out_ D3D12_RENDER_PASS_TIER RenderPassesTier;
2816 _Out_ D3D12_RAYTRACING_TIER RaytracingTier;
2817 } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
2818
2819typedef
2820enum D3D12_VARIABLE_SHADING_RATE_TIER
2821 {
2822 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
2823 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
2824 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2
2825 } D3D12_VARIABLE_SHADING_RATE_TIER;
2826
2827typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
2828 {
2829 _Out_ BOOL AdditionalShadingRatesSupported;
2830 _Out_ BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
2831 _Out_ D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
2832 _Out_ UINT ShadingRateImageTileSize;
2833 _Out_ BOOL BackgroundProcessingSupported;
2834 } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
2835
2836typedef
2837enum D3D12_MESH_SHADER_TIER
2838 {
2839 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
2840 D3D12_MESH_SHADER_TIER_1 = 10
2841 } D3D12_MESH_SHADER_TIER;
2842
2843typedef
2844enum D3D12_SAMPLER_FEEDBACK_TIER
2845 {
2846 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
2847 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
2848 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
2849 } D3D12_SAMPLER_FEEDBACK_TIER;
2850
2851typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
2852 {
2853 _Out_ D3D12_MESH_SHADER_TIER MeshShaderTier;
2854 _Out_ D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
2855 } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
2856
2857typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
2858 {
2859 _In_ GUID CommandId;
2860 _In_ UINT NodeMask;
2861 _Field_size_bytes_full_opt_( QueryInputDataSizeInBytes ) const void *pQueryInputData;
2862 _In_ SIZE_T QueryInputDataSizeInBytes;
2863 _Field_size_bytes_full_( QueryOutputDataSizeInBytes ) void *pQueryOutputData;
2864 _In_ SIZE_T QueryOutputDataSizeInBytes;
2865 } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
2866
2867typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
2868 {
2869 _Out_ BOOL UnalignedBlockTexturesSupported;
2870 } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
2871
2872typedef
2873enum D3D12_WAVE_MMA_TIER
2874 {
2875 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
2876 D3D12_WAVE_MMA_TIER_1_0 = 10
2877 } D3D12_WAVE_MMA_TIER;
2878
2879typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
2880 {
2881 _Out_ BOOL MeshShaderPipelineStatsSupported;
2882 _Out_ BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
2883 _Out_ BOOL AtomicInt64OnTypedResourceSupported;
2884 _Out_ BOOL AtomicInt64OnGroupSharedSupported;
2885 _Out_ BOOL DerivativesInMeshAndAmplificationShadersSupported;
2886 _Out_ D3D12_WAVE_MMA_TIER WaveMMATier;
2887 } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
2888
2889typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
2890 {
2891 _Out_ BOOL VariableRateShadingSumCombinerSupported;
2892 _Out_ BOOL MeshShaderPerPrimitiveShadingRateSupported;
2893 } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
2894
2895typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
2896 {
2897 _Out_ BOOL AtomicInt64OnDescriptorHeapResourceSupported;
2898 } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
2899
2900typedef
2901enum D3D12_TRI_STATE
2902 {
2903 D3D12_TRI_STATE_UNKNOWN = -1,
2904 D3D12_TRI_STATE_FALSE = 0,
2905 D3D12_TRI_STATE_TRUE = 1
2906 } D3D12_TRI_STATE;
2907
2908typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
2909 {
2910 _Out_ D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
2911 _Out_ BOOL EnhancedBarriersSupported;
2912 _Out_ BOOL RelaxedFormatCastingSupported;
2913 } D3D12_FEATURE_DATA_D3D12_OPTIONS12;
2914
2915typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
2916 {
2917 _Out_ BOOL UnrestrictedBufferTextureCopyPitchSupported;
2918 _Out_ BOOL UnrestrictedVertexElementAlignmentSupported;
2919 _Out_ BOOL InvertedViewportHeightFlipsYSupported;
2920 _Out_ BOOL InvertedViewportDepthFlipsZSupported;
2921 _Out_ BOOL TextureCopyBetweenDimensionsSupported;
2922 _Out_ BOOL AlphaBlendFactorSupported;
2923 } D3D12_FEATURE_DATA_D3D12_OPTIONS13;
2924
2925typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
2926 {
2927 _Out_ BOOL AdvancedTextureOpsSupported;
2928 _Out_ BOOL WriteableMSAATexturesSupported;
2929 _Out_ BOOL IndependentFrontAndBackStencilRefMaskSupported;
2930 } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
2931
2932typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
2933 {
2934 _Out_ BOOL TriangleFanSupported;
2935 _Out_ BOOL DynamicIndexBufferStripCutSupported;
2936 } D3D12_FEATURE_DATA_D3D12_OPTIONS15;
2937
2938typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
2939 {
2940 _Out_ BOOL DynamicDepthBiasSupported;
2941 _Out_ BOOL GPUUploadHeapSupported;
2942 } D3D12_FEATURE_DATA_D3D12_OPTIONS16;
2943
2944typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
2945 {
2946 _Out_ BOOL NonNormalizedCoordinateSamplersSupported;
2947 _Out_ BOOL ManualWriteTrackingResourceSupported;
2948 } D3D12_FEATURE_DATA_D3D12_OPTIONS17;
2949
2950typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
2951 {
2952 _Out_ BOOL RenderPassesValid;
2953 } D3D12_FEATURE_DATA_D3D12_OPTIONS18;
2954
2955typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
2956 {
2957 BOOL MismatchingOutputDimensionsSupported;
2958 UINT SupportedSampleCountsWithNoOutputs;
2959 BOOL PointSamplingAddressesNeverRoundUp;
2960 BOOL RasterizerDesc2Supported;
2961 BOOL NarrowQuadrilateralLinesSupported;
2962 BOOL AnisoFilterWithPointMipSupported;
2963 UINT MaxSamplerDescriptorHeapSize;
2964 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
2965 UINT MaxViewDescriptorHeapSize;
2966 _Out_ BOOL ComputeOnlyCustomHeapSupported;
2967 } D3D12_FEATURE_DATA_D3D12_OPTIONS19;
2968
2969typedef
2970enum D3D12_RECREATE_AT_TIER
2971 {
2972 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
2973 D3D12_RECREATE_AT_TIER_1 = 1
2974 } D3D12_RECREATE_AT_TIER;
2975
2976typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
2977 {
2978 _Out_ BOOL ComputeOnlyWriteWatchSupported;
2979 D3D12_RECREATE_AT_TIER RecreateAtTier;
2980 } D3D12_FEATURE_DATA_D3D12_OPTIONS20;
2981
2982typedef
2983enum D3D12_EXECUTE_INDIRECT_TIER
2984 {
2985 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
2986 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11
2987 } D3D12_EXECUTE_INDIRECT_TIER;
2988
2989typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
2990 {
2991 _Out_ D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
2992 _Out_ D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
2993 _Out_ BOOL SampleCmpGradientAndBiasSupported;
2994 _Out_ BOOL ExtendedCommandInfoSupported;
2995 } D3D12_FEATURE_DATA_D3D12_OPTIONS21;
2996
2997typedef
2998enum D3D12_TIGHT_ALIGNMENT_TIER
2999 {
3000 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED = 0,
3001 D3D12_TIGHT_ALIGNMENT_TIER_1 = ( D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED + 1 )
3002 } D3D12_TIGHT_ALIGNMENT_TIER;
3003
3004typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
3005 {
3006 _Out_ D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
3007 } D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
3008
3009typedef struct D3D12_FEATURE_DATA_PREDICATION
3010 {
3011 _Out_ BOOL Supported;
3012 } D3D12_FEATURE_DATA_PREDICATION;
3013
3014typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
3015 {
3016 _Out_ BOOL Supported;
3017 } D3D12_FEATURE_DATA_HARDWARE_COPY;
3018
3019typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
3020 {
3021 _Out_ BOOL Supported;
3022 } D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
3023
3024typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
3025 {
3026 _Out_ BOOL Supported;
3027 } D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
3028
3029typedef struct D3D12_RESOURCE_ALLOCATION_INFO
3030 {
3031 UINT64 SizeInBytes;
3032 UINT64 Alignment;
3033 } D3D12_RESOURCE_ALLOCATION_INFO;
3034
3035typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
3036 {
3037 UINT64 Offset;
3038 UINT64 Alignment;
3039 UINT64 SizeInBytes;
3040 } D3D12_RESOURCE_ALLOCATION_INFO1;
3041
3042typedef
3043enum D3D12_HEAP_TYPE
3044 {
3045 D3D12_HEAP_TYPE_DEFAULT = 1,
3046 D3D12_HEAP_TYPE_UPLOAD = 2,
3047 D3D12_HEAP_TYPE_READBACK = 3,
3048 D3D12_HEAP_TYPE_CUSTOM = 4,
3049 D3D12_HEAP_TYPE_GPU_UPLOAD = 5
3050 } D3D12_HEAP_TYPE;
3051
3052typedef
3053enum D3D12_CPU_PAGE_PROPERTY
3054 {
3055 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
3056 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
3057 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
3058 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
3059 } D3D12_CPU_PAGE_PROPERTY;
3060
3061typedef
3062enum D3D12_MEMORY_POOL
3063 {
3064 D3D12_MEMORY_POOL_UNKNOWN = 0,
3065 D3D12_MEMORY_POOL_L0 = 1,
3066 D3D12_MEMORY_POOL_L1 = 2
3067 } D3D12_MEMORY_POOL;
3068
3069typedef struct D3D12_HEAP_PROPERTIES
3070 {
3071 D3D12_HEAP_TYPE Type;
3072 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
3073 D3D12_MEMORY_POOL MemoryPoolPreference;
3074 UINT CreationNodeMask;
3075 UINT VisibleNodeMask;
3076 } D3D12_HEAP_PROPERTIES;
3077
3078typedef
3079enum D3D12_HEAP_FLAGS
3080 {
3081 D3D12_HEAP_FLAG_NONE = 0,
3082 D3D12_HEAP_FLAG_SHARED = 0x1,
3083 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
3084 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
3085 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
3086 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
3087 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
3088 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
3089 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
3090 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
3091 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
3092 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
3093 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
3094 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
3095 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
3096 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
3097 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
3098 } D3D12_HEAP_FLAGS;
3099
3100DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )
3101typedef struct D3D12_HEAP_DESC
3102 {
3103 UINT64 SizeInBytes;
3104 D3D12_HEAP_PROPERTIES Properties;
3105 UINT64 Alignment;
3106 D3D12_HEAP_FLAGS Flags;
3107 } D3D12_HEAP_DESC;
3108
3109typedef
3110enum D3D12_RESOURCE_DIMENSION
3111 {
3112 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
3113 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
3114 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
3115 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
3116 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
3117 } D3D12_RESOURCE_DIMENSION;
3118
3119typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
3120 {
3121 _In_ DXGI_FORMAT Format;
3122 _In_ D3D12_RESOURCE_DIMENSION Dimension;
3123 _In_ D3D12_HEAP_PROPERTIES DestHeapProperties;
3124 _Out_ BOOL Supported;
3125 } D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
3126
3127typedef
3128enum D3D12_TEXTURE_LAYOUT
3129 {
3130 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
3131 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
3132 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
3133 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
3134 } D3D12_TEXTURE_LAYOUT;
3135
3136typedef
3137enum D3D12_RESOURCE_FLAGS
3138 {
3139 D3D12_RESOURCE_FLAG_NONE = 0,
3140 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
3141 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
3142 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
3143 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
3144 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
3145 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
3146 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
3147 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
3148 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
3149 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400
3150 } D3D12_RESOURCE_FLAGS;
3151
3152DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )
3153typedef struct D3D12_MIP_REGION
3154 {
3155 UINT Width;
3156 UINT Height;
3157 UINT Depth;
3158 } D3D12_MIP_REGION;
3159
3160typedef struct D3D12_RESOURCE_DESC
3161 {
3162 D3D12_RESOURCE_DIMENSION Dimension;
3163 UINT64 Alignment;
3164 UINT64 Width;
3165 UINT Height;
3166 UINT16 DepthOrArraySize;
3167 UINT16 MipLevels;
3168 DXGI_FORMAT Format;
3169 DXGI_SAMPLE_DESC SampleDesc;
3170 D3D12_TEXTURE_LAYOUT Layout;
3171 D3D12_RESOURCE_FLAGS Flags;
3172 } D3D12_RESOURCE_DESC;
3173
3174typedef struct D3D12_RESOURCE_DESC1
3175 {
3176 D3D12_RESOURCE_DIMENSION Dimension;
3177 UINT64 Alignment;
3178 UINT64 Width;
3179 UINT Height;
3180 UINT16 DepthOrArraySize;
3181 UINT16 MipLevels;
3182 DXGI_FORMAT Format;
3183 DXGI_SAMPLE_DESC SampleDesc;
3184 D3D12_TEXTURE_LAYOUT Layout;
3185 D3D12_RESOURCE_FLAGS Flags;
3186 D3D12_MIP_REGION SamplerFeedbackMipRegion;
3187 } D3D12_RESOURCE_DESC1;
3188
3189typedef struct D3D12_DEPTH_STENCIL_VALUE
3190 {
3191 FLOAT Depth;
3192 UINT8 Stencil;
3193 } D3D12_DEPTH_STENCIL_VALUE;
3194
3195typedef struct D3D12_CLEAR_VALUE
3196 {
3197 DXGI_FORMAT Format;
3198 union
3199 {
3200 FLOAT Color[ 4 ];
3201 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
3202 } ;
3203 } D3D12_CLEAR_VALUE;
3204
3205typedef struct D3D12_RANGE
3206 {
3207 SIZE_T Begin;
3208 SIZE_T End;
3209 } D3D12_RANGE;
3210
3211typedef struct D3D12_RANGE_UINT64
3212 {
3213 UINT64 Begin;
3214 UINT64 End;
3215 } D3D12_RANGE_UINT64;
3216
3217typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
3218 {
3219 UINT Subresource;
3220 D3D12_RANGE_UINT64 Range;
3221 } D3D12_SUBRESOURCE_RANGE_UINT64;
3222
3223typedef struct D3D12_SUBRESOURCE_INFO
3224 {
3225 UINT64 Offset;
3226 UINT RowPitch;
3227 UINT DepthPitch;
3228 } D3D12_SUBRESOURCE_INFO;
3229
3230typedef struct D3D12_TILED_RESOURCE_COORDINATE
3231 {
3232 UINT X;
3233 UINT Y;
3234 UINT Z;
3235 UINT Subresource;
3236 } D3D12_TILED_RESOURCE_COORDINATE;
3237
3238typedef struct D3D12_TILE_REGION_SIZE
3239 {
3240 UINT NumTiles;
3241 BOOL UseBox;
3242 UINT Width;
3243 UINT16 Height;
3244 UINT16 Depth;
3245 } D3D12_TILE_REGION_SIZE;
3246
3247typedef
3248enum D3D12_TILE_RANGE_FLAGS
3249 {
3250 D3D12_TILE_RANGE_FLAG_NONE = 0,
3251 D3D12_TILE_RANGE_FLAG_NULL = 1,
3252 D3D12_TILE_RANGE_FLAG_SKIP = 2,
3253 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
3254 } D3D12_TILE_RANGE_FLAGS;
3255
3256typedef struct D3D12_SUBRESOURCE_TILING
3257 {
3258 UINT WidthInTiles;
3259 UINT16 HeightInTiles;
3260 UINT16 DepthInTiles;
3261 UINT StartTileIndexInOverallResource;
3262 } D3D12_SUBRESOURCE_TILING;
3263
3264typedef struct D3D12_TILE_SHAPE
3265 {
3266 UINT WidthInTexels;
3267 UINT HeightInTexels;
3268 UINT DepthInTexels;
3269 } D3D12_TILE_SHAPE;
3270
3271typedef struct D3D12_PACKED_MIP_INFO
3272 {
3273 UINT8 NumStandardMips;
3274 UINT8 NumPackedMips;
3275 UINT NumTilesForPackedMips;
3276 UINT StartTileIndexInOverallResource;
3277 } D3D12_PACKED_MIP_INFO;
3278
3279typedef
3280enum D3D12_TILE_MAPPING_FLAGS
3281 {
3282 D3D12_TILE_MAPPING_FLAG_NONE = 0,
3283 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
3284 } D3D12_TILE_MAPPING_FLAGS;
3285
3286DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )
3287typedef
3288enum D3D12_TILE_COPY_FLAGS
3289 {
3290 D3D12_TILE_COPY_FLAG_NONE = 0,
3291 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
3292 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
3293 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
3294 } D3D12_TILE_COPY_FLAGS;
3295
3296DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )
3297typedef
3298enum D3D12_RESOURCE_STATES
3299 {
3300 D3D12_RESOURCE_STATE_COMMON = 0,
3301 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
3302 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
3303 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
3304 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
3305 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
3306 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
3307 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
3308 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
3309 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
3310 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
3311 D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
3312 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
3313 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
3314 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
3315 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
3316 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
3317 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
3318 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
3319 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
3320 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
3321 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
3322 D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
3323 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = ( 0x40 | 0x80 ) ,
3324 D3D12_RESOURCE_STATE_PRESENT = 0,
3325 D3D12_RESOURCE_STATE_PREDICATION = 0x200,
3326 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
3327 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
3328 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
3329 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
3330 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
3331 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
3332 } D3D12_RESOURCE_STATES;
3333
3334DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )
3335typedef
3336enum D3D12_RESOURCE_BARRIER_TYPE
3337 {
3338 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
3339 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
3340 D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
3341 } D3D12_RESOURCE_BARRIER_TYPE;
3342
3343
3344typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
3345 {
3346 ID3D12Resource *pResource;
3347 UINT Subresource;
3348 D3D12_RESOURCE_STATES StateBefore;
3349 D3D12_RESOURCE_STATES StateAfter;
3350 } D3D12_RESOURCE_TRANSITION_BARRIER;
3351
3352typedef struct D3D12_RESOURCE_ALIASING_BARRIER
3353 {
3354 ID3D12Resource *pResourceBefore;
3355 ID3D12Resource *pResourceAfter;
3356 } D3D12_RESOURCE_ALIASING_BARRIER;
3357
3358typedef struct D3D12_RESOURCE_UAV_BARRIER
3359 {
3360 ID3D12Resource *pResource;
3361 } D3D12_RESOURCE_UAV_BARRIER;
3362
3363typedef
3364enum D3D12_RESOURCE_BARRIER_FLAGS
3365 {
3366 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
3367 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
3368 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
3369 } D3D12_RESOURCE_BARRIER_FLAGS;
3370
3371DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )
3372typedef struct D3D12_RESOURCE_BARRIER
3373 {
3374 D3D12_RESOURCE_BARRIER_TYPE Type;
3375 D3D12_RESOURCE_BARRIER_FLAGS Flags;
3376 union
3377 {
3378 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
3379 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
3380 D3D12_RESOURCE_UAV_BARRIER UAV;
3381 } ;
3382 } D3D12_RESOURCE_BARRIER;
3383
3384typedef struct D3D12_SUBRESOURCE_FOOTPRINT
3385 {
3386 DXGI_FORMAT Format;
3387 UINT Width;
3388 UINT Height;
3389 UINT Depth;
3390 UINT RowPitch;
3391 } D3D12_SUBRESOURCE_FOOTPRINT;
3392
3393typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
3394 {
3395 UINT64 Offset;
3396 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
3397 } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
3398
3399typedef
3400enum D3D12_TEXTURE_COPY_TYPE
3401 {
3402 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
3403 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
3404 } D3D12_TEXTURE_COPY_TYPE;
3405
3406typedef struct D3D12_TEXTURE_COPY_LOCATION
3407 {
3408 ID3D12Resource *pResource;
3409 D3D12_TEXTURE_COPY_TYPE Type;
3410 union
3411 {
3412 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
3413 UINT SubresourceIndex;
3414 } ;
3415 } D3D12_TEXTURE_COPY_LOCATION;
3416
3417typedef
3418enum D3D12_RESOLVE_MODE
3419 {
3420 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
3421 D3D12_RESOLVE_MODE_MIN = 1,
3422 D3D12_RESOLVE_MODE_MAX = 2,
3423 D3D12_RESOLVE_MODE_AVERAGE = 3,
3424 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
3425 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
3426 } D3D12_RESOLVE_MODE;
3427
3428typedef struct D3D12_SAMPLE_POSITION
3429 {
3430 INT8 X;
3431 INT8 Y;
3432 } D3D12_SAMPLE_POSITION;
3433
3434typedef struct D3D12_VIEW_INSTANCE_LOCATION
3435 {
3436 UINT ViewportArrayIndex;
3437 UINT RenderTargetArrayIndex;
3438 } D3D12_VIEW_INSTANCE_LOCATION;
3439
3440typedef
3441enum D3D12_VIEW_INSTANCING_FLAGS
3442 {
3443 D3D12_VIEW_INSTANCING_FLAG_NONE = 0,
3444 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1
3445 } D3D12_VIEW_INSTANCING_FLAGS;
3446
3447DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )
3448typedef struct D3D12_VIEW_INSTANCING_DESC
3449 {
3450 UINT ViewInstanceCount;
3451 _Field_size_full_(ViewInstanceCount) const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations;
3452 D3D12_VIEW_INSTANCING_FLAGS Flags;
3453 } D3D12_VIEW_INSTANCING_DESC;
3454
3455typedef
3456enum D3D12_SHADER_COMPONENT_MAPPING
3457 {
3458 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
3459 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
3460 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
3461 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
3462 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
3463 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
3464 } D3D12_SHADER_COMPONENT_MAPPING;
3465
3466#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
3467#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
3468#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
3469#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
3470 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
3471 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
3472 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
3473 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
3474#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
3475#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
3476typedef
3477enum D3D12_BUFFER_SRV_FLAGS
3478 {
3479 D3D12_BUFFER_SRV_FLAG_NONE = 0,
3480 D3D12_BUFFER_SRV_FLAG_RAW = 0x1
3481 } D3D12_BUFFER_SRV_FLAGS;
3482
3483DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )
3484typedef struct D3D12_BUFFER_SRV
3485 {
3486 UINT64 FirstElement;
3487 UINT NumElements;
3488 UINT StructureByteStride;
3489 D3D12_BUFFER_SRV_FLAGS Flags;
3490 } D3D12_BUFFER_SRV;
3491
3492typedef struct D3D12_TEX1D_SRV
3493 {
3494 UINT MostDetailedMip;
3495 UINT MipLevels;
3496 FLOAT ResourceMinLODClamp;
3497 } D3D12_TEX1D_SRV;
3498
3499typedef struct D3D12_TEX1D_ARRAY_SRV
3500 {
3501 UINT MostDetailedMip;
3502 UINT MipLevels;
3503 UINT FirstArraySlice;
3504 UINT ArraySize;
3505 FLOAT ResourceMinLODClamp;
3506 } D3D12_TEX1D_ARRAY_SRV;
3507
3508typedef struct D3D12_TEX2D_SRV
3509 {
3510 UINT MostDetailedMip;
3511 UINT MipLevels;
3512 UINT PlaneSlice;
3513 FLOAT ResourceMinLODClamp;
3514 } D3D12_TEX2D_SRV;
3515
3516typedef struct D3D12_TEX2D_ARRAY_SRV
3517 {
3518 UINT MostDetailedMip;
3519 UINT MipLevels;
3520 UINT FirstArraySlice;
3521 UINT ArraySize;
3522 UINT PlaneSlice;
3523 FLOAT ResourceMinLODClamp;
3524 } D3D12_TEX2D_ARRAY_SRV;
3525
3526typedef struct D3D12_TEX3D_SRV
3527 {
3528 UINT MostDetailedMip;
3529 UINT MipLevels;
3530 FLOAT ResourceMinLODClamp;
3531 } D3D12_TEX3D_SRV;
3532
3533typedef struct D3D12_TEXCUBE_SRV
3534 {
3535 UINT MostDetailedMip;
3536 UINT MipLevels;
3537 FLOAT ResourceMinLODClamp;
3538 } D3D12_TEXCUBE_SRV;
3539
3540typedef struct D3D12_TEXCUBE_ARRAY_SRV
3541 {
3542 UINT MostDetailedMip;
3543 UINT MipLevels;
3544 UINT First2DArrayFace;
3545 UINT NumCubes;
3546 FLOAT ResourceMinLODClamp;
3547 } D3D12_TEXCUBE_ARRAY_SRV;
3548
3549typedef struct D3D12_TEX2DMS_SRV
3550 {
3551 UINT UnusedField_NothingToDefine;
3552 } D3D12_TEX2DMS_SRV;
3553
3554typedef struct D3D12_TEX2DMS_ARRAY_SRV
3555 {
3556 UINT FirstArraySlice;
3557 UINT ArraySize;
3558 } D3D12_TEX2DMS_ARRAY_SRV;
3559
3560typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
3561 {
3562 D3D12_GPU_VIRTUAL_ADDRESS Location;
3563 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
3564
3565typedef
3566enum D3D12_SRV_DIMENSION
3567 {
3568 D3D12_SRV_DIMENSION_UNKNOWN = 0,
3569 D3D12_SRV_DIMENSION_BUFFER = 1,
3570 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
3571 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
3572 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
3573 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
3574 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
3575 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
3576 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
3577 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
3578 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
3579 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11
3580 } D3D12_SRV_DIMENSION;
3581
3582typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
3583 {
3584 DXGI_FORMAT Format;
3585 D3D12_SRV_DIMENSION ViewDimension;
3586 UINT Shader4ComponentMapping;
3587 union
3588 {
3589 D3D12_BUFFER_SRV Buffer;
3590 D3D12_TEX1D_SRV Texture1D;
3591 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
3592 D3D12_TEX2D_SRV Texture2D;
3593 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
3594 D3D12_TEX2DMS_SRV Texture2DMS;
3595 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
3596 D3D12_TEX3D_SRV Texture3D;
3597 D3D12_TEXCUBE_SRV TextureCube;
3598 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
3599 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
3600 } ;
3601 } D3D12_SHADER_RESOURCE_VIEW_DESC;
3602
3603typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
3604 {
3605 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3606 UINT SizeInBytes;
3607 } D3D12_CONSTANT_BUFFER_VIEW_DESC;
3608
3609typedef
3610enum D3D12_FILTER
3611 {
3612 D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
3613 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
3614 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
3615 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
3616 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
3617 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
3618 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
3619 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
3620 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x54,
3621 D3D12_FILTER_ANISOTROPIC = 0x55,
3622 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
3623 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
3624 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
3625 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
3626 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
3627 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
3628 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
3629 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
3630 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0xd4,
3631 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
3632 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
3633 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
3634 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
3635 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
3636 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
3637 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
3638 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
3639 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
3640 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x154,
3641 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
3642 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
3643 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
3644 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
3645 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
3646 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
3647 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
3648 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
3649 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
3650 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x1d4,
3651 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
3652 } D3D12_FILTER;
3653
3654typedef
3655enum D3D12_FILTER_TYPE
3656 {
3657 D3D12_FILTER_TYPE_POINT = 0,
3658 D3D12_FILTER_TYPE_LINEAR = 1
3659 } D3D12_FILTER_TYPE;
3660
3661typedef
3662enum D3D12_FILTER_REDUCTION_TYPE
3663 {
3664 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
3665 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
3666 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
3667 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
3668 } D3D12_FILTER_REDUCTION_TYPE;
3669
3670#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
3671
3672#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
3673
3674#define D3D12_FILTER_TYPE_MASK ( 0x3 )
3675
3676#define D3D12_MIN_FILTER_SHIFT ( 4 )
3677
3678#define D3D12_MAG_FILTER_SHIFT ( 2 )
3679
3680#define D3D12_MIP_FILTER_SHIFT ( 0 )
3681
3682#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
3683
3684#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
3685 ( ( D3D12_FILTER ) ( \
3686 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
3687 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
3688 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
3689 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
3690#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
3691 ( ( D3D12_FILTER ) ( \
3692 D3D12_ANISOTROPIC_FILTERING_BIT | \
3693 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3694 D3D12_FILTER_TYPE_LINEAR, \
3695 D3D12_FILTER_TYPE_LINEAR, \
3696 reduction ) ) )
3697#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \
3698 ( ( D3D12_FILTER ) ( \
3699 D3D12_ANISOTROPIC_FILTERING_BIT | \
3700 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
3701 D3D12_FILTER_TYPE_LINEAR, \
3702 D3D12_FILTER_TYPE_POINT, \
3703 reduction ) ) )
3704#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
3705 ( ( D3D12_FILTER_TYPE ) \
3706 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3707#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
3708 ( ( D3D12_FILTER_TYPE ) \
3709 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3710#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
3711 ( ( D3D12_FILTER_TYPE ) \
3712 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
3713#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
3714 ( ( D3D12_FILTER_REDUCTION_TYPE ) \
3715 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
3716#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
3717 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
3718#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
3719 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
3720 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
3721 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) )
3722typedef
3723enum D3D12_TEXTURE_ADDRESS_MODE
3724 {
3725 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
3726 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
3727 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
3728 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
3729 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
3730 } D3D12_TEXTURE_ADDRESS_MODE;
3731
3732typedef struct D3D12_SAMPLER_DESC
3733 {
3734 D3D12_FILTER Filter;
3735 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3736 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3737 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3738 FLOAT MipLODBias;
3739 UINT MaxAnisotropy;
3740 D3D12_COMPARISON_FUNC ComparisonFunc;
3741 FLOAT BorderColor[ 4 ];
3742 FLOAT MinLOD;
3743 FLOAT MaxLOD;
3744 } D3D12_SAMPLER_DESC;
3745
3746typedef
3747enum D3D12_SAMPLER_FLAGS
3748 {
3749 D3D12_SAMPLER_FLAG_NONE = 0,
3750 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x1,
3751 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x2
3752 } D3D12_SAMPLER_FLAGS;
3753
3754DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )
3755typedef struct D3D12_SAMPLER_DESC2
3756 {
3757 D3D12_FILTER Filter;
3758 D3D12_TEXTURE_ADDRESS_MODE AddressU;
3759 D3D12_TEXTURE_ADDRESS_MODE AddressV;
3760 D3D12_TEXTURE_ADDRESS_MODE AddressW;
3761 FLOAT MipLODBias;
3762 UINT MaxAnisotropy;
3763 D3D12_COMPARISON_FUNC ComparisonFunc;
3764 union
3765 {
3766 FLOAT FloatBorderColor[ 4 ];
3767 UINT UintBorderColor[ 4 ];
3768 } ;
3769 FLOAT MinLOD;
3770 FLOAT MaxLOD;
3771 D3D12_SAMPLER_FLAGS Flags;
3772 } D3D12_SAMPLER_DESC2;
3773
3774typedef
3775enum D3D12_BUFFER_UAV_FLAGS
3776 {
3777 D3D12_BUFFER_UAV_FLAG_NONE = 0,
3778 D3D12_BUFFER_UAV_FLAG_RAW = 0x1
3779 } D3D12_BUFFER_UAV_FLAGS;
3780
3781DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )
3782typedef struct D3D12_BUFFER_UAV
3783 {
3784 UINT64 FirstElement;
3785 UINT NumElements;
3786 UINT StructureByteStride;
3787 UINT64 CounterOffsetInBytes;
3788 D3D12_BUFFER_UAV_FLAGS Flags;
3789 } D3D12_BUFFER_UAV;
3790
3791typedef struct D3D12_TEX1D_UAV
3792 {
3793 UINT MipSlice;
3794 } D3D12_TEX1D_UAV;
3795
3796typedef struct D3D12_TEX1D_ARRAY_UAV
3797 {
3798 UINT MipSlice;
3799 UINT FirstArraySlice;
3800 UINT ArraySize;
3801 } D3D12_TEX1D_ARRAY_UAV;
3802
3803typedef struct D3D12_TEX2D_UAV
3804 {
3805 UINT MipSlice;
3806 UINT PlaneSlice;
3807 } D3D12_TEX2D_UAV;
3808
3809typedef struct D3D12_TEX2D_ARRAY_UAV
3810 {
3811 UINT MipSlice;
3812 UINT FirstArraySlice;
3813 UINT ArraySize;
3814 UINT PlaneSlice;
3815 } D3D12_TEX2D_ARRAY_UAV;
3816
3817typedef struct D3D12_TEX2DMS_UAV
3818 {
3819 UINT UnusedField_NothingToDefine;
3820 } D3D12_TEX2DMS_UAV;
3821
3822typedef struct D3D12_TEX2DMS_ARRAY_UAV
3823 {
3824 UINT FirstArraySlice;
3825 UINT ArraySize;
3826 } D3D12_TEX2DMS_ARRAY_UAV;
3827
3828typedef struct D3D12_TEX3D_UAV
3829 {
3830 UINT MipSlice;
3831 UINT FirstWSlice;
3832 UINT WSize;
3833 } D3D12_TEX3D_UAV;
3834
3835typedef
3836enum D3D12_UAV_DIMENSION
3837 {
3838 D3D12_UAV_DIMENSION_UNKNOWN = 0,
3839 D3D12_UAV_DIMENSION_BUFFER = 1,
3840 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
3841 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
3842 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
3843 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
3844 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
3845 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
3846 D3D12_UAV_DIMENSION_TEXTURE3D = 8
3847 } D3D12_UAV_DIMENSION;
3848
3849typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
3850 {
3851 DXGI_FORMAT Format;
3852 D3D12_UAV_DIMENSION ViewDimension;
3853 union
3854 {
3855 D3D12_BUFFER_UAV Buffer;
3856 D3D12_TEX1D_UAV Texture1D;
3857 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
3858 D3D12_TEX2D_UAV Texture2D;
3859 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
3860 D3D12_TEX2DMS_UAV Texture2DMS;
3861 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
3862 D3D12_TEX3D_UAV Texture3D;
3863 } ;
3864 } D3D12_UNORDERED_ACCESS_VIEW_DESC;
3865
3866typedef struct D3D12_BUFFER_RTV
3867 {
3868 UINT64 FirstElement;
3869 UINT NumElements;
3870 } D3D12_BUFFER_RTV;
3871
3872typedef struct D3D12_TEX1D_RTV
3873 {
3874 UINT MipSlice;
3875 } D3D12_TEX1D_RTV;
3876
3877typedef struct D3D12_TEX1D_ARRAY_RTV
3878 {
3879 UINT MipSlice;
3880 UINT FirstArraySlice;
3881 UINT ArraySize;
3882 } D3D12_TEX1D_ARRAY_RTV;
3883
3884typedef struct D3D12_TEX2D_RTV
3885 {
3886 UINT MipSlice;
3887 UINT PlaneSlice;
3888 } D3D12_TEX2D_RTV;
3889
3890typedef struct D3D12_TEX2DMS_RTV
3891 {
3892 UINT UnusedField_NothingToDefine;
3893 } D3D12_TEX2DMS_RTV;
3894
3895typedef struct D3D12_TEX2D_ARRAY_RTV
3896 {
3897 UINT MipSlice;
3898 UINT FirstArraySlice;
3899 UINT ArraySize;
3900 UINT PlaneSlice;
3901 } D3D12_TEX2D_ARRAY_RTV;
3902
3903typedef struct D3D12_TEX2DMS_ARRAY_RTV
3904 {
3905 UINT FirstArraySlice;
3906 UINT ArraySize;
3907 } D3D12_TEX2DMS_ARRAY_RTV;
3908
3909typedef struct D3D12_TEX3D_RTV
3910 {
3911 UINT MipSlice;
3912 UINT FirstWSlice;
3913 UINT WSize;
3914 } D3D12_TEX3D_RTV;
3915
3916typedef
3917enum D3D12_RTV_DIMENSION
3918 {
3919 D3D12_RTV_DIMENSION_UNKNOWN = 0,
3920 D3D12_RTV_DIMENSION_BUFFER = 1,
3921 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
3922 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
3923 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
3924 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
3925 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
3926 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
3927 D3D12_RTV_DIMENSION_TEXTURE3D = 8
3928 } D3D12_RTV_DIMENSION;
3929
3930typedef struct D3D12_RENDER_TARGET_VIEW_DESC
3931 {
3932 DXGI_FORMAT Format;
3933 D3D12_RTV_DIMENSION ViewDimension;
3934 union
3935 {
3936 D3D12_BUFFER_RTV Buffer;
3937 D3D12_TEX1D_RTV Texture1D;
3938 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
3939 D3D12_TEX2D_RTV Texture2D;
3940 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
3941 D3D12_TEX2DMS_RTV Texture2DMS;
3942 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
3943 D3D12_TEX3D_RTV Texture3D;
3944 } ;
3945 } D3D12_RENDER_TARGET_VIEW_DESC;
3946
3947typedef struct D3D12_TEX1D_DSV
3948 {
3949 UINT MipSlice;
3950 } D3D12_TEX1D_DSV;
3951
3952typedef struct D3D12_TEX1D_ARRAY_DSV
3953 {
3954 UINT MipSlice;
3955 UINT FirstArraySlice;
3956 UINT ArraySize;
3957 } D3D12_TEX1D_ARRAY_DSV;
3958
3959typedef struct D3D12_TEX2D_DSV
3960 {
3961 UINT MipSlice;
3962 } D3D12_TEX2D_DSV;
3963
3964typedef struct D3D12_TEX2D_ARRAY_DSV
3965 {
3966 UINT MipSlice;
3967 UINT FirstArraySlice;
3968 UINT ArraySize;
3969 } D3D12_TEX2D_ARRAY_DSV;
3970
3971typedef struct D3D12_TEX2DMS_DSV
3972 {
3973 UINT UnusedField_NothingToDefine;
3974 } D3D12_TEX2DMS_DSV;
3975
3976typedef struct D3D12_TEX2DMS_ARRAY_DSV
3977 {
3978 UINT FirstArraySlice;
3979 UINT ArraySize;
3980 } D3D12_TEX2DMS_ARRAY_DSV;
3981
3982typedef
3983enum D3D12_DSV_FLAGS
3984 {
3985 D3D12_DSV_FLAG_NONE = 0,
3986 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
3987 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
3988 } D3D12_DSV_FLAGS;
3989
3990DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )
3991typedef
3992enum D3D12_DSV_DIMENSION
3993 {
3994 D3D12_DSV_DIMENSION_UNKNOWN = 0,
3995 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
3996 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
3997 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
3998 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
3999 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
4000 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
4001 } D3D12_DSV_DIMENSION;
4002
4003typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
4004 {
4005 DXGI_FORMAT Format;
4006 D3D12_DSV_DIMENSION ViewDimension;
4007 D3D12_DSV_FLAGS Flags;
4008 union
4009 {
4010 D3D12_TEX1D_DSV Texture1D;
4011 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
4012 D3D12_TEX2D_DSV Texture2D;
4013 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
4014 D3D12_TEX2DMS_DSV Texture2DMS;
4015 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
4016 } ;
4017 } D3D12_DEPTH_STENCIL_VIEW_DESC;
4018
4019typedef
4020enum D3D12_CLEAR_FLAGS
4021 {
4022 D3D12_CLEAR_FLAG_DEPTH = 0x1,
4023 D3D12_CLEAR_FLAG_STENCIL = 0x2
4024 } D3D12_CLEAR_FLAGS;
4025
4026DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )
4027typedef
4028enum D3D12_FENCE_FLAGS
4029 {
4030 D3D12_FENCE_FLAG_NONE = 0,
4031 D3D12_FENCE_FLAG_SHARED = 0x1,
4032 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
4033 D3D12_FENCE_FLAG_NON_MONITORED = 0x4
4034 } D3D12_FENCE_FLAGS;
4035
4036DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )
4037typedef
4038enum D3D12_DESCRIPTOR_HEAP_TYPE
4039 {
4040 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
4041 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
4042 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
4043 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
4044 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
4045 } D3D12_DESCRIPTOR_HEAP_TYPE;
4046
4047typedef
4048enum D3D12_DESCRIPTOR_HEAP_FLAGS
4049 {
4050 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
4051 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
4052 } D3D12_DESCRIPTOR_HEAP_FLAGS;
4053
4054DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )
4055typedef struct D3D12_DESCRIPTOR_HEAP_DESC
4056 {
4057 D3D12_DESCRIPTOR_HEAP_TYPE Type;
4058 UINT NumDescriptors;
4059 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
4060 UINT NodeMask;
4061 } D3D12_DESCRIPTOR_HEAP_DESC;
4062
4063typedef
4064enum D3D12_DESCRIPTOR_RANGE_TYPE
4065 {
4066 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
4067 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
4068 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
4069 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
4070 } D3D12_DESCRIPTOR_RANGE_TYPE;
4071
4072typedef struct D3D12_DESCRIPTOR_RANGE
4073 {
4074 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4075 UINT NumDescriptors;
4076 UINT BaseShaderRegister;
4077 UINT RegisterSpace;
4078 UINT OffsetInDescriptorsFromTableStart;
4079 } D3D12_DESCRIPTOR_RANGE;
4080
4081typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
4082 {
4083 UINT NumDescriptorRanges;
4084 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
4085 } D3D12_ROOT_DESCRIPTOR_TABLE;
4086
4087typedef struct D3D12_ROOT_CONSTANTS
4088 {
4089 UINT ShaderRegister;
4090 UINT RegisterSpace;
4091 UINT Num32BitValues;
4092 } D3D12_ROOT_CONSTANTS;
4093
4094typedef struct D3D12_ROOT_DESCRIPTOR
4095 {
4096 UINT ShaderRegister;
4097 UINT RegisterSpace;
4098 } D3D12_ROOT_DESCRIPTOR;
4099
4100typedef
4101enum D3D12_SHADER_VISIBILITY
4102 {
4103 D3D12_SHADER_VISIBILITY_ALL = 0,
4104 D3D12_SHADER_VISIBILITY_VERTEX = 1,
4105 D3D12_SHADER_VISIBILITY_HULL = 2,
4106 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
4107 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
4108 D3D12_SHADER_VISIBILITY_PIXEL = 5,
4109 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
4110 D3D12_SHADER_VISIBILITY_MESH = 7
4111 } D3D12_SHADER_VISIBILITY;
4112
4113typedef
4114enum D3D12_ROOT_PARAMETER_TYPE
4115 {
4116 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
4117 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
4118 D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
4119 D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
4120 D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
4121 } D3D12_ROOT_PARAMETER_TYPE;
4122
4123typedef struct D3D12_ROOT_PARAMETER
4124 {
4125 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4126 union
4127 {
4128 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
4129 D3D12_ROOT_CONSTANTS Constants;
4130 D3D12_ROOT_DESCRIPTOR Descriptor;
4131 } ;
4132 D3D12_SHADER_VISIBILITY ShaderVisibility;
4133 } D3D12_ROOT_PARAMETER;
4134
4135typedef
4136enum D3D12_ROOT_SIGNATURE_FLAGS
4137 {
4138 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
4139 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
4140 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
4141 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
4142 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
4143 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
4144 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
4145 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
4146 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
4147 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
4148 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
4149 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
4150 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800
4151 } D3D12_ROOT_SIGNATURE_FLAGS;
4152
4153DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )
4154typedef
4155enum D3D12_STATIC_BORDER_COLOR
4156 {
4157 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
4158 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
4159 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 ) ,
4160 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE + 1 ) ,
4161 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT + 1 )
4162 } D3D12_STATIC_BORDER_COLOR;
4163
4164typedef struct D3D12_STATIC_SAMPLER_DESC
4165 {
4166 D3D12_FILTER Filter;
4167 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4168 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4169 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4170 FLOAT MipLODBias;
4171 UINT MaxAnisotropy;
4172 D3D12_COMPARISON_FUNC ComparisonFunc;
4173 D3D12_STATIC_BORDER_COLOR BorderColor;
4174 FLOAT MinLOD;
4175 FLOAT MaxLOD;
4176 UINT ShaderRegister;
4177 UINT RegisterSpace;
4178 D3D12_SHADER_VISIBILITY ShaderVisibility;
4179 } D3D12_STATIC_SAMPLER_DESC;
4180
4181typedef struct D3D12_STATIC_SAMPLER_DESC1
4182 {
4183 D3D12_FILTER Filter;
4184 D3D12_TEXTURE_ADDRESS_MODE AddressU;
4185 D3D12_TEXTURE_ADDRESS_MODE AddressV;
4186 D3D12_TEXTURE_ADDRESS_MODE AddressW;
4187 FLOAT MipLODBias;
4188 UINT MaxAnisotropy;
4189 D3D12_COMPARISON_FUNC ComparisonFunc;
4190 D3D12_STATIC_BORDER_COLOR BorderColor;
4191 FLOAT MinLOD;
4192 FLOAT MaxLOD;
4193 UINT ShaderRegister;
4194 UINT RegisterSpace;
4195 D3D12_SHADER_VISIBILITY ShaderVisibility;
4196 D3D12_SAMPLER_FLAGS Flags;
4197 } D3D12_STATIC_SAMPLER_DESC1;
4198
4199typedef struct D3D12_ROOT_SIGNATURE_DESC
4200 {
4201 UINT NumParameters;
4202 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
4203 UINT NumStaticSamplers;
4204 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4205 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4206 } D3D12_ROOT_SIGNATURE_DESC;
4207
4208typedef
4209enum D3D12_DESCRIPTOR_RANGE_FLAGS
4210 {
4211 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
4212 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
4213 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
4214 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4215 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
4216 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
4217 } D3D12_DESCRIPTOR_RANGE_FLAGS;
4218
4219DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )
4220typedef struct D3D12_DESCRIPTOR_RANGE1
4221 {
4222 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
4223 UINT NumDescriptors;
4224 UINT BaseShaderRegister;
4225 UINT RegisterSpace;
4226 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
4227 UINT OffsetInDescriptorsFromTableStart;
4228 } D3D12_DESCRIPTOR_RANGE1;
4229
4230typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
4231 {
4232 UINT NumDescriptorRanges;
4233 _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
4234 } D3D12_ROOT_DESCRIPTOR_TABLE1;
4235
4236typedef
4237enum D3D12_ROOT_DESCRIPTOR_FLAGS
4238 {
4239 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
4240 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
4241 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
4242 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
4243 } D3D12_ROOT_DESCRIPTOR_FLAGS;
4244
4245DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )
4246typedef struct D3D12_ROOT_DESCRIPTOR1
4247 {
4248 UINT ShaderRegister;
4249 UINT RegisterSpace;
4250 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
4251 } D3D12_ROOT_DESCRIPTOR1;
4252
4253typedef struct D3D12_ROOT_PARAMETER1
4254 {
4255 D3D12_ROOT_PARAMETER_TYPE ParameterType;
4256 union
4257 {
4258 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
4259 D3D12_ROOT_CONSTANTS Constants;
4260 D3D12_ROOT_DESCRIPTOR1 Descriptor;
4261 } ;
4262 D3D12_SHADER_VISIBILITY ShaderVisibility;
4263 } D3D12_ROOT_PARAMETER1;
4264
4265typedef struct D3D12_ROOT_SIGNATURE_DESC1
4266 {
4267 UINT NumParameters;
4268 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4269 UINT NumStaticSamplers;
4270 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
4271 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4272 } D3D12_ROOT_SIGNATURE_DESC1;
4273
4274typedef struct D3D12_ROOT_SIGNATURE_DESC2
4275 {
4276 UINT NumParameters;
4277 _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
4278 UINT NumStaticSamplers;
4279 _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1 *pStaticSamplers;
4280 D3D12_ROOT_SIGNATURE_FLAGS Flags;
4281 } D3D12_ROOT_SIGNATURE_DESC2;
4282
4283typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
4284 {
4285 D3D_ROOT_SIGNATURE_VERSION Version;
4286 union
4287 {
4288 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
4289 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
4290 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
4291 } ;
4292 } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
4293
4294
4295
4296extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
4297extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
4298
4299#ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4300#define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
4301
4302/* interface ID3D12RootSignatureDeserializer */
4303/* [unique][local][object][uuid] */
4304
4305
4306EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
4307
4308#if defined(__cplusplus) && !defined(CINTERFACE)
4309
4310 MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
4311 ID3D12RootSignatureDeserializer : public IUnknown
4312 {
4313 public:
4314 virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
4315
4316 };
4317
4318
4319#else /* C style interface */
4320
4321 typedef struct ID3D12RootSignatureDeserializerVtbl
4322 {
4323 BEGIN_INTERFACE
4324
4325 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4326 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4327 ID3D12RootSignatureDeserializer * This,
4328 REFIID riid,
4329 _COM_Outptr_ void **ppvObject);
4330
4331 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4332 ULONG ( STDMETHODCALLTYPE *AddRef )(
4333 ID3D12RootSignatureDeserializer * This);
4334
4335 DECLSPEC_XFGVIRT(IUnknown, Release)
4336 ULONG ( STDMETHODCALLTYPE *Release )(
4337 ID3D12RootSignatureDeserializer * This);
4338
4339 DECLSPEC_XFGVIRT(ID3D12RootSignatureDeserializer, GetRootSignatureDesc)
4340 const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
4341 ID3D12RootSignatureDeserializer * This);
4342
4343 END_INTERFACE
4344 } ID3D12RootSignatureDeserializerVtbl;
4345
4346 interface ID3D12RootSignatureDeserializer
4347 {
4348 CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
4349 };
4350
4351
4352
4353#ifdef COBJMACROS
4354
4355
4356#define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4357 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4358
4359#define ID3D12RootSignatureDeserializer_AddRef(This) \
4360 ( (This)->lpVtbl -> AddRef(This) )
4361
4362#define ID3D12RootSignatureDeserializer_Release(This) \
4363 ( (This)->lpVtbl -> Release(This) )
4364
4365
4366#define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
4367 ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
4368
4369#endif /* COBJMACROS */
4370
4371
4372#endif /* C style interface */
4373
4374
4375
4376
4377#endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
4378
4379
4380#ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4381#define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
4382
4383/* interface ID3D12VersionedRootSignatureDeserializer */
4384/* [unique][local][object][uuid] */
4385
4386
4387EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
4388
4389#if defined(__cplusplus) && !defined(CINTERFACE)
4390
4391 MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
4392 ID3D12VersionedRootSignatureDeserializer : public IUnknown
4393 {
4394 public:
4395 virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
4396 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4397 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
4398
4399 virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
4400
4401 };
4402
4403
4404#else /* C style interface */
4405
4406 typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
4407 {
4408 BEGIN_INTERFACE
4409
4410 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4411 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4412 ID3D12VersionedRootSignatureDeserializer * This,
4413 REFIID riid,
4414 _COM_Outptr_ void **ppvObject);
4415
4416 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4417 ULONG ( STDMETHODCALLTYPE *AddRef )(
4418 ID3D12VersionedRootSignatureDeserializer * This);
4419
4420 DECLSPEC_XFGVIRT(IUnknown, Release)
4421 ULONG ( STDMETHODCALLTYPE *Release )(
4422 ID3D12VersionedRootSignatureDeserializer * This);
4423
4424 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetRootSignatureDescAtVersion)
4425 HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
4426 ID3D12VersionedRootSignatureDeserializer * This,
4427 D3D_ROOT_SIGNATURE_VERSION convertToVersion,
4428 _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
4429
4430 DECLSPEC_XFGVIRT(ID3D12VersionedRootSignatureDeserializer, GetUnconvertedRootSignatureDesc)
4431 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
4432 ID3D12VersionedRootSignatureDeserializer * This);
4433
4434 END_INTERFACE
4435 } ID3D12VersionedRootSignatureDeserializerVtbl;
4436
4437 interface ID3D12VersionedRootSignatureDeserializer
4438 {
4439 CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
4440 };
4441
4442
4443
4444#ifdef COBJMACROS
4445
4446
4447#define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
4448 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4449
4450#define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
4451 ( (This)->lpVtbl -> AddRef(This) )
4452
4453#define ID3D12VersionedRootSignatureDeserializer_Release(This) \
4454 ( (This)->lpVtbl -> Release(This) )
4455
4456
4457#define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
4458 ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
4459
4460#define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
4461 ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
4462
4463#endif /* COBJMACROS */
4464
4465
4466#endif /* C style interface */
4467
4468
4469
4470
4471#endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
4472
4473
4474/* interface __MIDL_itf_d3d12_0000_0003 */
4475/* [local] */
4476
4477typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
4478 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4479 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4480 _Out_ ID3DBlob** ppBlob,
4481 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4482
4483HRESULT WINAPI D3D12SerializeRootSignature(
4484 _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
4485 _In_ D3D_ROOT_SIGNATURE_VERSION Version,
4486 _Out_ ID3DBlob** ppBlob,
4487 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4488
4489typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
4490 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4491 _In_ SIZE_T SrcDataSizeInBytes,
4492 _In_ REFIID pRootSignatureDeserializerInterface,
4493 _Out_ void** ppRootSignatureDeserializer);
4494
4495HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
4496 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4497 _In_ SIZE_T SrcDataSizeInBytes,
4498 _In_ REFIID pRootSignatureDeserializerInterface,
4499 _Out_ void** ppRootSignatureDeserializer);
4500
4501typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
4502 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4503 _Out_ ID3DBlob** ppBlob,
4504 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4505
4506HRESULT WINAPI D3D12SerializeVersionedRootSignature(
4507 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
4508 _Out_ ID3DBlob** ppBlob,
4509 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
4510
4511typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
4512 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4513 _In_ SIZE_T SrcDataSizeInBytes,
4514 _In_ REFIID pRootSignatureDeserializerInterface,
4515 _Out_ void** ppRootSignatureDeserializer);
4516
4517HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
4518 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4519 _In_ SIZE_T SrcDataSizeInBytes,
4520 _In_ REFIID pRootSignatureDeserializerInterface,
4521 _Out_ void** ppRootSignatureDeserializer);
4522
4523typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(
4524 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4525 _In_ SIZE_T SrcDataSizeInBytes,
4526 _In_ LPCWSTR RootSignatureSubobjectName,
4527 _In_ REFIID pRootSignatureDeserializerInterface,
4528 _Out_ void** ppRootSignatureDeserializer);
4529
4530HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
4531 _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
4532 _In_ SIZE_T SrcDataSizeInBytes,
4533 _In_opt_ LPCWSTR RootSignatureSubobjectName,
4534 _In_ REFIID pRootSignatureDeserializerInterface,
4535 _Out_ void** ppRootSignatureDeserializer);
4536
4537typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
4538 {
4539 SIZE_T ptr;
4540 } D3D12_CPU_DESCRIPTOR_HANDLE;
4541
4542typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
4543 {
4544 UINT64 ptr;
4545 } D3D12_GPU_DESCRIPTOR_HANDLE;
4546
4547// If rects are supplied in D3D12_DISCARD_REGION, below, the resource
4548// must have 2D subresources with all specified subresources the same dimension.
4549typedef struct D3D12_DISCARD_REGION
4550 {
4551 UINT NumRects;
4552 _In_reads_(NumRects) const D3D12_RECT *pRects;
4553 UINT FirstSubresource;
4554 UINT NumSubresources;
4555 } D3D12_DISCARD_REGION;
4556
4557typedef
4558enum D3D12_QUERY_HEAP_TYPE
4559 {
4560 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
4561 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
4562 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
4563 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
4564 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
4565 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
4566 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7
4567 } D3D12_QUERY_HEAP_TYPE;
4568
4569typedef struct D3D12_QUERY_HEAP_DESC
4570 {
4571 D3D12_QUERY_HEAP_TYPE Type;
4572 UINT Count;
4573 UINT NodeMask;
4574 } D3D12_QUERY_HEAP_DESC;
4575
4576typedef
4577enum D3D12_QUERY_TYPE
4578 {
4579 D3D12_QUERY_TYPE_OCCLUSION = 0,
4580 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
4581 D3D12_QUERY_TYPE_TIMESTAMP = 2,
4582 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
4583 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
4584 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
4585 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
4586 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
4587 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
4588 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10
4589 } D3D12_QUERY_TYPE;
4590
4591typedef
4592enum D3D12_PREDICATION_OP
4593 {
4594 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
4595 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
4596 } D3D12_PREDICATION_OP;
4597
4598typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
4599 {
4600 UINT64 IAVertices;
4601 UINT64 IAPrimitives;
4602 UINT64 VSInvocations;
4603 UINT64 GSInvocations;
4604 UINT64 GSPrimitives;
4605 UINT64 CInvocations;
4606 UINT64 CPrimitives;
4607 UINT64 PSInvocations;
4608 UINT64 HSInvocations;
4609 UINT64 DSInvocations;
4610 UINT64 CSInvocations;
4611 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
4612
4613typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
4614 {
4615 UINT64 IAVertices;
4616 UINT64 IAPrimitives;
4617 UINT64 VSInvocations;
4618 UINT64 GSInvocations;
4619 UINT64 GSPrimitives;
4620 UINT64 CInvocations;
4621 UINT64 CPrimitives;
4622 UINT64 PSInvocations;
4623 UINT64 HSInvocations;
4624 UINT64 DSInvocations;
4625 UINT64 CSInvocations;
4626 UINT64 ASInvocations;
4627 UINT64 MSInvocations;
4628 UINT64 MSPrimitives;
4629 } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
4630
4631typedef struct D3D12_QUERY_DATA_SO_STATISTICS
4632 {
4633 UINT64 NumPrimitivesWritten;
4634 UINT64 PrimitivesStorageNeeded;
4635 } D3D12_QUERY_DATA_SO_STATISTICS;
4636
4637typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
4638 {
4639 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4640 UINT64 SizeInBytes;
4641 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
4642 } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
4643
4644typedef struct D3D12_DRAW_ARGUMENTS
4645 {
4646 UINT VertexCountPerInstance;
4647 UINT InstanceCount;
4648 UINT StartVertexLocation;
4649 UINT StartInstanceLocation;
4650 } D3D12_DRAW_ARGUMENTS;
4651
4652typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
4653 {
4654 UINT IndexCountPerInstance;
4655 UINT InstanceCount;
4656 UINT StartIndexLocation;
4657 INT BaseVertexLocation;
4658 UINT StartInstanceLocation;
4659 } D3D12_DRAW_INDEXED_ARGUMENTS;
4660
4661typedef struct D3D12_DISPATCH_ARGUMENTS
4662 {
4663 UINT ThreadGroupCountX;
4664 UINT ThreadGroupCountY;
4665 UINT ThreadGroupCountZ;
4666 } D3D12_DISPATCH_ARGUMENTS;
4667
4668typedef struct D3D12_VERTEX_BUFFER_VIEW
4669 {
4670 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4671 UINT SizeInBytes;
4672 UINT StrideInBytes;
4673 } D3D12_VERTEX_BUFFER_VIEW;
4674
4675typedef struct D3D12_INDEX_BUFFER_VIEW
4676 {
4677 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
4678 UINT SizeInBytes;
4679 DXGI_FORMAT Format;
4680 } D3D12_INDEX_BUFFER_VIEW;
4681
4682typedef
4683enum D3D12_INDIRECT_ARGUMENT_TYPE
4684 {
4685 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
4686 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
4687 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
4688 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
4689 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
4690 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
4691 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
4692 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
4693 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 ) ,
4694 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS = ( D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW + 1 ) ,
4695 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS + 1 ) ,
4696 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH + 1 )
4697 } D3D12_INDIRECT_ARGUMENT_TYPE;
4698
4699typedef struct D3D12_INDIRECT_ARGUMENT_DESC
4700 {
4701 D3D12_INDIRECT_ARGUMENT_TYPE Type;
4702 union
4703 {
4704 struct
4705 {
4706 UINT Slot;
4707 } VertexBuffer;
4708 struct
4709 {
4710 UINT RootParameterIndex;
4711 UINT DestOffsetIn32BitValues;
4712 UINT Num32BitValuesToSet;
4713 } Constant;
4714 struct
4715 {
4716 UINT RootParameterIndex;
4717 } ConstantBufferView;
4718 struct
4719 {
4720 UINT RootParameterIndex;
4721 } ShaderResourceView;
4722 struct
4723 {
4724 UINT RootParameterIndex;
4725 } UnorderedAccessView;
4726 struct
4727 {
4728 UINT RootParameterIndex;
4729 UINT DestOffsetIn32BitValues;
4730 } IncrementingConstant;
4731 } ;
4732 } D3D12_INDIRECT_ARGUMENT_DESC;
4733
4734typedef struct D3D12_COMMAND_SIGNATURE_DESC
4735 {
4736 UINT ByteStride;
4737 UINT NumArgumentDescs;
4738 _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
4739 UINT NodeMask;
4740 } D3D12_COMMAND_SIGNATURE_DESC;
4741
4742
4743
4744
4745extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
4746extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
4747
4748#ifndef __ID3D12Pageable_INTERFACE_DEFINED__
4749#define __ID3D12Pageable_INTERFACE_DEFINED__
4750
4751/* interface ID3D12Pageable */
4752/* [unique][local][object][uuid] */
4753
4754
4755EXTERN_C const IID IID_ID3D12Pageable;
4756
4757#if defined(__cplusplus) && !defined(CINTERFACE)
4758
4759 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
4760 ID3D12Pageable : public ID3D12DeviceChild
4761 {
4762 public:
4763 };
4764
4765
4766#else /* C style interface */
4767
4768 typedef struct ID3D12PageableVtbl
4769 {
4770 BEGIN_INTERFACE
4771
4772 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4773 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4774 ID3D12Pageable * This,
4775 REFIID riid,
4776 _COM_Outptr_ void **ppvObject);
4777
4778 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4779 ULONG ( STDMETHODCALLTYPE *AddRef )(
4780 ID3D12Pageable * This);
4781
4782 DECLSPEC_XFGVIRT(IUnknown, Release)
4783 ULONG ( STDMETHODCALLTYPE *Release )(
4784 ID3D12Pageable * This);
4785
4786 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4787 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4788 ID3D12Pageable * This,
4789 _In_ REFGUID guid,
4790 _Inout_ UINT *pDataSize,
4791 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4792
4793 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4794 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4795 ID3D12Pageable * This,
4796 _In_ REFGUID guid,
4797 _In_ UINT DataSize,
4798 _In_reads_bytes_opt_( DataSize ) const void *pData);
4799
4800 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4801 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4802 ID3D12Pageable * This,
4803 _In_ REFGUID guid,
4804 _In_opt_ const IUnknown *pData);
4805
4806 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4807 HRESULT ( STDMETHODCALLTYPE *SetName )(
4808 ID3D12Pageable * This,
4809 _In_z_ LPCWSTR Name);
4810
4811 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4812 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4813 ID3D12Pageable * This,
4814 REFIID riid,
4815 _COM_Outptr_opt_ void **ppvDevice);
4816
4817 END_INTERFACE
4818 } ID3D12PageableVtbl;
4819
4820 interface ID3D12Pageable
4821 {
4822 CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
4823 };
4824
4825
4826
4827#ifdef COBJMACROS
4828
4829
4830#define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
4831 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4832
4833#define ID3D12Pageable_AddRef(This) \
4834 ( (This)->lpVtbl -> AddRef(This) )
4835
4836#define ID3D12Pageable_Release(This) \
4837 ( (This)->lpVtbl -> Release(This) )
4838
4839
4840#define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
4841 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4842
4843#define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
4844 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4845
4846#define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
4847 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4848
4849#define ID3D12Pageable_SetName(This,Name) \
4850 ( (This)->lpVtbl -> SetName(This,Name) )
4851
4852
4853#define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
4854 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4855
4856
4857#endif /* COBJMACROS */
4858
4859
4860#endif /* C style interface */
4861
4862
4863
4864
4865#endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
4866
4867
4868#ifndef __ID3D12Heap_INTERFACE_DEFINED__
4869#define __ID3D12Heap_INTERFACE_DEFINED__
4870
4871/* interface ID3D12Heap */
4872/* [unique][local][object][uuid] */
4873
4874
4875EXTERN_C const IID IID_ID3D12Heap;
4876
4877#if defined(__cplusplus) && !defined(CINTERFACE)
4878
4879 MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
4880 ID3D12Heap : public ID3D12Pageable
4881 {
4882 public:
4883#if defined(_MSC_VER) || !defined(_WIN32)
4884 virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4885#else
4886 virtual D3D12_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
4887 D3D12_HEAP_DESC * RetVal) = 0;
4888#endif
4889
4890 };
4891
4892
4893#else /* C style interface */
4894
4895 typedef struct ID3D12HeapVtbl
4896 {
4897 BEGIN_INTERFACE
4898
4899 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4900 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4901 ID3D12Heap * This,
4902 REFIID riid,
4903 _COM_Outptr_ void **ppvObject);
4904
4905 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4906 ULONG ( STDMETHODCALLTYPE *AddRef )(
4907 ID3D12Heap * This);
4908
4909 DECLSPEC_XFGVIRT(IUnknown, Release)
4910 ULONG ( STDMETHODCALLTYPE *Release )(
4911 ID3D12Heap * This);
4912
4913 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4914 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4915 ID3D12Heap * This,
4916 _In_ REFGUID guid,
4917 _Inout_ UINT *pDataSize,
4918 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4919
4920 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4921 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4922 ID3D12Heap * This,
4923 _In_ REFGUID guid,
4924 _In_ UINT DataSize,
4925 _In_reads_bytes_opt_( DataSize ) const void *pData);
4926
4927 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4928 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4929 ID3D12Heap * This,
4930 _In_ REFGUID guid,
4931 _In_opt_ const IUnknown *pData);
4932
4933 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4934 HRESULT ( STDMETHODCALLTYPE *SetName )(
4935 ID3D12Heap * This,
4936 _In_z_ LPCWSTR Name);
4937
4938 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4939 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4940 ID3D12Heap * This,
4941 REFIID riid,
4942 _COM_Outptr_opt_ void **ppvDevice);
4943
4944 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
4945#if !defined(_WIN32)
4946 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4947 ID3D12Heap * This);
4948
4949#else
4950 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4951 ID3D12Heap * This,
4952 D3D12_HEAP_DESC * RetVal);
4953
4954#endif
4955
4956 END_INTERFACE
4957 } ID3D12HeapVtbl;
4958
4959 interface ID3D12Heap
4960 {
4961 CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
4962 };
4963
4964
4965
4966#ifdef COBJMACROS
4967
4968
4969#define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
4970 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4971
4972#define ID3D12Heap_AddRef(This) \
4973 ( (This)->lpVtbl -> AddRef(This) )
4974
4975#define ID3D12Heap_Release(This) \
4976 ( (This)->lpVtbl -> Release(This) )
4977
4978
4979#define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
4980 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4981
4982#define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
4983 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4984
4985#define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
4986 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4987
4988#define ID3D12Heap_SetName(This,Name) \
4989 ( (This)->lpVtbl -> SetName(This,Name) )
4990
4991
4992#define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
4993 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4994
4995
4996#if !defined(_WIN32)
4997
4998#define ID3D12Heap_GetDesc(This) \
4999 ( (This)->lpVtbl -> GetDesc(This) )
5000#else
5001#define ID3D12Heap_GetDesc(This,RetVal) \
5002 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5003#endif
5004
5005#endif /* COBJMACROS */
5006
5007
5008#endif /* C style interface */
5009
5010
5011
5012
5013#endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
5014
5015
5016#ifndef __ID3D12Resource_INTERFACE_DEFINED__
5017#define __ID3D12Resource_INTERFACE_DEFINED__
5018
5019/* interface ID3D12Resource */
5020/* [unique][local][object][uuid] */
5021
5022
5023EXTERN_C const IID IID_ID3D12Resource;
5024
5025#if defined(__cplusplus) && !defined(CINTERFACE)
5026
5027 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
5028 ID3D12Resource : public ID3D12Pageable
5029 {
5030 public:
5031 virtual HRESULT STDMETHODCALLTYPE Map(
5032 UINT Subresource,
5033 _In_opt_ const D3D12_RANGE *pReadRange,
5034 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
5035
5036 virtual void STDMETHODCALLTYPE Unmap(
5037 UINT Subresource,
5038 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
5039
5040#if defined(_MSC_VER) || !defined(_WIN32)
5041 virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5042#else
5043 virtual D3D12_RESOURCE_DESC *STDMETHODCALLTYPE GetDesc(
5044 D3D12_RESOURCE_DESC * RetVal) = 0;
5045#endif
5046
5047 virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
5048
5049 virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
5050 UINT DstSubresource,
5051 _In_opt_ const D3D12_BOX *pDstBox,
5052 _In_ const void *pSrcData,
5053 UINT SrcRowPitch,
5054 UINT SrcDepthPitch) = 0;
5055
5056 virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
5057 _Out_ void *pDstData,
5058 UINT DstRowPitch,
5059 UINT DstDepthPitch,
5060 UINT SrcSubresource,
5061 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
5062
5063 virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
5064 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5065 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
5066
5067 };
5068
5069
5070#else /* C style interface */
5071
5072 typedef struct ID3D12ResourceVtbl
5073 {
5074 BEGIN_INTERFACE
5075
5076 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5077 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5078 ID3D12Resource * This,
5079 REFIID riid,
5080 _COM_Outptr_ void **ppvObject);
5081
5082 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5083 ULONG ( STDMETHODCALLTYPE *AddRef )(
5084 ID3D12Resource * This);
5085
5086 DECLSPEC_XFGVIRT(IUnknown, Release)
5087 ULONG ( STDMETHODCALLTYPE *Release )(
5088 ID3D12Resource * This);
5089
5090 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5091 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5092 ID3D12Resource * This,
5093 _In_ REFGUID guid,
5094 _Inout_ UINT *pDataSize,
5095 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5096
5097 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5098 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5099 ID3D12Resource * This,
5100 _In_ REFGUID guid,
5101 _In_ UINT DataSize,
5102 _In_reads_bytes_opt_( DataSize ) const void *pData);
5103
5104 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5105 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5106 ID3D12Resource * This,
5107 _In_ REFGUID guid,
5108 _In_opt_ const IUnknown *pData);
5109
5110 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5111 HRESULT ( STDMETHODCALLTYPE *SetName )(
5112 ID3D12Resource * This,
5113 _In_z_ LPCWSTR Name);
5114
5115 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5116 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5117 ID3D12Resource * This,
5118 REFIID riid,
5119 _COM_Outptr_opt_ void **ppvDevice);
5120
5121 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
5122 HRESULT ( STDMETHODCALLTYPE *Map )(
5123 ID3D12Resource * This,
5124 UINT Subresource,
5125 _In_opt_ const D3D12_RANGE *pReadRange,
5126 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
5127
5128 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
5129 void ( STDMETHODCALLTYPE *Unmap )(
5130 ID3D12Resource * This,
5131 UINT Subresource,
5132 _In_opt_ const D3D12_RANGE *pWrittenRange);
5133
5134 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
5135#if !defined(_WIN32)
5136 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
5137 ID3D12Resource * This);
5138
5139#else
5140 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
5141 ID3D12Resource * This,
5142 D3D12_RESOURCE_DESC * RetVal);
5143
5144#endif
5145
5146 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
5147 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
5148 ID3D12Resource * This);
5149
5150 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
5151 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
5152 ID3D12Resource * This,
5153 UINT DstSubresource,
5154 _In_opt_ const D3D12_BOX *pDstBox,
5155 _In_ const void *pSrcData,
5156 UINT SrcRowPitch,
5157 UINT SrcDepthPitch);
5158
5159 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
5160 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
5161 ID3D12Resource * This,
5162 _Out_ void *pDstData,
5163 UINT DstRowPitch,
5164 UINT DstDepthPitch,
5165 UINT SrcSubresource,
5166 _In_opt_ const D3D12_BOX *pSrcBox);
5167
5168 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
5169 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
5170 ID3D12Resource * This,
5171 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
5172 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
5173
5174 END_INTERFACE
5175 } ID3D12ResourceVtbl;
5176
5177 interface ID3D12Resource
5178 {
5179 CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
5180 };
5181
5182
5183
5184#ifdef COBJMACROS
5185
5186
5187#define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
5188 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5189
5190#define ID3D12Resource_AddRef(This) \
5191 ( (This)->lpVtbl -> AddRef(This) )
5192
5193#define ID3D12Resource_Release(This) \
5194 ( (This)->lpVtbl -> Release(This) )
5195
5196
5197#define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
5198 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5199
5200#define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
5201 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5202
5203#define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
5204 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5205
5206#define ID3D12Resource_SetName(This,Name) \
5207 ( (This)->lpVtbl -> SetName(This,Name) )
5208
5209
5210#define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
5211 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5212
5213
5214
5215#define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
5216 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
5217
5218#define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
5219 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
5220#if !defined(_WIN32)
5221
5222#define ID3D12Resource_GetDesc(This) \
5223 ( (This)->lpVtbl -> GetDesc(This) )
5224#else
5225#define ID3D12Resource_GetDesc(This,RetVal) \
5226 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
5227#endif
5228
5229#define ID3D12Resource_GetGPUVirtualAddress(This) \
5230 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
5231
5232#define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
5233 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
5234
5235#define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
5236 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
5237
5238#define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
5239 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
5240
5241#endif /* COBJMACROS */
5242
5243
5244#endif /* C style interface */
5245
5246
5247
5248
5249#endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
5250
5251
5252#ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
5253#define __ID3D12CommandAllocator_INTERFACE_DEFINED__
5254
5255/* interface ID3D12CommandAllocator */
5256/* [unique][local][object][uuid] */
5257
5258
5259EXTERN_C const IID IID_ID3D12CommandAllocator;
5260
5261#if defined(__cplusplus) && !defined(CINTERFACE)
5262
5263 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
5264 ID3D12CommandAllocator : public ID3D12Pageable
5265 {
5266 public:
5267 virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
5268
5269 };
5270
5271
5272#else /* C style interface */
5273
5274 typedef struct ID3D12CommandAllocatorVtbl
5275 {
5276 BEGIN_INTERFACE
5277
5278 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5279 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5280 ID3D12CommandAllocator * This,
5281 REFIID riid,
5282 _COM_Outptr_ void **ppvObject);
5283
5284 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5285 ULONG ( STDMETHODCALLTYPE *AddRef )(
5286 ID3D12CommandAllocator * This);
5287
5288 DECLSPEC_XFGVIRT(IUnknown, Release)
5289 ULONG ( STDMETHODCALLTYPE *Release )(
5290 ID3D12CommandAllocator * This);
5291
5292 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5293 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5294 ID3D12CommandAllocator * This,
5295 _In_ REFGUID guid,
5296 _Inout_ UINT *pDataSize,
5297 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5298
5299 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5300 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5301 ID3D12CommandAllocator * This,
5302 _In_ REFGUID guid,
5303 _In_ UINT DataSize,
5304 _In_reads_bytes_opt_( DataSize ) const void *pData);
5305
5306 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5307 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5308 ID3D12CommandAllocator * This,
5309 _In_ REFGUID guid,
5310 _In_opt_ const IUnknown *pData);
5311
5312 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5313 HRESULT ( STDMETHODCALLTYPE *SetName )(
5314 ID3D12CommandAllocator * This,
5315 _In_z_ LPCWSTR Name);
5316
5317 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5318 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5319 ID3D12CommandAllocator * This,
5320 REFIID riid,
5321 _COM_Outptr_opt_ void **ppvDevice);
5322
5323 DECLSPEC_XFGVIRT(ID3D12CommandAllocator, Reset)
5324 HRESULT ( STDMETHODCALLTYPE *Reset )(
5325 ID3D12CommandAllocator * This);
5326
5327 END_INTERFACE
5328 } ID3D12CommandAllocatorVtbl;
5329
5330 interface ID3D12CommandAllocator
5331 {
5332 CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
5333 };
5334
5335
5336
5337#ifdef COBJMACROS
5338
5339
5340#define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
5341 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5342
5343#define ID3D12CommandAllocator_AddRef(This) \
5344 ( (This)->lpVtbl -> AddRef(This) )
5345
5346#define ID3D12CommandAllocator_Release(This) \
5347 ( (This)->lpVtbl -> Release(This) )
5348
5349
5350#define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
5351 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5352
5353#define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
5354 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5355
5356#define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
5357 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5358
5359#define ID3D12CommandAllocator_SetName(This,Name) \
5360 ( (This)->lpVtbl -> SetName(This,Name) )
5361
5362
5363#define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
5364 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5365
5366
5367
5368#define ID3D12CommandAllocator_Reset(This) \
5369 ( (This)->lpVtbl -> Reset(This) )
5370
5371#endif /* COBJMACROS */
5372
5373
5374#endif /* C style interface */
5375
5376
5377
5378
5379#endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
5380
5381
5382#ifndef __ID3D12Fence_INTERFACE_DEFINED__
5383#define __ID3D12Fence_INTERFACE_DEFINED__
5384
5385/* interface ID3D12Fence */
5386/* [unique][local][object][uuid] */
5387
5388
5389EXTERN_C const IID IID_ID3D12Fence;
5390
5391#if defined(__cplusplus) && !defined(CINTERFACE)
5392
5393 MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
5394 ID3D12Fence : public ID3D12Pageable
5395 {
5396 public:
5397 virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
5398
5399 virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
5400 UINT64 Value,
5401 HANDLE hEvent) = 0;
5402
5403 virtual HRESULT STDMETHODCALLTYPE Signal(
5404 UINT64 Value) = 0;
5405
5406 };
5407
5408
5409#else /* C style interface */
5410
5411 typedef struct ID3D12FenceVtbl
5412 {
5413 BEGIN_INTERFACE
5414
5415 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5416 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5417 ID3D12Fence * This,
5418 REFIID riid,
5419 _COM_Outptr_ void **ppvObject);
5420
5421 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5422 ULONG ( STDMETHODCALLTYPE *AddRef )(
5423 ID3D12Fence * This);
5424
5425 DECLSPEC_XFGVIRT(IUnknown, Release)
5426 ULONG ( STDMETHODCALLTYPE *Release )(
5427 ID3D12Fence * This);
5428
5429 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5430 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5431 ID3D12Fence * This,
5432 _In_ REFGUID guid,
5433 _Inout_ UINT *pDataSize,
5434 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5435
5436 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5437 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5438 ID3D12Fence * This,
5439 _In_ REFGUID guid,
5440 _In_ UINT DataSize,
5441 _In_reads_bytes_opt_( DataSize ) const void *pData);
5442
5443 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5444 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5445 ID3D12Fence * This,
5446 _In_ REFGUID guid,
5447 _In_opt_ const IUnknown *pData);
5448
5449 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5450 HRESULT ( STDMETHODCALLTYPE *SetName )(
5451 ID3D12Fence * This,
5452 _In_z_ LPCWSTR Name);
5453
5454 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5455 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5456 ID3D12Fence * This,
5457 REFIID riid,
5458 _COM_Outptr_opt_ void **ppvDevice);
5459
5460 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5461 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5462 ID3D12Fence * This);
5463
5464 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5465 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5466 ID3D12Fence * This,
5467 UINT64 Value,
5468 HANDLE hEvent);
5469
5470 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5471 HRESULT ( STDMETHODCALLTYPE *Signal )(
5472 ID3D12Fence * This,
5473 UINT64 Value);
5474
5475 END_INTERFACE
5476 } ID3D12FenceVtbl;
5477
5478 interface ID3D12Fence
5479 {
5480 CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
5481 };
5482
5483
5484
5485#ifdef COBJMACROS
5486
5487
5488#define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
5489 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5490
5491#define ID3D12Fence_AddRef(This) \
5492 ( (This)->lpVtbl -> AddRef(This) )
5493
5494#define ID3D12Fence_Release(This) \
5495 ( (This)->lpVtbl -> Release(This) )
5496
5497
5498#define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
5499 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5500
5501#define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
5502 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5503
5504#define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
5505 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5506
5507#define ID3D12Fence_SetName(This,Name) \
5508 ( (This)->lpVtbl -> SetName(This,Name) )
5509
5510
5511#define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
5512 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5513
5514
5515
5516#define ID3D12Fence_GetCompletedValue(This) \
5517 ( (This)->lpVtbl -> GetCompletedValue(This) )
5518
5519#define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
5520 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5521
5522#define ID3D12Fence_Signal(This,Value) \
5523 ( (This)->lpVtbl -> Signal(This,Value) )
5524
5525#endif /* COBJMACROS */
5526
5527
5528#endif /* C style interface */
5529
5530
5531
5532
5533#endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
5534
5535
5536#ifndef __ID3D12Fence1_INTERFACE_DEFINED__
5537#define __ID3D12Fence1_INTERFACE_DEFINED__
5538
5539/* interface ID3D12Fence1 */
5540/* [unique][local][object][uuid] */
5541
5542
5543EXTERN_C const IID IID_ID3D12Fence1;
5544
5545#if defined(__cplusplus) && !defined(CINTERFACE)
5546
5547 MIDL_INTERFACE("433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")
5548 ID3D12Fence1 : public ID3D12Fence
5549 {
5550 public:
5551 virtual D3D12_FENCE_FLAGS STDMETHODCALLTYPE GetCreationFlags( void) = 0;
5552
5553 };
5554
5555
5556#else /* C style interface */
5557
5558 typedef struct ID3D12Fence1Vtbl
5559 {
5560 BEGIN_INTERFACE
5561
5562 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5563 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5564 ID3D12Fence1 * This,
5565 REFIID riid,
5566 _COM_Outptr_ void **ppvObject);
5567
5568 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5569 ULONG ( STDMETHODCALLTYPE *AddRef )(
5570 ID3D12Fence1 * This);
5571
5572 DECLSPEC_XFGVIRT(IUnknown, Release)
5573 ULONG ( STDMETHODCALLTYPE *Release )(
5574 ID3D12Fence1 * This);
5575
5576 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5577 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5578 ID3D12Fence1 * This,
5579 _In_ REFGUID guid,
5580 _Inout_ UINT *pDataSize,
5581 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5582
5583 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5584 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5585 ID3D12Fence1 * This,
5586 _In_ REFGUID guid,
5587 _In_ UINT DataSize,
5588 _In_reads_bytes_opt_( DataSize ) const void *pData);
5589
5590 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5591 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5592 ID3D12Fence1 * This,
5593 _In_ REFGUID guid,
5594 _In_opt_ const IUnknown *pData);
5595
5596 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5597 HRESULT ( STDMETHODCALLTYPE *SetName )(
5598 ID3D12Fence1 * This,
5599 _In_z_ LPCWSTR Name);
5600
5601 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5602 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5603 ID3D12Fence1 * This,
5604 REFIID riid,
5605 _COM_Outptr_opt_ void **ppvDevice);
5606
5607 DECLSPEC_XFGVIRT(ID3D12Fence, GetCompletedValue)
5608 UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
5609 ID3D12Fence1 * This);
5610
5611 DECLSPEC_XFGVIRT(ID3D12Fence, SetEventOnCompletion)
5612 HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
5613 ID3D12Fence1 * This,
5614 UINT64 Value,
5615 HANDLE hEvent);
5616
5617 DECLSPEC_XFGVIRT(ID3D12Fence, Signal)
5618 HRESULT ( STDMETHODCALLTYPE *Signal )(
5619 ID3D12Fence1 * This,
5620 UINT64 Value);
5621
5622 DECLSPEC_XFGVIRT(ID3D12Fence1, GetCreationFlags)
5623 D3D12_FENCE_FLAGS ( STDMETHODCALLTYPE *GetCreationFlags )(
5624 ID3D12Fence1 * This);
5625
5626 END_INTERFACE
5627 } ID3D12Fence1Vtbl;
5628
5629 interface ID3D12Fence1
5630 {
5631 CONST_VTBL struct ID3D12Fence1Vtbl *lpVtbl;
5632 };
5633
5634
5635
5636#ifdef COBJMACROS
5637
5638
5639#define ID3D12Fence1_QueryInterface(This,riid,ppvObject) \
5640 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5641
5642#define ID3D12Fence1_AddRef(This) \
5643 ( (This)->lpVtbl -> AddRef(This) )
5644
5645#define ID3D12Fence1_Release(This) \
5646 ( (This)->lpVtbl -> Release(This) )
5647
5648
5649#define ID3D12Fence1_GetPrivateData(This,guid,pDataSize,pData) \
5650 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5651
5652#define ID3D12Fence1_SetPrivateData(This,guid,DataSize,pData) \
5653 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5654
5655#define ID3D12Fence1_SetPrivateDataInterface(This,guid,pData) \
5656 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5657
5658#define ID3D12Fence1_SetName(This,Name) \
5659 ( (This)->lpVtbl -> SetName(This,Name) )
5660
5661
5662#define ID3D12Fence1_GetDevice(This,riid,ppvDevice) \
5663 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5664
5665
5666
5667#define ID3D12Fence1_GetCompletedValue(This) \
5668 ( (This)->lpVtbl -> GetCompletedValue(This) )
5669
5670#define ID3D12Fence1_SetEventOnCompletion(This,Value,hEvent) \
5671 ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
5672
5673#define ID3D12Fence1_Signal(This,Value) \
5674 ( (This)->lpVtbl -> Signal(This,Value) )
5675
5676
5677#define ID3D12Fence1_GetCreationFlags(This) \
5678 ( (This)->lpVtbl -> GetCreationFlags(This) )
5679
5680#endif /* COBJMACROS */
5681
5682
5683#endif /* C style interface */
5684
5685
5686
5687
5688#endif /* __ID3D12Fence1_INTERFACE_DEFINED__ */
5689
5690
5691#ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
5692#define __ID3D12PipelineState_INTERFACE_DEFINED__
5693
5694/* interface ID3D12PipelineState */
5695/* [unique][local][object][uuid] */
5696
5697
5698EXTERN_C const IID IID_ID3D12PipelineState;
5699
5700#if defined(__cplusplus) && !defined(CINTERFACE)
5701
5702 MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
5703 ID3D12PipelineState : public ID3D12Pageable
5704 {
5705 public:
5706 virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
5707 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
5708
5709 };
5710
5711
5712#else /* C style interface */
5713
5714 typedef struct ID3D12PipelineStateVtbl
5715 {
5716 BEGIN_INTERFACE
5717
5718 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5719 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5720 ID3D12PipelineState * This,
5721 REFIID riid,
5722 _COM_Outptr_ void **ppvObject);
5723
5724 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5725 ULONG ( STDMETHODCALLTYPE *AddRef )(
5726 ID3D12PipelineState * This);
5727
5728 DECLSPEC_XFGVIRT(IUnknown, Release)
5729 ULONG ( STDMETHODCALLTYPE *Release )(
5730 ID3D12PipelineState * This);
5731
5732 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5733 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5734 ID3D12PipelineState * This,
5735 _In_ REFGUID guid,
5736 _Inout_ UINT *pDataSize,
5737 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5738
5739 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5740 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5741 ID3D12PipelineState * This,
5742 _In_ REFGUID guid,
5743 _In_ UINT DataSize,
5744 _In_reads_bytes_opt_( DataSize ) const void *pData);
5745
5746 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5747 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5748 ID3D12PipelineState * This,
5749 _In_ REFGUID guid,
5750 _In_opt_ const IUnknown *pData);
5751
5752 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5753 HRESULT ( STDMETHODCALLTYPE *SetName )(
5754 ID3D12PipelineState * This,
5755 _In_z_ LPCWSTR Name);
5756
5757 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5758 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5759 ID3D12PipelineState * This,
5760 REFIID riid,
5761 _COM_Outptr_opt_ void **ppvDevice);
5762
5763 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5764 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5765 ID3D12PipelineState * This,
5766 _COM_Outptr_ ID3DBlob **ppBlob);
5767
5768 END_INTERFACE
5769 } ID3D12PipelineStateVtbl;
5770
5771 interface ID3D12PipelineState
5772 {
5773 CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
5774 };
5775
5776
5777
5778#ifdef COBJMACROS
5779
5780
5781#define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
5782 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5783
5784#define ID3D12PipelineState_AddRef(This) \
5785 ( (This)->lpVtbl -> AddRef(This) )
5786
5787#define ID3D12PipelineState_Release(This) \
5788 ( (This)->lpVtbl -> Release(This) )
5789
5790
5791#define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
5792 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5793
5794#define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
5795 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5796
5797#define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
5798 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5799
5800#define ID3D12PipelineState_SetName(This,Name) \
5801 ( (This)->lpVtbl -> SetName(This,Name) )
5802
5803
5804#define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
5805 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5806
5807
5808
5809#define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
5810 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5811
5812#endif /* COBJMACROS */
5813
5814
5815#endif /* C style interface */
5816
5817
5818
5819
5820#endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
5821
5822
5823#ifndef __ID3D12PipelineState1_INTERFACE_DEFINED__
5824#define __ID3D12PipelineState1_INTERFACE_DEFINED__
5825
5826/* interface ID3D12PipelineState1 */
5827/* [unique][local][object][uuid] */
5828
5829
5830EXTERN_C const IID IID_ID3D12PipelineState1;
5831
5832#if defined(__cplusplus) && !defined(CINTERFACE)
5833
5834 MIDL_INTERFACE("5646804c-9638-48f7-9182-b3ee5a6b60fb")
5835 ID3D12PipelineState1 : public ID3D12PipelineState
5836 {
5837 public:
5838 virtual HRESULT STDMETHODCALLTYPE GetRootSignature(
5839 REFIID riid,
5840 _COM_Outptr_ void **ppvRootSignature) = 0;
5841
5842 };
5843
5844
5845#else /* C style interface */
5846
5847 typedef struct ID3D12PipelineState1Vtbl
5848 {
5849 BEGIN_INTERFACE
5850
5851 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5852 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5853 ID3D12PipelineState1 * This,
5854 REFIID riid,
5855 _COM_Outptr_ void **ppvObject);
5856
5857 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5858 ULONG ( STDMETHODCALLTYPE *AddRef )(
5859 ID3D12PipelineState1 * This);
5860
5861 DECLSPEC_XFGVIRT(IUnknown, Release)
5862 ULONG ( STDMETHODCALLTYPE *Release )(
5863 ID3D12PipelineState1 * This);
5864
5865 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5866 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5867 ID3D12PipelineState1 * This,
5868 _In_ REFGUID guid,
5869 _Inout_ UINT *pDataSize,
5870 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5871
5872 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5873 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5874 ID3D12PipelineState1 * This,
5875 _In_ REFGUID guid,
5876 _In_ UINT DataSize,
5877 _In_reads_bytes_opt_( DataSize ) const void *pData);
5878
5879 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5880 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5881 ID3D12PipelineState1 * This,
5882 _In_ REFGUID guid,
5883 _In_opt_ const IUnknown *pData);
5884
5885 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5886 HRESULT ( STDMETHODCALLTYPE *SetName )(
5887 ID3D12PipelineState1 * This,
5888 _In_z_ LPCWSTR Name);
5889
5890 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5891 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5892 ID3D12PipelineState1 * This,
5893 REFIID riid,
5894 _COM_Outptr_opt_ void **ppvDevice);
5895
5896 DECLSPEC_XFGVIRT(ID3D12PipelineState, GetCachedBlob)
5897 HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
5898 ID3D12PipelineState1 * This,
5899 _COM_Outptr_ ID3DBlob **ppBlob);
5900
5901 DECLSPEC_XFGVIRT(ID3D12PipelineState1, GetRootSignature)
5902 HRESULT ( STDMETHODCALLTYPE *GetRootSignature )(
5903 ID3D12PipelineState1 * This,
5904 REFIID riid,
5905 _COM_Outptr_ void **ppvRootSignature);
5906
5907 END_INTERFACE
5908 } ID3D12PipelineState1Vtbl;
5909
5910 interface ID3D12PipelineState1
5911 {
5912 CONST_VTBL struct ID3D12PipelineState1Vtbl *lpVtbl;
5913 };
5914
5915
5916
5917#ifdef COBJMACROS
5918
5919
5920#define ID3D12PipelineState1_QueryInterface(This,riid,ppvObject) \
5921 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5922
5923#define ID3D12PipelineState1_AddRef(This) \
5924 ( (This)->lpVtbl -> AddRef(This) )
5925
5926#define ID3D12PipelineState1_Release(This) \
5927 ( (This)->lpVtbl -> Release(This) )
5928
5929
5930#define ID3D12PipelineState1_GetPrivateData(This,guid,pDataSize,pData) \
5931 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5932
5933#define ID3D12PipelineState1_SetPrivateData(This,guid,DataSize,pData) \
5934 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5935
5936#define ID3D12PipelineState1_SetPrivateDataInterface(This,guid,pData) \
5937 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5938
5939#define ID3D12PipelineState1_SetName(This,Name) \
5940 ( (This)->lpVtbl -> SetName(This,Name) )
5941
5942
5943#define ID3D12PipelineState1_GetDevice(This,riid,ppvDevice) \
5944 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5945
5946
5947
5948#define ID3D12PipelineState1_GetCachedBlob(This,ppBlob) \
5949 ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
5950
5951
5952#define ID3D12PipelineState1_GetRootSignature(This,riid,ppvRootSignature) \
5953 ( (This)->lpVtbl -> GetRootSignature(This,riid,ppvRootSignature) )
5954
5955#endif /* COBJMACROS */
5956
5957
5958#endif /* C style interface */
5959
5960
5961
5962
5963#endif /* __ID3D12PipelineState1_INTERFACE_DEFINED__ */
5964
5965
5966#ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5967#define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
5968
5969/* interface ID3D12DescriptorHeap */
5970/* [unique][local][object][uuid] */
5971
5972
5973EXTERN_C const IID IID_ID3D12DescriptorHeap;
5974
5975#if defined(__cplusplus) && !defined(CINTERFACE)
5976
5977 MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
5978 ID3D12DescriptorHeap : public ID3D12Pageable
5979 {
5980 public:
5981#if defined(_MSC_VER) || !defined(_WIN32)
5982 virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
5983#else
5984 virtual D3D12_DESCRIPTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
5985 D3D12_DESCRIPTOR_HEAP_DESC * RetVal) = 0;
5986#endif
5987
5988#if defined(_MSC_VER) || !defined(_WIN32)
5989 virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
5990#else
5991 virtual D3D12_CPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart(
5992 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal) = 0;
5993#endif
5994
5995#if defined(_MSC_VER) || !defined(_WIN32)
5996 virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
5997#else
5998 virtual D3D12_GPU_DESCRIPTOR_HANDLE *STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart(
5999 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal) = 0;
6000#endif
6001
6002 };
6003
6004
6005#else /* C style interface */
6006
6007 typedef struct ID3D12DescriptorHeapVtbl
6008 {
6009 BEGIN_INTERFACE
6010
6011 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6012 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6013 ID3D12DescriptorHeap * This,
6014 REFIID riid,
6015 _COM_Outptr_ void **ppvObject);
6016
6017 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6018 ULONG ( STDMETHODCALLTYPE *AddRef )(
6019 ID3D12DescriptorHeap * This);
6020
6021 DECLSPEC_XFGVIRT(IUnknown, Release)
6022 ULONG ( STDMETHODCALLTYPE *Release )(
6023 ID3D12DescriptorHeap * This);
6024
6025 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6026 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6027 ID3D12DescriptorHeap * This,
6028 _In_ REFGUID guid,
6029 _Inout_ UINT *pDataSize,
6030 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6031
6032 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6033 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6034 ID3D12DescriptorHeap * This,
6035 _In_ REFGUID guid,
6036 _In_ UINT DataSize,
6037 _In_reads_bytes_opt_( DataSize ) const void *pData);
6038
6039 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6040 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6041 ID3D12DescriptorHeap * This,
6042 _In_ REFGUID guid,
6043 _In_opt_ const IUnknown *pData);
6044
6045 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6046 HRESULT ( STDMETHODCALLTYPE *SetName )(
6047 ID3D12DescriptorHeap * This,
6048 _In_z_ LPCWSTR Name);
6049
6050 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6051 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6052 ID3D12DescriptorHeap * This,
6053 REFIID riid,
6054 _COM_Outptr_opt_ void **ppvDevice);
6055
6056 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetDesc)
6057#if !defined(_WIN32)
6058 D3D12_DESCRIPTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
6059 ID3D12DescriptorHeap * This);
6060
6061#else
6062 D3D12_DESCRIPTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
6063 ID3D12DescriptorHeap * This,
6064 D3D12_DESCRIPTOR_HEAP_DESC * RetVal);
6065
6066#endif
6067
6068 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetCPUDescriptorHandleForHeapStart)
6069#if !defined(_WIN32)
6070 D3D12_CPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6071 ID3D12DescriptorHeap * This);
6072
6073#else
6074 D3D12_CPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
6075 ID3D12DescriptorHeap * This,
6076 D3D12_CPU_DESCRIPTOR_HANDLE * RetVal);
6077
6078#endif
6079
6080 DECLSPEC_XFGVIRT(ID3D12DescriptorHeap, GetGPUDescriptorHandleForHeapStart)
6081#if !defined(_WIN32)
6082 D3D12_GPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6083 ID3D12DescriptorHeap * This);
6084
6085#else
6086 D3D12_GPU_DESCRIPTOR_HANDLE *( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
6087 ID3D12DescriptorHeap * This,
6088 D3D12_GPU_DESCRIPTOR_HANDLE * RetVal);
6089
6090#endif
6091
6092 END_INTERFACE
6093 } ID3D12DescriptorHeapVtbl;
6094
6095 interface ID3D12DescriptorHeap
6096 {
6097 CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
6098 };
6099
6100
6101
6102#ifdef COBJMACROS
6103
6104
6105#define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
6106 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6107
6108#define ID3D12DescriptorHeap_AddRef(This) \
6109 ( (This)->lpVtbl -> AddRef(This) )
6110
6111#define ID3D12DescriptorHeap_Release(This) \
6112 ( (This)->lpVtbl -> Release(This) )
6113
6114
6115#define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
6116 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6117
6118#define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
6119 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6120
6121#define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
6122 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6123
6124#define ID3D12DescriptorHeap_SetName(This,Name) \
6125 ( (This)->lpVtbl -> SetName(This,Name) )
6126
6127
6128#define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
6129 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6130
6131
6132#if !defined(_WIN32)
6133
6134#define ID3D12DescriptorHeap_GetDesc(This) \
6135 ( (This)->lpVtbl -> GetDesc(This) )
6136#else
6137#define ID3D12DescriptorHeap_GetDesc(This,RetVal) \
6138 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
6139#endif
6140#if !defined(_WIN32)
6141
6142#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) \
6143 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This) )
6144#else
6145#define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This,RetVal) \
6146 ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This,RetVal) )
6147#endif
6148#if !defined(_WIN32)
6149
6150#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) \
6151 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This) )
6152#else
6153#define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This,RetVal) \
6154 ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This,RetVal) )
6155#endif
6156
6157#endif /* COBJMACROS */
6158
6159
6160#endif /* C style interface */
6161
6162
6163
6164
6165#endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
6166
6167
6168#ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
6169#define __ID3D12QueryHeap_INTERFACE_DEFINED__
6170
6171/* interface ID3D12QueryHeap */
6172/* [unique][local][object][uuid] */
6173
6174
6175EXTERN_C const IID IID_ID3D12QueryHeap;
6176
6177#if defined(__cplusplus) && !defined(CINTERFACE)
6178
6179 MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
6180 ID3D12QueryHeap : public ID3D12Pageable
6181 {
6182 public:
6183 };
6184
6185
6186#else /* C style interface */
6187
6188 typedef struct ID3D12QueryHeapVtbl
6189 {
6190 BEGIN_INTERFACE
6191
6192 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6193 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6194 ID3D12QueryHeap * This,
6195 REFIID riid,
6196 _COM_Outptr_ void **ppvObject);
6197
6198 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6199 ULONG ( STDMETHODCALLTYPE *AddRef )(
6200 ID3D12QueryHeap * This);
6201
6202 DECLSPEC_XFGVIRT(IUnknown, Release)
6203 ULONG ( STDMETHODCALLTYPE *Release )(
6204 ID3D12QueryHeap * This);
6205
6206 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6207 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6208 ID3D12QueryHeap * This,
6209 _In_ REFGUID guid,
6210 _Inout_ UINT *pDataSize,
6211 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6212
6213 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6214 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6215 ID3D12QueryHeap * This,
6216 _In_ REFGUID guid,
6217 _In_ UINT DataSize,
6218 _In_reads_bytes_opt_( DataSize ) const void *pData);
6219
6220 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6221 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6222 ID3D12QueryHeap * This,
6223 _In_ REFGUID guid,
6224 _In_opt_ const IUnknown *pData);
6225
6226 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6227 HRESULT ( STDMETHODCALLTYPE *SetName )(
6228 ID3D12QueryHeap * This,
6229 _In_z_ LPCWSTR Name);
6230
6231 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6232 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6233 ID3D12QueryHeap * This,
6234 REFIID riid,
6235 _COM_Outptr_opt_ void **ppvDevice);
6236
6237 END_INTERFACE
6238 } ID3D12QueryHeapVtbl;
6239
6240 interface ID3D12QueryHeap
6241 {
6242 CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
6243 };
6244
6245
6246
6247#ifdef COBJMACROS
6248
6249
6250#define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
6251 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6252
6253#define ID3D12QueryHeap_AddRef(This) \
6254 ( (This)->lpVtbl -> AddRef(This) )
6255
6256#define ID3D12QueryHeap_Release(This) \
6257 ( (This)->lpVtbl -> Release(This) )
6258
6259
6260#define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
6261 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6262
6263#define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
6264 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6265
6266#define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
6267 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6268
6269#define ID3D12QueryHeap_SetName(This,Name) \
6270 ( (This)->lpVtbl -> SetName(This,Name) )
6271
6272
6273#define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
6274 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6275
6276
6277
6278#endif /* COBJMACROS */
6279
6280
6281#endif /* C style interface */
6282
6283
6284
6285
6286#endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
6287
6288
6289#ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
6290#define __ID3D12CommandSignature_INTERFACE_DEFINED__
6291
6292/* interface ID3D12CommandSignature */
6293/* [unique][local][object][uuid] */
6294
6295
6296EXTERN_C const IID IID_ID3D12CommandSignature;
6297
6298#if defined(__cplusplus) && !defined(CINTERFACE)
6299
6300 MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
6301 ID3D12CommandSignature : public ID3D12Pageable
6302 {
6303 public:
6304 };
6305
6306
6307#else /* C style interface */
6308
6309 typedef struct ID3D12CommandSignatureVtbl
6310 {
6311 BEGIN_INTERFACE
6312
6313 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6314 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6315 ID3D12CommandSignature * This,
6316 REFIID riid,
6317 _COM_Outptr_ void **ppvObject);
6318
6319 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6320 ULONG ( STDMETHODCALLTYPE *AddRef )(
6321 ID3D12CommandSignature * This);
6322
6323 DECLSPEC_XFGVIRT(IUnknown, Release)
6324 ULONG ( STDMETHODCALLTYPE *Release )(
6325 ID3D12CommandSignature * This);
6326
6327 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6328 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6329 ID3D12CommandSignature * This,
6330 _In_ REFGUID guid,
6331 _Inout_ UINT *pDataSize,
6332 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6333
6334 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6335 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6336 ID3D12CommandSignature * This,
6337 _In_ REFGUID guid,
6338 _In_ UINT DataSize,
6339 _In_reads_bytes_opt_( DataSize ) const void *pData);
6340
6341 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6342 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6343 ID3D12CommandSignature * This,
6344 _In_ REFGUID guid,
6345 _In_opt_ const IUnknown *pData);
6346
6347 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6348 HRESULT ( STDMETHODCALLTYPE *SetName )(
6349 ID3D12CommandSignature * This,
6350 _In_z_ LPCWSTR Name);
6351
6352 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6353 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6354 ID3D12CommandSignature * This,
6355 REFIID riid,
6356 _COM_Outptr_opt_ void **ppvDevice);
6357
6358 END_INTERFACE
6359 } ID3D12CommandSignatureVtbl;
6360
6361 interface ID3D12CommandSignature
6362 {
6363 CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
6364 };
6365
6366
6367
6368#ifdef COBJMACROS
6369
6370
6371#define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
6372 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6373
6374#define ID3D12CommandSignature_AddRef(This) \
6375 ( (This)->lpVtbl -> AddRef(This) )
6376
6377#define ID3D12CommandSignature_Release(This) \
6378 ( (This)->lpVtbl -> Release(This) )
6379
6380
6381#define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
6382 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6383
6384#define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
6385 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6386
6387#define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
6388 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6389
6390#define ID3D12CommandSignature_SetName(This,Name) \
6391 ( (This)->lpVtbl -> SetName(This,Name) )
6392
6393
6394#define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
6395 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6396
6397
6398
6399#endif /* COBJMACROS */
6400
6401
6402#endif /* C style interface */
6403
6404
6405
6406
6407#endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
6408
6409
6410#ifndef __ID3D12CommandList_INTERFACE_DEFINED__
6411#define __ID3D12CommandList_INTERFACE_DEFINED__
6412
6413/* interface ID3D12CommandList */
6414/* [unique][local][object][uuid] */
6415
6416
6417EXTERN_C const IID IID_ID3D12CommandList;
6418
6419#if defined(__cplusplus) && !defined(CINTERFACE)
6420
6421 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
6422 ID3D12CommandList : public ID3D12DeviceChild
6423 {
6424 public:
6425 virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
6426
6427 };
6428
6429
6430#else /* C style interface */
6431
6432 typedef struct ID3D12CommandListVtbl
6433 {
6434 BEGIN_INTERFACE
6435
6436 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6437 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6438 ID3D12CommandList * This,
6439 REFIID riid,
6440 _COM_Outptr_ void **ppvObject);
6441
6442 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6443 ULONG ( STDMETHODCALLTYPE *AddRef )(
6444 ID3D12CommandList * This);
6445
6446 DECLSPEC_XFGVIRT(IUnknown, Release)
6447 ULONG ( STDMETHODCALLTYPE *Release )(
6448 ID3D12CommandList * This);
6449
6450 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6451 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6452 ID3D12CommandList * This,
6453 _In_ REFGUID guid,
6454 _Inout_ UINT *pDataSize,
6455 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6456
6457 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6458 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6459 ID3D12CommandList * This,
6460 _In_ REFGUID guid,
6461 _In_ UINT DataSize,
6462 _In_reads_bytes_opt_( DataSize ) const void *pData);
6463
6464 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6465 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6466 ID3D12CommandList * This,
6467 _In_ REFGUID guid,
6468 _In_opt_ const IUnknown *pData);
6469
6470 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6471 HRESULT ( STDMETHODCALLTYPE *SetName )(
6472 ID3D12CommandList * This,
6473 _In_z_ LPCWSTR Name);
6474
6475 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6476 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6477 ID3D12CommandList * This,
6478 REFIID riid,
6479 _COM_Outptr_opt_ void **ppvDevice);
6480
6481 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6482 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6483 ID3D12CommandList * This);
6484
6485 END_INTERFACE
6486 } ID3D12CommandListVtbl;
6487
6488 interface ID3D12CommandList
6489 {
6490 CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
6491 };
6492
6493
6494
6495#ifdef COBJMACROS
6496
6497
6498#define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
6499 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6500
6501#define ID3D12CommandList_AddRef(This) \
6502 ( (This)->lpVtbl -> AddRef(This) )
6503
6504#define ID3D12CommandList_Release(This) \
6505 ( (This)->lpVtbl -> Release(This) )
6506
6507
6508#define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
6509 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6510
6511#define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
6512 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6513
6514#define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
6515 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6516
6517#define ID3D12CommandList_SetName(This,Name) \
6518 ( (This)->lpVtbl -> SetName(This,Name) )
6519
6520
6521#define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
6522 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6523
6524
6525#define ID3D12CommandList_GetType(This) \
6526 ( (This)->lpVtbl -> GetType(This) )
6527
6528#endif /* COBJMACROS */
6529
6530
6531#endif /* C style interface */
6532
6533
6534
6535
6536#endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
6537
6538
6539#ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6540#define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
6541
6542/* interface ID3D12GraphicsCommandList */
6543/* [unique][local][object][uuid] */
6544
6545
6546EXTERN_C const IID IID_ID3D12GraphicsCommandList;
6547
6548#if defined(__cplusplus) && !defined(CINTERFACE)
6549
6550 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
6551 ID3D12GraphicsCommandList : public ID3D12CommandList
6552 {
6553 public:
6554 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
6555
6556 virtual HRESULT STDMETHODCALLTYPE Reset(
6557 _In_ ID3D12CommandAllocator *pAllocator,
6558 _In_opt_ ID3D12PipelineState *pInitialState) = 0;
6559
6560 virtual void STDMETHODCALLTYPE ClearState(
6561 _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
6562
6563 virtual void STDMETHODCALLTYPE DrawInstanced(
6564 _In_ UINT VertexCountPerInstance,
6565 _In_ UINT InstanceCount,
6566 _In_ UINT StartVertexLocation,
6567 _In_ UINT StartInstanceLocation) = 0;
6568
6569 virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
6570 _In_ UINT IndexCountPerInstance,
6571 _In_ UINT InstanceCount,
6572 _In_ UINT StartIndexLocation,
6573 _In_ INT BaseVertexLocation,
6574 _In_ UINT StartInstanceLocation) = 0;
6575
6576 virtual void STDMETHODCALLTYPE Dispatch(
6577 _In_ UINT ThreadGroupCountX,
6578 _In_ UINT ThreadGroupCountY,
6579 _In_ UINT ThreadGroupCountZ) = 0;
6580
6581 virtual void STDMETHODCALLTYPE CopyBufferRegion(
6582 _In_ ID3D12Resource *pDstBuffer,
6583 UINT64 DstOffset,
6584 _In_ ID3D12Resource *pSrcBuffer,
6585 UINT64 SrcOffset,
6586 UINT64 NumBytes) = 0;
6587
6588 virtual void STDMETHODCALLTYPE CopyTextureRegion(
6589 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6590 UINT DstX,
6591 UINT DstY,
6592 UINT DstZ,
6593 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6594 _In_opt_ const D3D12_BOX *pSrcBox) = 0;
6595
6596 virtual void STDMETHODCALLTYPE CopyResource(
6597 _In_ ID3D12Resource *pDstResource,
6598 _In_ ID3D12Resource *pSrcResource) = 0;
6599
6600 virtual void STDMETHODCALLTYPE CopyTiles(
6601 _In_ ID3D12Resource *pTiledResource,
6602 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6603 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6604 _In_ ID3D12Resource *pBuffer,
6605 UINT64 BufferStartOffsetInBytes,
6606 D3D12_TILE_COPY_FLAGS Flags) = 0;
6607
6608 virtual void STDMETHODCALLTYPE ResolveSubresource(
6609 _In_ ID3D12Resource *pDstResource,
6610 _In_ UINT DstSubresource,
6611 _In_ ID3D12Resource *pSrcResource,
6612 _In_ UINT SrcSubresource,
6613 _In_ DXGI_FORMAT Format) = 0;
6614
6615 virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
6616 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
6617
6618 virtual void STDMETHODCALLTYPE RSSetViewports(
6619 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6620 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
6621
6622 virtual void STDMETHODCALLTYPE RSSetScissorRects(
6623 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6624 _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
6625
6626 virtual void STDMETHODCALLTYPE OMSetBlendFactor(
6627 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]) = 0;
6628
6629 virtual void STDMETHODCALLTYPE OMSetStencilRef(
6630 _In_ UINT StencilRef) = 0;
6631
6632 virtual void STDMETHODCALLTYPE SetPipelineState(
6633 _In_ ID3D12PipelineState *pPipelineState) = 0;
6634
6635 virtual void STDMETHODCALLTYPE ResourceBarrier(
6636 _In_ UINT NumBarriers,
6637 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
6638
6639 virtual void STDMETHODCALLTYPE ExecuteBundle(
6640 _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
6641
6642 virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
6643 _In_ UINT NumDescriptorHeaps,
6644 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
6645
6646 virtual void STDMETHODCALLTYPE SetComputeRootSignature(
6647 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6648
6649 virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
6650 _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
6651
6652 virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
6653 _In_ UINT RootParameterIndex,
6654 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6655
6656 virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
6657 _In_ UINT RootParameterIndex,
6658 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
6659
6660 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
6661 _In_ UINT RootParameterIndex,
6662 _In_ UINT SrcData,
6663 _In_ UINT DestOffsetIn32BitValues) = 0;
6664
6665 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
6666 _In_ UINT RootParameterIndex,
6667 _In_ UINT SrcData,
6668 _In_ UINT DestOffsetIn32BitValues) = 0;
6669
6670 virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
6671 _In_ UINT RootParameterIndex,
6672 _In_ UINT Num32BitValuesToSet,
6673 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6674 _In_ UINT DestOffsetIn32BitValues) = 0;
6675
6676 virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
6677 _In_ UINT RootParameterIndex,
6678 _In_ UINT Num32BitValuesToSet,
6679 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
6680 _In_ UINT DestOffsetIn32BitValues) = 0;
6681
6682 virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
6683 _In_ UINT RootParameterIndex,
6684 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6685
6686 virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
6687 _In_ UINT RootParameterIndex,
6688 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6689
6690 virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
6691 _In_ UINT RootParameterIndex,
6692 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6693
6694 virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
6695 _In_ UINT RootParameterIndex,
6696 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6697
6698 virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
6699 _In_ UINT RootParameterIndex,
6700 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6701
6702 virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
6703 _In_ UINT RootParameterIndex,
6704 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
6705
6706 virtual void STDMETHODCALLTYPE IASetIndexBuffer(
6707 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
6708
6709 virtual void STDMETHODCALLTYPE IASetVertexBuffers(
6710 _In_ UINT StartSlot,
6711 _In_ UINT NumViews,
6712 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
6713
6714 virtual void STDMETHODCALLTYPE SOSetTargets(
6715 _In_ UINT StartSlot,
6716 _In_ UINT NumViews,
6717 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
6718
6719 virtual void STDMETHODCALLTYPE OMSetRenderTargets(
6720 _In_ UINT NumRenderTargetDescriptors,
6721 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
6722 _In_ BOOL RTsSingleHandleToDescriptorRange,
6723 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
6724
6725 virtual void STDMETHODCALLTYPE ClearDepthStencilView(
6726 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
6727 _In_ D3D12_CLEAR_FLAGS ClearFlags,
6728 _In_ FLOAT Depth,
6729 _In_ UINT8 Stencil,
6730 _In_ UINT NumRects,
6731 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6732
6733 virtual void STDMETHODCALLTYPE ClearRenderTargetView(
6734 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
6735 _In_ const FLOAT ColorRGBA[ 4 ],
6736 _In_ UINT NumRects,
6737 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6738
6739 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
6740 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6741 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6742 _In_ ID3D12Resource *pResource,
6743 _In_ const UINT Values[ 4 ],
6744 _In_ UINT NumRects,
6745 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6746
6747 virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
6748 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
6749 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
6750 _In_ ID3D12Resource *pResource,
6751 _In_ const FLOAT Values[ 4 ],
6752 _In_ UINT NumRects,
6753 _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
6754
6755 virtual void STDMETHODCALLTYPE DiscardResource(
6756 _In_ ID3D12Resource *pResource,
6757 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
6758
6759 virtual void STDMETHODCALLTYPE BeginQuery(
6760 _In_ ID3D12QueryHeap *pQueryHeap,
6761 _In_ D3D12_QUERY_TYPE Type,
6762 _In_ UINT Index) = 0;
6763
6764 virtual void STDMETHODCALLTYPE EndQuery(
6765 _In_ ID3D12QueryHeap *pQueryHeap,
6766 _In_ D3D12_QUERY_TYPE Type,
6767 _In_ UINT Index) = 0;
6768
6769 virtual void STDMETHODCALLTYPE ResolveQueryData(
6770 _In_ ID3D12QueryHeap *pQueryHeap,
6771 _In_ D3D12_QUERY_TYPE Type,
6772 _In_ UINT StartIndex,
6773 _In_ UINT NumQueries,
6774 _In_ ID3D12Resource *pDestinationBuffer,
6775 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
6776
6777 virtual void STDMETHODCALLTYPE SetPredication(
6778 _In_opt_ ID3D12Resource *pBuffer,
6779 _In_ UINT64 AlignedBufferOffset,
6780 _In_ D3D12_PREDICATION_OP Operation) = 0;
6781
6782 virtual void STDMETHODCALLTYPE SetMarker(
6783 UINT Metadata,
6784 _In_reads_bytes_opt_(Size) const void *pData,
6785 UINT Size) = 0;
6786
6787 virtual void STDMETHODCALLTYPE BeginEvent(
6788 UINT Metadata,
6789 _In_reads_bytes_opt_(Size) const void *pData,
6790 UINT Size) = 0;
6791
6792 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
6793
6794 virtual void STDMETHODCALLTYPE ExecuteIndirect(
6795 _In_ ID3D12CommandSignature *pCommandSignature,
6796 _In_ UINT MaxCommandCount,
6797 _In_ ID3D12Resource *pArgumentBuffer,
6798 _In_ UINT64 ArgumentBufferOffset,
6799 _In_opt_ ID3D12Resource *pCountBuffer,
6800 _In_ UINT64 CountBufferOffset) = 0;
6801
6802 };
6803
6804
6805#else /* C style interface */
6806
6807 typedef struct ID3D12GraphicsCommandListVtbl
6808 {
6809 BEGIN_INTERFACE
6810
6811 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6812 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6813 ID3D12GraphicsCommandList * This,
6814 REFIID riid,
6815 _COM_Outptr_ void **ppvObject);
6816
6817 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6818 ULONG ( STDMETHODCALLTYPE *AddRef )(
6819 ID3D12GraphicsCommandList * This);
6820
6821 DECLSPEC_XFGVIRT(IUnknown, Release)
6822 ULONG ( STDMETHODCALLTYPE *Release )(
6823 ID3D12GraphicsCommandList * This);
6824
6825 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6826 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6827 ID3D12GraphicsCommandList * This,
6828 _In_ REFGUID guid,
6829 _Inout_ UINT *pDataSize,
6830 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6831
6832 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6833 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6834 ID3D12GraphicsCommandList * This,
6835 _In_ REFGUID guid,
6836 _In_ UINT DataSize,
6837 _In_reads_bytes_opt_( DataSize ) const void *pData);
6838
6839 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6840 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6841 ID3D12GraphicsCommandList * This,
6842 _In_ REFGUID guid,
6843 _In_opt_ const IUnknown *pData);
6844
6845 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6846 HRESULT ( STDMETHODCALLTYPE *SetName )(
6847 ID3D12GraphicsCommandList * This,
6848 _In_z_ LPCWSTR Name);
6849
6850 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6851 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6852 ID3D12GraphicsCommandList * This,
6853 REFIID riid,
6854 _COM_Outptr_opt_ void **ppvDevice);
6855
6856 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6857 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6858 ID3D12GraphicsCommandList * This);
6859
6860 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
6861 HRESULT ( STDMETHODCALLTYPE *Close )(
6862 ID3D12GraphicsCommandList * This);
6863
6864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
6865 HRESULT ( STDMETHODCALLTYPE *Reset )(
6866 ID3D12GraphicsCommandList * This,
6867 _In_ ID3D12CommandAllocator *pAllocator,
6868 _In_opt_ ID3D12PipelineState *pInitialState);
6869
6870 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
6871 void ( STDMETHODCALLTYPE *ClearState )(
6872 ID3D12GraphicsCommandList * This,
6873 _In_opt_ ID3D12PipelineState *pPipelineState);
6874
6875 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
6876 void ( STDMETHODCALLTYPE *DrawInstanced )(
6877 ID3D12GraphicsCommandList * This,
6878 _In_ UINT VertexCountPerInstance,
6879 _In_ UINT InstanceCount,
6880 _In_ UINT StartVertexLocation,
6881 _In_ UINT StartInstanceLocation);
6882
6883 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
6884 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
6885 ID3D12GraphicsCommandList * This,
6886 _In_ UINT IndexCountPerInstance,
6887 _In_ UINT InstanceCount,
6888 _In_ UINT StartIndexLocation,
6889 _In_ INT BaseVertexLocation,
6890 _In_ UINT StartInstanceLocation);
6891
6892 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
6893 void ( STDMETHODCALLTYPE *Dispatch )(
6894 ID3D12GraphicsCommandList * This,
6895 _In_ UINT ThreadGroupCountX,
6896 _In_ UINT ThreadGroupCountY,
6897 _In_ UINT ThreadGroupCountZ);
6898
6899 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
6900 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
6901 ID3D12GraphicsCommandList * This,
6902 _In_ ID3D12Resource *pDstBuffer,
6903 UINT64 DstOffset,
6904 _In_ ID3D12Resource *pSrcBuffer,
6905 UINT64 SrcOffset,
6906 UINT64 NumBytes);
6907
6908 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
6909 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
6910 ID3D12GraphicsCommandList * This,
6911 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
6912 UINT DstX,
6913 UINT DstY,
6914 UINT DstZ,
6915 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
6916 _In_opt_ const D3D12_BOX *pSrcBox);
6917
6918 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
6919 void ( STDMETHODCALLTYPE *CopyResource )(
6920 ID3D12GraphicsCommandList * This,
6921 _In_ ID3D12Resource *pDstResource,
6922 _In_ ID3D12Resource *pSrcResource);
6923
6924 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
6925 void ( STDMETHODCALLTYPE *CopyTiles )(
6926 ID3D12GraphicsCommandList * This,
6927 _In_ ID3D12Resource *pTiledResource,
6928 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
6929 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
6930 _In_ ID3D12Resource *pBuffer,
6931 UINT64 BufferStartOffsetInBytes,
6932 D3D12_TILE_COPY_FLAGS Flags);
6933
6934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
6935 void ( STDMETHODCALLTYPE *ResolveSubresource )(
6936 ID3D12GraphicsCommandList * This,
6937 _In_ ID3D12Resource *pDstResource,
6938 _In_ UINT DstSubresource,
6939 _In_ ID3D12Resource *pSrcResource,
6940 _In_ UINT SrcSubresource,
6941 _In_ DXGI_FORMAT Format);
6942
6943 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
6944 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
6945 ID3D12GraphicsCommandList * This,
6946 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
6947
6948 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
6949 void ( STDMETHODCALLTYPE *RSSetViewports )(
6950 ID3D12GraphicsCommandList * This,
6951 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
6952 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
6953
6954 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
6955 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
6956 ID3D12GraphicsCommandList * This,
6957 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
6958 _In_reads_( NumRects) const D3D12_RECT *pRects);
6959
6960 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
6961 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
6962 ID3D12GraphicsCommandList * This,
6963 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
6964
6965 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
6966 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
6967 ID3D12GraphicsCommandList * This,
6968 _In_ UINT StencilRef);
6969
6970 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
6971 void ( STDMETHODCALLTYPE *SetPipelineState )(
6972 ID3D12GraphicsCommandList * This,
6973 _In_ ID3D12PipelineState *pPipelineState);
6974
6975 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
6976 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6977 ID3D12GraphicsCommandList * This,
6978 _In_ UINT NumBarriers,
6979 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6980
6981 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
6982 void ( STDMETHODCALLTYPE *ExecuteBundle )(
6983 ID3D12GraphicsCommandList * This,
6984 _In_ ID3D12GraphicsCommandList *pCommandList);
6985
6986 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
6987 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
6988 ID3D12GraphicsCommandList * This,
6989 _In_ UINT NumDescriptorHeaps,
6990 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
6991
6992 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
6993 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
6994 ID3D12GraphicsCommandList * This,
6995 _In_opt_ ID3D12RootSignature *pRootSignature);
6996
6997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
6998 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
6999 ID3D12GraphicsCommandList * This,
7000 _In_opt_ ID3D12RootSignature *pRootSignature);
7001
7002 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7003 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7004 ID3D12GraphicsCommandList * This,
7005 _In_ UINT RootParameterIndex,
7006 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7007
7008 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7009 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7010 ID3D12GraphicsCommandList * This,
7011 _In_ UINT RootParameterIndex,
7012 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7013
7014 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7015 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7016 ID3D12GraphicsCommandList * This,
7017 _In_ UINT RootParameterIndex,
7018 _In_ UINT SrcData,
7019 _In_ UINT DestOffsetIn32BitValues);
7020
7021 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7022 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7023 ID3D12GraphicsCommandList * This,
7024 _In_ UINT RootParameterIndex,
7025 _In_ UINT SrcData,
7026 _In_ UINT DestOffsetIn32BitValues);
7027
7028 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7029 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7030 ID3D12GraphicsCommandList * This,
7031 _In_ UINT RootParameterIndex,
7032 _In_ UINT Num32BitValuesToSet,
7033 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7034 _In_ UINT DestOffsetIn32BitValues);
7035
7036 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7037 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7038 ID3D12GraphicsCommandList * This,
7039 _In_ UINT RootParameterIndex,
7040 _In_ UINT Num32BitValuesToSet,
7041 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7042 _In_ UINT DestOffsetIn32BitValues);
7043
7044 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7045 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7046 ID3D12GraphicsCommandList * This,
7047 _In_ UINT RootParameterIndex,
7048 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7049
7050 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7051 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7052 ID3D12GraphicsCommandList * This,
7053 _In_ UINT RootParameterIndex,
7054 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7055
7056 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7057 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7058 ID3D12GraphicsCommandList * This,
7059 _In_ UINT RootParameterIndex,
7060 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7061
7062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7063 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7064 ID3D12GraphicsCommandList * This,
7065 _In_ UINT RootParameterIndex,
7066 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7067
7068 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7069 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7070 ID3D12GraphicsCommandList * This,
7071 _In_ UINT RootParameterIndex,
7072 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7073
7074 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7075 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7076 ID3D12GraphicsCommandList * This,
7077 _In_ UINT RootParameterIndex,
7078 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7079
7080 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7081 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7082 ID3D12GraphicsCommandList * This,
7083 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7084
7085 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7086 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7087 ID3D12GraphicsCommandList * This,
7088 _In_ UINT StartSlot,
7089 _In_ UINT NumViews,
7090 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7091
7092 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7093 void ( STDMETHODCALLTYPE *SOSetTargets )(
7094 ID3D12GraphicsCommandList * This,
7095 _In_ UINT StartSlot,
7096 _In_ UINT NumViews,
7097 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7098
7099 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7100 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7101 ID3D12GraphicsCommandList * This,
7102 _In_ UINT NumRenderTargetDescriptors,
7103 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7104 _In_ BOOL RTsSingleHandleToDescriptorRange,
7105 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7106
7107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7108 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7109 ID3D12GraphicsCommandList * This,
7110 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7111 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7112 _In_ FLOAT Depth,
7113 _In_ UINT8 Stencil,
7114 _In_ UINT NumRects,
7115 _In_reads_(NumRects) const D3D12_RECT *pRects);
7116
7117 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7118 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7119 ID3D12GraphicsCommandList * This,
7120 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7121 _In_ const FLOAT ColorRGBA[ 4 ],
7122 _In_ UINT NumRects,
7123 _In_reads_(NumRects) const D3D12_RECT *pRects);
7124
7125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7126 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7127 ID3D12GraphicsCommandList * This,
7128 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7129 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7130 _In_ ID3D12Resource *pResource,
7131 _In_ const UINT Values[ 4 ],
7132 _In_ UINT NumRects,
7133 _In_reads_(NumRects) const D3D12_RECT *pRects);
7134
7135 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7136 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7137 ID3D12GraphicsCommandList * This,
7138 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7139 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7140 _In_ ID3D12Resource *pResource,
7141 _In_ const FLOAT Values[ 4 ],
7142 _In_ UINT NumRects,
7143 _In_reads_(NumRects) const D3D12_RECT *pRects);
7144
7145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7146 void ( STDMETHODCALLTYPE *DiscardResource )(
7147 ID3D12GraphicsCommandList * This,
7148 _In_ ID3D12Resource *pResource,
7149 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7150
7151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7152 void ( STDMETHODCALLTYPE *BeginQuery )(
7153 ID3D12GraphicsCommandList * This,
7154 _In_ ID3D12QueryHeap *pQueryHeap,
7155 _In_ D3D12_QUERY_TYPE Type,
7156 _In_ UINT Index);
7157
7158 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7159 void ( STDMETHODCALLTYPE *EndQuery )(
7160 ID3D12GraphicsCommandList * This,
7161 _In_ ID3D12QueryHeap *pQueryHeap,
7162 _In_ D3D12_QUERY_TYPE Type,
7163 _In_ UINT Index);
7164
7165 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7166 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7167 ID3D12GraphicsCommandList * This,
7168 _In_ ID3D12QueryHeap *pQueryHeap,
7169 _In_ D3D12_QUERY_TYPE Type,
7170 _In_ UINT StartIndex,
7171 _In_ UINT NumQueries,
7172 _In_ ID3D12Resource *pDestinationBuffer,
7173 _In_ UINT64 AlignedDestinationBufferOffset);
7174
7175 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7176 void ( STDMETHODCALLTYPE *SetPredication )(
7177 ID3D12GraphicsCommandList * This,
7178 _In_opt_ ID3D12Resource *pBuffer,
7179 _In_ UINT64 AlignedBufferOffset,
7180 _In_ D3D12_PREDICATION_OP Operation);
7181
7182 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7183 void ( STDMETHODCALLTYPE *SetMarker )(
7184 ID3D12GraphicsCommandList * This,
7185 UINT Metadata,
7186 _In_reads_bytes_opt_(Size) const void *pData,
7187 UINT Size);
7188
7189 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7190 void ( STDMETHODCALLTYPE *BeginEvent )(
7191 ID3D12GraphicsCommandList * This,
7192 UINT Metadata,
7193 _In_reads_bytes_opt_(Size) const void *pData,
7194 UINT Size);
7195
7196 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7197 void ( STDMETHODCALLTYPE *EndEvent )(
7198 ID3D12GraphicsCommandList * This);
7199
7200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7201 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7202 ID3D12GraphicsCommandList * This,
7203 _In_ ID3D12CommandSignature *pCommandSignature,
7204 _In_ UINT MaxCommandCount,
7205 _In_ ID3D12Resource *pArgumentBuffer,
7206 _In_ UINT64 ArgumentBufferOffset,
7207 _In_opt_ ID3D12Resource *pCountBuffer,
7208 _In_ UINT64 CountBufferOffset);
7209
7210 END_INTERFACE
7211 } ID3D12GraphicsCommandListVtbl;
7212
7213 interface ID3D12GraphicsCommandList
7214 {
7215 CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
7216 };
7217
7218
7219
7220#ifdef COBJMACROS
7221
7222
7223#define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
7224 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7225
7226#define ID3D12GraphicsCommandList_AddRef(This) \
7227 ( (This)->lpVtbl -> AddRef(This) )
7228
7229#define ID3D12GraphicsCommandList_Release(This) \
7230 ( (This)->lpVtbl -> Release(This) )
7231
7232
7233#define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
7234 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7235
7236#define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
7237 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7238
7239#define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
7240 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7241
7242#define ID3D12GraphicsCommandList_SetName(This,Name) \
7243 ( (This)->lpVtbl -> SetName(This,Name) )
7244
7245
7246#define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
7247 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7248
7249
7250#define ID3D12GraphicsCommandList_GetType(This) \
7251 ( (This)->lpVtbl -> GetType(This) )
7252
7253
7254#define ID3D12GraphicsCommandList_Close(This) \
7255 ( (This)->lpVtbl -> Close(This) )
7256
7257#define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
7258 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7259
7260#define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
7261 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7262
7263#define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7264 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7265
7266#define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7267 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7268
7269#define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7270 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7271
7272#define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7273 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7274
7275#define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
7276 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
7277
7278#define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
7279 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
7280
7281#define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
7282 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
7283
7284#define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
7285 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
7286
7287#define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
7288 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
7289
7290#define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
7291 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
7292
7293#define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
7294 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
7295
7296#define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
7297 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
7298
7299#define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
7300 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
7301
7302#define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
7303 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
7304
7305#define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
7306 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
7307
7308#define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
7309 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
7310
7311#define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
7312 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
7313
7314#define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
7315 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
7316
7317#define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
7318 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
7319
7320#define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7321 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7322
7323#define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
7324 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
7325
7326#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7327 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7328
7329#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
7330 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
7331
7332#define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7333 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7334
7335#define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
7336 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
7337
7338#define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7339 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7340
7341#define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
7342 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
7343
7344#define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7345 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7346
7347#define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
7348 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
7349
7350#define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7351 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7352
7353#define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
7354 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
7355
7356#define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
7357 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
7358
7359#define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
7360 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
7361
7362#define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
7363 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
7364
7365#define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
7366 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
7367
7368#define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
7369 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
7370
7371#define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
7372 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
7373
7374#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7375 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7376
7377#define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
7378 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
7379
7380#define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
7381 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
7382
7383#define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
7384 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
7385
7386#define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
7387 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
7388
7389#define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
7390 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
7391
7392#define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
7393 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
7394
7395#define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
7396 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
7397
7398#define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
7399 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
7400
7401#define ID3D12GraphicsCommandList_EndEvent(This) \
7402 ( (This)->lpVtbl -> EndEvent(This) )
7403
7404#define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
7405 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
7406
7407#endif /* COBJMACROS */
7408
7409
7410#endif /* C style interface */
7411
7412
7413
7414
7415#endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
7416
7417
7418#ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7419#define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
7420
7421/* interface ID3D12GraphicsCommandList1 */
7422/* [unique][local][object][uuid] */
7423
7424
7425EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
7426
7427#if defined(__cplusplus) && !defined(CINTERFACE)
7428
7429 MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
7430 ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
7431 {
7432 public:
7433 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
7434 _In_ ID3D12Resource *pDstBuffer,
7435 UINT64 DstOffset,
7436 _In_ ID3D12Resource *pSrcBuffer,
7437 UINT64 SrcOffset,
7438 UINT Dependencies,
7439 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7440 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7441
7442 virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
7443 _In_ ID3D12Resource *pDstBuffer,
7444 UINT64 DstOffset,
7445 _In_ ID3D12Resource *pSrcBuffer,
7446 UINT64 SrcOffset,
7447 UINT Dependencies,
7448 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7449 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
7450
7451 virtual void STDMETHODCALLTYPE OMSetDepthBounds(
7452 _In_ FLOAT Min,
7453 _In_ FLOAT Max) = 0;
7454
7455 virtual void STDMETHODCALLTYPE SetSamplePositions(
7456 _In_ UINT NumSamplesPerPixel,
7457 _In_ UINT NumPixels,
7458 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
7459
7460 virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
7461 _In_ ID3D12Resource *pDstResource,
7462 _In_ UINT DstSubresource,
7463 _In_ UINT DstX,
7464 _In_ UINT DstY,
7465 _In_ ID3D12Resource *pSrcResource,
7466 _In_ UINT SrcSubresource,
7467 _In_opt_ D3D12_RECT *pSrcRect,
7468 _In_ DXGI_FORMAT Format,
7469 _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
7470
7471 virtual void STDMETHODCALLTYPE SetViewInstanceMask(
7472 _In_ UINT Mask) = 0;
7473
7474 };
7475
7476
7477#else /* C style interface */
7478
7479 typedef struct ID3D12GraphicsCommandList1Vtbl
7480 {
7481 BEGIN_INTERFACE
7482
7483 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7484 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7485 ID3D12GraphicsCommandList1 * This,
7486 REFIID riid,
7487 _COM_Outptr_ void **ppvObject);
7488
7489 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7490 ULONG ( STDMETHODCALLTYPE *AddRef )(
7491 ID3D12GraphicsCommandList1 * This);
7492
7493 DECLSPEC_XFGVIRT(IUnknown, Release)
7494 ULONG ( STDMETHODCALLTYPE *Release )(
7495 ID3D12GraphicsCommandList1 * This);
7496
7497 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7498 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7499 ID3D12GraphicsCommandList1 * This,
7500 _In_ REFGUID guid,
7501 _Inout_ UINT *pDataSize,
7502 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7503
7504 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7505 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7506 ID3D12GraphicsCommandList1 * This,
7507 _In_ REFGUID guid,
7508 _In_ UINT DataSize,
7509 _In_reads_bytes_opt_( DataSize ) const void *pData);
7510
7511 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7512 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7513 ID3D12GraphicsCommandList1 * This,
7514 _In_ REFGUID guid,
7515 _In_opt_ const IUnknown *pData);
7516
7517 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7518 HRESULT ( STDMETHODCALLTYPE *SetName )(
7519 ID3D12GraphicsCommandList1 * This,
7520 _In_z_ LPCWSTR Name);
7521
7522 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7523 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7524 ID3D12GraphicsCommandList1 * This,
7525 REFIID riid,
7526 _COM_Outptr_opt_ void **ppvDevice);
7527
7528 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
7529 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
7530 ID3D12GraphicsCommandList1 * This);
7531
7532 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
7533 HRESULT ( STDMETHODCALLTYPE *Close )(
7534 ID3D12GraphicsCommandList1 * This);
7535
7536 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
7537 HRESULT ( STDMETHODCALLTYPE *Reset )(
7538 ID3D12GraphicsCommandList1 * This,
7539 _In_ ID3D12CommandAllocator *pAllocator,
7540 _In_opt_ ID3D12PipelineState *pInitialState);
7541
7542 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
7543 void ( STDMETHODCALLTYPE *ClearState )(
7544 ID3D12GraphicsCommandList1 * This,
7545 _In_opt_ ID3D12PipelineState *pPipelineState);
7546
7547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
7548 void ( STDMETHODCALLTYPE *DrawInstanced )(
7549 ID3D12GraphicsCommandList1 * This,
7550 _In_ UINT VertexCountPerInstance,
7551 _In_ UINT InstanceCount,
7552 _In_ UINT StartVertexLocation,
7553 _In_ UINT StartInstanceLocation);
7554
7555 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
7556 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
7557 ID3D12GraphicsCommandList1 * This,
7558 _In_ UINT IndexCountPerInstance,
7559 _In_ UINT InstanceCount,
7560 _In_ UINT StartIndexLocation,
7561 _In_ INT BaseVertexLocation,
7562 _In_ UINT StartInstanceLocation);
7563
7564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
7565 void ( STDMETHODCALLTYPE *Dispatch )(
7566 ID3D12GraphicsCommandList1 * This,
7567 _In_ UINT ThreadGroupCountX,
7568 _In_ UINT ThreadGroupCountY,
7569 _In_ UINT ThreadGroupCountZ);
7570
7571 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
7572 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
7573 ID3D12GraphicsCommandList1 * This,
7574 _In_ ID3D12Resource *pDstBuffer,
7575 UINT64 DstOffset,
7576 _In_ ID3D12Resource *pSrcBuffer,
7577 UINT64 SrcOffset,
7578 UINT64 NumBytes);
7579
7580 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
7581 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
7582 ID3D12GraphicsCommandList1 * This,
7583 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
7584 UINT DstX,
7585 UINT DstY,
7586 UINT DstZ,
7587 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
7588 _In_opt_ const D3D12_BOX *pSrcBox);
7589
7590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
7591 void ( STDMETHODCALLTYPE *CopyResource )(
7592 ID3D12GraphicsCommandList1 * This,
7593 _In_ ID3D12Resource *pDstResource,
7594 _In_ ID3D12Resource *pSrcResource);
7595
7596 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
7597 void ( STDMETHODCALLTYPE *CopyTiles )(
7598 ID3D12GraphicsCommandList1 * This,
7599 _In_ ID3D12Resource *pTiledResource,
7600 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
7601 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
7602 _In_ ID3D12Resource *pBuffer,
7603 UINT64 BufferStartOffsetInBytes,
7604 D3D12_TILE_COPY_FLAGS Flags);
7605
7606 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
7607 void ( STDMETHODCALLTYPE *ResolveSubresource )(
7608 ID3D12GraphicsCommandList1 * This,
7609 _In_ ID3D12Resource *pDstResource,
7610 _In_ UINT DstSubresource,
7611 _In_ ID3D12Resource *pSrcResource,
7612 _In_ UINT SrcSubresource,
7613 _In_ DXGI_FORMAT Format);
7614
7615 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
7616 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
7617 ID3D12GraphicsCommandList1 * This,
7618 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
7619
7620 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
7621 void ( STDMETHODCALLTYPE *RSSetViewports )(
7622 ID3D12GraphicsCommandList1 * This,
7623 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
7624 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
7625
7626 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
7627 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
7628 ID3D12GraphicsCommandList1 * This,
7629 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
7630 _In_reads_( NumRects) const D3D12_RECT *pRects);
7631
7632 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
7633 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
7634 ID3D12GraphicsCommandList1 * This,
7635 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
7636
7637 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
7638 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
7639 ID3D12GraphicsCommandList1 * This,
7640 _In_ UINT StencilRef);
7641
7642 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
7643 void ( STDMETHODCALLTYPE *SetPipelineState )(
7644 ID3D12GraphicsCommandList1 * This,
7645 _In_ ID3D12PipelineState *pPipelineState);
7646
7647 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
7648 void ( STDMETHODCALLTYPE *ResourceBarrier )(
7649 ID3D12GraphicsCommandList1 * This,
7650 _In_ UINT NumBarriers,
7651 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
7652
7653 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
7654 void ( STDMETHODCALLTYPE *ExecuteBundle )(
7655 ID3D12GraphicsCommandList1 * This,
7656 _In_ ID3D12GraphicsCommandList *pCommandList);
7657
7658 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
7659 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
7660 ID3D12GraphicsCommandList1 * This,
7661 _In_ UINT NumDescriptorHeaps,
7662 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
7663
7664 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
7665 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
7666 ID3D12GraphicsCommandList1 * This,
7667 _In_opt_ ID3D12RootSignature *pRootSignature);
7668
7669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
7670 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
7671 ID3D12GraphicsCommandList1 * This,
7672 _In_opt_ ID3D12RootSignature *pRootSignature);
7673
7674 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
7675 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
7676 ID3D12GraphicsCommandList1 * This,
7677 _In_ UINT RootParameterIndex,
7678 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7679
7680 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
7681 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
7682 ID3D12GraphicsCommandList1 * This,
7683 _In_ UINT RootParameterIndex,
7684 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
7685
7686 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
7687 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
7688 ID3D12GraphicsCommandList1 * This,
7689 _In_ UINT RootParameterIndex,
7690 _In_ UINT SrcData,
7691 _In_ UINT DestOffsetIn32BitValues);
7692
7693 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
7694 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
7695 ID3D12GraphicsCommandList1 * This,
7696 _In_ UINT RootParameterIndex,
7697 _In_ UINT SrcData,
7698 _In_ UINT DestOffsetIn32BitValues);
7699
7700 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
7701 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
7702 ID3D12GraphicsCommandList1 * This,
7703 _In_ UINT RootParameterIndex,
7704 _In_ UINT Num32BitValuesToSet,
7705 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7706 _In_ UINT DestOffsetIn32BitValues);
7707
7708 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
7709 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
7710 ID3D12GraphicsCommandList1 * This,
7711 _In_ UINT RootParameterIndex,
7712 _In_ UINT Num32BitValuesToSet,
7713 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
7714 _In_ UINT DestOffsetIn32BitValues);
7715
7716 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
7717 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
7718 ID3D12GraphicsCommandList1 * This,
7719 _In_ UINT RootParameterIndex,
7720 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7721
7722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
7723 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
7724 ID3D12GraphicsCommandList1 * This,
7725 _In_ UINT RootParameterIndex,
7726 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7727
7728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
7729 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
7730 ID3D12GraphicsCommandList1 * This,
7731 _In_ UINT RootParameterIndex,
7732 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7733
7734 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
7735 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
7736 ID3D12GraphicsCommandList1 * This,
7737 _In_ UINT RootParameterIndex,
7738 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7739
7740 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
7741 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
7742 ID3D12GraphicsCommandList1 * This,
7743 _In_ UINT RootParameterIndex,
7744 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7745
7746 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
7747 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
7748 ID3D12GraphicsCommandList1 * This,
7749 _In_ UINT RootParameterIndex,
7750 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
7751
7752 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
7753 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
7754 ID3D12GraphicsCommandList1 * This,
7755 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
7756
7757 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
7758 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
7759 ID3D12GraphicsCommandList1 * This,
7760 _In_ UINT StartSlot,
7761 _In_ UINT NumViews,
7762 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
7763
7764 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
7765 void ( STDMETHODCALLTYPE *SOSetTargets )(
7766 ID3D12GraphicsCommandList1 * This,
7767 _In_ UINT StartSlot,
7768 _In_ UINT NumViews,
7769 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
7770
7771 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
7772 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
7773 ID3D12GraphicsCommandList1 * This,
7774 _In_ UINT NumRenderTargetDescriptors,
7775 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
7776 _In_ BOOL RTsSingleHandleToDescriptorRange,
7777 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
7778
7779 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
7780 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
7781 ID3D12GraphicsCommandList1 * This,
7782 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
7783 _In_ D3D12_CLEAR_FLAGS ClearFlags,
7784 _In_ FLOAT Depth,
7785 _In_ UINT8 Stencil,
7786 _In_ UINT NumRects,
7787 _In_reads_(NumRects) const D3D12_RECT *pRects);
7788
7789 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
7790 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
7791 ID3D12GraphicsCommandList1 * This,
7792 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
7793 _In_ const FLOAT ColorRGBA[ 4 ],
7794 _In_ UINT NumRects,
7795 _In_reads_(NumRects) const D3D12_RECT *pRects);
7796
7797 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
7798 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
7799 ID3D12GraphicsCommandList1 * This,
7800 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7801 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7802 _In_ ID3D12Resource *pResource,
7803 _In_ const UINT Values[ 4 ],
7804 _In_ UINT NumRects,
7805 _In_reads_(NumRects) const D3D12_RECT *pRects);
7806
7807 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
7808 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
7809 ID3D12GraphicsCommandList1 * This,
7810 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
7811 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
7812 _In_ ID3D12Resource *pResource,
7813 _In_ const FLOAT Values[ 4 ],
7814 _In_ UINT NumRects,
7815 _In_reads_(NumRects) const D3D12_RECT *pRects);
7816
7817 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
7818 void ( STDMETHODCALLTYPE *DiscardResource )(
7819 ID3D12GraphicsCommandList1 * This,
7820 _In_ ID3D12Resource *pResource,
7821 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
7822
7823 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
7824 void ( STDMETHODCALLTYPE *BeginQuery )(
7825 ID3D12GraphicsCommandList1 * This,
7826 _In_ ID3D12QueryHeap *pQueryHeap,
7827 _In_ D3D12_QUERY_TYPE Type,
7828 _In_ UINT Index);
7829
7830 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
7831 void ( STDMETHODCALLTYPE *EndQuery )(
7832 ID3D12GraphicsCommandList1 * This,
7833 _In_ ID3D12QueryHeap *pQueryHeap,
7834 _In_ D3D12_QUERY_TYPE Type,
7835 _In_ UINT Index);
7836
7837 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
7838 void ( STDMETHODCALLTYPE *ResolveQueryData )(
7839 ID3D12GraphicsCommandList1 * This,
7840 _In_ ID3D12QueryHeap *pQueryHeap,
7841 _In_ D3D12_QUERY_TYPE Type,
7842 _In_ UINT StartIndex,
7843 _In_ UINT NumQueries,
7844 _In_ ID3D12Resource *pDestinationBuffer,
7845 _In_ UINT64 AlignedDestinationBufferOffset);
7846
7847 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
7848 void ( STDMETHODCALLTYPE *SetPredication )(
7849 ID3D12GraphicsCommandList1 * This,
7850 _In_opt_ ID3D12Resource *pBuffer,
7851 _In_ UINT64 AlignedBufferOffset,
7852 _In_ D3D12_PREDICATION_OP Operation);
7853
7854 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
7855 void ( STDMETHODCALLTYPE *SetMarker )(
7856 ID3D12GraphicsCommandList1 * This,
7857 UINT Metadata,
7858 _In_reads_bytes_opt_(Size) const void *pData,
7859 UINT Size);
7860
7861 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
7862 void ( STDMETHODCALLTYPE *BeginEvent )(
7863 ID3D12GraphicsCommandList1 * This,
7864 UINT Metadata,
7865 _In_reads_bytes_opt_(Size) const void *pData,
7866 UINT Size);
7867
7868 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
7869 void ( STDMETHODCALLTYPE *EndEvent )(
7870 ID3D12GraphicsCommandList1 * This);
7871
7872 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
7873 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
7874 ID3D12GraphicsCommandList1 * This,
7875 _In_ ID3D12CommandSignature *pCommandSignature,
7876 _In_ UINT MaxCommandCount,
7877 _In_ ID3D12Resource *pArgumentBuffer,
7878 _In_ UINT64 ArgumentBufferOffset,
7879 _In_opt_ ID3D12Resource *pCountBuffer,
7880 _In_ UINT64 CountBufferOffset);
7881
7882 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
7883 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
7884 ID3D12GraphicsCommandList1 * This,
7885 _In_ ID3D12Resource *pDstBuffer,
7886 UINT64 DstOffset,
7887 _In_ ID3D12Resource *pSrcBuffer,
7888 UINT64 SrcOffset,
7889 UINT Dependencies,
7890 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7891 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7892
7893 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
7894 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
7895 ID3D12GraphicsCommandList1 * This,
7896 _In_ ID3D12Resource *pDstBuffer,
7897 UINT64 DstOffset,
7898 _In_ ID3D12Resource *pSrcBuffer,
7899 UINT64 SrcOffset,
7900 UINT Dependencies,
7901 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
7902 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
7903
7904 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
7905 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
7906 ID3D12GraphicsCommandList1 * This,
7907 _In_ FLOAT Min,
7908 _In_ FLOAT Max);
7909
7910 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
7911 void ( STDMETHODCALLTYPE *SetSamplePositions )(
7912 ID3D12GraphicsCommandList1 * This,
7913 _In_ UINT NumSamplesPerPixel,
7914 _In_ UINT NumPixels,
7915 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
7916
7917 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
7918 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
7919 ID3D12GraphicsCommandList1 * This,
7920 _In_ ID3D12Resource *pDstResource,
7921 _In_ UINT DstSubresource,
7922 _In_ UINT DstX,
7923 _In_ UINT DstY,
7924 _In_ ID3D12Resource *pSrcResource,
7925 _In_ UINT SrcSubresource,
7926 _In_opt_ D3D12_RECT *pSrcRect,
7927 _In_ DXGI_FORMAT Format,
7928 _In_ D3D12_RESOLVE_MODE ResolveMode);
7929
7930 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
7931 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
7932 ID3D12GraphicsCommandList1 * This,
7933 _In_ UINT Mask);
7934
7935 END_INTERFACE
7936 } ID3D12GraphicsCommandList1Vtbl;
7937
7938 interface ID3D12GraphicsCommandList1
7939 {
7940 CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
7941 };
7942
7943
7944
7945#ifdef COBJMACROS
7946
7947
7948#define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
7949 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7950
7951#define ID3D12GraphicsCommandList1_AddRef(This) \
7952 ( (This)->lpVtbl -> AddRef(This) )
7953
7954#define ID3D12GraphicsCommandList1_Release(This) \
7955 ( (This)->lpVtbl -> Release(This) )
7956
7957
7958#define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
7959 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7960
7961#define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
7962 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7963
7964#define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
7965 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7966
7967#define ID3D12GraphicsCommandList1_SetName(This,Name) \
7968 ( (This)->lpVtbl -> SetName(This,Name) )
7969
7970
7971#define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
7972 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7973
7974
7975#define ID3D12GraphicsCommandList1_GetType(This) \
7976 ( (This)->lpVtbl -> GetType(This) )
7977
7978
7979#define ID3D12GraphicsCommandList1_Close(This) \
7980 ( (This)->lpVtbl -> Close(This) )
7981
7982#define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
7983 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
7984
7985#define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
7986 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
7987
7988#define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
7989 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
7990
7991#define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
7992 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
7993
7994#define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
7995 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
7996
7997#define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
7998 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
7999
8000#define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8001 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8002
8003#define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
8004 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8005
8006#define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8007 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8008
8009#define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8010 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8011
8012#define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
8013 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8014
8015#define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
8016 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8017
8018#define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
8019 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8020
8021#define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
8022 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8023
8024#define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
8025 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8026
8027#define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
8028 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8029
8030#define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
8031 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8032
8033#define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
8034 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8035
8036#define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8037 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8038
8039#define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
8040 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8041
8042#define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
8043 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8044
8045#define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8046 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8047
8048#define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8049 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8050
8051#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8052 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8053
8054#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8055 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8056
8057#define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8058 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8059
8060#define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8061 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8062
8063#define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8064 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8065
8066#define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8067 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8068
8069#define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8070 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8071
8072#define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8073 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8074
8075#define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8076 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8077
8078#define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8079 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8080
8081#define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
8082 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8083
8084#define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8085 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8086
8087#define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
8088 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8089
8090#define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8091 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8092
8093#define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8094 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8095
8096#define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8097 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8098
8099#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8100 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8101
8102#define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8103 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8104
8105#define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
8106 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8107
8108#define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
8109 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8110
8111#define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
8112 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8113
8114#define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8115 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8116
8117#define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8118 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8119
8120#define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
8121 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8122
8123#define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
8124 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8125
8126#define ID3D12GraphicsCommandList1_EndEvent(This) \
8127 ( (This)->lpVtbl -> EndEvent(This) )
8128
8129#define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8130 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8131
8132
8133#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8134 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8135
8136#define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8137 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8138
8139#define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
8140 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8141
8142#define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8143 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8144
8145#define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8146 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8147
8148#define ID3D12GraphicsCommandList1_SetViewInstanceMask(This,Mask) \
8149 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8150
8151#endif /* COBJMACROS */
8152
8153
8154#endif /* C style interface */
8155
8156
8157
8158
8159#endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
8160
8161
8162/* interface __MIDL_itf_d3d12_0000_0019 */
8163/* [local] */
8164
8165typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
8166 {
8167 D3D12_GPU_VIRTUAL_ADDRESS Dest;
8168 UINT32 Value;
8169 } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
8170
8171typedef
8172enum D3D12_WRITEBUFFERIMMEDIATE_MODE
8173 {
8174 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0,
8175 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
8176 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2
8177 } D3D12_WRITEBUFFERIMMEDIATE_MODE;
8178
8179
8180
8181extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_c_ifspec;
8182extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0019_v0_0_s_ifspec;
8183
8184#ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8185#define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
8186
8187/* interface ID3D12GraphicsCommandList2 */
8188/* [unique][local][object][uuid] */
8189
8190
8191EXTERN_C const IID IID_ID3D12GraphicsCommandList2;
8192
8193#if defined(__cplusplus) && !defined(CINTERFACE)
8194
8195 MIDL_INTERFACE("38C3E585-FF17-412C-9150-4FC6F9D72A28")
8196 ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1
8197 {
8198 public:
8199 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
8200 UINT Count,
8201 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8202 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
8203
8204 };
8205
8206
8207#else /* C style interface */
8208
8209 typedef struct ID3D12GraphicsCommandList2Vtbl
8210 {
8211 BEGIN_INTERFACE
8212
8213 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8214 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8215 ID3D12GraphicsCommandList2 * This,
8216 REFIID riid,
8217 _COM_Outptr_ void **ppvObject);
8218
8219 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8220 ULONG ( STDMETHODCALLTYPE *AddRef )(
8221 ID3D12GraphicsCommandList2 * This);
8222
8223 DECLSPEC_XFGVIRT(IUnknown, Release)
8224 ULONG ( STDMETHODCALLTYPE *Release )(
8225 ID3D12GraphicsCommandList2 * This);
8226
8227 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8228 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8229 ID3D12GraphicsCommandList2 * This,
8230 _In_ REFGUID guid,
8231 _Inout_ UINT *pDataSize,
8232 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8233
8234 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8235 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8236 ID3D12GraphicsCommandList2 * This,
8237 _In_ REFGUID guid,
8238 _In_ UINT DataSize,
8239 _In_reads_bytes_opt_( DataSize ) const void *pData);
8240
8241 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8242 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8243 ID3D12GraphicsCommandList2 * This,
8244 _In_ REFGUID guid,
8245 _In_opt_ const IUnknown *pData);
8246
8247 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8248 HRESULT ( STDMETHODCALLTYPE *SetName )(
8249 ID3D12GraphicsCommandList2 * This,
8250 _In_z_ LPCWSTR Name);
8251
8252 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8253 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8254 ID3D12GraphicsCommandList2 * This,
8255 REFIID riid,
8256 _COM_Outptr_opt_ void **ppvDevice);
8257
8258 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8259 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8260 ID3D12GraphicsCommandList2 * This);
8261
8262 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
8263 HRESULT ( STDMETHODCALLTYPE *Close )(
8264 ID3D12GraphicsCommandList2 * This);
8265
8266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
8267 HRESULT ( STDMETHODCALLTYPE *Reset )(
8268 ID3D12GraphicsCommandList2 * This,
8269 _In_ ID3D12CommandAllocator *pAllocator,
8270 _In_opt_ ID3D12PipelineState *pInitialState);
8271
8272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
8273 void ( STDMETHODCALLTYPE *ClearState )(
8274 ID3D12GraphicsCommandList2 * This,
8275 _In_opt_ ID3D12PipelineState *pPipelineState);
8276
8277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
8278 void ( STDMETHODCALLTYPE *DrawInstanced )(
8279 ID3D12GraphicsCommandList2 * This,
8280 _In_ UINT VertexCountPerInstance,
8281 _In_ UINT InstanceCount,
8282 _In_ UINT StartVertexLocation,
8283 _In_ UINT StartInstanceLocation);
8284
8285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
8286 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
8287 ID3D12GraphicsCommandList2 * This,
8288 _In_ UINT IndexCountPerInstance,
8289 _In_ UINT InstanceCount,
8290 _In_ UINT StartIndexLocation,
8291 _In_ INT BaseVertexLocation,
8292 _In_ UINT StartInstanceLocation);
8293
8294 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
8295 void ( STDMETHODCALLTYPE *Dispatch )(
8296 ID3D12GraphicsCommandList2 * This,
8297 _In_ UINT ThreadGroupCountX,
8298 _In_ UINT ThreadGroupCountY,
8299 _In_ UINT ThreadGroupCountZ);
8300
8301 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
8302 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
8303 ID3D12GraphicsCommandList2 * This,
8304 _In_ ID3D12Resource *pDstBuffer,
8305 UINT64 DstOffset,
8306 _In_ ID3D12Resource *pSrcBuffer,
8307 UINT64 SrcOffset,
8308 UINT64 NumBytes);
8309
8310 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
8311 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
8312 ID3D12GraphicsCommandList2 * This,
8313 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
8314 UINT DstX,
8315 UINT DstY,
8316 UINT DstZ,
8317 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
8318 _In_opt_ const D3D12_BOX *pSrcBox);
8319
8320 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
8321 void ( STDMETHODCALLTYPE *CopyResource )(
8322 ID3D12GraphicsCommandList2 * This,
8323 _In_ ID3D12Resource *pDstResource,
8324 _In_ ID3D12Resource *pSrcResource);
8325
8326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
8327 void ( STDMETHODCALLTYPE *CopyTiles )(
8328 ID3D12GraphicsCommandList2 * This,
8329 _In_ ID3D12Resource *pTiledResource,
8330 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
8331 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
8332 _In_ ID3D12Resource *pBuffer,
8333 UINT64 BufferStartOffsetInBytes,
8334 D3D12_TILE_COPY_FLAGS Flags);
8335
8336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
8337 void ( STDMETHODCALLTYPE *ResolveSubresource )(
8338 ID3D12GraphicsCommandList2 * This,
8339 _In_ ID3D12Resource *pDstResource,
8340 _In_ UINT DstSubresource,
8341 _In_ ID3D12Resource *pSrcResource,
8342 _In_ UINT SrcSubresource,
8343 _In_ DXGI_FORMAT Format);
8344
8345 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
8346 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
8347 ID3D12GraphicsCommandList2 * This,
8348 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
8349
8350 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
8351 void ( STDMETHODCALLTYPE *RSSetViewports )(
8352 ID3D12GraphicsCommandList2 * This,
8353 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
8354 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
8355
8356 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
8357 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
8358 ID3D12GraphicsCommandList2 * This,
8359 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
8360 _In_reads_( NumRects) const D3D12_RECT *pRects);
8361
8362 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
8363 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
8364 ID3D12GraphicsCommandList2 * This,
8365 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
8366
8367 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
8368 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
8369 ID3D12GraphicsCommandList2 * This,
8370 _In_ UINT StencilRef);
8371
8372 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
8373 void ( STDMETHODCALLTYPE *SetPipelineState )(
8374 ID3D12GraphicsCommandList2 * This,
8375 _In_ ID3D12PipelineState *pPipelineState);
8376
8377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
8378 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8379 ID3D12GraphicsCommandList2 * This,
8380 _In_ UINT NumBarriers,
8381 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8382
8383 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
8384 void ( STDMETHODCALLTYPE *ExecuteBundle )(
8385 ID3D12GraphicsCommandList2 * This,
8386 _In_ ID3D12GraphicsCommandList *pCommandList);
8387
8388 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
8389 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
8390 ID3D12GraphicsCommandList2 * This,
8391 _In_ UINT NumDescriptorHeaps,
8392 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
8393
8394 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
8395 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
8396 ID3D12GraphicsCommandList2 * This,
8397 _In_opt_ ID3D12RootSignature *pRootSignature);
8398
8399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
8400 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
8401 ID3D12GraphicsCommandList2 * This,
8402 _In_opt_ ID3D12RootSignature *pRootSignature);
8403
8404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
8405 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
8406 ID3D12GraphicsCommandList2 * This,
8407 _In_ UINT RootParameterIndex,
8408 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8409
8410 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
8411 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
8412 ID3D12GraphicsCommandList2 * This,
8413 _In_ UINT RootParameterIndex,
8414 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
8415
8416 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
8417 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
8418 ID3D12GraphicsCommandList2 * This,
8419 _In_ UINT RootParameterIndex,
8420 _In_ UINT SrcData,
8421 _In_ UINT DestOffsetIn32BitValues);
8422
8423 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
8424 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
8425 ID3D12GraphicsCommandList2 * This,
8426 _In_ UINT RootParameterIndex,
8427 _In_ UINT SrcData,
8428 _In_ UINT DestOffsetIn32BitValues);
8429
8430 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
8431 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
8432 ID3D12GraphicsCommandList2 * This,
8433 _In_ UINT RootParameterIndex,
8434 _In_ UINT Num32BitValuesToSet,
8435 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8436 _In_ UINT DestOffsetIn32BitValues);
8437
8438 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
8439 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
8440 ID3D12GraphicsCommandList2 * This,
8441 _In_ UINT RootParameterIndex,
8442 _In_ UINT Num32BitValuesToSet,
8443 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
8444 _In_ UINT DestOffsetIn32BitValues);
8445
8446 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
8447 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
8448 ID3D12GraphicsCommandList2 * This,
8449 _In_ UINT RootParameterIndex,
8450 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8451
8452 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
8453 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
8454 ID3D12GraphicsCommandList2 * This,
8455 _In_ UINT RootParameterIndex,
8456 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8457
8458 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
8459 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
8460 ID3D12GraphicsCommandList2 * This,
8461 _In_ UINT RootParameterIndex,
8462 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8463
8464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
8465 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
8466 ID3D12GraphicsCommandList2 * This,
8467 _In_ UINT RootParameterIndex,
8468 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8469
8470 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
8471 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
8472 ID3D12GraphicsCommandList2 * This,
8473 _In_ UINT RootParameterIndex,
8474 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8475
8476 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
8477 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
8478 ID3D12GraphicsCommandList2 * This,
8479 _In_ UINT RootParameterIndex,
8480 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
8481
8482 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
8483 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
8484 ID3D12GraphicsCommandList2 * This,
8485 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
8486
8487 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
8488 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
8489 ID3D12GraphicsCommandList2 * This,
8490 _In_ UINT StartSlot,
8491 _In_ UINT NumViews,
8492 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
8493
8494 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
8495 void ( STDMETHODCALLTYPE *SOSetTargets )(
8496 ID3D12GraphicsCommandList2 * This,
8497 _In_ UINT StartSlot,
8498 _In_ UINT NumViews,
8499 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
8500
8501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
8502 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
8503 ID3D12GraphicsCommandList2 * This,
8504 _In_ UINT NumRenderTargetDescriptors,
8505 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
8506 _In_ BOOL RTsSingleHandleToDescriptorRange,
8507 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
8508
8509 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
8510 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
8511 ID3D12GraphicsCommandList2 * This,
8512 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
8513 _In_ D3D12_CLEAR_FLAGS ClearFlags,
8514 _In_ FLOAT Depth,
8515 _In_ UINT8 Stencil,
8516 _In_ UINT NumRects,
8517 _In_reads_(NumRects) const D3D12_RECT *pRects);
8518
8519 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
8520 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
8521 ID3D12GraphicsCommandList2 * This,
8522 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
8523 _In_ const FLOAT ColorRGBA[ 4 ],
8524 _In_ UINT NumRects,
8525 _In_reads_(NumRects) const D3D12_RECT *pRects);
8526
8527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
8528 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
8529 ID3D12GraphicsCommandList2 * This,
8530 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8531 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8532 _In_ ID3D12Resource *pResource,
8533 _In_ const UINT Values[ 4 ],
8534 _In_ UINT NumRects,
8535 _In_reads_(NumRects) const D3D12_RECT *pRects);
8536
8537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
8538 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
8539 ID3D12GraphicsCommandList2 * This,
8540 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
8541 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
8542 _In_ ID3D12Resource *pResource,
8543 _In_ const FLOAT Values[ 4 ],
8544 _In_ UINT NumRects,
8545 _In_reads_(NumRects) const D3D12_RECT *pRects);
8546
8547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
8548 void ( STDMETHODCALLTYPE *DiscardResource )(
8549 ID3D12GraphicsCommandList2 * This,
8550 _In_ ID3D12Resource *pResource,
8551 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8552
8553 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
8554 void ( STDMETHODCALLTYPE *BeginQuery )(
8555 ID3D12GraphicsCommandList2 * This,
8556 _In_ ID3D12QueryHeap *pQueryHeap,
8557 _In_ D3D12_QUERY_TYPE Type,
8558 _In_ UINT Index);
8559
8560 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
8561 void ( STDMETHODCALLTYPE *EndQuery )(
8562 ID3D12GraphicsCommandList2 * This,
8563 _In_ ID3D12QueryHeap *pQueryHeap,
8564 _In_ D3D12_QUERY_TYPE Type,
8565 _In_ UINT Index);
8566
8567 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
8568 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8569 ID3D12GraphicsCommandList2 * This,
8570 _In_ ID3D12QueryHeap *pQueryHeap,
8571 _In_ D3D12_QUERY_TYPE Type,
8572 _In_ UINT StartIndex,
8573 _In_ UINT NumQueries,
8574 _In_ ID3D12Resource *pDestinationBuffer,
8575 _In_ UINT64 AlignedDestinationBufferOffset);
8576
8577 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
8578 void ( STDMETHODCALLTYPE *SetPredication )(
8579 ID3D12GraphicsCommandList2 * This,
8580 _In_opt_ ID3D12Resource *pBuffer,
8581 _In_ UINT64 AlignedBufferOffset,
8582 _In_ D3D12_PREDICATION_OP Operation);
8583
8584 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
8585 void ( STDMETHODCALLTYPE *SetMarker )(
8586 ID3D12GraphicsCommandList2 * This,
8587 UINT Metadata,
8588 _In_reads_bytes_opt_(Size) const void *pData,
8589 UINT Size);
8590
8591 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
8592 void ( STDMETHODCALLTYPE *BeginEvent )(
8593 ID3D12GraphicsCommandList2 * This,
8594 UINT Metadata,
8595 _In_reads_bytes_opt_(Size) const void *pData,
8596 UINT Size);
8597
8598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
8599 void ( STDMETHODCALLTYPE *EndEvent )(
8600 ID3D12GraphicsCommandList2 * This);
8601
8602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
8603 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
8604 ID3D12GraphicsCommandList2 * This,
8605 _In_ ID3D12CommandSignature *pCommandSignature,
8606 _In_ UINT MaxCommandCount,
8607 _In_ ID3D12Resource *pArgumentBuffer,
8608 _In_ UINT64 ArgumentBufferOffset,
8609 _In_opt_ ID3D12Resource *pCountBuffer,
8610 _In_ UINT64 CountBufferOffset);
8611
8612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
8613 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
8614 ID3D12GraphicsCommandList2 * This,
8615 _In_ ID3D12Resource *pDstBuffer,
8616 UINT64 DstOffset,
8617 _In_ ID3D12Resource *pSrcBuffer,
8618 UINT64 SrcOffset,
8619 UINT Dependencies,
8620 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8621 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8622
8623 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
8624 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
8625 ID3D12GraphicsCommandList2 * This,
8626 _In_ ID3D12Resource *pDstBuffer,
8627 UINT64 DstOffset,
8628 _In_ ID3D12Resource *pSrcBuffer,
8629 UINT64 SrcOffset,
8630 UINT Dependencies,
8631 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
8632 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
8633
8634 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
8635 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
8636 ID3D12GraphicsCommandList2 * This,
8637 _In_ FLOAT Min,
8638 _In_ FLOAT Max);
8639
8640 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
8641 void ( STDMETHODCALLTYPE *SetSamplePositions )(
8642 ID3D12GraphicsCommandList2 * This,
8643 _In_ UINT NumSamplesPerPixel,
8644 _In_ UINT NumPixels,
8645 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
8646
8647 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
8648 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
8649 ID3D12GraphicsCommandList2 * This,
8650 _In_ ID3D12Resource *pDstResource,
8651 _In_ UINT DstSubresource,
8652 _In_ UINT DstX,
8653 _In_ UINT DstY,
8654 _In_ ID3D12Resource *pSrcResource,
8655 _In_ UINT SrcSubresource,
8656 _In_opt_ D3D12_RECT *pSrcRect,
8657 _In_ DXGI_FORMAT Format,
8658 _In_ D3D12_RESOLVE_MODE ResolveMode);
8659
8660 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
8661 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
8662 ID3D12GraphicsCommandList2 * This,
8663 _In_ UINT Mask);
8664
8665 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
8666 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8667 ID3D12GraphicsCommandList2 * This,
8668 UINT Count,
8669 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8670 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8671
8672 END_INTERFACE
8673 } ID3D12GraphicsCommandList2Vtbl;
8674
8675 interface ID3D12GraphicsCommandList2
8676 {
8677 CONST_VTBL struct ID3D12GraphicsCommandList2Vtbl *lpVtbl;
8678 };
8679
8680
8681
8682#ifdef COBJMACROS
8683
8684
8685#define ID3D12GraphicsCommandList2_QueryInterface(This,riid,ppvObject) \
8686 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8687
8688#define ID3D12GraphicsCommandList2_AddRef(This) \
8689 ( (This)->lpVtbl -> AddRef(This) )
8690
8691#define ID3D12GraphicsCommandList2_Release(This) \
8692 ( (This)->lpVtbl -> Release(This) )
8693
8694
8695#define ID3D12GraphicsCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8696 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8697
8698#define ID3D12GraphicsCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8699 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8700
8701#define ID3D12GraphicsCommandList2_SetPrivateDataInterface(This,guid,pData) \
8702 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8703
8704#define ID3D12GraphicsCommandList2_SetName(This,Name) \
8705 ( (This)->lpVtbl -> SetName(This,Name) )
8706
8707
8708#define ID3D12GraphicsCommandList2_GetDevice(This,riid,ppvDevice) \
8709 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8710
8711
8712#define ID3D12GraphicsCommandList2_GetType(This) \
8713 ( (This)->lpVtbl -> GetType(This) )
8714
8715
8716#define ID3D12GraphicsCommandList2_Close(This) \
8717 ( (This)->lpVtbl -> Close(This) )
8718
8719#define ID3D12GraphicsCommandList2_Reset(This,pAllocator,pInitialState) \
8720 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
8721
8722#define ID3D12GraphicsCommandList2_ClearState(This,pPipelineState) \
8723 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
8724
8725#define ID3D12GraphicsCommandList2_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
8726 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
8727
8728#define ID3D12GraphicsCommandList2_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
8729 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
8730
8731#define ID3D12GraphicsCommandList2_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
8732 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
8733
8734#define ID3D12GraphicsCommandList2_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
8735 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
8736
8737#define ID3D12GraphicsCommandList2_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
8738 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
8739
8740#define ID3D12GraphicsCommandList2_CopyResource(This,pDstResource,pSrcResource) \
8741 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
8742
8743#define ID3D12GraphicsCommandList2_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
8744 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
8745
8746#define ID3D12GraphicsCommandList2_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
8747 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
8748
8749#define ID3D12GraphicsCommandList2_IASetPrimitiveTopology(This,PrimitiveTopology) \
8750 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
8751
8752#define ID3D12GraphicsCommandList2_RSSetViewports(This,NumViewports,pViewports) \
8753 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
8754
8755#define ID3D12GraphicsCommandList2_RSSetScissorRects(This,NumRects,pRects) \
8756 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
8757
8758#define ID3D12GraphicsCommandList2_OMSetBlendFactor(This,BlendFactor) \
8759 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
8760
8761#define ID3D12GraphicsCommandList2_OMSetStencilRef(This,StencilRef) \
8762 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
8763
8764#define ID3D12GraphicsCommandList2_SetPipelineState(This,pPipelineState) \
8765 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
8766
8767#define ID3D12GraphicsCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8768 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8769
8770#define ID3D12GraphicsCommandList2_ExecuteBundle(This,pCommandList) \
8771 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
8772
8773#define ID3D12GraphicsCommandList2_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
8774 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
8775
8776#define ID3D12GraphicsCommandList2_SetComputeRootSignature(This,pRootSignature) \
8777 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
8778
8779#define ID3D12GraphicsCommandList2_SetGraphicsRootSignature(This,pRootSignature) \
8780 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
8781
8782#define ID3D12GraphicsCommandList2_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8783 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8784
8785#define ID3D12GraphicsCommandList2_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
8786 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
8787
8788#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8789 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8790
8791#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
8792 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
8793
8794#define ID3D12GraphicsCommandList2_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8795 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8796
8797#define ID3D12GraphicsCommandList2_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
8798 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
8799
8800#define ID3D12GraphicsCommandList2_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8801 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8802
8803#define ID3D12GraphicsCommandList2_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
8804 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
8805
8806#define ID3D12GraphicsCommandList2_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8807 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8808
8809#define ID3D12GraphicsCommandList2_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
8810 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
8811
8812#define ID3D12GraphicsCommandList2_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8813 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8814
8815#define ID3D12GraphicsCommandList2_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
8816 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
8817
8818#define ID3D12GraphicsCommandList2_IASetIndexBuffer(This,pView) \
8819 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
8820
8821#define ID3D12GraphicsCommandList2_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
8822 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
8823
8824#define ID3D12GraphicsCommandList2_SOSetTargets(This,StartSlot,NumViews,pViews) \
8825 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
8826
8827#define ID3D12GraphicsCommandList2_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
8828 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
8829
8830#define ID3D12GraphicsCommandList2_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
8831 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
8832
8833#define ID3D12GraphicsCommandList2_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
8834 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
8835
8836#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8837 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8838
8839#define ID3D12GraphicsCommandList2_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
8840 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
8841
8842#define ID3D12GraphicsCommandList2_DiscardResource(This,pResource,pRegion) \
8843 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8844
8845#define ID3D12GraphicsCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8846 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8847
8848#define ID3D12GraphicsCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8849 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8850
8851#define ID3D12GraphicsCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8852 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8853
8854#define ID3D12GraphicsCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8855 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8856
8857#define ID3D12GraphicsCommandList2_SetMarker(This,Metadata,pData,Size) \
8858 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8859
8860#define ID3D12GraphicsCommandList2_BeginEvent(This,Metadata,pData,Size) \
8861 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8862
8863#define ID3D12GraphicsCommandList2_EndEvent(This) \
8864 ( (This)->lpVtbl -> EndEvent(This) )
8865
8866#define ID3D12GraphicsCommandList2_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
8867 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
8868
8869
8870#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8871 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8872
8873#define ID3D12GraphicsCommandList2_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
8874 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
8875
8876#define ID3D12GraphicsCommandList2_OMSetDepthBounds(This,Min,Max) \
8877 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
8878
8879#define ID3D12GraphicsCommandList2_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
8880 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
8881
8882#define ID3D12GraphicsCommandList2_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
8883 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
8884
8885#define ID3D12GraphicsCommandList2_SetViewInstanceMask(This,Mask) \
8886 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
8887
8888
8889#define ID3D12GraphicsCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8890 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8891
8892#endif /* COBJMACROS */
8893
8894
8895#endif /* C style interface */
8896
8897
8898
8899
8900#endif /* __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__ */
8901
8902
8903#ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
8904#define __ID3D12CommandQueue_INTERFACE_DEFINED__
8905
8906/* interface ID3D12CommandQueue */
8907/* [unique][local][object][uuid] */
8908
8909
8910EXTERN_C const IID IID_ID3D12CommandQueue;
8911
8912#if defined(__cplusplus) && !defined(CINTERFACE)
8913
8914 MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
8915 ID3D12CommandQueue : public ID3D12Pageable
8916 {
8917 public:
8918 virtual void STDMETHODCALLTYPE UpdateTileMappings(
8919 _In_ ID3D12Resource *pResource,
8920 UINT NumResourceRegions,
8921 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
8922 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
8923 _In_opt_ ID3D12Heap *pHeap,
8924 UINT NumRanges,
8925 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
8926 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
8927 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
8928 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8929
8930 virtual void STDMETHODCALLTYPE CopyTileMappings(
8931 _In_ ID3D12Resource *pDstResource,
8932 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
8933 _In_ ID3D12Resource *pSrcResource,
8934 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
8935 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
8936 D3D12_TILE_MAPPING_FLAGS Flags) = 0;
8937
8938 virtual void STDMETHODCALLTYPE ExecuteCommandLists(
8939 _In_ UINT NumCommandLists,
8940 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
8941
8942 virtual void STDMETHODCALLTYPE SetMarker(
8943 UINT Metadata,
8944 _In_reads_bytes_opt_(Size) const void *pData,
8945 UINT Size) = 0;
8946
8947 virtual void STDMETHODCALLTYPE BeginEvent(
8948 UINT Metadata,
8949 _In_reads_bytes_opt_(Size) const void *pData,
8950 UINT Size) = 0;
8951
8952 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
8953
8954 virtual HRESULT STDMETHODCALLTYPE Signal(
8955 ID3D12Fence *pFence,
8956 UINT64 Value) = 0;
8957
8958 virtual HRESULT STDMETHODCALLTYPE Wait(
8959 ID3D12Fence *pFence,
8960 UINT64 Value) = 0;
8961
8962 virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
8963 _Out_ UINT64 *pFrequency) = 0;
8964
8965 virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
8966 _Out_ UINT64 *pGpuTimestamp,
8967 _Out_ UINT64 *pCpuTimestamp) = 0;
8968
8969#if defined(_MSC_VER) || !defined(_WIN32)
8970 virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
8971#else
8972 virtual D3D12_COMMAND_QUEUE_DESC *STDMETHODCALLTYPE GetDesc(
8973 D3D12_COMMAND_QUEUE_DESC * RetVal) = 0;
8974#endif
8975
8976 };
8977
8978
8979#else /* C style interface */
8980
8981 typedef struct ID3D12CommandQueueVtbl
8982 {
8983 BEGIN_INTERFACE
8984
8985 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8986 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8987 ID3D12CommandQueue * This,
8988 REFIID riid,
8989 _COM_Outptr_ void **ppvObject);
8990
8991 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8992 ULONG ( STDMETHODCALLTYPE *AddRef )(
8993 ID3D12CommandQueue * This);
8994
8995 DECLSPEC_XFGVIRT(IUnknown, Release)
8996 ULONG ( STDMETHODCALLTYPE *Release )(
8997 ID3D12CommandQueue * This);
8998
8999 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9000 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9001 ID3D12CommandQueue * This,
9002 _In_ REFGUID guid,
9003 _Inout_ UINT *pDataSize,
9004 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9005
9006 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9007 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9008 ID3D12CommandQueue * This,
9009 _In_ REFGUID guid,
9010 _In_ UINT DataSize,
9011 _In_reads_bytes_opt_( DataSize ) const void *pData);
9012
9013 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9014 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9015 ID3D12CommandQueue * This,
9016 _In_ REFGUID guid,
9017 _In_opt_ const IUnknown *pData);
9018
9019 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9020 HRESULT ( STDMETHODCALLTYPE *SetName )(
9021 ID3D12CommandQueue * This,
9022 _In_z_ LPCWSTR Name);
9023
9024 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9025 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9026 ID3D12CommandQueue * This,
9027 REFIID riid,
9028 _COM_Outptr_opt_ void **ppvDevice);
9029
9030 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9031 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9032 ID3D12CommandQueue * This,
9033 _In_ ID3D12Resource *pResource,
9034 UINT NumResourceRegions,
9035 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9036 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9037 _In_opt_ ID3D12Heap *pHeap,
9038 UINT NumRanges,
9039 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9040 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9041 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9042 D3D12_TILE_MAPPING_FLAGS Flags);
9043
9044 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9045 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9046 ID3D12CommandQueue * This,
9047 _In_ ID3D12Resource *pDstResource,
9048 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9049 _In_ ID3D12Resource *pSrcResource,
9050 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9051 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9052 D3D12_TILE_MAPPING_FLAGS Flags);
9053
9054 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9055 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9056 ID3D12CommandQueue * This,
9057 _In_ UINT NumCommandLists,
9058 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9059
9060 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9061 void ( STDMETHODCALLTYPE *SetMarker )(
9062 ID3D12CommandQueue * This,
9063 UINT Metadata,
9064 _In_reads_bytes_opt_(Size) const void *pData,
9065 UINT Size);
9066
9067 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9068 void ( STDMETHODCALLTYPE *BeginEvent )(
9069 ID3D12CommandQueue * This,
9070 UINT Metadata,
9071 _In_reads_bytes_opt_(Size) const void *pData,
9072 UINT Size);
9073
9074 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9075 void ( STDMETHODCALLTYPE *EndEvent )(
9076 ID3D12CommandQueue * This);
9077
9078 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9079 HRESULT ( STDMETHODCALLTYPE *Signal )(
9080 ID3D12CommandQueue * This,
9081 ID3D12Fence *pFence,
9082 UINT64 Value);
9083
9084 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9085 HRESULT ( STDMETHODCALLTYPE *Wait )(
9086 ID3D12CommandQueue * This,
9087 ID3D12Fence *pFence,
9088 UINT64 Value);
9089
9090 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9091 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9092 ID3D12CommandQueue * This,
9093 _Out_ UINT64 *pFrequency);
9094
9095 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9096 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9097 ID3D12CommandQueue * This,
9098 _Out_ UINT64 *pGpuTimestamp,
9099 _Out_ UINT64 *pCpuTimestamp);
9100
9101 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9102#if !defined(_WIN32)
9103 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9104 ID3D12CommandQueue * This);
9105
9106#else
9107 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9108 ID3D12CommandQueue * This,
9109 D3D12_COMMAND_QUEUE_DESC * RetVal);
9110
9111#endif
9112
9113 END_INTERFACE
9114 } ID3D12CommandQueueVtbl;
9115
9116 interface ID3D12CommandQueue
9117 {
9118 CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
9119 };
9120
9121
9122
9123#ifdef COBJMACROS
9124
9125
9126#define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
9127 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9128
9129#define ID3D12CommandQueue_AddRef(This) \
9130 ( (This)->lpVtbl -> AddRef(This) )
9131
9132#define ID3D12CommandQueue_Release(This) \
9133 ( (This)->lpVtbl -> Release(This) )
9134
9135
9136#define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
9137 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9138
9139#define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
9140 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9141
9142#define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
9143 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9144
9145#define ID3D12CommandQueue_SetName(This,Name) \
9146 ( (This)->lpVtbl -> SetName(This,Name) )
9147
9148
9149#define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
9150 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9151
9152
9153
9154#define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9155 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9156
9157#define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9158 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9159
9160#define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9161 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9162
9163#define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
9164 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9165
9166#define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
9167 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9168
9169#define ID3D12CommandQueue_EndEvent(This) \
9170 ( (This)->lpVtbl -> EndEvent(This) )
9171
9172#define ID3D12CommandQueue_Signal(This,pFence,Value) \
9173 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9174
9175#define ID3D12CommandQueue_Wait(This,pFence,Value) \
9176 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9177
9178#define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
9179 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9180
9181#define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9182 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9183#if !defined(_WIN32)
9184
9185#define ID3D12CommandQueue_GetDesc(This) \
9186 ( (This)->lpVtbl -> GetDesc(This) )
9187#else
9188#define ID3D12CommandQueue_GetDesc(This,RetVal) \
9189 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9190#endif
9191
9192#endif /* COBJMACROS */
9193
9194
9195#endif /* C style interface */
9196
9197
9198
9199
9200#endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
9201
9202
9203/* interface __MIDL_itf_d3d12_0000_0021 */
9204/* [local] */
9205
9206typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
9207 {
9208 _Out_ UINT ComputeQueuesPer3DQueue;
9209 } D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
9210
9211typedef
9212enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
9213 {
9214 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
9215 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1
9216 } D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
9217
9218typedef
9219enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
9220 {
9221 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
9222 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
9223 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
9224 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
9225 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
9226 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
9227 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
9228 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
9229 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
9230 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
9231 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
9232 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
9233 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
9234 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
9235 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
9236 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
9237 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
9238 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32
9239 } D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
9240
9241
9242
9243extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_c_ifspec;
9244extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_s_ifspec;
9245
9246#ifndef __ID3D12CommandQueue1_INTERFACE_DEFINED__
9247#define __ID3D12CommandQueue1_INTERFACE_DEFINED__
9248
9249/* interface ID3D12CommandQueue1 */
9250/* [unique][local][object][uuid] */
9251
9252
9253EXTERN_C const IID IID_ID3D12CommandQueue1;
9254
9255#if defined(__cplusplus) && !defined(CINTERFACE)
9256
9257 MIDL_INTERFACE("3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9")
9258 ID3D12CommandQueue1 : public ID3D12CommandQueue
9259 {
9260 public:
9261 virtual HRESULT STDMETHODCALLTYPE SetProcessPriority(
9262 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority) = 0;
9263
9264 virtual HRESULT STDMETHODCALLTYPE GetProcessPriority(
9265 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue) = 0;
9266
9267 virtual HRESULT STDMETHODCALLTYPE SetGlobalPriority(
9268 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority) = 0;
9269
9270 virtual HRESULT STDMETHODCALLTYPE GetGlobalPriority(
9271 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue) = 0;
9272
9273 };
9274
9275
9276#else /* C style interface */
9277
9278 typedef struct ID3D12CommandQueue1Vtbl
9279 {
9280 BEGIN_INTERFACE
9281
9282 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9283 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9284 ID3D12CommandQueue1 * This,
9285 REFIID riid,
9286 _COM_Outptr_ void **ppvObject);
9287
9288 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9289 ULONG ( STDMETHODCALLTYPE *AddRef )(
9290 ID3D12CommandQueue1 * This);
9291
9292 DECLSPEC_XFGVIRT(IUnknown, Release)
9293 ULONG ( STDMETHODCALLTYPE *Release )(
9294 ID3D12CommandQueue1 * This);
9295
9296 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9297 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9298 ID3D12CommandQueue1 * This,
9299 _In_ REFGUID guid,
9300 _Inout_ UINT *pDataSize,
9301 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9302
9303 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9304 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9305 ID3D12CommandQueue1 * This,
9306 _In_ REFGUID guid,
9307 _In_ UINT DataSize,
9308 _In_reads_bytes_opt_( DataSize ) const void *pData);
9309
9310 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9311 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9312 ID3D12CommandQueue1 * This,
9313 _In_ REFGUID guid,
9314 _In_opt_ const IUnknown *pData);
9315
9316 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9317 HRESULT ( STDMETHODCALLTYPE *SetName )(
9318 ID3D12CommandQueue1 * This,
9319 _In_z_ LPCWSTR Name);
9320
9321 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9322 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9323 ID3D12CommandQueue1 * This,
9324 REFIID riid,
9325 _COM_Outptr_opt_ void **ppvDevice);
9326
9327 DECLSPEC_XFGVIRT(ID3D12CommandQueue, UpdateTileMappings)
9328 void ( STDMETHODCALLTYPE *UpdateTileMappings )(
9329 ID3D12CommandQueue1 * This,
9330 _In_ ID3D12Resource *pResource,
9331 UINT NumResourceRegions,
9332 _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
9333 _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
9334 _In_opt_ ID3D12Heap *pHeap,
9335 UINT NumRanges,
9336 _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
9337 _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
9338 _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
9339 D3D12_TILE_MAPPING_FLAGS Flags);
9340
9341 DECLSPEC_XFGVIRT(ID3D12CommandQueue, CopyTileMappings)
9342 void ( STDMETHODCALLTYPE *CopyTileMappings )(
9343 ID3D12CommandQueue1 * This,
9344 _In_ ID3D12Resource *pDstResource,
9345 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
9346 _In_ ID3D12Resource *pSrcResource,
9347 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
9348 _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
9349 D3D12_TILE_MAPPING_FLAGS Flags);
9350
9351 DECLSPEC_XFGVIRT(ID3D12CommandQueue, ExecuteCommandLists)
9352 void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
9353 ID3D12CommandQueue1 * This,
9354 _In_ UINT NumCommandLists,
9355 _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
9356
9357 DECLSPEC_XFGVIRT(ID3D12CommandQueue, SetMarker)
9358 void ( STDMETHODCALLTYPE *SetMarker )(
9359 ID3D12CommandQueue1 * This,
9360 UINT Metadata,
9361 _In_reads_bytes_opt_(Size) const void *pData,
9362 UINT Size);
9363
9364 DECLSPEC_XFGVIRT(ID3D12CommandQueue, BeginEvent)
9365 void ( STDMETHODCALLTYPE *BeginEvent )(
9366 ID3D12CommandQueue1 * This,
9367 UINT Metadata,
9368 _In_reads_bytes_opt_(Size) const void *pData,
9369 UINT Size);
9370
9371 DECLSPEC_XFGVIRT(ID3D12CommandQueue, EndEvent)
9372 void ( STDMETHODCALLTYPE *EndEvent )(
9373 ID3D12CommandQueue1 * This);
9374
9375 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Signal)
9376 HRESULT ( STDMETHODCALLTYPE *Signal )(
9377 ID3D12CommandQueue1 * This,
9378 ID3D12Fence *pFence,
9379 UINT64 Value);
9380
9381 DECLSPEC_XFGVIRT(ID3D12CommandQueue, Wait)
9382 HRESULT ( STDMETHODCALLTYPE *Wait )(
9383 ID3D12CommandQueue1 * This,
9384 ID3D12Fence *pFence,
9385 UINT64 Value);
9386
9387 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetTimestampFrequency)
9388 HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
9389 ID3D12CommandQueue1 * This,
9390 _Out_ UINT64 *pFrequency);
9391
9392 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetClockCalibration)
9393 HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
9394 ID3D12CommandQueue1 * This,
9395 _Out_ UINT64 *pGpuTimestamp,
9396 _Out_ UINT64 *pCpuTimestamp);
9397
9398 DECLSPEC_XFGVIRT(ID3D12CommandQueue, GetDesc)
9399#if !defined(_WIN32)
9400 D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
9401 ID3D12CommandQueue1 * This);
9402
9403#else
9404 D3D12_COMMAND_QUEUE_DESC *( STDMETHODCALLTYPE *GetDesc )(
9405 ID3D12CommandQueue1 * This,
9406 D3D12_COMMAND_QUEUE_DESC * RetVal);
9407
9408#endif
9409
9410 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetProcessPriority)
9411 HRESULT ( STDMETHODCALLTYPE *SetProcessPriority )(
9412 ID3D12CommandQueue1 * This,
9413 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
9414
9415 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetProcessPriority)
9416 HRESULT ( STDMETHODCALLTYPE *GetProcessPriority )(
9417 ID3D12CommandQueue1 * This,
9418 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY *pOutValue);
9419
9420 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, SetGlobalPriority)
9421 HRESULT ( STDMETHODCALLTYPE *SetGlobalPriority )(
9422 ID3D12CommandQueue1 * This,
9423 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
9424
9425 DECLSPEC_XFGVIRT(ID3D12CommandQueue1, GetGlobalPriority)
9426 HRESULT ( STDMETHODCALLTYPE *GetGlobalPriority )(
9427 ID3D12CommandQueue1 * This,
9428 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY *pOutValue);
9429
9430 END_INTERFACE
9431 } ID3D12CommandQueue1Vtbl;
9432
9433 interface ID3D12CommandQueue1
9434 {
9435 CONST_VTBL struct ID3D12CommandQueue1Vtbl *lpVtbl;
9436 };
9437
9438
9439
9440#ifdef COBJMACROS
9441
9442
9443#define ID3D12CommandQueue1_QueryInterface(This,riid,ppvObject) \
9444 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9445
9446#define ID3D12CommandQueue1_AddRef(This) \
9447 ( (This)->lpVtbl -> AddRef(This) )
9448
9449#define ID3D12CommandQueue1_Release(This) \
9450 ( (This)->lpVtbl -> Release(This) )
9451
9452
9453#define ID3D12CommandQueue1_GetPrivateData(This,guid,pDataSize,pData) \
9454 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9455
9456#define ID3D12CommandQueue1_SetPrivateData(This,guid,DataSize,pData) \
9457 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9458
9459#define ID3D12CommandQueue1_SetPrivateDataInterface(This,guid,pData) \
9460 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9461
9462#define ID3D12CommandQueue1_SetName(This,Name) \
9463 ( (This)->lpVtbl -> SetName(This,Name) )
9464
9465
9466#define ID3D12CommandQueue1_GetDevice(This,riid,ppvDevice) \
9467 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9468
9469
9470
9471#define ID3D12CommandQueue1_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
9472 ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
9473
9474#define ID3D12CommandQueue1_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
9475 ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
9476
9477#define ID3D12CommandQueue1_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
9478 ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
9479
9480#define ID3D12CommandQueue1_SetMarker(This,Metadata,pData,Size) \
9481 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9482
9483#define ID3D12CommandQueue1_BeginEvent(This,Metadata,pData,Size) \
9484 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9485
9486#define ID3D12CommandQueue1_EndEvent(This) \
9487 ( (This)->lpVtbl -> EndEvent(This) )
9488
9489#define ID3D12CommandQueue1_Signal(This,pFence,Value) \
9490 ( (This)->lpVtbl -> Signal(This,pFence,Value) )
9491
9492#define ID3D12CommandQueue1_Wait(This,pFence,Value) \
9493 ( (This)->lpVtbl -> Wait(This,pFence,Value) )
9494
9495#define ID3D12CommandQueue1_GetTimestampFrequency(This,pFrequency) \
9496 ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
9497
9498#define ID3D12CommandQueue1_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
9499 ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
9500#if !defined(_WIN32)
9501
9502#define ID3D12CommandQueue1_GetDesc(This) \
9503 ( (This)->lpVtbl -> GetDesc(This) )
9504#else
9505#define ID3D12CommandQueue1_GetDesc(This,RetVal) \
9506 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
9507#endif
9508
9509
9510#define ID3D12CommandQueue1_SetProcessPriority(This,Priority) \
9511 ( (This)->lpVtbl -> SetProcessPriority(This,Priority) )
9512
9513#define ID3D12CommandQueue1_GetProcessPriority(This,pOutValue) \
9514 ( (This)->lpVtbl -> GetProcessPriority(This,pOutValue) )
9515
9516#define ID3D12CommandQueue1_SetGlobalPriority(This,Priority) \
9517 ( (This)->lpVtbl -> SetGlobalPriority(This,Priority) )
9518
9519#define ID3D12CommandQueue1_GetGlobalPriority(This,pOutValue) \
9520 ( (This)->lpVtbl -> GetGlobalPriority(This,pOutValue) )
9521
9522#endif /* COBJMACROS */
9523
9524
9525#endif /* C style interface */
9526
9527
9528
9529
9530#endif /* __ID3D12CommandQueue1_INTERFACE_DEFINED__ */
9531
9532
9533#ifndef __ID3D12Device_INTERFACE_DEFINED__
9534#define __ID3D12Device_INTERFACE_DEFINED__
9535
9536/* interface ID3D12Device */
9537/* [unique][local][object][uuid] */
9538
9539
9540EXTERN_C const IID IID_ID3D12Device;
9541
9542#if defined(__cplusplus) && !defined(CINTERFACE)
9543
9544 MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
9545 ID3D12Device : public ID3D12Object
9546 {
9547 public:
9548 virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
9549
9550 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
9551 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9552 REFIID riid,
9553 _COM_Outptr_ void **ppCommandQueue) = 0;
9554
9555 virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
9556 _In_ D3D12_COMMAND_LIST_TYPE type,
9557 REFIID riid,
9558 _COM_Outptr_ void **ppCommandAllocator) = 0;
9559
9560 virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
9561 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9562 REFIID riid,
9563 _COM_Outptr_ void **ppPipelineState) = 0;
9564
9565 virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
9566 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9567 REFIID riid,
9568 _COM_Outptr_ void **ppPipelineState) = 0;
9569
9570 virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
9571 _In_ UINT nodeMask,
9572 _In_ D3D12_COMMAND_LIST_TYPE type,
9573 _In_ ID3D12CommandAllocator *pCommandAllocator,
9574 _In_opt_ ID3D12PipelineState *pInitialState,
9575 REFIID riid,
9576 _COM_Outptr_ void **ppCommandList) = 0;
9577
9578 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
9579 D3D12_FEATURE Feature,
9580 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9581 UINT FeatureSupportDataSize) = 0;
9582
9583 virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
9584 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9585 REFIID riid,
9586 _COM_Outptr_ void **ppvHeap) = 0;
9587
9588 virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
9589 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
9590
9591 virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
9592 _In_ UINT nodeMask,
9593 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9594 _In_ SIZE_T blobLengthInBytes,
9595 REFIID riid,
9596 _COM_Outptr_ void **ppvRootSignature) = 0;
9597
9598 virtual void STDMETHODCALLTYPE CreateConstantBufferView(
9599 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9600 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9601
9602 virtual void STDMETHODCALLTYPE CreateShaderResourceView(
9603 _In_opt_ ID3D12Resource *pResource,
9604 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9605 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9606
9607 virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
9608 _In_opt_ ID3D12Resource *pResource,
9609 _In_opt_ ID3D12Resource *pCounterResource,
9610 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9611 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9612
9613 virtual void STDMETHODCALLTYPE CreateRenderTargetView(
9614 _In_opt_ ID3D12Resource *pResource,
9615 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9616 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9617
9618 virtual void STDMETHODCALLTYPE CreateDepthStencilView(
9619 _In_opt_ ID3D12Resource *pResource,
9620 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9621 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9622
9623 virtual void STDMETHODCALLTYPE CreateSampler(
9624 _In_ const D3D12_SAMPLER_DESC *pDesc,
9625 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
9626
9627 virtual void STDMETHODCALLTYPE CopyDescriptors(
9628 _In_ UINT NumDestDescriptorRanges,
9629 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9630 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9631 _In_ UINT NumSrcDescriptorRanges,
9632 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9633 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9634 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9635
9636 virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
9637 _In_ UINT NumDescriptors,
9638 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9639 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9640 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
9641
9642#if defined(_MSC_VER) || !defined(_WIN32)
9643 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
9644 _In_ UINT visibleMask,
9645 _In_ UINT numResourceDescs,
9646 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9647#else
9648 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo(
9649 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9650 _In_ UINT visibleMask,
9651 _In_ UINT numResourceDescs,
9652 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
9653#endif
9654
9655#if defined(_MSC_VER) || !defined(_WIN32)
9656 virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
9657 _In_ UINT nodeMask,
9658 D3D12_HEAP_TYPE heapType) = 0;
9659#else
9660 virtual D3D12_HEAP_PROPERTIES *STDMETHODCALLTYPE GetCustomHeapProperties(
9661 D3D12_HEAP_PROPERTIES * RetVal,
9662 _In_ UINT nodeMask,
9663 D3D12_HEAP_TYPE heapType) = 0;
9664#endif
9665
9666 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
9667 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9668 D3D12_HEAP_FLAGS HeapFlags,
9669 _In_ const D3D12_RESOURCE_DESC *pDesc,
9670 D3D12_RESOURCE_STATES InitialResourceState,
9671 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9672 REFIID riidResource,
9673 _COM_Outptr_opt_ void **ppvResource) = 0;
9674
9675 virtual HRESULT STDMETHODCALLTYPE CreateHeap(
9676 _In_ const D3D12_HEAP_DESC *pDesc,
9677 REFIID riid,
9678 _COM_Outptr_opt_ void **ppvHeap) = 0;
9679
9680 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
9681 _In_ ID3D12Heap *pHeap,
9682 UINT64 HeapOffset,
9683 _In_ const D3D12_RESOURCE_DESC *pDesc,
9684 D3D12_RESOURCE_STATES InitialState,
9685 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9686 REFIID riid,
9687 _COM_Outptr_opt_ void **ppvResource) = 0;
9688
9689 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
9690 _In_ const D3D12_RESOURCE_DESC *pDesc,
9691 D3D12_RESOURCE_STATES InitialState,
9692 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9693 REFIID riid,
9694 _COM_Outptr_opt_ void **ppvResource) = 0;
9695
9696 virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
9697 _In_ ID3D12DeviceChild *pObject,
9698 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
9699 DWORD Access,
9700 _In_opt_ LPCWSTR Name,
9701 _Out_ HANDLE *pHandle) = 0;
9702
9703 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
9704 _In_ HANDLE NTHandle,
9705 REFIID riid,
9706 _COM_Outptr_opt_ void **ppvObj) = 0;
9707
9708 virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
9709 _In_ LPCWSTR Name,
9710 DWORD Access,
9711 /* [annotation][out] */
9712 _Out_ HANDLE *pNTHandle) = 0;
9713
9714 virtual HRESULT STDMETHODCALLTYPE MakeResident(
9715 UINT NumObjects,
9716 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9717
9718 virtual HRESULT STDMETHODCALLTYPE Evict(
9719 UINT NumObjects,
9720 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
9721
9722 virtual HRESULT STDMETHODCALLTYPE CreateFence(
9723 UINT64 InitialValue,
9724 D3D12_FENCE_FLAGS Flags,
9725 REFIID riid,
9726 _COM_Outptr_ void **ppFence) = 0;
9727
9728 virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
9729
9730 virtual void STDMETHODCALLTYPE GetCopyableFootprints(
9731 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
9732 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
9733 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
9734 UINT64 BaseOffset,
9735 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
9736 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
9737 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
9738 _Out_opt_ UINT64 *pTotalBytes) = 0;
9739
9740 virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
9741 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
9742 REFIID riid,
9743 _COM_Outptr_opt_ void **ppvHeap) = 0;
9744
9745 virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
9746 BOOL Enable) = 0;
9747
9748 virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
9749 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
9750 _In_opt_ ID3D12RootSignature *pRootSignature,
9751 REFIID riid,
9752 _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
9753
9754 virtual void STDMETHODCALLTYPE GetResourceTiling(
9755 _In_ ID3D12Resource *pTiledResource,
9756 _Out_opt_ UINT *pNumTilesForEntireResource,
9757 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
9758 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
9759 _Inout_opt_ UINT *pNumSubresourceTilings,
9760 _In_ UINT FirstSubresourceTilingToGet,
9761 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
9762
9763#if defined(_MSC_VER) || !defined(_WIN32)
9764 virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
9765#else
9766 virtual LUID *STDMETHODCALLTYPE GetAdapterLuid(
9767 LUID * RetVal) = 0;
9768#endif
9769
9770 };
9771
9772
9773#else /* C style interface */
9774
9775 typedef struct ID3D12DeviceVtbl
9776 {
9777 BEGIN_INTERFACE
9778
9779 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9780 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9781 ID3D12Device * This,
9782 REFIID riid,
9783 _COM_Outptr_ void **ppvObject);
9784
9785 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9786 ULONG ( STDMETHODCALLTYPE *AddRef )(
9787 ID3D12Device * This);
9788
9789 DECLSPEC_XFGVIRT(IUnknown, Release)
9790 ULONG ( STDMETHODCALLTYPE *Release )(
9791 ID3D12Device * This);
9792
9793 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9794 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9795 ID3D12Device * This,
9796 _In_ REFGUID guid,
9797 _Inout_ UINT *pDataSize,
9798 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9799
9800 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9801 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9802 ID3D12Device * This,
9803 _In_ REFGUID guid,
9804 _In_ UINT DataSize,
9805 _In_reads_bytes_opt_( DataSize ) const void *pData);
9806
9807 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9808 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9809 ID3D12Device * This,
9810 _In_ REFGUID guid,
9811 _In_opt_ const IUnknown *pData);
9812
9813 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9814 HRESULT ( STDMETHODCALLTYPE *SetName )(
9815 ID3D12Device * This,
9816 _In_z_ LPCWSTR Name);
9817
9818 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
9819 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
9820 ID3D12Device * This);
9821
9822 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
9823 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
9824 ID3D12Device * This,
9825 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
9826 REFIID riid,
9827 _COM_Outptr_ void **ppCommandQueue);
9828
9829 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
9830 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
9831 ID3D12Device * This,
9832 _In_ D3D12_COMMAND_LIST_TYPE type,
9833 REFIID riid,
9834 _COM_Outptr_ void **ppCommandAllocator);
9835
9836 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
9837 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
9838 ID3D12Device * This,
9839 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
9840 REFIID riid,
9841 _COM_Outptr_ void **ppPipelineState);
9842
9843 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
9844 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
9845 ID3D12Device * This,
9846 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
9847 REFIID riid,
9848 _COM_Outptr_ void **ppPipelineState);
9849
9850 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
9851 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
9852 ID3D12Device * This,
9853 _In_ UINT nodeMask,
9854 _In_ D3D12_COMMAND_LIST_TYPE type,
9855 _In_ ID3D12CommandAllocator *pCommandAllocator,
9856 _In_opt_ ID3D12PipelineState *pInitialState,
9857 REFIID riid,
9858 _COM_Outptr_ void **ppCommandList);
9859
9860 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
9861 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9862 ID3D12Device * This,
9863 D3D12_FEATURE Feature,
9864 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9865 UINT FeatureSupportDataSize);
9866
9867 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
9868 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
9869 ID3D12Device * This,
9870 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
9871 REFIID riid,
9872 _COM_Outptr_ void **ppvHeap);
9873
9874 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
9875 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
9876 ID3D12Device * This,
9877 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
9878
9879 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
9880 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
9881 ID3D12Device * This,
9882 _In_ UINT nodeMask,
9883 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
9884 _In_ SIZE_T blobLengthInBytes,
9885 REFIID riid,
9886 _COM_Outptr_ void **ppvRootSignature);
9887
9888 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
9889 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
9890 ID3D12Device * This,
9891 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
9892 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9893
9894 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
9895 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
9896 ID3D12Device * This,
9897 _In_opt_ ID3D12Resource *pResource,
9898 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
9899 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9900
9901 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
9902 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
9903 ID3D12Device * This,
9904 _In_opt_ ID3D12Resource *pResource,
9905 _In_opt_ ID3D12Resource *pCounterResource,
9906 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
9907 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9908
9909 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
9910 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
9911 ID3D12Device * This,
9912 _In_opt_ ID3D12Resource *pResource,
9913 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
9914 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9915
9916 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
9917 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
9918 ID3D12Device * This,
9919 _In_opt_ ID3D12Resource *pResource,
9920 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
9921 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9922
9923 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
9924 void ( STDMETHODCALLTYPE *CreateSampler )(
9925 ID3D12Device * This,
9926 _In_ const D3D12_SAMPLER_DESC *pDesc,
9927 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
9928
9929 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
9930 void ( STDMETHODCALLTYPE *CopyDescriptors )(
9931 ID3D12Device * This,
9932 _In_ UINT NumDestDescriptorRanges,
9933 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
9934 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
9935 _In_ UINT NumSrcDescriptorRanges,
9936 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
9937 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
9938 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9939
9940 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
9941 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
9942 ID3D12Device * This,
9943 _In_ UINT NumDescriptors,
9944 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
9945 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
9946 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
9947
9948 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
9949#if !defined(_WIN32)
9950 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9951 ID3D12Device * This,
9952 _In_ UINT visibleMask,
9953 _In_ UINT numResourceDescs,
9954 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9955
9956#else
9957 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
9958 ID3D12Device * This,
9959 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
9960 _In_ UINT visibleMask,
9961 _In_ UINT numResourceDescs,
9962 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
9963
9964#endif
9965
9966 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
9967#if !defined(_WIN32)
9968 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9969 ID3D12Device * This,
9970 _In_ UINT nodeMask,
9971 D3D12_HEAP_TYPE heapType);
9972
9973#else
9974 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
9975 ID3D12Device * This,
9976 D3D12_HEAP_PROPERTIES * RetVal,
9977 _In_ UINT nodeMask,
9978 D3D12_HEAP_TYPE heapType);
9979
9980#endif
9981
9982 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
9983 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
9984 ID3D12Device * This,
9985 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
9986 D3D12_HEAP_FLAGS HeapFlags,
9987 _In_ const D3D12_RESOURCE_DESC *pDesc,
9988 D3D12_RESOURCE_STATES InitialResourceState,
9989 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
9990 REFIID riidResource,
9991 _COM_Outptr_opt_ void **ppvResource);
9992
9993 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
9994 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
9995 ID3D12Device * This,
9996 _In_ const D3D12_HEAP_DESC *pDesc,
9997 REFIID riid,
9998 _COM_Outptr_opt_ void **ppvHeap);
9999
10000 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10001 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10002 ID3D12Device * This,
10003 _In_ ID3D12Heap *pHeap,
10004 UINT64 HeapOffset,
10005 _In_ const D3D12_RESOURCE_DESC *pDesc,
10006 D3D12_RESOURCE_STATES InitialState,
10007 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10008 REFIID riid,
10009 _COM_Outptr_opt_ void **ppvResource);
10010
10011 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10012 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10013 ID3D12Device * This,
10014 _In_ const D3D12_RESOURCE_DESC *pDesc,
10015 D3D12_RESOURCE_STATES InitialState,
10016 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10017 REFIID riid,
10018 _COM_Outptr_opt_ void **ppvResource);
10019
10020 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10021 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10022 ID3D12Device * This,
10023 _In_ ID3D12DeviceChild *pObject,
10024 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10025 DWORD Access,
10026 _In_opt_ LPCWSTR Name,
10027 _Out_ HANDLE *pHandle);
10028
10029 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10030 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10031 ID3D12Device * This,
10032 _In_ HANDLE NTHandle,
10033 REFIID riid,
10034 _COM_Outptr_opt_ void **ppvObj);
10035
10036 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10037 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10038 ID3D12Device * This,
10039 _In_ LPCWSTR Name,
10040 DWORD Access,
10041 /* [annotation][out] */
10042 _Out_ HANDLE *pNTHandle);
10043
10044 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
10045 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
10046 ID3D12Device * This,
10047 UINT NumObjects,
10048 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10049
10050 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
10051 HRESULT ( STDMETHODCALLTYPE *Evict )(
10052 ID3D12Device * This,
10053 UINT NumObjects,
10054 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
10055
10056 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
10057 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
10058 ID3D12Device * This,
10059 UINT64 InitialValue,
10060 D3D12_FENCE_FLAGS Flags,
10061 REFIID riid,
10062 _COM_Outptr_ void **ppFence);
10063
10064 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
10065 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
10066 ID3D12Device * This);
10067
10068 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
10069 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
10070 ID3D12Device * This,
10071 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
10072 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
10073 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
10074 UINT64 BaseOffset,
10075 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
10076 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
10077 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
10078 _Out_opt_ UINT64 *pTotalBytes);
10079
10080 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
10081 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
10082 ID3D12Device * This,
10083 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
10084 REFIID riid,
10085 _COM_Outptr_opt_ void **ppvHeap);
10086
10087 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
10088 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
10089 ID3D12Device * This,
10090 BOOL Enable);
10091
10092 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
10093 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
10094 ID3D12Device * This,
10095 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
10096 _In_opt_ ID3D12RootSignature *pRootSignature,
10097 REFIID riid,
10098 _COM_Outptr_opt_ void **ppvCommandSignature);
10099
10100 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
10101 void ( STDMETHODCALLTYPE *GetResourceTiling )(
10102 ID3D12Device * This,
10103 _In_ ID3D12Resource *pTiledResource,
10104 _Out_opt_ UINT *pNumTilesForEntireResource,
10105 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
10106 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
10107 _Inout_opt_ UINT *pNumSubresourceTilings,
10108 _In_ UINT FirstSubresourceTilingToGet,
10109 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
10110
10111 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
10112#if !defined(_WIN32)
10113 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
10114 ID3D12Device * This);
10115
10116#else
10117 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
10118 ID3D12Device * This,
10119 LUID * RetVal);
10120
10121#endif
10122
10123 END_INTERFACE
10124 } ID3D12DeviceVtbl;
10125
10126 interface ID3D12Device
10127 {
10128 CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
10129 };
10130
10131
10132
10133#ifdef COBJMACROS
10134
10135
10136#define ID3D12Device_QueryInterface(This,riid,ppvObject) \
10137 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10138
10139#define ID3D12Device_AddRef(This) \
10140 ( (This)->lpVtbl -> AddRef(This) )
10141
10142#define ID3D12Device_Release(This) \
10143 ( (This)->lpVtbl -> Release(This) )
10144
10145
10146#define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
10147 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10148
10149#define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
10150 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10151
10152#define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
10153 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10154
10155#define ID3D12Device_SetName(This,Name) \
10156 ( (This)->lpVtbl -> SetName(This,Name) )
10157
10158
10159#define ID3D12Device_GetNodeCount(This) \
10160 ( (This)->lpVtbl -> GetNodeCount(This) )
10161
10162#define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
10163 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
10164
10165#define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
10166 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
10167
10168#define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
10169 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
10170
10171#define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
10172 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
10173
10174#define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
10175 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
10176
10177#define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
10178 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
10179
10180#define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
10181 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
10182
10183#define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
10184 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
10185
10186#define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
10187 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
10188
10189#define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
10190 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
10191
10192#define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
10193 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
10194
10195#define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
10196 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
10197
10198#define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
10199 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
10200
10201#define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
10202 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
10203
10204#define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
10205 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
10206
10207#define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
10208 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
10209
10210#define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
10211 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
10212#if !defined(_WIN32)
10213
10214#define ID3D12Device_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
10215 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
10216#else
10217#define ID3D12Device_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
10218 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
10219#endif
10220#if !defined(_WIN32)
10221
10222#define ID3D12Device_GetCustomHeapProperties(This,nodeMask,heapType) \
10223 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
10224#else
10225#define ID3D12Device_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
10226 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
10227#endif
10228
10229#define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
10230 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
10231
10232#define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
10233 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
10234
10235#define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10236 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10237
10238#define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
10239 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
10240
10241#define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
10242 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
10243
10244#define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
10245 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
10246
10247#define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
10248 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
10249
10250#define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
10251 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
10252
10253#define ID3D12Device_Evict(This,NumObjects,ppObjects) \
10254 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
10255
10256#define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
10257 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
10258
10259#define ID3D12Device_GetDeviceRemovedReason(This) \
10260 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
10261
10262#define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
10263 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
10264
10265#define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
10266 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
10267
10268#define ID3D12Device_SetStablePowerState(This,Enable) \
10269 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
10270
10271#define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
10272 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
10273
10274#define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
10275 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
10276#if !defined(_WIN32)
10277
10278#define ID3D12Device_GetAdapterLuid(This) \
10279 ( (This)->lpVtbl -> GetAdapterLuid(This) )
10280#else
10281#define ID3D12Device_GetAdapterLuid(This,RetVal) \
10282 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
10283#endif
10284
10285#endif /* COBJMACROS */
10286
10287
10288#endif /* C style interface */
10289
10290
10291
10292
10293#endif /* __ID3D12Device_INTERFACE_DEFINED__ */
10294
10295
10296#ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10297#define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
10298
10299/* interface ID3D12PipelineLibrary */
10300/* [unique][local][object][uuid] */
10301
10302
10303EXTERN_C const IID IID_ID3D12PipelineLibrary;
10304
10305#if defined(__cplusplus) && !defined(CINTERFACE)
10306
10307 MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
10308 ID3D12PipelineLibrary : public ID3D12DeviceChild
10309 {
10310 public:
10311 virtual HRESULT STDMETHODCALLTYPE StorePipeline(
10312 _In_opt_ LPCWSTR pName,
10313 _In_ ID3D12PipelineState *pPipeline) = 0;
10314
10315 virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
10316 _In_ LPCWSTR pName,
10317 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10318 REFIID riid,
10319 _COM_Outptr_ void **ppPipelineState) = 0;
10320
10321 virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
10322 _In_ LPCWSTR pName,
10323 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10324 REFIID riid,
10325 _COM_Outptr_ void **ppPipelineState) = 0;
10326
10327 virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
10328
10329 virtual HRESULT STDMETHODCALLTYPE Serialize(
10330 _Out_writes_(DataSizeInBytes) void *pData,
10331 SIZE_T DataSizeInBytes) = 0;
10332
10333 };
10334
10335
10336#else /* C style interface */
10337
10338 typedef struct ID3D12PipelineLibraryVtbl
10339 {
10340 BEGIN_INTERFACE
10341
10342 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10343 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10344 ID3D12PipelineLibrary * This,
10345 REFIID riid,
10346 _COM_Outptr_ void **ppvObject);
10347
10348 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10349 ULONG ( STDMETHODCALLTYPE *AddRef )(
10350 ID3D12PipelineLibrary * This);
10351
10352 DECLSPEC_XFGVIRT(IUnknown, Release)
10353 ULONG ( STDMETHODCALLTYPE *Release )(
10354 ID3D12PipelineLibrary * This);
10355
10356 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10357 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10358 ID3D12PipelineLibrary * This,
10359 _In_ REFGUID guid,
10360 _Inout_ UINT *pDataSize,
10361 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10362
10363 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10364 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10365 ID3D12PipelineLibrary * This,
10366 _In_ REFGUID guid,
10367 _In_ UINT DataSize,
10368 _In_reads_bytes_opt_( DataSize ) const void *pData);
10369
10370 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10371 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10372 ID3D12PipelineLibrary * This,
10373 _In_ REFGUID guid,
10374 _In_opt_ const IUnknown *pData);
10375
10376 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10377 HRESULT ( STDMETHODCALLTYPE *SetName )(
10378 ID3D12PipelineLibrary * This,
10379 _In_z_ LPCWSTR Name);
10380
10381 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10382 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10383 ID3D12PipelineLibrary * This,
10384 REFIID riid,
10385 _COM_Outptr_opt_ void **ppvDevice);
10386
10387 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10388 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10389 ID3D12PipelineLibrary * This,
10390 _In_opt_ LPCWSTR pName,
10391 _In_ ID3D12PipelineState *pPipeline);
10392
10393 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10394 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10395 ID3D12PipelineLibrary * This,
10396 _In_ LPCWSTR pName,
10397 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10398 REFIID riid,
10399 _COM_Outptr_ void **ppPipelineState);
10400
10401 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10402 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10403 ID3D12PipelineLibrary * This,
10404 _In_ LPCWSTR pName,
10405 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10406 REFIID riid,
10407 _COM_Outptr_ void **ppPipelineState);
10408
10409 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10410 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10411 ID3D12PipelineLibrary * This);
10412
10413 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10414 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10415 ID3D12PipelineLibrary * This,
10416 _Out_writes_(DataSizeInBytes) void *pData,
10417 SIZE_T DataSizeInBytes);
10418
10419 END_INTERFACE
10420 } ID3D12PipelineLibraryVtbl;
10421
10422 interface ID3D12PipelineLibrary
10423 {
10424 CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
10425 };
10426
10427
10428
10429#ifdef COBJMACROS
10430
10431
10432#define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
10433 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10434
10435#define ID3D12PipelineLibrary_AddRef(This) \
10436 ( (This)->lpVtbl -> AddRef(This) )
10437
10438#define ID3D12PipelineLibrary_Release(This) \
10439 ( (This)->lpVtbl -> Release(This) )
10440
10441
10442#define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
10443 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10444
10445#define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
10446 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10447
10448#define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
10449 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10450
10451#define ID3D12PipelineLibrary_SetName(This,Name) \
10452 ( (This)->lpVtbl -> SetName(This,Name) )
10453
10454
10455#define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
10456 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10457
10458
10459#define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
10460 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10461
10462#define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10463 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10464
10465#define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10466 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10467
10468#define ID3D12PipelineLibrary_GetSerializedSize(This) \
10469 ( (This)->lpVtbl -> GetSerializedSize(This) )
10470
10471#define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
10472 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10473
10474#endif /* COBJMACROS */
10475
10476
10477#endif /* C style interface */
10478
10479
10480
10481
10482#endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
10483
10484
10485#ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10486#define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
10487
10488/* interface ID3D12PipelineLibrary1 */
10489/* [unique][local][object][uuid] */
10490
10491
10492EXTERN_C const IID IID_ID3D12PipelineLibrary1;
10493
10494#if defined(__cplusplus) && !defined(CINTERFACE)
10495
10496 MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
10497 ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
10498 {
10499 public:
10500 virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
10501 _In_ LPCWSTR pName,
10502 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10503 REFIID riid,
10504 _COM_Outptr_ void **ppPipelineState) = 0;
10505
10506 };
10507
10508
10509#else /* C style interface */
10510
10511 typedef struct ID3D12PipelineLibrary1Vtbl
10512 {
10513 BEGIN_INTERFACE
10514
10515 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10516 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10517 ID3D12PipelineLibrary1 * This,
10518 REFIID riid,
10519 _COM_Outptr_ void **ppvObject);
10520
10521 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10522 ULONG ( STDMETHODCALLTYPE *AddRef )(
10523 ID3D12PipelineLibrary1 * This);
10524
10525 DECLSPEC_XFGVIRT(IUnknown, Release)
10526 ULONG ( STDMETHODCALLTYPE *Release )(
10527 ID3D12PipelineLibrary1 * This);
10528
10529 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10530 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10531 ID3D12PipelineLibrary1 * This,
10532 _In_ REFGUID guid,
10533 _Inout_ UINT *pDataSize,
10534 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10535
10536 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10537 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10538 ID3D12PipelineLibrary1 * This,
10539 _In_ REFGUID guid,
10540 _In_ UINT DataSize,
10541 _In_reads_bytes_opt_( DataSize ) const void *pData);
10542
10543 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10544 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10545 ID3D12PipelineLibrary1 * This,
10546 _In_ REFGUID guid,
10547 _In_opt_ const IUnknown *pData);
10548
10549 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10550 HRESULT ( STDMETHODCALLTYPE *SetName )(
10551 ID3D12PipelineLibrary1 * This,
10552 _In_z_ LPCWSTR Name);
10553
10554 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10555 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10556 ID3D12PipelineLibrary1 * This,
10557 REFIID riid,
10558 _COM_Outptr_opt_ void **ppvDevice);
10559
10560 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, StorePipeline)
10561 HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
10562 ID3D12PipelineLibrary1 * This,
10563 _In_opt_ LPCWSTR pName,
10564 _In_ ID3D12PipelineState *pPipeline);
10565
10566 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadGraphicsPipeline)
10567 HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
10568 ID3D12PipelineLibrary1 * This,
10569 _In_ LPCWSTR pName,
10570 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10571 REFIID riid,
10572 _COM_Outptr_ void **ppPipelineState);
10573
10574 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, LoadComputePipeline)
10575 HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
10576 ID3D12PipelineLibrary1 * This,
10577 _In_ LPCWSTR pName,
10578 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10579 REFIID riid,
10580 _COM_Outptr_ void **ppPipelineState);
10581
10582 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, GetSerializedSize)
10583 SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
10584 ID3D12PipelineLibrary1 * This);
10585
10586 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary, Serialize)
10587 HRESULT ( STDMETHODCALLTYPE *Serialize )(
10588 ID3D12PipelineLibrary1 * This,
10589 _Out_writes_(DataSizeInBytes) void *pData,
10590 SIZE_T DataSizeInBytes);
10591
10592 DECLSPEC_XFGVIRT(ID3D12PipelineLibrary1, LoadPipeline)
10593 HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
10594 ID3D12PipelineLibrary1 * This,
10595 _In_ LPCWSTR pName,
10596 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
10597 REFIID riid,
10598 _COM_Outptr_ void **ppPipelineState);
10599
10600 END_INTERFACE
10601 } ID3D12PipelineLibrary1Vtbl;
10602
10603 interface ID3D12PipelineLibrary1
10604 {
10605 CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
10606 };
10607
10608
10609
10610#ifdef COBJMACROS
10611
10612
10613#define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
10614 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10615
10616#define ID3D12PipelineLibrary1_AddRef(This) \
10617 ( (This)->lpVtbl -> AddRef(This) )
10618
10619#define ID3D12PipelineLibrary1_Release(This) \
10620 ( (This)->lpVtbl -> Release(This) )
10621
10622
10623#define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
10624 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10625
10626#define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
10627 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10628
10629#define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
10630 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10631
10632#define ID3D12PipelineLibrary1_SetName(This,Name) \
10633 ( (This)->lpVtbl -> SetName(This,Name) )
10634
10635
10636#define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
10637 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10638
10639
10640#define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
10641 ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
10642
10643#define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
10644 ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
10645
10646#define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
10647 ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
10648
10649#define ID3D12PipelineLibrary1_GetSerializedSize(This) \
10650 ( (This)->lpVtbl -> GetSerializedSize(This) )
10651
10652#define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
10653 ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
10654
10655
10656#define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
10657 ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
10658
10659#endif /* COBJMACROS */
10660
10661
10662#endif /* C style interface */
10663
10664
10665
10666
10667#endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
10668
10669
10670/* interface __MIDL_itf_d3d12_0000_0025 */
10671/* [local] */
10672
10673typedef
10674enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
10675 {
10676 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
10677 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
10678 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
10679 } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
10680
10681DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )
10682typedef
10683enum D3D12_RESIDENCY_PRIORITY
10684 {
10685 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
10686 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
10687 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
10688 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
10689 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
10690 } D3D12_RESIDENCY_PRIORITY;
10691
10692
10693
10694extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_c_ifspec;
10695extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0025_v0_0_s_ifspec;
10696
10697#ifndef __ID3D12Device1_INTERFACE_DEFINED__
10698#define __ID3D12Device1_INTERFACE_DEFINED__
10699
10700/* interface ID3D12Device1 */
10701/* [unique][local][object][uuid] */
10702
10703
10704EXTERN_C const IID IID_ID3D12Device1;
10705
10706#if defined(__cplusplus) && !defined(CINTERFACE)
10707
10708 MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
10709 ID3D12Device1 : public ID3D12Device
10710 {
10711 public:
10712 virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
10713 _In_reads_(BlobLength) const void *pLibraryBlob,
10714 SIZE_T BlobLength,
10715 REFIID riid,
10716 _COM_Outptr_ void **ppPipelineLibrary) = 0;
10717
10718 virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
10719 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
10720 _In_reads_(NumFences) const UINT64 *pFenceValues,
10721 UINT NumFences,
10722 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
10723 HANDLE hEvent) = 0;
10724
10725 virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
10726 UINT NumObjects,
10727 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
10728 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
10729
10730 };
10731
10732
10733#else /* C style interface */
10734
10735 typedef struct ID3D12Device1Vtbl
10736 {
10737 BEGIN_INTERFACE
10738
10739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10741 ID3D12Device1 * This,
10742 REFIID riid,
10743 _COM_Outptr_ void **ppvObject);
10744
10745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10746 ULONG ( STDMETHODCALLTYPE *AddRef )(
10747 ID3D12Device1 * This);
10748
10749 DECLSPEC_XFGVIRT(IUnknown, Release)
10750 ULONG ( STDMETHODCALLTYPE *Release )(
10751 ID3D12Device1 * This);
10752
10753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10755 ID3D12Device1 * This,
10756 _In_ REFGUID guid,
10757 _Inout_ UINT *pDataSize,
10758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10759
10760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10762 ID3D12Device1 * This,
10763 _In_ REFGUID guid,
10764 _In_ UINT DataSize,
10765 _In_reads_bytes_opt_( DataSize ) const void *pData);
10766
10767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10769 ID3D12Device1 * This,
10770 _In_ REFGUID guid,
10771 _In_opt_ const IUnknown *pData);
10772
10773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10774 HRESULT ( STDMETHODCALLTYPE *SetName )(
10775 ID3D12Device1 * This,
10776 _In_z_ LPCWSTR Name);
10777
10778 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
10779 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
10780 ID3D12Device1 * This);
10781
10782 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
10783 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
10784 ID3D12Device1 * This,
10785 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
10786 REFIID riid,
10787 _COM_Outptr_ void **ppCommandQueue);
10788
10789 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
10790 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
10791 ID3D12Device1 * This,
10792 _In_ D3D12_COMMAND_LIST_TYPE type,
10793 REFIID riid,
10794 _COM_Outptr_ void **ppCommandAllocator);
10795
10796 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
10797 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
10798 ID3D12Device1 * This,
10799 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
10800 REFIID riid,
10801 _COM_Outptr_ void **ppPipelineState);
10802
10803 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
10804 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
10805 ID3D12Device1 * This,
10806 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
10807 REFIID riid,
10808 _COM_Outptr_ void **ppPipelineState);
10809
10810 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
10811 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
10812 ID3D12Device1 * This,
10813 _In_ UINT nodeMask,
10814 _In_ D3D12_COMMAND_LIST_TYPE type,
10815 _In_ ID3D12CommandAllocator *pCommandAllocator,
10816 _In_opt_ ID3D12PipelineState *pInitialState,
10817 REFIID riid,
10818 _COM_Outptr_ void **ppCommandList);
10819
10820 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
10821 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
10822 ID3D12Device1 * This,
10823 D3D12_FEATURE Feature,
10824 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
10825 UINT FeatureSupportDataSize);
10826
10827 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
10828 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
10829 ID3D12Device1 * This,
10830 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
10831 REFIID riid,
10832 _COM_Outptr_ void **ppvHeap);
10833
10834 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
10835 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
10836 ID3D12Device1 * This,
10837 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
10838
10839 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
10840 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
10841 ID3D12Device1 * This,
10842 _In_ UINT nodeMask,
10843 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
10844 _In_ SIZE_T blobLengthInBytes,
10845 REFIID riid,
10846 _COM_Outptr_ void **ppvRootSignature);
10847
10848 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
10849 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
10850 ID3D12Device1 * This,
10851 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
10852 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10853
10854 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
10855 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
10856 ID3D12Device1 * This,
10857 _In_opt_ ID3D12Resource *pResource,
10858 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
10859 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10860
10861 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
10862 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
10863 ID3D12Device1 * This,
10864 _In_opt_ ID3D12Resource *pResource,
10865 _In_opt_ ID3D12Resource *pCounterResource,
10866 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
10867 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10868
10869 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
10870 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
10871 ID3D12Device1 * This,
10872 _In_opt_ ID3D12Resource *pResource,
10873 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
10874 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10875
10876 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
10877 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
10878 ID3D12Device1 * This,
10879 _In_opt_ ID3D12Resource *pResource,
10880 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
10881 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10882
10883 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
10884 void ( STDMETHODCALLTYPE *CreateSampler )(
10885 ID3D12Device1 * This,
10886 _In_ const D3D12_SAMPLER_DESC *pDesc,
10887 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
10888
10889 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
10890 void ( STDMETHODCALLTYPE *CopyDescriptors )(
10891 ID3D12Device1 * This,
10892 _In_ UINT NumDestDescriptorRanges,
10893 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
10894 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
10895 _In_ UINT NumSrcDescriptorRanges,
10896 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
10897 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
10898 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10899
10900 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
10901 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
10902 ID3D12Device1 * This,
10903 _In_ UINT NumDescriptors,
10904 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
10905 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
10906 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
10907
10908 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
10909#if !defined(_WIN32)
10910 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10911 ID3D12Device1 * This,
10912 _In_ UINT visibleMask,
10913 _In_ UINT numResourceDescs,
10914 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10915
10916#else
10917 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
10918 ID3D12Device1 * This,
10919 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
10920 _In_ UINT visibleMask,
10921 _In_ UINT numResourceDescs,
10922 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
10923
10924#endif
10925
10926 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
10927#if !defined(_WIN32)
10928 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10929 ID3D12Device1 * This,
10930 _In_ UINT nodeMask,
10931 D3D12_HEAP_TYPE heapType);
10932
10933#else
10934 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
10935 ID3D12Device1 * This,
10936 D3D12_HEAP_PROPERTIES * RetVal,
10937 _In_ UINT nodeMask,
10938 D3D12_HEAP_TYPE heapType);
10939
10940#endif
10941
10942 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
10943 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
10944 ID3D12Device1 * This,
10945 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
10946 D3D12_HEAP_FLAGS HeapFlags,
10947 _In_ const D3D12_RESOURCE_DESC *pDesc,
10948 D3D12_RESOURCE_STATES InitialResourceState,
10949 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10950 REFIID riidResource,
10951 _COM_Outptr_opt_ void **ppvResource);
10952
10953 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
10954 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
10955 ID3D12Device1 * This,
10956 _In_ const D3D12_HEAP_DESC *pDesc,
10957 REFIID riid,
10958 _COM_Outptr_opt_ void **ppvHeap);
10959
10960 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
10961 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
10962 ID3D12Device1 * This,
10963 _In_ ID3D12Heap *pHeap,
10964 UINT64 HeapOffset,
10965 _In_ const D3D12_RESOURCE_DESC *pDesc,
10966 D3D12_RESOURCE_STATES InitialState,
10967 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10968 REFIID riid,
10969 _COM_Outptr_opt_ void **ppvResource);
10970
10971 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
10972 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
10973 ID3D12Device1 * This,
10974 _In_ const D3D12_RESOURCE_DESC *pDesc,
10975 D3D12_RESOURCE_STATES InitialState,
10976 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
10977 REFIID riid,
10978 _COM_Outptr_opt_ void **ppvResource);
10979
10980 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
10981 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
10982 ID3D12Device1 * This,
10983 _In_ ID3D12DeviceChild *pObject,
10984 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
10985 DWORD Access,
10986 _In_opt_ LPCWSTR Name,
10987 _Out_ HANDLE *pHandle);
10988
10989 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
10990 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
10991 ID3D12Device1 * This,
10992 _In_ HANDLE NTHandle,
10993 REFIID riid,
10994 _COM_Outptr_opt_ void **ppvObj);
10995
10996 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
10997 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
10998 ID3D12Device1 * This,
10999 _In_ LPCWSTR Name,
11000 DWORD Access,
11001 /* [annotation][out] */
11002 _Out_ HANDLE *pNTHandle);
11003
11004 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11005 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11006 ID3D12Device1 * This,
11007 UINT NumObjects,
11008 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11009
11010 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11011 HRESULT ( STDMETHODCALLTYPE *Evict )(
11012 ID3D12Device1 * This,
11013 UINT NumObjects,
11014 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11015
11016 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11017 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11018 ID3D12Device1 * This,
11019 UINT64 InitialValue,
11020 D3D12_FENCE_FLAGS Flags,
11021 REFIID riid,
11022 _COM_Outptr_ void **ppFence);
11023
11024 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11025 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11026 ID3D12Device1 * This);
11027
11028 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11029 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11030 ID3D12Device1 * This,
11031 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11032 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11033 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11034 UINT64 BaseOffset,
11035 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11036 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11037 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11038 _Out_opt_ UINT64 *pTotalBytes);
11039
11040 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11041 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11042 ID3D12Device1 * This,
11043 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11044 REFIID riid,
11045 _COM_Outptr_opt_ void **ppvHeap);
11046
11047 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11048 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11049 ID3D12Device1 * This,
11050 BOOL Enable);
11051
11052 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11053 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11054 ID3D12Device1 * This,
11055 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11056 _In_opt_ ID3D12RootSignature *pRootSignature,
11057 REFIID riid,
11058 _COM_Outptr_opt_ void **ppvCommandSignature);
11059
11060 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11061 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11062 ID3D12Device1 * This,
11063 _In_ ID3D12Resource *pTiledResource,
11064 _Out_opt_ UINT *pNumTilesForEntireResource,
11065 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11066 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11067 _Inout_opt_ UINT *pNumSubresourceTilings,
11068 _In_ UINT FirstSubresourceTilingToGet,
11069 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11070
11071 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11072#if !defined(_WIN32)
11073 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11074 ID3D12Device1 * This);
11075
11076#else
11077 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11078 ID3D12Device1 * This,
11079 LUID * RetVal);
11080
11081#endif
11082
11083 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11084 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11085 ID3D12Device1 * This,
11086 _In_reads_(BlobLength) const void *pLibraryBlob,
11087 SIZE_T BlobLength,
11088 REFIID riid,
11089 _COM_Outptr_ void **ppPipelineLibrary);
11090
11091 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11092 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11093 ID3D12Device1 * This,
11094 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11095 _In_reads_(NumFences) const UINT64 *pFenceValues,
11096 UINT NumFences,
11097 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11098 HANDLE hEvent);
11099
11100 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11101 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11102 ID3D12Device1 * This,
11103 UINT NumObjects,
11104 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11105 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11106
11107 END_INTERFACE
11108 } ID3D12Device1Vtbl;
11109
11110 interface ID3D12Device1
11111 {
11112 CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
11113 };
11114
11115
11116
11117#ifdef COBJMACROS
11118
11119
11120#define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
11121 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11122
11123#define ID3D12Device1_AddRef(This) \
11124 ( (This)->lpVtbl -> AddRef(This) )
11125
11126#define ID3D12Device1_Release(This) \
11127 ( (This)->lpVtbl -> Release(This) )
11128
11129
11130#define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
11131 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11132
11133#define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
11134 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11135
11136#define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
11137 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11138
11139#define ID3D12Device1_SetName(This,Name) \
11140 ( (This)->lpVtbl -> SetName(This,Name) )
11141
11142
11143#define ID3D12Device1_GetNodeCount(This) \
11144 ( (This)->lpVtbl -> GetNodeCount(This) )
11145
11146#define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11147 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11148
11149#define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11150 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11151
11152#define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11153 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11154
11155#define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11156 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11157
11158#define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11159 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11160
11161#define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11162 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11163
11164#define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11165 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11166
11167#define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11168 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11169
11170#define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11171 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11172
11173#define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11174 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11175
11176#define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11177 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11178
11179#define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11180 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11181
11182#define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11183 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11184
11185#define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11186 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11187
11188#define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
11189 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11190
11191#define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11192 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11193
11194#define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11195 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11196#if !defined(_WIN32)
11197
11198#define ID3D12Device1_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11199 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11200#else
11201#define ID3D12Device1_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11202 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11203#endif
11204#if !defined(_WIN32)
11205
11206#define ID3D12Device1_GetCustomHeapProperties(This,nodeMask,heapType) \
11207 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11208#else
11209#define ID3D12Device1_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11210 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11211#endif
11212
11213#define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11214 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11215
11216#define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
11217 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11218
11219#define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11220 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11221
11222#define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11223 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11224
11225#define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11226 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11227
11228#define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11229 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11230
11231#define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11232 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11233
11234#define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
11235 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11236
11237#define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
11238 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11239
11240#define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11241 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11242
11243#define ID3D12Device1_GetDeviceRemovedReason(This) \
11244 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11245
11246#define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11247 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11248
11249#define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11250 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11251
11252#define ID3D12Device1_SetStablePowerState(This,Enable) \
11253 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11254
11255#define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11256 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11257
11258#define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11259 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11260#if !defined(_WIN32)
11261
11262#define ID3D12Device1_GetAdapterLuid(This) \
11263 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11264#else
11265#define ID3D12Device1_GetAdapterLuid(This,RetVal) \
11266 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11267#endif
11268
11269
11270#define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11271 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11272
11273#define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11274 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11275
11276#define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11277 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11278
11279#endif /* COBJMACROS */
11280
11281
11282#endif /* C style interface */
11283
11284
11285
11286
11287#endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
11288
11289
11290#ifndef __ID3D12Device2_INTERFACE_DEFINED__
11291#define __ID3D12Device2_INTERFACE_DEFINED__
11292
11293/* interface ID3D12Device2 */
11294/* [unique][local][object][uuid] */
11295
11296
11297EXTERN_C const IID IID_ID3D12Device2;
11298
11299#if defined(__cplusplus) && !defined(CINTERFACE)
11300
11301 MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
11302 ID3D12Device2 : public ID3D12Device1
11303 {
11304 public:
11305 virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
11306 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11307 REFIID riid,
11308 _COM_Outptr_ void **ppPipelineState) = 0;
11309
11310 };
11311
11312
11313#else /* C style interface */
11314
11315 typedef struct ID3D12Device2Vtbl
11316 {
11317 BEGIN_INTERFACE
11318
11319 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11320 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11321 ID3D12Device2 * This,
11322 REFIID riid,
11323 _COM_Outptr_ void **ppvObject);
11324
11325 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11326 ULONG ( STDMETHODCALLTYPE *AddRef )(
11327 ID3D12Device2 * This);
11328
11329 DECLSPEC_XFGVIRT(IUnknown, Release)
11330 ULONG ( STDMETHODCALLTYPE *Release )(
11331 ID3D12Device2 * This);
11332
11333 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11334 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11335 ID3D12Device2 * This,
11336 _In_ REFGUID guid,
11337 _Inout_ UINT *pDataSize,
11338 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11339
11340 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11341 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11342 ID3D12Device2 * This,
11343 _In_ REFGUID guid,
11344 _In_ UINT DataSize,
11345 _In_reads_bytes_opt_( DataSize ) const void *pData);
11346
11347 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11348 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11349 ID3D12Device2 * This,
11350 _In_ REFGUID guid,
11351 _In_opt_ const IUnknown *pData);
11352
11353 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11354 HRESULT ( STDMETHODCALLTYPE *SetName )(
11355 ID3D12Device2 * This,
11356 _In_z_ LPCWSTR Name);
11357
11358 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11359 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11360 ID3D12Device2 * This);
11361
11362 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11363 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11364 ID3D12Device2 * This,
11365 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11366 REFIID riid,
11367 _COM_Outptr_ void **ppCommandQueue);
11368
11369 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11370 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11371 ID3D12Device2 * This,
11372 _In_ D3D12_COMMAND_LIST_TYPE type,
11373 REFIID riid,
11374 _COM_Outptr_ void **ppCommandAllocator);
11375
11376 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11377 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11378 ID3D12Device2 * This,
11379 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11380 REFIID riid,
11381 _COM_Outptr_ void **ppPipelineState);
11382
11383 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
11384 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
11385 ID3D12Device2 * This,
11386 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
11387 REFIID riid,
11388 _COM_Outptr_ void **ppPipelineState);
11389
11390 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
11391 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
11392 ID3D12Device2 * This,
11393 _In_ UINT nodeMask,
11394 _In_ D3D12_COMMAND_LIST_TYPE type,
11395 _In_ ID3D12CommandAllocator *pCommandAllocator,
11396 _In_opt_ ID3D12PipelineState *pInitialState,
11397 REFIID riid,
11398 _COM_Outptr_ void **ppCommandList);
11399
11400 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
11401 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
11402 ID3D12Device2 * This,
11403 D3D12_FEATURE Feature,
11404 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
11405 UINT FeatureSupportDataSize);
11406
11407 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
11408 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
11409 ID3D12Device2 * This,
11410 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
11411 REFIID riid,
11412 _COM_Outptr_ void **ppvHeap);
11413
11414 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
11415 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
11416 ID3D12Device2 * This,
11417 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
11418
11419 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
11420 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
11421 ID3D12Device2 * This,
11422 _In_ UINT nodeMask,
11423 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
11424 _In_ SIZE_T blobLengthInBytes,
11425 REFIID riid,
11426 _COM_Outptr_ void **ppvRootSignature);
11427
11428 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
11429 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
11430 ID3D12Device2 * This,
11431 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
11432 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11433
11434 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
11435 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
11436 ID3D12Device2 * This,
11437 _In_opt_ ID3D12Resource *pResource,
11438 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
11439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11440
11441 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
11442 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
11443 ID3D12Device2 * This,
11444 _In_opt_ ID3D12Resource *pResource,
11445 _In_opt_ ID3D12Resource *pCounterResource,
11446 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
11447 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11448
11449 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
11450 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
11451 ID3D12Device2 * This,
11452 _In_opt_ ID3D12Resource *pResource,
11453 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
11454 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11455
11456 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
11457 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
11458 ID3D12Device2 * This,
11459 _In_opt_ ID3D12Resource *pResource,
11460 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
11461 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11462
11463 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
11464 void ( STDMETHODCALLTYPE *CreateSampler )(
11465 ID3D12Device2 * This,
11466 _In_ const D3D12_SAMPLER_DESC *pDesc,
11467 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
11468
11469 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
11470 void ( STDMETHODCALLTYPE *CopyDescriptors )(
11471 ID3D12Device2 * This,
11472 _In_ UINT NumDestDescriptorRanges,
11473 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
11474 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
11475 _In_ UINT NumSrcDescriptorRanges,
11476 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
11477 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
11478 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11479
11480 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
11481 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
11482 ID3D12Device2 * This,
11483 _In_ UINT NumDescriptors,
11484 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
11485 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
11486 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
11487
11488 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
11489#if !defined(_WIN32)
11490 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11491 ID3D12Device2 * This,
11492 _In_ UINT visibleMask,
11493 _In_ UINT numResourceDescs,
11494 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11495
11496#else
11497 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
11498 ID3D12Device2 * This,
11499 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
11500 _In_ UINT visibleMask,
11501 _In_ UINT numResourceDescs,
11502 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
11503
11504#endif
11505
11506 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
11507#if !defined(_WIN32)
11508 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11509 ID3D12Device2 * This,
11510 _In_ UINT nodeMask,
11511 D3D12_HEAP_TYPE heapType);
11512
11513#else
11514 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
11515 ID3D12Device2 * This,
11516 D3D12_HEAP_PROPERTIES * RetVal,
11517 _In_ UINT nodeMask,
11518 D3D12_HEAP_TYPE heapType);
11519
11520#endif
11521
11522 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
11523 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
11524 ID3D12Device2 * This,
11525 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
11526 D3D12_HEAP_FLAGS HeapFlags,
11527 _In_ const D3D12_RESOURCE_DESC *pDesc,
11528 D3D12_RESOURCE_STATES InitialResourceState,
11529 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11530 REFIID riidResource,
11531 _COM_Outptr_opt_ void **ppvResource);
11532
11533 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
11534 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
11535 ID3D12Device2 * This,
11536 _In_ const D3D12_HEAP_DESC *pDesc,
11537 REFIID riid,
11538 _COM_Outptr_opt_ void **ppvHeap);
11539
11540 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
11541 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
11542 ID3D12Device2 * This,
11543 _In_ ID3D12Heap *pHeap,
11544 UINT64 HeapOffset,
11545 _In_ const D3D12_RESOURCE_DESC *pDesc,
11546 D3D12_RESOURCE_STATES InitialState,
11547 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11548 REFIID riid,
11549 _COM_Outptr_opt_ void **ppvResource);
11550
11551 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
11552 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
11553 ID3D12Device2 * This,
11554 _In_ const D3D12_RESOURCE_DESC *pDesc,
11555 D3D12_RESOURCE_STATES InitialState,
11556 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
11557 REFIID riid,
11558 _COM_Outptr_opt_ void **ppvResource);
11559
11560 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
11561 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
11562 ID3D12Device2 * This,
11563 _In_ ID3D12DeviceChild *pObject,
11564 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
11565 DWORD Access,
11566 _In_opt_ LPCWSTR Name,
11567 _Out_ HANDLE *pHandle);
11568
11569 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
11570 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
11571 ID3D12Device2 * This,
11572 _In_ HANDLE NTHandle,
11573 REFIID riid,
11574 _COM_Outptr_opt_ void **ppvObj);
11575
11576 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
11577 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
11578 ID3D12Device2 * This,
11579 _In_ LPCWSTR Name,
11580 DWORD Access,
11581 /* [annotation][out] */
11582 _Out_ HANDLE *pNTHandle);
11583
11584 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
11585 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
11586 ID3D12Device2 * This,
11587 UINT NumObjects,
11588 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11589
11590 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
11591 HRESULT ( STDMETHODCALLTYPE *Evict )(
11592 ID3D12Device2 * This,
11593 UINT NumObjects,
11594 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
11595
11596 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
11597 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
11598 ID3D12Device2 * This,
11599 UINT64 InitialValue,
11600 D3D12_FENCE_FLAGS Flags,
11601 REFIID riid,
11602 _COM_Outptr_ void **ppFence);
11603
11604 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
11605 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
11606 ID3D12Device2 * This);
11607
11608 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
11609 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
11610 ID3D12Device2 * This,
11611 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
11612 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
11613 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
11614 UINT64 BaseOffset,
11615 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
11616 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
11617 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
11618 _Out_opt_ UINT64 *pTotalBytes);
11619
11620 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
11621 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
11622 ID3D12Device2 * This,
11623 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
11624 REFIID riid,
11625 _COM_Outptr_opt_ void **ppvHeap);
11626
11627 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
11628 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
11629 ID3D12Device2 * This,
11630 BOOL Enable);
11631
11632 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
11633 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
11634 ID3D12Device2 * This,
11635 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
11636 _In_opt_ ID3D12RootSignature *pRootSignature,
11637 REFIID riid,
11638 _COM_Outptr_opt_ void **ppvCommandSignature);
11639
11640 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
11641 void ( STDMETHODCALLTYPE *GetResourceTiling )(
11642 ID3D12Device2 * This,
11643 _In_ ID3D12Resource *pTiledResource,
11644 _Out_opt_ UINT *pNumTilesForEntireResource,
11645 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
11646 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
11647 _Inout_opt_ UINT *pNumSubresourceTilings,
11648 _In_ UINT FirstSubresourceTilingToGet,
11649 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
11650
11651 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
11652#if !defined(_WIN32)
11653 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
11654 ID3D12Device2 * This);
11655
11656#else
11657 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
11658 ID3D12Device2 * This,
11659 LUID * RetVal);
11660
11661#endif
11662
11663 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
11664 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
11665 ID3D12Device2 * This,
11666 _In_reads_(BlobLength) const void *pLibraryBlob,
11667 SIZE_T BlobLength,
11668 REFIID riid,
11669 _COM_Outptr_ void **ppPipelineLibrary);
11670
11671 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
11672 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
11673 ID3D12Device2 * This,
11674 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
11675 _In_reads_(NumFences) const UINT64 *pFenceValues,
11676 UINT NumFences,
11677 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
11678 HANDLE hEvent);
11679
11680 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
11681 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
11682 ID3D12Device2 * This,
11683 UINT NumObjects,
11684 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11685 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
11686
11687 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
11688 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
11689 ID3D12Device2 * This,
11690 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
11691 REFIID riid,
11692 _COM_Outptr_ void **ppPipelineState);
11693
11694 END_INTERFACE
11695 } ID3D12Device2Vtbl;
11696
11697 interface ID3D12Device2
11698 {
11699 CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
11700 };
11701
11702
11703
11704#ifdef COBJMACROS
11705
11706
11707#define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
11708 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
11709
11710#define ID3D12Device2_AddRef(This) \
11711 ( (This)->lpVtbl -> AddRef(This) )
11712
11713#define ID3D12Device2_Release(This) \
11714 ( (This)->lpVtbl -> Release(This) )
11715
11716
11717#define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
11718 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
11719
11720#define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
11721 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
11722
11723#define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
11724 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
11725
11726#define ID3D12Device2_SetName(This,Name) \
11727 ( (This)->lpVtbl -> SetName(This,Name) )
11728
11729
11730#define ID3D12Device2_GetNodeCount(This) \
11731 ( (This)->lpVtbl -> GetNodeCount(This) )
11732
11733#define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
11734 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
11735
11736#define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
11737 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
11738
11739#define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
11740 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
11741
11742#define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
11743 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
11744
11745#define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
11746 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
11747
11748#define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
11749 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
11750
11751#define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
11752 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
11753
11754#define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
11755 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
11756
11757#define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
11758 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
11759
11760#define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
11761 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
11762
11763#define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
11764 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
11765
11766#define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
11767 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
11768
11769#define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
11770 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
11771
11772#define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
11773 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
11774
11775#define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
11776 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
11777
11778#define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
11779 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
11780
11781#define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
11782 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
11783#if !defined(_WIN32)
11784
11785#define ID3D12Device2_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
11786 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
11787#else
11788#define ID3D12Device2_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
11789 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
11790#endif
11791#if !defined(_WIN32)
11792
11793#define ID3D12Device2_GetCustomHeapProperties(This,nodeMask,heapType) \
11794 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
11795#else
11796#define ID3D12Device2_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
11797 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
11798#endif
11799
11800#define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
11801 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
11802
11803#define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
11804 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
11805
11806#define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11807 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11808
11809#define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
11810 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
11811
11812#define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
11813 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
11814
11815#define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
11816 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
11817
11818#define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
11819 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
11820
11821#define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
11822 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
11823
11824#define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
11825 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
11826
11827#define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
11828 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
11829
11830#define ID3D12Device2_GetDeviceRemovedReason(This) \
11831 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
11832
11833#define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
11834 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
11835
11836#define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
11837 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
11838
11839#define ID3D12Device2_SetStablePowerState(This,Enable) \
11840 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
11841
11842#define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
11843 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
11844
11845#define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
11846 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
11847#if !defined(_WIN32)
11848
11849#define ID3D12Device2_GetAdapterLuid(This) \
11850 ( (This)->lpVtbl -> GetAdapterLuid(This) )
11851#else
11852#define ID3D12Device2_GetAdapterLuid(This,RetVal) \
11853 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
11854#endif
11855
11856
11857#define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
11858 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
11859
11860#define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
11861 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
11862
11863#define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
11864 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
11865
11866
11867#define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
11868 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
11869
11870#endif /* COBJMACROS */
11871
11872
11873#endif /* C style interface */
11874
11875
11876
11877
11878#endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
11879
11880
11881/* interface __MIDL_itf_d3d12_0000_0027 */
11882/* [local] */
11883
11884typedef
11885enum D3D12_RESIDENCY_FLAGS
11886 {
11887 D3D12_RESIDENCY_FLAG_NONE = 0,
11888 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1
11889 } D3D12_RESIDENCY_FLAGS;
11890
11891DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )
11892
11893
11894extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_c_ifspec;
11895extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0027_v0_0_s_ifspec;
11896
11897#ifndef __ID3D12Device3_INTERFACE_DEFINED__
11898#define __ID3D12Device3_INTERFACE_DEFINED__
11899
11900/* interface ID3D12Device3 */
11901/* [unique][local][object][uuid] */
11902
11903
11904EXTERN_C const IID IID_ID3D12Device3;
11905
11906#if defined(__cplusplus) && !defined(CINTERFACE)
11907
11908 MIDL_INTERFACE("81dadc15-2bad-4392-93c5-101345c4aa98")
11909 ID3D12Device3 : public ID3D12Device2
11910 {
11911 public:
11912 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress(
11913 _In_ const void *pAddress,
11914 REFIID riid,
11915 _COM_Outptr_ void **ppvHeap) = 0;
11916
11917 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromFileMapping(
11918 _In_ HANDLE hFileMapping,
11919 REFIID riid,
11920 _COM_Outptr_ void **ppvHeap) = 0;
11921
11922 virtual HRESULT STDMETHODCALLTYPE EnqueueMakeResident(
11923 D3D12_RESIDENCY_FLAGS Flags,
11924 UINT NumObjects,
11925 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
11926 _In_ ID3D12Fence *pFenceToSignal,
11927 UINT64 FenceValueToSignal) = 0;
11928
11929 };
11930
11931
11932#else /* C style interface */
11933
11934 typedef struct ID3D12Device3Vtbl
11935 {
11936 BEGIN_INTERFACE
11937
11938 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
11939 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
11940 ID3D12Device3 * This,
11941 REFIID riid,
11942 _COM_Outptr_ void **ppvObject);
11943
11944 DECLSPEC_XFGVIRT(IUnknown, AddRef)
11945 ULONG ( STDMETHODCALLTYPE *AddRef )(
11946 ID3D12Device3 * This);
11947
11948 DECLSPEC_XFGVIRT(IUnknown, Release)
11949 ULONG ( STDMETHODCALLTYPE *Release )(
11950 ID3D12Device3 * This);
11951
11952 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
11953 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
11954 ID3D12Device3 * This,
11955 _In_ REFGUID guid,
11956 _Inout_ UINT *pDataSize,
11957 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
11958
11959 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
11960 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
11961 ID3D12Device3 * This,
11962 _In_ REFGUID guid,
11963 _In_ UINT DataSize,
11964 _In_reads_bytes_opt_( DataSize ) const void *pData);
11965
11966 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
11967 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
11968 ID3D12Device3 * This,
11969 _In_ REFGUID guid,
11970 _In_opt_ const IUnknown *pData);
11971
11972 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
11973 HRESULT ( STDMETHODCALLTYPE *SetName )(
11974 ID3D12Device3 * This,
11975 _In_z_ LPCWSTR Name);
11976
11977 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
11978 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
11979 ID3D12Device3 * This);
11980
11981 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
11982 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
11983 ID3D12Device3 * This,
11984 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
11985 REFIID riid,
11986 _COM_Outptr_ void **ppCommandQueue);
11987
11988 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
11989 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
11990 ID3D12Device3 * This,
11991 _In_ D3D12_COMMAND_LIST_TYPE type,
11992 REFIID riid,
11993 _COM_Outptr_ void **ppCommandAllocator);
11994
11995 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
11996 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
11997 ID3D12Device3 * This,
11998 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
11999 REFIID riid,
12000 _COM_Outptr_ void **ppPipelineState);
12001
12002 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
12003 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
12004 ID3D12Device3 * This,
12005 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
12006 REFIID riid,
12007 _COM_Outptr_ void **ppPipelineState);
12008
12009 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
12010 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
12011 ID3D12Device3 * This,
12012 _In_ UINT nodeMask,
12013 _In_ D3D12_COMMAND_LIST_TYPE type,
12014 _In_ ID3D12CommandAllocator *pCommandAllocator,
12015 _In_opt_ ID3D12PipelineState *pInitialState,
12016 REFIID riid,
12017 _COM_Outptr_ void **ppCommandList);
12018
12019 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
12020 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
12021 ID3D12Device3 * This,
12022 D3D12_FEATURE Feature,
12023 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
12024 UINT FeatureSupportDataSize);
12025
12026 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
12027 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
12028 ID3D12Device3 * This,
12029 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
12030 REFIID riid,
12031 _COM_Outptr_ void **ppvHeap);
12032
12033 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
12034 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
12035 ID3D12Device3 * This,
12036 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
12037
12038 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
12039 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
12040 ID3D12Device3 * This,
12041 _In_ UINT nodeMask,
12042 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
12043 _In_ SIZE_T blobLengthInBytes,
12044 REFIID riid,
12045 _COM_Outptr_ void **ppvRootSignature);
12046
12047 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
12048 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
12049 ID3D12Device3 * This,
12050 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
12051 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12052
12053 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
12054 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
12055 ID3D12Device3 * This,
12056 _In_opt_ ID3D12Resource *pResource,
12057 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
12058 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12059
12060 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
12061 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
12062 ID3D12Device3 * This,
12063 _In_opt_ ID3D12Resource *pResource,
12064 _In_opt_ ID3D12Resource *pCounterResource,
12065 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
12066 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12067
12068 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
12069 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
12070 ID3D12Device3 * This,
12071 _In_opt_ ID3D12Resource *pResource,
12072 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
12073 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12074
12075 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
12076 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
12077 ID3D12Device3 * This,
12078 _In_opt_ ID3D12Resource *pResource,
12079 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
12080 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12081
12082 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
12083 void ( STDMETHODCALLTYPE *CreateSampler )(
12084 ID3D12Device3 * This,
12085 _In_ const D3D12_SAMPLER_DESC *pDesc,
12086 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
12087
12088 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
12089 void ( STDMETHODCALLTYPE *CopyDescriptors )(
12090 ID3D12Device3 * This,
12091 _In_ UINT NumDestDescriptorRanges,
12092 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
12093 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
12094 _In_ UINT NumSrcDescriptorRanges,
12095 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
12096 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
12097 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12098
12099 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
12100 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
12101 ID3D12Device3 * This,
12102 _In_ UINT NumDescriptors,
12103 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
12104 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
12105 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
12106
12107 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
12108#if !defined(_WIN32)
12109 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12110 ID3D12Device3 * This,
12111 _In_ UINT visibleMask,
12112 _In_ UINT numResourceDescs,
12113 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12114
12115#else
12116 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
12117 ID3D12Device3 * This,
12118 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12119 _In_ UINT visibleMask,
12120 _In_ UINT numResourceDescs,
12121 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
12122
12123#endif
12124
12125 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
12126#if !defined(_WIN32)
12127 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12128 ID3D12Device3 * This,
12129 _In_ UINT nodeMask,
12130 D3D12_HEAP_TYPE heapType);
12131
12132#else
12133 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
12134 ID3D12Device3 * This,
12135 D3D12_HEAP_PROPERTIES * RetVal,
12136 _In_ UINT nodeMask,
12137 D3D12_HEAP_TYPE heapType);
12138
12139#endif
12140
12141 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
12142 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
12143 ID3D12Device3 * This,
12144 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12145 D3D12_HEAP_FLAGS HeapFlags,
12146 _In_ const D3D12_RESOURCE_DESC *pDesc,
12147 D3D12_RESOURCE_STATES InitialResourceState,
12148 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12149 REFIID riidResource,
12150 _COM_Outptr_opt_ void **ppvResource);
12151
12152 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
12153 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
12154 ID3D12Device3 * This,
12155 _In_ const D3D12_HEAP_DESC *pDesc,
12156 REFIID riid,
12157 _COM_Outptr_opt_ void **ppvHeap);
12158
12159 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
12160 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
12161 ID3D12Device3 * This,
12162 _In_ ID3D12Heap *pHeap,
12163 UINT64 HeapOffset,
12164 _In_ const D3D12_RESOURCE_DESC *pDesc,
12165 D3D12_RESOURCE_STATES InitialState,
12166 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12167 REFIID riid,
12168 _COM_Outptr_opt_ void **ppvResource);
12169
12170 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
12171 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
12172 ID3D12Device3 * This,
12173 _In_ const D3D12_RESOURCE_DESC *pDesc,
12174 D3D12_RESOURCE_STATES InitialState,
12175 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12176 REFIID riid,
12177 _COM_Outptr_opt_ void **ppvResource);
12178
12179 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
12180 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
12181 ID3D12Device3 * This,
12182 _In_ ID3D12DeviceChild *pObject,
12183 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
12184 DWORD Access,
12185 _In_opt_ LPCWSTR Name,
12186 _Out_ HANDLE *pHandle);
12187
12188 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
12189 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
12190 ID3D12Device3 * This,
12191 _In_ HANDLE NTHandle,
12192 REFIID riid,
12193 _COM_Outptr_opt_ void **ppvObj);
12194
12195 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
12196 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
12197 ID3D12Device3 * This,
12198 _In_ LPCWSTR Name,
12199 DWORD Access,
12200 /* [annotation][out] */
12201 _Out_ HANDLE *pNTHandle);
12202
12203 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
12204 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
12205 ID3D12Device3 * This,
12206 UINT NumObjects,
12207 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12208
12209 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
12210 HRESULT ( STDMETHODCALLTYPE *Evict )(
12211 ID3D12Device3 * This,
12212 UINT NumObjects,
12213 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
12214
12215 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
12216 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
12217 ID3D12Device3 * This,
12218 UINT64 InitialValue,
12219 D3D12_FENCE_FLAGS Flags,
12220 REFIID riid,
12221 _COM_Outptr_ void **ppFence);
12222
12223 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
12224 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
12225 ID3D12Device3 * This);
12226
12227 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
12228 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
12229 ID3D12Device3 * This,
12230 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
12231 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
12232 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
12233 UINT64 BaseOffset,
12234 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
12235 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
12236 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
12237 _Out_opt_ UINT64 *pTotalBytes);
12238
12239 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
12240 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
12241 ID3D12Device3 * This,
12242 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
12243 REFIID riid,
12244 _COM_Outptr_opt_ void **ppvHeap);
12245
12246 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
12247 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
12248 ID3D12Device3 * This,
12249 BOOL Enable);
12250
12251 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
12252 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
12253 ID3D12Device3 * This,
12254 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
12255 _In_opt_ ID3D12RootSignature *pRootSignature,
12256 REFIID riid,
12257 _COM_Outptr_opt_ void **ppvCommandSignature);
12258
12259 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
12260 void ( STDMETHODCALLTYPE *GetResourceTiling )(
12261 ID3D12Device3 * This,
12262 _In_ ID3D12Resource *pTiledResource,
12263 _Out_opt_ UINT *pNumTilesForEntireResource,
12264 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
12265 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
12266 _Inout_opt_ UINT *pNumSubresourceTilings,
12267 _In_ UINT FirstSubresourceTilingToGet,
12268 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
12269
12270 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
12271#if !defined(_WIN32)
12272 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
12273 ID3D12Device3 * This);
12274
12275#else
12276 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
12277 ID3D12Device3 * This,
12278 LUID * RetVal);
12279
12280#endif
12281
12282 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
12283 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
12284 ID3D12Device3 * This,
12285 _In_reads_(BlobLength) const void *pLibraryBlob,
12286 SIZE_T BlobLength,
12287 REFIID riid,
12288 _COM_Outptr_ void **ppPipelineLibrary);
12289
12290 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
12291 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
12292 ID3D12Device3 * This,
12293 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
12294 _In_reads_(NumFences) const UINT64 *pFenceValues,
12295 UINT NumFences,
12296 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
12297 HANDLE hEvent);
12298
12299 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
12300 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
12301 ID3D12Device3 * This,
12302 UINT NumObjects,
12303 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12304 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
12305
12306 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
12307 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
12308 ID3D12Device3 * This,
12309 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
12310 REFIID riid,
12311 _COM_Outptr_ void **ppPipelineState);
12312
12313 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
12314 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
12315 ID3D12Device3 * This,
12316 _In_ const void *pAddress,
12317 REFIID riid,
12318 _COM_Outptr_ void **ppvHeap);
12319
12320 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
12321 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
12322 ID3D12Device3 * This,
12323 _In_ HANDLE hFileMapping,
12324 REFIID riid,
12325 _COM_Outptr_ void **ppvHeap);
12326
12327 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
12328 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
12329 ID3D12Device3 * This,
12330 D3D12_RESIDENCY_FLAGS Flags,
12331 UINT NumObjects,
12332 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
12333 _In_ ID3D12Fence *pFenceToSignal,
12334 UINT64 FenceValueToSignal);
12335
12336 END_INTERFACE
12337 } ID3D12Device3Vtbl;
12338
12339 interface ID3D12Device3
12340 {
12341 CONST_VTBL struct ID3D12Device3Vtbl *lpVtbl;
12342 };
12343
12344
12345
12346#ifdef COBJMACROS
12347
12348
12349#define ID3D12Device3_QueryInterface(This,riid,ppvObject) \
12350 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12351
12352#define ID3D12Device3_AddRef(This) \
12353 ( (This)->lpVtbl -> AddRef(This) )
12354
12355#define ID3D12Device3_Release(This) \
12356 ( (This)->lpVtbl -> Release(This) )
12357
12358
12359#define ID3D12Device3_GetPrivateData(This,guid,pDataSize,pData) \
12360 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12361
12362#define ID3D12Device3_SetPrivateData(This,guid,DataSize,pData) \
12363 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12364
12365#define ID3D12Device3_SetPrivateDataInterface(This,guid,pData) \
12366 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12367
12368#define ID3D12Device3_SetName(This,Name) \
12369 ( (This)->lpVtbl -> SetName(This,Name) )
12370
12371
12372#define ID3D12Device3_GetNodeCount(This) \
12373 ( (This)->lpVtbl -> GetNodeCount(This) )
12374
12375#define ID3D12Device3_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
12376 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
12377
12378#define ID3D12Device3_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
12379 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
12380
12381#define ID3D12Device3_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
12382 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
12383
12384#define ID3D12Device3_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
12385 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
12386
12387#define ID3D12Device3_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
12388 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
12389
12390#define ID3D12Device3_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
12391 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
12392
12393#define ID3D12Device3_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
12394 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
12395
12396#define ID3D12Device3_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
12397 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
12398
12399#define ID3D12Device3_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
12400 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
12401
12402#define ID3D12Device3_CreateConstantBufferView(This,pDesc,DestDescriptor) \
12403 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
12404
12405#define ID3D12Device3_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
12406 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
12407
12408#define ID3D12Device3_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
12409 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
12410
12411#define ID3D12Device3_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
12412 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
12413
12414#define ID3D12Device3_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
12415 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
12416
12417#define ID3D12Device3_CreateSampler(This,pDesc,DestDescriptor) \
12418 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
12419
12420#define ID3D12Device3_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
12421 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
12422
12423#define ID3D12Device3_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
12424 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
12425#if !defined(_WIN32)
12426
12427#define ID3D12Device3_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
12428 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
12429#else
12430#define ID3D12Device3_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
12431 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
12432#endif
12433#if !defined(_WIN32)
12434
12435#define ID3D12Device3_GetCustomHeapProperties(This,nodeMask,heapType) \
12436 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
12437#else
12438#define ID3D12Device3_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
12439 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
12440#endif
12441
12442#define ID3D12Device3_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
12443 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
12444
12445#define ID3D12Device3_CreateHeap(This,pDesc,riid,ppvHeap) \
12446 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
12447
12448#define ID3D12Device3_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12449 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12450
12451#define ID3D12Device3_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
12452 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
12453
12454#define ID3D12Device3_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
12455 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
12456
12457#define ID3D12Device3_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
12458 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
12459
12460#define ID3D12Device3_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
12461 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
12462
12463#define ID3D12Device3_MakeResident(This,NumObjects,ppObjects) \
12464 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
12465
12466#define ID3D12Device3_Evict(This,NumObjects,ppObjects) \
12467 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
12468
12469#define ID3D12Device3_CreateFence(This,InitialValue,Flags,riid,ppFence) \
12470 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
12471
12472#define ID3D12Device3_GetDeviceRemovedReason(This) \
12473 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
12474
12475#define ID3D12Device3_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
12476 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
12477
12478#define ID3D12Device3_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
12479 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
12480
12481#define ID3D12Device3_SetStablePowerState(This,Enable) \
12482 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
12483
12484#define ID3D12Device3_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
12485 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
12486
12487#define ID3D12Device3_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
12488 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
12489#if !defined(_WIN32)
12490
12491#define ID3D12Device3_GetAdapterLuid(This) \
12492 ( (This)->lpVtbl -> GetAdapterLuid(This) )
12493#else
12494#define ID3D12Device3_GetAdapterLuid(This,RetVal) \
12495 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
12496#endif
12497
12498
12499#define ID3D12Device3_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
12500 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
12501
12502#define ID3D12Device3_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
12503 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
12504
12505#define ID3D12Device3_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
12506 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
12507
12508
12509#define ID3D12Device3_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
12510 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
12511
12512
12513#define ID3D12Device3_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
12514 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
12515
12516#define ID3D12Device3_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
12517 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
12518
12519#define ID3D12Device3_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
12520 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
12521
12522#endif /* COBJMACROS */
12523
12524
12525#endif /* C style interface */
12526
12527
12528
12529
12530#endif /* __ID3D12Device3_INTERFACE_DEFINED__ */
12531
12532
12533/* interface __MIDL_itf_d3d12_0000_0028 */
12534/* [local] */
12535
12536typedef
12537enum D3D12_COMMAND_LIST_FLAGS
12538 {
12539 D3D12_COMMAND_LIST_FLAG_NONE = 0
12540 } D3D12_COMMAND_LIST_FLAGS;
12541
12542DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )
12543typedef
12544enum D3D12_COMMAND_POOL_FLAGS
12545 {
12546 D3D12_COMMAND_POOL_FLAG_NONE = 0
12547 } D3D12_COMMAND_POOL_FLAGS;
12548
12549DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )
12550typedef
12551enum D3D12_COMMAND_RECORDER_FLAGS
12552 {
12553 D3D12_COMMAND_RECORDER_FLAG_NONE = 0
12554 } D3D12_COMMAND_RECORDER_FLAGS;
12555
12556DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )
12557typedef
12558enum D3D12_PROTECTED_SESSION_STATUS
12559 {
12560 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
12561 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1
12562 } D3D12_PROTECTED_SESSION_STATUS;
12563
12564
12565
12566extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_c_ifspec;
12567extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0028_v0_0_s_ifspec;
12568
12569#ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
12570#define __ID3D12ProtectedSession_INTERFACE_DEFINED__
12571
12572/* interface ID3D12ProtectedSession */
12573/* [unique][local][object][uuid] */
12574
12575
12576EXTERN_C const IID IID_ID3D12ProtectedSession;
12577
12578#if defined(__cplusplus) && !defined(CINTERFACE)
12579
12580 MIDL_INTERFACE("A1533D18-0AC1-4084-85B9-89A96116806B")
12581 ID3D12ProtectedSession : public ID3D12DeviceChild
12582 {
12583 public:
12584 virtual HRESULT STDMETHODCALLTYPE GetStatusFence(
12585 REFIID riid,
12586 _COM_Outptr_opt_ void **ppFence) = 0;
12587
12588 virtual D3D12_PROTECTED_SESSION_STATUS STDMETHODCALLTYPE GetSessionStatus( void) = 0;
12589
12590 };
12591
12592
12593#else /* C style interface */
12594
12595 typedef struct ID3D12ProtectedSessionVtbl
12596 {
12597 BEGIN_INTERFACE
12598
12599 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12600 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12601 ID3D12ProtectedSession * This,
12602 REFIID riid,
12603 _COM_Outptr_ void **ppvObject);
12604
12605 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12606 ULONG ( STDMETHODCALLTYPE *AddRef )(
12607 ID3D12ProtectedSession * This);
12608
12609 DECLSPEC_XFGVIRT(IUnknown, Release)
12610 ULONG ( STDMETHODCALLTYPE *Release )(
12611 ID3D12ProtectedSession * This);
12612
12613 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12614 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12615 ID3D12ProtectedSession * This,
12616 _In_ REFGUID guid,
12617 _Inout_ UINT *pDataSize,
12618 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12619
12620 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12621 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12622 ID3D12ProtectedSession * This,
12623 _In_ REFGUID guid,
12624 _In_ UINT DataSize,
12625 _In_reads_bytes_opt_( DataSize ) const void *pData);
12626
12627 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12628 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12629 ID3D12ProtectedSession * This,
12630 _In_ REFGUID guid,
12631 _In_opt_ const IUnknown *pData);
12632
12633 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12634 HRESULT ( STDMETHODCALLTYPE *SetName )(
12635 ID3D12ProtectedSession * This,
12636 _In_z_ LPCWSTR Name);
12637
12638 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12639 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12640 ID3D12ProtectedSession * This,
12641 REFIID riid,
12642 _COM_Outptr_opt_ void **ppvDevice);
12643
12644 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12645 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12646 ID3D12ProtectedSession * This,
12647 REFIID riid,
12648 _COM_Outptr_opt_ void **ppFence);
12649
12650 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12651 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12652 ID3D12ProtectedSession * This);
12653
12654 END_INTERFACE
12655 } ID3D12ProtectedSessionVtbl;
12656
12657 interface ID3D12ProtectedSession
12658 {
12659 CONST_VTBL struct ID3D12ProtectedSessionVtbl *lpVtbl;
12660 };
12661
12662
12663
12664#ifdef COBJMACROS
12665
12666
12667#define ID3D12ProtectedSession_QueryInterface(This,riid,ppvObject) \
12668 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12669
12670#define ID3D12ProtectedSession_AddRef(This) \
12671 ( (This)->lpVtbl -> AddRef(This) )
12672
12673#define ID3D12ProtectedSession_Release(This) \
12674 ( (This)->lpVtbl -> Release(This) )
12675
12676
12677#define ID3D12ProtectedSession_GetPrivateData(This,guid,pDataSize,pData) \
12678 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12679
12680#define ID3D12ProtectedSession_SetPrivateData(This,guid,DataSize,pData) \
12681 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12682
12683#define ID3D12ProtectedSession_SetPrivateDataInterface(This,guid,pData) \
12684 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12685
12686#define ID3D12ProtectedSession_SetName(This,Name) \
12687 ( (This)->lpVtbl -> SetName(This,Name) )
12688
12689
12690#define ID3D12ProtectedSession_GetDevice(This,riid,ppvDevice) \
12691 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12692
12693
12694#define ID3D12ProtectedSession_GetStatusFence(This,riid,ppFence) \
12695 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12696
12697#define ID3D12ProtectedSession_GetSessionStatus(This) \
12698 ( (This)->lpVtbl -> GetSessionStatus(This) )
12699
12700#endif /* COBJMACROS */
12701
12702
12703#endif /* C style interface */
12704
12705
12706
12707
12708#endif /* __ID3D12ProtectedSession_INTERFACE_DEFINED__ */
12709
12710
12711/* interface __MIDL_itf_d3d12_0000_0029 */
12712/* [local] */
12713
12714typedef
12715enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
12716 {
12717 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0,
12718 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1
12719 } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
12720
12721DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )
12722typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
12723 {
12724 UINT NodeIndex;
12725 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support;
12726 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
12727
12728typedef
12729enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
12730 {
12731 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0
12732 } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
12733
12734DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )
12735typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
12736 {
12737 UINT NodeMask;
12738 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
12739 } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
12740
12741
12742
12743extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_c_ifspec;
12744extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0029_v0_0_s_ifspec;
12745
12746#ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12747#define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
12748
12749/* interface ID3D12ProtectedResourceSession */
12750/* [unique][local][object][uuid] */
12751
12752
12753EXTERN_C const IID IID_ID3D12ProtectedResourceSession;
12754
12755#if defined(__cplusplus) && !defined(CINTERFACE)
12756
12757 MIDL_INTERFACE("6CD696F4-F289-40CC-8091-5A6C0A099C3D")
12758 ID3D12ProtectedResourceSession : public ID3D12ProtectedSession
12759 {
12760 public:
12761#if defined(_MSC_VER) || !defined(_WIN32)
12762 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
12763#else
12764 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
12765 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal) = 0;
12766#endif
12767
12768 };
12769
12770
12771#else /* C style interface */
12772
12773 typedef struct ID3D12ProtectedResourceSessionVtbl
12774 {
12775 BEGIN_INTERFACE
12776
12777 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12778 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12779 ID3D12ProtectedResourceSession * This,
12780 REFIID riid,
12781 _COM_Outptr_ void **ppvObject);
12782
12783 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12784 ULONG ( STDMETHODCALLTYPE *AddRef )(
12785 ID3D12ProtectedResourceSession * This);
12786
12787 DECLSPEC_XFGVIRT(IUnknown, Release)
12788 ULONG ( STDMETHODCALLTYPE *Release )(
12789 ID3D12ProtectedResourceSession * This);
12790
12791 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
12792 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
12793 ID3D12ProtectedResourceSession * This,
12794 _In_ REFGUID guid,
12795 _Inout_ UINT *pDataSize,
12796 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
12797
12798 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
12799 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
12800 ID3D12ProtectedResourceSession * This,
12801 _In_ REFGUID guid,
12802 _In_ UINT DataSize,
12803 _In_reads_bytes_opt_( DataSize ) const void *pData);
12804
12805 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
12806 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
12807 ID3D12ProtectedResourceSession * This,
12808 _In_ REFGUID guid,
12809 _In_opt_ const IUnknown *pData);
12810
12811 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
12812 HRESULT ( STDMETHODCALLTYPE *SetName )(
12813 ID3D12ProtectedResourceSession * This,
12814 _In_z_ LPCWSTR Name);
12815
12816 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
12817 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
12818 ID3D12ProtectedResourceSession * This,
12819 REFIID riid,
12820 _COM_Outptr_opt_ void **ppvDevice);
12821
12822 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
12823 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
12824 ID3D12ProtectedResourceSession * This,
12825 REFIID riid,
12826 _COM_Outptr_opt_ void **ppFence);
12827
12828 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
12829 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
12830 ID3D12ProtectedResourceSession * This);
12831
12832 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
12833#if !defined(_WIN32)
12834 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
12835 ID3D12ProtectedResourceSession * This);
12836
12837#else
12838 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
12839 ID3D12ProtectedResourceSession * This,
12840 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
12841
12842#endif
12843
12844 END_INTERFACE
12845 } ID3D12ProtectedResourceSessionVtbl;
12846
12847 interface ID3D12ProtectedResourceSession
12848 {
12849 CONST_VTBL struct ID3D12ProtectedResourceSessionVtbl *lpVtbl;
12850 };
12851
12852
12853
12854#ifdef COBJMACROS
12855
12856
12857#define ID3D12ProtectedResourceSession_QueryInterface(This,riid,ppvObject) \
12858 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
12859
12860#define ID3D12ProtectedResourceSession_AddRef(This) \
12861 ( (This)->lpVtbl -> AddRef(This) )
12862
12863#define ID3D12ProtectedResourceSession_Release(This) \
12864 ( (This)->lpVtbl -> Release(This) )
12865
12866
12867#define ID3D12ProtectedResourceSession_GetPrivateData(This,guid,pDataSize,pData) \
12868 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
12869
12870#define ID3D12ProtectedResourceSession_SetPrivateData(This,guid,DataSize,pData) \
12871 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
12872
12873#define ID3D12ProtectedResourceSession_SetPrivateDataInterface(This,guid,pData) \
12874 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
12875
12876#define ID3D12ProtectedResourceSession_SetName(This,Name) \
12877 ( (This)->lpVtbl -> SetName(This,Name) )
12878
12879
12880#define ID3D12ProtectedResourceSession_GetDevice(This,riid,ppvDevice) \
12881 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
12882
12883
12884#define ID3D12ProtectedResourceSession_GetStatusFence(This,riid,ppFence) \
12885 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
12886
12887#define ID3D12ProtectedResourceSession_GetSessionStatus(This) \
12888 ( (This)->lpVtbl -> GetSessionStatus(This) )
12889
12890#if !defined(_WIN32)
12891
12892#define ID3D12ProtectedResourceSession_GetDesc(This) \
12893 ( (This)->lpVtbl -> GetDesc(This) )
12894#else
12895#define ID3D12ProtectedResourceSession_GetDesc(This,RetVal) \
12896 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
12897#endif
12898
12899#endif /* COBJMACROS */
12900
12901
12902#endif /* C style interface */
12903
12904
12905
12906
12907#endif /* __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__ */
12908
12909
12910#ifndef __ID3D12Device4_INTERFACE_DEFINED__
12911#define __ID3D12Device4_INTERFACE_DEFINED__
12912
12913/* interface ID3D12Device4 */
12914/* [unique][local][object][uuid] */
12915
12916
12917EXTERN_C const IID IID_ID3D12Device4;
12918
12919#if defined(__cplusplus) && !defined(CINTERFACE)
12920
12921 MIDL_INTERFACE("e865df17-a9ee-46f9-a463-3098315aa2e5")
12922 ID3D12Device4 : public ID3D12Device3
12923 {
12924 public:
12925 virtual HRESULT STDMETHODCALLTYPE CreateCommandList1(
12926 _In_ UINT nodeMask,
12927 _In_ D3D12_COMMAND_LIST_TYPE type,
12928 _In_ D3D12_COMMAND_LIST_FLAGS flags,
12929 REFIID riid,
12930 _COM_Outptr_ void **ppCommandList) = 0;
12931
12932 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession(
12933 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
12934 _In_ REFIID riid,
12935 _COM_Outptr_ void **ppSession) = 0;
12936
12937 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource1(
12938 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
12939 D3D12_HEAP_FLAGS HeapFlags,
12940 _In_ const D3D12_RESOURCE_DESC *pDesc,
12941 D3D12_RESOURCE_STATES InitialResourceState,
12942 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12943 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12944 REFIID riidResource,
12945 _COM_Outptr_opt_ void **ppvResource) = 0;
12946
12947 virtual HRESULT STDMETHODCALLTYPE CreateHeap1(
12948 _In_ const D3D12_HEAP_DESC *pDesc,
12949 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12950 REFIID riid,
12951 _COM_Outptr_opt_ void **ppvHeap) = 0;
12952
12953 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource1(
12954 _In_ const D3D12_RESOURCE_DESC *pDesc,
12955 D3D12_RESOURCE_STATES InitialState,
12956 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
12957 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
12958 REFIID riid,
12959 _COM_Outptr_opt_ void **ppvResource) = 0;
12960
12961#if defined(_MSC_VER) || !defined(_WIN32)
12962 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo1(
12963 UINT visibleMask,
12964 UINT numResourceDescs,
12965 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12966 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12967#else
12968 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo1(
12969 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
12970 UINT visibleMask,
12971 UINT numResourceDescs,
12972 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
12973 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
12974#endif
12975
12976 };
12977
12978
12979#else /* C style interface */
12980
12981 typedef struct ID3D12Device4Vtbl
12982 {
12983 BEGIN_INTERFACE
12984
12985 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
12986 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
12987 ID3D12Device4 * This,
12988 REFIID riid,
12989 _COM_Outptr_ void **ppvObject);
12990
12991 DECLSPEC_XFGVIRT(IUnknown, AddRef)
12992 ULONG ( STDMETHODCALLTYPE *AddRef )(
12993 ID3D12Device4 * This);
12994
12995 DECLSPEC_XFGVIRT(IUnknown, Release)
12996 ULONG ( STDMETHODCALLTYPE *Release )(
12997 ID3D12Device4 * This);
12998
12999 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13000 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13001 ID3D12Device4 * This,
13002 _In_ REFGUID guid,
13003 _Inout_ UINT *pDataSize,
13004 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13005
13006 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13007 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13008 ID3D12Device4 * This,
13009 _In_ REFGUID guid,
13010 _In_ UINT DataSize,
13011 _In_reads_bytes_opt_( DataSize ) const void *pData);
13012
13013 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13014 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13015 ID3D12Device4 * This,
13016 _In_ REFGUID guid,
13017 _In_opt_ const IUnknown *pData);
13018
13019 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13020 HRESULT ( STDMETHODCALLTYPE *SetName )(
13021 ID3D12Device4 * This,
13022 _In_z_ LPCWSTR Name);
13023
13024 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
13025 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
13026 ID3D12Device4 * This);
13027
13028 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
13029 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
13030 ID3D12Device4 * This,
13031 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
13032 REFIID riid,
13033 _COM_Outptr_ void **ppCommandQueue);
13034
13035 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
13036 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
13037 ID3D12Device4 * This,
13038 _In_ D3D12_COMMAND_LIST_TYPE type,
13039 REFIID riid,
13040 _COM_Outptr_ void **ppCommandAllocator);
13041
13042 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
13043 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
13044 ID3D12Device4 * This,
13045 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
13046 REFIID riid,
13047 _COM_Outptr_ void **ppPipelineState);
13048
13049 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
13050 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
13051 ID3D12Device4 * This,
13052 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
13053 REFIID riid,
13054 _COM_Outptr_ void **ppPipelineState);
13055
13056 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
13057 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
13058 ID3D12Device4 * This,
13059 _In_ UINT nodeMask,
13060 _In_ D3D12_COMMAND_LIST_TYPE type,
13061 _In_ ID3D12CommandAllocator *pCommandAllocator,
13062 _In_opt_ ID3D12PipelineState *pInitialState,
13063 REFIID riid,
13064 _COM_Outptr_ void **ppCommandList);
13065
13066 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
13067 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
13068 ID3D12Device4 * This,
13069 D3D12_FEATURE Feature,
13070 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
13071 UINT FeatureSupportDataSize);
13072
13073 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
13074 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
13075 ID3D12Device4 * This,
13076 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
13077 REFIID riid,
13078 _COM_Outptr_ void **ppvHeap);
13079
13080 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
13081 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
13082 ID3D12Device4 * This,
13083 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
13084
13085 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
13086 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
13087 ID3D12Device4 * This,
13088 _In_ UINT nodeMask,
13089 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
13090 _In_ SIZE_T blobLengthInBytes,
13091 REFIID riid,
13092 _COM_Outptr_ void **ppvRootSignature);
13093
13094 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
13095 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
13096 ID3D12Device4 * This,
13097 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
13098 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13099
13100 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
13101 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
13102 ID3D12Device4 * This,
13103 _In_opt_ ID3D12Resource *pResource,
13104 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
13105 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13106
13107 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
13108 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
13109 ID3D12Device4 * This,
13110 _In_opt_ ID3D12Resource *pResource,
13111 _In_opt_ ID3D12Resource *pCounterResource,
13112 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
13113 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13114
13115 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
13116 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
13117 ID3D12Device4 * This,
13118 _In_opt_ ID3D12Resource *pResource,
13119 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
13120 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13121
13122 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
13123 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
13124 ID3D12Device4 * This,
13125 _In_opt_ ID3D12Resource *pResource,
13126 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
13127 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13128
13129 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
13130 void ( STDMETHODCALLTYPE *CreateSampler )(
13131 ID3D12Device4 * This,
13132 _In_ const D3D12_SAMPLER_DESC *pDesc,
13133 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
13134
13135 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
13136 void ( STDMETHODCALLTYPE *CopyDescriptors )(
13137 ID3D12Device4 * This,
13138 _In_ UINT NumDestDescriptorRanges,
13139 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
13140 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
13141 _In_ UINT NumSrcDescriptorRanges,
13142 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
13143 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
13144 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13145
13146 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
13147 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
13148 ID3D12Device4 * This,
13149 _In_ UINT NumDescriptors,
13150 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
13151 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
13152 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
13153
13154 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
13155#if !defined(_WIN32)
13156 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13157 ID3D12Device4 * This,
13158 _In_ UINT visibleMask,
13159 _In_ UINT numResourceDescs,
13160 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13161
13162#else
13163 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
13164 ID3D12Device4 * This,
13165 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13166 _In_ UINT visibleMask,
13167 _In_ UINT numResourceDescs,
13168 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
13169
13170#endif
13171
13172 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
13173#if !defined(_WIN32)
13174 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13175 ID3D12Device4 * This,
13176 _In_ UINT nodeMask,
13177 D3D12_HEAP_TYPE heapType);
13178
13179#else
13180 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
13181 ID3D12Device4 * This,
13182 D3D12_HEAP_PROPERTIES * RetVal,
13183 _In_ UINT nodeMask,
13184 D3D12_HEAP_TYPE heapType);
13185
13186#endif
13187
13188 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
13189 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
13190 ID3D12Device4 * This,
13191 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13192 D3D12_HEAP_FLAGS HeapFlags,
13193 _In_ const D3D12_RESOURCE_DESC *pDesc,
13194 D3D12_RESOURCE_STATES InitialResourceState,
13195 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13196 REFIID riidResource,
13197 _COM_Outptr_opt_ void **ppvResource);
13198
13199 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
13200 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
13201 ID3D12Device4 * This,
13202 _In_ const D3D12_HEAP_DESC *pDesc,
13203 REFIID riid,
13204 _COM_Outptr_opt_ void **ppvHeap);
13205
13206 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
13207 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
13208 ID3D12Device4 * This,
13209 _In_ ID3D12Heap *pHeap,
13210 UINT64 HeapOffset,
13211 _In_ const D3D12_RESOURCE_DESC *pDesc,
13212 D3D12_RESOURCE_STATES InitialState,
13213 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13214 REFIID riid,
13215 _COM_Outptr_opt_ void **ppvResource);
13216
13217 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
13218 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
13219 ID3D12Device4 * This,
13220 _In_ const D3D12_RESOURCE_DESC *pDesc,
13221 D3D12_RESOURCE_STATES InitialState,
13222 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13223 REFIID riid,
13224 _COM_Outptr_opt_ void **ppvResource);
13225
13226 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
13227 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
13228 ID3D12Device4 * This,
13229 _In_ ID3D12DeviceChild *pObject,
13230 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
13231 DWORD Access,
13232 _In_opt_ LPCWSTR Name,
13233 _Out_ HANDLE *pHandle);
13234
13235 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
13236 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
13237 ID3D12Device4 * This,
13238 _In_ HANDLE NTHandle,
13239 REFIID riid,
13240 _COM_Outptr_opt_ void **ppvObj);
13241
13242 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
13243 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
13244 ID3D12Device4 * This,
13245 _In_ LPCWSTR Name,
13246 DWORD Access,
13247 /* [annotation][out] */
13248 _Out_ HANDLE *pNTHandle);
13249
13250 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
13251 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
13252 ID3D12Device4 * This,
13253 UINT NumObjects,
13254 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13255
13256 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
13257 HRESULT ( STDMETHODCALLTYPE *Evict )(
13258 ID3D12Device4 * This,
13259 UINT NumObjects,
13260 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
13261
13262 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
13263 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
13264 ID3D12Device4 * This,
13265 UINT64 InitialValue,
13266 D3D12_FENCE_FLAGS Flags,
13267 REFIID riid,
13268 _COM_Outptr_ void **ppFence);
13269
13270 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
13271 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
13272 ID3D12Device4 * This);
13273
13274 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
13275 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
13276 ID3D12Device4 * This,
13277 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
13278 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
13279 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
13280 UINT64 BaseOffset,
13281 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
13282 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
13283 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
13284 _Out_opt_ UINT64 *pTotalBytes);
13285
13286 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
13287 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
13288 ID3D12Device4 * This,
13289 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
13290 REFIID riid,
13291 _COM_Outptr_opt_ void **ppvHeap);
13292
13293 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
13294 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
13295 ID3D12Device4 * This,
13296 BOOL Enable);
13297
13298 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
13299 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
13300 ID3D12Device4 * This,
13301 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
13302 _In_opt_ ID3D12RootSignature *pRootSignature,
13303 REFIID riid,
13304 _COM_Outptr_opt_ void **ppvCommandSignature);
13305
13306 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
13307 void ( STDMETHODCALLTYPE *GetResourceTiling )(
13308 ID3D12Device4 * This,
13309 _In_ ID3D12Resource *pTiledResource,
13310 _Out_opt_ UINT *pNumTilesForEntireResource,
13311 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
13312 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
13313 _Inout_opt_ UINT *pNumSubresourceTilings,
13314 _In_ UINT FirstSubresourceTilingToGet,
13315 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
13316
13317 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
13318#if !defined(_WIN32)
13319 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
13320 ID3D12Device4 * This);
13321
13322#else
13323 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
13324 ID3D12Device4 * This,
13325 LUID * RetVal);
13326
13327#endif
13328
13329 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
13330 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
13331 ID3D12Device4 * This,
13332 _In_reads_(BlobLength) const void *pLibraryBlob,
13333 SIZE_T BlobLength,
13334 REFIID riid,
13335 _COM_Outptr_ void **ppPipelineLibrary);
13336
13337 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
13338 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
13339 ID3D12Device4 * This,
13340 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
13341 _In_reads_(NumFences) const UINT64 *pFenceValues,
13342 UINT NumFences,
13343 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
13344 HANDLE hEvent);
13345
13346 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
13347 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
13348 ID3D12Device4 * This,
13349 UINT NumObjects,
13350 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13351 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
13352
13353 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
13354 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
13355 ID3D12Device4 * This,
13356 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
13357 REFIID riid,
13358 _COM_Outptr_ void **ppPipelineState);
13359
13360 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
13361 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
13362 ID3D12Device4 * This,
13363 _In_ const void *pAddress,
13364 REFIID riid,
13365 _COM_Outptr_ void **ppvHeap);
13366
13367 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
13368 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
13369 ID3D12Device4 * This,
13370 _In_ HANDLE hFileMapping,
13371 REFIID riid,
13372 _COM_Outptr_ void **ppvHeap);
13373
13374 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
13375 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
13376 ID3D12Device4 * This,
13377 D3D12_RESIDENCY_FLAGS Flags,
13378 UINT NumObjects,
13379 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
13380 _In_ ID3D12Fence *pFenceToSignal,
13381 UINT64 FenceValueToSignal);
13382
13383 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
13384 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
13385 ID3D12Device4 * This,
13386 _In_ UINT nodeMask,
13387 _In_ D3D12_COMMAND_LIST_TYPE type,
13388 _In_ D3D12_COMMAND_LIST_FLAGS flags,
13389 REFIID riid,
13390 _COM_Outptr_ void **ppCommandList);
13391
13392 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
13393 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
13394 ID3D12Device4 * This,
13395 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
13396 _In_ REFIID riid,
13397 _COM_Outptr_ void **ppSession);
13398
13399 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
13400 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
13401 ID3D12Device4 * This,
13402 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
13403 D3D12_HEAP_FLAGS HeapFlags,
13404 _In_ const D3D12_RESOURCE_DESC *pDesc,
13405 D3D12_RESOURCE_STATES InitialResourceState,
13406 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13407 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13408 REFIID riidResource,
13409 _COM_Outptr_opt_ void **ppvResource);
13410
13411 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
13412 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
13413 ID3D12Device4 * This,
13414 _In_ const D3D12_HEAP_DESC *pDesc,
13415 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13416 REFIID riid,
13417 _COM_Outptr_opt_ void **ppvHeap);
13418
13419 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
13420 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
13421 ID3D12Device4 * This,
13422 _In_ const D3D12_RESOURCE_DESC *pDesc,
13423 D3D12_RESOURCE_STATES InitialState,
13424 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
13425 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
13426 REFIID riid,
13427 _COM_Outptr_opt_ void **ppvResource);
13428
13429 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
13430#if !defined(_WIN32)
13431 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13432 ID3D12Device4 * This,
13433 UINT visibleMask,
13434 UINT numResourceDescs,
13435 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13436 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13437
13438#else
13439 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
13440 ID3D12Device4 * This,
13441 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
13442 UINT visibleMask,
13443 UINT numResourceDescs,
13444 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
13445 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
13446
13447#endif
13448
13449 END_INTERFACE
13450 } ID3D12Device4Vtbl;
13451
13452 interface ID3D12Device4
13453 {
13454 CONST_VTBL struct ID3D12Device4Vtbl *lpVtbl;
13455 };
13456
13457
13458
13459#ifdef COBJMACROS
13460
13461
13462#define ID3D12Device4_QueryInterface(This,riid,ppvObject) \
13463 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13464
13465#define ID3D12Device4_AddRef(This) \
13466 ( (This)->lpVtbl -> AddRef(This) )
13467
13468#define ID3D12Device4_Release(This) \
13469 ( (This)->lpVtbl -> Release(This) )
13470
13471
13472#define ID3D12Device4_GetPrivateData(This,guid,pDataSize,pData) \
13473 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
13474
13475#define ID3D12Device4_SetPrivateData(This,guid,DataSize,pData) \
13476 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
13477
13478#define ID3D12Device4_SetPrivateDataInterface(This,guid,pData) \
13479 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
13480
13481#define ID3D12Device4_SetName(This,Name) \
13482 ( (This)->lpVtbl -> SetName(This,Name) )
13483
13484
13485#define ID3D12Device4_GetNodeCount(This) \
13486 ( (This)->lpVtbl -> GetNodeCount(This) )
13487
13488#define ID3D12Device4_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
13489 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
13490
13491#define ID3D12Device4_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
13492 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
13493
13494#define ID3D12Device4_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
13495 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
13496
13497#define ID3D12Device4_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
13498 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
13499
13500#define ID3D12Device4_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
13501 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
13502
13503#define ID3D12Device4_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
13504 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
13505
13506#define ID3D12Device4_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
13507 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
13508
13509#define ID3D12Device4_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
13510 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
13511
13512#define ID3D12Device4_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
13513 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
13514
13515#define ID3D12Device4_CreateConstantBufferView(This,pDesc,DestDescriptor) \
13516 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
13517
13518#define ID3D12Device4_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
13519 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
13520
13521#define ID3D12Device4_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
13522 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
13523
13524#define ID3D12Device4_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
13525 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
13526
13527#define ID3D12Device4_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
13528 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
13529
13530#define ID3D12Device4_CreateSampler(This,pDesc,DestDescriptor) \
13531 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
13532
13533#define ID3D12Device4_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
13534 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
13535
13536#define ID3D12Device4_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
13537 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
13538#if !defined(_WIN32)
13539
13540#define ID3D12Device4_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
13541 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
13542#else
13543#define ID3D12Device4_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
13544 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
13545#endif
13546#if !defined(_WIN32)
13547
13548#define ID3D12Device4_GetCustomHeapProperties(This,nodeMask,heapType) \
13549 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
13550#else
13551#define ID3D12Device4_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
13552 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
13553#endif
13554
13555#define ID3D12Device4_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
13556 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
13557
13558#define ID3D12Device4_CreateHeap(This,pDesc,riid,ppvHeap) \
13559 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
13560
13561#define ID3D12Device4_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13562 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13563
13564#define ID3D12Device4_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
13565 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
13566
13567#define ID3D12Device4_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
13568 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
13569
13570#define ID3D12Device4_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
13571 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
13572
13573#define ID3D12Device4_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
13574 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
13575
13576#define ID3D12Device4_MakeResident(This,NumObjects,ppObjects) \
13577 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
13578
13579#define ID3D12Device4_Evict(This,NumObjects,ppObjects) \
13580 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
13581
13582#define ID3D12Device4_CreateFence(This,InitialValue,Flags,riid,ppFence) \
13583 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
13584
13585#define ID3D12Device4_GetDeviceRemovedReason(This) \
13586 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
13587
13588#define ID3D12Device4_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
13589 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
13590
13591#define ID3D12Device4_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
13592 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
13593
13594#define ID3D12Device4_SetStablePowerState(This,Enable) \
13595 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
13596
13597#define ID3D12Device4_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
13598 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
13599
13600#define ID3D12Device4_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
13601 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
13602#if !defined(_WIN32)
13603
13604#define ID3D12Device4_GetAdapterLuid(This) \
13605 ( (This)->lpVtbl -> GetAdapterLuid(This) )
13606#else
13607#define ID3D12Device4_GetAdapterLuid(This,RetVal) \
13608 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
13609#endif
13610
13611
13612#define ID3D12Device4_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
13613 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
13614
13615#define ID3D12Device4_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
13616 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
13617
13618#define ID3D12Device4_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
13619 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
13620
13621
13622#define ID3D12Device4_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
13623 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
13624
13625
13626#define ID3D12Device4_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
13627 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
13628
13629#define ID3D12Device4_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
13630 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
13631
13632#define ID3D12Device4_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
13633 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
13634
13635
13636#define ID3D12Device4_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
13637 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
13638
13639#define ID3D12Device4_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
13640 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
13641
13642#define ID3D12Device4_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
13643 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
13644
13645#define ID3D12Device4_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
13646 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
13647
13648#define ID3D12Device4_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
13649 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
13650#if !defined(_WIN32)
13651
13652#define ID3D12Device4_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13653 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13654#else
13655#define ID3D12Device4_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
13656 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
13657#endif
13658
13659#endif /* COBJMACROS */
13660
13661
13662#endif /* C style interface */
13663
13664
13665
13666
13667#endif /* __ID3D12Device4_INTERFACE_DEFINED__ */
13668
13669
13670/* interface __MIDL_itf_d3d12_0000_0031 */
13671/* [local] */
13672
13673typedef
13674enum D3D12_LIFETIME_STATE
13675 {
13676 D3D12_LIFETIME_STATE_IN_USE = 0,
13677 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 )
13678 } D3D12_LIFETIME_STATE;
13679
13680
13681
13682
13683extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_c_ifspec;
13684extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0031_v0_0_s_ifspec;
13685
13686#ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13687#define __ID3D12LifetimeOwner_INTERFACE_DEFINED__
13688
13689/* interface ID3D12LifetimeOwner */
13690/* [unique][local][object][uuid] */
13691
13692
13693EXTERN_C const IID IID_ID3D12LifetimeOwner;
13694
13695#if defined(__cplusplus) && !defined(CINTERFACE)
13696
13697 MIDL_INTERFACE("e667af9f-cd56-4f46-83ce-032e595d70a8")
13698 ID3D12LifetimeOwner : public IUnknown
13699 {
13700 public:
13701 virtual void STDMETHODCALLTYPE LifetimeStateUpdated(
13702 D3D12_LIFETIME_STATE NewState) = 0;
13703
13704 };
13705
13706
13707#else /* C style interface */
13708
13709 typedef struct ID3D12LifetimeOwnerVtbl
13710 {
13711 BEGIN_INTERFACE
13712
13713 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13714 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13715 ID3D12LifetimeOwner * This,
13716 REFIID riid,
13717 _COM_Outptr_ void **ppvObject);
13718
13719 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13720 ULONG ( STDMETHODCALLTYPE *AddRef )(
13721 ID3D12LifetimeOwner * This);
13722
13723 DECLSPEC_XFGVIRT(IUnknown, Release)
13724 ULONG ( STDMETHODCALLTYPE *Release )(
13725 ID3D12LifetimeOwner * This);
13726
13727 DECLSPEC_XFGVIRT(ID3D12LifetimeOwner, LifetimeStateUpdated)
13728 void ( STDMETHODCALLTYPE *LifetimeStateUpdated )(
13729 ID3D12LifetimeOwner * This,
13730 D3D12_LIFETIME_STATE NewState);
13731
13732 END_INTERFACE
13733 } ID3D12LifetimeOwnerVtbl;
13734
13735 interface ID3D12LifetimeOwner
13736 {
13737 CONST_VTBL struct ID3D12LifetimeOwnerVtbl *lpVtbl;
13738 };
13739
13740
13741
13742#ifdef COBJMACROS
13743
13744
13745#define ID3D12LifetimeOwner_QueryInterface(This,riid,ppvObject) \
13746 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13747
13748#define ID3D12LifetimeOwner_AddRef(This) \
13749 ( (This)->lpVtbl -> AddRef(This) )
13750
13751#define ID3D12LifetimeOwner_Release(This) \
13752 ( (This)->lpVtbl -> Release(This) )
13753
13754
13755#define ID3D12LifetimeOwner_LifetimeStateUpdated(This,NewState) \
13756 ( (This)->lpVtbl -> LifetimeStateUpdated(This,NewState) )
13757
13758#endif /* COBJMACROS */
13759
13760
13761#endif /* C style interface */
13762
13763
13764
13765
13766#endif /* __ID3D12LifetimeOwner_INTERFACE_DEFINED__ */
13767
13768
13769#ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13770#define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
13771
13772/* interface ID3D12SwapChainAssistant */
13773/* [unique][local][object][uuid] */
13774
13775
13776EXTERN_C const IID IID_ID3D12SwapChainAssistant;
13777
13778#if defined(__cplusplus) && !defined(CINTERFACE)
13779
13780 MIDL_INTERFACE("f1df64b6-57fd-49cd-8807-c0eb88b45c8f")
13781 ID3D12SwapChainAssistant : public IUnknown
13782 {
13783 public:
13784#if defined(_MSC_VER) || !defined(_WIN32)
13785 virtual LUID STDMETHODCALLTYPE GetLUID( void) = 0;
13786#else
13787 virtual LUID *STDMETHODCALLTYPE GetLUID(
13788 LUID * RetVal) = 0;
13789#endif
13790
13791 virtual HRESULT STDMETHODCALLTYPE GetSwapChainObject(
13792 REFIID riid,
13793 _COM_Outptr_ void **ppv) = 0;
13794
13795 virtual HRESULT STDMETHODCALLTYPE GetCurrentResourceAndCommandQueue(
13796 REFIID riidResource,
13797 _COM_Outptr_ void **ppvResource,
13798 REFIID riidQueue,
13799 _COM_Outptr_ void **ppvQueue) = 0;
13800
13801 virtual HRESULT STDMETHODCALLTYPE InsertImplicitSync( void) = 0;
13802
13803 };
13804
13805
13806#else /* C style interface */
13807
13808 typedef struct ID3D12SwapChainAssistantVtbl
13809 {
13810 BEGIN_INTERFACE
13811
13812 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13813 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13814 ID3D12SwapChainAssistant * This,
13815 REFIID riid,
13816 _COM_Outptr_ void **ppvObject);
13817
13818 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13819 ULONG ( STDMETHODCALLTYPE *AddRef )(
13820 ID3D12SwapChainAssistant * This);
13821
13822 DECLSPEC_XFGVIRT(IUnknown, Release)
13823 ULONG ( STDMETHODCALLTYPE *Release )(
13824 ID3D12SwapChainAssistant * This);
13825
13826 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetLUID)
13827#if !defined(_WIN32)
13828 LUID ( STDMETHODCALLTYPE *GetLUID )(
13829 ID3D12SwapChainAssistant * This);
13830
13831#else
13832 LUID *( STDMETHODCALLTYPE *GetLUID )(
13833 ID3D12SwapChainAssistant * This,
13834 LUID * RetVal);
13835
13836#endif
13837
13838 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetSwapChainObject)
13839 HRESULT ( STDMETHODCALLTYPE *GetSwapChainObject )(
13840 ID3D12SwapChainAssistant * This,
13841 REFIID riid,
13842 _COM_Outptr_ void **ppv);
13843
13844 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, GetCurrentResourceAndCommandQueue)
13845 HRESULT ( STDMETHODCALLTYPE *GetCurrentResourceAndCommandQueue )(
13846 ID3D12SwapChainAssistant * This,
13847 REFIID riidResource,
13848 _COM_Outptr_ void **ppvResource,
13849 REFIID riidQueue,
13850 _COM_Outptr_ void **ppvQueue);
13851
13852 DECLSPEC_XFGVIRT(ID3D12SwapChainAssistant, InsertImplicitSync)
13853 HRESULT ( STDMETHODCALLTYPE *InsertImplicitSync )(
13854 ID3D12SwapChainAssistant * This);
13855
13856 END_INTERFACE
13857 } ID3D12SwapChainAssistantVtbl;
13858
13859 interface ID3D12SwapChainAssistant
13860 {
13861 CONST_VTBL struct ID3D12SwapChainAssistantVtbl *lpVtbl;
13862 };
13863
13864
13865
13866#ifdef COBJMACROS
13867
13868
13869#define ID3D12SwapChainAssistant_QueryInterface(This,riid,ppvObject) \
13870 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13871
13872#define ID3D12SwapChainAssistant_AddRef(This) \
13873 ( (This)->lpVtbl -> AddRef(This) )
13874
13875#define ID3D12SwapChainAssistant_Release(This) \
13876 ( (This)->lpVtbl -> Release(This) )
13877
13878#if !defined(_WIN32)
13879
13880#define ID3D12SwapChainAssistant_GetLUID(This) \
13881 ( (This)->lpVtbl -> GetLUID(This) )
13882#else
13883#define ID3D12SwapChainAssistant_GetLUID(This,RetVal) \
13884 ( (This)->lpVtbl -> GetLUID(This,RetVal) )
13885#endif
13886
13887#define ID3D12SwapChainAssistant_GetSwapChainObject(This,riid,ppv) \
13888 ( (This)->lpVtbl -> GetSwapChainObject(This,riid,ppv) )
13889
13890#define ID3D12SwapChainAssistant_GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) \
13891 ( (This)->lpVtbl -> GetCurrentResourceAndCommandQueue(This,riidResource,ppvResource,riidQueue,ppvQueue) )
13892
13893#define ID3D12SwapChainAssistant_InsertImplicitSync(This) \
13894 ( (This)->lpVtbl -> InsertImplicitSync(This) )
13895
13896#endif /* COBJMACROS */
13897
13898
13899#endif /* C style interface */
13900
13901
13902
13903
13904#endif /* __ID3D12SwapChainAssistant_INTERFACE_DEFINED__ */
13905
13906
13907#ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13908#define __ID3D12LifetimeTracker_INTERFACE_DEFINED__
13909
13910/* interface ID3D12LifetimeTracker */
13911/* [unique][local][object][uuid] */
13912
13913
13914EXTERN_C const IID IID_ID3D12LifetimeTracker;
13915
13916#if defined(__cplusplus) && !defined(CINTERFACE)
13917
13918 MIDL_INTERFACE("3fd03d36-4eb1-424a-a582-494ecb8ba813")
13919 ID3D12LifetimeTracker : public ID3D12DeviceChild
13920 {
13921 public:
13922 virtual HRESULT STDMETHODCALLTYPE DestroyOwnedObject(
13923 _In_ ID3D12DeviceChild *pObject) = 0;
13924
13925 };
13926
13927
13928#else /* C style interface */
13929
13930 typedef struct ID3D12LifetimeTrackerVtbl
13931 {
13932 BEGIN_INTERFACE
13933
13934 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
13935 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
13936 ID3D12LifetimeTracker * This,
13937 REFIID riid,
13938 _COM_Outptr_ void **ppvObject);
13939
13940 DECLSPEC_XFGVIRT(IUnknown, AddRef)
13941 ULONG ( STDMETHODCALLTYPE *AddRef )(
13942 ID3D12LifetimeTracker * This);
13943
13944 DECLSPEC_XFGVIRT(IUnknown, Release)
13945 ULONG ( STDMETHODCALLTYPE *Release )(
13946 ID3D12LifetimeTracker * This);
13947
13948 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
13949 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
13950 ID3D12LifetimeTracker * This,
13951 _In_ REFGUID guid,
13952 _Inout_ UINT *pDataSize,
13953 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
13954
13955 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
13956 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
13957 ID3D12LifetimeTracker * This,
13958 _In_ REFGUID guid,
13959 _In_ UINT DataSize,
13960 _In_reads_bytes_opt_( DataSize ) const void *pData);
13961
13962 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
13963 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
13964 ID3D12LifetimeTracker * This,
13965 _In_ REFGUID guid,
13966 _In_opt_ const IUnknown *pData);
13967
13968 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
13969 HRESULT ( STDMETHODCALLTYPE *SetName )(
13970 ID3D12LifetimeTracker * This,
13971 _In_z_ LPCWSTR Name);
13972
13973 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
13974 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
13975 ID3D12LifetimeTracker * This,
13976 REFIID riid,
13977 _COM_Outptr_opt_ void **ppvDevice);
13978
13979 DECLSPEC_XFGVIRT(ID3D12LifetimeTracker, DestroyOwnedObject)
13980 HRESULT ( STDMETHODCALLTYPE *DestroyOwnedObject )(
13981 ID3D12LifetimeTracker * This,
13982 _In_ ID3D12DeviceChild *pObject);
13983
13984 END_INTERFACE
13985 } ID3D12LifetimeTrackerVtbl;
13986
13987 interface ID3D12LifetimeTracker
13988 {
13989 CONST_VTBL struct ID3D12LifetimeTrackerVtbl *lpVtbl;
13990 };
13991
13992
13993
13994#ifdef COBJMACROS
13995
13996
13997#define ID3D12LifetimeTracker_QueryInterface(This,riid,ppvObject) \
13998 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
13999
14000#define ID3D12LifetimeTracker_AddRef(This) \
14001 ( (This)->lpVtbl -> AddRef(This) )
14002
14003#define ID3D12LifetimeTracker_Release(This) \
14004 ( (This)->lpVtbl -> Release(This) )
14005
14006
14007#define ID3D12LifetimeTracker_GetPrivateData(This,guid,pDataSize,pData) \
14008 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14009
14010#define ID3D12LifetimeTracker_SetPrivateData(This,guid,DataSize,pData) \
14011 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14012
14013#define ID3D12LifetimeTracker_SetPrivateDataInterface(This,guid,pData) \
14014 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14015
14016#define ID3D12LifetimeTracker_SetName(This,Name) \
14017 ( (This)->lpVtbl -> SetName(This,Name) )
14018
14019
14020#define ID3D12LifetimeTracker_GetDevice(This,riid,ppvDevice) \
14021 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14022
14023
14024#define ID3D12LifetimeTracker_DestroyOwnedObject(This,pObject) \
14025 ( (This)->lpVtbl -> DestroyOwnedObject(This,pObject) )
14026
14027#endif /* COBJMACROS */
14028
14029
14030#endif /* C style interface */
14031
14032
14033
14034
14035#endif /* __ID3D12LifetimeTracker_INTERFACE_DEFINED__ */
14036
14037
14038/* interface __MIDL_itf_d3d12_0000_0034 */
14039/* [local] */
14040
14041typedef
14042enum D3D12_META_COMMAND_PARAMETER_TYPE
14043 {
14044 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
14045 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
14046 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
14047 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
14048 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4
14049 } D3D12_META_COMMAND_PARAMETER_TYPE;
14050
14051typedef
14052enum D3D12_META_COMMAND_PARAMETER_FLAGS
14053 {
14054 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
14055 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2
14056 } D3D12_META_COMMAND_PARAMETER_FLAGS;
14057
14058DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )
14059typedef
14060enum D3D12_META_COMMAND_PARAMETER_STAGE
14061 {
14062 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
14063 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
14064 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2
14065 } D3D12_META_COMMAND_PARAMETER_STAGE;
14066
14067typedef struct D3D12_META_COMMAND_PARAMETER_DESC
14068 {
14069 LPCWSTR Name;
14070 D3D12_META_COMMAND_PARAMETER_TYPE Type;
14071 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
14072 D3D12_RESOURCE_STATES RequiredResourceState;
14073 UINT StructureOffset;
14074 } D3D12_META_COMMAND_PARAMETER_DESC;
14075
14076typedef
14077enum D3D12_GRAPHICS_STATES
14078 {
14079 D3D12_GRAPHICS_STATE_NONE = 0,
14080 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) ,
14081 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) ,
14082 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) ,
14083 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) ,
14084 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) ,
14085 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) ,
14086 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) ,
14087 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) ,
14088 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) ,
14089 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) ,
14090 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) ,
14091 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) ,
14092 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) ,
14093 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) ,
14094 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) ,
14095 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) ,
14096 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 )
14097 } D3D12_GRAPHICS_STATES;
14098
14099DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )
14100typedef struct D3D12_META_COMMAND_DESC
14101 {
14102 GUID Id;
14103 LPCWSTR Name;
14104 D3D12_GRAPHICS_STATES InitializationDirtyState;
14105 D3D12_GRAPHICS_STATES ExecutionDirtyState;
14106 } D3D12_META_COMMAND_DESC;
14107
14108
14109
14110extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_c_ifspec;
14111extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0034_v0_0_s_ifspec;
14112
14113#ifndef __ID3D12StateObject_INTERFACE_DEFINED__
14114#define __ID3D12StateObject_INTERFACE_DEFINED__
14115
14116/* interface ID3D12StateObject */
14117/* [unique][local][object][uuid] */
14118
14119
14120EXTERN_C const IID IID_ID3D12StateObject;
14121
14122#if defined(__cplusplus) && !defined(CINTERFACE)
14123
14124 MIDL_INTERFACE("47016943-fca8-4594-93ea-af258b55346d")
14125 ID3D12StateObject : public ID3D12Pageable
14126 {
14127 public:
14128 };
14129
14130
14131#else /* C style interface */
14132
14133 typedef struct ID3D12StateObjectVtbl
14134 {
14135 BEGIN_INTERFACE
14136
14137 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14138 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14139 ID3D12StateObject * This,
14140 REFIID riid,
14141 _COM_Outptr_ void **ppvObject);
14142
14143 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14144 ULONG ( STDMETHODCALLTYPE *AddRef )(
14145 ID3D12StateObject * This);
14146
14147 DECLSPEC_XFGVIRT(IUnknown, Release)
14148 ULONG ( STDMETHODCALLTYPE *Release )(
14149 ID3D12StateObject * This);
14150
14151 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
14152 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
14153 ID3D12StateObject * This,
14154 _In_ REFGUID guid,
14155 _Inout_ UINT *pDataSize,
14156 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
14157
14158 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
14159 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
14160 ID3D12StateObject * This,
14161 _In_ REFGUID guid,
14162 _In_ UINT DataSize,
14163 _In_reads_bytes_opt_( DataSize ) const void *pData);
14164
14165 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
14166 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
14167 ID3D12StateObject * This,
14168 _In_ REFGUID guid,
14169 _In_opt_ const IUnknown *pData);
14170
14171 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
14172 HRESULT ( STDMETHODCALLTYPE *SetName )(
14173 ID3D12StateObject * This,
14174 _In_z_ LPCWSTR Name);
14175
14176 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
14177 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
14178 ID3D12StateObject * This,
14179 REFIID riid,
14180 _COM_Outptr_opt_ void **ppvDevice);
14181
14182 END_INTERFACE
14183 } ID3D12StateObjectVtbl;
14184
14185 interface ID3D12StateObject
14186 {
14187 CONST_VTBL struct ID3D12StateObjectVtbl *lpVtbl;
14188 };
14189
14190
14191
14192#ifdef COBJMACROS
14193
14194
14195#define ID3D12StateObject_QueryInterface(This,riid,ppvObject) \
14196 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14197
14198#define ID3D12StateObject_AddRef(This) \
14199 ( (This)->lpVtbl -> AddRef(This) )
14200
14201#define ID3D12StateObject_Release(This) \
14202 ( (This)->lpVtbl -> Release(This) )
14203
14204
14205#define ID3D12StateObject_GetPrivateData(This,guid,pDataSize,pData) \
14206 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
14207
14208#define ID3D12StateObject_SetPrivateData(This,guid,DataSize,pData) \
14209 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
14210
14211#define ID3D12StateObject_SetPrivateDataInterface(This,guid,pData) \
14212 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
14213
14214#define ID3D12StateObject_SetName(This,Name) \
14215 ( (This)->lpVtbl -> SetName(This,Name) )
14216
14217
14218#define ID3D12StateObject_GetDevice(This,riid,ppvDevice) \
14219 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
14220
14221
14222
14223#endif /* COBJMACROS */
14224
14225
14226#endif /* C style interface */
14227
14228
14229
14230
14231#endif /* __ID3D12StateObject_INTERFACE_DEFINED__ */
14232
14233
14234#ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14235#define __ID3D12StateObjectProperties_INTERFACE_DEFINED__
14236
14237/* interface ID3D12StateObjectProperties */
14238/* [unique][local][object][uuid] */
14239
14240
14241EXTERN_C const IID IID_ID3D12StateObjectProperties;
14242
14243#if defined(__cplusplus) && !defined(CINTERFACE)
14244
14245 MIDL_INTERFACE("de5fa827-9bf9-4f26-89ff-d7f56fde3860")
14246 ID3D12StateObjectProperties : public IUnknown
14247 {
14248 public:
14249 virtual void *STDMETHODCALLTYPE GetShaderIdentifier(
14250 _In_ LPCWSTR pExportName) = 0;
14251
14252 virtual UINT64 STDMETHODCALLTYPE GetShaderStackSize(
14253 _In_ LPCWSTR pExportName) = 0;
14254
14255 virtual UINT64 STDMETHODCALLTYPE GetPipelineStackSize( void) = 0;
14256
14257 virtual void STDMETHODCALLTYPE SetPipelineStackSize(
14258 UINT64 PipelineStackSizeInBytes) = 0;
14259
14260 };
14261
14262
14263#else /* C style interface */
14264
14265 typedef struct ID3D12StateObjectPropertiesVtbl
14266 {
14267 BEGIN_INTERFACE
14268
14269 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14270 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14271 ID3D12StateObjectProperties * This,
14272 REFIID riid,
14273 _COM_Outptr_ void **ppvObject);
14274
14275 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14276 ULONG ( STDMETHODCALLTYPE *AddRef )(
14277 ID3D12StateObjectProperties * This);
14278
14279 DECLSPEC_XFGVIRT(IUnknown, Release)
14280 ULONG ( STDMETHODCALLTYPE *Release )(
14281 ID3D12StateObjectProperties * This);
14282
14283 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14284 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14285 ID3D12StateObjectProperties * This,
14286 _In_ LPCWSTR pExportName);
14287
14288 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14289 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14290 ID3D12StateObjectProperties * This,
14291 _In_ LPCWSTR pExportName);
14292
14293 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14294 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14295 ID3D12StateObjectProperties * This);
14296
14297 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14298 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14299 ID3D12StateObjectProperties * This,
14300 UINT64 PipelineStackSizeInBytes);
14301
14302 END_INTERFACE
14303 } ID3D12StateObjectPropertiesVtbl;
14304
14305 interface ID3D12StateObjectProperties
14306 {
14307 CONST_VTBL struct ID3D12StateObjectPropertiesVtbl *lpVtbl;
14308 };
14309
14310
14311
14312#ifdef COBJMACROS
14313
14314
14315#define ID3D12StateObjectProperties_QueryInterface(This,riid,ppvObject) \
14316 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14317
14318#define ID3D12StateObjectProperties_AddRef(This) \
14319 ( (This)->lpVtbl -> AddRef(This) )
14320
14321#define ID3D12StateObjectProperties_Release(This) \
14322 ( (This)->lpVtbl -> Release(This) )
14323
14324
14325#define ID3D12StateObjectProperties_GetShaderIdentifier(This,pExportName) \
14326 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14327
14328#define ID3D12StateObjectProperties_GetShaderStackSize(This,pExportName) \
14329 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14330
14331#define ID3D12StateObjectProperties_GetPipelineStackSize(This) \
14332 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14333
14334#define ID3D12StateObjectProperties_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14335 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14336
14337#endif /* COBJMACROS */
14338
14339
14340#endif /* C style interface */
14341
14342
14343
14344
14345#endif /* __ID3D12StateObjectProperties_INTERFACE_DEFINED__ */
14346
14347
14348/* interface __MIDL_itf_d3d12_0000_0036 */
14349/* [local] */
14350
14351typedef struct D3D12_PROGRAM_IDENTIFIER
14352 {
14353 UINT64 OpaqueData[ 4 ];
14354 } D3D12_PROGRAM_IDENTIFIER;
14355
14356
14357
14358extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_c_ifspec;
14359extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0036_v0_0_s_ifspec;
14360
14361#ifndef __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14362#define __ID3D12StateObjectProperties1_INTERFACE_DEFINED__
14363
14364/* interface ID3D12StateObjectProperties1 */
14365/* [unique][local][object][uuid] */
14366
14367
14368EXTERN_C const IID IID_ID3D12StateObjectProperties1;
14369
14370#if defined(__cplusplus) && !defined(CINTERFACE)
14371
14372 MIDL_INTERFACE("460caac7-1d24-446a-a184-ca67db494138")
14373 ID3D12StateObjectProperties1 : public ID3D12StateObjectProperties
14374 {
14375 public:
14376#if defined(_MSC_VER) || !defined(_WIN32)
14377 virtual D3D12_PROGRAM_IDENTIFIER STDMETHODCALLTYPE GetProgramIdentifier(
14378 LPCWSTR pProgramName) = 0;
14379#else
14380 virtual D3D12_PROGRAM_IDENTIFIER *STDMETHODCALLTYPE GetProgramIdentifier(
14381 D3D12_PROGRAM_IDENTIFIER * RetVal,
14382 LPCWSTR pProgramName) = 0;
14383#endif
14384
14385 };
14386
14387
14388#else /* C style interface */
14389
14390 typedef struct ID3D12StateObjectProperties1Vtbl
14391 {
14392 BEGIN_INTERFACE
14393
14394 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14395 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14396 ID3D12StateObjectProperties1 * This,
14397 REFIID riid,
14398 _COM_Outptr_ void **ppvObject);
14399
14400 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14401 ULONG ( STDMETHODCALLTYPE *AddRef )(
14402 ID3D12StateObjectProperties1 * This);
14403
14404 DECLSPEC_XFGVIRT(IUnknown, Release)
14405 ULONG ( STDMETHODCALLTYPE *Release )(
14406 ID3D12StateObjectProperties1 * This);
14407
14408 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14409 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14410 ID3D12StateObjectProperties1 * This,
14411 _In_ LPCWSTR pExportName);
14412
14413 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14414 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14415 ID3D12StateObjectProperties1 * This,
14416 _In_ LPCWSTR pExportName);
14417
14418 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14419 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14420 ID3D12StateObjectProperties1 * This);
14421
14422 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14423 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14424 ID3D12StateObjectProperties1 * This,
14425 UINT64 PipelineStackSizeInBytes);
14426
14427 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14428#if !defined(_WIN32)
14429 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14430 ID3D12StateObjectProperties1 * This,
14431 LPCWSTR pProgramName);
14432
14433#else
14434 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14435 ID3D12StateObjectProperties1 * This,
14436 D3D12_PROGRAM_IDENTIFIER * RetVal,
14437 LPCWSTR pProgramName);
14438
14439#endif
14440
14441 END_INTERFACE
14442 } ID3D12StateObjectProperties1Vtbl;
14443
14444 interface ID3D12StateObjectProperties1
14445 {
14446 CONST_VTBL struct ID3D12StateObjectProperties1Vtbl *lpVtbl;
14447 };
14448
14449
14450
14451#ifdef COBJMACROS
14452
14453
14454#define ID3D12StateObjectProperties1_QueryInterface(This,riid,ppvObject) \
14455 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14456
14457#define ID3D12StateObjectProperties1_AddRef(This) \
14458 ( (This)->lpVtbl -> AddRef(This) )
14459
14460#define ID3D12StateObjectProperties1_Release(This) \
14461 ( (This)->lpVtbl -> Release(This) )
14462
14463
14464#define ID3D12StateObjectProperties1_GetShaderIdentifier(This,pExportName) \
14465 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14466
14467#define ID3D12StateObjectProperties1_GetShaderStackSize(This,pExportName) \
14468 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14469
14470#define ID3D12StateObjectProperties1_GetPipelineStackSize(This) \
14471 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14472
14473#define ID3D12StateObjectProperties1_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14474 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14475
14476#if !defined(_WIN32)
14477
14478#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,pProgramName) \
14479 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14480#else
14481#define ID3D12StateObjectProperties1_GetProgramIdentifier(This,RetVal,pProgramName) \
14482 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14483#endif
14484
14485#endif /* COBJMACROS */
14486
14487
14488#endif /* C style interface */
14489
14490
14491
14492
14493#endif /* __ID3D12StateObjectProperties1_INTERFACE_DEFINED__ */
14494
14495
14496#ifndef __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14497#define __ID3D12StateObjectProperties2_INTERFACE_DEFINED__
14498
14499/* interface ID3D12StateObjectProperties2 */
14500/* [unique][local][object][uuid] */
14501
14502
14503EXTERN_C const IID IID_ID3D12StateObjectProperties2;
14504
14505#if defined(__cplusplus) && !defined(CINTERFACE)
14506
14507 MIDL_INTERFACE("d5e82917-f0f1-44cf-ae5e-ce222dd0b884")
14508 ID3D12StateObjectProperties2 : public ID3D12StateObjectProperties1
14509 {
14510 public:
14511 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForProgram(
14512 LPCWSTR pProgramName,
14513 REFIID riid,
14514 _COM_Outptr_ void **ppvRootSignature) = 0;
14515
14516 virtual HRESULT STDMETHODCALLTYPE GetGlobalRootSignatureForShader(
14517 LPCWSTR pExportName,
14518 REFIID riid,
14519 _COM_Outptr_ void **ppvRootSignature) = 0;
14520
14521 };
14522
14523
14524#else /* C style interface */
14525
14526 typedef struct ID3D12StateObjectProperties2Vtbl
14527 {
14528 BEGIN_INTERFACE
14529
14530 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14531 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14532 ID3D12StateObjectProperties2 * This,
14533 REFIID riid,
14534 _COM_Outptr_ void **ppvObject);
14535
14536 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14537 ULONG ( STDMETHODCALLTYPE *AddRef )(
14538 ID3D12StateObjectProperties2 * This);
14539
14540 DECLSPEC_XFGVIRT(IUnknown, Release)
14541 ULONG ( STDMETHODCALLTYPE *Release )(
14542 ID3D12StateObjectProperties2 * This);
14543
14544 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderIdentifier)
14545 void *( STDMETHODCALLTYPE *GetShaderIdentifier )(
14546 ID3D12StateObjectProperties2 * This,
14547 _In_ LPCWSTR pExportName);
14548
14549 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetShaderStackSize)
14550 UINT64 ( STDMETHODCALLTYPE *GetShaderStackSize )(
14551 ID3D12StateObjectProperties2 * This,
14552 _In_ LPCWSTR pExportName);
14553
14554 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, GetPipelineStackSize)
14555 UINT64 ( STDMETHODCALLTYPE *GetPipelineStackSize )(
14556 ID3D12StateObjectProperties2 * This);
14557
14558 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties, SetPipelineStackSize)
14559 void ( STDMETHODCALLTYPE *SetPipelineStackSize )(
14560 ID3D12StateObjectProperties2 * This,
14561 UINT64 PipelineStackSizeInBytes);
14562
14563 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties1, GetProgramIdentifier)
14564#if !defined(_WIN32)
14565 D3D12_PROGRAM_IDENTIFIER ( STDMETHODCALLTYPE *GetProgramIdentifier )(
14566 ID3D12StateObjectProperties2 * This,
14567 LPCWSTR pProgramName);
14568
14569#else
14570 D3D12_PROGRAM_IDENTIFIER *( STDMETHODCALLTYPE *GetProgramIdentifier )(
14571 ID3D12StateObjectProperties2 * This,
14572 D3D12_PROGRAM_IDENTIFIER * RetVal,
14573 LPCWSTR pProgramName);
14574
14575#endif
14576
14577 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForProgram)
14578 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForProgram )(
14579 ID3D12StateObjectProperties2 * This,
14580 LPCWSTR pProgramName,
14581 REFIID riid,
14582 _COM_Outptr_ void **ppvRootSignature);
14583
14584 DECLSPEC_XFGVIRT(ID3D12StateObjectProperties2, GetGlobalRootSignatureForShader)
14585 HRESULT ( STDMETHODCALLTYPE *GetGlobalRootSignatureForShader )(
14586 ID3D12StateObjectProperties2 * This,
14587 LPCWSTR pExportName,
14588 REFIID riid,
14589 _COM_Outptr_ void **ppvRootSignature);
14590
14591 END_INTERFACE
14592 } ID3D12StateObjectProperties2Vtbl;
14593
14594 interface ID3D12StateObjectProperties2
14595 {
14596 CONST_VTBL struct ID3D12StateObjectProperties2Vtbl *lpVtbl;
14597 };
14598
14599
14600
14601#ifdef COBJMACROS
14602
14603
14604#define ID3D12StateObjectProperties2_QueryInterface(This,riid,ppvObject) \
14605 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14606
14607#define ID3D12StateObjectProperties2_AddRef(This) \
14608 ( (This)->lpVtbl -> AddRef(This) )
14609
14610#define ID3D12StateObjectProperties2_Release(This) \
14611 ( (This)->lpVtbl -> Release(This) )
14612
14613
14614#define ID3D12StateObjectProperties2_GetShaderIdentifier(This,pExportName) \
14615 ( (This)->lpVtbl -> GetShaderIdentifier(This,pExportName) )
14616
14617#define ID3D12StateObjectProperties2_GetShaderStackSize(This,pExportName) \
14618 ( (This)->lpVtbl -> GetShaderStackSize(This,pExportName) )
14619
14620#define ID3D12StateObjectProperties2_GetPipelineStackSize(This) \
14621 ( (This)->lpVtbl -> GetPipelineStackSize(This) )
14622
14623#define ID3D12StateObjectProperties2_SetPipelineStackSize(This,PipelineStackSizeInBytes) \
14624 ( (This)->lpVtbl -> SetPipelineStackSize(This,PipelineStackSizeInBytes) )
14625
14626#if !defined(_WIN32)
14627
14628#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,pProgramName) \
14629 ( (This)->lpVtbl -> GetProgramIdentifier(This,pProgramName) )
14630#else
14631#define ID3D12StateObjectProperties2_GetProgramIdentifier(This,RetVal,pProgramName) \
14632 ( (This)->lpVtbl -> GetProgramIdentifier(This,RetVal,pProgramName) )
14633#endif
14634
14635
14636#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) \
14637 ( (This)->lpVtbl -> GetGlobalRootSignatureForProgram(This,pProgramName,riid,ppvRootSignature) )
14638
14639#define ID3D12StateObjectProperties2_GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) \
14640 ( (This)->lpVtbl -> GetGlobalRootSignatureForShader(This,pExportName,riid,ppvRootSignature) )
14641
14642#endif /* COBJMACROS */
14643
14644
14645#endif /* C style interface */
14646
14647
14648
14649
14650#endif /* __ID3D12StateObjectProperties2_INTERFACE_DEFINED__ */
14651
14652
14653/* interface __MIDL_itf_d3d12_0000_0038 */
14654/* [local] */
14655
14656typedef struct D3D12_NODE_ID
14657 {
14658 LPCWSTR Name;
14659 UINT ArrayIndex;
14660 } D3D12_NODE_ID;
14661
14662typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
14663 {
14664 UINT64 MinSizeInBytes;
14665 UINT64 MaxSizeInBytes;
14666 UINT SizeGranularityInBytes;
14667 } D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
14668
14669
14670
14671extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_c_ifspec;
14672extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0038_v0_0_s_ifspec;
14673
14674#ifndef __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14675#define __ID3D12WorkGraphProperties_INTERFACE_DEFINED__
14676
14677/* interface ID3D12WorkGraphProperties */
14678/* [unique][local][object][uuid] */
14679
14680
14681EXTERN_C const IID IID_ID3D12WorkGraphProperties;
14682
14683#if defined(__cplusplus) && !defined(CINTERFACE)
14684
14685 MIDL_INTERFACE("065acf71-f863-4b89-82f4-02e4d5886757")
14686 ID3D12WorkGraphProperties : public IUnknown
14687 {
14688 public:
14689 virtual UINT STDMETHODCALLTYPE GetNumWorkGraphs( void) = 0;
14690
14691 virtual LPCWSTR STDMETHODCALLTYPE GetProgramName(
14692 UINT WorkGraphIndex) = 0;
14693
14694 virtual UINT STDMETHODCALLTYPE GetWorkGraphIndex(
14695 LPCWSTR pProgramName) = 0;
14696
14697 virtual UINT STDMETHODCALLTYPE GetNumNodes(
14698 UINT WorkGraphIndex) = 0;
14699
14700#if defined(_MSC_VER) || !defined(_WIN32)
14701 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetNodeID(
14702 UINT WorkGraphIndex,
14703 UINT NodeIndex) = 0;
14704#else
14705 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetNodeID(
14706 D3D12_NODE_ID * RetVal,
14707 UINT WorkGraphIndex,
14708 UINT NodeIndex) = 0;
14709#endif
14710
14711 virtual UINT STDMETHODCALLTYPE GetNodeIndex(
14712 UINT WorkGraphIndex,
14713 D3D12_NODE_ID NodeID) = 0;
14714
14715 virtual UINT STDMETHODCALLTYPE GetNodeLocalRootArgumentsTableIndex(
14716 UINT WorkGraphIndex,
14717 UINT NodeIndex) = 0;
14718
14719 virtual UINT STDMETHODCALLTYPE GetNumEntrypoints(
14720 UINT WorkGraphIndex) = 0;
14721
14722#if defined(_MSC_VER) || !defined(_WIN32)
14723 virtual D3D12_NODE_ID STDMETHODCALLTYPE GetEntrypointID(
14724 UINT WorkGraphIndex,
14725 UINT EntrypointIndex) = 0;
14726#else
14727 virtual D3D12_NODE_ID *STDMETHODCALLTYPE GetEntrypointID(
14728 D3D12_NODE_ID * RetVal,
14729 UINT WorkGraphIndex,
14730 UINT EntrypointIndex) = 0;
14731#endif
14732
14733 virtual UINT STDMETHODCALLTYPE GetEntrypointIndex(
14734 UINT WorkGraphIndex,
14735 D3D12_NODE_ID NodeID) = 0;
14736
14737 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordSizeInBytes(
14738 UINT WorkGraphIndex,
14739 UINT EntrypointIndex) = 0;
14740
14741 virtual void STDMETHODCALLTYPE GetWorkGraphMemoryRequirements(
14742 UINT WorkGraphIndex,
14743 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements) = 0;
14744
14745 virtual UINT STDMETHODCALLTYPE GetEntrypointRecordAlignmentInBytes(
14746 UINT WorkGraphIndex,
14747 UINT EntrypointIndex) = 0;
14748
14749 };
14750
14751
14752#else /* C style interface */
14753
14754 typedef struct ID3D12WorkGraphPropertiesVtbl
14755 {
14756 BEGIN_INTERFACE
14757
14758 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
14759 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
14760 ID3D12WorkGraphProperties * This,
14761 REFIID riid,
14762 _COM_Outptr_ void **ppvObject);
14763
14764 DECLSPEC_XFGVIRT(IUnknown, AddRef)
14765 ULONG ( STDMETHODCALLTYPE *AddRef )(
14766 ID3D12WorkGraphProperties * This);
14767
14768 DECLSPEC_XFGVIRT(IUnknown, Release)
14769 ULONG ( STDMETHODCALLTYPE *Release )(
14770 ID3D12WorkGraphProperties * This);
14771
14772 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumWorkGraphs)
14773 UINT ( STDMETHODCALLTYPE *GetNumWorkGraphs )(
14774 ID3D12WorkGraphProperties * This);
14775
14776 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetProgramName)
14777 LPCWSTR ( STDMETHODCALLTYPE *GetProgramName )(
14778 ID3D12WorkGraphProperties * This,
14779 UINT WorkGraphIndex);
14780
14781 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphIndex)
14782 UINT ( STDMETHODCALLTYPE *GetWorkGraphIndex )(
14783 ID3D12WorkGraphProperties * This,
14784 LPCWSTR pProgramName);
14785
14786 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumNodes)
14787 UINT ( STDMETHODCALLTYPE *GetNumNodes )(
14788 ID3D12WorkGraphProperties * This,
14789 UINT WorkGraphIndex);
14790
14791 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeID)
14792#if !defined(_WIN32)
14793 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetNodeID )(
14794 ID3D12WorkGraphProperties * This,
14795 UINT WorkGraphIndex,
14796 UINT NodeIndex);
14797
14798#else
14799 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetNodeID )(
14800 ID3D12WorkGraphProperties * This,
14801 D3D12_NODE_ID * RetVal,
14802 UINT WorkGraphIndex,
14803 UINT NodeIndex);
14804
14805#endif
14806
14807 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeIndex)
14808 UINT ( STDMETHODCALLTYPE *GetNodeIndex )(
14809 ID3D12WorkGraphProperties * This,
14810 UINT WorkGraphIndex,
14811 D3D12_NODE_ID NodeID);
14812
14813 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNodeLocalRootArgumentsTableIndex)
14814 UINT ( STDMETHODCALLTYPE *GetNodeLocalRootArgumentsTableIndex )(
14815 ID3D12WorkGraphProperties * This,
14816 UINT WorkGraphIndex,
14817 UINT NodeIndex);
14818
14819 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetNumEntrypoints)
14820 UINT ( STDMETHODCALLTYPE *GetNumEntrypoints )(
14821 ID3D12WorkGraphProperties * This,
14822 UINT WorkGraphIndex);
14823
14824 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointID)
14825#if !defined(_WIN32)
14826 D3D12_NODE_ID ( STDMETHODCALLTYPE *GetEntrypointID )(
14827 ID3D12WorkGraphProperties * This,
14828 UINT WorkGraphIndex,
14829 UINT EntrypointIndex);
14830
14831#else
14832 D3D12_NODE_ID *( STDMETHODCALLTYPE *GetEntrypointID )(
14833 ID3D12WorkGraphProperties * This,
14834 D3D12_NODE_ID * RetVal,
14835 UINT WorkGraphIndex,
14836 UINT EntrypointIndex);
14837
14838#endif
14839
14840 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointIndex)
14841 UINT ( STDMETHODCALLTYPE *GetEntrypointIndex )(
14842 ID3D12WorkGraphProperties * This,
14843 UINT WorkGraphIndex,
14844 D3D12_NODE_ID NodeID);
14845
14846 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordSizeInBytes)
14847 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordSizeInBytes )(
14848 ID3D12WorkGraphProperties * This,
14849 UINT WorkGraphIndex,
14850 UINT EntrypointIndex);
14851
14852 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetWorkGraphMemoryRequirements)
14853 void ( STDMETHODCALLTYPE *GetWorkGraphMemoryRequirements )(
14854 ID3D12WorkGraphProperties * This,
14855 UINT WorkGraphIndex,
14856 _Out_ D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS *pWorkGraphMemoryRequirements);
14857
14858 DECLSPEC_XFGVIRT(ID3D12WorkGraphProperties, GetEntrypointRecordAlignmentInBytes)
14859 UINT ( STDMETHODCALLTYPE *GetEntrypointRecordAlignmentInBytes )(
14860 ID3D12WorkGraphProperties * This,
14861 UINT WorkGraphIndex,
14862 UINT EntrypointIndex);
14863
14864 END_INTERFACE
14865 } ID3D12WorkGraphPropertiesVtbl;
14866
14867 interface ID3D12WorkGraphProperties
14868 {
14869 CONST_VTBL struct ID3D12WorkGraphPropertiesVtbl *lpVtbl;
14870 };
14871
14872
14873
14874#ifdef COBJMACROS
14875
14876
14877#define ID3D12WorkGraphProperties_QueryInterface(This,riid,ppvObject) \
14878 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
14879
14880#define ID3D12WorkGraphProperties_AddRef(This) \
14881 ( (This)->lpVtbl -> AddRef(This) )
14882
14883#define ID3D12WorkGraphProperties_Release(This) \
14884 ( (This)->lpVtbl -> Release(This) )
14885
14886
14887#define ID3D12WorkGraphProperties_GetNumWorkGraphs(This) \
14888 ( (This)->lpVtbl -> GetNumWorkGraphs(This) )
14889
14890#define ID3D12WorkGraphProperties_GetProgramName(This,WorkGraphIndex) \
14891 ( (This)->lpVtbl -> GetProgramName(This,WorkGraphIndex) )
14892
14893#define ID3D12WorkGraphProperties_GetWorkGraphIndex(This,pProgramName) \
14894 ( (This)->lpVtbl -> GetWorkGraphIndex(This,pProgramName) )
14895
14896#define ID3D12WorkGraphProperties_GetNumNodes(This,WorkGraphIndex) \
14897 ( (This)->lpVtbl -> GetNumNodes(This,WorkGraphIndex) )
14898#if !defined(_WIN32)
14899
14900#define ID3D12WorkGraphProperties_GetNodeID(This,WorkGraphIndex,NodeIndex) \
14901 ( (This)->lpVtbl -> GetNodeID(This,WorkGraphIndex,NodeIndex) )
14902#else
14903#define ID3D12WorkGraphProperties_GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) \
14904 ( (This)->lpVtbl -> GetNodeID(This,RetVal,WorkGraphIndex,NodeIndex) )
14905#endif
14906
14907#define ID3D12WorkGraphProperties_GetNodeIndex(This,WorkGraphIndex,NodeID) \
14908 ( (This)->lpVtbl -> GetNodeIndex(This,WorkGraphIndex,NodeID) )
14909
14910#define ID3D12WorkGraphProperties_GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) \
14911 ( (This)->lpVtbl -> GetNodeLocalRootArgumentsTableIndex(This,WorkGraphIndex,NodeIndex) )
14912
14913#define ID3D12WorkGraphProperties_GetNumEntrypoints(This,WorkGraphIndex) \
14914 ( (This)->lpVtbl -> GetNumEntrypoints(This,WorkGraphIndex) )
14915#if !defined(_WIN32)
14916
14917#define ID3D12WorkGraphProperties_GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) \
14918 ( (This)->lpVtbl -> GetEntrypointID(This,WorkGraphIndex,EntrypointIndex) )
14919#else
14920#define ID3D12WorkGraphProperties_GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) \
14921 ( (This)->lpVtbl -> GetEntrypointID(This,RetVal,WorkGraphIndex,EntrypointIndex) )
14922#endif
14923
14924#define ID3D12WorkGraphProperties_GetEntrypointIndex(This,WorkGraphIndex,NodeID) \
14925 ( (This)->lpVtbl -> GetEntrypointIndex(This,WorkGraphIndex,NodeID) )
14926
14927#define ID3D12WorkGraphProperties_GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) \
14928 ( (This)->lpVtbl -> GetEntrypointRecordSizeInBytes(This,WorkGraphIndex,EntrypointIndex) )
14929
14930#define ID3D12WorkGraphProperties_GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) \
14931 ( (This)->lpVtbl -> GetWorkGraphMemoryRequirements(This,WorkGraphIndex,pWorkGraphMemoryRequirements) )
14932
14933#define ID3D12WorkGraphProperties_GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) \
14934 ( (This)->lpVtbl -> GetEntrypointRecordAlignmentInBytes(This,WorkGraphIndex,EntrypointIndex) )
14935
14936#endif /* COBJMACROS */
14937
14938
14939#endif /* C style interface */
14940
14941
14942
14943
14944#endif /* __ID3D12WorkGraphProperties_INTERFACE_DEFINED__ */
14945
14946
14947/* interface __MIDL_itf_d3d12_0000_0039 */
14948/* [local] */
14949
14950typedef
14951enum D3D12_STATE_SUBOBJECT_TYPE
14952 {
14953 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0,
14954 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1,
14955 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2,
14956 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3,
14957 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5,
14958 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6,
14959 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
14960 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8,
14961 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
14962 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,
14963 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,
14964 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,
14965 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13,
14966 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,
14967 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,
14968 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,
14969 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,
14970 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,
14971 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,
14972 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,
14973 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,
14974 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,
14975 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,
14976 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,
14977 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,
14978 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27,
14979 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28,
14980 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29,
14981 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30,
14982 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31,
14983 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32,
14984 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33,
14985 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36,
14986 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY + 1 )
14987 } D3D12_STATE_SUBOBJECT_TYPE;
14988
14989typedef struct D3D12_STATE_SUBOBJECT
14990 {
14991 D3D12_STATE_SUBOBJECT_TYPE Type;
14992 const void *pDesc;
14993 } D3D12_STATE_SUBOBJECT;
14994
14995typedef
14996enum D3D12_STATE_OBJECT_FLAGS
14997 {
14998 D3D12_STATE_OBJECT_FLAG_NONE = 0,
14999 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
15000 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
15001 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4
15002 } D3D12_STATE_OBJECT_FLAGS;
15003
15004DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )
15005typedef struct D3D12_STATE_OBJECT_CONFIG
15006 {
15007 D3D12_STATE_OBJECT_FLAGS Flags;
15008 } D3D12_STATE_OBJECT_CONFIG;
15009
15010typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
15011 {
15012 ID3D12RootSignature *pGlobalRootSignature;
15013 } D3D12_GLOBAL_ROOT_SIGNATURE;
15014
15015typedef struct D3D12_LOCAL_ROOT_SIGNATURE
15016 {
15017 ID3D12RootSignature *pLocalRootSignature;
15018 } D3D12_LOCAL_ROOT_SIGNATURE;
15019
15020typedef struct D3D12_NODE_MASK
15021 {
15022 UINT NodeMask;
15023 } D3D12_NODE_MASK;
15024
15025typedef struct D3D12_SAMPLE_MASK
15026 {
15027 UINT SampleMask;
15028 } D3D12_SAMPLE_MASK;
15029
15030typedef struct D3D12_IB_STRIP_CUT_VALUE
15031 {
15032 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
15033 } D3D12_IB_STRIP_CUT_VALUE;
15034
15035typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
15036 {
15037 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
15038 } D3D12_PRIMITIVE_TOPOLOGY_DESC;
15039
15040typedef struct D3D12_DEPTH_STENCIL_FORMAT
15041 {
15042 DXGI_FORMAT DepthStencilFormat;
15043 } D3D12_DEPTH_STENCIL_FORMAT;
15044
15045typedef
15046enum D3D12_EXPORT_FLAGS
15047 {
15048 D3D12_EXPORT_FLAG_NONE = 0
15049 } D3D12_EXPORT_FLAGS;
15050
15051DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )
15052typedef struct D3D12_EXPORT_DESC
15053 {
15054 LPCWSTR Name;
15055 _In_opt_ LPCWSTR ExportToRename;
15056 D3D12_EXPORT_FLAGS Flags;
15057 } D3D12_EXPORT_DESC;
15058
15059typedef struct D3D12_DXIL_LIBRARY_DESC
15060 {
15061 D3D12_SHADER_BYTECODE DXILLibrary;
15062 UINT NumExports;
15063 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15064 } D3D12_DXIL_LIBRARY_DESC;
15065
15066typedef struct D3D12_EXISTING_COLLECTION_DESC
15067 {
15068 ID3D12StateObject *pExistingCollection;
15069 UINT NumExports;
15070 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
15071 } D3D12_EXISTING_COLLECTION_DESC;
15072
15073typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15074 {
15075 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
15076 UINT NumExports;
15077 _In_reads_(NumExports) LPCWSTR *pExports;
15078 } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15079
15080typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
15081 {
15082 LPCWSTR SubobjectToAssociate;
15083 UINT NumExports;
15084 _In_reads_(NumExports) LPCWSTR *pExports;
15085 } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
15086
15087typedef
15088enum D3D12_HIT_GROUP_TYPE
15089 {
15090 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0,
15091 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1
15092 } D3D12_HIT_GROUP_TYPE;
15093
15094typedef struct D3D12_HIT_GROUP_DESC
15095 {
15096 LPCWSTR HitGroupExport;
15097 D3D12_HIT_GROUP_TYPE Type;
15098 _In_opt_ LPCWSTR AnyHitShaderImport;
15099 _In_opt_ LPCWSTR ClosestHitShaderImport;
15100 _In_opt_ LPCWSTR IntersectionShaderImport;
15101 } D3D12_HIT_GROUP_DESC;
15102
15103typedef struct D3D12_RAYTRACING_SHADER_CONFIG
15104 {
15105 UINT MaxPayloadSizeInBytes;
15106 UINT MaxAttributeSizeInBytes;
15107 } D3D12_RAYTRACING_SHADER_CONFIG;
15108
15109typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
15110 {
15111 UINT MaxTraceRecursionDepth;
15112 } D3D12_RAYTRACING_PIPELINE_CONFIG;
15113
15114typedef
15115enum D3D12_RAYTRACING_PIPELINE_FLAGS
15116 {
15117 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0,
15118 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
15119 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15120 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400
15121 } D3D12_RAYTRACING_PIPELINE_FLAGS;
15122
15123DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )
15124typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
15125 {
15126 UINT MaxTraceRecursionDepth;
15127 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
15128 } D3D12_RAYTRACING_PIPELINE_CONFIG1;
15129
15130typedef struct D3D12_NODE_OUTPUT_OVERRIDES
15131 {
15132 UINT OutputIndex;
15133 _In_opt_ const D3D12_NODE_ID *pNewName;
15134 _In_opt_ const BOOL *pAllowSparseNodes;
15135 _In_opt_ const UINT *pMaxRecords;
15136 _In_opt_ const UINT *pMaxRecordsSharedWithOutputIndex;
15137 } D3D12_NODE_OUTPUT_OVERRIDES;
15138
15139typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
15140 {
15141 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15142 _In_opt_ const BOOL *pProgramEntry;
15143 _In_opt_ const D3D12_NODE_ID *pNewName;
15144 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15145 _In_reads_opt_(3) const UINT *pDispatchGrid;
15146 _In_reads_opt_(3) const UINT *pMaxDispatchGrid;
15147 UINT NumOutputOverrides;
15148 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15149 } D3D12_BROADCASTING_LAUNCH_OVERRIDES;
15150
15151typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
15152 {
15153 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15154 _In_opt_ const BOOL *pProgramEntry;
15155 _In_opt_ const D3D12_NODE_ID *pNewName;
15156 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15157 UINT NumOutputOverrides;
15158 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15159 } D3D12_COALESCING_LAUNCH_OVERRIDES;
15160
15161typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
15162 {
15163 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15164 _In_opt_ const BOOL *pProgramEntry;
15165 _In_opt_ const D3D12_NODE_ID *pNewName;
15166 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15167 UINT NumOutputOverrides;
15168 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15169 } D3D12_THREAD_LAUNCH_OVERRIDES;
15170
15171typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
15172 {
15173 _In_opt_ const UINT *pLocalRootArgumentsTableIndex;
15174 _In_opt_ const BOOL *pProgramEntry;
15175 _In_opt_ const D3D12_NODE_ID *pNewName;
15176 _In_opt_ const D3D12_NODE_ID *pShareInputOf;
15177 UINT NumOutputOverrides;
15178 _In_reads_opt_(NumOutputOverrides) const D3D12_NODE_OUTPUT_OVERRIDES *pOutputOverrides;
15179 } D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
15180
15181typedef
15182enum D3D12_NODE_OVERRIDES_TYPE
15183 {
15184 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
15185 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
15186 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
15187 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
15188 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4
15189 } D3D12_NODE_OVERRIDES_TYPE;
15190
15191typedef struct D3D12_SHADER_NODE
15192 {
15193 LPCWSTR Shader;
15194 D3D12_NODE_OVERRIDES_TYPE OverridesType;
15195 union
15196 {
15197 const D3D12_BROADCASTING_LAUNCH_OVERRIDES *pBroadcastingLaunchOverrides;
15198 const D3D12_COALESCING_LAUNCH_OVERRIDES *pCoalescingLaunchOverrides;
15199 const D3D12_THREAD_LAUNCH_OVERRIDES *pThreadLaunchOverrides;
15200 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES *pCommonComputeNodeOverrides;
15201 } ;
15202 } D3D12_SHADER_NODE;
15203
15204typedef
15205enum D3D12_NODE_TYPE
15206 {
15207 D3D12_NODE_TYPE_SHADER = 0
15208 } D3D12_NODE_TYPE;
15209
15210typedef struct D3D12_NODE
15211 {
15212 D3D12_NODE_TYPE NodeType;
15213 union
15214 {
15215 D3D12_SHADER_NODE Shader;
15216 } ;
15217 } D3D12_NODE;
15218
15219typedef
15220enum D3D12_WORK_GRAPH_FLAGS
15221 {
15222 D3D12_WORK_GRAPH_FLAG_NONE = 0,
15223 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1
15224 } D3D12_WORK_GRAPH_FLAGS;
15225
15226DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )
15227typedef struct D3D12_WORK_GRAPH_DESC
15228 {
15229 LPCWSTR ProgramName;
15230 D3D12_WORK_GRAPH_FLAGS Flags;
15231 UINT NumEntrypoints;
15232 _In_reads_opt_(NumEntrypoints) const D3D12_NODE_ID *pEntrypoints;
15233 UINT NumExplicitlyDefinedNodes;
15234 _In_reads_opt_(NumExplicitlyDefinedNodes) const D3D12_NODE *pExplicitlyDefinedNodes;
15235 } D3D12_WORK_GRAPH_DESC;
15236
15237typedef struct D3D12_GENERIC_PROGRAM_DESC
15238 {
15239 LPCWSTR ProgramName;
15240 UINT NumExports;
15241 _In_reads_(NumExports) LPCWSTR *pExports;
15242 UINT NumSubobjects;
15243 _In_reads_opt_(NumSubobjects) const D3D12_STATE_SUBOBJECT *const *ppSubobjects;
15244 } D3D12_GENERIC_PROGRAM_DESC;
15245
15246typedef
15247enum D3D12_STATE_OBJECT_TYPE
15248 {
15249 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
15250 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
15251 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
15252 } D3D12_STATE_OBJECT_TYPE;
15253
15254typedef struct D3D12_STATE_OBJECT_DESC
15255 {
15256 D3D12_STATE_OBJECT_TYPE Type;
15257 UINT NumSubobjects;
15258 _In_reads_(NumSubobjects) const D3D12_STATE_SUBOBJECT *pSubobjects;
15259 } D3D12_STATE_OBJECT_DESC;
15260
15261typedef
15262enum D3D12_RAYTRACING_GEOMETRY_FLAGS
15263 {
15264 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
15265 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
15266 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2
15267 } D3D12_RAYTRACING_GEOMETRY_FLAGS;
15268
15269DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )
15270typedef
15271enum D3D12_RAYTRACING_GEOMETRY_TYPE
15272 {
15273 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0,
15274 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) ,
15275 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES = ( D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS + 1 )
15276 } D3D12_RAYTRACING_GEOMETRY_TYPE;
15277
15278typedef
15279enum D3D12_RAYTRACING_INSTANCE_FLAGS
15280 {
15281 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
15282 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
15283 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
15284 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
15285 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
15286 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
15287 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
15288 } D3D12_RAYTRACING_INSTANCE_FLAGS;
15289
15290DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )
15291typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
15292 {
15293 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15294 UINT64 StrideInBytes;
15295 } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
15296
15297typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
15298 {
15299 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15300 UINT64 SizeInBytes;
15301 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
15302
15303typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
15304 {
15305 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
15306 UINT64 SizeInBytes;
15307 UINT64 StrideInBytes;
15308 } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
15309
15310typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
15311 {
15312 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
15313 DXGI_FORMAT IndexFormat;
15314 DXGI_FORMAT VertexFormat;
15315 UINT IndexCount;
15316 UINT VertexCount;
15317 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
15318 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
15319 } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
15320
15321typedef struct D3D12_RAYTRACING_AABB
15322 {
15323 FLOAT MinX;
15324 FLOAT MinY;
15325 FLOAT MinZ;
15326 FLOAT MaxX;
15327 FLOAT MaxY;
15328 FLOAT MaxZ;
15329 } D3D12_RAYTRACING_AABB;
15330
15331typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
15332 {
15333 UINT64 AABBCount;
15334 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
15335 } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
15336
15337typedef
15338enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
15339 {
15340 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
15341 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
15342 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
15343 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4
15344 } D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
15345
15346typedef
15347enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
15348 {
15349 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
15350 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
15351 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
15352 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3
15353 } D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
15354
15355typedef
15356enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
15357 {
15358 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
15359 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2
15360 } D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
15361
15362typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC
15363{
15364 UINT ByteOffset;
15365 UINT SubdivisionLevel : 16;
15366 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;
15367} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;
15368typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
15369 {
15370 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
15371 DXGI_FORMAT OpacityMicromapIndexFormat;
15372 UINT OpacityMicromapBaseLocation;
15373 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
15374 } D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
15375
15376typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
15377 {
15378 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC *pTriangles;
15379 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC *pOmmLinkage;
15380 } D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
15381
15382typedef
15383enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
15384 {
15385 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0,
15386 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1,
15387 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
15388 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4,
15389 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8,
15390 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
15391 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
15392 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
15393 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80
15394 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
15395
15396DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )
15397typedef
15398enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
15399 {
15400 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0,
15401 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
15402 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
15403 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
15404 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4
15405 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
15406
15407typedef
15408enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
15409 {
15410 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0,
15411 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
15412 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2
15413 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
15414
15415typedef
15416enum D3D12_ELEMENTS_LAYOUT
15417 {
15418 D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
15419 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
15420 } D3D12_ELEMENTS_LAYOUT;
15421
15422typedef
15423enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
15424 {
15425 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0,
15426 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
15427 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
15428 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
15429 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
15430
15431typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
15432 {
15433 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15434 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
15435 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
15436
15437typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
15438 {
15439 UINT64 CompactedSizeInBytes;
15440 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
15441
15442typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15443 {
15444 UINT64 DecodedSizeInBytes;
15445 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15446
15447typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
15448 {
15449 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15450 UINT NumDescs;
15451 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
15452
15453// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,
15454// depending on Type field, NumDescs above is followed by either:
15455// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]
15456// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].
15457// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).
15458//
15459// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer
15460//
15461// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.
15462
15463typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
15464 {
15465 UINT64 SerializedSizeInBytes;
15466 union
15467 {
15468 UINT64 NumBottomLevelAccelerationStructurePointers;
15469 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
15470 } ;
15471 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
15472
15473typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
15474 {
15475 GUID DriverOpaqueGUID;
15476 BYTE DriverOpaqueVersioningData[ 16 ];
15477 } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
15478
15479typedef
15480enum D3D12_SERIALIZED_DATA_TYPE
15481 {
15482 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0,
15483 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1
15484 } D3D12_SERIALIZED_DATA_TYPE;
15485
15486typedef
15487enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
15488 {
15489 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0,
15490 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
15491 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
15492 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
15493 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4
15494 } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
15495
15496typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
15497 {
15498 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15499 UINT64 SerializedSizeInBytesIncludingHeader;
15500 UINT64 DeserializedSizeInBytes;
15501 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
15502 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
15503
15504typedef
15505enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
15506 {
15507 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
15508 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
15509 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
15510 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
15511
15512typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
15513 {
15514 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
15515 UINT64 SerializedSizeInBytesIncludingHeader;
15516 UINT64 DeserializedSizeInBytes;
15517 union
15518 {
15519 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
15520 UINT NumBlocks;
15521 } ;
15522 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
15523 } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
15524
15525typedef
15526enum D3D12_SERIALIZED_BLOCK_TYPE
15527 {
15528 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0
15529 } D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
15530
15531typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
15532 {
15533 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
15534 UINT64 NumBlockPointersAfterHeader;
15535 } D3D12_RAYTRACING_SERIALIZED_BLOCK;
15536
15537typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
15538 {
15539 UINT64 CurrentSizeInBytes;
15540 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15541
15542typedef struct D3D12_RAYTRACING_INSTANCE_DESC
15543 {
15544 FLOAT Transform[ 3 ][ 4 ];
15545 UINT InstanceID : 24;
15546 UINT InstanceMask : 8;
15547 UINT InstanceContributionToHitGroupIndex : 24;
15548 UINT Flags : 8;
15549 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
15550 } D3D12_RAYTRACING_INSTANCE_DESC;
15551
15552typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
15553 {
15554 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
15555 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
15556 union
15557 {
15558 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
15559 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
15560 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
15561 } ;
15562 } D3D12_RAYTRACING_GEOMETRY_DESC;
15563
15564typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
15565 {
15566 UINT Count;
15567 UINT SubdivisionLevel;
15568 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
15569 } D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
15570
15571typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
15572 {
15573 UINT NumOmmHistogramEntries;
15574 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY *pOmmHistogram;
15575 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
15576 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
15577 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
15578
15579typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
15580 {
15581 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
15582 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
15583 UINT NumDescs;
15584 D3D12_ELEMENTS_LAYOUT DescsLayout;
15585 union
15586 {
15587 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
15588 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
15589 const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
15590 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC *pOpacityMicromapArrayDesc;
15591 } ;
15592 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
15593
15594typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
15595 {
15596 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
15597 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
15598 _In_opt_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
15599 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
15600 } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
15601
15602typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
15603 {
15604 UINT64 ResultDataMaxSizeInBytes;
15605 UINT64 ScratchDataSizeInBytes;
15606 UINT64 UpdateScratchDataSizeInBytes;
15607 } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
15608
15609typedef
15610enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
15611 {
15612 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0,
15613 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1
15614 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
15615
15616typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
15617 {
15618 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
15619 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
15620 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
15621
15622typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
15623 {
15624 UINT64 CurrentSizeInBytes;
15625 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
15626
15627typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
15628 {
15629 UINT64 DecodedSizeInBytes;
15630 } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
15631
15632typedef
15633enum D3D12_RAY_FLAGS
15634 {
15635 D3D12_RAY_FLAG_NONE = 0,
15636 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
15637 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2,
15638 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4,
15639 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8,
15640 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
15641 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
15642 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
15643 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
15644 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
15645 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
15646 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400
15647 } D3D12_RAY_FLAGS;
15648
15649DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )
15650typedef
15651enum D3D12_HIT_KIND
15652 {
15653 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
15654 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff
15655 } D3D12_HIT_KIND;
15656
15657
15658
15659extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_c_ifspec;
15660extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0039_v0_0_s_ifspec;
15661
15662#ifndef __ID3D12Device5_INTERFACE_DEFINED__
15663#define __ID3D12Device5_INTERFACE_DEFINED__
15664
15665/* interface ID3D12Device5 */
15666/* [unique][local][object][uuid] */
15667
15668
15669EXTERN_C const IID IID_ID3D12Device5;
15670
15671#if defined(__cplusplus) && !defined(CINTERFACE)
15672
15673 MIDL_INTERFACE("8b4f173b-2fea-4b80-8f58-4307191ab95d")
15674 ID3D12Device5 : public ID3D12Device4
15675 {
15676 public:
15677 virtual HRESULT STDMETHODCALLTYPE CreateLifetimeTracker(
15678 _In_ ID3D12LifetimeOwner *pOwner,
15679 REFIID riid,
15680 _COM_Outptr_ void **ppvTracker) = 0;
15681
15682 virtual void STDMETHODCALLTYPE RemoveDevice( void) = 0;
15683
15684 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommands(
15685 _Inout_ UINT *pNumMetaCommands,
15686 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs) = 0;
15687
15688 virtual HRESULT STDMETHODCALLTYPE EnumerateMetaCommandParameters(
15689 _In_ REFGUID CommandId,
15690 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
15691 _Out_opt_ UINT *pTotalStructureSizeInBytes,
15692 _Inout_ UINT *pParameterCount,
15693 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs) = 0;
15694
15695 virtual HRESULT STDMETHODCALLTYPE CreateMetaCommand(
15696 _In_ REFGUID CommandId,
15697 _In_ UINT NodeMask,
15698 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
15699 _In_ SIZE_T CreationParametersDataSizeInBytes,
15700 REFIID riid,
15701 _COM_Outptr_ void **ppMetaCommand) = 0;
15702
15703 virtual HRESULT STDMETHODCALLTYPE CreateStateObject(
15704 const D3D12_STATE_OBJECT_DESC *pDesc,
15705 REFIID riid,
15706 _COM_Outptr_ void **ppStateObject) = 0;
15707
15708 virtual void STDMETHODCALLTYPE GetRaytracingAccelerationStructurePrebuildInfo(
15709 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
15710 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo) = 0;
15711
15712 virtual D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS STDMETHODCALLTYPE CheckDriverMatchingIdentifier(
15713 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
15714 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck) = 0;
15715
15716 };
15717
15718
15719#else /* C style interface */
15720
15721 typedef struct ID3D12Device5Vtbl
15722 {
15723 BEGIN_INTERFACE
15724
15725 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
15726 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
15727 ID3D12Device5 * This,
15728 REFIID riid,
15729 _COM_Outptr_ void **ppvObject);
15730
15731 DECLSPEC_XFGVIRT(IUnknown, AddRef)
15732 ULONG ( STDMETHODCALLTYPE *AddRef )(
15733 ID3D12Device5 * This);
15734
15735 DECLSPEC_XFGVIRT(IUnknown, Release)
15736 ULONG ( STDMETHODCALLTYPE *Release )(
15737 ID3D12Device5 * This);
15738
15739 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
15740 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
15741 ID3D12Device5 * This,
15742 _In_ REFGUID guid,
15743 _Inout_ UINT *pDataSize,
15744 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
15745
15746 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
15747 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
15748 ID3D12Device5 * This,
15749 _In_ REFGUID guid,
15750 _In_ UINT DataSize,
15751 _In_reads_bytes_opt_( DataSize ) const void *pData);
15752
15753 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
15754 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
15755 ID3D12Device5 * This,
15756 _In_ REFGUID guid,
15757 _In_opt_ const IUnknown *pData);
15758
15759 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
15760 HRESULT ( STDMETHODCALLTYPE *SetName )(
15761 ID3D12Device5 * This,
15762 _In_z_ LPCWSTR Name);
15763
15764 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
15765 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
15766 ID3D12Device5 * This);
15767
15768 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
15769 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
15770 ID3D12Device5 * This,
15771 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
15772 REFIID riid,
15773 _COM_Outptr_ void **ppCommandQueue);
15774
15775 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
15776 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
15777 ID3D12Device5 * This,
15778 _In_ D3D12_COMMAND_LIST_TYPE type,
15779 REFIID riid,
15780 _COM_Outptr_ void **ppCommandAllocator);
15781
15782 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
15783 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
15784 ID3D12Device5 * This,
15785 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
15786 REFIID riid,
15787 _COM_Outptr_ void **ppPipelineState);
15788
15789 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
15790 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
15791 ID3D12Device5 * This,
15792 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
15793 REFIID riid,
15794 _COM_Outptr_ void **ppPipelineState);
15795
15796 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
15797 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
15798 ID3D12Device5 * This,
15799 _In_ UINT nodeMask,
15800 _In_ D3D12_COMMAND_LIST_TYPE type,
15801 _In_ ID3D12CommandAllocator *pCommandAllocator,
15802 _In_opt_ ID3D12PipelineState *pInitialState,
15803 REFIID riid,
15804 _COM_Outptr_ void **ppCommandList);
15805
15806 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
15807 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
15808 ID3D12Device5 * This,
15809 D3D12_FEATURE Feature,
15810 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
15811 UINT FeatureSupportDataSize);
15812
15813 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
15814 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
15815 ID3D12Device5 * This,
15816 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
15817 REFIID riid,
15818 _COM_Outptr_ void **ppvHeap);
15819
15820 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
15821 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
15822 ID3D12Device5 * This,
15823 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
15824
15825 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
15826 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
15827 ID3D12Device5 * This,
15828 _In_ UINT nodeMask,
15829 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
15830 _In_ SIZE_T blobLengthInBytes,
15831 REFIID riid,
15832 _COM_Outptr_ void **ppvRootSignature);
15833
15834 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
15835 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
15836 ID3D12Device5 * This,
15837 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
15838 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15839
15840 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
15841 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
15842 ID3D12Device5 * This,
15843 _In_opt_ ID3D12Resource *pResource,
15844 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
15845 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15846
15847 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
15848 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
15849 ID3D12Device5 * This,
15850 _In_opt_ ID3D12Resource *pResource,
15851 _In_opt_ ID3D12Resource *pCounterResource,
15852 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
15853 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15854
15855 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
15856 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
15857 ID3D12Device5 * This,
15858 _In_opt_ ID3D12Resource *pResource,
15859 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
15860 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15861
15862 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
15863 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
15864 ID3D12Device5 * This,
15865 _In_opt_ ID3D12Resource *pResource,
15866 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
15867 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15868
15869 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
15870 void ( STDMETHODCALLTYPE *CreateSampler )(
15871 ID3D12Device5 * This,
15872 _In_ const D3D12_SAMPLER_DESC *pDesc,
15873 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
15874
15875 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
15876 void ( STDMETHODCALLTYPE *CopyDescriptors )(
15877 ID3D12Device5 * This,
15878 _In_ UINT NumDestDescriptorRanges,
15879 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
15880 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
15881 _In_ UINT NumSrcDescriptorRanges,
15882 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
15883 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
15884 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15885
15886 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
15887 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
15888 ID3D12Device5 * This,
15889 _In_ UINT NumDescriptors,
15890 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
15891 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
15892 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
15893
15894 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
15895#if !defined(_WIN32)
15896 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15897 ID3D12Device5 * This,
15898 _In_ UINT visibleMask,
15899 _In_ UINT numResourceDescs,
15900 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15901
15902#else
15903 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
15904 ID3D12Device5 * This,
15905 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
15906 _In_ UINT visibleMask,
15907 _In_ UINT numResourceDescs,
15908 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
15909
15910#endif
15911
15912 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
15913#if !defined(_WIN32)
15914 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15915 ID3D12Device5 * This,
15916 _In_ UINT nodeMask,
15917 D3D12_HEAP_TYPE heapType);
15918
15919#else
15920 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
15921 ID3D12Device5 * This,
15922 D3D12_HEAP_PROPERTIES * RetVal,
15923 _In_ UINT nodeMask,
15924 D3D12_HEAP_TYPE heapType);
15925
15926#endif
15927
15928 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
15929 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
15930 ID3D12Device5 * This,
15931 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
15932 D3D12_HEAP_FLAGS HeapFlags,
15933 _In_ const D3D12_RESOURCE_DESC *pDesc,
15934 D3D12_RESOURCE_STATES InitialResourceState,
15935 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15936 REFIID riidResource,
15937 _COM_Outptr_opt_ void **ppvResource);
15938
15939 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
15940 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
15941 ID3D12Device5 * This,
15942 _In_ const D3D12_HEAP_DESC *pDesc,
15943 REFIID riid,
15944 _COM_Outptr_opt_ void **ppvHeap);
15945
15946 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
15947 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
15948 ID3D12Device5 * This,
15949 _In_ ID3D12Heap *pHeap,
15950 UINT64 HeapOffset,
15951 _In_ const D3D12_RESOURCE_DESC *pDesc,
15952 D3D12_RESOURCE_STATES InitialState,
15953 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15954 REFIID riid,
15955 _COM_Outptr_opt_ void **ppvResource);
15956
15957 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
15958 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
15959 ID3D12Device5 * This,
15960 _In_ const D3D12_RESOURCE_DESC *pDesc,
15961 D3D12_RESOURCE_STATES InitialState,
15962 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
15963 REFIID riid,
15964 _COM_Outptr_opt_ void **ppvResource);
15965
15966 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
15967 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
15968 ID3D12Device5 * This,
15969 _In_ ID3D12DeviceChild *pObject,
15970 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
15971 DWORD Access,
15972 _In_opt_ LPCWSTR Name,
15973 _Out_ HANDLE *pHandle);
15974
15975 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
15976 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
15977 ID3D12Device5 * This,
15978 _In_ HANDLE NTHandle,
15979 REFIID riid,
15980 _COM_Outptr_opt_ void **ppvObj);
15981
15982 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
15983 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
15984 ID3D12Device5 * This,
15985 _In_ LPCWSTR Name,
15986 DWORD Access,
15987 /* [annotation][out] */
15988 _Out_ HANDLE *pNTHandle);
15989
15990 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
15991 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
15992 ID3D12Device5 * This,
15993 UINT NumObjects,
15994 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
15995
15996 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
15997 HRESULT ( STDMETHODCALLTYPE *Evict )(
15998 ID3D12Device5 * This,
15999 UINT NumObjects,
16000 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
16001
16002 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
16003 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
16004 ID3D12Device5 * This,
16005 UINT64 InitialValue,
16006 D3D12_FENCE_FLAGS Flags,
16007 REFIID riid,
16008 _COM_Outptr_ void **ppFence);
16009
16010 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
16011 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
16012 ID3D12Device5 * This);
16013
16014 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
16015 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
16016 ID3D12Device5 * This,
16017 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
16018 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
16019 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
16020 UINT64 BaseOffset,
16021 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
16022 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
16023 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
16024 _Out_opt_ UINT64 *pTotalBytes);
16025
16026 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
16027 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
16028 ID3D12Device5 * This,
16029 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
16030 REFIID riid,
16031 _COM_Outptr_opt_ void **ppvHeap);
16032
16033 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
16034 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
16035 ID3D12Device5 * This,
16036 BOOL Enable);
16037
16038 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
16039 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
16040 ID3D12Device5 * This,
16041 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
16042 _In_opt_ ID3D12RootSignature *pRootSignature,
16043 REFIID riid,
16044 _COM_Outptr_opt_ void **ppvCommandSignature);
16045
16046 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
16047 void ( STDMETHODCALLTYPE *GetResourceTiling )(
16048 ID3D12Device5 * This,
16049 _In_ ID3D12Resource *pTiledResource,
16050 _Out_opt_ UINT *pNumTilesForEntireResource,
16051 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
16052 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
16053 _Inout_opt_ UINT *pNumSubresourceTilings,
16054 _In_ UINT FirstSubresourceTilingToGet,
16055 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
16056
16057 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
16058#if !defined(_WIN32)
16059 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
16060 ID3D12Device5 * This);
16061
16062#else
16063 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
16064 ID3D12Device5 * This,
16065 LUID * RetVal);
16066
16067#endif
16068
16069 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
16070 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
16071 ID3D12Device5 * This,
16072 _In_reads_(BlobLength) const void *pLibraryBlob,
16073 SIZE_T BlobLength,
16074 REFIID riid,
16075 _COM_Outptr_ void **ppPipelineLibrary);
16076
16077 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
16078 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
16079 ID3D12Device5 * This,
16080 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
16081 _In_reads_(NumFences) const UINT64 *pFenceValues,
16082 UINT NumFences,
16083 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
16084 HANDLE hEvent);
16085
16086 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
16087 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
16088 ID3D12Device5 * This,
16089 UINT NumObjects,
16090 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16091 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
16092
16093 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
16094 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
16095 ID3D12Device5 * This,
16096 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
16097 REFIID riid,
16098 _COM_Outptr_ void **ppPipelineState);
16099
16100 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
16101 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
16102 ID3D12Device5 * This,
16103 _In_ const void *pAddress,
16104 REFIID riid,
16105 _COM_Outptr_ void **ppvHeap);
16106
16107 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
16108 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
16109 ID3D12Device5 * This,
16110 _In_ HANDLE hFileMapping,
16111 REFIID riid,
16112 _COM_Outptr_ void **ppvHeap);
16113
16114 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
16115 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
16116 ID3D12Device5 * This,
16117 D3D12_RESIDENCY_FLAGS Flags,
16118 UINT NumObjects,
16119 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
16120 _In_ ID3D12Fence *pFenceToSignal,
16121 UINT64 FenceValueToSignal);
16122
16123 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
16124 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
16125 ID3D12Device5 * This,
16126 _In_ UINT nodeMask,
16127 _In_ D3D12_COMMAND_LIST_TYPE type,
16128 _In_ D3D12_COMMAND_LIST_FLAGS flags,
16129 REFIID riid,
16130 _COM_Outptr_ void **ppCommandList);
16131
16132 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
16133 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
16134 ID3D12Device5 * This,
16135 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
16136 _In_ REFIID riid,
16137 _COM_Outptr_ void **ppSession);
16138
16139 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
16140 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
16141 ID3D12Device5 * This,
16142 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
16143 D3D12_HEAP_FLAGS HeapFlags,
16144 _In_ const D3D12_RESOURCE_DESC *pDesc,
16145 D3D12_RESOURCE_STATES InitialResourceState,
16146 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16147 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16148 REFIID riidResource,
16149 _COM_Outptr_opt_ void **ppvResource);
16150
16151 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
16152 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
16153 ID3D12Device5 * This,
16154 _In_ const D3D12_HEAP_DESC *pDesc,
16155 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16156 REFIID riid,
16157 _COM_Outptr_opt_ void **ppvHeap);
16158
16159 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
16160 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
16161 ID3D12Device5 * This,
16162 _In_ const D3D12_RESOURCE_DESC *pDesc,
16163 D3D12_RESOURCE_STATES InitialState,
16164 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
16165 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
16166 REFIID riid,
16167 _COM_Outptr_opt_ void **ppvResource);
16168
16169 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
16170#if !defined(_WIN32)
16171 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16172 ID3D12Device5 * This,
16173 UINT visibleMask,
16174 UINT numResourceDescs,
16175 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16176 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16177
16178#else
16179 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
16180 ID3D12Device5 * This,
16181 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
16182 UINT visibleMask,
16183 UINT numResourceDescs,
16184 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
16185 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
16186
16187#endif
16188
16189 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
16190 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
16191 ID3D12Device5 * This,
16192 _In_ ID3D12LifetimeOwner *pOwner,
16193 REFIID riid,
16194 _COM_Outptr_ void **ppvTracker);
16195
16196 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
16197 void ( STDMETHODCALLTYPE *RemoveDevice )(
16198 ID3D12Device5 * This);
16199
16200 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
16201 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
16202 ID3D12Device5 * This,
16203 _Inout_ UINT *pNumMetaCommands,
16204 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
16205
16206 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
16207 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
16208 ID3D12Device5 * This,
16209 _In_ REFGUID CommandId,
16210 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
16211 _Out_opt_ UINT *pTotalStructureSizeInBytes,
16212 _Inout_ UINT *pParameterCount,
16213 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
16214
16215 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
16216 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
16217 ID3D12Device5 * This,
16218 _In_ REFGUID CommandId,
16219 _In_ UINT NodeMask,
16220 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
16221 _In_ SIZE_T CreationParametersDataSizeInBytes,
16222 REFIID riid,
16223 _COM_Outptr_ void **ppMetaCommand);
16224
16225 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
16226 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
16227 ID3D12Device5 * This,
16228 const D3D12_STATE_OBJECT_DESC *pDesc,
16229 REFIID riid,
16230 _COM_Outptr_ void **ppStateObject);
16231
16232 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
16233 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
16234 ID3D12Device5 * This,
16235 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
16236 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
16237
16238 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
16239 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
16240 ID3D12Device5 * This,
16241 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
16242 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
16243
16244 END_INTERFACE
16245 } ID3D12Device5Vtbl;
16246
16247 interface ID3D12Device5
16248 {
16249 CONST_VTBL struct ID3D12Device5Vtbl *lpVtbl;
16250 };
16251
16252
16253
16254#ifdef COBJMACROS
16255
16256
16257#define ID3D12Device5_QueryInterface(This,riid,ppvObject) \
16258 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16259
16260#define ID3D12Device5_AddRef(This) \
16261 ( (This)->lpVtbl -> AddRef(This) )
16262
16263#define ID3D12Device5_Release(This) \
16264 ( (This)->lpVtbl -> Release(This) )
16265
16266
16267#define ID3D12Device5_GetPrivateData(This,guid,pDataSize,pData) \
16268 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
16269
16270#define ID3D12Device5_SetPrivateData(This,guid,DataSize,pData) \
16271 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
16272
16273#define ID3D12Device5_SetPrivateDataInterface(This,guid,pData) \
16274 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
16275
16276#define ID3D12Device5_SetName(This,Name) \
16277 ( (This)->lpVtbl -> SetName(This,Name) )
16278
16279
16280#define ID3D12Device5_GetNodeCount(This) \
16281 ( (This)->lpVtbl -> GetNodeCount(This) )
16282
16283#define ID3D12Device5_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
16284 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
16285
16286#define ID3D12Device5_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
16287 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
16288
16289#define ID3D12Device5_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
16290 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
16291
16292#define ID3D12Device5_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
16293 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
16294
16295#define ID3D12Device5_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
16296 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
16297
16298#define ID3D12Device5_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
16299 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
16300
16301#define ID3D12Device5_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
16302 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
16303
16304#define ID3D12Device5_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
16305 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
16306
16307#define ID3D12Device5_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
16308 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
16309
16310#define ID3D12Device5_CreateConstantBufferView(This,pDesc,DestDescriptor) \
16311 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
16312
16313#define ID3D12Device5_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
16314 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
16315
16316#define ID3D12Device5_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
16317 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
16318
16319#define ID3D12Device5_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
16320 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
16321
16322#define ID3D12Device5_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
16323 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
16324
16325#define ID3D12Device5_CreateSampler(This,pDesc,DestDescriptor) \
16326 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
16327
16328#define ID3D12Device5_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
16329 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
16330
16331#define ID3D12Device5_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
16332 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
16333#if !defined(_WIN32)
16334
16335#define ID3D12Device5_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
16336 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
16337#else
16338#define ID3D12Device5_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
16339 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
16340#endif
16341#if !defined(_WIN32)
16342
16343#define ID3D12Device5_GetCustomHeapProperties(This,nodeMask,heapType) \
16344 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
16345#else
16346#define ID3D12Device5_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
16347 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
16348#endif
16349
16350#define ID3D12Device5_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
16351 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
16352
16353#define ID3D12Device5_CreateHeap(This,pDesc,riid,ppvHeap) \
16354 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
16355
16356#define ID3D12Device5_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16357 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16358
16359#define ID3D12Device5_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
16360 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
16361
16362#define ID3D12Device5_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
16363 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
16364
16365#define ID3D12Device5_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
16366 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
16367
16368#define ID3D12Device5_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
16369 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
16370
16371#define ID3D12Device5_MakeResident(This,NumObjects,ppObjects) \
16372 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
16373
16374#define ID3D12Device5_Evict(This,NumObjects,ppObjects) \
16375 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
16376
16377#define ID3D12Device5_CreateFence(This,InitialValue,Flags,riid,ppFence) \
16378 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
16379
16380#define ID3D12Device5_GetDeviceRemovedReason(This) \
16381 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
16382
16383#define ID3D12Device5_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
16384 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
16385
16386#define ID3D12Device5_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
16387 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
16388
16389#define ID3D12Device5_SetStablePowerState(This,Enable) \
16390 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
16391
16392#define ID3D12Device5_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
16393 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
16394
16395#define ID3D12Device5_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
16396 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
16397#if !defined(_WIN32)
16398
16399#define ID3D12Device5_GetAdapterLuid(This) \
16400 ( (This)->lpVtbl -> GetAdapterLuid(This) )
16401#else
16402#define ID3D12Device5_GetAdapterLuid(This,RetVal) \
16403 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
16404#endif
16405
16406
16407#define ID3D12Device5_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
16408 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
16409
16410#define ID3D12Device5_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
16411 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
16412
16413#define ID3D12Device5_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
16414 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
16415
16416
16417#define ID3D12Device5_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
16418 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
16419
16420
16421#define ID3D12Device5_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
16422 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
16423
16424#define ID3D12Device5_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
16425 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
16426
16427#define ID3D12Device5_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
16428 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
16429
16430
16431#define ID3D12Device5_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
16432 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
16433
16434#define ID3D12Device5_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
16435 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
16436
16437#define ID3D12Device5_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
16438 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
16439
16440#define ID3D12Device5_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
16441 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
16442
16443#define ID3D12Device5_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
16444 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
16445#if !defined(_WIN32)
16446
16447#define ID3D12Device5_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16448 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16449#else
16450#define ID3D12Device5_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
16451 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
16452#endif
16453
16454
16455#define ID3D12Device5_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
16456 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
16457
16458#define ID3D12Device5_RemoveDevice(This) \
16459 ( (This)->lpVtbl -> RemoveDevice(This) )
16460
16461#define ID3D12Device5_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
16462 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
16463
16464#define ID3D12Device5_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
16465 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
16466
16467#define ID3D12Device5_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
16468 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
16469
16470#define ID3D12Device5_CreateStateObject(This,pDesc,riid,ppStateObject) \
16471 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
16472
16473#define ID3D12Device5_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
16474 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
16475
16476#define ID3D12Device5_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
16477 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
16478
16479#endif /* COBJMACROS */
16480
16481
16482#endif /* C style interface */
16483
16484
16485
16486
16487#endif /* __ID3D12Device5_INTERFACE_DEFINED__ */
16488
16489
16490/* interface __MIDL_itf_d3d12_0000_0040 */
16491/* [local] */
16492
16493typedef
16494enum D3D12_MARKER_API
16495 {
16496 D3D12_MARKER_API_SETMARKER = 0,
16497 D3D12_MARKER_API_BEGINEVENT = 1,
16498 D3D12_MARKER_API_ENDEVENT = 2,
16499 D3D12_MARKER_API_DRAWINSTANCED = 3,
16500 D3D12_MARKER_API_DRAWINDEXEDINSTANCED = 4,
16501 D3D12_MARKER_API_EXECUTEINDIRECT = 5,
16502 D3D12_MARKER_API_DISPATCH = 6,
16503 D3D12_MARKER_API_COPYBUFFERREGION = 7,
16504 D3D12_MARKER_API_COPYTEXTUREREGION = 8,
16505 D3D12_MARKER_API_COPYRESOURCE = 9,
16506 D3D12_MARKER_API_COPYTILES = 10,
16507 D3D12_MARKER_API_RESOLVESUBRESOURCE = 11,
16508 D3D12_MARKER_API_CLEARRENDERTARGETVIEW = 12,
16509 D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW = 13,
16510 D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW = 14,
16511 D3D12_MARKER_API_RESOURCEBARRIER = 15,
16512 D3D12_MARKER_API_EXECUTEBUNDLE = 16,
16513 D3D12_MARKER_API_PRESENT = 17,
16514 D3D12_MARKER_API_RESOLVEQUERYDATA = 18,
16515 D3D12_MARKER_API_BEGINSUBMISSION = 19,
16516 D3D12_MARKER_API_ENDSUBMISSION = 20,
16517 D3D12_MARKER_API_DECODEFRAME = 21,
16518 D3D12_MARKER_API_PROCESSFRAMES = 22,
16519 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT = 23,
16520 D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64 = 24,
16521 D3D12_MARKER_API_RESOLVESUBRESOURCEREGION = 25,
16522 D3D12_MARKER_API_WRITEBUFFERIMMEDIATE = 26,
16523 D3D12_MARKER_API_DECODEFRAME1 = 27,
16524 D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION = 28,
16525 D3D12_MARKER_API_DECODEFRAME2 = 29,
16526 D3D12_MARKER_API_PROCESSFRAMES1 = 30,
16527 D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
16528 D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
16529 D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
16530 D3D12_MARKER_API_DISPATCHRAYS = 34,
16531 D3D12_MARKER_API_INITIALIZEMETACOMMAND = 35,
16532 D3D12_MARKER_API_EXECUTEMETACOMMAND = 36,
16533 D3D12_MARKER_API_ESTIMATEMOTION = 37,
16534 D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP = 38,
16535 D3D12_MARKER_API_SETPIPELINESTATE1 = 39,
16536 D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND = 40,
16537 D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND = 41,
16538 D3D12_MARKER_API_DISPATCHMESH = 42,
16539 D3D12_MARKER_API_ENCODEFRAME = 43,
16540 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA = 44,
16541 D3D12_MARKER_API_BARRIER = 45,
16542 D3D12_MARKER_API_BEGIN_COMMAND_LIST = 46,
16543 D3D12_MARKER_API_DISPATCHGRAPH = 47,
16544 D3D12_MARKER_API_SETPROGRAM = 48,
16545 D3D12_MARKER_API_ENCODEFRAME1 = 49,
16546 D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1 = 50,
16547 D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT = 51,
16548 D3D12_MARKER_API_PROCESSFRAMES2 = 52,
16549 D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = 53
16550 } D3D12_MARKER_API;
16551
16552typedef
16553enum D3D12_AUTO_BREADCRUMB_OP
16554 {
16555 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = D3D12_MARKER_API_SETMARKER,
16556 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = D3D12_MARKER_API_BEGINEVENT,
16557 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = D3D12_MARKER_API_ENDEVENT,
16558 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = D3D12_MARKER_API_DRAWINSTANCED,
16559 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = D3D12_MARKER_API_DRAWINDEXEDINSTANCED,
16560 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = D3D12_MARKER_API_EXECUTEINDIRECT,
16561 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = D3D12_MARKER_API_DISPATCH,
16562 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = D3D12_MARKER_API_COPYBUFFERREGION,
16563 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = D3D12_MARKER_API_COPYTEXTUREREGION,
16564 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = D3D12_MARKER_API_COPYRESOURCE,
16565 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = D3D12_MARKER_API_COPYTILES,
16566 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = D3D12_MARKER_API_RESOLVESUBRESOURCE,
16567 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = D3D12_MARKER_API_CLEARRENDERTARGETVIEW,
16568 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = D3D12_MARKER_API_CLEARUNORDEREDACCESSVIEW,
16569 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = D3D12_MARKER_API_CLEARDEPTHSTENCILVIEW,
16570 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = D3D12_MARKER_API_RESOURCEBARRIER,
16571 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = D3D12_MARKER_API_EXECUTEBUNDLE,
16572 D3D12_AUTO_BREADCRUMB_OP_PRESENT = D3D12_MARKER_API_PRESENT,
16573 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = D3D12_MARKER_API_RESOLVEQUERYDATA,
16574 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = D3D12_MARKER_API_BEGINSUBMISSION,
16575 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = D3D12_MARKER_API_ENDSUBMISSION,
16576 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = D3D12_MARKER_API_DECODEFRAME,
16577 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = D3D12_MARKER_API_PROCESSFRAMES,
16578 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT,
16579 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = D3D12_MARKER_API_ATOMICCOPYBUFFERUINT64,
16580 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = D3D12_MARKER_API_RESOLVESUBRESOURCEREGION,
16581 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = D3D12_MARKER_API_WRITEBUFFERIMMEDIATE,
16582 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = D3D12_MARKER_API_DECODEFRAME1,
16583 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = D3D12_MARKER_API_SETPROTECTEDRESOURCESESSION,
16584 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = D3D12_MARKER_API_DECODEFRAME2,
16585 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = D3D12_MARKER_API_PROCESSFRAMES1,
16586 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_BUILDRAYTRACINGACCELERATIONSTRUCTURE,
16587 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = D3D12_MARKER_API_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO,
16588 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = D3D12_MARKER_API_COPYRAYTRACINGACCELERATIONSTRUCTURE,
16589 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = D3D12_MARKER_API_DISPATCHRAYS,
16590 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = D3D12_MARKER_API_INITIALIZEMETACOMMAND,
16591 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = D3D12_MARKER_API_EXECUTEMETACOMMAND,
16592 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = D3D12_MARKER_API_ESTIMATEMOTION,
16593 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = D3D12_MARKER_API_RESOLVEMOTIONVECTORHEAP,
16594 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = D3D12_MARKER_API_SETPIPELINESTATE1,
16595 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = D3D12_MARKER_API_INITIALIZEEXTENSIONCOMMAND,
16596 D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = D3D12_MARKER_API_EXECUTEEXTENSIONCOMMAND,
16597 D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = D3D12_MARKER_API_DISPATCHMESH,
16598 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = D3D12_MARKER_API_ENCODEFRAME,
16599 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA,
16600 D3D12_AUTO_BREADCRUMB_OP_BARRIER = D3D12_MARKER_API_BARRIER,
16601 D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = D3D12_MARKER_API_BEGIN_COMMAND_LIST,
16602 D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = D3D12_MARKER_API_DISPATCHGRAPH,
16603 D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = D3D12_MARKER_API_SETPROGRAM,
16604 D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME1 = D3D12_MARKER_API_ENCODEFRAME1,
16605 D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA1 = D3D12_MARKER_API_RESOLVEENCODEROUTPUTMETADATA1,
16606 D3D12_AUTO_BREADCRUMB_OP_RESOLVEINPUTPARAMLAYOUT = D3D12_MARKER_API_RESOLVEINPUTPARAMLAYOUT,
16607 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = D3D12_MARKER_API_PROCESSFRAMES2,
16608 D3D12_AUTO_BREADCRUMB_OP_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS = D3D12_MARKER_API_SET_WORK_GRAPH_MAXIMUM_GPU_INPUT_RECORDS
16609 } D3D12_AUTO_BREADCRUMB_OP;
16610
16611typedef struct D3D12_AUTO_BREADCRUMB_NODE
16612 {
16613 const char *pCommandListDebugNameA;
16614 const wchar_t *pCommandListDebugNameW;
16615 const char *pCommandQueueDebugNameA;
16616 const wchar_t *pCommandQueueDebugNameW;
16617 ID3D12GraphicsCommandList *pCommandList;
16618 ID3D12CommandQueue *pCommandQueue;
16619 UINT32 BreadcrumbCount;
16620 const UINT32 *pLastBreadcrumbValue;
16621 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16622 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext;
16623 } D3D12_AUTO_BREADCRUMB_NODE;
16624
16625typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
16626 {
16627 UINT BreadcrumbIndex;
16628 const wchar_t *pContextString;
16629 } D3D12_DRED_BREADCRUMB_CONTEXT;
16630
16631typedef struct D3D12_AUTO_BREADCRUMB_NODE1
16632 {
16633 const char *pCommandListDebugNameA;
16634 const wchar_t *pCommandListDebugNameW;
16635 const char *pCommandQueueDebugNameA;
16636 const wchar_t *pCommandQueueDebugNameW;
16637 ID3D12GraphicsCommandList *pCommandList;
16638 ID3D12CommandQueue *pCommandQueue;
16639 UINT BreadcrumbCount;
16640 const UINT *pLastBreadcrumbValue;
16641 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
16642 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext;
16643 UINT BreadcrumbContextsCount;
16644 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
16645 } D3D12_AUTO_BREADCRUMB_NODE1;
16646
16647typedef
16648enum D3D12_DRED_VERSION
16649 {
16650 D3D12_DRED_VERSION_1_0 = 0x1,
16651 D3D12_DRED_VERSION_1_1 = 0x2,
16652 D3D12_DRED_VERSION_1_2 = 0x3,
16653 D3D12_DRED_VERSION_1_3 = 0x4
16654 } D3D12_DRED_VERSION;
16655
16656typedef
16657enum D3D12_DRED_FLAGS
16658 {
16659 D3D12_DRED_FLAG_NONE = 0,
16660 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
16661 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2
16662 } D3D12_DRED_FLAGS;
16663
16664DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )
16665typedef
16666enum D3D12_DRED_ENABLEMENT
16667 {
16668 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
16669 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
16670 D3D12_DRED_ENABLEMENT_FORCED_ON = 2
16671 } D3D12_DRED_ENABLEMENT;
16672
16673typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
16674 {
16675 _In_ D3D12_DRED_FLAGS Flags;
16676 _Out_ D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16677 } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
16678
16679typedef
16680enum D3D12_DRED_ALLOCATION_TYPE
16681 {
16682 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
16683 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
16684 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
16685 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
16686 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
16687 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
16688 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
16689 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
16690 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
16691 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
16692 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
16693 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
16694 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
16695 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
16696 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
16697 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
16698 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
16699 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
16700 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
16701 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
16702 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
16703 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
16704 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
16705 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
16706 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
16707 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
16708 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
16709 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
16710 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff
16711 } D3D12_DRED_ALLOCATION_TYPE;
16712
16713typedef struct D3D12_DRED_ALLOCATION_NODE
16714 {
16715 const char *ObjectNameA;
16716 const wchar_t *ObjectNameW;
16717 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16718 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
16719 } D3D12_DRED_ALLOCATION_NODE;
16720
16721typedef struct D3D12_DRED_ALLOCATION_NODE1
16722 {
16723 const char *ObjectNameA;
16724 const wchar_t *ObjectNameW;
16725 D3D12_DRED_ALLOCATION_TYPE AllocationType;
16726 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
16727 const IUnknown *pObject;
16728 } D3D12_DRED_ALLOCATION_NODE1;
16729
16730typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
16731 {
16732 _Out_ const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode;
16733 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
16734
16735typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
16736 {
16737 _Out_ const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode;
16738 } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
16739
16740typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
16741 {
16742 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16743 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
16744 _Out_ const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
16745 } D3D12_DRED_PAGE_FAULT_OUTPUT;
16746
16747typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
16748 {
16749 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16750 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16751 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16752 } D3D12_DRED_PAGE_FAULT_OUTPUT1;
16753
16754typedef
16755enum D3D12_DRED_PAGE_FAULT_FLAGS
16756 {
16757 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0
16758 } D3D12_DRED_PAGE_FAULT_FLAGS;
16759
16760DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )
16761typedef
16762enum D3D12_DRED_DEVICE_STATE
16763 {
16764 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0,
16765 D3D12_DRED_DEVICE_STATE_HUNG = 3,
16766 D3D12_DRED_DEVICE_STATE_FAULT = 6,
16767 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7
16768 } D3D12_DRED_DEVICE_STATE;
16769
16770typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
16771 {
16772 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA;
16773 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
16774 _Out_ const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
16775 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
16776 } D3D12_DRED_PAGE_FAULT_OUTPUT2;
16777
16778typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
16779 {
16780 HRESULT DeviceRemovedReason;
16781 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
16782 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
16783 } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
16784
16785typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
16786 {
16787 HRESULT DeviceRemovedReason;
16788 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16789 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
16790 } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
16791
16792typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
16793 {
16794 HRESULT DeviceRemovedReason;
16795 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
16796 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
16797 D3D12_DRED_DEVICE_STATE DeviceState;
16798 } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
16799
16800typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
16801 {
16802 D3D12_DRED_VERSION Version;
16803 union
16804 {
16805 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
16806 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
16807 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
16808 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
16809 } ;
16810 } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
16811
16812
16813
16814extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_c_ifspec;
16815extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0040_v0_0_s_ifspec;
16816
16817#ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16818#define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
16819
16820/* interface ID3D12DeviceRemovedExtendedDataSettings */
16821/* [unique][local][object][uuid] */
16822
16823
16824EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings;
16825
16826#if defined(__cplusplus) && !defined(CINTERFACE)
16827
16828 MIDL_INTERFACE("82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")
16829 ID3D12DeviceRemovedExtendedDataSettings : public IUnknown
16830 {
16831 public:
16832 virtual void STDMETHODCALLTYPE SetAutoBreadcrumbsEnablement(
16833 D3D12_DRED_ENABLEMENT Enablement) = 0;
16834
16835 virtual void STDMETHODCALLTYPE SetPageFaultEnablement(
16836 D3D12_DRED_ENABLEMENT Enablement) = 0;
16837
16838 virtual void STDMETHODCALLTYPE SetWatsonDumpEnablement(
16839 D3D12_DRED_ENABLEMENT Enablement) = 0;
16840
16841 };
16842
16843
16844#else /* C style interface */
16845
16846 typedef struct ID3D12DeviceRemovedExtendedDataSettingsVtbl
16847 {
16848 BEGIN_INTERFACE
16849
16850 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16851 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16852 ID3D12DeviceRemovedExtendedDataSettings * This,
16853 REFIID riid,
16854 _COM_Outptr_ void **ppvObject);
16855
16856 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16857 ULONG ( STDMETHODCALLTYPE *AddRef )(
16858 ID3D12DeviceRemovedExtendedDataSettings * This);
16859
16860 DECLSPEC_XFGVIRT(IUnknown, Release)
16861 ULONG ( STDMETHODCALLTYPE *Release )(
16862 ID3D12DeviceRemovedExtendedDataSettings * This);
16863
16864 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16865 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16866 ID3D12DeviceRemovedExtendedDataSettings * This,
16867 D3D12_DRED_ENABLEMENT Enablement);
16868
16869 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16870 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16871 ID3D12DeviceRemovedExtendedDataSettings * This,
16872 D3D12_DRED_ENABLEMENT Enablement);
16873
16874 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16875 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16876 ID3D12DeviceRemovedExtendedDataSettings * This,
16877 D3D12_DRED_ENABLEMENT Enablement);
16878
16879 END_INTERFACE
16880 } ID3D12DeviceRemovedExtendedDataSettingsVtbl;
16881
16882 interface ID3D12DeviceRemovedExtendedDataSettings
16883 {
16884 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettingsVtbl *lpVtbl;
16885 };
16886
16887
16888
16889#ifdef COBJMACROS
16890
16891
16892#define ID3D12DeviceRemovedExtendedDataSettings_QueryInterface(This,riid,ppvObject) \
16893 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16894
16895#define ID3D12DeviceRemovedExtendedDataSettings_AddRef(This) \
16896 ( (This)->lpVtbl -> AddRef(This) )
16897
16898#define ID3D12DeviceRemovedExtendedDataSettings_Release(This) \
16899 ( (This)->lpVtbl -> Release(This) )
16900
16901
16902#define ID3D12DeviceRemovedExtendedDataSettings_SetAutoBreadcrumbsEnablement(This,Enablement) \
16903 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
16904
16905#define ID3D12DeviceRemovedExtendedDataSettings_SetPageFaultEnablement(This,Enablement) \
16906 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
16907
16908#define ID3D12DeviceRemovedExtendedDataSettings_SetWatsonDumpEnablement(This,Enablement) \
16909 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
16910
16911#endif /* COBJMACROS */
16912
16913
16914#endif /* C style interface */
16915
16916
16917
16918
16919#endif /* __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__ */
16920
16921
16922#ifndef __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16923#define __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__
16924
16925/* interface ID3D12DeviceRemovedExtendedDataSettings1 */
16926/* [unique][local][object][uuid] */
16927
16928
16929EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings1;
16930
16931#if defined(__cplusplus) && !defined(CINTERFACE)
16932
16933 MIDL_INTERFACE("DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B")
16934 ID3D12DeviceRemovedExtendedDataSettings1 : public ID3D12DeviceRemovedExtendedDataSettings
16935 {
16936 public:
16937 virtual void STDMETHODCALLTYPE SetBreadcrumbContextEnablement(
16938 D3D12_DRED_ENABLEMENT Enablement) = 0;
16939
16940 };
16941
16942
16943#else /* C style interface */
16944
16945 typedef struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl
16946 {
16947 BEGIN_INTERFACE
16948
16949 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
16950 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
16951 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16952 REFIID riid,
16953 _COM_Outptr_ void **ppvObject);
16954
16955 DECLSPEC_XFGVIRT(IUnknown, AddRef)
16956 ULONG ( STDMETHODCALLTYPE *AddRef )(
16957 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16958
16959 DECLSPEC_XFGVIRT(IUnknown, Release)
16960 ULONG ( STDMETHODCALLTYPE *Release )(
16961 ID3D12DeviceRemovedExtendedDataSettings1 * This);
16962
16963 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
16964 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
16965 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16966 D3D12_DRED_ENABLEMENT Enablement);
16967
16968 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
16969 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
16970 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16971 D3D12_DRED_ENABLEMENT Enablement);
16972
16973 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
16974 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
16975 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16976 D3D12_DRED_ENABLEMENT Enablement);
16977
16978 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
16979 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
16980 ID3D12DeviceRemovedExtendedDataSettings1 * This,
16981 D3D12_DRED_ENABLEMENT Enablement);
16982
16983 END_INTERFACE
16984 } ID3D12DeviceRemovedExtendedDataSettings1Vtbl;
16985
16986 interface ID3D12DeviceRemovedExtendedDataSettings1
16987 {
16988 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings1Vtbl *lpVtbl;
16989 };
16990
16991
16992
16993#ifdef COBJMACROS
16994
16995
16996#define ID3D12DeviceRemovedExtendedDataSettings1_QueryInterface(This,riid,ppvObject) \
16997 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
16998
16999#define ID3D12DeviceRemovedExtendedDataSettings1_AddRef(This) \
17000 ( (This)->lpVtbl -> AddRef(This) )
17001
17002#define ID3D12DeviceRemovedExtendedDataSettings1_Release(This) \
17003 ( (This)->lpVtbl -> Release(This) )
17004
17005
17006#define ID3D12DeviceRemovedExtendedDataSettings1_SetAutoBreadcrumbsEnablement(This,Enablement) \
17007 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17008
17009#define ID3D12DeviceRemovedExtendedDataSettings1_SetPageFaultEnablement(This,Enablement) \
17010 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17011
17012#define ID3D12DeviceRemovedExtendedDataSettings1_SetWatsonDumpEnablement(This,Enablement) \
17013 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17014
17015
17016#define ID3D12DeviceRemovedExtendedDataSettings1_SetBreadcrumbContextEnablement(This,Enablement) \
17017 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17018
17019#endif /* COBJMACROS */
17020
17021
17022#endif /* C style interface */
17023
17024
17025
17026
17027#endif /* __ID3D12DeviceRemovedExtendedDataSettings1_INTERFACE_DEFINED__ */
17028
17029
17030#ifndef __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17031#define __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__
17032
17033/* interface ID3D12DeviceRemovedExtendedDataSettings2 */
17034/* [unique][local][object][uuid] */
17035
17036
17037EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedDataSettings2;
17038
17039#if defined(__cplusplus) && !defined(CINTERFACE)
17040
17041 MIDL_INTERFACE("61552388-01ab-4008-a436-83db189566ea")
17042 ID3D12DeviceRemovedExtendedDataSettings2 : public ID3D12DeviceRemovedExtendedDataSettings1
17043 {
17044 public:
17045 virtual void STDMETHODCALLTYPE UseMarkersOnlyAutoBreadcrumbs(
17046 BOOL MarkersOnly) = 0;
17047
17048 };
17049
17050
17051#else /* C style interface */
17052
17053 typedef struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl
17054 {
17055 BEGIN_INTERFACE
17056
17057 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17058 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17059 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17060 REFIID riid,
17061 _COM_Outptr_ void **ppvObject);
17062
17063 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17064 ULONG ( STDMETHODCALLTYPE *AddRef )(
17065 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17066
17067 DECLSPEC_XFGVIRT(IUnknown, Release)
17068 ULONG ( STDMETHODCALLTYPE *Release )(
17069 ID3D12DeviceRemovedExtendedDataSettings2 * This);
17070
17071 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetAutoBreadcrumbsEnablement)
17072 void ( STDMETHODCALLTYPE *SetAutoBreadcrumbsEnablement )(
17073 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17074 D3D12_DRED_ENABLEMENT Enablement);
17075
17076 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetPageFaultEnablement)
17077 void ( STDMETHODCALLTYPE *SetPageFaultEnablement )(
17078 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17079 D3D12_DRED_ENABLEMENT Enablement);
17080
17081 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings, SetWatsonDumpEnablement)
17082 void ( STDMETHODCALLTYPE *SetWatsonDumpEnablement )(
17083 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17084 D3D12_DRED_ENABLEMENT Enablement);
17085
17086 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings1, SetBreadcrumbContextEnablement)
17087 void ( STDMETHODCALLTYPE *SetBreadcrumbContextEnablement )(
17088 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17089 D3D12_DRED_ENABLEMENT Enablement);
17090
17091 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedDataSettings2, UseMarkersOnlyAutoBreadcrumbs)
17092 void ( STDMETHODCALLTYPE *UseMarkersOnlyAutoBreadcrumbs )(
17093 ID3D12DeviceRemovedExtendedDataSettings2 * This,
17094 BOOL MarkersOnly);
17095
17096 END_INTERFACE
17097 } ID3D12DeviceRemovedExtendedDataSettings2Vtbl;
17098
17099 interface ID3D12DeviceRemovedExtendedDataSettings2
17100 {
17101 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataSettings2Vtbl *lpVtbl;
17102 };
17103
17104
17105
17106#ifdef COBJMACROS
17107
17108
17109#define ID3D12DeviceRemovedExtendedDataSettings2_QueryInterface(This,riid,ppvObject) \
17110 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17111
17112#define ID3D12DeviceRemovedExtendedDataSettings2_AddRef(This) \
17113 ( (This)->lpVtbl -> AddRef(This) )
17114
17115#define ID3D12DeviceRemovedExtendedDataSettings2_Release(This) \
17116 ( (This)->lpVtbl -> Release(This) )
17117
17118
17119#define ID3D12DeviceRemovedExtendedDataSettings2_SetAutoBreadcrumbsEnablement(This,Enablement) \
17120 ( (This)->lpVtbl -> SetAutoBreadcrumbsEnablement(This,Enablement) )
17121
17122#define ID3D12DeviceRemovedExtendedDataSettings2_SetPageFaultEnablement(This,Enablement) \
17123 ( (This)->lpVtbl -> SetPageFaultEnablement(This,Enablement) )
17124
17125#define ID3D12DeviceRemovedExtendedDataSettings2_SetWatsonDumpEnablement(This,Enablement) \
17126 ( (This)->lpVtbl -> SetWatsonDumpEnablement(This,Enablement) )
17127
17128
17129#define ID3D12DeviceRemovedExtendedDataSettings2_SetBreadcrumbContextEnablement(This,Enablement) \
17130 ( (This)->lpVtbl -> SetBreadcrumbContextEnablement(This,Enablement) )
17131
17132
17133#define ID3D12DeviceRemovedExtendedDataSettings2_UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) \
17134 ( (This)->lpVtbl -> UseMarkersOnlyAutoBreadcrumbs(This,MarkersOnly) )
17135
17136#endif /* COBJMACROS */
17137
17138
17139#endif /* C style interface */
17140
17141
17142
17143
17144#endif /* __ID3D12DeviceRemovedExtendedDataSettings2_INTERFACE_DEFINED__ */
17145
17146
17147#ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17148#define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
17149
17150/* interface ID3D12DeviceRemovedExtendedData */
17151/* [unique][local][object][uuid] */
17152
17153
17154EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData;
17155
17156#if defined(__cplusplus) && !defined(CINTERFACE)
17157
17158 MIDL_INTERFACE("98931D33-5AE8-4791-AA3C-1A73A2934E71")
17159 ID3D12DeviceRemovedExtendedData : public IUnknown
17160 {
17161 public:
17162 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput(
17163 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput) = 0;
17164
17165 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput(
17166 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput) = 0;
17167
17168 };
17169
17170
17171#else /* C style interface */
17172
17173 typedef struct ID3D12DeviceRemovedExtendedDataVtbl
17174 {
17175 BEGIN_INTERFACE
17176
17177 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17178 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17179 ID3D12DeviceRemovedExtendedData * This,
17180 REFIID riid,
17181 _COM_Outptr_ void **ppvObject);
17182
17183 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17184 ULONG ( STDMETHODCALLTYPE *AddRef )(
17185 ID3D12DeviceRemovedExtendedData * This);
17186
17187 DECLSPEC_XFGVIRT(IUnknown, Release)
17188 ULONG ( STDMETHODCALLTYPE *Release )(
17189 ID3D12DeviceRemovedExtendedData * This);
17190
17191 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17192 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17193 ID3D12DeviceRemovedExtendedData * This,
17194 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17195
17196 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17197 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17198 ID3D12DeviceRemovedExtendedData * This,
17199 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17200
17201 END_INTERFACE
17202 } ID3D12DeviceRemovedExtendedDataVtbl;
17203
17204 interface ID3D12DeviceRemovedExtendedData
17205 {
17206 CONST_VTBL struct ID3D12DeviceRemovedExtendedDataVtbl *lpVtbl;
17207 };
17208
17209
17210
17211#ifdef COBJMACROS
17212
17213
17214#define ID3D12DeviceRemovedExtendedData_QueryInterface(This,riid,ppvObject) \
17215 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17216
17217#define ID3D12DeviceRemovedExtendedData_AddRef(This) \
17218 ( (This)->lpVtbl -> AddRef(This) )
17219
17220#define ID3D12DeviceRemovedExtendedData_Release(This) \
17221 ( (This)->lpVtbl -> Release(This) )
17222
17223
17224#define ID3D12DeviceRemovedExtendedData_GetAutoBreadcrumbsOutput(This,pOutput) \
17225 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17226
17227#define ID3D12DeviceRemovedExtendedData_GetPageFaultAllocationOutput(This,pOutput) \
17228 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17229
17230#endif /* COBJMACROS */
17231
17232
17233#endif /* C style interface */
17234
17235
17236
17237
17238#endif /* __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__ */
17239
17240
17241#ifndef __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17242#define __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__
17243
17244/* interface ID3D12DeviceRemovedExtendedData1 */
17245/* [unique][local][object][uuid] */
17246
17247
17248EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData1;
17249
17250#if defined(__cplusplus) && !defined(CINTERFACE)
17251
17252 MIDL_INTERFACE("9727A022-CF1D-4DDA-9EBA-EFFA653FC506")
17253 ID3D12DeviceRemovedExtendedData1 : public ID3D12DeviceRemovedExtendedData
17254 {
17255 public:
17256 virtual HRESULT STDMETHODCALLTYPE GetAutoBreadcrumbsOutput1(
17257 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput) = 0;
17258
17259 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput1(
17260 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput) = 0;
17261
17262 };
17263
17264
17265#else /* C style interface */
17266
17267 typedef struct ID3D12DeviceRemovedExtendedData1Vtbl
17268 {
17269 BEGIN_INTERFACE
17270
17271 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17272 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17273 ID3D12DeviceRemovedExtendedData1 * This,
17274 REFIID riid,
17275 _COM_Outptr_ void **ppvObject);
17276
17277 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17278 ULONG ( STDMETHODCALLTYPE *AddRef )(
17279 ID3D12DeviceRemovedExtendedData1 * This);
17280
17281 DECLSPEC_XFGVIRT(IUnknown, Release)
17282 ULONG ( STDMETHODCALLTYPE *Release )(
17283 ID3D12DeviceRemovedExtendedData1 * This);
17284
17285 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17286 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17287 ID3D12DeviceRemovedExtendedData1 * This,
17288 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17289
17290 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17291 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17292 ID3D12DeviceRemovedExtendedData1 * This,
17293 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17294
17295 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17296 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17297 ID3D12DeviceRemovedExtendedData1 * This,
17298 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17299
17300 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17301 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17302 ID3D12DeviceRemovedExtendedData1 * This,
17303 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17304
17305 END_INTERFACE
17306 } ID3D12DeviceRemovedExtendedData1Vtbl;
17307
17308 interface ID3D12DeviceRemovedExtendedData1
17309 {
17310 CONST_VTBL struct ID3D12DeviceRemovedExtendedData1Vtbl *lpVtbl;
17311 };
17312
17313
17314
17315#ifdef COBJMACROS
17316
17317
17318#define ID3D12DeviceRemovedExtendedData1_QueryInterface(This,riid,ppvObject) \
17319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17320
17321#define ID3D12DeviceRemovedExtendedData1_AddRef(This) \
17322 ( (This)->lpVtbl -> AddRef(This) )
17323
17324#define ID3D12DeviceRemovedExtendedData1_Release(This) \
17325 ( (This)->lpVtbl -> Release(This) )
17326
17327
17328#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput(This,pOutput) \
17329 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17330
17331#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput(This,pOutput) \
17332 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17333
17334
17335#define ID3D12DeviceRemovedExtendedData1_GetAutoBreadcrumbsOutput1(This,pOutput) \
17336 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17337
17338#define ID3D12DeviceRemovedExtendedData1_GetPageFaultAllocationOutput1(This,pOutput) \
17339 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17340
17341#endif /* COBJMACROS */
17342
17343
17344#endif /* C style interface */
17345
17346
17347
17348
17349#endif /* __ID3D12DeviceRemovedExtendedData1_INTERFACE_DEFINED__ */
17350
17351
17352#ifndef __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17353#define __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__
17354
17355/* interface ID3D12DeviceRemovedExtendedData2 */
17356/* [unique][local][object][uuid] */
17357
17358
17359EXTERN_C const IID IID_ID3D12DeviceRemovedExtendedData2;
17360
17361#if defined(__cplusplus) && !defined(CINTERFACE)
17362
17363 MIDL_INTERFACE("67FC5816-E4CA-4915-BF18-42541272DA54")
17364 ID3D12DeviceRemovedExtendedData2 : public ID3D12DeviceRemovedExtendedData1
17365 {
17366 public:
17367 virtual HRESULT STDMETHODCALLTYPE GetPageFaultAllocationOutput2(
17368 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput) = 0;
17369
17370 virtual D3D12_DRED_DEVICE_STATE STDMETHODCALLTYPE GetDeviceState( void) = 0;
17371
17372 };
17373
17374
17375#else /* C style interface */
17376
17377 typedef struct ID3D12DeviceRemovedExtendedData2Vtbl
17378 {
17379 BEGIN_INTERFACE
17380
17381 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17382 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17383 ID3D12DeviceRemovedExtendedData2 * This,
17384 REFIID riid,
17385 _COM_Outptr_ void **ppvObject);
17386
17387 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17388 ULONG ( STDMETHODCALLTYPE *AddRef )(
17389 ID3D12DeviceRemovedExtendedData2 * This);
17390
17391 DECLSPEC_XFGVIRT(IUnknown, Release)
17392 ULONG ( STDMETHODCALLTYPE *Release )(
17393 ID3D12DeviceRemovedExtendedData2 * This);
17394
17395 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetAutoBreadcrumbsOutput)
17396 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput )(
17397 ID3D12DeviceRemovedExtendedData2 * This,
17398 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
17399
17400 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData, GetPageFaultAllocationOutput)
17401 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput )(
17402 ID3D12DeviceRemovedExtendedData2 * This,
17403 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
17404
17405 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetAutoBreadcrumbsOutput1)
17406 HRESULT ( STDMETHODCALLTYPE *GetAutoBreadcrumbsOutput1 )(
17407 ID3D12DeviceRemovedExtendedData2 * This,
17408 _Out_ D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
17409
17410 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData1, GetPageFaultAllocationOutput1)
17411 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput1 )(
17412 ID3D12DeviceRemovedExtendedData2 * This,
17413 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
17414
17415 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetPageFaultAllocationOutput2)
17416 HRESULT ( STDMETHODCALLTYPE *GetPageFaultAllocationOutput2 )(
17417 ID3D12DeviceRemovedExtendedData2 * This,
17418 _Out_ D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
17419
17420 DECLSPEC_XFGVIRT(ID3D12DeviceRemovedExtendedData2, GetDeviceState)
17421 D3D12_DRED_DEVICE_STATE ( STDMETHODCALLTYPE *GetDeviceState )(
17422 ID3D12DeviceRemovedExtendedData2 * This);
17423
17424 END_INTERFACE
17425 } ID3D12DeviceRemovedExtendedData2Vtbl;
17426
17427 interface ID3D12DeviceRemovedExtendedData2
17428 {
17429 CONST_VTBL struct ID3D12DeviceRemovedExtendedData2Vtbl *lpVtbl;
17430 };
17431
17432
17433
17434#ifdef COBJMACROS
17435
17436
17437#define ID3D12DeviceRemovedExtendedData2_QueryInterface(This,riid,ppvObject) \
17438 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
17439
17440#define ID3D12DeviceRemovedExtendedData2_AddRef(This) \
17441 ( (This)->lpVtbl -> AddRef(This) )
17442
17443#define ID3D12DeviceRemovedExtendedData2_Release(This) \
17444 ( (This)->lpVtbl -> Release(This) )
17445
17446
17447#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput(This,pOutput) \
17448 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput(This,pOutput) )
17449
17450#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput(This,pOutput) \
17451 ( (This)->lpVtbl -> GetPageFaultAllocationOutput(This,pOutput) )
17452
17453
17454#define ID3D12DeviceRemovedExtendedData2_GetAutoBreadcrumbsOutput1(This,pOutput) \
17455 ( (This)->lpVtbl -> GetAutoBreadcrumbsOutput1(This,pOutput) )
17456
17457#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput1(This,pOutput) \
17458 ( (This)->lpVtbl -> GetPageFaultAllocationOutput1(This,pOutput) )
17459
17460
17461#define ID3D12DeviceRemovedExtendedData2_GetPageFaultAllocationOutput2(This,pOutput) \
17462 ( (This)->lpVtbl -> GetPageFaultAllocationOutput2(This,pOutput) )
17463
17464#define ID3D12DeviceRemovedExtendedData2_GetDeviceState(This) \
17465 ( (This)->lpVtbl -> GetDeviceState(This) )
17466
17467#endif /* COBJMACROS */
17468
17469
17470#endif /* C style interface */
17471
17472
17473
17474
17475#endif /* __ID3D12DeviceRemovedExtendedData2_INTERFACE_DEFINED__ */
17476
17477
17478/* interface __MIDL_itf_d3d12_0000_0046 */
17479/* [local] */
17480
17481typedef
17482enum D3D12_BACKGROUND_PROCESSING_MODE
17483 {
17484 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0,
17485 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
17486 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
17487 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
17488 } D3D12_BACKGROUND_PROCESSING_MODE;
17489
17490typedef
17491enum D3D12_MEASUREMENTS_ACTION
17492 {
17493 D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0,
17494 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
17495 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
17496 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
17497 } D3D12_MEASUREMENTS_ACTION;
17498
17499
17500
17501extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_c_ifspec;
17502extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0046_v0_0_s_ifspec;
17503
17504#ifndef __ID3D12Device6_INTERFACE_DEFINED__
17505#define __ID3D12Device6_INTERFACE_DEFINED__
17506
17507/* interface ID3D12Device6 */
17508/* [unique][local][object][uuid] */
17509
17510
17511EXTERN_C const IID IID_ID3D12Device6;
17512
17513#if defined(__cplusplus) && !defined(CINTERFACE)
17514
17515 MIDL_INTERFACE("c70b221b-40e4-4a17-89af-025a0727a6dc")
17516 ID3D12Device6 : public ID3D12Device5
17517 {
17518 public:
17519 virtual HRESULT STDMETHODCALLTYPE SetBackgroundProcessingMode(
17520 D3D12_BACKGROUND_PROCESSING_MODE Mode,
17521 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
17522 _In_opt_ HANDLE hEventToSignalUponCompletion,
17523 _Out_opt_ BOOL *pbFurtherMeasurementsDesired) = 0;
17524
17525 };
17526
17527
17528#else /* C style interface */
17529
17530 typedef struct ID3D12Device6Vtbl
17531 {
17532 BEGIN_INTERFACE
17533
17534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
17535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
17536 ID3D12Device6 * This,
17537 REFIID riid,
17538 _COM_Outptr_ void **ppvObject);
17539
17540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
17541 ULONG ( STDMETHODCALLTYPE *AddRef )(
17542 ID3D12Device6 * This);
17543
17544 DECLSPEC_XFGVIRT(IUnknown, Release)
17545 ULONG ( STDMETHODCALLTYPE *Release )(
17546 ID3D12Device6 * This);
17547
17548 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
17549 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
17550 ID3D12Device6 * This,
17551 _In_ REFGUID guid,
17552 _Inout_ UINT *pDataSize,
17553 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
17554
17555 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
17556 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
17557 ID3D12Device6 * This,
17558 _In_ REFGUID guid,
17559 _In_ UINT DataSize,
17560 _In_reads_bytes_opt_( DataSize ) const void *pData);
17561
17562 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
17563 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
17564 ID3D12Device6 * This,
17565 _In_ REFGUID guid,
17566 _In_opt_ const IUnknown *pData);
17567
17568 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
17569 HRESULT ( STDMETHODCALLTYPE *SetName )(
17570 ID3D12Device6 * This,
17571 _In_z_ LPCWSTR Name);
17572
17573 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
17574 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
17575 ID3D12Device6 * This);
17576
17577 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
17578 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
17579 ID3D12Device6 * This,
17580 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
17581 REFIID riid,
17582 _COM_Outptr_ void **ppCommandQueue);
17583
17584 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
17585 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
17586 ID3D12Device6 * This,
17587 _In_ D3D12_COMMAND_LIST_TYPE type,
17588 REFIID riid,
17589 _COM_Outptr_ void **ppCommandAllocator);
17590
17591 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
17592 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
17593 ID3D12Device6 * This,
17594 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
17595 REFIID riid,
17596 _COM_Outptr_ void **ppPipelineState);
17597
17598 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
17599 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
17600 ID3D12Device6 * This,
17601 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
17602 REFIID riid,
17603 _COM_Outptr_ void **ppPipelineState);
17604
17605 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
17606 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
17607 ID3D12Device6 * This,
17608 _In_ UINT nodeMask,
17609 _In_ D3D12_COMMAND_LIST_TYPE type,
17610 _In_ ID3D12CommandAllocator *pCommandAllocator,
17611 _In_opt_ ID3D12PipelineState *pInitialState,
17612 REFIID riid,
17613 _COM_Outptr_ void **ppCommandList);
17614
17615 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
17616 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
17617 ID3D12Device6 * This,
17618 D3D12_FEATURE Feature,
17619 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
17620 UINT FeatureSupportDataSize);
17621
17622 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
17623 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
17624 ID3D12Device6 * This,
17625 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
17626 REFIID riid,
17627 _COM_Outptr_ void **ppvHeap);
17628
17629 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
17630 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
17631 ID3D12Device6 * This,
17632 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
17633
17634 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
17635 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
17636 ID3D12Device6 * This,
17637 _In_ UINT nodeMask,
17638 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
17639 _In_ SIZE_T blobLengthInBytes,
17640 REFIID riid,
17641 _COM_Outptr_ void **ppvRootSignature);
17642
17643 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
17644 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
17645 ID3D12Device6 * This,
17646 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
17647 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17648
17649 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
17650 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
17651 ID3D12Device6 * This,
17652 _In_opt_ ID3D12Resource *pResource,
17653 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
17654 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17655
17656 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
17657 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
17658 ID3D12Device6 * This,
17659 _In_opt_ ID3D12Resource *pResource,
17660 _In_opt_ ID3D12Resource *pCounterResource,
17661 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
17662 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17663
17664 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
17665 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
17666 ID3D12Device6 * This,
17667 _In_opt_ ID3D12Resource *pResource,
17668 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
17669 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17670
17671 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
17672 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
17673 ID3D12Device6 * This,
17674 _In_opt_ ID3D12Resource *pResource,
17675 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
17676 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17677
17678 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
17679 void ( STDMETHODCALLTYPE *CreateSampler )(
17680 ID3D12Device6 * This,
17681 _In_ const D3D12_SAMPLER_DESC *pDesc,
17682 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
17683
17684 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
17685 void ( STDMETHODCALLTYPE *CopyDescriptors )(
17686 ID3D12Device6 * This,
17687 _In_ UINT NumDestDescriptorRanges,
17688 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
17689 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
17690 _In_ UINT NumSrcDescriptorRanges,
17691 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
17692 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
17693 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17694
17695 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
17696 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
17697 ID3D12Device6 * This,
17698 _In_ UINT NumDescriptors,
17699 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
17700 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
17701 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
17702
17703 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
17704#if !defined(_WIN32)
17705 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17706 ID3D12Device6 * This,
17707 _In_ UINT visibleMask,
17708 _In_ UINT numResourceDescs,
17709 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17710
17711#else
17712 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
17713 ID3D12Device6 * This,
17714 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17715 _In_ UINT visibleMask,
17716 _In_ UINT numResourceDescs,
17717 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
17718
17719#endif
17720
17721 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
17722#if !defined(_WIN32)
17723 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17724 ID3D12Device6 * This,
17725 _In_ UINT nodeMask,
17726 D3D12_HEAP_TYPE heapType);
17727
17728#else
17729 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
17730 ID3D12Device6 * This,
17731 D3D12_HEAP_PROPERTIES * RetVal,
17732 _In_ UINT nodeMask,
17733 D3D12_HEAP_TYPE heapType);
17734
17735#endif
17736
17737 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
17738 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
17739 ID3D12Device6 * This,
17740 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17741 D3D12_HEAP_FLAGS HeapFlags,
17742 _In_ const D3D12_RESOURCE_DESC *pDesc,
17743 D3D12_RESOURCE_STATES InitialResourceState,
17744 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17745 REFIID riidResource,
17746 _COM_Outptr_opt_ void **ppvResource);
17747
17748 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
17749 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
17750 ID3D12Device6 * This,
17751 _In_ const D3D12_HEAP_DESC *pDesc,
17752 REFIID riid,
17753 _COM_Outptr_opt_ void **ppvHeap);
17754
17755 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
17756 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
17757 ID3D12Device6 * This,
17758 _In_ ID3D12Heap *pHeap,
17759 UINT64 HeapOffset,
17760 _In_ const D3D12_RESOURCE_DESC *pDesc,
17761 D3D12_RESOURCE_STATES InitialState,
17762 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17763 REFIID riid,
17764 _COM_Outptr_opt_ void **ppvResource);
17765
17766 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
17767 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
17768 ID3D12Device6 * This,
17769 _In_ const D3D12_RESOURCE_DESC *pDesc,
17770 D3D12_RESOURCE_STATES InitialState,
17771 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17772 REFIID riid,
17773 _COM_Outptr_opt_ void **ppvResource);
17774
17775 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
17776 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
17777 ID3D12Device6 * This,
17778 _In_ ID3D12DeviceChild *pObject,
17779 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
17780 DWORD Access,
17781 _In_opt_ LPCWSTR Name,
17782 _Out_ HANDLE *pHandle);
17783
17784 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
17785 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
17786 ID3D12Device6 * This,
17787 _In_ HANDLE NTHandle,
17788 REFIID riid,
17789 _COM_Outptr_opt_ void **ppvObj);
17790
17791 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
17792 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
17793 ID3D12Device6 * This,
17794 _In_ LPCWSTR Name,
17795 DWORD Access,
17796 /* [annotation][out] */
17797 _Out_ HANDLE *pNTHandle);
17798
17799 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
17800 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
17801 ID3D12Device6 * This,
17802 UINT NumObjects,
17803 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17804
17805 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
17806 HRESULT ( STDMETHODCALLTYPE *Evict )(
17807 ID3D12Device6 * This,
17808 UINT NumObjects,
17809 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
17810
17811 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
17812 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
17813 ID3D12Device6 * This,
17814 UINT64 InitialValue,
17815 D3D12_FENCE_FLAGS Flags,
17816 REFIID riid,
17817 _COM_Outptr_ void **ppFence);
17818
17819 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
17820 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
17821 ID3D12Device6 * This);
17822
17823 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
17824 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
17825 ID3D12Device6 * This,
17826 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
17827 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
17828 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
17829 UINT64 BaseOffset,
17830 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
17831 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
17832 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
17833 _Out_opt_ UINT64 *pTotalBytes);
17834
17835 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
17836 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
17837 ID3D12Device6 * This,
17838 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
17839 REFIID riid,
17840 _COM_Outptr_opt_ void **ppvHeap);
17841
17842 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
17843 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
17844 ID3D12Device6 * This,
17845 BOOL Enable);
17846
17847 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
17848 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
17849 ID3D12Device6 * This,
17850 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
17851 _In_opt_ ID3D12RootSignature *pRootSignature,
17852 REFIID riid,
17853 _COM_Outptr_opt_ void **ppvCommandSignature);
17854
17855 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
17856 void ( STDMETHODCALLTYPE *GetResourceTiling )(
17857 ID3D12Device6 * This,
17858 _In_ ID3D12Resource *pTiledResource,
17859 _Out_opt_ UINT *pNumTilesForEntireResource,
17860 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
17861 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
17862 _Inout_opt_ UINT *pNumSubresourceTilings,
17863 _In_ UINT FirstSubresourceTilingToGet,
17864 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
17865
17866 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
17867#if !defined(_WIN32)
17868 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
17869 ID3D12Device6 * This);
17870
17871#else
17872 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
17873 ID3D12Device6 * This,
17874 LUID * RetVal);
17875
17876#endif
17877
17878 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
17879 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
17880 ID3D12Device6 * This,
17881 _In_reads_(BlobLength) const void *pLibraryBlob,
17882 SIZE_T BlobLength,
17883 REFIID riid,
17884 _COM_Outptr_ void **ppPipelineLibrary);
17885
17886 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
17887 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
17888 ID3D12Device6 * This,
17889 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
17890 _In_reads_(NumFences) const UINT64 *pFenceValues,
17891 UINT NumFences,
17892 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
17893 HANDLE hEvent);
17894
17895 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
17896 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
17897 ID3D12Device6 * This,
17898 UINT NumObjects,
17899 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17900 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
17901
17902 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
17903 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
17904 ID3D12Device6 * This,
17905 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
17906 REFIID riid,
17907 _COM_Outptr_ void **ppPipelineState);
17908
17909 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
17910 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
17911 ID3D12Device6 * This,
17912 _In_ const void *pAddress,
17913 REFIID riid,
17914 _COM_Outptr_ void **ppvHeap);
17915
17916 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
17917 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
17918 ID3D12Device6 * This,
17919 _In_ HANDLE hFileMapping,
17920 REFIID riid,
17921 _COM_Outptr_ void **ppvHeap);
17922
17923 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
17924 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
17925 ID3D12Device6 * This,
17926 D3D12_RESIDENCY_FLAGS Flags,
17927 UINT NumObjects,
17928 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
17929 _In_ ID3D12Fence *pFenceToSignal,
17930 UINT64 FenceValueToSignal);
17931
17932 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
17933 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
17934 ID3D12Device6 * This,
17935 _In_ UINT nodeMask,
17936 _In_ D3D12_COMMAND_LIST_TYPE type,
17937 _In_ D3D12_COMMAND_LIST_FLAGS flags,
17938 REFIID riid,
17939 _COM_Outptr_ void **ppCommandList);
17940
17941 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
17942 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
17943 ID3D12Device6 * This,
17944 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
17945 _In_ REFIID riid,
17946 _COM_Outptr_ void **ppSession);
17947
17948 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
17949 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
17950 ID3D12Device6 * This,
17951 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
17952 D3D12_HEAP_FLAGS HeapFlags,
17953 _In_ const D3D12_RESOURCE_DESC *pDesc,
17954 D3D12_RESOURCE_STATES InitialResourceState,
17955 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17956 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17957 REFIID riidResource,
17958 _COM_Outptr_opt_ void **ppvResource);
17959
17960 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
17961 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
17962 ID3D12Device6 * This,
17963 _In_ const D3D12_HEAP_DESC *pDesc,
17964 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17965 REFIID riid,
17966 _COM_Outptr_opt_ void **ppvHeap);
17967
17968 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
17969 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
17970 ID3D12Device6 * This,
17971 _In_ const D3D12_RESOURCE_DESC *pDesc,
17972 D3D12_RESOURCE_STATES InitialState,
17973 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
17974 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
17975 REFIID riid,
17976 _COM_Outptr_opt_ void **ppvResource);
17977
17978 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
17979#if !defined(_WIN32)
17980 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17981 ID3D12Device6 * This,
17982 UINT visibleMask,
17983 UINT numResourceDescs,
17984 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17985 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17986
17987#else
17988 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
17989 ID3D12Device6 * This,
17990 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
17991 UINT visibleMask,
17992 UINT numResourceDescs,
17993 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
17994 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
17995
17996#endif
17997
17998 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
17999 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
18000 ID3D12Device6 * This,
18001 _In_ ID3D12LifetimeOwner *pOwner,
18002 REFIID riid,
18003 _COM_Outptr_ void **ppvTracker);
18004
18005 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
18006 void ( STDMETHODCALLTYPE *RemoveDevice )(
18007 ID3D12Device6 * This);
18008
18009 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
18010 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
18011 ID3D12Device6 * This,
18012 _Inout_ UINT *pNumMetaCommands,
18013 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
18014
18015 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
18016 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
18017 ID3D12Device6 * This,
18018 _In_ REFGUID CommandId,
18019 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
18020 _Out_opt_ UINT *pTotalStructureSizeInBytes,
18021 _Inout_ UINT *pParameterCount,
18022 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
18023
18024 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
18025 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
18026 ID3D12Device6 * This,
18027 _In_ REFGUID CommandId,
18028 _In_ UINT NodeMask,
18029 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
18030 _In_ SIZE_T CreationParametersDataSizeInBytes,
18031 REFIID riid,
18032 _COM_Outptr_ void **ppMetaCommand);
18033
18034 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
18035 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
18036 ID3D12Device6 * This,
18037 const D3D12_STATE_OBJECT_DESC *pDesc,
18038 REFIID riid,
18039 _COM_Outptr_ void **ppStateObject);
18040
18041 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
18042 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
18043 ID3D12Device6 * This,
18044 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
18045 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
18046
18047 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
18048 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
18049 ID3D12Device6 * This,
18050 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
18051 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
18052
18053 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
18054 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
18055 ID3D12Device6 * This,
18056 D3D12_BACKGROUND_PROCESSING_MODE Mode,
18057 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
18058 _In_opt_ HANDLE hEventToSignalUponCompletion,
18059 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
18060
18061 END_INTERFACE
18062 } ID3D12Device6Vtbl;
18063
18064 interface ID3D12Device6
18065 {
18066 CONST_VTBL struct ID3D12Device6Vtbl *lpVtbl;
18067 };
18068
18069
18070
18071#ifdef COBJMACROS
18072
18073
18074#define ID3D12Device6_QueryInterface(This,riid,ppvObject) \
18075 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18076
18077#define ID3D12Device6_AddRef(This) \
18078 ( (This)->lpVtbl -> AddRef(This) )
18079
18080#define ID3D12Device6_Release(This) \
18081 ( (This)->lpVtbl -> Release(This) )
18082
18083
18084#define ID3D12Device6_GetPrivateData(This,guid,pDataSize,pData) \
18085 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18086
18087#define ID3D12Device6_SetPrivateData(This,guid,DataSize,pData) \
18088 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18089
18090#define ID3D12Device6_SetPrivateDataInterface(This,guid,pData) \
18091 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18092
18093#define ID3D12Device6_SetName(This,Name) \
18094 ( (This)->lpVtbl -> SetName(This,Name) )
18095
18096
18097#define ID3D12Device6_GetNodeCount(This) \
18098 ( (This)->lpVtbl -> GetNodeCount(This) )
18099
18100#define ID3D12Device6_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
18101 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
18102
18103#define ID3D12Device6_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
18104 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
18105
18106#define ID3D12Device6_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
18107 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
18108
18109#define ID3D12Device6_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
18110 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
18111
18112#define ID3D12Device6_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
18113 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
18114
18115#define ID3D12Device6_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
18116 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
18117
18118#define ID3D12Device6_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
18119 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
18120
18121#define ID3D12Device6_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
18122 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
18123
18124#define ID3D12Device6_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
18125 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
18126
18127#define ID3D12Device6_CreateConstantBufferView(This,pDesc,DestDescriptor) \
18128 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
18129
18130#define ID3D12Device6_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
18131 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
18132
18133#define ID3D12Device6_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
18134 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
18135
18136#define ID3D12Device6_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
18137 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
18138
18139#define ID3D12Device6_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
18140 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
18141
18142#define ID3D12Device6_CreateSampler(This,pDesc,DestDescriptor) \
18143 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
18144
18145#define ID3D12Device6_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
18146 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
18147
18148#define ID3D12Device6_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
18149 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
18150#if !defined(_WIN32)
18151
18152#define ID3D12Device6_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
18153 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
18154#else
18155#define ID3D12Device6_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
18156 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
18157#endif
18158#if !defined(_WIN32)
18159
18160#define ID3D12Device6_GetCustomHeapProperties(This,nodeMask,heapType) \
18161 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
18162#else
18163#define ID3D12Device6_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
18164 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
18165#endif
18166
18167#define ID3D12Device6_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
18168 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
18169
18170#define ID3D12Device6_CreateHeap(This,pDesc,riid,ppvHeap) \
18171 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
18172
18173#define ID3D12Device6_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18174 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18175
18176#define ID3D12Device6_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
18177 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
18178
18179#define ID3D12Device6_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
18180 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
18181
18182#define ID3D12Device6_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
18183 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
18184
18185#define ID3D12Device6_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
18186 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
18187
18188#define ID3D12Device6_MakeResident(This,NumObjects,ppObjects) \
18189 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
18190
18191#define ID3D12Device6_Evict(This,NumObjects,ppObjects) \
18192 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
18193
18194#define ID3D12Device6_CreateFence(This,InitialValue,Flags,riid,ppFence) \
18195 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
18196
18197#define ID3D12Device6_GetDeviceRemovedReason(This) \
18198 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
18199
18200#define ID3D12Device6_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
18201 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
18202
18203#define ID3D12Device6_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
18204 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
18205
18206#define ID3D12Device6_SetStablePowerState(This,Enable) \
18207 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
18208
18209#define ID3D12Device6_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
18210 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
18211
18212#define ID3D12Device6_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
18213 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
18214#if !defined(_WIN32)
18215
18216#define ID3D12Device6_GetAdapterLuid(This) \
18217 ( (This)->lpVtbl -> GetAdapterLuid(This) )
18218#else
18219#define ID3D12Device6_GetAdapterLuid(This,RetVal) \
18220 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
18221#endif
18222
18223
18224#define ID3D12Device6_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
18225 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
18226
18227#define ID3D12Device6_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
18228 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
18229
18230#define ID3D12Device6_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
18231 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
18232
18233
18234#define ID3D12Device6_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
18235 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
18236
18237
18238#define ID3D12Device6_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
18239 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
18240
18241#define ID3D12Device6_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
18242 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
18243
18244#define ID3D12Device6_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
18245 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
18246
18247
18248#define ID3D12Device6_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
18249 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
18250
18251#define ID3D12Device6_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
18252 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
18253
18254#define ID3D12Device6_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
18255 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
18256
18257#define ID3D12Device6_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
18258 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
18259
18260#define ID3D12Device6_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
18261 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
18262#if !defined(_WIN32)
18263
18264#define ID3D12Device6_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18265 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18266#else
18267#define ID3D12Device6_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
18268 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
18269#endif
18270
18271
18272#define ID3D12Device6_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
18273 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
18274
18275#define ID3D12Device6_RemoveDevice(This) \
18276 ( (This)->lpVtbl -> RemoveDevice(This) )
18277
18278#define ID3D12Device6_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
18279 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
18280
18281#define ID3D12Device6_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
18282 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
18283
18284#define ID3D12Device6_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
18285 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
18286
18287#define ID3D12Device6_CreateStateObject(This,pDesc,riid,ppStateObject) \
18288 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
18289
18290#define ID3D12Device6_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
18291 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
18292
18293#define ID3D12Device6_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
18294 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
18295
18296
18297#define ID3D12Device6_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
18298 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
18299
18300#endif /* COBJMACROS */
18301
18302
18303#endif /* C style interface */
18304
18305
18306
18307
18308#endif /* __ID3D12Device6_INTERFACE_DEFINED__ */
18309
18310
18311/* interface __MIDL_itf_d3d12_0000_0047 */
18312/* [local] */
18313
18314DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82);
18315typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
18316 {
18317 UINT NodeIndex;
18318 UINT Count;
18319 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
18320
18321typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
18322 {
18323 UINT NodeIndex;
18324 UINT Count;
18325 GUID *pTypes;
18326 } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
18327
18328typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
18329 {
18330 UINT NodeMask;
18331 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
18332 GUID ProtectionType;
18333 } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
18334
18335
18336
18337extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_c_ifspec;
18338extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0047_v0_0_s_ifspec;
18339
18340#ifndef __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18341#define __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__
18342
18343/* interface ID3D12ProtectedResourceSession1 */
18344/* [unique][local][object][uuid] */
18345
18346
18347EXTERN_C const IID IID_ID3D12ProtectedResourceSession1;
18348
18349#if defined(__cplusplus) && !defined(CINTERFACE)
18350
18351 MIDL_INTERFACE("D6F12DD6-76FB-406E-8961-4296EEFC0409")
18352 ID3D12ProtectedResourceSession1 : public ID3D12ProtectedResourceSession
18353 {
18354 public:
18355#if defined(_MSC_VER) || !defined(_WIN32)
18356 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
18357#else
18358 virtual D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *STDMETHODCALLTYPE GetDesc1(
18359 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal) = 0;
18360#endif
18361
18362 };
18363
18364
18365#else /* C style interface */
18366
18367 typedef struct ID3D12ProtectedResourceSession1Vtbl
18368 {
18369 BEGIN_INTERFACE
18370
18371 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18372 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18373 ID3D12ProtectedResourceSession1 * This,
18374 REFIID riid,
18375 _COM_Outptr_ void **ppvObject);
18376
18377 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18378 ULONG ( STDMETHODCALLTYPE *AddRef )(
18379 ID3D12ProtectedResourceSession1 * This);
18380
18381 DECLSPEC_XFGVIRT(IUnknown, Release)
18382 ULONG ( STDMETHODCALLTYPE *Release )(
18383 ID3D12ProtectedResourceSession1 * This);
18384
18385 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18386 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18387 ID3D12ProtectedResourceSession1 * This,
18388 _In_ REFGUID guid,
18389 _Inout_ UINT *pDataSize,
18390 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18391
18392 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18393 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18394 ID3D12ProtectedResourceSession1 * This,
18395 _In_ REFGUID guid,
18396 _In_ UINT DataSize,
18397 _In_reads_bytes_opt_( DataSize ) const void *pData);
18398
18399 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18400 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18401 ID3D12ProtectedResourceSession1 * This,
18402 _In_ REFGUID guid,
18403 _In_opt_ const IUnknown *pData);
18404
18405 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18406 HRESULT ( STDMETHODCALLTYPE *SetName )(
18407 ID3D12ProtectedResourceSession1 * This,
18408 _In_z_ LPCWSTR Name);
18409
18410 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
18411 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
18412 ID3D12ProtectedResourceSession1 * This,
18413 REFIID riid,
18414 _COM_Outptr_opt_ void **ppvDevice);
18415
18416 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetStatusFence)
18417 HRESULT ( STDMETHODCALLTYPE *GetStatusFence )(
18418 ID3D12ProtectedResourceSession1 * This,
18419 REFIID riid,
18420 _COM_Outptr_opt_ void **ppFence);
18421
18422 DECLSPEC_XFGVIRT(ID3D12ProtectedSession, GetSessionStatus)
18423 D3D12_PROTECTED_SESSION_STATUS ( STDMETHODCALLTYPE *GetSessionStatus )(
18424 ID3D12ProtectedResourceSession1 * This);
18425
18426 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession, GetDesc)
18427#if !defined(_WIN32)
18428 D3D12_PROTECTED_RESOURCE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
18429 ID3D12ProtectedResourceSession1 * This);
18430
18431#else
18432 D3D12_PROTECTED_RESOURCE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
18433 ID3D12ProtectedResourceSession1 * This,
18434 D3D12_PROTECTED_RESOURCE_SESSION_DESC * RetVal);
18435
18436#endif
18437
18438 DECLSPEC_XFGVIRT(ID3D12ProtectedResourceSession1, GetDesc1)
18439#if !defined(_WIN32)
18440 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
18441 ID3D12ProtectedResourceSession1 * This);
18442
18443#else
18444 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
18445 ID3D12ProtectedResourceSession1 * This,
18446 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 * RetVal);
18447
18448#endif
18449
18450 END_INTERFACE
18451 } ID3D12ProtectedResourceSession1Vtbl;
18452
18453 interface ID3D12ProtectedResourceSession1
18454 {
18455 CONST_VTBL struct ID3D12ProtectedResourceSession1Vtbl *lpVtbl;
18456 };
18457
18458
18459
18460#ifdef COBJMACROS
18461
18462
18463#define ID3D12ProtectedResourceSession1_QueryInterface(This,riid,ppvObject) \
18464 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
18465
18466#define ID3D12ProtectedResourceSession1_AddRef(This) \
18467 ( (This)->lpVtbl -> AddRef(This) )
18468
18469#define ID3D12ProtectedResourceSession1_Release(This) \
18470 ( (This)->lpVtbl -> Release(This) )
18471
18472
18473#define ID3D12ProtectedResourceSession1_GetPrivateData(This,guid,pDataSize,pData) \
18474 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
18475
18476#define ID3D12ProtectedResourceSession1_SetPrivateData(This,guid,DataSize,pData) \
18477 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
18478
18479#define ID3D12ProtectedResourceSession1_SetPrivateDataInterface(This,guid,pData) \
18480 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
18481
18482#define ID3D12ProtectedResourceSession1_SetName(This,Name) \
18483 ( (This)->lpVtbl -> SetName(This,Name) )
18484
18485
18486#define ID3D12ProtectedResourceSession1_GetDevice(This,riid,ppvDevice) \
18487 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
18488
18489
18490#define ID3D12ProtectedResourceSession1_GetStatusFence(This,riid,ppFence) \
18491 ( (This)->lpVtbl -> GetStatusFence(This,riid,ppFence) )
18492
18493#define ID3D12ProtectedResourceSession1_GetSessionStatus(This) \
18494 ( (This)->lpVtbl -> GetSessionStatus(This) )
18495
18496#if !defined(_WIN32)
18497
18498#define ID3D12ProtectedResourceSession1_GetDesc(This) \
18499 ( (This)->lpVtbl -> GetDesc(This) )
18500#else
18501#define ID3D12ProtectedResourceSession1_GetDesc(This,RetVal) \
18502 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
18503#endif
18504
18505#if !defined(_WIN32)
18506
18507#define ID3D12ProtectedResourceSession1_GetDesc1(This) \
18508 ( (This)->lpVtbl -> GetDesc1(This) )
18509#else
18510#define ID3D12ProtectedResourceSession1_GetDesc1(This,RetVal) \
18511 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
18512#endif
18513
18514#endif /* COBJMACROS */
18515
18516
18517#endif /* C style interface */
18518
18519
18520
18521
18522#endif /* __ID3D12ProtectedResourceSession1_INTERFACE_DEFINED__ */
18523
18524
18525#ifndef __ID3D12Device7_INTERFACE_DEFINED__
18526#define __ID3D12Device7_INTERFACE_DEFINED__
18527
18528/* interface ID3D12Device7 */
18529/* [unique][local][object][uuid] */
18530
18531
18532EXTERN_C const IID IID_ID3D12Device7;
18533
18534#if defined(__cplusplus) && !defined(CINTERFACE)
18535
18536 MIDL_INTERFACE("5c014b53-68a1-4b9b-8bd1-dd6046b9358b")
18537 ID3D12Device7 : public ID3D12Device6
18538 {
18539 public:
18540 virtual HRESULT STDMETHODCALLTYPE AddToStateObject(
18541 const D3D12_STATE_OBJECT_DESC *pAddition,
18542 ID3D12StateObject *pStateObjectToGrowFrom,
18543 REFIID riid,
18544 _COM_Outptr_ void **ppNewStateObject) = 0;
18545
18546 virtual HRESULT STDMETHODCALLTYPE CreateProtectedResourceSession1(
18547 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
18548 _In_ REFIID riid,
18549 _COM_Outptr_ void **ppSession) = 0;
18550
18551 };
18552
18553
18554#else /* C style interface */
18555
18556 typedef struct ID3D12Device7Vtbl
18557 {
18558 BEGIN_INTERFACE
18559
18560 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
18561 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
18562 ID3D12Device7 * This,
18563 REFIID riid,
18564 _COM_Outptr_ void **ppvObject);
18565
18566 DECLSPEC_XFGVIRT(IUnknown, AddRef)
18567 ULONG ( STDMETHODCALLTYPE *AddRef )(
18568 ID3D12Device7 * This);
18569
18570 DECLSPEC_XFGVIRT(IUnknown, Release)
18571 ULONG ( STDMETHODCALLTYPE *Release )(
18572 ID3D12Device7 * This);
18573
18574 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
18575 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
18576 ID3D12Device7 * This,
18577 _In_ REFGUID guid,
18578 _Inout_ UINT *pDataSize,
18579 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
18580
18581 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
18582 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
18583 ID3D12Device7 * This,
18584 _In_ REFGUID guid,
18585 _In_ UINT DataSize,
18586 _In_reads_bytes_opt_( DataSize ) const void *pData);
18587
18588 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
18589 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
18590 ID3D12Device7 * This,
18591 _In_ REFGUID guid,
18592 _In_opt_ const IUnknown *pData);
18593
18594 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
18595 HRESULT ( STDMETHODCALLTYPE *SetName )(
18596 ID3D12Device7 * This,
18597 _In_z_ LPCWSTR Name);
18598
18599 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
18600 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
18601 ID3D12Device7 * This);
18602
18603 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
18604 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
18605 ID3D12Device7 * This,
18606 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
18607 REFIID riid,
18608 _COM_Outptr_ void **ppCommandQueue);
18609
18610 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
18611 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
18612 ID3D12Device7 * This,
18613 _In_ D3D12_COMMAND_LIST_TYPE type,
18614 REFIID riid,
18615 _COM_Outptr_ void **ppCommandAllocator);
18616
18617 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
18618 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
18619 ID3D12Device7 * This,
18620 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
18621 REFIID riid,
18622 _COM_Outptr_ void **ppPipelineState);
18623
18624 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
18625 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
18626 ID3D12Device7 * This,
18627 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
18628 REFIID riid,
18629 _COM_Outptr_ void **ppPipelineState);
18630
18631 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
18632 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
18633 ID3D12Device7 * This,
18634 _In_ UINT nodeMask,
18635 _In_ D3D12_COMMAND_LIST_TYPE type,
18636 _In_ ID3D12CommandAllocator *pCommandAllocator,
18637 _In_opt_ ID3D12PipelineState *pInitialState,
18638 REFIID riid,
18639 _COM_Outptr_ void **ppCommandList);
18640
18641 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
18642 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
18643 ID3D12Device7 * This,
18644 D3D12_FEATURE Feature,
18645 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
18646 UINT FeatureSupportDataSize);
18647
18648 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
18649 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
18650 ID3D12Device7 * This,
18651 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
18652 REFIID riid,
18653 _COM_Outptr_ void **ppvHeap);
18654
18655 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
18656 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
18657 ID3D12Device7 * This,
18658 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
18659
18660 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
18661 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
18662 ID3D12Device7 * This,
18663 _In_ UINT nodeMask,
18664 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
18665 _In_ SIZE_T blobLengthInBytes,
18666 REFIID riid,
18667 _COM_Outptr_ void **ppvRootSignature);
18668
18669 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
18670 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
18671 ID3D12Device7 * This,
18672 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
18673 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18674
18675 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
18676 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
18677 ID3D12Device7 * This,
18678 _In_opt_ ID3D12Resource *pResource,
18679 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
18680 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18681
18682 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
18683 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
18684 ID3D12Device7 * This,
18685 _In_opt_ ID3D12Resource *pResource,
18686 _In_opt_ ID3D12Resource *pCounterResource,
18687 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
18688 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18689
18690 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
18691 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
18692 ID3D12Device7 * This,
18693 _In_opt_ ID3D12Resource *pResource,
18694 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
18695 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18696
18697 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
18698 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
18699 ID3D12Device7 * This,
18700 _In_opt_ ID3D12Resource *pResource,
18701 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
18702 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18703
18704 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
18705 void ( STDMETHODCALLTYPE *CreateSampler )(
18706 ID3D12Device7 * This,
18707 _In_ const D3D12_SAMPLER_DESC *pDesc,
18708 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
18709
18710 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
18711 void ( STDMETHODCALLTYPE *CopyDescriptors )(
18712 ID3D12Device7 * This,
18713 _In_ UINT NumDestDescriptorRanges,
18714 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
18715 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
18716 _In_ UINT NumSrcDescriptorRanges,
18717 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
18718 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
18719 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18720
18721 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
18722 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
18723 ID3D12Device7 * This,
18724 _In_ UINT NumDescriptors,
18725 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
18726 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
18727 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
18728
18729 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
18730#if !defined(_WIN32)
18731 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18732 ID3D12Device7 * This,
18733 _In_ UINT visibleMask,
18734 _In_ UINT numResourceDescs,
18735 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18736
18737#else
18738 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
18739 ID3D12Device7 * This,
18740 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
18741 _In_ UINT visibleMask,
18742 _In_ UINT numResourceDescs,
18743 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
18744
18745#endif
18746
18747 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
18748#if !defined(_WIN32)
18749 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18750 ID3D12Device7 * This,
18751 _In_ UINT nodeMask,
18752 D3D12_HEAP_TYPE heapType);
18753
18754#else
18755 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
18756 ID3D12Device7 * This,
18757 D3D12_HEAP_PROPERTIES * RetVal,
18758 _In_ UINT nodeMask,
18759 D3D12_HEAP_TYPE heapType);
18760
18761#endif
18762
18763 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
18764 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
18765 ID3D12Device7 * This,
18766 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18767 D3D12_HEAP_FLAGS HeapFlags,
18768 _In_ const D3D12_RESOURCE_DESC *pDesc,
18769 D3D12_RESOURCE_STATES InitialResourceState,
18770 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18771 REFIID riidResource,
18772 _COM_Outptr_opt_ void **ppvResource);
18773
18774 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
18775 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
18776 ID3D12Device7 * This,
18777 _In_ const D3D12_HEAP_DESC *pDesc,
18778 REFIID riid,
18779 _COM_Outptr_opt_ void **ppvHeap);
18780
18781 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
18782 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
18783 ID3D12Device7 * This,
18784 _In_ ID3D12Heap *pHeap,
18785 UINT64 HeapOffset,
18786 _In_ const D3D12_RESOURCE_DESC *pDesc,
18787 D3D12_RESOURCE_STATES InitialState,
18788 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18789 REFIID riid,
18790 _COM_Outptr_opt_ void **ppvResource);
18791
18792 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
18793 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
18794 ID3D12Device7 * This,
18795 _In_ const D3D12_RESOURCE_DESC *pDesc,
18796 D3D12_RESOURCE_STATES InitialState,
18797 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18798 REFIID riid,
18799 _COM_Outptr_opt_ void **ppvResource);
18800
18801 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
18802 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
18803 ID3D12Device7 * This,
18804 _In_ ID3D12DeviceChild *pObject,
18805 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
18806 DWORD Access,
18807 _In_opt_ LPCWSTR Name,
18808 _Out_ HANDLE *pHandle);
18809
18810 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
18811 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
18812 ID3D12Device7 * This,
18813 _In_ HANDLE NTHandle,
18814 REFIID riid,
18815 _COM_Outptr_opt_ void **ppvObj);
18816
18817 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
18818 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
18819 ID3D12Device7 * This,
18820 _In_ LPCWSTR Name,
18821 DWORD Access,
18822 /* [annotation][out] */
18823 _Out_ HANDLE *pNTHandle);
18824
18825 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
18826 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
18827 ID3D12Device7 * This,
18828 UINT NumObjects,
18829 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18830
18831 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
18832 HRESULT ( STDMETHODCALLTYPE *Evict )(
18833 ID3D12Device7 * This,
18834 UINT NumObjects,
18835 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
18836
18837 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
18838 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
18839 ID3D12Device7 * This,
18840 UINT64 InitialValue,
18841 D3D12_FENCE_FLAGS Flags,
18842 REFIID riid,
18843 _COM_Outptr_ void **ppFence);
18844
18845 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
18846 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
18847 ID3D12Device7 * This);
18848
18849 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
18850 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
18851 ID3D12Device7 * This,
18852 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
18853 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
18854 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
18855 UINT64 BaseOffset,
18856 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
18857 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
18858 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
18859 _Out_opt_ UINT64 *pTotalBytes);
18860
18861 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
18862 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
18863 ID3D12Device7 * This,
18864 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
18865 REFIID riid,
18866 _COM_Outptr_opt_ void **ppvHeap);
18867
18868 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
18869 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
18870 ID3D12Device7 * This,
18871 BOOL Enable);
18872
18873 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
18874 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
18875 ID3D12Device7 * This,
18876 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
18877 _In_opt_ ID3D12RootSignature *pRootSignature,
18878 REFIID riid,
18879 _COM_Outptr_opt_ void **ppvCommandSignature);
18880
18881 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
18882 void ( STDMETHODCALLTYPE *GetResourceTiling )(
18883 ID3D12Device7 * This,
18884 _In_ ID3D12Resource *pTiledResource,
18885 _Out_opt_ UINT *pNumTilesForEntireResource,
18886 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
18887 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
18888 _Inout_opt_ UINT *pNumSubresourceTilings,
18889 _In_ UINT FirstSubresourceTilingToGet,
18890 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
18891
18892 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
18893#if !defined(_WIN32)
18894 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
18895 ID3D12Device7 * This);
18896
18897#else
18898 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
18899 ID3D12Device7 * This,
18900 LUID * RetVal);
18901
18902#endif
18903
18904 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
18905 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
18906 ID3D12Device7 * This,
18907 _In_reads_(BlobLength) const void *pLibraryBlob,
18908 SIZE_T BlobLength,
18909 REFIID riid,
18910 _COM_Outptr_ void **ppPipelineLibrary);
18911
18912 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
18913 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
18914 ID3D12Device7 * This,
18915 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
18916 _In_reads_(NumFences) const UINT64 *pFenceValues,
18917 UINT NumFences,
18918 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
18919 HANDLE hEvent);
18920
18921 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
18922 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
18923 ID3D12Device7 * This,
18924 UINT NumObjects,
18925 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18926 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
18927
18928 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
18929 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
18930 ID3D12Device7 * This,
18931 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
18932 REFIID riid,
18933 _COM_Outptr_ void **ppPipelineState);
18934
18935 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
18936 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
18937 ID3D12Device7 * This,
18938 _In_ const void *pAddress,
18939 REFIID riid,
18940 _COM_Outptr_ void **ppvHeap);
18941
18942 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
18943 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
18944 ID3D12Device7 * This,
18945 _In_ HANDLE hFileMapping,
18946 REFIID riid,
18947 _COM_Outptr_ void **ppvHeap);
18948
18949 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
18950 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
18951 ID3D12Device7 * This,
18952 D3D12_RESIDENCY_FLAGS Flags,
18953 UINT NumObjects,
18954 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
18955 _In_ ID3D12Fence *pFenceToSignal,
18956 UINT64 FenceValueToSignal);
18957
18958 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
18959 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
18960 ID3D12Device7 * This,
18961 _In_ UINT nodeMask,
18962 _In_ D3D12_COMMAND_LIST_TYPE type,
18963 _In_ D3D12_COMMAND_LIST_FLAGS flags,
18964 REFIID riid,
18965 _COM_Outptr_ void **ppCommandList);
18966
18967 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
18968 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
18969 ID3D12Device7 * This,
18970 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
18971 _In_ REFIID riid,
18972 _COM_Outptr_ void **ppSession);
18973
18974 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
18975 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
18976 ID3D12Device7 * This,
18977 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
18978 D3D12_HEAP_FLAGS HeapFlags,
18979 _In_ const D3D12_RESOURCE_DESC *pDesc,
18980 D3D12_RESOURCE_STATES InitialResourceState,
18981 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
18982 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18983 REFIID riidResource,
18984 _COM_Outptr_opt_ void **ppvResource);
18985
18986 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
18987 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
18988 ID3D12Device7 * This,
18989 _In_ const D3D12_HEAP_DESC *pDesc,
18990 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
18991 REFIID riid,
18992 _COM_Outptr_opt_ void **ppvHeap);
18993
18994 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
18995 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
18996 ID3D12Device7 * This,
18997 _In_ const D3D12_RESOURCE_DESC *pDesc,
18998 D3D12_RESOURCE_STATES InitialState,
18999 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19000 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19001 REFIID riid,
19002 _COM_Outptr_opt_ void **ppvResource);
19003
19004 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19005#if !defined(_WIN32)
19006 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19007 ID3D12Device7 * This,
19008 UINT visibleMask,
19009 UINT numResourceDescs,
19010 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19011 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19012
19013#else
19014 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19015 ID3D12Device7 * This,
19016 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19017 UINT visibleMask,
19018 UINT numResourceDescs,
19019 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19020 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19021
19022#endif
19023
19024 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19025 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19026 ID3D12Device7 * This,
19027 _In_ ID3D12LifetimeOwner *pOwner,
19028 REFIID riid,
19029 _COM_Outptr_ void **ppvTracker);
19030
19031 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19032 void ( STDMETHODCALLTYPE *RemoveDevice )(
19033 ID3D12Device7 * This);
19034
19035 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19036 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19037 ID3D12Device7 * This,
19038 _Inout_ UINT *pNumMetaCommands,
19039 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19040
19041 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19042 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19043 ID3D12Device7 * This,
19044 _In_ REFGUID CommandId,
19045 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19046 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19047 _Inout_ UINT *pParameterCount,
19048 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19049
19050 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19051 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19052 ID3D12Device7 * This,
19053 _In_ REFGUID CommandId,
19054 _In_ UINT NodeMask,
19055 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19056 _In_ SIZE_T CreationParametersDataSizeInBytes,
19057 REFIID riid,
19058 _COM_Outptr_ void **ppMetaCommand);
19059
19060 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19061 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19062 ID3D12Device7 * This,
19063 const D3D12_STATE_OBJECT_DESC *pDesc,
19064 REFIID riid,
19065 _COM_Outptr_ void **ppStateObject);
19066
19067 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19068 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19069 ID3D12Device7 * This,
19070 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19071 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19072
19073 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19074 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19075 ID3D12Device7 * This,
19076 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19077 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19078
19079 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19080 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19081 ID3D12Device7 * This,
19082 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19083 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19084 _In_opt_ HANDLE hEventToSignalUponCompletion,
19085 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19086
19087 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19088 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19089 ID3D12Device7 * This,
19090 const D3D12_STATE_OBJECT_DESC *pAddition,
19091 ID3D12StateObject *pStateObjectToGrowFrom,
19092 REFIID riid,
19093 _COM_Outptr_ void **ppNewStateObject);
19094
19095 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19096 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19097 ID3D12Device7 * This,
19098 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19099 _In_ REFIID riid,
19100 _COM_Outptr_ void **ppSession);
19101
19102 END_INTERFACE
19103 } ID3D12Device7Vtbl;
19104
19105 interface ID3D12Device7
19106 {
19107 CONST_VTBL struct ID3D12Device7Vtbl *lpVtbl;
19108 };
19109
19110
19111
19112#ifdef COBJMACROS
19113
19114
19115#define ID3D12Device7_QueryInterface(This,riid,ppvObject) \
19116 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
19117
19118#define ID3D12Device7_AddRef(This) \
19119 ( (This)->lpVtbl -> AddRef(This) )
19120
19121#define ID3D12Device7_Release(This) \
19122 ( (This)->lpVtbl -> Release(This) )
19123
19124
19125#define ID3D12Device7_GetPrivateData(This,guid,pDataSize,pData) \
19126 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
19127
19128#define ID3D12Device7_SetPrivateData(This,guid,DataSize,pData) \
19129 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
19130
19131#define ID3D12Device7_SetPrivateDataInterface(This,guid,pData) \
19132 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
19133
19134#define ID3D12Device7_SetName(This,Name) \
19135 ( (This)->lpVtbl -> SetName(This,Name) )
19136
19137
19138#define ID3D12Device7_GetNodeCount(This) \
19139 ( (This)->lpVtbl -> GetNodeCount(This) )
19140
19141#define ID3D12Device7_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
19142 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
19143
19144#define ID3D12Device7_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
19145 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
19146
19147#define ID3D12Device7_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
19148 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
19149
19150#define ID3D12Device7_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
19151 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
19152
19153#define ID3D12Device7_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
19154 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
19155
19156#define ID3D12Device7_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
19157 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
19158
19159#define ID3D12Device7_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
19160 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
19161
19162#define ID3D12Device7_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
19163 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
19164
19165#define ID3D12Device7_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
19166 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
19167
19168#define ID3D12Device7_CreateConstantBufferView(This,pDesc,DestDescriptor) \
19169 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
19170
19171#define ID3D12Device7_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
19172 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
19173
19174#define ID3D12Device7_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
19175 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
19176
19177#define ID3D12Device7_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
19178 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
19179
19180#define ID3D12Device7_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
19181 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
19182
19183#define ID3D12Device7_CreateSampler(This,pDesc,DestDescriptor) \
19184 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
19185
19186#define ID3D12Device7_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
19187 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
19188
19189#define ID3D12Device7_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
19190 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
19191#if !defined(_WIN32)
19192
19193#define ID3D12Device7_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
19194 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
19195#else
19196#define ID3D12Device7_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
19197 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
19198#endif
19199#if !defined(_WIN32)
19200
19201#define ID3D12Device7_GetCustomHeapProperties(This,nodeMask,heapType) \
19202 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
19203#else
19204#define ID3D12Device7_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
19205 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
19206#endif
19207
19208#define ID3D12Device7_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
19209 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
19210
19211#define ID3D12Device7_CreateHeap(This,pDesc,riid,ppvHeap) \
19212 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
19213
19214#define ID3D12Device7_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19215 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19216
19217#define ID3D12Device7_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
19218 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
19219
19220#define ID3D12Device7_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
19221 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
19222
19223#define ID3D12Device7_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
19224 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
19225
19226#define ID3D12Device7_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
19227 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
19228
19229#define ID3D12Device7_MakeResident(This,NumObjects,ppObjects) \
19230 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
19231
19232#define ID3D12Device7_Evict(This,NumObjects,ppObjects) \
19233 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
19234
19235#define ID3D12Device7_CreateFence(This,InitialValue,Flags,riid,ppFence) \
19236 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
19237
19238#define ID3D12Device7_GetDeviceRemovedReason(This) \
19239 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
19240
19241#define ID3D12Device7_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
19242 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
19243
19244#define ID3D12Device7_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
19245 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
19246
19247#define ID3D12Device7_SetStablePowerState(This,Enable) \
19248 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
19249
19250#define ID3D12Device7_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
19251 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
19252
19253#define ID3D12Device7_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
19254 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
19255#if !defined(_WIN32)
19256
19257#define ID3D12Device7_GetAdapterLuid(This) \
19258 ( (This)->lpVtbl -> GetAdapterLuid(This) )
19259#else
19260#define ID3D12Device7_GetAdapterLuid(This,RetVal) \
19261 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
19262#endif
19263
19264
19265#define ID3D12Device7_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
19266 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
19267
19268#define ID3D12Device7_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
19269 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
19270
19271#define ID3D12Device7_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
19272 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
19273
19274
19275#define ID3D12Device7_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
19276 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
19277
19278
19279#define ID3D12Device7_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
19280 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
19281
19282#define ID3D12Device7_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
19283 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
19284
19285#define ID3D12Device7_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
19286 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
19287
19288
19289#define ID3D12Device7_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
19290 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
19291
19292#define ID3D12Device7_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
19293 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
19294
19295#define ID3D12Device7_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
19296 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
19297
19298#define ID3D12Device7_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
19299 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
19300
19301#define ID3D12Device7_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
19302 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
19303#if !defined(_WIN32)
19304
19305#define ID3D12Device7_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19306 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19307#else
19308#define ID3D12Device7_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
19309 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
19310#endif
19311
19312
19313#define ID3D12Device7_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
19314 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
19315
19316#define ID3D12Device7_RemoveDevice(This) \
19317 ( (This)->lpVtbl -> RemoveDevice(This) )
19318
19319#define ID3D12Device7_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
19320 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
19321
19322#define ID3D12Device7_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
19323 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
19324
19325#define ID3D12Device7_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
19326 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
19327
19328#define ID3D12Device7_CreateStateObject(This,pDesc,riid,ppStateObject) \
19329 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
19330
19331#define ID3D12Device7_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
19332 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
19333
19334#define ID3D12Device7_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
19335 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
19336
19337
19338#define ID3D12Device7_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
19339 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
19340
19341
19342#define ID3D12Device7_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
19343 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
19344
19345#define ID3D12Device7_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
19346 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
19347
19348#endif /* COBJMACROS */
19349
19350
19351#endif /* C style interface */
19352
19353
19354
19355
19356#endif /* __ID3D12Device7_INTERFACE_DEFINED__ */
19357
19358
19359#ifndef __ID3D12Device8_INTERFACE_DEFINED__
19360#define __ID3D12Device8_INTERFACE_DEFINED__
19361
19362/* interface ID3D12Device8 */
19363/* [unique][local][object][uuid] */
19364
19365
19366EXTERN_C const IID IID_ID3D12Device8;
19367
19368#if defined(__cplusplus) && !defined(CINTERFACE)
19369
19370 MIDL_INTERFACE("9218E6BB-F944-4F7E-A75C-B1B2C7B701F3")
19371 ID3D12Device8 : public ID3D12Device7
19372 {
19373 public:
19374#if defined(_MSC_VER) || !defined(_WIN32)
19375 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo2(
19376 UINT visibleMask,
19377 UINT numResourceDescs,
19378 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19379 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19380#else
19381 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo2(
19382 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19383 UINT visibleMask,
19384 UINT numResourceDescs,
19385 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19386 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
19387#endif
19388
19389 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource2(
19390 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19391 D3D12_HEAP_FLAGS HeapFlags,
19392 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19393 D3D12_RESOURCE_STATES InitialResourceState,
19394 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19395 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19396 REFIID riidResource,
19397 _COM_Outptr_opt_ void **ppvResource) = 0;
19398
19399 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource1(
19400 _In_ ID3D12Heap *pHeap,
19401 UINT64 HeapOffset,
19402 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
19403 D3D12_RESOURCE_STATES InitialState,
19404 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19405 REFIID riid,
19406 _COM_Outptr_opt_ void **ppvResource) = 0;
19407
19408 virtual void STDMETHODCALLTYPE CreateSamplerFeedbackUnorderedAccessView(
19409 _In_opt_ ID3D12Resource *pTargetedResource,
19410 _In_opt_ ID3D12Resource *pFeedbackResource,
19411 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
19412
19413 virtual void STDMETHODCALLTYPE GetCopyableFootprints1(
19414 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
19415 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19416 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19417 UINT64 BaseOffset,
19418 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19419 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19420 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19421 _Out_opt_ UINT64 *pTotalBytes) = 0;
19422
19423 };
19424
19425
19426#else /* C style interface */
19427
19428 typedef struct ID3D12Device8Vtbl
19429 {
19430 BEGIN_INTERFACE
19431
19432 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
19433 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
19434 ID3D12Device8 * This,
19435 REFIID riid,
19436 _COM_Outptr_ void **ppvObject);
19437
19438 DECLSPEC_XFGVIRT(IUnknown, AddRef)
19439 ULONG ( STDMETHODCALLTYPE *AddRef )(
19440 ID3D12Device8 * This);
19441
19442 DECLSPEC_XFGVIRT(IUnknown, Release)
19443 ULONG ( STDMETHODCALLTYPE *Release )(
19444 ID3D12Device8 * This);
19445
19446 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
19447 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
19448 ID3D12Device8 * This,
19449 _In_ REFGUID guid,
19450 _Inout_ UINT *pDataSize,
19451 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
19452
19453 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
19454 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
19455 ID3D12Device8 * This,
19456 _In_ REFGUID guid,
19457 _In_ UINT DataSize,
19458 _In_reads_bytes_opt_( DataSize ) const void *pData);
19459
19460 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
19461 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
19462 ID3D12Device8 * This,
19463 _In_ REFGUID guid,
19464 _In_opt_ const IUnknown *pData);
19465
19466 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
19467 HRESULT ( STDMETHODCALLTYPE *SetName )(
19468 ID3D12Device8 * This,
19469 _In_z_ LPCWSTR Name);
19470
19471 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
19472 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
19473 ID3D12Device8 * This);
19474
19475 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
19476 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
19477 ID3D12Device8 * This,
19478 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
19479 REFIID riid,
19480 _COM_Outptr_ void **ppCommandQueue);
19481
19482 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
19483 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
19484 ID3D12Device8 * This,
19485 _In_ D3D12_COMMAND_LIST_TYPE type,
19486 REFIID riid,
19487 _COM_Outptr_ void **ppCommandAllocator);
19488
19489 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
19490 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
19491 ID3D12Device8 * This,
19492 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
19493 REFIID riid,
19494 _COM_Outptr_ void **ppPipelineState);
19495
19496 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
19497 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
19498 ID3D12Device8 * This,
19499 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
19500 REFIID riid,
19501 _COM_Outptr_ void **ppPipelineState);
19502
19503 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
19504 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
19505 ID3D12Device8 * This,
19506 _In_ UINT nodeMask,
19507 _In_ D3D12_COMMAND_LIST_TYPE type,
19508 _In_ ID3D12CommandAllocator *pCommandAllocator,
19509 _In_opt_ ID3D12PipelineState *pInitialState,
19510 REFIID riid,
19511 _COM_Outptr_ void **ppCommandList);
19512
19513 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
19514 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
19515 ID3D12Device8 * This,
19516 D3D12_FEATURE Feature,
19517 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
19518 UINT FeatureSupportDataSize);
19519
19520 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
19521 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
19522 ID3D12Device8 * This,
19523 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
19524 REFIID riid,
19525 _COM_Outptr_ void **ppvHeap);
19526
19527 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
19528 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
19529 ID3D12Device8 * This,
19530 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
19531
19532 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
19533 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
19534 ID3D12Device8 * This,
19535 _In_ UINT nodeMask,
19536 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
19537 _In_ SIZE_T blobLengthInBytes,
19538 REFIID riid,
19539 _COM_Outptr_ void **ppvRootSignature);
19540
19541 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
19542 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
19543 ID3D12Device8 * This,
19544 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
19545 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19546
19547 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
19548 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
19549 ID3D12Device8 * This,
19550 _In_opt_ ID3D12Resource *pResource,
19551 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
19552 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19553
19554 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
19555 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
19556 ID3D12Device8 * This,
19557 _In_opt_ ID3D12Resource *pResource,
19558 _In_opt_ ID3D12Resource *pCounterResource,
19559 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
19560 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19561
19562 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
19563 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
19564 ID3D12Device8 * This,
19565 _In_opt_ ID3D12Resource *pResource,
19566 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
19567 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19568
19569 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
19570 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
19571 ID3D12Device8 * This,
19572 _In_opt_ ID3D12Resource *pResource,
19573 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
19574 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19575
19576 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
19577 void ( STDMETHODCALLTYPE *CreateSampler )(
19578 ID3D12Device8 * This,
19579 _In_ const D3D12_SAMPLER_DESC *pDesc,
19580 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
19581
19582 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
19583 void ( STDMETHODCALLTYPE *CopyDescriptors )(
19584 ID3D12Device8 * This,
19585 _In_ UINT NumDestDescriptorRanges,
19586 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
19587 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
19588 _In_ UINT NumSrcDescriptorRanges,
19589 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
19590 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
19591 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19592
19593 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
19594 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
19595 ID3D12Device8 * This,
19596 _In_ UINT NumDescriptors,
19597 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
19598 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
19599 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
19600
19601 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
19602#if !defined(_WIN32)
19603 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19604 ID3D12Device8 * This,
19605 _In_ UINT visibleMask,
19606 _In_ UINT numResourceDescs,
19607 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19608
19609#else
19610 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
19611 ID3D12Device8 * This,
19612 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19613 _In_ UINT visibleMask,
19614 _In_ UINT numResourceDescs,
19615 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
19616
19617#endif
19618
19619 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
19620#if !defined(_WIN32)
19621 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19622 ID3D12Device8 * This,
19623 _In_ UINT nodeMask,
19624 D3D12_HEAP_TYPE heapType);
19625
19626#else
19627 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
19628 ID3D12Device8 * This,
19629 D3D12_HEAP_PROPERTIES * RetVal,
19630 _In_ UINT nodeMask,
19631 D3D12_HEAP_TYPE heapType);
19632
19633#endif
19634
19635 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
19636 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
19637 ID3D12Device8 * This,
19638 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19639 D3D12_HEAP_FLAGS HeapFlags,
19640 _In_ const D3D12_RESOURCE_DESC *pDesc,
19641 D3D12_RESOURCE_STATES InitialResourceState,
19642 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19643 REFIID riidResource,
19644 _COM_Outptr_opt_ void **ppvResource);
19645
19646 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
19647 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
19648 ID3D12Device8 * This,
19649 _In_ const D3D12_HEAP_DESC *pDesc,
19650 REFIID riid,
19651 _COM_Outptr_opt_ void **ppvHeap);
19652
19653 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
19654 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
19655 ID3D12Device8 * This,
19656 _In_ ID3D12Heap *pHeap,
19657 UINT64 HeapOffset,
19658 _In_ const D3D12_RESOURCE_DESC *pDesc,
19659 D3D12_RESOURCE_STATES InitialState,
19660 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19661 REFIID riid,
19662 _COM_Outptr_opt_ void **ppvResource);
19663
19664 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
19665 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
19666 ID3D12Device8 * This,
19667 _In_ const D3D12_RESOURCE_DESC *pDesc,
19668 D3D12_RESOURCE_STATES InitialState,
19669 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19670 REFIID riid,
19671 _COM_Outptr_opt_ void **ppvResource);
19672
19673 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
19674 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
19675 ID3D12Device8 * This,
19676 _In_ ID3D12DeviceChild *pObject,
19677 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
19678 DWORD Access,
19679 _In_opt_ LPCWSTR Name,
19680 _Out_ HANDLE *pHandle);
19681
19682 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
19683 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
19684 ID3D12Device8 * This,
19685 _In_ HANDLE NTHandle,
19686 REFIID riid,
19687 _COM_Outptr_opt_ void **ppvObj);
19688
19689 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
19690 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
19691 ID3D12Device8 * This,
19692 _In_ LPCWSTR Name,
19693 DWORD Access,
19694 /* [annotation][out] */
19695 _Out_ HANDLE *pNTHandle);
19696
19697 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
19698 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
19699 ID3D12Device8 * This,
19700 UINT NumObjects,
19701 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19702
19703 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
19704 HRESULT ( STDMETHODCALLTYPE *Evict )(
19705 ID3D12Device8 * This,
19706 UINT NumObjects,
19707 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
19708
19709 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
19710 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
19711 ID3D12Device8 * This,
19712 UINT64 InitialValue,
19713 D3D12_FENCE_FLAGS Flags,
19714 REFIID riid,
19715 _COM_Outptr_ void **ppFence);
19716
19717 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
19718 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
19719 ID3D12Device8 * This);
19720
19721 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
19722 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
19723 ID3D12Device8 * This,
19724 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
19725 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
19726 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
19727 UINT64 BaseOffset,
19728 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
19729 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
19730 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
19731 _Out_opt_ UINT64 *pTotalBytes);
19732
19733 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
19734 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
19735 ID3D12Device8 * This,
19736 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
19737 REFIID riid,
19738 _COM_Outptr_opt_ void **ppvHeap);
19739
19740 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
19741 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
19742 ID3D12Device8 * This,
19743 BOOL Enable);
19744
19745 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
19746 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
19747 ID3D12Device8 * This,
19748 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
19749 _In_opt_ ID3D12RootSignature *pRootSignature,
19750 REFIID riid,
19751 _COM_Outptr_opt_ void **ppvCommandSignature);
19752
19753 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
19754 void ( STDMETHODCALLTYPE *GetResourceTiling )(
19755 ID3D12Device8 * This,
19756 _In_ ID3D12Resource *pTiledResource,
19757 _Out_opt_ UINT *pNumTilesForEntireResource,
19758 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
19759 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
19760 _Inout_opt_ UINT *pNumSubresourceTilings,
19761 _In_ UINT FirstSubresourceTilingToGet,
19762 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
19763
19764 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
19765#if !defined(_WIN32)
19766 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
19767 ID3D12Device8 * This);
19768
19769#else
19770 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
19771 ID3D12Device8 * This,
19772 LUID * RetVal);
19773
19774#endif
19775
19776 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
19777 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
19778 ID3D12Device8 * This,
19779 _In_reads_(BlobLength) const void *pLibraryBlob,
19780 SIZE_T BlobLength,
19781 REFIID riid,
19782 _COM_Outptr_ void **ppPipelineLibrary);
19783
19784 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
19785 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
19786 ID3D12Device8 * This,
19787 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
19788 _In_reads_(NumFences) const UINT64 *pFenceValues,
19789 UINT NumFences,
19790 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
19791 HANDLE hEvent);
19792
19793 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
19794 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
19795 ID3D12Device8 * This,
19796 UINT NumObjects,
19797 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19798 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
19799
19800 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
19801 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
19802 ID3D12Device8 * This,
19803 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
19804 REFIID riid,
19805 _COM_Outptr_ void **ppPipelineState);
19806
19807 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
19808 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
19809 ID3D12Device8 * This,
19810 _In_ const void *pAddress,
19811 REFIID riid,
19812 _COM_Outptr_ void **ppvHeap);
19813
19814 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
19815 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
19816 ID3D12Device8 * This,
19817 _In_ HANDLE hFileMapping,
19818 REFIID riid,
19819 _COM_Outptr_ void **ppvHeap);
19820
19821 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
19822 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
19823 ID3D12Device8 * This,
19824 D3D12_RESIDENCY_FLAGS Flags,
19825 UINT NumObjects,
19826 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
19827 _In_ ID3D12Fence *pFenceToSignal,
19828 UINT64 FenceValueToSignal);
19829
19830 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
19831 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
19832 ID3D12Device8 * This,
19833 _In_ UINT nodeMask,
19834 _In_ D3D12_COMMAND_LIST_TYPE type,
19835 _In_ D3D12_COMMAND_LIST_FLAGS flags,
19836 REFIID riid,
19837 _COM_Outptr_ void **ppCommandList);
19838
19839 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
19840 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
19841 ID3D12Device8 * This,
19842 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
19843 _In_ REFIID riid,
19844 _COM_Outptr_ void **ppSession);
19845
19846 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
19847 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
19848 ID3D12Device8 * This,
19849 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19850 D3D12_HEAP_FLAGS HeapFlags,
19851 _In_ const D3D12_RESOURCE_DESC *pDesc,
19852 D3D12_RESOURCE_STATES InitialResourceState,
19853 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19854 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19855 REFIID riidResource,
19856 _COM_Outptr_opt_ void **ppvResource);
19857
19858 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
19859 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
19860 ID3D12Device8 * This,
19861 _In_ const D3D12_HEAP_DESC *pDesc,
19862 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19863 REFIID riid,
19864 _COM_Outptr_opt_ void **ppvHeap);
19865
19866 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
19867 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
19868 ID3D12Device8 * This,
19869 _In_ const D3D12_RESOURCE_DESC *pDesc,
19870 D3D12_RESOURCE_STATES InitialState,
19871 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
19872 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
19873 REFIID riid,
19874 _COM_Outptr_opt_ void **ppvResource);
19875
19876 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
19877#if !defined(_WIN32)
19878 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19879 ID3D12Device8 * This,
19880 UINT visibleMask,
19881 UINT numResourceDescs,
19882 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19883 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19884
19885#else
19886 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
19887 ID3D12Device8 * This,
19888 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19889 UINT visibleMask,
19890 UINT numResourceDescs,
19891 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
19892 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19893
19894#endif
19895
19896 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
19897 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
19898 ID3D12Device8 * This,
19899 _In_ ID3D12LifetimeOwner *pOwner,
19900 REFIID riid,
19901 _COM_Outptr_ void **ppvTracker);
19902
19903 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
19904 void ( STDMETHODCALLTYPE *RemoveDevice )(
19905 ID3D12Device8 * This);
19906
19907 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
19908 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
19909 ID3D12Device8 * This,
19910 _Inout_ UINT *pNumMetaCommands,
19911 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
19912
19913 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
19914 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
19915 ID3D12Device8 * This,
19916 _In_ REFGUID CommandId,
19917 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
19918 _Out_opt_ UINT *pTotalStructureSizeInBytes,
19919 _Inout_ UINT *pParameterCount,
19920 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
19921
19922 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
19923 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
19924 ID3D12Device8 * This,
19925 _In_ REFGUID CommandId,
19926 _In_ UINT NodeMask,
19927 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
19928 _In_ SIZE_T CreationParametersDataSizeInBytes,
19929 REFIID riid,
19930 _COM_Outptr_ void **ppMetaCommand);
19931
19932 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
19933 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
19934 ID3D12Device8 * This,
19935 const D3D12_STATE_OBJECT_DESC *pDesc,
19936 REFIID riid,
19937 _COM_Outptr_ void **ppStateObject);
19938
19939 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
19940 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
19941 ID3D12Device8 * This,
19942 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
19943 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
19944
19945 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
19946 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
19947 ID3D12Device8 * This,
19948 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
19949 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
19950
19951 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
19952 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
19953 ID3D12Device8 * This,
19954 D3D12_BACKGROUND_PROCESSING_MODE Mode,
19955 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
19956 _In_opt_ HANDLE hEventToSignalUponCompletion,
19957 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
19958
19959 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
19960 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
19961 ID3D12Device8 * This,
19962 const D3D12_STATE_OBJECT_DESC *pAddition,
19963 ID3D12StateObject *pStateObjectToGrowFrom,
19964 REFIID riid,
19965 _COM_Outptr_ void **ppNewStateObject);
19966
19967 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
19968 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
19969 ID3D12Device8 * This,
19970 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
19971 _In_ REFIID riid,
19972 _COM_Outptr_ void **ppSession);
19973
19974 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
19975#if !defined(_WIN32)
19976 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19977 ID3D12Device8 * This,
19978 UINT visibleMask,
19979 UINT numResourceDescs,
19980 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19981 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19982
19983#else
19984 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
19985 ID3D12Device8 * This,
19986 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
19987 UINT visibleMask,
19988 UINT numResourceDescs,
19989 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
19990 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
19991
19992#endif
19993
19994 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
19995 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
19996 ID3D12Device8 * This,
19997 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
19998 D3D12_HEAP_FLAGS HeapFlags,
19999 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20000 D3D12_RESOURCE_STATES InitialResourceState,
20001 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20002 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
20003 REFIID riidResource,
20004 _COM_Outptr_opt_ void **ppvResource);
20005
20006 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
20007 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
20008 ID3D12Device8 * This,
20009 _In_ ID3D12Heap *pHeap,
20010 UINT64 HeapOffset,
20011 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
20012 D3D12_RESOURCE_STATES InitialState,
20013 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
20014 REFIID riid,
20015 _COM_Outptr_opt_ void **ppvResource);
20016
20017 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
20018 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
20019 ID3D12Device8 * This,
20020 _In_opt_ ID3D12Resource *pTargetedResource,
20021 _In_opt_ ID3D12Resource *pFeedbackResource,
20022 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
20023
20024 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
20025 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
20026 ID3D12Device8 * This,
20027 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
20028 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
20029 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
20030 UINT64 BaseOffset,
20031 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
20032 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
20033 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
20034 _Out_opt_ UINT64 *pTotalBytes);
20035
20036 END_INTERFACE
20037 } ID3D12Device8Vtbl;
20038
20039 interface ID3D12Device8
20040 {
20041 CONST_VTBL struct ID3D12Device8Vtbl *lpVtbl;
20042 };
20043
20044
20045
20046#ifdef COBJMACROS
20047
20048
20049#define ID3D12Device8_QueryInterface(This,riid,ppvObject) \
20050 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20051
20052#define ID3D12Device8_AddRef(This) \
20053 ( (This)->lpVtbl -> AddRef(This) )
20054
20055#define ID3D12Device8_Release(This) \
20056 ( (This)->lpVtbl -> Release(This) )
20057
20058
20059#define ID3D12Device8_GetPrivateData(This,guid,pDataSize,pData) \
20060 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20061
20062#define ID3D12Device8_SetPrivateData(This,guid,DataSize,pData) \
20063 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20064
20065#define ID3D12Device8_SetPrivateDataInterface(This,guid,pData) \
20066 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20067
20068#define ID3D12Device8_SetName(This,Name) \
20069 ( (This)->lpVtbl -> SetName(This,Name) )
20070
20071
20072#define ID3D12Device8_GetNodeCount(This) \
20073 ( (This)->lpVtbl -> GetNodeCount(This) )
20074
20075#define ID3D12Device8_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
20076 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
20077
20078#define ID3D12Device8_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
20079 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
20080
20081#define ID3D12Device8_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
20082 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
20083
20084#define ID3D12Device8_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
20085 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
20086
20087#define ID3D12Device8_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
20088 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
20089
20090#define ID3D12Device8_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
20091 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
20092
20093#define ID3D12Device8_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
20094 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
20095
20096#define ID3D12Device8_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
20097 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
20098
20099#define ID3D12Device8_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
20100 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
20101
20102#define ID3D12Device8_CreateConstantBufferView(This,pDesc,DestDescriptor) \
20103 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
20104
20105#define ID3D12Device8_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
20106 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
20107
20108#define ID3D12Device8_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
20109 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
20110
20111#define ID3D12Device8_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
20112 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
20113
20114#define ID3D12Device8_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
20115 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
20116
20117#define ID3D12Device8_CreateSampler(This,pDesc,DestDescriptor) \
20118 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
20119
20120#define ID3D12Device8_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
20121 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
20122
20123#define ID3D12Device8_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
20124 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
20125#if !defined(_WIN32)
20126
20127#define ID3D12Device8_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
20128 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
20129#else
20130#define ID3D12Device8_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
20131 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
20132#endif
20133#if !defined(_WIN32)
20134
20135#define ID3D12Device8_GetCustomHeapProperties(This,nodeMask,heapType) \
20136 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
20137#else
20138#define ID3D12Device8_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
20139 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
20140#endif
20141
20142#define ID3D12Device8_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
20143 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
20144
20145#define ID3D12Device8_CreateHeap(This,pDesc,riid,ppvHeap) \
20146 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
20147
20148#define ID3D12Device8_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20149 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20150
20151#define ID3D12Device8_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20152 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20153
20154#define ID3D12Device8_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
20155 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
20156
20157#define ID3D12Device8_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
20158 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
20159
20160#define ID3D12Device8_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
20161 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
20162
20163#define ID3D12Device8_MakeResident(This,NumObjects,ppObjects) \
20164 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
20165
20166#define ID3D12Device8_Evict(This,NumObjects,ppObjects) \
20167 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
20168
20169#define ID3D12Device8_CreateFence(This,InitialValue,Flags,riid,ppFence) \
20170 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
20171
20172#define ID3D12Device8_GetDeviceRemovedReason(This) \
20173 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
20174
20175#define ID3D12Device8_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20176 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20177
20178#define ID3D12Device8_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
20179 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
20180
20181#define ID3D12Device8_SetStablePowerState(This,Enable) \
20182 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
20183
20184#define ID3D12Device8_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
20185 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
20186
20187#define ID3D12Device8_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
20188 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
20189#if !defined(_WIN32)
20190
20191#define ID3D12Device8_GetAdapterLuid(This) \
20192 ( (This)->lpVtbl -> GetAdapterLuid(This) )
20193#else
20194#define ID3D12Device8_GetAdapterLuid(This,RetVal) \
20195 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
20196#endif
20197
20198
20199#define ID3D12Device8_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
20200 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
20201
20202#define ID3D12Device8_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
20203 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
20204
20205#define ID3D12Device8_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
20206 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
20207
20208
20209#define ID3D12Device8_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
20210 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
20211
20212
20213#define ID3D12Device8_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
20214 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
20215
20216#define ID3D12Device8_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
20217 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
20218
20219#define ID3D12Device8_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
20220 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
20221
20222
20223#define ID3D12Device8_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
20224 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
20225
20226#define ID3D12Device8_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
20227 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
20228
20229#define ID3D12Device8_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20230 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20231
20232#define ID3D12Device8_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
20233 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
20234
20235#define ID3D12Device8_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
20236 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
20237#if !defined(_WIN32)
20238
20239#define ID3D12Device8_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20240 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20241#else
20242#define ID3D12Device8_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20243 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20244#endif
20245
20246
20247#define ID3D12Device8_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
20248 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
20249
20250#define ID3D12Device8_RemoveDevice(This) \
20251 ( (This)->lpVtbl -> RemoveDevice(This) )
20252
20253#define ID3D12Device8_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
20254 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
20255
20256#define ID3D12Device8_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
20257 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
20258
20259#define ID3D12Device8_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
20260 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
20261
20262#define ID3D12Device8_CreateStateObject(This,pDesc,riid,ppStateObject) \
20263 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
20264
20265#define ID3D12Device8_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
20266 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
20267
20268#define ID3D12Device8_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
20269 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
20270
20271
20272#define ID3D12Device8_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
20273 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
20274
20275
20276#define ID3D12Device8_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
20277 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
20278
20279#define ID3D12Device8_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
20280 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
20281
20282#if !defined(_WIN32)
20283
20284#define ID3D12Device8_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20285 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20286#else
20287#define ID3D12Device8_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
20288 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
20289#endif
20290
20291#define ID3D12Device8_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
20292 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
20293
20294#define ID3D12Device8_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
20295 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
20296
20297#define ID3D12Device8_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
20298 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
20299
20300#define ID3D12Device8_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
20301 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
20302
20303#endif /* COBJMACROS */
20304
20305
20306#endif /* C style interface */
20307
20308
20309
20310
20311#endif /* __ID3D12Device8_INTERFACE_DEFINED__ */
20312
20313
20314#ifndef __ID3D12Resource1_INTERFACE_DEFINED__
20315#define __ID3D12Resource1_INTERFACE_DEFINED__
20316
20317/* interface ID3D12Resource1 */
20318/* [unique][local][object][uuid] */
20319
20320
20321EXTERN_C const IID IID_ID3D12Resource1;
20322
20323#if defined(__cplusplus) && !defined(CINTERFACE)
20324
20325 MIDL_INTERFACE("9D5E227A-4430-4161-88B3-3ECA6BB16E19")
20326 ID3D12Resource1 : public ID3D12Resource
20327 {
20328 public:
20329 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20330 REFIID riid,
20331 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20332
20333 };
20334
20335
20336#else /* C style interface */
20337
20338 typedef struct ID3D12Resource1Vtbl
20339 {
20340 BEGIN_INTERFACE
20341
20342 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20343 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20344 ID3D12Resource1 * This,
20345 REFIID riid,
20346 _COM_Outptr_ void **ppvObject);
20347
20348 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20349 ULONG ( STDMETHODCALLTYPE *AddRef )(
20350 ID3D12Resource1 * This);
20351
20352 DECLSPEC_XFGVIRT(IUnknown, Release)
20353 ULONG ( STDMETHODCALLTYPE *Release )(
20354 ID3D12Resource1 * This);
20355
20356 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20357 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20358 ID3D12Resource1 * This,
20359 _In_ REFGUID guid,
20360 _Inout_ UINT *pDataSize,
20361 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20362
20363 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20364 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20365 ID3D12Resource1 * This,
20366 _In_ REFGUID guid,
20367 _In_ UINT DataSize,
20368 _In_reads_bytes_opt_( DataSize ) const void *pData);
20369
20370 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20371 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20372 ID3D12Resource1 * This,
20373 _In_ REFGUID guid,
20374 _In_opt_ const IUnknown *pData);
20375
20376 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20377 HRESULT ( STDMETHODCALLTYPE *SetName )(
20378 ID3D12Resource1 * This,
20379 _In_z_ LPCWSTR Name);
20380
20381 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20382 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20383 ID3D12Resource1 * This,
20384 REFIID riid,
20385 _COM_Outptr_opt_ void **ppvDevice);
20386
20387 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20388 HRESULT ( STDMETHODCALLTYPE *Map )(
20389 ID3D12Resource1 * This,
20390 UINT Subresource,
20391 _In_opt_ const D3D12_RANGE *pReadRange,
20392 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20393
20394 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20395 void ( STDMETHODCALLTYPE *Unmap )(
20396 ID3D12Resource1 * This,
20397 UINT Subresource,
20398 _In_opt_ const D3D12_RANGE *pWrittenRange);
20399
20400 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20401#if !defined(_WIN32)
20402 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20403 ID3D12Resource1 * This);
20404
20405#else
20406 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20407 ID3D12Resource1 * This,
20408 D3D12_RESOURCE_DESC * RetVal);
20409
20410#endif
20411
20412 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20413 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20414 ID3D12Resource1 * This);
20415
20416 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20417 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20418 ID3D12Resource1 * This,
20419 UINT DstSubresource,
20420 _In_opt_ const D3D12_BOX *pDstBox,
20421 _In_ const void *pSrcData,
20422 UINT SrcRowPitch,
20423 UINT SrcDepthPitch);
20424
20425 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20426 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20427 ID3D12Resource1 * This,
20428 _Out_ void *pDstData,
20429 UINT DstRowPitch,
20430 UINT DstDepthPitch,
20431 UINT SrcSubresource,
20432 _In_opt_ const D3D12_BOX *pSrcBox);
20433
20434 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20435 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20436 ID3D12Resource1 * This,
20437 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20438 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20439
20440 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20441 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20442 ID3D12Resource1 * This,
20443 REFIID riid,
20444 _COM_Outptr_opt_ void **ppProtectedSession);
20445
20446 END_INTERFACE
20447 } ID3D12Resource1Vtbl;
20448
20449 interface ID3D12Resource1
20450 {
20451 CONST_VTBL struct ID3D12Resource1Vtbl *lpVtbl;
20452 };
20453
20454
20455
20456#ifdef COBJMACROS
20457
20458
20459#define ID3D12Resource1_QueryInterface(This,riid,ppvObject) \
20460 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20461
20462#define ID3D12Resource1_AddRef(This) \
20463 ( (This)->lpVtbl -> AddRef(This) )
20464
20465#define ID3D12Resource1_Release(This) \
20466 ( (This)->lpVtbl -> Release(This) )
20467
20468
20469#define ID3D12Resource1_GetPrivateData(This,guid,pDataSize,pData) \
20470 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20471
20472#define ID3D12Resource1_SetPrivateData(This,guid,DataSize,pData) \
20473 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20474
20475#define ID3D12Resource1_SetPrivateDataInterface(This,guid,pData) \
20476 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20477
20478#define ID3D12Resource1_SetName(This,Name) \
20479 ( (This)->lpVtbl -> SetName(This,Name) )
20480
20481
20482#define ID3D12Resource1_GetDevice(This,riid,ppvDevice) \
20483 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20484
20485
20486
20487#define ID3D12Resource1_Map(This,Subresource,pReadRange,ppData) \
20488 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20489
20490#define ID3D12Resource1_Unmap(This,Subresource,pWrittenRange) \
20491 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20492#if !defined(_WIN32)
20493
20494#define ID3D12Resource1_GetDesc(This) \
20495 ( (This)->lpVtbl -> GetDesc(This) )
20496#else
20497#define ID3D12Resource1_GetDesc(This,RetVal) \
20498 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20499#endif
20500
20501#define ID3D12Resource1_GetGPUVirtualAddress(This) \
20502 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20503
20504#define ID3D12Resource1_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20505 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20506
20507#define ID3D12Resource1_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20508 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20509
20510#define ID3D12Resource1_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20511 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20512
20513
20514#define ID3D12Resource1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20515 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20516
20517#endif /* COBJMACROS */
20518
20519
20520#endif /* C style interface */
20521
20522
20523
20524
20525#endif /* __ID3D12Resource1_INTERFACE_DEFINED__ */
20526
20527
20528#ifndef __ID3D12Resource2_INTERFACE_DEFINED__
20529#define __ID3D12Resource2_INTERFACE_DEFINED__
20530
20531/* interface ID3D12Resource2 */
20532/* [unique][local][object][uuid] */
20533
20534
20535EXTERN_C const IID IID_ID3D12Resource2;
20536
20537#if defined(__cplusplus) && !defined(CINTERFACE)
20538
20539 MIDL_INTERFACE("BE36EC3B-EA85-4AEB-A45A-E9D76404A495")
20540 ID3D12Resource2 : public ID3D12Resource1
20541 {
20542 public:
20543#if defined(_MSC_VER) || !defined(_WIN32)
20544 virtual D3D12_RESOURCE_DESC1 STDMETHODCALLTYPE GetDesc1( void) = 0;
20545#else
20546 virtual D3D12_RESOURCE_DESC1 *STDMETHODCALLTYPE GetDesc1(
20547 D3D12_RESOURCE_DESC1 * RetVal) = 0;
20548#endif
20549
20550 };
20551
20552
20553#else /* C style interface */
20554
20555 typedef struct ID3D12Resource2Vtbl
20556 {
20557 BEGIN_INTERFACE
20558
20559 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20560 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20561 ID3D12Resource2 * This,
20562 REFIID riid,
20563 _COM_Outptr_ void **ppvObject);
20564
20565 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20566 ULONG ( STDMETHODCALLTYPE *AddRef )(
20567 ID3D12Resource2 * This);
20568
20569 DECLSPEC_XFGVIRT(IUnknown, Release)
20570 ULONG ( STDMETHODCALLTYPE *Release )(
20571 ID3D12Resource2 * This);
20572
20573 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20574 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20575 ID3D12Resource2 * This,
20576 _In_ REFGUID guid,
20577 _Inout_ UINT *pDataSize,
20578 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20579
20580 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20581 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20582 ID3D12Resource2 * This,
20583 _In_ REFGUID guid,
20584 _In_ UINT DataSize,
20585 _In_reads_bytes_opt_( DataSize ) const void *pData);
20586
20587 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20588 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20589 ID3D12Resource2 * This,
20590 _In_ REFGUID guid,
20591 _In_opt_ const IUnknown *pData);
20592
20593 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20594 HRESULT ( STDMETHODCALLTYPE *SetName )(
20595 ID3D12Resource2 * This,
20596 _In_z_ LPCWSTR Name);
20597
20598 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20599 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20600 ID3D12Resource2 * This,
20601 REFIID riid,
20602 _COM_Outptr_opt_ void **ppvDevice);
20603
20604 DECLSPEC_XFGVIRT(ID3D12Resource, Map)
20605 HRESULT ( STDMETHODCALLTYPE *Map )(
20606 ID3D12Resource2 * This,
20607 UINT Subresource,
20608 _In_opt_ const D3D12_RANGE *pReadRange,
20609 _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
20610
20611 DECLSPEC_XFGVIRT(ID3D12Resource, Unmap)
20612 void ( STDMETHODCALLTYPE *Unmap )(
20613 ID3D12Resource2 * This,
20614 UINT Subresource,
20615 _In_opt_ const D3D12_RANGE *pWrittenRange);
20616
20617 DECLSPEC_XFGVIRT(ID3D12Resource, GetDesc)
20618#if !defined(_WIN32)
20619 D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
20620 ID3D12Resource2 * This);
20621
20622#else
20623 D3D12_RESOURCE_DESC *( STDMETHODCALLTYPE *GetDesc )(
20624 ID3D12Resource2 * This,
20625 D3D12_RESOURCE_DESC * RetVal);
20626
20627#endif
20628
20629 DECLSPEC_XFGVIRT(ID3D12Resource, GetGPUVirtualAddress)
20630 D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
20631 ID3D12Resource2 * This);
20632
20633 DECLSPEC_XFGVIRT(ID3D12Resource, WriteToSubresource)
20634 HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
20635 ID3D12Resource2 * This,
20636 UINT DstSubresource,
20637 _In_opt_ const D3D12_BOX *pDstBox,
20638 _In_ const void *pSrcData,
20639 UINT SrcRowPitch,
20640 UINT SrcDepthPitch);
20641
20642 DECLSPEC_XFGVIRT(ID3D12Resource, ReadFromSubresource)
20643 HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
20644 ID3D12Resource2 * This,
20645 _Out_ void *pDstData,
20646 UINT DstRowPitch,
20647 UINT DstDepthPitch,
20648 UINT SrcSubresource,
20649 _In_opt_ const D3D12_BOX *pSrcBox);
20650
20651 DECLSPEC_XFGVIRT(ID3D12Resource, GetHeapProperties)
20652 HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
20653 ID3D12Resource2 * This,
20654 _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
20655 _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
20656
20657 DECLSPEC_XFGVIRT(ID3D12Resource1, GetProtectedResourceSession)
20658 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20659 ID3D12Resource2 * This,
20660 REFIID riid,
20661 _COM_Outptr_opt_ void **ppProtectedSession);
20662
20663 DECLSPEC_XFGVIRT(ID3D12Resource2, GetDesc1)
20664#if !defined(_WIN32)
20665 D3D12_RESOURCE_DESC1 ( STDMETHODCALLTYPE *GetDesc1 )(
20666 ID3D12Resource2 * This);
20667
20668#else
20669 D3D12_RESOURCE_DESC1 *( STDMETHODCALLTYPE *GetDesc1 )(
20670 ID3D12Resource2 * This,
20671 D3D12_RESOURCE_DESC1 * RetVal);
20672
20673#endif
20674
20675 END_INTERFACE
20676 } ID3D12Resource2Vtbl;
20677
20678 interface ID3D12Resource2
20679 {
20680 CONST_VTBL struct ID3D12Resource2Vtbl *lpVtbl;
20681 };
20682
20683
20684
20685#ifdef COBJMACROS
20686
20687
20688#define ID3D12Resource2_QueryInterface(This,riid,ppvObject) \
20689 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20690
20691#define ID3D12Resource2_AddRef(This) \
20692 ( (This)->lpVtbl -> AddRef(This) )
20693
20694#define ID3D12Resource2_Release(This) \
20695 ( (This)->lpVtbl -> Release(This) )
20696
20697
20698#define ID3D12Resource2_GetPrivateData(This,guid,pDataSize,pData) \
20699 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20700
20701#define ID3D12Resource2_SetPrivateData(This,guid,DataSize,pData) \
20702 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20703
20704#define ID3D12Resource2_SetPrivateDataInterface(This,guid,pData) \
20705 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20706
20707#define ID3D12Resource2_SetName(This,Name) \
20708 ( (This)->lpVtbl -> SetName(This,Name) )
20709
20710
20711#define ID3D12Resource2_GetDevice(This,riid,ppvDevice) \
20712 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20713
20714
20715
20716#define ID3D12Resource2_Map(This,Subresource,pReadRange,ppData) \
20717 ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
20718
20719#define ID3D12Resource2_Unmap(This,Subresource,pWrittenRange) \
20720 ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
20721#if !defined(_WIN32)
20722
20723#define ID3D12Resource2_GetDesc(This) \
20724 ( (This)->lpVtbl -> GetDesc(This) )
20725#else
20726#define ID3D12Resource2_GetDesc(This,RetVal) \
20727 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20728#endif
20729
20730#define ID3D12Resource2_GetGPUVirtualAddress(This) \
20731 ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
20732
20733#define ID3D12Resource2_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
20734 ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
20735
20736#define ID3D12Resource2_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
20737 ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
20738
20739#define ID3D12Resource2_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
20740 ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
20741
20742
20743#define ID3D12Resource2_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20744 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20745
20746#if !defined(_WIN32)
20747
20748#define ID3D12Resource2_GetDesc1(This) \
20749 ( (This)->lpVtbl -> GetDesc1(This) )
20750#else
20751#define ID3D12Resource2_GetDesc1(This,RetVal) \
20752 ( (This)->lpVtbl -> GetDesc1(This,RetVal) )
20753#endif
20754
20755#endif /* COBJMACROS */
20756
20757
20758#endif /* C style interface */
20759
20760
20761
20762
20763#endif /* __ID3D12Resource2_INTERFACE_DEFINED__ */
20764
20765
20766#ifndef __ID3D12Heap1_INTERFACE_DEFINED__
20767#define __ID3D12Heap1_INTERFACE_DEFINED__
20768
20769/* interface ID3D12Heap1 */
20770/* [unique][local][object][uuid] */
20771
20772
20773EXTERN_C const IID IID_ID3D12Heap1;
20774
20775#if defined(__cplusplus) && !defined(CINTERFACE)
20776
20777 MIDL_INTERFACE("572F7389-2168-49E3-9693-D6DF5871BF6D")
20778 ID3D12Heap1 : public ID3D12Heap
20779 {
20780 public:
20781 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
20782 REFIID riid,
20783 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
20784
20785 };
20786
20787
20788#else /* C style interface */
20789
20790 typedef struct ID3D12Heap1Vtbl
20791 {
20792 BEGIN_INTERFACE
20793
20794 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20795 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20796 ID3D12Heap1 * This,
20797 REFIID riid,
20798 _COM_Outptr_ void **ppvObject);
20799
20800 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20801 ULONG ( STDMETHODCALLTYPE *AddRef )(
20802 ID3D12Heap1 * This);
20803
20804 DECLSPEC_XFGVIRT(IUnknown, Release)
20805 ULONG ( STDMETHODCALLTYPE *Release )(
20806 ID3D12Heap1 * This);
20807
20808 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20809 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20810 ID3D12Heap1 * This,
20811 _In_ REFGUID guid,
20812 _Inout_ UINT *pDataSize,
20813 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20814
20815 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20816 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20817 ID3D12Heap1 * This,
20818 _In_ REFGUID guid,
20819 _In_ UINT DataSize,
20820 _In_reads_bytes_opt_( DataSize ) const void *pData);
20821
20822 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20823 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20824 ID3D12Heap1 * This,
20825 _In_ REFGUID guid,
20826 _In_opt_ const IUnknown *pData);
20827
20828 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20829 HRESULT ( STDMETHODCALLTYPE *SetName )(
20830 ID3D12Heap1 * This,
20831 _In_z_ LPCWSTR Name);
20832
20833 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20834 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20835 ID3D12Heap1 * This,
20836 REFIID riid,
20837 _COM_Outptr_opt_ void **ppvDevice);
20838
20839 DECLSPEC_XFGVIRT(ID3D12Heap, GetDesc)
20840#if !defined(_WIN32)
20841 D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
20842 ID3D12Heap1 * This);
20843
20844#else
20845 D3D12_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
20846 ID3D12Heap1 * This,
20847 D3D12_HEAP_DESC * RetVal);
20848
20849#endif
20850
20851 DECLSPEC_XFGVIRT(ID3D12Heap1, GetProtectedResourceSession)
20852 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
20853 ID3D12Heap1 * This,
20854 REFIID riid,
20855 _COM_Outptr_opt_ void **ppProtectedSession);
20856
20857 END_INTERFACE
20858 } ID3D12Heap1Vtbl;
20859
20860 interface ID3D12Heap1
20861 {
20862 CONST_VTBL struct ID3D12Heap1Vtbl *lpVtbl;
20863 };
20864
20865
20866
20867#ifdef COBJMACROS
20868
20869
20870#define ID3D12Heap1_QueryInterface(This,riid,ppvObject) \
20871 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
20872
20873#define ID3D12Heap1_AddRef(This) \
20874 ( (This)->lpVtbl -> AddRef(This) )
20875
20876#define ID3D12Heap1_Release(This) \
20877 ( (This)->lpVtbl -> Release(This) )
20878
20879
20880#define ID3D12Heap1_GetPrivateData(This,guid,pDataSize,pData) \
20881 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
20882
20883#define ID3D12Heap1_SetPrivateData(This,guid,DataSize,pData) \
20884 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
20885
20886#define ID3D12Heap1_SetPrivateDataInterface(This,guid,pData) \
20887 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
20888
20889#define ID3D12Heap1_SetName(This,Name) \
20890 ( (This)->lpVtbl -> SetName(This,Name) )
20891
20892
20893#define ID3D12Heap1_GetDevice(This,riid,ppvDevice) \
20894 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
20895
20896
20897#if !defined(_WIN32)
20898
20899#define ID3D12Heap1_GetDesc(This) \
20900 ( (This)->lpVtbl -> GetDesc(This) )
20901#else
20902#define ID3D12Heap1_GetDesc(This,RetVal) \
20903 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
20904#endif
20905
20906
20907#define ID3D12Heap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
20908 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
20909
20910#endif /* COBJMACROS */
20911
20912
20913#endif /* C style interface */
20914
20915
20916
20917
20918#endif /* __ID3D12Heap1_INTERFACE_DEFINED__ */
20919
20920
20921#ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20922#define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
20923
20924/* interface ID3D12GraphicsCommandList3 */
20925/* [unique][local][object][uuid] */
20926
20927
20928EXTERN_C const IID IID_ID3D12GraphicsCommandList3;
20929
20930#if defined(__cplusplus) && !defined(CINTERFACE)
20931
20932 MIDL_INTERFACE("6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")
20933 ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2
20934 {
20935 public:
20936 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
20937 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
20938
20939 };
20940
20941
20942#else /* C style interface */
20943
20944 typedef struct ID3D12GraphicsCommandList3Vtbl
20945 {
20946 BEGIN_INTERFACE
20947
20948 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
20949 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
20950 ID3D12GraphicsCommandList3 * This,
20951 REFIID riid,
20952 _COM_Outptr_ void **ppvObject);
20953
20954 DECLSPEC_XFGVIRT(IUnknown, AddRef)
20955 ULONG ( STDMETHODCALLTYPE *AddRef )(
20956 ID3D12GraphicsCommandList3 * This);
20957
20958 DECLSPEC_XFGVIRT(IUnknown, Release)
20959 ULONG ( STDMETHODCALLTYPE *Release )(
20960 ID3D12GraphicsCommandList3 * This);
20961
20962 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
20963 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
20964 ID3D12GraphicsCommandList3 * This,
20965 _In_ REFGUID guid,
20966 _Inout_ UINT *pDataSize,
20967 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
20968
20969 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
20970 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
20971 ID3D12GraphicsCommandList3 * This,
20972 _In_ REFGUID guid,
20973 _In_ UINT DataSize,
20974 _In_reads_bytes_opt_( DataSize ) const void *pData);
20975
20976 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
20977 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
20978 ID3D12GraphicsCommandList3 * This,
20979 _In_ REFGUID guid,
20980 _In_opt_ const IUnknown *pData);
20981
20982 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
20983 HRESULT ( STDMETHODCALLTYPE *SetName )(
20984 ID3D12GraphicsCommandList3 * This,
20985 _In_z_ LPCWSTR Name);
20986
20987 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
20988 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
20989 ID3D12GraphicsCommandList3 * This,
20990 REFIID riid,
20991 _COM_Outptr_opt_ void **ppvDevice);
20992
20993 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
20994 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
20995 ID3D12GraphicsCommandList3 * This);
20996
20997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
20998 HRESULT ( STDMETHODCALLTYPE *Close )(
20999 ID3D12GraphicsCommandList3 * This);
21000
21001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
21002 HRESULT ( STDMETHODCALLTYPE *Reset )(
21003 ID3D12GraphicsCommandList3 * This,
21004 _In_ ID3D12CommandAllocator *pAllocator,
21005 _In_opt_ ID3D12PipelineState *pInitialState);
21006
21007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
21008 void ( STDMETHODCALLTYPE *ClearState )(
21009 ID3D12GraphicsCommandList3 * This,
21010 _In_opt_ ID3D12PipelineState *pPipelineState);
21011
21012 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
21013 void ( STDMETHODCALLTYPE *DrawInstanced )(
21014 ID3D12GraphicsCommandList3 * This,
21015 _In_ UINT VertexCountPerInstance,
21016 _In_ UINT InstanceCount,
21017 _In_ UINT StartVertexLocation,
21018 _In_ UINT StartInstanceLocation);
21019
21020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
21021 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
21022 ID3D12GraphicsCommandList3 * This,
21023 _In_ UINT IndexCountPerInstance,
21024 _In_ UINT InstanceCount,
21025 _In_ UINT StartIndexLocation,
21026 _In_ INT BaseVertexLocation,
21027 _In_ UINT StartInstanceLocation);
21028
21029 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
21030 void ( STDMETHODCALLTYPE *Dispatch )(
21031 ID3D12GraphicsCommandList3 * This,
21032 _In_ UINT ThreadGroupCountX,
21033 _In_ UINT ThreadGroupCountY,
21034 _In_ UINT ThreadGroupCountZ);
21035
21036 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
21037 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
21038 ID3D12GraphicsCommandList3 * This,
21039 _In_ ID3D12Resource *pDstBuffer,
21040 UINT64 DstOffset,
21041 _In_ ID3D12Resource *pSrcBuffer,
21042 UINT64 SrcOffset,
21043 UINT64 NumBytes);
21044
21045 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
21046 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
21047 ID3D12GraphicsCommandList3 * This,
21048 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
21049 UINT DstX,
21050 UINT DstY,
21051 UINT DstZ,
21052 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
21053 _In_opt_ const D3D12_BOX *pSrcBox);
21054
21055 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
21056 void ( STDMETHODCALLTYPE *CopyResource )(
21057 ID3D12GraphicsCommandList3 * This,
21058 _In_ ID3D12Resource *pDstResource,
21059 _In_ ID3D12Resource *pSrcResource);
21060
21061 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
21062 void ( STDMETHODCALLTYPE *CopyTiles )(
21063 ID3D12GraphicsCommandList3 * This,
21064 _In_ ID3D12Resource *pTiledResource,
21065 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
21066 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
21067 _In_ ID3D12Resource *pBuffer,
21068 UINT64 BufferStartOffsetInBytes,
21069 D3D12_TILE_COPY_FLAGS Flags);
21070
21071 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
21072 void ( STDMETHODCALLTYPE *ResolveSubresource )(
21073 ID3D12GraphicsCommandList3 * This,
21074 _In_ ID3D12Resource *pDstResource,
21075 _In_ UINT DstSubresource,
21076 _In_ ID3D12Resource *pSrcResource,
21077 _In_ UINT SrcSubresource,
21078 _In_ DXGI_FORMAT Format);
21079
21080 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
21081 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
21082 ID3D12GraphicsCommandList3 * This,
21083 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
21084
21085 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
21086 void ( STDMETHODCALLTYPE *RSSetViewports )(
21087 ID3D12GraphicsCommandList3 * This,
21088 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
21089 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
21090
21091 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
21092 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
21093 ID3D12GraphicsCommandList3 * This,
21094 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
21095 _In_reads_( NumRects) const D3D12_RECT *pRects);
21096
21097 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
21098 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
21099 ID3D12GraphicsCommandList3 * This,
21100 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
21101
21102 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
21103 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
21104 ID3D12GraphicsCommandList3 * This,
21105 _In_ UINT StencilRef);
21106
21107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
21108 void ( STDMETHODCALLTYPE *SetPipelineState )(
21109 ID3D12GraphicsCommandList3 * This,
21110 _In_ ID3D12PipelineState *pPipelineState);
21111
21112 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
21113 void ( STDMETHODCALLTYPE *ResourceBarrier )(
21114 ID3D12GraphicsCommandList3 * This,
21115 _In_ UINT NumBarriers,
21116 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
21117
21118 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
21119 void ( STDMETHODCALLTYPE *ExecuteBundle )(
21120 ID3D12GraphicsCommandList3 * This,
21121 _In_ ID3D12GraphicsCommandList *pCommandList);
21122
21123 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
21124 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
21125 ID3D12GraphicsCommandList3 * This,
21126 _In_ UINT NumDescriptorHeaps,
21127 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
21128
21129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
21130 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
21131 ID3D12GraphicsCommandList3 * This,
21132 _In_opt_ ID3D12RootSignature *pRootSignature);
21133
21134 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
21135 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
21136 ID3D12GraphicsCommandList3 * This,
21137 _In_opt_ ID3D12RootSignature *pRootSignature);
21138
21139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
21140 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
21141 ID3D12GraphicsCommandList3 * This,
21142 _In_ UINT RootParameterIndex,
21143 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21144
21145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
21146 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
21147 ID3D12GraphicsCommandList3 * This,
21148 _In_ UINT RootParameterIndex,
21149 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
21150
21151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
21152 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
21153 ID3D12GraphicsCommandList3 * This,
21154 _In_ UINT RootParameterIndex,
21155 _In_ UINT SrcData,
21156 _In_ UINT DestOffsetIn32BitValues);
21157
21158 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
21159 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
21160 ID3D12GraphicsCommandList3 * This,
21161 _In_ UINT RootParameterIndex,
21162 _In_ UINT SrcData,
21163 _In_ UINT DestOffsetIn32BitValues);
21164
21165 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
21166 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
21167 ID3D12GraphicsCommandList3 * This,
21168 _In_ UINT RootParameterIndex,
21169 _In_ UINT Num32BitValuesToSet,
21170 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21171 _In_ UINT DestOffsetIn32BitValues);
21172
21173 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
21174 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
21175 ID3D12GraphicsCommandList3 * This,
21176 _In_ UINT RootParameterIndex,
21177 _In_ UINT Num32BitValuesToSet,
21178 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
21179 _In_ UINT DestOffsetIn32BitValues);
21180
21181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
21182 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
21183 ID3D12GraphicsCommandList3 * This,
21184 _In_ UINT RootParameterIndex,
21185 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21186
21187 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
21188 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
21189 ID3D12GraphicsCommandList3 * This,
21190 _In_ UINT RootParameterIndex,
21191 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21192
21193 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
21194 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
21195 ID3D12GraphicsCommandList3 * This,
21196 _In_ UINT RootParameterIndex,
21197 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21198
21199 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
21200 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
21201 ID3D12GraphicsCommandList3 * This,
21202 _In_ UINT RootParameterIndex,
21203 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21204
21205 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
21206 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
21207 ID3D12GraphicsCommandList3 * This,
21208 _In_ UINT RootParameterIndex,
21209 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21210
21211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
21212 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
21213 ID3D12GraphicsCommandList3 * This,
21214 _In_ UINT RootParameterIndex,
21215 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
21216
21217 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
21218 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
21219 ID3D12GraphicsCommandList3 * This,
21220 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
21221
21222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
21223 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
21224 ID3D12GraphicsCommandList3 * This,
21225 _In_ UINT StartSlot,
21226 _In_ UINT NumViews,
21227 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
21228
21229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
21230 void ( STDMETHODCALLTYPE *SOSetTargets )(
21231 ID3D12GraphicsCommandList3 * This,
21232 _In_ UINT StartSlot,
21233 _In_ UINT NumViews,
21234 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
21235
21236 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
21237 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
21238 ID3D12GraphicsCommandList3 * This,
21239 _In_ UINT NumRenderTargetDescriptors,
21240 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
21241 _In_ BOOL RTsSingleHandleToDescriptorRange,
21242 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
21243
21244 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
21245 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
21246 ID3D12GraphicsCommandList3 * This,
21247 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
21248 _In_ D3D12_CLEAR_FLAGS ClearFlags,
21249 _In_ FLOAT Depth,
21250 _In_ UINT8 Stencil,
21251 _In_ UINT NumRects,
21252 _In_reads_(NumRects) const D3D12_RECT *pRects);
21253
21254 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
21255 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
21256 ID3D12GraphicsCommandList3 * This,
21257 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
21258 _In_ const FLOAT ColorRGBA[ 4 ],
21259 _In_ UINT NumRects,
21260 _In_reads_(NumRects) const D3D12_RECT *pRects);
21261
21262 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
21263 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
21264 ID3D12GraphicsCommandList3 * This,
21265 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21266 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21267 _In_ ID3D12Resource *pResource,
21268 _In_ const UINT Values[ 4 ],
21269 _In_ UINT NumRects,
21270 _In_reads_(NumRects) const D3D12_RECT *pRects);
21271
21272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
21273 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
21274 ID3D12GraphicsCommandList3 * This,
21275 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
21276 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
21277 _In_ ID3D12Resource *pResource,
21278 _In_ const FLOAT Values[ 4 ],
21279 _In_ UINT NumRects,
21280 _In_reads_(NumRects) const D3D12_RECT *pRects);
21281
21282 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
21283 void ( STDMETHODCALLTYPE *DiscardResource )(
21284 ID3D12GraphicsCommandList3 * This,
21285 _In_ ID3D12Resource *pResource,
21286 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
21287
21288 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
21289 void ( STDMETHODCALLTYPE *BeginQuery )(
21290 ID3D12GraphicsCommandList3 * This,
21291 _In_ ID3D12QueryHeap *pQueryHeap,
21292 _In_ D3D12_QUERY_TYPE Type,
21293 _In_ UINT Index);
21294
21295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
21296 void ( STDMETHODCALLTYPE *EndQuery )(
21297 ID3D12GraphicsCommandList3 * This,
21298 _In_ ID3D12QueryHeap *pQueryHeap,
21299 _In_ D3D12_QUERY_TYPE Type,
21300 _In_ UINT Index);
21301
21302 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
21303 void ( STDMETHODCALLTYPE *ResolveQueryData )(
21304 ID3D12GraphicsCommandList3 * This,
21305 _In_ ID3D12QueryHeap *pQueryHeap,
21306 _In_ D3D12_QUERY_TYPE Type,
21307 _In_ UINT StartIndex,
21308 _In_ UINT NumQueries,
21309 _In_ ID3D12Resource *pDestinationBuffer,
21310 _In_ UINT64 AlignedDestinationBufferOffset);
21311
21312 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
21313 void ( STDMETHODCALLTYPE *SetPredication )(
21314 ID3D12GraphicsCommandList3 * This,
21315 _In_opt_ ID3D12Resource *pBuffer,
21316 _In_ UINT64 AlignedBufferOffset,
21317 _In_ D3D12_PREDICATION_OP Operation);
21318
21319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
21320 void ( STDMETHODCALLTYPE *SetMarker )(
21321 ID3D12GraphicsCommandList3 * This,
21322 UINT Metadata,
21323 _In_reads_bytes_opt_(Size) const void *pData,
21324 UINT Size);
21325
21326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
21327 void ( STDMETHODCALLTYPE *BeginEvent )(
21328 ID3D12GraphicsCommandList3 * This,
21329 UINT Metadata,
21330 _In_reads_bytes_opt_(Size) const void *pData,
21331 UINT Size);
21332
21333 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
21334 void ( STDMETHODCALLTYPE *EndEvent )(
21335 ID3D12GraphicsCommandList3 * This);
21336
21337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
21338 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
21339 ID3D12GraphicsCommandList3 * This,
21340 _In_ ID3D12CommandSignature *pCommandSignature,
21341 _In_ UINT MaxCommandCount,
21342 _In_ ID3D12Resource *pArgumentBuffer,
21343 _In_ UINT64 ArgumentBufferOffset,
21344 _In_opt_ ID3D12Resource *pCountBuffer,
21345 _In_ UINT64 CountBufferOffset);
21346
21347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
21348 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
21349 ID3D12GraphicsCommandList3 * This,
21350 _In_ ID3D12Resource *pDstBuffer,
21351 UINT64 DstOffset,
21352 _In_ ID3D12Resource *pSrcBuffer,
21353 UINT64 SrcOffset,
21354 UINT Dependencies,
21355 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21356 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21357
21358 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
21359 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
21360 ID3D12GraphicsCommandList3 * This,
21361 _In_ ID3D12Resource *pDstBuffer,
21362 UINT64 DstOffset,
21363 _In_ ID3D12Resource *pSrcBuffer,
21364 UINT64 SrcOffset,
21365 UINT Dependencies,
21366 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
21367 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
21368
21369 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
21370 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
21371 ID3D12GraphicsCommandList3 * This,
21372 _In_ FLOAT Min,
21373 _In_ FLOAT Max);
21374
21375 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
21376 void ( STDMETHODCALLTYPE *SetSamplePositions )(
21377 ID3D12GraphicsCommandList3 * This,
21378 _In_ UINT NumSamplesPerPixel,
21379 _In_ UINT NumPixels,
21380 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
21381
21382 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
21383 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
21384 ID3D12GraphicsCommandList3 * This,
21385 _In_ ID3D12Resource *pDstResource,
21386 _In_ UINT DstSubresource,
21387 _In_ UINT DstX,
21388 _In_ UINT DstY,
21389 _In_ ID3D12Resource *pSrcResource,
21390 _In_ UINT SrcSubresource,
21391 _In_opt_ D3D12_RECT *pSrcRect,
21392 _In_ DXGI_FORMAT Format,
21393 _In_ D3D12_RESOLVE_MODE ResolveMode);
21394
21395 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
21396 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
21397 ID3D12GraphicsCommandList3 * This,
21398 _In_ UINT Mask);
21399
21400 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
21401 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
21402 ID3D12GraphicsCommandList3 * This,
21403 UINT Count,
21404 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
21405 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
21406
21407 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
21408 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
21409 ID3D12GraphicsCommandList3 * This,
21410 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
21411
21412 END_INTERFACE
21413 } ID3D12GraphicsCommandList3Vtbl;
21414
21415 interface ID3D12GraphicsCommandList3
21416 {
21417 CONST_VTBL struct ID3D12GraphicsCommandList3Vtbl *lpVtbl;
21418 };
21419
21420
21421
21422#ifdef COBJMACROS
21423
21424
21425#define ID3D12GraphicsCommandList3_QueryInterface(This,riid,ppvObject) \
21426 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21427
21428#define ID3D12GraphicsCommandList3_AddRef(This) \
21429 ( (This)->lpVtbl -> AddRef(This) )
21430
21431#define ID3D12GraphicsCommandList3_Release(This) \
21432 ( (This)->lpVtbl -> Release(This) )
21433
21434
21435#define ID3D12GraphicsCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
21436 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21437
21438#define ID3D12GraphicsCommandList3_SetPrivateData(This,guid,DataSize,pData) \
21439 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21440
21441#define ID3D12GraphicsCommandList3_SetPrivateDataInterface(This,guid,pData) \
21442 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21443
21444#define ID3D12GraphicsCommandList3_SetName(This,Name) \
21445 ( (This)->lpVtbl -> SetName(This,Name) )
21446
21447
21448#define ID3D12GraphicsCommandList3_GetDevice(This,riid,ppvDevice) \
21449 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21450
21451
21452#define ID3D12GraphicsCommandList3_GetType(This) \
21453 ( (This)->lpVtbl -> GetType(This) )
21454
21455
21456#define ID3D12GraphicsCommandList3_Close(This) \
21457 ( (This)->lpVtbl -> Close(This) )
21458
21459#define ID3D12GraphicsCommandList3_Reset(This,pAllocator,pInitialState) \
21460 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
21461
21462#define ID3D12GraphicsCommandList3_ClearState(This,pPipelineState) \
21463 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
21464
21465#define ID3D12GraphicsCommandList3_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
21466 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
21467
21468#define ID3D12GraphicsCommandList3_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
21469 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
21470
21471#define ID3D12GraphicsCommandList3_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
21472 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
21473
21474#define ID3D12GraphicsCommandList3_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
21475 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
21476
21477#define ID3D12GraphicsCommandList3_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
21478 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
21479
21480#define ID3D12GraphicsCommandList3_CopyResource(This,pDstResource,pSrcResource) \
21481 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
21482
21483#define ID3D12GraphicsCommandList3_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
21484 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
21485
21486#define ID3D12GraphicsCommandList3_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
21487 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
21488
21489#define ID3D12GraphicsCommandList3_IASetPrimitiveTopology(This,PrimitiveTopology) \
21490 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
21491
21492#define ID3D12GraphicsCommandList3_RSSetViewports(This,NumViewports,pViewports) \
21493 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
21494
21495#define ID3D12GraphicsCommandList3_RSSetScissorRects(This,NumRects,pRects) \
21496 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
21497
21498#define ID3D12GraphicsCommandList3_OMSetBlendFactor(This,BlendFactor) \
21499 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
21500
21501#define ID3D12GraphicsCommandList3_OMSetStencilRef(This,StencilRef) \
21502 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
21503
21504#define ID3D12GraphicsCommandList3_SetPipelineState(This,pPipelineState) \
21505 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
21506
21507#define ID3D12GraphicsCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
21508 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
21509
21510#define ID3D12GraphicsCommandList3_ExecuteBundle(This,pCommandList) \
21511 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
21512
21513#define ID3D12GraphicsCommandList3_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
21514 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
21515
21516#define ID3D12GraphicsCommandList3_SetComputeRootSignature(This,pRootSignature) \
21517 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
21518
21519#define ID3D12GraphicsCommandList3_SetGraphicsRootSignature(This,pRootSignature) \
21520 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
21521
21522#define ID3D12GraphicsCommandList3_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21523 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21524
21525#define ID3D12GraphicsCommandList3_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
21526 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
21527
21528#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21529 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21530
21531#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
21532 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
21533
21534#define ID3D12GraphicsCommandList3_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21535 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21536
21537#define ID3D12GraphicsCommandList3_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
21538 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
21539
21540#define ID3D12GraphicsCommandList3_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21541 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21542
21543#define ID3D12GraphicsCommandList3_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
21544 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
21545
21546#define ID3D12GraphicsCommandList3_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21547 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21548
21549#define ID3D12GraphicsCommandList3_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
21550 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
21551
21552#define ID3D12GraphicsCommandList3_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21553 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21554
21555#define ID3D12GraphicsCommandList3_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
21556 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
21557
21558#define ID3D12GraphicsCommandList3_IASetIndexBuffer(This,pView) \
21559 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
21560
21561#define ID3D12GraphicsCommandList3_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
21562 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
21563
21564#define ID3D12GraphicsCommandList3_SOSetTargets(This,StartSlot,NumViews,pViews) \
21565 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
21566
21567#define ID3D12GraphicsCommandList3_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
21568 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
21569
21570#define ID3D12GraphicsCommandList3_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
21571 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
21572
21573#define ID3D12GraphicsCommandList3_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
21574 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
21575
21576#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21577 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21578
21579#define ID3D12GraphicsCommandList3_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
21580 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
21581
21582#define ID3D12GraphicsCommandList3_DiscardResource(This,pResource,pRegion) \
21583 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
21584
21585#define ID3D12GraphicsCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
21586 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
21587
21588#define ID3D12GraphicsCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
21589 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
21590
21591#define ID3D12GraphicsCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
21592 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
21593
21594#define ID3D12GraphicsCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
21595 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
21596
21597#define ID3D12GraphicsCommandList3_SetMarker(This,Metadata,pData,Size) \
21598 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
21599
21600#define ID3D12GraphicsCommandList3_BeginEvent(This,Metadata,pData,Size) \
21601 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
21602
21603#define ID3D12GraphicsCommandList3_EndEvent(This) \
21604 ( (This)->lpVtbl -> EndEvent(This) )
21605
21606#define ID3D12GraphicsCommandList3_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
21607 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
21608
21609
21610#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21611 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21612
21613#define ID3D12GraphicsCommandList3_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
21614 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
21615
21616#define ID3D12GraphicsCommandList3_OMSetDepthBounds(This,Min,Max) \
21617 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
21618
21619#define ID3D12GraphicsCommandList3_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
21620 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
21621
21622#define ID3D12GraphicsCommandList3_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
21623 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
21624
21625#define ID3D12GraphicsCommandList3_SetViewInstanceMask(This,Mask) \
21626 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
21627
21628
21629#define ID3D12GraphicsCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
21630 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
21631
21632
21633#define ID3D12GraphicsCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
21634 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
21635
21636#endif /* COBJMACROS */
21637
21638
21639#endif /* C style interface */
21640
21641
21642
21643
21644#endif /* __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__ */
21645
21646
21647/* interface __MIDL_itf_d3d12_0000_0054 */
21648/* [local] */
21649
21650typedef
21651enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
21652 {
21653 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0,
21654 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
21655 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
21656 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 ) ,
21657 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21658 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21659 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21660 } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
21661
21662typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
21663 {
21664 D3D12_CLEAR_VALUE ClearValue;
21665 } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
21666
21667typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21668 {
21669 UINT AdditionalWidth;
21670 UINT AdditionalHeight;
21671 } D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21672
21673typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
21674 {
21675 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
21676 union
21677 {
21678 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
21679 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21680 } ;
21681 } D3D12_RENDER_PASS_BEGINNING_ACCESS;
21682
21683typedef
21684enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
21685 {
21686 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0,
21687 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
21688 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
21689 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 ) ,
21690 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS + 1 ) ,
21691 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER + 1 ) ,
21692 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV + 1 )
21693 } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
21694
21695typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
21696 {
21697 UINT SrcSubresource;
21698 UINT DstSubresource;
21699 UINT DstX;
21700 UINT DstY;
21701 D3D12_RECT SrcRect;
21702 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
21703
21704typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
21705 {
21706 ID3D12Resource *pSrcResource;
21707 ID3D12Resource *pDstResource;
21708 UINT SubresourceCount;
21709 _Field_size_full_(SubresourceCount) const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
21710 DXGI_FORMAT Format;
21711 D3D12_RESOLVE_MODE ResolveMode;
21712 BOOL PreserveResolveSource;
21713 } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
21714
21715typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
21716 {
21717 UINT AdditionalWidth;
21718 UINT AdditionalHeight;
21719 } D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
21720
21721typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
21722 {
21723 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
21724 union
21725 {
21726 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
21727 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
21728 } ;
21729 } D3D12_RENDER_PASS_ENDING_ACCESS;
21730
21731typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
21732 {
21733 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21734 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
21735 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
21736 } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
21737
21738typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
21739 {
21740 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
21741 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
21742 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
21743 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
21744 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
21745 } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
21746
21747typedef
21748enum D3D12_RENDER_PASS_FLAGS
21749 {
21750 D3D12_RENDER_PASS_FLAG_NONE = 0,
21751 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
21752 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
21753 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
21754 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
21755 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
21756 } D3D12_RENDER_PASS_FLAGS;
21757
21758DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )
21759
21760
21761extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_c_ifspec;
21762extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0054_v0_0_s_ifspec;
21763
21764#ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
21765#define __ID3D12MetaCommand_INTERFACE_DEFINED__
21766
21767/* interface ID3D12MetaCommand */
21768/* [unique][local][object][uuid] */
21769
21770
21771EXTERN_C const IID IID_ID3D12MetaCommand;
21772
21773#if defined(__cplusplus) && !defined(CINTERFACE)
21774
21775 MIDL_INTERFACE("DBB84C27-36CE-4FC9-B801-F048C46AC570")
21776 ID3D12MetaCommand : public ID3D12Pageable
21777 {
21778 public:
21779 virtual UINT64 STDMETHODCALLTYPE GetRequiredParameterResourceSize(
21780 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21781 _In_ UINT ParameterIndex) = 0;
21782
21783 };
21784
21785
21786#else /* C style interface */
21787
21788 typedef struct ID3D12MetaCommandVtbl
21789 {
21790 BEGIN_INTERFACE
21791
21792 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
21793 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
21794 ID3D12MetaCommand * This,
21795 REFIID riid,
21796 _COM_Outptr_ void **ppvObject);
21797
21798 DECLSPEC_XFGVIRT(IUnknown, AddRef)
21799 ULONG ( STDMETHODCALLTYPE *AddRef )(
21800 ID3D12MetaCommand * This);
21801
21802 DECLSPEC_XFGVIRT(IUnknown, Release)
21803 ULONG ( STDMETHODCALLTYPE *Release )(
21804 ID3D12MetaCommand * This);
21805
21806 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
21807 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
21808 ID3D12MetaCommand * This,
21809 _In_ REFGUID guid,
21810 _Inout_ UINT *pDataSize,
21811 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
21812
21813 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
21814 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
21815 ID3D12MetaCommand * This,
21816 _In_ REFGUID guid,
21817 _In_ UINT DataSize,
21818 _In_reads_bytes_opt_( DataSize ) const void *pData);
21819
21820 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
21821 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
21822 ID3D12MetaCommand * This,
21823 _In_ REFGUID guid,
21824 _In_opt_ const IUnknown *pData);
21825
21826 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
21827 HRESULT ( STDMETHODCALLTYPE *SetName )(
21828 ID3D12MetaCommand * This,
21829 _In_z_ LPCWSTR Name);
21830
21831 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
21832 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
21833 ID3D12MetaCommand * This,
21834 REFIID riid,
21835 _COM_Outptr_opt_ void **ppvDevice);
21836
21837 DECLSPEC_XFGVIRT(ID3D12MetaCommand, GetRequiredParameterResourceSize)
21838 UINT64 ( STDMETHODCALLTYPE *GetRequiredParameterResourceSize )(
21839 ID3D12MetaCommand * This,
21840 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
21841 _In_ UINT ParameterIndex);
21842
21843 END_INTERFACE
21844 } ID3D12MetaCommandVtbl;
21845
21846 interface ID3D12MetaCommand
21847 {
21848 CONST_VTBL struct ID3D12MetaCommandVtbl *lpVtbl;
21849 };
21850
21851
21852
21853#ifdef COBJMACROS
21854
21855
21856#define ID3D12MetaCommand_QueryInterface(This,riid,ppvObject) \
21857 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
21858
21859#define ID3D12MetaCommand_AddRef(This) \
21860 ( (This)->lpVtbl -> AddRef(This) )
21861
21862#define ID3D12MetaCommand_Release(This) \
21863 ( (This)->lpVtbl -> Release(This) )
21864
21865
21866#define ID3D12MetaCommand_GetPrivateData(This,guid,pDataSize,pData) \
21867 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
21868
21869#define ID3D12MetaCommand_SetPrivateData(This,guid,DataSize,pData) \
21870 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
21871
21872#define ID3D12MetaCommand_SetPrivateDataInterface(This,guid,pData) \
21873 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
21874
21875#define ID3D12MetaCommand_SetName(This,Name) \
21876 ( (This)->lpVtbl -> SetName(This,Name) )
21877
21878
21879#define ID3D12MetaCommand_GetDevice(This,riid,ppvDevice) \
21880 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
21881
21882
21883
21884#define ID3D12MetaCommand_GetRequiredParameterResourceSize(This,Stage,ParameterIndex) \
21885 ( (This)->lpVtbl -> GetRequiredParameterResourceSize(This,Stage,ParameterIndex) )
21886
21887#endif /* COBJMACROS */
21888
21889
21890#endif /* C style interface */
21891
21892
21893
21894
21895#endif /* __ID3D12MetaCommand_INTERFACE_DEFINED__ */
21896
21897
21898/* interface __MIDL_itf_d3d12_0000_0055 */
21899/* [local] */
21900
21901typedef struct D3D12_DISPATCH_RAYS_DESC
21902 {
21903 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
21904 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
21905 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
21906 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
21907 UINT Width;
21908 UINT Height;
21909 UINT Depth;
21910 } D3D12_DISPATCH_RAYS_DESC;
21911
21912typedef
21913enum D3D12_SET_WORK_GRAPH_FLAGS
21914 {
21915 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0,
21916 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1
21917 } D3D12_SET_WORK_GRAPH_FLAGS;
21918
21919DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )
21920typedef struct D3D12_SET_WORK_GRAPH_DESC
21921 {
21922 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21923 D3D12_SET_WORK_GRAPH_FLAGS Flags;
21924 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
21925 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
21926 } D3D12_SET_WORK_GRAPH_DESC;
21927
21928typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
21929 {
21930 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21931 } D3D12_SET_RAYTRACING_PIPELINE_DESC;
21932
21933typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
21934 {
21935 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
21936 } D3D12_SET_GENERIC_PIPELINE_DESC;
21937
21938typedef
21939enum D3D12_PROGRAM_TYPE
21940 {
21941 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
21942 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
21943 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
21944 } D3D12_PROGRAM_TYPE;
21945
21946typedef struct D3D12_SET_PROGRAM_DESC
21947 {
21948 D3D12_PROGRAM_TYPE Type;
21949 union
21950 {
21951 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
21952 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
21953 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
21954 } ;
21955 } D3D12_SET_PROGRAM_DESC;
21956
21957typedef
21958enum D3D12_DISPATCH_MODE
21959 {
21960 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0,
21961 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1,
21962 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2,
21963 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3
21964 } D3D12_DISPATCH_MODE;
21965
21966typedef struct D3D12_NODE_CPU_INPUT
21967 {
21968 UINT EntrypointIndex;
21969 UINT NumRecords;
21970 const void *pRecords;
21971 UINT64 RecordStrideInBytes;
21972 } D3D12_NODE_CPU_INPUT;
21973
21974typedef struct D3D12_NODE_GPU_INPUT
21975 {
21976 UINT EntrypointIndex;
21977 UINT NumRecords;
21978 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
21979 } D3D12_NODE_GPU_INPUT;
21980
21981typedef struct D3D12_MULTI_NODE_CPU_INPUT
21982 {
21983 UINT NumNodeInputs;
21984 const D3D12_NODE_CPU_INPUT *pNodeInputs;
21985 UINT64 NodeInputStrideInBytes;
21986 } D3D12_MULTI_NODE_CPU_INPUT;
21987
21988typedef struct D3D12_MULTI_NODE_GPU_INPUT
21989 {
21990 UINT NumNodeInputs;
21991 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs;
21992 } D3D12_MULTI_NODE_GPU_INPUT;
21993
21994typedef struct D3D12_DISPATCH_GRAPH_DESC
21995 {
21996 D3D12_DISPATCH_MODE Mode;
21997 union
21998 {
21999 D3D12_NODE_CPU_INPUT NodeCPUInput;
22000 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
22001 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
22002 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
22003 } ;
22004 } D3D12_DISPATCH_GRAPH_DESC;
22005
22006
22007
22008extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_c_ifspec;
22009extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0055_v0_0_s_ifspec;
22010
22011#ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22012#define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
22013
22014/* interface ID3D12GraphicsCommandList4 */
22015/* [unique][local][object][uuid] */
22016
22017
22018EXTERN_C const IID IID_ID3D12GraphicsCommandList4;
22019
22020#if defined(__cplusplus) && !defined(CINTERFACE)
22021
22022 MIDL_INTERFACE("8754318e-d3a9-4541-98cf-645b50dc4874")
22023 ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3
22024 {
22025 public:
22026 virtual void STDMETHODCALLTYPE BeginRenderPass(
22027 _In_ UINT NumRenderTargets,
22028 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22029 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22030 D3D12_RENDER_PASS_FLAGS Flags) = 0;
22031
22032 virtual void STDMETHODCALLTYPE EndRenderPass( void) = 0;
22033
22034 virtual void STDMETHODCALLTYPE InitializeMetaCommand(
22035 _In_ ID3D12MetaCommand *pMetaCommand,
22036 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22037 _In_ SIZE_T InitializationParametersDataSizeInBytes) = 0;
22038
22039 virtual void STDMETHODCALLTYPE ExecuteMetaCommand(
22040 _In_ ID3D12MetaCommand *pMetaCommand,
22041 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22042 _In_ SIZE_T ExecutionParametersDataSizeInBytes) = 0;
22043
22044 virtual void STDMETHODCALLTYPE BuildRaytracingAccelerationStructure(
22045 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22046 _In_ UINT NumPostbuildInfoDescs,
22047 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs) = 0;
22048
22049 virtual void STDMETHODCALLTYPE EmitRaytracingAccelerationStructurePostbuildInfo(
22050 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22051 _In_ UINT NumSourceAccelerationStructures,
22052 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData) = 0;
22053
22054 virtual void STDMETHODCALLTYPE CopyRaytracingAccelerationStructure(
22055 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22056 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22057 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode) = 0;
22058
22059 virtual void STDMETHODCALLTYPE SetPipelineState1(
22060 _In_ ID3D12StateObject *pStateObject) = 0;
22061
22062 virtual void STDMETHODCALLTYPE DispatchRays(
22063 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc) = 0;
22064
22065 };
22066
22067
22068#else /* C style interface */
22069
22070 typedef struct ID3D12GraphicsCommandList4Vtbl
22071 {
22072 BEGIN_INTERFACE
22073
22074 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
22075 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
22076 ID3D12GraphicsCommandList4 * This,
22077 REFIID riid,
22078 _COM_Outptr_ void **ppvObject);
22079
22080 DECLSPEC_XFGVIRT(IUnknown, AddRef)
22081 ULONG ( STDMETHODCALLTYPE *AddRef )(
22082 ID3D12GraphicsCommandList4 * This);
22083
22084 DECLSPEC_XFGVIRT(IUnknown, Release)
22085 ULONG ( STDMETHODCALLTYPE *Release )(
22086 ID3D12GraphicsCommandList4 * This);
22087
22088 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
22089 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
22090 ID3D12GraphicsCommandList4 * This,
22091 _In_ REFGUID guid,
22092 _Inout_ UINT *pDataSize,
22093 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
22094
22095 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
22096 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
22097 ID3D12GraphicsCommandList4 * This,
22098 _In_ REFGUID guid,
22099 _In_ UINT DataSize,
22100 _In_reads_bytes_opt_( DataSize ) const void *pData);
22101
22102 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
22103 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
22104 ID3D12GraphicsCommandList4 * This,
22105 _In_ REFGUID guid,
22106 _In_opt_ const IUnknown *pData);
22107
22108 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
22109 HRESULT ( STDMETHODCALLTYPE *SetName )(
22110 ID3D12GraphicsCommandList4 * This,
22111 _In_z_ LPCWSTR Name);
22112
22113 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
22114 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
22115 ID3D12GraphicsCommandList4 * This,
22116 REFIID riid,
22117 _COM_Outptr_opt_ void **ppvDevice);
22118
22119 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
22120 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
22121 ID3D12GraphicsCommandList4 * This);
22122
22123 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
22124 HRESULT ( STDMETHODCALLTYPE *Close )(
22125 ID3D12GraphicsCommandList4 * This);
22126
22127 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
22128 HRESULT ( STDMETHODCALLTYPE *Reset )(
22129 ID3D12GraphicsCommandList4 * This,
22130 _In_ ID3D12CommandAllocator *pAllocator,
22131 _In_opt_ ID3D12PipelineState *pInitialState);
22132
22133 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
22134 void ( STDMETHODCALLTYPE *ClearState )(
22135 ID3D12GraphicsCommandList4 * This,
22136 _In_opt_ ID3D12PipelineState *pPipelineState);
22137
22138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
22139 void ( STDMETHODCALLTYPE *DrawInstanced )(
22140 ID3D12GraphicsCommandList4 * This,
22141 _In_ UINT VertexCountPerInstance,
22142 _In_ UINT InstanceCount,
22143 _In_ UINT StartVertexLocation,
22144 _In_ UINT StartInstanceLocation);
22145
22146 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
22147 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
22148 ID3D12GraphicsCommandList4 * This,
22149 _In_ UINT IndexCountPerInstance,
22150 _In_ UINT InstanceCount,
22151 _In_ UINT StartIndexLocation,
22152 _In_ INT BaseVertexLocation,
22153 _In_ UINT StartInstanceLocation);
22154
22155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
22156 void ( STDMETHODCALLTYPE *Dispatch )(
22157 ID3D12GraphicsCommandList4 * This,
22158 _In_ UINT ThreadGroupCountX,
22159 _In_ UINT ThreadGroupCountY,
22160 _In_ UINT ThreadGroupCountZ);
22161
22162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
22163 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
22164 ID3D12GraphicsCommandList4 * This,
22165 _In_ ID3D12Resource *pDstBuffer,
22166 UINT64 DstOffset,
22167 _In_ ID3D12Resource *pSrcBuffer,
22168 UINT64 SrcOffset,
22169 UINT64 NumBytes);
22170
22171 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
22172 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
22173 ID3D12GraphicsCommandList4 * This,
22174 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
22175 UINT DstX,
22176 UINT DstY,
22177 UINT DstZ,
22178 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
22179 _In_opt_ const D3D12_BOX *pSrcBox);
22180
22181 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
22182 void ( STDMETHODCALLTYPE *CopyResource )(
22183 ID3D12GraphicsCommandList4 * This,
22184 _In_ ID3D12Resource *pDstResource,
22185 _In_ ID3D12Resource *pSrcResource);
22186
22187 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
22188 void ( STDMETHODCALLTYPE *CopyTiles )(
22189 ID3D12GraphicsCommandList4 * This,
22190 _In_ ID3D12Resource *pTiledResource,
22191 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
22192 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
22193 _In_ ID3D12Resource *pBuffer,
22194 UINT64 BufferStartOffsetInBytes,
22195 D3D12_TILE_COPY_FLAGS Flags);
22196
22197 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
22198 void ( STDMETHODCALLTYPE *ResolveSubresource )(
22199 ID3D12GraphicsCommandList4 * This,
22200 _In_ ID3D12Resource *pDstResource,
22201 _In_ UINT DstSubresource,
22202 _In_ ID3D12Resource *pSrcResource,
22203 _In_ UINT SrcSubresource,
22204 _In_ DXGI_FORMAT Format);
22205
22206 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
22207 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
22208 ID3D12GraphicsCommandList4 * This,
22209 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
22210
22211 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
22212 void ( STDMETHODCALLTYPE *RSSetViewports )(
22213 ID3D12GraphicsCommandList4 * This,
22214 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
22215 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
22216
22217 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
22218 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
22219 ID3D12GraphicsCommandList4 * This,
22220 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
22221 _In_reads_( NumRects) const D3D12_RECT *pRects);
22222
22223 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
22224 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
22225 ID3D12GraphicsCommandList4 * This,
22226 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
22227
22228 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
22229 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
22230 ID3D12GraphicsCommandList4 * This,
22231 _In_ UINT StencilRef);
22232
22233 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
22234 void ( STDMETHODCALLTYPE *SetPipelineState )(
22235 ID3D12GraphicsCommandList4 * This,
22236 _In_ ID3D12PipelineState *pPipelineState);
22237
22238 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
22239 void ( STDMETHODCALLTYPE *ResourceBarrier )(
22240 ID3D12GraphicsCommandList4 * This,
22241 _In_ UINT NumBarriers,
22242 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
22243
22244 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
22245 void ( STDMETHODCALLTYPE *ExecuteBundle )(
22246 ID3D12GraphicsCommandList4 * This,
22247 _In_ ID3D12GraphicsCommandList *pCommandList);
22248
22249 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
22250 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
22251 ID3D12GraphicsCommandList4 * This,
22252 _In_ UINT NumDescriptorHeaps,
22253 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
22254
22255 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
22256 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
22257 ID3D12GraphicsCommandList4 * This,
22258 _In_opt_ ID3D12RootSignature *pRootSignature);
22259
22260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
22261 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
22262 ID3D12GraphicsCommandList4 * This,
22263 _In_opt_ ID3D12RootSignature *pRootSignature);
22264
22265 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
22266 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
22267 ID3D12GraphicsCommandList4 * This,
22268 _In_ UINT RootParameterIndex,
22269 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22270
22271 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
22272 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
22273 ID3D12GraphicsCommandList4 * This,
22274 _In_ UINT RootParameterIndex,
22275 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
22276
22277 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
22278 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
22279 ID3D12GraphicsCommandList4 * This,
22280 _In_ UINT RootParameterIndex,
22281 _In_ UINT SrcData,
22282 _In_ UINT DestOffsetIn32BitValues);
22283
22284 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
22285 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
22286 ID3D12GraphicsCommandList4 * This,
22287 _In_ UINT RootParameterIndex,
22288 _In_ UINT SrcData,
22289 _In_ UINT DestOffsetIn32BitValues);
22290
22291 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
22292 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
22293 ID3D12GraphicsCommandList4 * This,
22294 _In_ UINT RootParameterIndex,
22295 _In_ UINT Num32BitValuesToSet,
22296 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22297 _In_ UINT DestOffsetIn32BitValues);
22298
22299 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
22300 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
22301 ID3D12GraphicsCommandList4 * This,
22302 _In_ UINT RootParameterIndex,
22303 _In_ UINT Num32BitValuesToSet,
22304 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
22305 _In_ UINT DestOffsetIn32BitValues);
22306
22307 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
22308 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
22309 ID3D12GraphicsCommandList4 * This,
22310 _In_ UINT RootParameterIndex,
22311 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22312
22313 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
22314 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
22315 ID3D12GraphicsCommandList4 * This,
22316 _In_ UINT RootParameterIndex,
22317 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22318
22319 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
22320 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
22321 ID3D12GraphicsCommandList4 * This,
22322 _In_ UINT RootParameterIndex,
22323 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22324
22325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
22326 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
22327 ID3D12GraphicsCommandList4 * This,
22328 _In_ UINT RootParameterIndex,
22329 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22330
22331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
22332 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
22333 ID3D12GraphicsCommandList4 * This,
22334 _In_ UINT RootParameterIndex,
22335 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22336
22337 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
22338 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
22339 ID3D12GraphicsCommandList4 * This,
22340 _In_ UINT RootParameterIndex,
22341 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
22342
22343 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
22344 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
22345 ID3D12GraphicsCommandList4 * This,
22346 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
22347
22348 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
22349 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
22350 ID3D12GraphicsCommandList4 * This,
22351 _In_ UINT StartSlot,
22352 _In_ UINT NumViews,
22353 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
22354
22355 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
22356 void ( STDMETHODCALLTYPE *SOSetTargets )(
22357 ID3D12GraphicsCommandList4 * This,
22358 _In_ UINT StartSlot,
22359 _In_ UINT NumViews,
22360 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
22361
22362 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
22363 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
22364 ID3D12GraphicsCommandList4 * This,
22365 _In_ UINT NumRenderTargetDescriptors,
22366 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
22367 _In_ BOOL RTsSingleHandleToDescriptorRange,
22368 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
22369
22370 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
22371 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
22372 ID3D12GraphicsCommandList4 * This,
22373 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
22374 _In_ D3D12_CLEAR_FLAGS ClearFlags,
22375 _In_ FLOAT Depth,
22376 _In_ UINT8 Stencil,
22377 _In_ UINT NumRects,
22378 _In_reads_(NumRects) const D3D12_RECT *pRects);
22379
22380 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
22381 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
22382 ID3D12GraphicsCommandList4 * This,
22383 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
22384 _In_ const FLOAT ColorRGBA[ 4 ],
22385 _In_ UINT NumRects,
22386 _In_reads_(NumRects) const D3D12_RECT *pRects);
22387
22388 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
22389 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
22390 ID3D12GraphicsCommandList4 * This,
22391 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22392 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22393 _In_ ID3D12Resource *pResource,
22394 _In_ const UINT Values[ 4 ],
22395 _In_ UINT NumRects,
22396 _In_reads_(NumRects) const D3D12_RECT *pRects);
22397
22398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
22399 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
22400 ID3D12GraphicsCommandList4 * This,
22401 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
22402 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
22403 _In_ ID3D12Resource *pResource,
22404 _In_ const FLOAT Values[ 4 ],
22405 _In_ UINT NumRects,
22406 _In_reads_(NumRects) const D3D12_RECT *pRects);
22407
22408 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
22409 void ( STDMETHODCALLTYPE *DiscardResource )(
22410 ID3D12GraphicsCommandList4 * This,
22411 _In_ ID3D12Resource *pResource,
22412 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
22413
22414 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
22415 void ( STDMETHODCALLTYPE *BeginQuery )(
22416 ID3D12GraphicsCommandList4 * This,
22417 _In_ ID3D12QueryHeap *pQueryHeap,
22418 _In_ D3D12_QUERY_TYPE Type,
22419 _In_ UINT Index);
22420
22421 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
22422 void ( STDMETHODCALLTYPE *EndQuery )(
22423 ID3D12GraphicsCommandList4 * This,
22424 _In_ ID3D12QueryHeap *pQueryHeap,
22425 _In_ D3D12_QUERY_TYPE Type,
22426 _In_ UINT Index);
22427
22428 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
22429 void ( STDMETHODCALLTYPE *ResolveQueryData )(
22430 ID3D12GraphicsCommandList4 * This,
22431 _In_ ID3D12QueryHeap *pQueryHeap,
22432 _In_ D3D12_QUERY_TYPE Type,
22433 _In_ UINT StartIndex,
22434 _In_ UINT NumQueries,
22435 _In_ ID3D12Resource *pDestinationBuffer,
22436 _In_ UINT64 AlignedDestinationBufferOffset);
22437
22438 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
22439 void ( STDMETHODCALLTYPE *SetPredication )(
22440 ID3D12GraphicsCommandList4 * This,
22441 _In_opt_ ID3D12Resource *pBuffer,
22442 _In_ UINT64 AlignedBufferOffset,
22443 _In_ D3D12_PREDICATION_OP Operation);
22444
22445 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
22446 void ( STDMETHODCALLTYPE *SetMarker )(
22447 ID3D12GraphicsCommandList4 * This,
22448 UINT Metadata,
22449 _In_reads_bytes_opt_(Size) const void *pData,
22450 UINT Size);
22451
22452 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
22453 void ( STDMETHODCALLTYPE *BeginEvent )(
22454 ID3D12GraphicsCommandList4 * This,
22455 UINT Metadata,
22456 _In_reads_bytes_opt_(Size) const void *pData,
22457 UINT Size);
22458
22459 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
22460 void ( STDMETHODCALLTYPE *EndEvent )(
22461 ID3D12GraphicsCommandList4 * This);
22462
22463 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
22464 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
22465 ID3D12GraphicsCommandList4 * This,
22466 _In_ ID3D12CommandSignature *pCommandSignature,
22467 _In_ UINT MaxCommandCount,
22468 _In_ ID3D12Resource *pArgumentBuffer,
22469 _In_ UINT64 ArgumentBufferOffset,
22470 _In_opt_ ID3D12Resource *pCountBuffer,
22471 _In_ UINT64 CountBufferOffset);
22472
22473 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
22474 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
22475 ID3D12GraphicsCommandList4 * This,
22476 _In_ ID3D12Resource *pDstBuffer,
22477 UINT64 DstOffset,
22478 _In_ ID3D12Resource *pSrcBuffer,
22479 UINT64 SrcOffset,
22480 UINT Dependencies,
22481 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22482 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22483
22484 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
22485 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
22486 ID3D12GraphicsCommandList4 * This,
22487 _In_ ID3D12Resource *pDstBuffer,
22488 UINT64 DstOffset,
22489 _In_ ID3D12Resource *pSrcBuffer,
22490 UINT64 SrcOffset,
22491 UINT Dependencies,
22492 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
22493 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
22494
22495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
22496 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
22497 ID3D12GraphicsCommandList4 * This,
22498 _In_ FLOAT Min,
22499 _In_ FLOAT Max);
22500
22501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
22502 void ( STDMETHODCALLTYPE *SetSamplePositions )(
22503 ID3D12GraphicsCommandList4 * This,
22504 _In_ UINT NumSamplesPerPixel,
22505 _In_ UINT NumPixels,
22506 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
22507
22508 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
22509 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
22510 ID3D12GraphicsCommandList4 * This,
22511 _In_ ID3D12Resource *pDstResource,
22512 _In_ UINT DstSubresource,
22513 _In_ UINT DstX,
22514 _In_ UINT DstY,
22515 _In_ ID3D12Resource *pSrcResource,
22516 _In_ UINT SrcSubresource,
22517 _In_opt_ D3D12_RECT *pSrcRect,
22518 _In_ DXGI_FORMAT Format,
22519 _In_ D3D12_RESOLVE_MODE ResolveMode);
22520
22521 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
22522 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
22523 ID3D12GraphicsCommandList4 * This,
22524 _In_ UINT Mask);
22525
22526 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
22527 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
22528 ID3D12GraphicsCommandList4 * This,
22529 UINT Count,
22530 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
22531 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
22532
22533 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
22534 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
22535 ID3D12GraphicsCommandList4 * This,
22536 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
22537
22538 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
22539 void ( STDMETHODCALLTYPE *BeginRenderPass )(
22540 ID3D12GraphicsCommandList4 * This,
22541 _In_ UINT NumRenderTargets,
22542 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
22543 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
22544 D3D12_RENDER_PASS_FLAGS Flags);
22545
22546 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
22547 void ( STDMETHODCALLTYPE *EndRenderPass )(
22548 ID3D12GraphicsCommandList4 * This);
22549
22550 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
22551 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
22552 ID3D12GraphicsCommandList4 * This,
22553 _In_ ID3D12MetaCommand *pMetaCommand,
22554 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
22555 _In_ SIZE_T InitializationParametersDataSizeInBytes);
22556
22557 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
22558 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
22559 ID3D12GraphicsCommandList4 * This,
22560 _In_ ID3D12MetaCommand *pMetaCommand,
22561 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
22562 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
22563
22564 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
22565 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
22566 ID3D12GraphicsCommandList4 * This,
22567 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
22568 _In_ UINT NumPostbuildInfoDescs,
22569 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
22570
22571 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
22572 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
22573 ID3D12GraphicsCommandList4 * This,
22574 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
22575 _In_ UINT NumSourceAccelerationStructures,
22576 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
22577
22578 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
22579 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
22580 ID3D12GraphicsCommandList4 * This,
22581 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
22582 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
22583 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
22584
22585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
22586 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
22587 ID3D12GraphicsCommandList4 * This,
22588 _In_ ID3D12StateObject *pStateObject);
22589
22590 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
22591 void ( STDMETHODCALLTYPE *DispatchRays )(
22592 ID3D12GraphicsCommandList4 * This,
22593 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
22594
22595 END_INTERFACE
22596 } ID3D12GraphicsCommandList4Vtbl;
22597
22598 interface ID3D12GraphicsCommandList4
22599 {
22600 CONST_VTBL struct ID3D12GraphicsCommandList4Vtbl *lpVtbl;
22601 };
22602
22603
22604
22605#ifdef COBJMACROS
22606
22607
22608#define ID3D12GraphicsCommandList4_QueryInterface(This,riid,ppvObject) \
22609 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
22610
22611#define ID3D12GraphicsCommandList4_AddRef(This) \
22612 ( (This)->lpVtbl -> AddRef(This) )
22613
22614#define ID3D12GraphicsCommandList4_Release(This) \
22615 ( (This)->lpVtbl -> Release(This) )
22616
22617
22618#define ID3D12GraphicsCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
22619 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
22620
22621#define ID3D12GraphicsCommandList4_SetPrivateData(This,guid,DataSize,pData) \
22622 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
22623
22624#define ID3D12GraphicsCommandList4_SetPrivateDataInterface(This,guid,pData) \
22625 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
22626
22627#define ID3D12GraphicsCommandList4_SetName(This,Name) \
22628 ( (This)->lpVtbl -> SetName(This,Name) )
22629
22630
22631#define ID3D12GraphicsCommandList4_GetDevice(This,riid,ppvDevice) \
22632 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
22633
22634
22635#define ID3D12GraphicsCommandList4_GetType(This) \
22636 ( (This)->lpVtbl -> GetType(This) )
22637
22638
22639#define ID3D12GraphicsCommandList4_Close(This) \
22640 ( (This)->lpVtbl -> Close(This) )
22641
22642#define ID3D12GraphicsCommandList4_Reset(This,pAllocator,pInitialState) \
22643 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
22644
22645#define ID3D12GraphicsCommandList4_ClearState(This,pPipelineState) \
22646 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
22647
22648#define ID3D12GraphicsCommandList4_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
22649 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
22650
22651#define ID3D12GraphicsCommandList4_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
22652 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
22653
22654#define ID3D12GraphicsCommandList4_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
22655 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
22656
22657#define ID3D12GraphicsCommandList4_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
22658 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
22659
22660#define ID3D12GraphicsCommandList4_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
22661 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
22662
22663#define ID3D12GraphicsCommandList4_CopyResource(This,pDstResource,pSrcResource) \
22664 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
22665
22666#define ID3D12GraphicsCommandList4_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
22667 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
22668
22669#define ID3D12GraphicsCommandList4_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
22670 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
22671
22672#define ID3D12GraphicsCommandList4_IASetPrimitiveTopology(This,PrimitiveTopology) \
22673 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
22674
22675#define ID3D12GraphicsCommandList4_RSSetViewports(This,NumViewports,pViewports) \
22676 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
22677
22678#define ID3D12GraphicsCommandList4_RSSetScissorRects(This,NumRects,pRects) \
22679 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
22680
22681#define ID3D12GraphicsCommandList4_OMSetBlendFactor(This,BlendFactor) \
22682 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
22683
22684#define ID3D12GraphicsCommandList4_OMSetStencilRef(This,StencilRef) \
22685 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
22686
22687#define ID3D12GraphicsCommandList4_SetPipelineState(This,pPipelineState) \
22688 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
22689
22690#define ID3D12GraphicsCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
22691 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
22692
22693#define ID3D12GraphicsCommandList4_ExecuteBundle(This,pCommandList) \
22694 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
22695
22696#define ID3D12GraphicsCommandList4_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
22697 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
22698
22699#define ID3D12GraphicsCommandList4_SetComputeRootSignature(This,pRootSignature) \
22700 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
22701
22702#define ID3D12GraphicsCommandList4_SetGraphicsRootSignature(This,pRootSignature) \
22703 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
22704
22705#define ID3D12GraphicsCommandList4_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22706 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22707
22708#define ID3D12GraphicsCommandList4_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
22709 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
22710
22711#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22712 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22713
22714#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
22715 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
22716
22717#define ID3D12GraphicsCommandList4_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22718 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22719
22720#define ID3D12GraphicsCommandList4_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
22721 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
22722
22723#define ID3D12GraphicsCommandList4_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22724 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22725
22726#define ID3D12GraphicsCommandList4_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
22727 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
22728
22729#define ID3D12GraphicsCommandList4_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22730 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22731
22732#define ID3D12GraphicsCommandList4_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
22733 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
22734
22735#define ID3D12GraphicsCommandList4_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22736 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22737
22738#define ID3D12GraphicsCommandList4_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
22739 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
22740
22741#define ID3D12GraphicsCommandList4_IASetIndexBuffer(This,pView) \
22742 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
22743
22744#define ID3D12GraphicsCommandList4_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
22745 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
22746
22747#define ID3D12GraphicsCommandList4_SOSetTargets(This,StartSlot,NumViews,pViews) \
22748 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
22749
22750#define ID3D12GraphicsCommandList4_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
22751 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
22752
22753#define ID3D12GraphicsCommandList4_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
22754 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
22755
22756#define ID3D12GraphicsCommandList4_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
22757 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
22758
22759#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22760 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22761
22762#define ID3D12GraphicsCommandList4_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
22763 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
22764
22765#define ID3D12GraphicsCommandList4_DiscardResource(This,pResource,pRegion) \
22766 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
22767
22768#define ID3D12GraphicsCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
22769 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
22770
22771#define ID3D12GraphicsCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
22772 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
22773
22774#define ID3D12GraphicsCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
22775 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
22776
22777#define ID3D12GraphicsCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
22778 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
22779
22780#define ID3D12GraphicsCommandList4_SetMarker(This,Metadata,pData,Size) \
22781 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
22782
22783#define ID3D12GraphicsCommandList4_BeginEvent(This,Metadata,pData,Size) \
22784 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
22785
22786#define ID3D12GraphicsCommandList4_EndEvent(This) \
22787 ( (This)->lpVtbl -> EndEvent(This) )
22788
22789#define ID3D12GraphicsCommandList4_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
22790 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
22791
22792
22793#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22794 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22795
22796#define ID3D12GraphicsCommandList4_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
22797 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
22798
22799#define ID3D12GraphicsCommandList4_OMSetDepthBounds(This,Min,Max) \
22800 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
22801
22802#define ID3D12GraphicsCommandList4_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
22803 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
22804
22805#define ID3D12GraphicsCommandList4_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
22806 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
22807
22808#define ID3D12GraphicsCommandList4_SetViewInstanceMask(This,Mask) \
22809 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
22810
22811
22812#define ID3D12GraphicsCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
22813 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
22814
22815
22816#define ID3D12GraphicsCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
22817 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
22818
22819
22820#define ID3D12GraphicsCommandList4_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
22821 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
22822
22823#define ID3D12GraphicsCommandList4_EndRenderPass(This) \
22824 ( (This)->lpVtbl -> EndRenderPass(This) )
22825
22826#define ID3D12GraphicsCommandList4_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
22827 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
22828
22829#define ID3D12GraphicsCommandList4_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
22830 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
22831
22832#define ID3D12GraphicsCommandList4_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
22833 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
22834
22835#define ID3D12GraphicsCommandList4_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
22836 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
22837
22838#define ID3D12GraphicsCommandList4_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
22839 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
22840
22841#define ID3D12GraphicsCommandList4_SetPipelineState1(This,pStateObject) \
22842 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
22843
22844#define ID3D12GraphicsCommandList4_DispatchRays(This,pDesc) \
22845 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
22846
22847#endif /* COBJMACROS */
22848
22849
22850#endif /* C style interface */
22851
22852
22853
22854
22855#endif /* __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__ */
22856
22857
22858/* interface __MIDL_itf_d3d12_0000_0056 */
22859/* [local] */
22860
22861typedef
22862enum D3D12_SHADER_CACHE_MODE
22863 {
22864 D3D12_SHADER_CACHE_MODE_MEMORY = 0,
22865 D3D12_SHADER_CACHE_MODE_DISK = ( D3D12_SHADER_CACHE_MODE_MEMORY + 1 )
22866 } D3D12_SHADER_CACHE_MODE;
22867
22868typedef
22869enum D3D12_SHADER_CACHE_FLAGS
22870 {
22871 D3D12_SHADER_CACHE_FLAG_NONE = 0,
22872 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
22873 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2
22874 } D3D12_SHADER_CACHE_FLAGS;
22875
22876DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )
22877typedef struct D3D12_SHADER_CACHE_SESSION_DESC
22878 {
22879 GUID Identifier;
22880 D3D12_SHADER_CACHE_MODE Mode;
22881 D3D12_SHADER_CACHE_FLAGS Flags;
22882 UINT MaximumInMemoryCacheSizeBytes;
22883 UINT MaximumInMemoryCacheEntries;
22884 UINT MaximumValueFileSizeBytes;
22885 UINT64 Version;
22886 } D3D12_SHADER_CACHE_SESSION_DESC;
22887
22888typedef
22889enum D3D12_BARRIER_LAYOUT
22890 {
22891 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
22892 D3D12_BARRIER_LAYOUT_COMMON = 0,
22893 D3D12_BARRIER_LAYOUT_PRESENT = 0,
22894 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
22895 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
22896 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
22897 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
22898 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
22899 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
22900 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
22901 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
22902 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
22903 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
22904 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
22905 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
22906 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
22907 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
22908 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
22909 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
22910 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
22911 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
22912 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
22913 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
22914 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
22915 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
22916 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
22917 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
22918 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
22919 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
22920 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
22921 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
22922 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
22923 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31
22924 } D3D12_BARRIER_LAYOUT;
22925
22926typedef
22927enum D3D12_BARRIER_SYNC
22928 {
22929 D3D12_BARRIER_SYNC_NONE = 0,
22930 D3D12_BARRIER_SYNC_ALL = 0x1,
22931 D3D12_BARRIER_SYNC_DRAW = 0x2,
22932 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
22933 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
22934 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
22935 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
22936 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
22937 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
22938 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
22939 D3D12_BARRIER_SYNC_COPY = 0x200,
22940 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
22941 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
22942 D3D12_BARRIER_SYNC_PREDICATION = 0x800,
22943 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
22944 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
22945 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
22946 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
22947 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
22948 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
22949 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
22950 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
22951 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
22952 D3D12_BARRIER_SYNC_SPLIT = 0x80000000
22953 } D3D12_BARRIER_SYNC;
22954
22955DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )
22956typedef
22957enum D3D12_BARRIER_ACCESS
22958 {
22959 D3D12_BARRIER_ACCESS_COMMON = 0,
22960 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
22961 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
22962 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
22963 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
22964 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
22965 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
22966 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
22967 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
22968 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
22969 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
22970 D3D12_BARRIER_ACCESS_PREDICATION = 0x200,
22971 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
22972 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
22973 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
22974 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
22975 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
22976 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
22977 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
22978 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
22979 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
22980 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
22981 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
22982 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
22983 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
22984 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000
22985 } D3D12_BARRIER_ACCESS;
22986
22987DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )
22988typedef
22989enum D3D12_BARRIER_TYPE
22990 {
22991 D3D12_BARRIER_TYPE_GLOBAL = 0,
22992 D3D12_BARRIER_TYPE_TEXTURE = ( D3D12_BARRIER_TYPE_GLOBAL + 1 ) ,
22993 D3D12_BARRIER_TYPE_BUFFER = ( D3D12_BARRIER_TYPE_TEXTURE + 1 )
22994 } D3D12_BARRIER_TYPE;
22995
22996typedef
22997enum D3D12_TEXTURE_BARRIER_FLAGS
22998 {
22999 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0,
23000 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1
23001 } D3D12_TEXTURE_BARRIER_FLAGS;
23002
23003DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )
23004typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
23005 {
23006 UINT IndexOrFirstMipLevel;
23007 UINT NumMipLevels;
23008 UINT FirstArraySlice;
23009 UINT NumArraySlices;
23010 UINT FirstPlane;
23011 UINT NumPlanes;
23012 } D3D12_BARRIER_SUBRESOURCE_RANGE;
23013
23014typedef struct D3D12_GLOBAL_BARRIER
23015 {
23016 D3D12_BARRIER_SYNC SyncBefore;
23017 D3D12_BARRIER_SYNC SyncAfter;
23018 D3D12_BARRIER_ACCESS AccessBefore;
23019 D3D12_BARRIER_ACCESS AccessAfter;
23020 } D3D12_GLOBAL_BARRIER;
23021
23022typedef struct D3D12_TEXTURE_BARRIER
23023 {
23024 D3D12_BARRIER_SYNC SyncBefore;
23025 D3D12_BARRIER_SYNC SyncAfter;
23026 D3D12_BARRIER_ACCESS AccessBefore;
23027 D3D12_BARRIER_ACCESS AccessAfter;
23028 D3D12_BARRIER_LAYOUT LayoutBefore;
23029 D3D12_BARRIER_LAYOUT LayoutAfter;
23030 _In_ ID3D12Resource *pResource;
23031 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
23032 D3D12_TEXTURE_BARRIER_FLAGS Flags;
23033 } D3D12_TEXTURE_BARRIER;
23034
23035typedef struct D3D12_BUFFER_BARRIER
23036 {
23037 D3D12_BARRIER_SYNC SyncBefore;
23038 D3D12_BARRIER_SYNC SyncAfter;
23039 D3D12_BARRIER_ACCESS AccessBefore;
23040 D3D12_BARRIER_ACCESS AccessAfter;
23041 _In_ ID3D12Resource *pResource;
23042 UINT64 Offset;
23043 UINT64 Size;
23044 } D3D12_BUFFER_BARRIER;
23045
23046typedef struct D3D12_BARRIER_GROUP
23047 {
23048 D3D12_BARRIER_TYPE Type;
23049 UINT32 NumBarriers;
23050 union
23051 {
23052 _In_reads_(NumBarriers) const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
23053 _In_reads_(NumBarriers) const D3D12_TEXTURE_BARRIER *pTextureBarriers;
23054 _In_reads_(NumBarriers) const D3D12_BUFFER_BARRIER *pBufferBarriers;
23055 } ;
23056 } D3D12_BARRIER_GROUP;
23057
23058
23059
23060extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_c_ifspec;
23061extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0056_v0_0_s_ifspec;
23062
23063#ifndef __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23064#define __ID3D12ShaderCacheSession_INTERFACE_DEFINED__
23065
23066/* interface ID3D12ShaderCacheSession */
23067/* [unique][local][object][uuid] */
23068
23069
23070EXTERN_C const IID IID_ID3D12ShaderCacheSession;
23071
23072#if defined(__cplusplus) && !defined(CINTERFACE)
23073
23074 MIDL_INTERFACE("28e2495d-0f64-4ae4-a6ec-129255dc49a8")
23075 ID3D12ShaderCacheSession : public ID3D12DeviceChild
23076 {
23077 public:
23078 virtual HRESULT STDMETHODCALLTYPE FindValue(
23079 /* [annotation][in] */
23080 _In_reads_bytes_(KeySize) const void *pKey,
23081 UINT KeySize,
23082 /* [annotation][out] */
23083 _Out_writes_bytes_(*pValueSize) void *pValue,
23084 _Inout_ UINT *pValueSize) = 0;
23085
23086 virtual HRESULT STDMETHODCALLTYPE StoreValue(
23087 /* [annotation][in] */
23088 _In_reads_bytes_(KeySize) const void *pKey,
23089 UINT KeySize,
23090 /* [annotation][in] */
23091 _In_reads_bytes_(ValueSize) const void *pValue,
23092 UINT ValueSize) = 0;
23093
23094 virtual void STDMETHODCALLTYPE SetDeleteOnDestroy( void) = 0;
23095
23096#if defined(_MSC_VER) || !defined(_WIN32)
23097 virtual D3D12_SHADER_CACHE_SESSION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
23098#else
23099 virtual D3D12_SHADER_CACHE_SESSION_DESC *STDMETHODCALLTYPE GetDesc(
23100 D3D12_SHADER_CACHE_SESSION_DESC * RetVal) = 0;
23101#endif
23102
23103 };
23104
23105
23106#else /* C style interface */
23107
23108 typedef struct ID3D12ShaderCacheSessionVtbl
23109 {
23110 BEGIN_INTERFACE
23111
23112 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23113 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23114 ID3D12ShaderCacheSession * This,
23115 REFIID riid,
23116 _COM_Outptr_ void **ppvObject);
23117
23118 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23119 ULONG ( STDMETHODCALLTYPE *AddRef )(
23120 ID3D12ShaderCacheSession * This);
23121
23122 DECLSPEC_XFGVIRT(IUnknown, Release)
23123 ULONG ( STDMETHODCALLTYPE *Release )(
23124 ID3D12ShaderCacheSession * This);
23125
23126 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23127 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23128 ID3D12ShaderCacheSession * This,
23129 _In_ REFGUID guid,
23130 _Inout_ UINT *pDataSize,
23131 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23132
23133 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23134 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23135 ID3D12ShaderCacheSession * This,
23136 _In_ REFGUID guid,
23137 _In_ UINT DataSize,
23138 _In_reads_bytes_opt_( DataSize ) const void *pData);
23139
23140 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23141 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23142 ID3D12ShaderCacheSession * This,
23143 _In_ REFGUID guid,
23144 _In_opt_ const IUnknown *pData);
23145
23146 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23147 HRESULT ( STDMETHODCALLTYPE *SetName )(
23148 ID3D12ShaderCacheSession * This,
23149 _In_z_ LPCWSTR Name);
23150
23151 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
23152 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
23153 ID3D12ShaderCacheSession * This,
23154 REFIID riid,
23155 _COM_Outptr_opt_ void **ppvDevice);
23156
23157 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, FindValue)
23158 HRESULT ( STDMETHODCALLTYPE *FindValue )(
23159 ID3D12ShaderCacheSession * This,
23160 /* [annotation][in] */
23161 _In_reads_bytes_(KeySize) const void *pKey,
23162 UINT KeySize,
23163 /* [annotation][out] */
23164 _Out_writes_bytes_(*pValueSize) void *pValue,
23165 _Inout_ UINT *pValueSize);
23166
23167 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, StoreValue)
23168 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
23169 ID3D12ShaderCacheSession * This,
23170 /* [annotation][in] */
23171 _In_reads_bytes_(KeySize) const void *pKey,
23172 UINT KeySize,
23173 /* [annotation][in] */
23174 _In_reads_bytes_(ValueSize) const void *pValue,
23175 UINT ValueSize);
23176
23177 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, SetDeleteOnDestroy)
23178 void ( STDMETHODCALLTYPE *SetDeleteOnDestroy )(
23179 ID3D12ShaderCacheSession * This);
23180
23181 DECLSPEC_XFGVIRT(ID3D12ShaderCacheSession, GetDesc)
23182#if !defined(_WIN32)
23183 D3D12_SHADER_CACHE_SESSION_DESC ( STDMETHODCALLTYPE *GetDesc )(
23184 ID3D12ShaderCacheSession * This);
23185
23186#else
23187 D3D12_SHADER_CACHE_SESSION_DESC *( STDMETHODCALLTYPE *GetDesc )(
23188 ID3D12ShaderCacheSession * This,
23189 D3D12_SHADER_CACHE_SESSION_DESC * RetVal);
23190
23191#endif
23192
23193 END_INTERFACE
23194 } ID3D12ShaderCacheSessionVtbl;
23195
23196 interface ID3D12ShaderCacheSession
23197 {
23198 CONST_VTBL struct ID3D12ShaderCacheSessionVtbl *lpVtbl;
23199 };
23200
23201
23202
23203#ifdef COBJMACROS
23204
23205
23206#define ID3D12ShaderCacheSession_QueryInterface(This,riid,ppvObject) \
23207 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23208
23209#define ID3D12ShaderCacheSession_AddRef(This) \
23210 ( (This)->lpVtbl -> AddRef(This) )
23211
23212#define ID3D12ShaderCacheSession_Release(This) \
23213 ( (This)->lpVtbl -> Release(This) )
23214
23215
23216#define ID3D12ShaderCacheSession_GetPrivateData(This,guid,pDataSize,pData) \
23217 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23218
23219#define ID3D12ShaderCacheSession_SetPrivateData(This,guid,DataSize,pData) \
23220 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23221
23222#define ID3D12ShaderCacheSession_SetPrivateDataInterface(This,guid,pData) \
23223 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23224
23225#define ID3D12ShaderCacheSession_SetName(This,Name) \
23226 ( (This)->lpVtbl -> SetName(This,Name) )
23227
23228
23229#define ID3D12ShaderCacheSession_GetDevice(This,riid,ppvDevice) \
23230 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
23231
23232
23233#define ID3D12ShaderCacheSession_FindValue(This,pKey,KeySize,pValue,pValueSize) \
23234 ( (This)->lpVtbl -> FindValue(This,pKey,KeySize,pValue,pValueSize) )
23235
23236#define ID3D12ShaderCacheSession_StoreValue(This,pKey,KeySize,pValue,ValueSize) \
23237 ( (This)->lpVtbl -> StoreValue(This,pKey,KeySize,pValue,ValueSize) )
23238
23239#define ID3D12ShaderCacheSession_SetDeleteOnDestroy(This) \
23240 ( (This)->lpVtbl -> SetDeleteOnDestroy(This) )
23241#if !defined(_WIN32)
23242
23243#define ID3D12ShaderCacheSession_GetDesc(This) \
23244 ( (This)->lpVtbl -> GetDesc(This) )
23245#else
23246#define ID3D12ShaderCacheSession_GetDesc(This,RetVal) \
23247 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
23248#endif
23249
23250#endif /* COBJMACROS */
23251
23252
23253#endif /* C style interface */
23254
23255
23256
23257
23258#endif /* __ID3D12ShaderCacheSession_INTERFACE_DEFINED__ */
23259
23260
23261/* interface __MIDL_itf_d3d12_0000_0057 */
23262/* [local] */
23263
23264typedef
23265enum D3D12_SHADER_CACHE_KIND_FLAGS
23266 {
23267 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
23268 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
23269 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
23270 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8
23271 } D3D12_SHADER_CACHE_KIND_FLAGS;
23272
23273DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )
23274typedef
23275enum D3D12_SHADER_CACHE_CONTROL_FLAGS
23276 {
23277 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
23278 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
23279 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4
23280 } D3D12_SHADER_CACHE_CONTROL_FLAGS;
23281
23282DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )
23283
23284
23285extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_c_ifspec;
23286extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0057_v0_0_s_ifspec;
23287
23288#ifndef __ID3D12Device9_INTERFACE_DEFINED__
23289#define __ID3D12Device9_INTERFACE_DEFINED__
23290
23291/* interface ID3D12Device9 */
23292/* [unique][local][object][uuid] */
23293
23294
23295EXTERN_C const IID IID_ID3D12Device9;
23296
23297#if defined(__cplusplus) && !defined(CINTERFACE)
23298
23299 MIDL_INTERFACE("4c80e962-f032-4f60-bc9e-ebc2cfa1d83c")
23300 ID3D12Device9 : public ID3D12Device8
23301 {
23302 public:
23303 virtual HRESULT STDMETHODCALLTYPE CreateShaderCacheSession(
23304 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23305 REFIID riid,
23306 _COM_Outptr_opt_ void **ppvSession) = 0;
23307
23308 virtual HRESULT STDMETHODCALLTYPE ShaderCacheControl(
23309 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23310 D3D12_SHADER_CACHE_CONTROL_FLAGS Control) = 0;
23311
23312 virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue1(
23313 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23314 REFIID CreatorID,
23315 REFIID riid,
23316 _COM_Outptr_ void **ppCommandQueue) = 0;
23317
23318 };
23319
23320
23321#else /* C style interface */
23322
23323 typedef struct ID3D12Device9Vtbl
23324 {
23325 BEGIN_INTERFACE
23326
23327 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
23328 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
23329 ID3D12Device9 * This,
23330 REFIID riid,
23331 _COM_Outptr_ void **ppvObject);
23332
23333 DECLSPEC_XFGVIRT(IUnknown, AddRef)
23334 ULONG ( STDMETHODCALLTYPE *AddRef )(
23335 ID3D12Device9 * This);
23336
23337 DECLSPEC_XFGVIRT(IUnknown, Release)
23338 ULONG ( STDMETHODCALLTYPE *Release )(
23339 ID3D12Device9 * This);
23340
23341 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
23342 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
23343 ID3D12Device9 * This,
23344 _In_ REFGUID guid,
23345 _Inout_ UINT *pDataSize,
23346 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
23347
23348 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
23349 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
23350 ID3D12Device9 * This,
23351 _In_ REFGUID guid,
23352 _In_ UINT DataSize,
23353 _In_reads_bytes_opt_( DataSize ) const void *pData);
23354
23355 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
23356 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
23357 ID3D12Device9 * This,
23358 _In_ REFGUID guid,
23359 _In_opt_ const IUnknown *pData);
23360
23361 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
23362 HRESULT ( STDMETHODCALLTYPE *SetName )(
23363 ID3D12Device9 * This,
23364 _In_z_ LPCWSTR Name);
23365
23366 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
23367 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
23368 ID3D12Device9 * This);
23369
23370 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
23371 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
23372 ID3D12Device9 * This,
23373 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23374 REFIID riid,
23375 _COM_Outptr_ void **ppCommandQueue);
23376
23377 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
23378 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
23379 ID3D12Device9 * This,
23380 _In_ D3D12_COMMAND_LIST_TYPE type,
23381 REFIID riid,
23382 _COM_Outptr_ void **ppCommandAllocator);
23383
23384 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
23385 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
23386 ID3D12Device9 * This,
23387 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
23388 REFIID riid,
23389 _COM_Outptr_ void **ppPipelineState);
23390
23391 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
23392 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
23393 ID3D12Device9 * This,
23394 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
23395 REFIID riid,
23396 _COM_Outptr_ void **ppPipelineState);
23397
23398 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
23399 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
23400 ID3D12Device9 * This,
23401 _In_ UINT nodeMask,
23402 _In_ D3D12_COMMAND_LIST_TYPE type,
23403 _In_ ID3D12CommandAllocator *pCommandAllocator,
23404 _In_opt_ ID3D12PipelineState *pInitialState,
23405 REFIID riid,
23406 _COM_Outptr_ void **ppCommandList);
23407
23408 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
23409 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
23410 ID3D12Device9 * This,
23411 D3D12_FEATURE Feature,
23412 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
23413 UINT FeatureSupportDataSize);
23414
23415 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
23416 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
23417 ID3D12Device9 * This,
23418 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
23419 REFIID riid,
23420 _COM_Outptr_ void **ppvHeap);
23421
23422 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
23423 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
23424 ID3D12Device9 * This,
23425 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
23426
23427 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
23428 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
23429 ID3D12Device9 * This,
23430 _In_ UINT nodeMask,
23431 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
23432 _In_ SIZE_T blobLengthInBytes,
23433 REFIID riid,
23434 _COM_Outptr_ void **ppvRootSignature);
23435
23436 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
23437 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
23438 ID3D12Device9 * This,
23439 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
23440 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23441
23442 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
23443 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
23444 ID3D12Device9 * This,
23445 _In_opt_ ID3D12Resource *pResource,
23446 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
23447 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23448
23449 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
23450 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
23451 ID3D12Device9 * This,
23452 _In_opt_ ID3D12Resource *pResource,
23453 _In_opt_ ID3D12Resource *pCounterResource,
23454 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
23455 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23456
23457 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
23458 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
23459 ID3D12Device9 * This,
23460 _In_opt_ ID3D12Resource *pResource,
23461 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
23462 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23463
23464 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
23465 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
23466 ID3D12Device9 * This,
23467 _In_opt_ ID3D12Resource *pResource,
23468 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
23469 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23470
23471 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
23472 void ( STDMETHODCALLTYPE *CreateSampler )(
23473 ID3D12Device9 * This,
23474 _In_ const D3D12_SAMPLER_DESC *pDesc,
23475 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23476
23477 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
23478 void ( STDMETHODCALLTYPE *CopyDescriptors )(
23479 ID3D12Device9 * This,
23480 _In_ UINT NumDestDescriptorRanges,
23481 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
23482 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
23483 _In_ UINT NumSrcDescriptorRanges,
23484 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
23485 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
23486 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23487
23488 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
23489 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
23490 ID3D12Device9 * This,
23491 _In_ UINT NumDescriptors,
23492 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
23493 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
23494 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
23495
23496 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
23497#if !defined(_WIN32)
23498 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23499 ID3D12Device9 * This,
23500 _In_ UINT visibleMask,
23501 _In_ UINT numResourceDescs,
23502 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23503
23504#else
23505 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
23506 ID3D12Device9 * This,
23507 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23508 _In_ UINT visibleMask,
23509 _In_ UINT numResourceDescs,
23510 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
23511
23512#endif
23513
23514 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
23515#if !defined(_WIN32)
23516 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23517 ID3D12Device9 * This,
23518 _In_ UINT nodeMask,
23519 D3D12_HEAP_TYPE heapType);
23520
23521#else
23522 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
23523 ID3D12Device9 * This,
23524 D3D12_HEAP_PROPERTIES * RetVal,
23525 _In_ UINT nodeMask,
23526 D3D12_HEAP_TYPE heapType);
23527
23528#endif
23529
23530 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
23531 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
23532 ID3D12Device9 * This,
23533 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23534 D3D12_HEAP_FLAGS HeapFlags,
23535 _In_ const D3D12_RESOURCE_DESC *pDesc,
23536 D3D12_RESOURCE_STATES InitialResourceState,
23537 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23538 REFIID riidResource,
23539 _COM_Outptr_opt_ void **ppvResource);
23540
23541 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
23542 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
23543 ID3D12Device9 * This,
23544 _In_ const D3D12_HEAP_DESC *pDesc,
23545 REFIID riid,
23546 _COM_Outptr_opt_ void **ppvHeap);
23547
23548 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
23549 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
23550 ID3D12Device9 * This,
23551 _In_ ID3D12Heap *pHeap,
23552 UINT64 HeapOffset,
23553 _In_ const D3D12_RESOURCE_DESC *pDesc,
23554 D3D12_RESOURCE_STATES InitialState,
23555 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23556 REFIID riid,
23557 _COM_Outptr_opt_ void **ppvResource);
23558
23559 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
23560 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
23561 ID3D12Device9 * This,
23562 _In_ const D3D12_RESOURCE_DESC *pDesc,
23563 D3D12_RESOURCE_STATES InitialState,
23564 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23565 REFIID riid,
23566 _COM_Outptr_opt_ void **ppvResource);
23567
23568 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
23569 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
23570 ID3D12Device9 * This,
23571 _In_ ID3D12DeviceChild *pObject,
23572 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
23573 DWORD Access,
23574 _In_opt_ LPCWSTR Name,
23575 _Out_ HANDLE *pHandle);
23576
23577 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
23578 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
23579 ID3D12Device9 * This,
23580 _In_ HANDLE NTHandle,
23581 REFIID riid,
23582 _COM_Outptr_opt_ void **ppvObj);
23583
23584 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
23585 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
23586 ID3D12Device9 * This,
23587 _In_ LPCWSTR Name,
23588 DWORD Access,
23589 /* [annotation][out] */
23590 _Out_ HANDLE *pNTHandle);
23591
23592 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
23593 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
23594 ID3D12Device9 * This,
23595 UINT NumObjects,
23596 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23597
23598 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
23599 HRESULT ( STDMETHODCALLTYPE *Evict )(
23600 ID3D12Device9 * This,
23601 UINT NumObjects,
23602 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
23603
23604 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
23605 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
23606 ID3D12Device9 * This,
23607 UINT64 InitialValue,
23608 D3D12_FENCE_FLAGS Flags,
23609 REFIID riid,
23610 _COM_Outptr_ void **ppFence);
23611
23612 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
23613 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
23614 ID3D12Device9 * This);
23615
23616 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
23617 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
23618 ID3D12Device9 * This,
23619 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
23620 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23621 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23622 UINT64 BaseOffset,
23623 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23624 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23625 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23626 _Out_opt_ UINT64 *pTotalBytes);
23627
23628 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
23629 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
23630 ID3D12Device9 * This,
23631 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
23632 REFIID riid,
23633 _COM_Outptr_opt_ void **ppvHeap);
23634
23635 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
23636 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
23637 ID3D12Device9 * This,
23638 BOOL Enable);
23639
23640 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
23641 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
23642 ID3D12Device9 * This,
23643 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
23644 _In_opt_ ID3D12RootSignature *pRootSignature,
23645 REFIID riid,
23646 _COM_Outptr_opt_ void **ppvCommandSignature);
23647
23648 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
23649 void ( STDMETHODCALLTYPE *GetResourceTiling )(
23650 ID3D12Device9 * This,
23651 _In_ ID3D12Resource *pTiledResource,
23652 _Out_opt_ UINT *pNumTilesForEntireResource,
23653 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
23654 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
23655 _Inout_opt_ UINT *pNumSubresourceTilings,
23656 _In_ UINT FirstSubresourceTilingToGet,
23657 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
23658
23659 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
23660#if !defined(_WIN32)
23661 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
23662 ID3D12Device9 * This);
23663
23664#else
23665 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
23666 ID3D12Device9 * This,
23667 LUID * RetVal);
23668
23669#endif
23670
23671 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
23672 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
23673 ID3D12Device9 * This,
23674 _In_reads_(BlobLength) const void *pLibraryBlob,
23675 SIZE_T BlobLength,
23676 REFIID riid,
23677 _COM_Outptr_ void **ppPipelineLibrary);
23678
23679 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
23680 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
23681 ID3D12Device9 * This,
23682 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
23683 _In_reads_(NumFences) const UINT64 *pFenceValues,
23684 UINT NumFences,
23685 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
23686 HANDLE hEvent);
23687
23688 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
23689 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
23690 ID3D12Device9 * This,
23691 UINT NumObjects,
23692 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23693 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
23694
23695 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
23696 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
23697 ID3D12Device9 * This,
23698 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
23699 REFIID riid,
23700 _COM_Outptr_ void **ppPipelineState);
23701
23702 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
23703 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
23704 ID3D12Device9 * This,
23705 _In_ const void *pAddress,
23706 REFIID riid,
23707 _COM_Outptr_ void **ppvHeap);
23708
23709 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
23710 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
23711 ID3D12Device9 * This,
23712 _In_ HANDLE hFileMapping,
23713 REFIID riid,
23714 _COM_Outptr_ void **ppvHeap);
23715
23716 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
23717 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
23718 ID3D12Device9 * This,
23719 D3D12_RESIDENCY_FLAGS Flags,
23720 UINT NumObjects,
23721 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
23722 _In_ ID3D12Fence *pFenceToSignal,
23723 UINT64 FenceValueToSignal);
23724
23725 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
23726 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
23727 ID3D12Device9 * This,
23728 _In_ UINT nodeMask,
23729 _In_ D3D12_COMMAND_LIST_TYPE type,
23730 _In_ D3D12_COMMAND_LIST_FLAGS flags,
23731 REFIID riid,
23732 _COM_Outptr_ void **ppCommandList);
23733
23734 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
23735 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
23736 ID3D12Device9 * This,
23737 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
23738 _In_ REFIID riid,
23739 _COM_Outptr_ void **ppSession);
23740
23741 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
23742 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
23743 ID3D12Device9 * This,
23744 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23745 D3D12_HEAP_FLAGS HeapFlags,
23746 _In_ const D3D12_RESOURCE_DESC *pDesc,
23747 D3D12_RESOURCE_STATES InitialResourceState,
23748 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23749 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23750 REFIID riidResource,
23751 _COM_Outptr_opt_ void **ppvResource);
23752
23753 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
23754 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
23755 ID3D12Device9 * This,
23756 _In_ const D3D12_HEAP_DESC *pDesc,
23757 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23758 REFIID riid,
23759 _COM_Outptr_opt_ void **ppvHeap);
23760
23761 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
23762 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
23763 ID3D12Device9 * This,
23764 _In_ const D3D12_RESOURCE_DESC *pDesc,
23765 D3D12_RESOURCE_STATES InitialState,
23766 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23767 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23768 REFIID riid,
23769 _COM_Outptr_opt_ void **ppvResource);
23770
23771 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
23772#if !defined(_WIN32)
23773 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23774 ID3D12Device9 * This,
23775 UINT visibleMask,
23776 UINT numResourceDescs,
23777 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23778 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23779
23780#else
23781 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
23782 ID3D12Device9 * This,
23783 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23784 UINT visibleMask,
23785 UINT numResourceDescs,
23786 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
23787 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23788
23789#endif
23790
23791 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
23792 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
23793 ID3D12Device9 * This,
23794 _In_ ID3D12LifetimeOwner *pOwner,
23795 REFIID riid,
23796 _COM_Outptr_ void **ppvTracker);
23797
23798 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
23799 void ( STDMETHODCALLTYPE *RemoveDevice )(
23800 ID3D12Device9 * This);
23801
23802 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
23803 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
23804 ID3D12Device9 * This,
23805 _Inout_ UINT *pNumMetaCommands,
23806 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
23807
23808 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
23809 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
23810 ID3D12Device9 * This,
23811 _In_ REFGUID CommandId,
23812 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
23813 _Out_opt_ UINT *pTotalStructureSizeInBytes,
23814 _Inout_ UINT *pParameterCount,
23815 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
23816
23817 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
23818 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
23819 ID3D12Device9 * This,
23820 _In_ REFGUID CommandId,
23821 _In_ UINT NodeMask,
23822 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
23823 _In_ SIZE_T CreationParametersDataSizeInBytes,
23824 REFIID riid,
23825 _COM_Outptr_ void **ppMetaCommand);
23826
23827 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
23828 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
23829 ID3D12Device9 * This,
23830 const D3D12_STATE_OBJECT_DESC *pDesc,
23831 REFIID riid,
23832 _COM_Outptr_ void **ppStateObject);
23833
23834 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
23835 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
23836 ID3D12Device9 * This,
23837 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
23838 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
23839
23840 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
23841 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
23842 ID3D12Device9 * This,
23843 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
23844 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
23845
23846 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
23847 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
23848 ID3D12Device9 * This,
23849 D3D12_BACKGROUND_PROCESSING_MODE Mode,
23850 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
23851 _In_opt_ HANDLE hEventToSignalUponCompletion,
23852 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
23853
23854 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
23855 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
23856 ID3D12Device9 * This,
23857 const D3D12_STATE_OBJECT_DESC *pAddition,
23858 ID3D12StateObject *pStateObjectToGrowFrom,
23859 REFIID riid,
23860 _COM_Outptr_ void **ppNewStateObject);
23861
23862 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
23863 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
23864 ID3D12Device9 * This,
23865 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
23866 _In_ REFIID riid,
23867 _COM_Outptr_ void **ppSession);
23868
23869 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
23870#if !defined(_WIN32)
23871 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23872 ID3D12Device9 * This,
23873 UINT visibleMask,
23874 UINT numResourceDescs,
23875 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23876 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23877
23878#else
23879 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
23880 ID3D12Device9 * This,
23881 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
23882 UINT visibleMask,
23883 UINT numResourceDescs,
23884 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
23885 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
23886
23887#endif
23888
23889 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
23890 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
23891 ID3D12Device9 * This,
23892 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
23893 D3D12_HEAP_FLAGS HeapFlags,
23894 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23895 D3D12_RESOURCE_STATES InitialResourceState,
23896 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23897 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
23898 REFIID riidResource,
23899 _COM_Outptr_opt_ void **ppvResource);
23900
23901 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
23902 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
23903 ID3D12Device9 * This,
23904 _In_ ID3D12Heap *pHeap,
23905 UINT64 HeapOffset,
23906 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
23907 D3D12_RESOURCE_STATES InitialState,
23908 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
23909 REFIID riid,
23910 _COM_Outptr_opt_ void **ppvResource);
23911
23912 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
23913 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
23914 ID3D12Device9 * This,
23915 _In_opt_ ID3D12Resource *pTargetedResource,
23916 _In_opt_ ID3D12Resource *pFeedbackResource,
23917 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
23918
23919 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
23920 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
23921 ID3D12Device9 * This,
23922 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
23923 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
23924 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
23925 UINT64 BaseOffset,
23926 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
23927 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
23928 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
23929 _Out_opt_ UINT64 *pTotalBytes);
23930
23931 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
23932 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
23933 ID3D12Device9 * This,
23934 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
23935 REFIID riid,
23936 _COM_Outptr_opt_ void **ppvSession);
23937
23938 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
23939 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
23940 ID3D12Device9 * This,
23941 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
23942 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
23943
23944 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
23945 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
23946 ID3D12Device9 * This,
23947 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
23948 REFIID CreatorID,
23949 REFIID riid,
23950 _COM_Outptr_ void **ppCommandQueue);
23951
23952 END_INTERFACE
23953 } ID3D12Device9Vtbl;
23954
23955 interface ID3D12Device9
23956 {
23957 CONST_VTBL struct ID3D12Device9Vtbl *lpVtbl;
23958 };
23959
23960
23961
23962#ifdef COBJMACROS
23963
23964
23965#define ID3D12Device9_QueryInterface(This,riid,ppvObject) \
23966 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
23967
23968#define ID3D12Device9_AddRef(This) \
23969 ( (This)->lpVtbl -> AddRef(This) )
23970
23971#define ID3D12Device9_Release(This) \
23972 ( (This)->lpVtbl -> Release(This) )
23973
23974
23975#define ID3D12Device9_GetPrivateData(This,guid,pDataSize,pData) \
23976 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
23977
23978#define ID3D12Device9_SetPrivateData(This,guid,DataSize,pData) \
23979 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
23980
23981#define ID3D12Device9_SetPrivateDataInterface(This,guid,pData) \
23982 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
23983
23984#define ID3D12Device9_SetName(This,Name) \
23985 ( (This)->lpVtbl -> SetName(This,Name) )
23986
23987
23988#define ID3D12Device9_GetNodeCount(This) \
23989 ( (This)->lpVtbl -> GetNodeCount(This) )
23990
23991#define ID3D12Device9_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
23992 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
23993
23994#define ID3D12Device9_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
23995 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
23996
23997#define ID3D12Device9_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
23998 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
23999
24000#define ID3D12Device9_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
24001 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
24002
24003#define ID3D12Device9_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
24004 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
24005
24006#define ID3D12Device9_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
24007 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
24008
24009#define ID3D12Device9_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
24010 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
24011
24012#define ID3D12Device9_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
24013 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
24014
24015#define ID3D12Device9_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
24016 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
24017
24018#define ID3D12Device9_CreateConstantBufferView(This,pDesc,DestDescriptor) \
24019 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
24020
24021#define ID3D12Device9_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
24022 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
24023
24024#define ID3D12Device9_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
24025 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
24026
24027#define ID3D12Device9_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
24028 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
24029
24030#define ID3D12Device9_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
24031 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
24032
24033#define ID3D12Device9_CreateSampler(This,pDesc,DestDescriptor) \
24034 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
24035
24036#define ID3D12Device9_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
24037 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
24038
24039#define ID3D12Device9_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
24040 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
24041#if !defined(_WIN32)
24042
24043#define ID3D12Device9_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
24044 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
24045#else
24046#define ID3D12Device9_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
24047 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
24048#endif
24049#if !defined(_WIN32)
24050
24051#define ID3D12Device9_GetCustomHeapProperties(This,nodeMask,heapType) \
24052 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
24053#else
24054#define ID3D12Device9_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
24055 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
24056#endif
24057
24058#define ID3D12Device9_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
24059 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
24060
24061#define ID3D12Device9_CreateHeap(This,pDesc,riid,ppvHeap) \
24062 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
24063
24064#define ID3D12Device9_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24065 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24066
24067#define ID3D12Device9_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24068 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24069
24070#define ID3D12Device9_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
24071 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
24072
24073#define ID3D12Device9_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
24074 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
24075
24076#define ID3D12Device9_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
24077 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
24078
24079#define ID3D12Device9_MakeResident(This,NumObjects,ppObjects) \
24080 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
24081
24082#define ID3D12Device9_Evict(This,NumObjects,ppObjects) \
24083 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
24084
24085#define ID3D12Device9_CreateFence(This,InitialValue,Flags,riid,ppFence) \
24086 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
24087
24088#define ID3D12Device9_GetDeviceRemovedReason(This) \
24089 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
24090
24091#define ID3D12Device9_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24092 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24093
24094#define ID3D12Device9_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
24095 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
24096
24097#define ID3D12Device9_SetStablePowerState(This,Enable) \
24098 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
24099
24100#define ID3D12Device9_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
24101 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
24102
24103#define ID3D12Device9_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
24104 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
24105#if !defined(_WIN32)
24106
24107#define ID3D12Device9_GetAdapterLuid(This) \
24108 ( (This)->lpVtbl -> GetAdapterLuid(This) )
24109#else
24110#define ID3D12Device9_GetAdapterLuid(This,RetVal) \
24111 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
24112#endif
24113
24114
24115#define ID3D12Device9_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
24116 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
24117
24118#define ID3D12Device9_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
24119 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
24120
24121#define ID3D12Device9_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
24122 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
24123
24124
24125#define ID3D12Device9_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
24126 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
24127
24128
24129#define ID3D12Device9_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
24130 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
24131
24132#define ID3D12Device9_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
24133 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
24134
24135#define ID3D12Device9_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
24136 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
24137
24138
24139#define ID3D12Device9_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
24140 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
24141
24142#define ID3D12Device9_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
24143 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
24144
24145#define ID3D12Device9_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24146 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24147
24148#define ID3D12Device9_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
24149 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
24150
24151#define ID3D12Device9_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
24152 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
24153#if !defined(_WIN32)
24154
24155#define ID3D12Device9_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24156 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24157#else
24158#define ID3D12Device9_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24159 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24160#endif
24161
24162
24163#define ID3D12Device9_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
24164 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
24165
24166#define ID3D12Device9_RemoveDevice(This) \
24167 ( (This)->lpVtbl -> RemoveDevice(This) )
24168
24169#define ID3D12Device9_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
24170 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
24171
24172#define ID3D12Device9_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
24173 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
24174
24175#define ID3D12Device9_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
24176 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
24177
24178#define ID3D12Device9_CreateStateObject(This,pDesc,riid,ppStateObject) \
24179 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
24180
24181#define ID3D12Device9_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
24182 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
24183
24184#define ID3D12Device9_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
24185 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
24186
24187
24188#define ID3D12Device9_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
24189 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
24190
24191
24192#define ID3D12Device9_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
24193 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
24194
24195#define ID3D12Device9_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
24196 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
24197
24198#if !defined(_WIN32)
24199
24200#define ID3D12Device9_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24201 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24202#else
24203#define ID3D12Device9_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
24204 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
24205#endif
24206
24207#define ID3D12Device9_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
24208 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
24209
24210#define ID3D12Device9_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
24211 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
24212
24213#define ID3D12Device9_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
24214 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
24215
24216#define ID3D12Device9_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
24217 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
24218
24219
24220#define ID3D12Device9_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
24221 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
24222
24223#define ID3D12Device9_ShaderCacheControl(This,Kinds,Control) \
24224 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
24225
24226#define ID3D12Device9_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
24227 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
24228
24229#endif /* COBJMACROS */
24230
24231
24232#endif /* C style interface */
24233
24234
24235
24236
24237#endif /* __ID3D12Device9_INTERFACE_DEFINED__ */
24238
24239
24240#ifndef __ID3D12Device10_INTERFACE_DEFINED__
24241#define __ID3D12Device10_INTERFACE_DEFINED__
24242
24243/* interface ID3D12Device10 */
24244/* [unique][local][object][uuid] */
24245
24246
24247EXTERN_C const IID IID_ID3D12Device10;
24248
24249#if defined(__cplusplus) && !defined(CINTERFACE)
24250
24251 MIDL_INTERFACE("517f8718-aa66-49f9-b02b-a7ab89c06031")
24252 ID3D12Device10 : public ID3D12Device9
24253 {
24254 public:
24255 virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource3(
24256 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24257 D3D12_HEAP_FLAGS HeapFlags,
24258 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24259 D3D12_BARRIER_LAYOUT InitialLayout,
24260 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24261 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24262 UINT32 NumCastableFormats,
24263 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24264 REFIID riidResource,
24265 _COM_Outptr_opt_ void **ppvResource) = 0;
24266
24267 virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource2(
24268 _In_ ID3D12Heap *pHeap,
24269 UINT64 HeapOffset,
24270 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24271 D3D12_BARRIER_LAYOUT InitialLayout,
24272 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24273 UINT32 NumCastableFormats,
24274 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24275 REFIID riid,
24276 _COM_Outptr_opt_ void **ppvResource) = 0;
24277
24278 virtual HRESULT STDMETHODCALLTYPE CreateReservedResource2(
24279 _In_ const D3D12_RESOURCE_DESC *pDesc,
24280 D3D12_BARRIER_LAYOUT InitialLayout,
24281 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24282 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24283 UINT32 NumCastableFormats,
24284 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24285 REFIID riid,
24286 _COM_Outptr_opt_ void **ppvResource) = 0;
24287
24288 };
24289
24290
24291#else /* C style interface */
24292
24293 typedef struct ID3D12Device10Vtbl
24294 {
24295 BEGIN_INTERFACE
24296
24297 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
24298 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
24299 ID3D12Device10 * This,
24300 REFIID riid,
24301 _COM_Outptr_ void **ppvObject);
24302
24303 DECLSPEC_XFGVIRT(IUnknown, AddRef)
24304 ULONG ( STDMETHODCALLTYPE *AddRef )(
24305 ID3D12Device10 * This);
24306
24307 DECLSPEC_XFGVIRT(IUnknown, Release)
24308 ULONG ( STDMETHODCALLTYPE *Release )(
24309 ID3D12Device10 * This);
24310
24311 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
24312 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
24313 ID3D12Device10 * This,
24314 _In_ REFGUID guid,
24315 _Inout_ UINT *pDataSize,
24316 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
24317
24318 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
24319 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
24320 ID3D12Device10 * This,
24321 _In_ REFGUID guid,
24322 _In_ UINT DataSize,
24323 _In_reads_bytes_opt_( DataSize ) const void *pData);
24324
24325 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
24326 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
24327 ID3D12Device10 * This,
24328 _In_ REFGUID guid,
24329 _In_opt_ const IUnknown *pData);
24330
24331 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
24332 HRESULT ( STDMETHODCALLTYPE *SetName )(
24333 ID3D12Device10 * This,
24334 _In_z_ LPCWSTR Name);
24335
24336 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
24337 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
24338 ID3D12Device10 * This);
24339
24340 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
24341 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
24342 ID3D12Device10 * This,
24343 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24344 REFIID riid,
24345 _COM_Outptr_ void **ppCommandQueue);
24346
24347 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
24348 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
24349 ID3D12Device10 * This,
24350 _In_ D3D12_COMMAND_LIST_TYPE type,
24351 REFIID riid,
24352 _COM_Outptr_ void **ppCommandAllocator);
24353
24354 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
24355 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
24356 ID3D12Device10 * This,
24357 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
24358 REFIID riid,
24359 _COM_Outptr_ void **ppPipelineState);
24360
24361 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
24362 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
24363 ID3D12Device10 * This,
24364 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
24365 REFIID riid,
24366 _COM_Outptr_ void **ppPipelineState);
24367
24368 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
24369 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
24370 ID3D12Device10 * This,
24371 _In_ UINT nodeMask,
24372 _In_ D3D12_COMMAND_LIST_TYPE type,
24373 _In_ ID3D12CommandAllocator *pCommandAllocator,
24374 _In_opt_ ID3D12PipelineState *pInitialState,
24375 REFIID riid,
24376 _COM_Outptr_ void **ppCommandList);
24377
24378 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
24379 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
24380 ID3D12Device10 * This,
24381 D3D12_FEATURE Feature,
24382 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
24383 UINT FeatureSupportDataSize);
24384
24385 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
24386 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
24387 ID3D12Device10 * This,
24388 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
24389 REFIID riid,
24390 _COM_Outptr_ void **ppvHeap);
24391
24392 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
24393 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
24394 ID3D12Device10 * This,
24395 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
24396
24397 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
24398 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
24399 ID3D12Device10 * This,
24400 _In_ UINT nodeMask,
24401 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
24402 _In_ SIZE_T blobLengthInBytes,
24403 REFIID riid,
24404 _COM_Outptr_ void **ppvRootSignature);
24405
24406 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
24407 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
24408 ID3D12Device10 * This,
24409 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
24410 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24411
24412 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
24413 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
24414 ID3D12Device10 * This,
24415 _In_opt_ ID3D12Resource *pResource,
24416 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
24417 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24418
24419 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
24420 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
24421 ID3D12Device10 * This,
24422 _In_opt_ ID3D12Resource *pResource,
24423 _In_opt_ ID3D12Resource *pCounterResource,
24424 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
24425 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24426
24427 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
24428 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
24429 ID3D12Device10 * This,
24430 _In_opt_ ID3D12Resource *pResource,
24431 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
24432 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24433
24434 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
24435 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
24436 ID3D12Device10 * This,
24437 _In_opt_ ID3D12Resource *pResource,
24438 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
24439 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24440
24441 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
24442 void ( STDMETHODCALLTYPE *CreateSampler )(
24443 ID3D12Device10 * This,
24444 _In_ const D3D12_SAMPLER_DESC *pDesc,
24445 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24446
24447 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
24448 void ( STDMETHODCALLTYPE *CopyDescriptors )(
24449 ID3D12Device10 * This,
24450 _In_ UINT NumDestDescriptorRanges,
24451 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
24452 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
24453 _In_ UINT NumSrcDescriptorRanges,
24454 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
24455 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
24456 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24457
24458 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
24459 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
24460 ID3D12Device10 * This,
24461 _In_ UINT NumDescriptors,
24462 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
24463 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
24464 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
24465
24466 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
24467#if !defined(_WIN32)
24468 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24469 ID3D12Device10 * This,
24470 _In_ UINT visibleMask,
24471 _In_ UINT numResourceDescs,
24472 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24473
24474#else
24475 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
24476 ID3D12Device10 * This,
24477 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24478 _In_ UINT visibleMask,
24479 _In_ UINT numResourceDescs,
24480 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
24481
24482#endif
24483
24484 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
24485#if !defined(_WIN32)
24486 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24487 ID3D12Device10 * This,
24488 _In_ UINT nodeMask,
24489 D3D12_HEAP_TYPE heapType);
24490
24491#else
24492 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
24493 ID3D12Device10 * This,
24494 D3D12_HEAP_PROPERTIES * RetVal,
24495 _In_ UINT nodeMask,
24496 D3D12_HEAP_TYPE heapType);
24497
24498#endif
24499
24500 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
24501 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
24502 ID3D12Device10 * This,
24503 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24504 D3D12_HEAP_FLAGS HeapFlags,
24505 _In_ const D3D12_RESOURCE_DESC *pDesc,
24506 D3D12_RESOURCE_STATES InitialResourceState,
24507 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24508 REFIID riidResource,
24509 _COM_Outptr_opt_ void **ppvResource);
24510
24511 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
24512 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
24513 ID3D12Device10 * This,
24514 _In_ const D3D12_HEAP_DESC *pDesc,
24515 REFIID riid,
24516 _COM_Outptr_opt_ void **ppvHeap);
24517
24518 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
24519 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
24520 ID3D12Device10 * This,
24521 _In_ ID3D12Heap *pHeap,
24522 UINT64 HeapOffset,
24523 _In_ const D3D12_RESOURCE_DESC *pDesc,
24524 D3D12_RESOURCE_STATES InitialState,
24525 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24526 REFIID riid,
24527 _COM_Outptr_opt_ void **ppvResource);
24528
24529 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
24530 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
24531 ID3D12Device10 * This,
24532 _In_ const D3D12_RESOURCE_DESC *pDesc,
24533 D3D12_RESOURCE_STATES InitialState,
24534 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24535 REFIID riid,
24536 _COM_Outptr_opt_ void **ppvResource);
24537
24538 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
24539 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
24540 ID3D12Device10 * This,
24541 _In_ ID3D12DeviceChild *pObject,
24542 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
24543 DWORD Access,
24544 _In_opt_ LPCWSTR Name,
24545 _Out_ HANDLE *pHandle);
24546
24547 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
24548 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
24549 ID3D12Device10 * This,
24550 _In_ HANDLE NTHandle,
24551 REFIID riid,
24552 _COM_Outptr_opt_ void **ppvObj);
24553
24554 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
24555 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
24556 ID3D12Device10 * This,
24557 _In_ LPCWSTR Name,
24558 DWORD Access,
24559 /* [annotation][out] */
24560 _Out_ HANDLE *pNTHandle);
24561
24562 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
24563 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
24564 ID3D12Device10 * This,
24565 UINT NumObjects,
24566 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24567
24568 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
24569 HRESULT ( STDMETHODCALLTYPE *Evict )(
24570 ID3D12Device10 * This,
24571 UINT NumObjects,
24572 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
24573
24574 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
24575 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
24576 ID3D12Device10 * This,
24577 UINT64 InitialValue,
24578 D3D12_FENCE_FLAGS Flags,
24579 REFIID riid,
24580 _COM_Outptr_ void **ppFence);
24581
24582 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
24583 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
24584 ID3D12Device10 * This);
24585
24586 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
24587 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
24588 ID3D12Device10 * This,
24589 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
24590 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24591 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24592 UINT64 BaseOffset,
24593 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24594 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24595 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24596 _Out_opt_ UINT64 *pTotalBytes);
24597
24598 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
24599 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
24600 ID3D12Device10 * This,
24601 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
24602 REFIID riid,
24603 _COM_Outptr_opt_ void **ppvHeap);
24604
24605 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
24606 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
24607 ID3D12Device10 * This,
24608 BOOL Enable);
24609
24610 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
24611 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
24612 ID3D12Device10 * This,
24613 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
24614 _In_opt_ ID3D12RootSignature *pRootSignature,
24615 REFIID riid,
24616 _COM_Outptr_opt_ void **ppvCommandSignature);
24617
24618 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
24619 void ( STDMETHODCALLTYPE *GetResourceTiling )(
24620 ID3D12Device10 * This,
24621 _In_ ID3D12Resource *pTiledResource,
24622 _Out_opt_ UINT *pNumTilesForEntireResource,
24623 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
24624 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
24625 _Inout_opt_ UINT *pNumSubresourceTilings,
24626 _In_ UINT FirstSubresourceTilingToGet,
24627 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
24628
24629 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
24630#if !defined(_WIN32)
24631 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
24632 ID3D12Device10 * This);
24633
24634#else
24635 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
24636 ID3D12Device10 * This,
24637 LUID * RetVal);
24638
24639#endif
24640
24641 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
24642 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
24643 ID3D12Device10 * This,
24644 _In_reads_(BlobLength) const void *pLibraryBlob,
24645 SIZE_T BlobLength,
24646 REFIID riid,
24647 _COM_Outptr_ void **ppPipelineLibrary);
24648
24649 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
24650 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
24651 ID3D12Device10 * This,
24652 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
24653 _In_reads_(NumFences) const UINT64 *pFenceValues,
24654 UINT NumFences,
24655 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
24656 HANDLE hEvent);
24657
24658 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
24659 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
24660 ID3D12Device10 * This,
24661 UINT NumObjects,
24662 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24663 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
24664
24665 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
24666 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
24667 ID3D12Device10 * This,
24668 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
24669 REFIID riid,
24670 _COM_Outptr_ void **ppPipelineState);
24671
24672 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
24673 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
24674 ID3D12Device10 * This,
24675 _In_ const void *pAddress,
24676 REFIID riid,
24677 _COM_Outptr_ void **ppvHeap);
24678
24679 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
24680 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
24681 ID3D12Device10 * This,
24682 _In_ HANDLE hFileMapping,
24683 REFIID riid,
24684 _COM_Outptr_ void **ppvHeap);
24685
24686 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
24687 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
24688 ID3D12Device10 * This,
24689 D3D12_RESIDENCY_FLAGS Flags,
24690 UINT NumObjects,
24691 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
24692 _In_ ID3D12Fence *pFenceToSignal,
24693 UINT64 FenceValueToSignal);
24694
24695 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
24696 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
24697 ID3D12Device10 * This,
24698 _In_ UINT nodeMask,
24699 _In_ D3D12_COMMAND_LIST_TYPE type,
24700 _In_ D3D12_COMMAND_LIST_FLAGS flags,
24701 REFIID riid,
24702 _COM_Outptr_ void **ppCommandList);
24703
24704 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
24705 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
24706 ID3D12Device10 * This,
24707 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
24708 _In_ REFIID riid,
24709 _COM_Outptr_ void **ppSession);
24710
24711 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
24712 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
24713 ID3D12Device10 * This,
24714 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24715 D3D12_HEAP_FLAGS HeapFlags,
24716 _In_ const D3D12_RESOURCE_DESC *pDesc,
24717 D3D12_RESOURCE_STATES InitialResourceState,
24718 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24719 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24720 REFIID riidResource,
24721 _COM_Outptr_opt_ void **ppvResource);
24722
24723 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
24724 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
24725 ID3D12Device10 * This,
24726 _In_ const D3D12_HEAP_DESC *pDesc,
24727 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24728 REFIID riid,
24729 _COM_Outptr_opt_ void **ppvHeap);
24730
24731 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
24732 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
24733 ID3D12Device10 * This,
24734 _In_ const D3D12_RESOURCE_DESC *pDesc,
24735 D3D12_RESOURCE_STATES InitialState,
24736 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24737 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24738 REFIID riid,
24739 _COM_Outptr_opt_ void **ppvResource);
24740
24741 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
24742#if !defined(_WIN32)
24743 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24744 ID3D12Device10 * This,
24745 UINT visibleMask,
24746 UINT numResourceDescs,
24747 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24748 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24749
24750#else
24751 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
24752 ID3D12Device10 * This,
24753 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24754 UINT visibleMask,
24755 UINT numResourceDescs,
24756 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
24757 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24758
24759#endif
24760
24761 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
24762 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
24763 ID3D12Device10 * This,
24764 _In_ ID3D12LifetimeOwner *pOwner,
24765 REFIID riid,
24766 _COM_Outptr_ void **ppvTracker);
24767
24768 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
24769 void ( STDMETHODCALLTYPE *RemoveDevice )(
24770 ID3D12Device10 * This);
24771
24772 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
24773 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
24774 ID3D12Device10 * This,
24775 _Inout_ UINT *pNumMetaCommands,
24776 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
24777
24778 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
24779 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
24780 ID3D12Device10 * This,
24781 _In_ REFGUID CommandId,
24782 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
24783 _Out_opt_ UINT *pTotalStructureSizeInBytes,
24784 _Inout_ UINT *pParameterCount,
24785 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
24786
24787 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
24788 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
24789 ID3D12Device10 * This,
24790 _In_ REFGUID CommandId,
24791 _In_ UINT NodeMask,
24792 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
24793 _In_ SIZE_T CreationParametersDataSizeInBytes,
24794 REFIID riid,
24795 _COM_Outptr_ void **ppMetaCommand);
24796
24797 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
24798 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
24799 ID3D12Device10 * This,
24800 const D3D12_STATE_OBJECT_DESC *pDesc,
24801 REFIID riid,
24802 _COM_Outptr_ void **ppStateObject);
24803
24804 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
24805 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
24806 ID3D12Device10 * This,
24807 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
24808 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
24809
24810 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
24811 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
24812 ID3D12Device10 * This,
24813 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
24814 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
24815
24816 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
24817 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
24818 ID3D12Device10 * This,
24819 D3D12_BACKGROUND_PROCESSING_MODE Mode,
24820 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
24821 _In_opt_ HANDLE hEventToSignalUponCompletion,
24822 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
24823
24824 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
24825 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
24826 ID3D12Device10 * This,
24827 const D3D12_STATE_OBJECT_DESC *pAddition,
24828 ID3D12StateObject *pStateObjectToGrowFrom,
24829 REFIID riid,
24830 _COM_Outptr_ void **ppNewStateObject);
24831
24832 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
24833 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
24834 ID3D12Device10 * This,
24835 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
24836 _In_ REFIID riid,
24837 _COM_Outptr_ void **ppSession);
24838
24839 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
24840#if !defined(_WIN32)
24841 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24842 ID3D12Device10 * This,
24843 UINT visibleMask,
24844 UINT numResourceDescs,
24845 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24846 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24847
24848#else
24849 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
24850 ID3D12Device10 * This,
24851 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
24852 UINT visibleMask,
24853 UINT numResourceDescs,
24854 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
24855 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
24856
24857#endif
24858
24859 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
24860 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
24861 ID3D12Device10 * This,
24862 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24863 D3D12_HEAP_FLAGS HeapFlags,
24864 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24865 D3D12_RESOURCE_STATES InitialResourceState,
24866 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24867 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24868 REFIID riidResource,
24869 _COM_Outptr_opt_ void **ppvResource);
24870
24871 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
24872 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
24873 ID3D12Device10 * This,
24874 _In_ ID3D12Heap *pHeap,
24875 UINT64 HeapOffset,
24876 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24877 D3D12_RESOURCE_STATES InitialState,
24878 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24879 REFIID riid,
24880 _COM_Outptr_opt_ void **ppvResource);
24881
24882 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
24883 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
24884 ID3D12Device10 * This,
24885 _In_opt_ ID3D12Resource *pTargetedResource,
24886 _In_opt_ ID3D12Resource *pFeedbackResource,
24887 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
24888
24889 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
24890 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
24891 ID3D12Device10 * This,
24892 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
24893 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
24894 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
24895 UINT64 BaseOffset,
24896 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
24897 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
24898 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
24899 _Out_opt_ UINT64 *pTotalBytes);
24900
24901 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
24902 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
24903 ID3D12Device10 * This,
24904 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
24905 REFIID riid,
24906 _COM_Outptr_opt_ void **ppvSession);
24907
24908 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
24909 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
24910 ID3D12Device10 * This,
24911 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
24912 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
24913
24914 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
24915 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
24916 ID3D12Device10 * This,
24917 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
24918 REFIID CreatorID,
24919 REFIID riid,
24920 _COM_Outptr_ void **ppCommandQueue);
24921
24922 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
24923 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
24924 ID3D12Device10 * This,
24925 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
24926 D3D12_HEAP_FLAGS HeapFlags,
24927 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24928 D3D12_BARRIER_LAYOUT InitialLayout,
24929 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24930 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24931 UINT32 NumCastableFormats,
24932 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24933 REFIID riidResource,
24934 _COM_Outptr_opt_ void **ppvResource);
24935
24936 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
24937 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
24938 ID3D12Device10 * This,
24939 _In_ ID3D12Heap *pHeap,
24940 UINT64 HeapOffset,
24941 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
24942 D3D12_BARRIER_LAYOUT InitialLayout,
24943 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24944 UINT32 NumCastableFormats,
24945 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24946 REFIID riid,
24947 _COM_Outptr_opt_ void **ppvResource);
24948
24949 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
24950 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
24951 ID3D12Device10 * This,
24952 _In_ const D3D12_RESOURCE_DESC *pDesc,
24953 D3D12_BARRIER_LAYOUT InitialLayout,
24954 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
24955 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
24956 UINT32 NumCastableFormats,
24957 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
24958 REFIID riid,
24959 _COM_Outptr_opt_ void **ppvResource);
24960
24961 END_INTERFACE
24962 } ID3D12Device10Vtbl;
24963
24964 interface ID3D12Device10
24965 {
24966 CONST_VTBL struct ID3D12Device10Vtbl *lpVtbl;
24967 };
24968
24969
24970
24971#ifdef COBJMACROS
24972
24973
24974#define ID3D12Device10_QueryInterface(This,riid,ppvObject) \
24975 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
24976
24977#define ID3D12Device10_AddRef(This) \
24978 ( (This)->lpVtbl -> AddRef(This) )
24979
24980#define ID3D12Device10_Release(This) \
24981 ( (This)->lpVtbl -> Release(This) )
24982
24983
24984#define ID3D12Device10_GetPrivateData(This,guid,pDataSize,pData) \
24985 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
24986
24987#define ID3D12Device10_SetPrivateData(This,guid,DataSize,pData) \
24988 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
24989
24990#define ID3D12Device10_SetPrivateDataInterface(This,guid,pData) \
24991 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
24992
24993#define ID3D12Device10_SetName(This,Name) \
24994 ( (This)->lpVtbl -> SetName(This,Name) )
24995
24996
24997#define ID3D12Device10_GetNodeCount(This) \
24998 ( (This)->lpVtbl -> GetNodeCount(This) )
24999
25000#define ID3D12Device10_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
25001 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
25002
25003#define ID3D12Device10_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
25004 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
25005
25006#define ID3D12Device10_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
25007 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
25008
25009#define ID3D12Device10_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
25010 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
25011
25012#define ID3D12Device10_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
25013 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
25014
25015#define ID3D12Device10_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
25016 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
25017
25018#define ID3D12Device10_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
25019 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
25020
25021#define ID3D12Device10_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
25022 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
25023
25024#define ID3D12Device10_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
25025 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
25026
25027#define ID3D12Device10_CreateConstantBufferView(This,pDesc,DestDescriptor) \
25028 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
25029
25030#define ID3D12Device10_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
25031 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
25032
25033#define ID3D12Device10_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
25034 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
25035
25036#define ID3D12Device10_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
25037 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
25038
25039#define ID3D12Device10_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
25040 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
25041
25042#define ID3D12Device10_CreateSampler(This,pDesc,DestDescriptor) \
25043 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
25044
25045#define ID3D12Device10_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
25046 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
25047
25048#define ID3D12Device10_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
25049 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
25050#if !defined(_WIN32)
25051
25052#define ID3D12Device10_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
25053 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
25054#else
25055#define ID3D12Device10_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
25056 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
25057#endif
25058#if !defined(_WIN32)
25059
25060#define ID3D12Device10_GetCustomHeapProperties(This,nodeMask,heapType) \
25061 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
25062#else
25063#define ID3D12Device10_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
25064 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
25065#endif
25066
25067#define ID3D12Device10_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
25068 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
25069
25070#define ID3D12Device10_CreateHeap(This,pDesc,riid,ppvHeap) \
25071 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
25072
25073#define ID3D12Device10_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25074 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25075
25076#define ID3D12Device10_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25077 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25078
25079#define ID3D12Device10_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
25080 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
25081
25082#define ID3D12Device10_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
25083 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
25084
25085#define ID3D12Device10_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
25086 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
25087
25088#define ID3D12Device10_MakeResident(This,NumObjects,ppObjects) \
25089 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
25090
25091#define ID3D12Device10_Evict(This,NumObjects,ppObjects) \
25092 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
25093
25094#define ID3D12Device10_CreateFence(This,InitialValue,Flags,riid,ppFence) \
25095 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
25096
25097#define ID3D12Device10_GetDeviceRemovedReason(This) \
25098 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
25099
25100#define ID3D12Device10_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25101 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25102
25103#define ID3D12Device10_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
25104 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
25105
25106#define ID3D12Device10_SetStablePowerState(This,Enable) \
25107 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
25108
25109#define ID3D12Device10_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
25110 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
25111
25112#define ID3D12Device10_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
25113 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
25114#if !defined(_WIN32)
25115
25116#define ID3D12Device10_GetAdapterLuid(This) \
25117 ( (This)->lpVtbl -> GetAdapterLuid(This) )
25118#else
25119#define ID3D12Device10_GetAdapterLuid(This,RetVal) \
25120 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
25121#endif
25122
25123
25124#define ID3D12Device10_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
25125 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
25126
25127#define ID3D12Device10_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
25128 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
25129
25130#define ID3D12Device10_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
25131 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
25132
25133
25134#define ID3D12Device10_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
25135 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
25136
25137
25138#define ID3D12Device10_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
25139 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
25140
25141#define ID3D12Device10_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
25142 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
25143
25144#define ID3D12Device10_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
25145 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
25146
25147
25148#define ID3D12Device10_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
25149 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
25150
25151#define ID3D12Device10_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
25152 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
25153
25154#define ID3D12Device10_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25155 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25156
25157#define ID3D12Device10_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
25158 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
25159
25160#define ID3D12Device10_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
25161 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
25162#if !defined(_WIN32)
25163
25164#define ID3D12Device10_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25165 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25166#else
25167#define ID3D12Device10_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25168 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25169#endif
25170
25171
25172#define ID3D12Device10_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
25173 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
25174
25175#define ID3D12Device10_RemoveDevice(This) \
25176 ( (This)->lpVtbl -> RemoveDevice(This) )
25177
25178#define ID3D12Device10_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
25179 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
25180
25181#define ID3D12Device10_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
25182 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
25183
25184#define ID3D12Device10_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
25185 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
25186
25187#define ID3D12Device10_CreateStateObject(This,pDesc,riid,ppStateObject) \
25188 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
25189
25190#define ID3D12Device10_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
25191 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
25192
25193#define ID3D12Device10_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
25194 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
25195
25196
25197#define ID3D12Device10_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
25198 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
25199
25200
25201#define ID3D12Device10_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
25202 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
25203
25204#define ID3D12Device10_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
25205 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
25206
25207#if !defined(_WIN32)
25208
25209#define ID3D12Device10_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25210 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25211#else
25212#define ID3D12Device10_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
25213 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
25214#endif
25215
25216#define ID3D12Device10_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
25217 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
25218
25219#define ID3D12Device10_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
25220 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
25221
25222#define ID3D12Device10_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
25223 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
25224
25225#define ID3D12Device10_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
25226 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
25227
25228
25229#define ID3D12Device10_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
25230 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
25231
25232#define ID3D12Device10_ShaderCacheControl(This,Kinds,Control) \
25233 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
25234
25235#define ID3D12Device10_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
25236 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
25237
25238
25239#define ID3D12Device10_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
25240 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
25241
25242#define ID3D12Device10_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25243 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25244
25245#define ID3D12Device10_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
25246 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
25247
25248#endif /* COBJMACROS */
25249
25250
25251#endif /* C style interface */
25252
25253
25254
25255
25256#endif /* __ID3D12Device10_INTERFACE_DEFINED__ */
25257
25258
25259#ifndef __ID3D12Device11_INTERFACE_DEFINED__
25260#define __ID3D12Device11_INTERFACE_DEFINED__
25261
25262/* interface ID3D12Device11 */
25263/* [unique][local][object][uuid] */
25264
25265
25266EXTERN_C const IID IID_ID3D12Device11;
25267
25268#if defined(__cplusplus) && !defined(CINTERFACE)
25269
25270 MIDL_INTERFACE("5405c344-d457-444e-b4dd-2366e45aee39")
25271 ID3D12Device11 : public ID3D12Device10
25272 {
25273 public:
25274 virtual void STDMETHODCALLTYPE CreateSampler2(
25275 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25276 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
25277
25278 };
25279
25280
25281#else /* C style interface */
25282
25283 typedef struct ID3D12Device11Vtbl
25284 {
25285 BEGIN_INTERFACE
25286
25287 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
25288 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
25289 ID3D12Device11 * This,
25290 REFIID riid,
25291 _COM_Outptr_ void **ppvObject);
25292
25293 DECLSPEC_XFGVIRT(IUnknown, AddRef)
25294 ULONG ( STDMETHODCALLTYPE *AddRef )(
25295 ID3D12Device11 * This);
25296
25297 DECLSPEC_XFGVIRT(IUnknown, Release)
25298 ULONG ( STDMETHODCALLTYPE *Release )(
25299 ID3D12Device11 * This);
25300
25301 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
25302 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
25303 ID3D12Device11 * This,
25304 _In_ REFGUID guid,
25305 _Inout_ UINT *pDataSize,
25306 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
25307
25308 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
25309 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
25310 ID3D12Device11 * This,
25311 _In_ REFGUID guid,
25312 _In_ UINT DataSize,
25313 _In_reads_bytes_opt_( DataSize ) const void *pData);
25314
25315 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
25316 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
25317 ID3D12Device11 * This,
25318 _In_ REFGUID guid,
25319 _In_opt_ const IUnknown *pData);
25320
25321 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
25322 HRESULT ( STDMETHODCALLTYPE *SetName )(
25323 ID3D12Device11 * This,
25324 _In_z_ LPCWSTR Name);
25325
25326 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
25327 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
25328 ID3D12Device11 * This);
25329
25330 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
25331 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
25332 ID3D12Device11 * This,
25333 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25334 REFIID riid,
25335 _COM_Outptr_ void **ppCommandQueue);
25336
25337 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
25338 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
25339 ID3D12Device11 * This,
25340 _In_ D3D12_COMMAND_LIST_TYPE type,
25341 REFIID riid,
25342 _COM_Outptr_ void **ppCommandAllocator);
25343
25344 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
25345 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
25346 ID3D12Device11 * This,
25347 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
25348 REFIID riid,
25349 _COM_Outptr_ void **ppPipelineState);
25350
25351 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
25352 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
25353 ID3D12Device11 * This,
25354 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
25355 REFIID riid,
25356 _COM_Outptr_ void **ppPipelineState);
25357
25358 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
25359 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
25360 ID3D12Device11 * This,
25361 _In_ UINT nodeMask,
25362 _In_ D3D12_COMMAND_LIST_TYPE type,
25363 _In_ ID3D12CommandAllocator *pCommandAllocator,
25364 _In_opt_ ID3D12PipelineState *pInitialState,
25365 REFIID riid,
25366 _COM_Outptr_ void **ppCommandList);
25367
25368 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
25369 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
25370 ID3D12Device11 * This,
25371 D3D12_FEATURE Feature,
25372 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
25373 UINT FeatureSupportDataSize);
25374
25375 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
25376 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
25377 ID3D12Device11 * This,
25378 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
25379 REFIID riid,
25380 _COM_Outptr_ void **ppvHeap);
25381
25382 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
25383 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
25384 ID3D12Device11 * This,
25385 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
25386
25387 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
25388 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
25389 ID3D12Device11 * This,
25390 _In_ UINT nodeMask,
25391 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
25392 _In_ SIZE_T blobLengthInBytes,
25393 REFIID riid,
25394 _COM_Outptr_ void **ppvRootSignature);
25395
25396 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
25397 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
25398 ID3D12Device11 * This,
25399 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
25400 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25401
25402 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
25403 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
25404 ID3D12Device11 * This,
25405 _In_opt_ ID3D12Resource *pResource,
25406 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
25407 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25408
25409 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
25410 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
25411 ID3D12Device11 * This,
25412 _In_opt_ ID3D12Resource *pResource,
25413 _In_opt_ ID3D12Resource *pCounterResource,
25414 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
25415 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25416
25417 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
25418 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
25419 ID3D12Device11 * This,
25420 _In_opt_ ID3D12Resource *pResource,
25421 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
25422 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25423
25424 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
25425 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
25426 ID3D12Device11 * This,
25427 _In_opt_ ID3D12Resource *pResource,
25428 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
25429 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25430
25431 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
25432 void ( STDMETHODCALLTYPE *CreateSampler )(
25433 ID3D12Device11 * This,
25434 _In_ const D3D12_SAMPLER_DESC *pDesc,
25435 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25436
25437 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
25438 void ( STDMETHODCALLTYPE *CopyDescriptors )(
25439 ID3D12Device11 * This,
25440 _In_ UINT NumDestDescriptorRanges,
25441 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
25442 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
25443 _In_ UINT NumSrcDescriptorRanges,
25444 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
25445 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
25446 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25447
25448 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
25449 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
25450 ID3D12Device11 * This,
25451 _In_ UINT NumDescriptors,
25452 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
25453 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
25454 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
25455
25456 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
25457#if !defined(_WIN32)
25458 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25459 ID3D12Device11 * This,
25460 _In_ UINT visibleMask,
25461 _In_ UINT numResourceDescs,
25462 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25463
25464#else
25465 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
25466 ID3D12Device11 * This,
25467 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25468 _In_ UINT visibleMask,
25469 _In_ UINT numResourceDescs,
25470 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
25471
25472#endif
25473
25474 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
25475#if !defined(_WIN32)
25476 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25477 ID3D12Device11 * This,
25478 _In_ UINT nodeMask,
25479 D3D12_HEAP_TYPE heapType);
25480
25481#else
25482 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
25483 ID3D12Device11 * This,
25484 D3D12_HEAP_PROPERTIES * RetVal,
25485 _In_ UINT nodeMask,
25486 D3D12_HEAP_TYPE heapType);
25487
25488#endif
25489
25490 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
25491 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
25492 ID3D12Device11 * This,
25493 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25494 D3D12_HEAP_FLAGS HeapFlags,
25495 _In_ const D3D12_RESOURCE_DESC *pDesc,
25496 D3D12_RESOURCE_STATES InitialResourceState,
25497 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25498 REFIID riidResource,
25499 _COM_Outptr_opt_ void **ppvResource);
25500
25501 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
25502 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
25503 ID3D12Device11 * This,
25504 _In_ const D3D12_HEAP_DESC *pDesc,
25505 REFIID riid,
25506 _COM_Outptr_opt_ void **ppvHeap);
25507
25508 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
25509 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
25510 ID3D12Device11 * This,
25511 _In_ ID3D12Heap *pHeap,
25512 UINT64 HeapOffset,
25513 _In_ const D3D12_RESOURCE_DESC *pDesc,
25514 D3D12_RESOURCE_STATES InitialState,
25515 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25516 REFIID riid,
25517 _COM_Outptr_opt_ void **ppvResource);
25518
25519 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
25520 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
25521 ID3D12Device11 * This,
25522 _In_ const D3D12_RESOURCE_DESC *pDesc,
25523 D3D12_RESOURCE_STATES InitialState,
25524 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25525 REFIID riid,
25526 _COM_Outptr_opt_ void **ppvResource);
25527
25528 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
25529 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
25530 ID3D12Device11 * This,
25531 _In_ ID3D12DeviceChild *pObject,
25532 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
25533 DWORD Access,
25534 _In_opt_ LPCWSTR Name,
25535 _Out_ HANDLE *pHandle);
25536
25537 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
25538 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
25539 ID3D12Device11 * This,
25540 _In_ HANDLE NTHandle,
25541 REFIID riid,
25542 _COM_Outptr_opt_ void **ppvObj);
25543
25544 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
25545 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
25546 ID3D12Device11 * This,
25547 _In_ LPCWSTR Name,
25548 DWORD Access,
25549 /* [annotation][out] */
25550 _Out_ HANDLE *pNTHandle);
25551
25552 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
25553 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
25554 ID3D12Device11 * This,
25555 UINT NumObjects,
25556 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25557
25558 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
25559 HRESULT ( STDMETHODCALLTYPE *Evict )(
25560 ID3D12Device11 * This,
25561 UINT NumObjects,
25562 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
25563
25564 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
25565 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
25566 ID3D12Device11 * This,
25567 UINT64 InitialValue,
25568 D3D12_FENCE_FLAGS Flags,
25569 REFIID riid,
25570 _COM_Outptr_ void **ppFence);
25571
25572 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
25573 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
25574 ID3D12Device11 * This);
25575
25576 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
25577 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
25578 ID3D12Device11 * This,
25579 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
25580 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25581 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25582 UINT64 BaseOffset,
25583 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25584 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25585 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25586 _Out_opt_ UINT64 *pTotalBytes);
25587
25588 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
25589 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
25590 ID3D12Device11 * This,
25591 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
25592 REFIID riid,
25593 _COM_Outptr_opt_ void **ppvHeap);
25594
25595 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
25596 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
25597 ID3D12Device11 * This,
25598 BOOL Enable);
25599
25600 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
25601 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
25602 ID3D12Device11 * This,
25603 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
25604 _In_opt_ ID3D12RootSignature *pRootSignature,
25605 REFIID riid,
25606 _COM_Outptr_opt_ void **ppvCommandSignature);
25607
25608 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
25609 void ( STDMETHODCALLTYPE *GetResourceTiling )(
25610 ID3D12Device11 * This,
25611 _In_ ID3D12Resource *pTiledResource,
25612 _Out_opt_ UINT *pNumTilesForEntireResource,
25613 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
25614 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
25615 _Inout_opt_ UINT *pNumSubresourceTilings,
25616 _In_ UINT FirstSubresourceTilingToGet,
25617 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
25618
25619 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
25620#if !defined(_WIN32)
25621 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
25622 ID3D12Device11 * This);
25623
25624#else
25625 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
25626 ID3D12Device11 * This,
25627 LUID * RetVal);
25628
25629#endif
25630
25631 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
25632 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
25633 ID3D12Device11 * This,
25634 _In_reads_(BlobLength) const void *pLibraryBlob,
25635 SIZE_T BlobLength,
25636 REFIID riid,
25637 _COM_Outptr_ void **ppPipelineLibrary);
25638
25639 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
25640 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
25641 ID3D12Device11 * This,
25642 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
25643 _In_reads_(NumFences) const UINT64 *pFenceValues,
25644 UINT NumFences,
25645 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
25646 HANDLE hEvent);
25647
25648 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
25649 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
25650 ID3D12Device11 * This,
25651 UINT NumObjects,
25652 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25653 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
25654
25655 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
25656 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
25657 ID3D12Device11 * This,
25658 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
25659 REFIID riid,
25660 _COM_Outptr_ void **ppPipelineState);
25661
25662 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
25663 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
25664 ID3D12Device11 * This,
25665 _In_ const void *pAddress,
25666 REFIID riid,
25667 _COM_Outptr_ void **ppvHeap);
25668
25669 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
25670 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
25671 ID3D12Device11 * This,
25672 _In_ HANDLE hFileMapping,
25673 REFIID riid,
25674 _COM_Outptr_ void **ppvHeap);
25675
25676 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
25677 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
25678 ID3D12Device11 * This,
25679 D3D12_RESIDENCY_FLAGS Flags,
25680 UINT NumObjects,
25681 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
25682 _In_ ID3D12Fence *pFenceToSignal,
25683 UINT64 FenceValueToSignal);
25684
25685 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
25686 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
25687 ID3D12Device11 * This,
25688 _In_ UINT nodeMask,
25689 _In_ D3D12_COMMAND_LIST_TYPE type,
25690 _In_ D3D12_COMMAND_LIST_FLAGS flags,
25691 REFIID riid,
25692 _COM_Outptr_ void **ppCommandList);
25693
25694 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
25695 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
25696 ID3D12Device11 * This,
25697 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
25698 _In_ REFIID riid,
25699 _COM_Outptr_ void **ppSession);
25700
25701 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
25702 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
25703 ID3D12Device11 * This,
25704 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25705 D3D12_HEAP_FLAGS HeapFlags,
25706 _In_ const D3D12_RESOURCE_DESC *pDesc,
25707 D3D12_RESOURCE_STATES InitialResourceState,
25708 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25709 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25710 REFIID riidResource,
25711 _COM_Outptr_opt_ void **ppvResource);
25712
25713 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
25714 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
25715 ID3D12Device11 * This,
25716 _In_ const D3D12_HEAP_DESC *pDesc,
25717 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25718 REFIID riid,
25719 _COM_Outptr_opt_ void **ppvHeap);
25720
25721 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
25722 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
25723 ID3D12Device11 * This,
25724 _In_ const D3D12_RESOURCE_DESC *pDesc,
25725 D3D12_RESOURCE_STATES InitialState,
25726 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25727 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25728 REFIID riid,
25729 _COM_Outptr_opt_ void **ppvResource);
25730
25731 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
25732#if !defined(_WIN32)
25733 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25734 ID3D12Device11 * This,
25735 UINT visibleMask,
25736 UINT numResourceDescs,
25737 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25738 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25739
25740#else
25741 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
25742 ID3D12Device11 * This,
25743 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25744 UINT visibleMask,
25745 UINT numResourceDescs,
25746 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
25747 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25748
25749#endif
25750
25751 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
25752 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
25753 ID3D12Device11 * This,
25754 _In_ ID3D12LifetimeOwner *pOwner,
25755 REFIID riid,
25756 _COM_Outptr_ void **ppvTracker);
25757
25758 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
25759 void ( STDMETHODCALLTYPE *RemoveDevice )(
25760 ID3D12Device11 * This);
25761
25762 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
25763 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
25764 ID3D12Device11 * This,
25765 _Inout_ UINT *pNumMetaCommands,
25766 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
25767
25768 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
25769 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
25770 ID3D12Device11 * This,
25771 _In_ REFGUID CommandId,
25772 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
25773 _Out_opt_ UINT *pTotalStructureSizeInBytes,
25774 _Inout_ UINT *pParameterCount,
25775 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
25776
25777 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
25778 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
25779 ID3D12Device11 * This,
25780 _In_ REFGUID CommandId,
25781 _In_ UINT NodeMask,
25782 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
25783 _In_ SIZE_T CreationParametersDataSizeInBytes,
25784 REFIID riid,
25785 _COM_Outptr_ void **ppMetaCommand);
25786
25787 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
25788 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
25789 ID3D12Device11 * This,
25790 const D3D12_STATE_OBJECT_DESC *pDesc,
25791 REFIID riid,
25792 _COM_Outptr_ void **ppStateObject);
25793
25794 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
25795 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
25796 ID3D12Device11 * This,
25797 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
25798 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
25799
25800 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
25801 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
25802 ID3D12Device11 * This,
25803 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
25804 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
25805
25806 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
25807 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
25808 ID3D12Device11 * This,
25809 D3D12_BACKGROUND_PROCESSING_MODE Mode,
25810 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
25811 _In_opt_ HANDLE hEventToSignalUponCompletion,
25812 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
25813
25814 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
25815 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
25816 ID3D12Device11 * This,
25817 const D3D12_STATE_OBJECT_DESC *pAddition,
25818 ID3D12StateObject *pStateObjectToGrowFrom,
25819 REFIID riid,
25820 _COM_Outptr_ void **ppNewStateObject);
25821
25822 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
25823 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
25824 ID3D12Device11 * This,
25825 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
25826 _In_ REFIID riid,
25827 _COM_Outptr_ void **ppSession);
25828
25829 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
25830#if !defined(_WIN32)
25831 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25832 ID3D12Device11 * This,
25833 UINT visibleMask,
25834 UINT numResourceDescs,
25835 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25836 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25837
25838#else
25839 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
25840 ID3D12Device11 * This,
25841 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
25842 UINT visibleMask,
25843 UINT numResourceDescs,
25844 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
25845 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
25846
25847#endif
25848
25849 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
25850 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
25851 ID3D12Device11 * This,
25852 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25853 D3D12_HEAP_FLAGS HeapFlags,
25854 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25855 D3D12_RESOURCE_STATES InitialResourceState,
25856 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25857 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25858 REFIID riidResource,
25859 _COM_Outptr_opt_ void **ppvResource);
25860
25861 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
25862 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
25863 ID3D12Device11 * This,
25864 _In_ ID3D12Heap *pHeap,
25865 UINT64 HeapOffset,
25866 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25867 D3D12_RESOURCE_STATES InitialState,
25868 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25869 REFIID riid,
25870 _COM_Outptr_opt_ void **ppvResource);
25871
25872 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
25873 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
25874 ID3D12Device11 * This,
25875 _In_opt_ ID3D12Resource *pTargetedResource,
25876 _In_opt_ ID3D12Resource *pFeedbackResource,
25877 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25878
25879 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
25880 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
25881 ID3D12Device11 * This,
25882 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
25883 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
25884 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
25885 UINT64 BaseOffset,
25886 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
25887 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
25888 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
25889 _Out_opt_ UINT64 *pTotalBytes);
25890
25891 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
25892 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
25893 ID3D12Device11 * This,
25894 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
25895 REFIID riid,
25896 _COM_Outptr_opt_ void **ppvSession);
25897
25898 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
25899 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
25900 ID3D12Device11 * This,
25901 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
25902 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
25903
25904 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
25905 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
25906 ID3D12Device11 * This,
25907 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
25908 REFIID CreatorID,
25909 REFIID riid,
25910 _COM_Outptr_ void **ppCommandQueue);
25911
25912 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
25913 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
25914 ID3D12Device11 * This,
25915 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
25916 D3D12_HEAP_FLAGS HeapFlags,
25917 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25918 D3D12_BARRIER_LAYOUT InitialLayout,
25919 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25920 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25921 UINT32 NumCastableFormats,
25922 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25923 REFIID riidResource,
25924 _COM_Outptr_opt_ void **ppvResource);
25925
25926 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
25927 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
25928 ID3D12Device11 * This,
25929 _In_ ID3D12Heap *pHeap,
25930 UINT64 HeapOffset,
25931 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
25932 D3D12_BARRIER_LAYOUT InitialLayout,
25933 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25934 UINT32 NumCastableFormats,
25935 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25936 REFIID riid,
25937 _COM_Outptr_opt_ void **ppvResource);
25938
25939 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
25940 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
25941 ID3D12Device11 * This,
25942 _In_ const D3D12_RESOURCE_DESC *pDesc,
25943 D3D12_BARRIER_LAYOUT InitialLayout,
25944 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
25945 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
25946 UINT32 NumCastableFormats,
25947 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
25948 REFIID riid,
25949 _COM_Outptr_opt_ void **ppvResource);
25950
25951 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
25952 void ( STDMETHODCALLTYPE *CreateSampler2 )(
25953 ID3D12Device11 * This,
25954 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
25955 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
25956
25957 END_INTERFACE
25958 } ID3D12Device11Vtbl;
25959
25960 interface ID3D12Device11
25961 {
25962 CONST_VTBL struct ID3D12Device11Vtbl *lpVtbl;
25963 };
25964
25965
25966
25967#ifdef COBJMACROS
25968
25969
25970#define ID3D12Device11_QueryInterface(This,riid,ppvObject) \
25971 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
25972
25973#define ID3D12Device11_AddRef(This) \
25974 ( (This)->lpVtbl -> AddRef(This) )
25975
25976#define ID3D12Device11_Release(This) \
25977 ( (This)->lpVtbl -> Release(This) )
25978
25979
25980#define ID3D12Device11_GetPrivateData(This,guid,pDataSize,pData) \
25981 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
25982
25983#define ID3D12Device11_SetPrivateData(This,guid,DataSize,pData) \
25984 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
25985
25986#define ID3D12Device11_SetPrivateDataInterface(This,guid,pData) \
25987 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
25988
25989#define ID3D12Device11_SetName(This,Name) \
25990 ( (This)->lpVtbl -> SetName(This,Name) )
25991
25992
25993#define ID3D12Device11_GetNodeCount(This) \
25994 ( (This)->lpVtbl -> GetNodeCount(This) )
25995
25996#define ID3D12Device11_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
25997 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
25998
25999#define ID3D12Device11_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
26000 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
26001
26002#define ID3D12Device11_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
26003 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
26004
26005#define ID3D12Device11_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
26006 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
26007
26008#define ID3D12Device11_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
26009 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
26010
26011#define ID3D12Device11_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
26012 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
26013
26014#define ID3D12Device11_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
26015 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
26016
26017#define ID3D12Device11_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
26018 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
26019
26020#define ID3D12Device11_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
26021 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
26022
26023#define ID3D12Device11_CreateConstantBufferView(This,pDesc,DestDescriptor) \
26024 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
26025
26026#define ID3D12Device11_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
26027 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
26028
26029#define ID3D12Device11_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
26030 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
26031
26032#define ID3D12Device11_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
26033 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
26034
26035#define ID3D12Device11_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
26036 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
26037
26038#define ID3D12Device11_CreateSampler(This,pDesc,DestDescriptor) \
26039 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
26040
26041#define ID3D12Device11_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
26042 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
26043
26044#define ID3D12Device11_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
26045 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
26046#if !defined(_WIN32)
26047
26048#define ID3D12Device11_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
26049 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
26050#else
26051#define ID3D12Device11_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
26052 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
26053#endif
26054#if !defined(_WIN32)
26055
26056#define ID3D12Device11_GetCustomHeapProperties(This,nodeMask,heapType) \
26057 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
26058#else
26059#define ID3D12Device11_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
26060 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
26061#endif
26062
26063#define ID3D12Device11_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
26064 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
26065
26066#define ID3D12Device11_CreateHeap(This,pDesc,riid,ppvHeap) \
26067 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
26068
26069#define ID3D12Device11_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26070 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26071
26072#define ID3D12Device11_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26073 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26074
26075#define ID3D12Device11_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
26076 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
26077
26078#define ID3D12Device11_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
26079 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
26080
26081#define ID3D12Device11_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
26082 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
26083
26084#define ID3D12Device11_MakeResident(This,NumObjects,ppObjects) \
26085 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
26086
26087#define ID3D12Device11_Evict(This,NumObjects,ppObjects) \
26088 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
26089
26090#define ID3D12Device11_CreateFence(This,InitialValue,Flags,riid,ppFence) \
26091 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
26092
26093#define ID3D12Device11_GetDeviceRemovedReason(This) \
26094 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
26095
26096#define ID3D12Device11_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26097 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26098
26099#define ID3D12Device11_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
26100 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
26101
26102#define ID3D12Device11_SetStablePowerState(This,Enable) \
26103 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
26104
26105#define ID3D12Device11_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
26106 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
26107
26108#define ID3D12Device11_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
26109 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
26110#if !defined(_WIN32)
26111
26112#define ID3D12Device11_GetAdapterLuid(This) \
26113 ( (This)->lpVtbl -> GetAdapterLuid(This) )
26114#else
26115#define ID3D12Device11_GetAdapterLuid(This,RetVal) \
26116 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
26117#endif
26118
26119
26120#define ID3D12Device11_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
26121 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
26122
26123#define ID3D12Device11_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
26124 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
26125
26126#define ID3D12Device11_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
26127 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
26128
26129
26130#define ID3D12Device11_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
26131 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
26132
26133
26134#define ID3D12Device11_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
26135 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
26136
26137#define ID3D12Device11_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
26138 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
26139
26140#define ID3D12Device11_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
26141 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
26142
26143
26144#define ID3D12Device11_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
26145 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
26146
26147#define ID3D12Device11_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
26148 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
26149
26150#define ID3D12Device11_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26151 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26152
26153#define ID3D12Device11_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
26154 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
26155
26156#define ID3D12Device11_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
26157 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
26158#if !defined(_WIN32)
26159
26160#define ID3D12Device11_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26161 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26162#else
26163#define ID3D12Device11_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26164 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26165#endif
26166
26167
26168#define ID3D12Device11_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
26169 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
26170
26171#define ID3D12Device11_RemoveDevice(This) \
26172 ( (This)->lpVtbl -> RemoveDevice(This) )
26173
26174#define ID3D12Device11_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
26175 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
26176
26177#define ID3D12Device11_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
26178 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
26179
26180#define ID3D12Device11_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
26181 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
26182
26183#define ID3D12Device11_CreateStateObject(This,pDesc,riid,ppStateObject) \
26184 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
26185
26186#define ID3D12Device11_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
26187 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
26188
26189#define ID3D12Device11_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
26190 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
26191
26192
26193#define ID3D12Device11_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
26194 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
26195
26196
26197#define ID3D12Device11_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
26198 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
26199
26200#define ID3D12Device11_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
26201 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
26202
26203#if !defined(_WIN32)
26204
26205#define ID3D12Device11_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26206 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26207#else
26208#define ID3D12Device11_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
26209 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
26210#endif
26211
26212#define ID3D12Device11_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
26213 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
26214
26215#define ID3D12Device11_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
26216 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
26217
26218#define ID3D12Device11_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
26219 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
26220
26221#define ID3D12Device11_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
26222 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
26223
26224
26225#define ID3D12Device11_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
26226 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
26227
26228#define ID3D12Device11_ShaderCacheControl(This,Kinds,Control) \
26229 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
26230
26231#define ID3D12Device11_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
26232 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
26233
26234
26235#define ID3D12Device11_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
26236 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
26237
26238#define ID3D12Device11_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26239 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26240
26241#define ID3D12Device11_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
26242 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
26243
26244
26245#define ID3D12Device11_CreateSampler2(This,pDesc,DestDescriptor) \
26246 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
26247
26248#endif /* COBJMACROS */
26249
26250
26251#endif /* C style interface */
26252
26253
26254
26255
26256#endif /* __ID3D12Device11_INTERFACE_DEFINED__ */
26257
26258
26259#ifndef __ID3D12Device12_INTERFACE_DEFINED__
26260#define __ID3D12Device12_INTERFACE_DEFINED__
26261
26262/* interface ID3D12Device12 */
26263/* [unique][local][object][uuid] */
26264
26265
26266EXTERN_C const IID IID_ID3D12Device12;
26267
26268#if defined(__cplusplus) && !defined(CINTERFACE)
26269
26270 MIDL_INTERFACE("5af5c532-4c91-4cd0-b541-15a405395fc5")
26271 ID3D12Device12 : public ID3D12Device11
26272 {
26273 public:
26274#if defined(_MSC_VER) || !defined(_WIN32)
26275 virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo3(
26276 UINT visibleMask,
26277 UINT numResourceDescs,
26278 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26279 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26280 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26281 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26282#else
26283 virtual D3D12_RESOURCE_ALLOCATION_INFO *STDMETHODCALLTYPE GetResourceAllocationInfo3(
26284 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26285 UINT visibleMask,
26286 UINT numResourceDescs,
26287 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26288 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26289 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26290 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1) = 0;
26291#endif
26292
26293 };
26294
26295
26296#else /* C style interface */
26297
26298 typedef struct ID3D12Device12Vtbl
26299 {
26300 BEGIN_INTERFACE
26301
26302 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
26303 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
26304 ID3D12Device12 * This,
26305 REFIID riid,
26306 _COM_Outptr_ void **ppvObject);
26307
26308 DECLSPEC_XFGVIRT(IUnknown, AddRef)
26309 ULONG ( STDMETHODCALLTYPE *AddRef )(
26310 ID3D12Device12 * This);
26311
26312 DECLSPEC_XFGVIRT(IUnknown, Release)
26313 ULONG ( STDMETHODCALLTYPE *Release )(
26314 ID3D12Device12 * This);
26315
26316 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
26317 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
26318 ID3D12Device12 * This,
26319 _In_ REFGUID guid,
26320 _Inout_ UINT *pDataSize,
26321 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
26322
26323 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
26324 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
26325 ID3D12Device12 * This,
26326 _In_ REFGUID guid,
26327 _In_ UINT DataSize,
26328 _In_reads_bytes_opt_( DataSize ) const void *pData);
26329
26330 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
26331 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
26332 ID3D12Device12 * This,
26333 _In_ REFGUID guid,
26334 _In_opt_ const IUnknown *pData);
26335
26336 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
26337 HRESULT ( STDMETHODCALLTYPE *SetName )(
26338 ID3D12Device12 * This,
26339 _In_z_ LPCWSTR Name);
26340
26341 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
26342 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
26343 ID3D12Device12 * This);
26344
26345 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
26346 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
26347 ID3D12Device12 * This,
26348 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26349 REFIID riid,
26350 _COM_Outptr_ void **ppCommandQueue);
26351
26352 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
26353 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
26354 ID3D12Device12 * This,
26355 _In_ D3D12_COMMAND_LIST_TYPE type,
26356 REFIID riid,
26357 _COM_Outptr_ void **ppCommandAllocator);
26358
26359 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
26360 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
26361 ID3D12Device12 * This,
26362 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
26363 REFIID riid,
26364 _COM_Outptr_ void **ppPipelineState);
26365
26366 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
26367 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
26368 ID3D12Device12 * This,
26369 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
26370 REFIID riid,
26371 _COM_Outptr_ void **ppPipelineState);
26372
26373 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
26374 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
26375 ID3D12Device12 * This,
26376 _In_ UINT nodeMask,
26377 _In_ D3D12_COMMAND_LIST_TYPE type,
26378 _In_ ID3D12CommandAllocator *pCommandAllocator,
26379 _In_opt_ ID3D12PipelineState *pInitialState,
26380 REFIID riid,
26381 _COM_Outptr_ void **ppCommandList);
26382
26383 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
26384 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
26385 ID3D12Device12 * This,
26386 D3D12_FEATURE Feature,
26387 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
26388 UINT FeatureSupportDataSize);
26389
26390 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
26391 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
26392 ID3D12Device12 * This,
26393 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
26394 REFIID riid,
26395 _COM_Outptr_ void **ppvHeap);
26396
26397 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
26398 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
26399 ID3D12Device12 * This,
26400 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
26401
26402 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
26403 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
26404 ID3D12Device12 * This,
26405 _In_ UINT nodeMask,
26406 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
26407 _In_ SIZE_T blobLengthInBytes,
26408 REFIID riid,
26409 _COM_Outptr_ void **ppvRootSignature);
26410
26411 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
26412 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
26413 ID3D12Device12 * This,
26414 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
26415 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26416
26417 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
26418 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
26419 ID3D12Device12 * This,
26420 _In_opt_ ID3D12Resource *pResource,
26421 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
26422 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26423
26424 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
26425 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
26426 ID3D12Device12 * This,
26427 _In_opt_ ID3D12Resource *pResource,
26428 _In_opt_ ID3D12Resource *pCounterResource,
26429 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
26430 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26431
26432 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
26433 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
26434 ID3D12Device12 * This,
26435 _In_opt_ ID3D12Resource *pResource,
26436 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
26437 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26438
26439 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
26440 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
26441 ID3D12Device12 * This,
26442 _In_opt_ ID3D12Resource *pResource,
26443 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
26444 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26445
26446 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
26447 void ( STDMETHODCALLTYPE *CreateSampler )(
26448 ID3D12Device12 * This,
26449 _In_ const D3D12_SAMPLER_DESC *pDesc,
26450 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26451
26452 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
26453 void ( STDMETHODCALLTYPE *CopyDescriptors )(
26454 ID3D12Device12 * This,
26455 _In_ UINT NumDestDescriptorRanges,
26456 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
26457 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
26458 _In_ UINT NumSrcDescriptorRanges,
26459 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
26460 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
26461 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26462
26463 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
26464 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
26465 ID3D12Device12 * This,
26466 _In_ UINT NumDescriptors,
26467 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
26468 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
26469 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
26470
26471 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
26472#if !defined(_WIN32)
26473 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26474 ID3D12Device12 * This,
26475 _In_ UINT visibleMask,
26476 _In_ UINT numResourceDescs,
26477 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26478
26479#else
26480 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
26481 ID3D12Device12 * This,
26482 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26483 _In_ UINT visibleMask,
26484 _In_ UINT numResourceDescs,
26485 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
26486
26487#endif
26488
26489 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
26490#if !defined(_WIN32)
26491 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26492 ID3D12Device12 * This,
26493 _In_ UINT nodeMask,
26494 D3D12_HEAP_TYPE heapType);
26495
26496#else
26497 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
26498 ID3D12Device12 * This,
26499 D3D12_HEAP_PROPERTIES * RetVal,
26500 _In_ UINT nodeMask,
26501 D3D12_HEAP_TYPE heapType);
26502
26503#endif
26504
26505 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
26506 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
26507 ID3D12Device12 * This,
26508 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26509 D3D12_HEAP_FLAGS HeapFlags,
26510 _In_ const D3D12_RESOURCE_DESC *pDesc,
26511 D3D12_RESOURCE_STATES InitialResourceState,
26512 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26513 REFIID riidResource,
26514 _COM_Outptr_opt_ void **ppvResource);
26515
26516 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
26517 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
26518 ID3D12Device12 * This,
26519 _In_ const D3D12_HEAP_DESC *pDesc,
26520 REFIID riid,
26521 _COM_Outptr_opt_ void **ppvHeap);
26522
26523 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
26524 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
26525 ID3D12Device12 * This,
26526 _In_ ID3D12Heap *pHeap,
26527 UINT64 HeapOffset,
26528 _In_ const D3D12_RESOURCE_DESC *pDesc,
26529 D3D12_RESOURCE_STATES InitialState,
26530 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26531 REFIID riid,
26532 _COM_Outptr_opt_ void **ppvResource);
26533
26534 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
26535 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
26536 ID3D12Device12 * This,
26537 _In_ const D3D12_RESOURCE_DESC *pDesc,
26538 D3D12_RESOURCE_STATES InitialState,
26539 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26540 REFIID riid,
26541 _COM_Outptr_opt_ void **ppvResource);
26542
26543 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
26544 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
26545 ID3D12Device12 * This,
26546 _In_ ID3D12DeviceChild *pObject,
26547 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
26548 DWORD Access,
26549 _In_opt_ LPCWSTR Name,
26550 _Out_ HANDLE *pHandle);
26551
26552 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
26553 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
26554 ID3D12Device12 * This,
26555 _In_ HANDLE NTHandle,
26556 REFIID riid,
26557 _COM_Outptr_opt_ void **ppvObj);
26558
26559 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
26560 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
26561 ID3D12Device12 * This,
26562 _In_ LPCWSTR Name,
26563 DWORD Access,
26564 /* [annotation][out] */
26565 _Out_ HANDLE *pNTHandle);
26566
26567 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
26568 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
26569 ID3D12Device12 * This,
26570 UINT NumObjects,
26571 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26572
26573 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
26574 HRESULT ( STDMETHODCALLTYPE *Evict )(
26575 ID3D12Device12 * This,
26576 UINT NumObjects,
26577 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
26578
26579 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
26580 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
26581 ID3D12Device12 * This,
26582 UINT64 InitialValue,
26583 D3D12_FENCE_FLAGS Flags,
26584 REFIID riid,
26585 _COM_Outptr_ void **ppFence);
26586
26587 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
26588 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
26589 ID3D12Device12 * This);
26590
26591 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
26592 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
26593 ID3D12Device12 * This,
26594 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
26595 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26596 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26597 UINT64 BaseOffset,
26598 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26599 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26600 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26601 _Out_opt_ UINT64 *pTotalBytes);
26602
26603 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
26604 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
26605 ID3D12Device12 * This,
26606 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
26607 REFIID riid,
26608 _COM_Outptr_opt_ void **ppvHeap);
26609
26610 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
26611 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
26612 ID3D12Device12 * This,
26613 BOOL Enable);
26614
26615 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
26616 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
26617 ID3D12Device12 * This,
26618 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
26619 _In_opt_ ID3D12RootSignature *pRootSignature,
26620 REFIID riid,
26621 _COM_Outptr_opt_ void **ppvCommandSignature);
26622
26623 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
26624 void ( STDMETHODCALLTYPE *GetResourceTiling )(
26625 ID3D12Device12 * This,
26626 _In_ ID3D12Resource *pTiledResource,
26627 _Out_opt_ UINT *pNumTilesForEntireResource,
26628 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
26629 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
26630 _Inout_opt_ UINT *pNumSubresourceTilings,
26631 _In_ UINT FirstSubresourceTilingToGet,
26632 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
26633
26634 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
26635#if !defined(_WIN32)
26636 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
26637 ID3D12Device12 * This);
26638
26639#else
26640 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
26641 ID3D12Device12 * This,
26642 LUID * RetVal);
26643
26644#endif
26645
26646 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
26647 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
26648 ID3D12Device12 * This,
26649 _In_reads_(BlobLength) const void *pLibraryBlob,
26650 SIZE_T BlobLength,
26651 REFIID riid,
26652 _COM_Outptr_ void **ppPipelineLibrary);
26653
26654 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
26655 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
26656 ID3D12Device12 * This,
26657 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
26658 _In_reads_(NumFences) const UINT64 *pFenceValues,
26659 UINT NumFences,
26660 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
26661 HANDLE hEvent);
26662
26663 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
26664 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
26665 ID3D12Device12 * This,
26666 UINT NumObjects,
26667 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26668 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
26669
26670 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
26671 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
26672 ID3D12Device12 * This,
26673 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
26674 REFIID riid,
26675 _COM_Outptr_ void **ppPipelineState);
26676
26677 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
26678 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
26679 ID3D12Device12 * This,
26680 _In_ const void *pAddress,
26681 REFIID riid,
26682 _COM_Outptr_ void **ppvHeap);
26683
26684 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
26685 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
26686 ID3D12Device12 * This,
26687 _In_ HANDLE hFileMapping,
26688 REFIID riid,
26689 _COM_Outptr_ void **ppvHeap);
26690
26691 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
26692 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
26693 ID3D12Device12 * This,
26694 D3D12_RESIDENCY_FLAGS Flags,
26695 UINT NumObjects,
26696 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
26697 _In_ ID3D12Fence *pFenceToSignal,
26698 UINT64 FenceValueToSignal);
26699
26700 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
26701 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
26702 ID3D12Device12 * This,
26703 _In_ UINT nodeMask,
26704 _In_ D3D12_COMMAND_LIST_TYPE type,
26705 _In_ D3D12_COMMAND_LIST_FLAGS flags,
26706 REFIID riid,
26707 _COM_Outptr_ void **ppCommandList);
26708
26709 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
26710 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
26711 ID3D12Device12 * This,
26712 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
26713 _In_ REFIID riid,
26714 _COM_Outptr_ void **ppSession);
26715
26716 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
26717 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
26718 ID3D12Device12 * This,
26719 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26720 D3D12_HEAP_FLAGS HeapFlags,
26721 _In_ const D3D12_RESOURCE_DESC *pDesc,
26722 D3D12_RESOURCE_STATES InitialResourceState,
26723 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26724 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26725 REFIID riidResource,
26726 _COM_Outptr_opt_ void **ppvResource);
26727
26728 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
26729 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
26730 ID3D12Device12 * This,
26731 _In_ const D3D12_HEAP_DESC *pDesc,
26732 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26733 REFIID riid,
26734 _COM_Outptr_opt_ void **ppvHeap);
26735
26736 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
26737 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
26738 ID3D12Device12 * This,
26739 _In_ const D3D12_RESOURCE_DESC *pDesc,
26740 D3D12_RESOURCE_STATES InitialState,
26741 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26742 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26743 REFIID riid,
26744 _COM_Outptr_opt_ void **ppvResource);
26745
26746 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
26747#if !defined(_WIN32)
26748 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26749 ID3D12Device12 * This,
26750 UINT visibleMask,
26751 UINT numResourceDescs,
26752 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26753 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26754
26755#else
26756 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
26757 ID3D12Device12 * This,
26758 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26759 UINT visibleMask,
26760 UINT numResourceDescs,
26761 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
26762 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26763
26764#endif
26765
26766 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
26767 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
26768 ID3D12Device12 * This,
26769 _In_ ID3D12LifetimeOwner *pOwner,
26770 REFIID riid,
26771 _COM_Outptr_ void **ppvTracker);
26772
26773 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
26774 void ( STDMETHODCALLTYPE *RemoveDevice )(
26775 ID3D12Device12 * This);
26776
26777 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
26778 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
26779 ID3D12Device12 * This,
26780 _Inout_ UINT *pNumMetaCommands,
26781 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
26782
26783 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
26784 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
26785 ID3D12Device12 * This,
26786 _In_ REFGUID CommandId,
26787 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
26788 _Out_opt_ UINT *pTotalStructureSizeInBytes,
26789 _Inout_ UINT *pParameterCount,
26790 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
26791
26792 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
26793 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
26794 ID3D12Device12 * This,
26795 _In_ REFGUID CommandId,
26796 _In_ UINT NodeMask,
26797 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
26798 _In_ SIZE_T CreationParametersDataSizeInBytes,
26799 REFIID riid,
26800 _COM_Outptr_ void **ppMetaCommand);
26801
26802 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
26803 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
26804 ID3D12Device12 * This,
26805 const D3D12_STATE_OBJECT_DESC *pDesc,
26806 REFIID riid,
26807 _COM_Outptr_ void **ppStateObject);
26808
26809 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
26810 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
26811 ID3D12Device12 * This,
26812 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
26813 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
26814
26815 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
26816 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
26817 ID3D12Device12 * This,
26818 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
26819 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
26820
26821 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
26822 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
26823 ID3D12Device12 * This,
26824 D3D12_BACKGROUND_PROCESSING_MODE Mode,
26825 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
26826 _In_opt_ HANDLE hEventToSignalUponCompletion,
26827 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
26828
26829 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
26830 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
26831 ID3D12Device12 * This,
26832 const D3D12_STATE_OBJECT_DESC *pAddition,
26833 ID3D12StateObject *pStateObjectToGrowFrom,
26834 REFIID riid,
26835 _COM_Outptr_ void **ppNewStateObject);
26836
26837 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
26838 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
26839 ID3D12Device12 * This,
26840 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
26841 _In_ REFIID riid,
26842 _COM_Outptr_ void **ppSession);
26843
26844 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
26845#if !defined(_WIN32)
26846 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26847 ID3D12Device12 * This,
26848 UINT visibleMask,
26849 UINT numResourceDescs,
26850 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26851 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26852
26853#else
26854 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
26855 ID3D12Device12 * This,
26856 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26857 UINT visibleMask,
26858 UINT numResourceDescs,
26859 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26860 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26861
26862#endif
26863
26864 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
26865 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
26866 ID3D12Device12 * This,
26867 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26868 D3D12_HEAP_FLAGS HeapFlags,
26869 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26870 D3D12_RESOURCE_STATES InitialResourceState,
26871 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26872 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26873 REFIID riidResource,
26874 _COM_Outptr_opt_ void **ppvResource);
26875
26876 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
26877 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
26878 ID3D12Device12 * This,
26879 _In_ ID3D12Heap *pHeap,
26880 UINT64 HeapOffset,
26881 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26882 D3D12_RESOURCE_STATES InitialState,
26883 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26884 REFIID riid,
26885 _COM_Outptr_opt_ void **ppvResource);
26886
26887 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
26888 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
26889 ID3D12Device12 * This,
26890 _In_opt_ ID3D12Resource *pTargetedResource,
26891 _In_opt_ ID3D12Resource *pFeedbackResource,
26892 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26893
26894 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
26895 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
26896 ID3D12Device12 * This,
26897 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
26898 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
26899 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
26900 UINT64 BaseOffset,
26901 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
26902 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
26903 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
26904 _Out_opt_ UINT64 *pTotalBytes);
26905
26906 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
26907 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
26908 ID3D12Device12 * This,
26909 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
26910 REFIID riid,
26911 _COM_Outptr_opt_ void **ppvSession);
26912
26913 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
26914 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
26915 ID3D12Device12 * This,
26916 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
26917 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
26918
26919 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
26920 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
26921 ID3D12Device12 * This,
26922 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
26923 REFIID CreatorID,
26924 REFIID riid,
26925 _COM_Outptr_ void **ppCommandQueue);
26926
26927 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
26928 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
26929 ID3D12Device12 * This,
26930 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
26931 D3D12_HEAP_FLAGS HeapFlags,
26932 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26933 D3D12_BARRIER_LAYOUT InitialLayout,
26934 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26935 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26936 UINT32 NumCastableFormats,
26937 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26938 REFIID riidResource,
26939 _COM_Outptr_opt_ void **ppvResource);
26940
26941 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
26942 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
26943 ID3D12Device12 * This,
26944 _In_ ID3D12Heap *pHeap,
26945 UINT64 HeapOffset,
26946 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
26947 D3D12_BARRIER_LAYOUT InitialLayout,
26948 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26949 UINT32 NumCastableFormats,
26950 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26951 REFIID riid,
26952 _COM_Outptr_opt_ void **ppvResource);
26953
26954 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
26955 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
26956 ID3D12Device12 * This,
26957 _In_ const D3D12_RESOURCE_DESC *pDesc,
26958 D3D12_BARRIER_LAYOUT InitialLayout,
26959 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
26960 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
26961 UINT32 NumCastableFormats,
26962 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
26963 REFIID riid,
26964 _COM_Outptr_opt_ void **ppvResource);
26965
26966 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
26967 void ( STDMETHODCALLTYPE *CreateSampler2 )(
26968 ID3D12Device12 * This,
26969 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
26970 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
26971
26972 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
26973#if !defined(_WIN32)
26974 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26975 ID3D12Device12 * This,
26976 UINT visibleMask,
26977 UINT numResourceDescs,
26978 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26979 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26980 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26981 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26982
26983#else
26984 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
26985 ID3D12Device12 * This,
26986 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
26987 UINT visibleMask,
26988 UINT numResourceDescs,
26989 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
26990 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
26991 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
26992 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
26993
26994#endif
26995
26996 END_INTERFACE
26997 } ID3D12Device12Vtbl;
26998
26999 interface ID3D12Device12
27000 {
27001 CONST_VTBL struct ID3D12Device12Vtbl *lpVtbl;
27002 };
27003
27004
27005
27006#ifdef COBJMACROS
27007
27008
27009#define ID3D12Device12_QueryInterface(This,riid,ppvObject) \
27010 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
27011
27012#define ID3D12Device12_AddRef(This) \
27013 ( (This)->lpVtbl -> AddRef(This) )
27014
27015#define ID3D12Device12_Release(This) \
27016 ( (This)->lpVtbl -> Release(This) )
27017
27018
27019#define ID3D12Device12_GetPrivateData(This,guid,pDataSize,pData) \
27020 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
27021
27022#define ID3D12Device12_SetPrivateData(This,guid,DataSize,pData) \
27023 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
27024
27025#define ID3D12Device12_SetPrivateDataInterface(This,guid,pData) \
27026 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
27027
27028#define ID3D12Device12_SetName(This,Name) \
27029 ( (This)->lpVtbl -> SetName(This,Name) )
27030
27031
27032#define ID3D12Device12_GetNodeCount(This) \
27033 ( (This)->lpVtbl -> GetNodeCount(This) )
27034
27035#define ID3D12Device12_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
27036 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
27037
27038#define ID3D12Device12_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
27039 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
27040
27041#define ID3D12Device12_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
27042 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
27043
27044#define ID3D12Device12_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
27045 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
27046
27047#define ID3D12Device12_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
27048 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
27049
27050#define ID3D12Device12_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
27051 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
27052
27053#define ID3D12Device12_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
27054 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
27055
27056#define ID3D12Device12_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
27057 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
27058
27059#define ID3D12Device12_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
27060 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
27061
27062#define ID3D12Device12_CreateConstantBufferView(This,pDesc,DestDescriptor) \
27063 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
27064
27065#define ID3D12Device12_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
27066 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
27067
27068#define ID3D12Device12_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
27069 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
27070
27071#define ID3D12Device12_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
27072 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
27073
27074#define ID3D12Device12_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
27075 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
27076
27077#define ID3D12Device12_CreateSampler(This,pDesc,DestDescriptor) \
27078 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
27079
27080#define ID3D12Device12_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
27081 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
27082
27083#define ID3D12Device12_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
27084 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
27085#if !defined(_WIN32)
27086
27087#define ID3D12Device12_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
27088 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
27089#else
27090#define ID3D12Device12_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
27091 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
27092#endif
27093#if !defined(_WIN32)
27094
27095#define ID3D12Device12_GetCustomHeapProperties(This,nodeMask,heapType) \
27096 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
27097#else
27098#define ID3D12Device12_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
27099 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
27100#endif
27101
27102#define ID3D12Device12_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
27103 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
27104
27105#define ID3D12Device12_CreateHeap(This,pDesc,riid,ppvHeap) \
27106 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
27107
27108#define ID3D12Device12_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27109 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27110
27111#define ID3D12Device12_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27112 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27113
27114#define ID3D12Device12_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
27115 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
27116
27117#define ID3D12Device12_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
27118 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
27119
27120#define ID3D12Device12_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
27121 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
27122
27123#define ID3D12Device12_MakeResident(This,NumObjects,ppObjects) \
27124 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
27125
27126#define ID3D12Device12_Evict(This,NumObjects,ppObjects) \
27127 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
27128
27129#define ID3D12Device12_CreateFence(This,InitialValue,Flags,riid,ppFence) \
27130 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
27131
27132#define ID3D12Device12_GetDeviceRemovedReason(This) \
27133 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
27134
27135#define ID3D12Device12_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27136 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27137
27138#define ID3D12Device12_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
27139 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
27140
27141#define ID3D12Device12_SetStablePowerState(This,Enable) \
27142 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
27143
27144#define ID3D12Device12_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
27145 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
27146
27147#define ID3D12Device12_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
27148 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
27149#if !defined(_WIN32)
27150
27151#define ID3D12Device12_GetAdapterLuid(This) \
27152 ( (This)->lpVtbl -> GetAdapterLuid(This) )
27153#else
27154#define ID3D12Device12_GetAdapterLuid(This,RetVal) \
27155 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
27156#endif
27157
27158
27159#define ID3D12Device12_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
27160 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
27161
27162#define ID3D12Device12_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
27163 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
27164
27165#define ID3D12Device12_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
27166 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
27167
27168
27169#define ID3D12Device12_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
27170 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
27171
27172
27173#define ID3D12Device12_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
27174 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
27175
27176#define ID3D12Device12_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
27177 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
27178
27179#define ID3D12Device12_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
27180 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
27181
27182
27183#define ID3D12Device12_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
27184 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
27185
27186#define ID3D12Device12_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
27187 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
27188
27189#define ID3D12Device12_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27190 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27191
27192#define ID3D12Device12_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
27193 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
27194
27195#define ID3D12Device12_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
27196 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
27197#if !defined(_WIN32)
27198
27199#define ID3D12Device12_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27200 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27201#else
27202#define ID3D12Device12_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27203 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27204#endif
27205
27206
27207#define ID3D12Device12_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
27208 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
27209
27210#define ID3D12Device12_RemoveDevice(This) \
27211 ( (This)->lpVtbl -> RemoveDevice(This) )
27212
27213#define ID3D12Device12_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
27214 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
27215
27216#define ID3D12Device12_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
27217 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
27218
27219#define ID3D12Device12_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
27220 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
27221
27222#define ID3D12Device12_CreateStateObject(This,pDesc,riid,ppStateObject) \
27223 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
27224
27225#define ID3D12Device12_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
27226 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
27227
27228#define ID3D12Device12_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
27229 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
27230
27231
27232#define ID3D12Device12_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
27233 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
27234
27235
27236#define ID3D12Device12_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
27237 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
27238
27239#define ID3D12Device12_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
27240 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
27241
27242#if !defined(_WIN32)
27243
27244#define ID3D12Device12_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27245 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27246#else
27247#define ID3D12Device12_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
27248 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
27249#endif
27250
27251#define ID3D12Device12_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
27252 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
27253
27254#define ID3D12Device12_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
27255 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
27256
27257#define ID3D12Device12_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
27258 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
27259
27260#define ID3D12Device12_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
27261 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
27262
27263
27264#define ID3D12Device12_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
27265 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
27266
27267#define ID3D12Device12_ShaderCacheControl(This,Kinds,Control) \
27268 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
27269
27270#define ID3D12Device12_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
27271 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
27272
27273
27274#define ID3D12Device12_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
27275 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
27276
27277#define ID3D12Device12_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27278 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27279
27280#define ID3D12Device12_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
27281 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
27282
27283
27284#define ID3D12Device12_CreateSampler2(This,pDesc,DestDescriptor) \
27285 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
27286
27287#if !defined(_WIN32)
27288
27289#define ID3D12Device12_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27290 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27291#else
27292#define ID3D12Device12_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
27293 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
27294#endif
27295
27296#endif /* COBJMACROS */
27297
27298
27299#endif /* C style interface */
27300
27301
27302
27303
27304#endif /* __ID3D12Device12_INTERFACE_DEFINED__ */
27305
27306
27307#ifndef __ID3D12Device13_INTERFACE_DEFINED__
27308#define __ID3D12Device13_INTERFACE_DEFINED__
27309
27310/* interface ID3D12Device13 */
27311/* [unique][local][object][uuid] */
27312
27313
27314EXTERN_C const IID IID_ID3D12Device13;
27315
27316#if defined(__cplusplus) && !defined(CINTERFACE)
27317
27318 MIDL_INTERFACE("14eecffc-4df8-40f7-a118-5c816f45695e")
27319 ID3D12Device13 : public ID3D12Device12
27320 {
27321 public:
27322 virtual HRESULT STDMETHODCALLTYPE OpenExistingHeapFromAddress1(
27323 _In_ const void *pAddress,
27324 SIZE_T size,
27325 REFIID riid,
27326 _COM_Outptr_ void **ppvHeap) = 0;
27327
27328 };
27329
27330
27331#else /* C style interface */
27332
27333 typedef struct ID3D12Device13Vtbl
27334 {
27335 BEGIN_INTERFACE
27336
27337 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
27338 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
27339 ID3D12Device13 * This,
27340 REFIID riid,
27341 _COM_Outptr_ void **ppvObject);
27342
27343 DECLSPEC_XFGVIRT(IUnknown, AddRef)
27344 ULONG ( STDMETHODCALLTYPE *AddRef )(
27345 ID3D12Device13 * This);
27346
27347 DECLSPEC_XFGVIRT(IUnknown, Release)
27348 ULONG ( STDMETHODCALLTYPE *Release )(
27349 ID3D12Device13 * This);
27350
27351 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
27352 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
27353 ID3D12Device13 * This,
27354 _In_ REFGUID guid,
27355 _Inout_ UINT *pDataSize,
27356 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
27357
27358 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
27359 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
27360 ID3D12Device13 * This,
27361 _In_ REFGUID guid,
27362 _In_ UINT DataSize,
27363 _In_reads_bytes_opt_( DataSize ) const void *pData);
27364
27365 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
27366 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
27367 ID3D12Device13 * This,
27368 _In_ REFGUID guid,
27369 _In_opt_ const IUnknown *pData);
27370
27371 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
27372 HRESULT ( STDMETHODCALLTYPE *SetName )(
27373 ID3D12Device13 * This,
27374 _In_z_ LPCWSTR Name);
27375
27376 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
27377 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
27378 ID3D12Device13 * This);
27379
27380 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
27381 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
27382 ID3D12Device13 * This,
27383 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27384 REFIID riid,
27385 _COM_Outptr_ void **ppCommandQueue);
27386
27387 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
27388 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
27389 ID3D12Device13 * This,
27390 _In_ D3D12_COMMAND_LIST_TYPE type,
27391 REFIID riid,
27392 _COM_Outptr_ void **ppCommandAllocator);
27393
27394 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
27395 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
27396 ID3D12Device13 * This,
27397 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
27398 REFIID riid,
27399 _COM_Outptr_ void **ppPipelineState);
27400
27401 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
27402 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
27403 ID3D12Device13 * This,
27404 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
27405 REFIID riid,
27406 _COM_Outptr_ void **ppPipelineState);
27407
27408 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
27409 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
27410 ID3D12Device13 * This,
27411 _In_ UINT nodeMask,
27412 _In_ D3D12_COMMAND_LIST_TYPE type,
27413 _In_ ID3D12CommandAllocator *pCommandAllocator,
27414 _In_opt_ ID3D12PipelineState *pInitialState,
27415 REFIID riid,
27416 _COM_Outptr_ void **ppCommandList);
27417
27418 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
27419 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
27420 ID3D12Device13 * This,
27421 D3D12_FEATURE Feature,
27422 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
27423 UINT FeatureSupportDataSize);
27424
27425 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
27426 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
27427 ID3D12Device13 * This,
27428 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
27429 REFIID riid,
27430 _COM_Outptr_ void **ppvHeap);
27431
27432 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
27433 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
27434 ID3D12Device13 * This,
27435 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
27436
27437 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
27438 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
27439 ID3D12Device13 * This,
27440 _In_ UINT nodeMask,
27441 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
27442 _In_ SIZE_T blobLengthInBytes,
27443 REFIID riid,
27444 _COM_Outptr_ void **ppvRootSignature);
27445
27446 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
27447 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
27448 ID3D12Device13 * This,
27449 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
27450 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27451
27452 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
27453 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
27454 ID3D12Device13 * This,
27455 _In_opt_ ID3D12Resource *pResource,
27456 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
27457 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27458
27459 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
27460 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
27461 ID3D12Device13 * This,
27462 _In_opt_ ID3D12Resource *pResource,
27463 _In_opt_ ID3D12Resource *pCounterResource,
27464 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
27465 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27466
27467 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
27468 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
27469 ID3D12Device13 * This,
27470 _In_opt_ ID3D12Resource *pResource,
27471 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
27472 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27473
27474 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
27475 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
27476 ID3D12Device13 * This,
27477 _In_opt_ ID3D12Resource *pResource,
27478 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
27479 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27480
27481 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
27482 void ( STDMETHODCALLTYPE *CreateSampler )(
27483 ID3D12Device13 * This,
27484 _In_ const D3D12_SAMPLER_DESC *pDesc,
27485 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27486
27487 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
27488 void ( STDMETHODCALLTYPE *CopyDescriptors )(
27489 ID3D12Device13 * This,
27490 _In_ UINT NumDestDescriptorRanges,
27491 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
27492 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
27493 _In_ UINT NumSrcDescriptorRanges,
27494 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
27495 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
27496 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27497
27498 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
27499 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
27500 ID3D12Device13 * This,
27501 _In_ UINT NumDescriptors,
27502 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
27503 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
27504 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
27505
27506 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
27507#if !defined(_WIN32)
27508 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27509 ID3D12Device13 * This,
27510 _In_ UINT visibleMask,
27511 _In_ UINT numResourceDescs,
27512 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27513
27514#else
27515 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
27516 ID3D12Device13 * This,
27517 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27518 _In_ UINT visibleMask,
27519 _In_ UINT numResourceDescs,
27520 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
27521
27522#endif
27523
27524 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
27525#if !defined(_WIN32)
27526 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27527 ID3D12Device13 * This,
27528 _In_ UINT nodeMask,
27529 D3D12_HEAP_TYPE heapType);
27530
27531#else
27532 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
27533 ID3D12Device13 * This,
27534 D3D12_HEAP_PROPERTIES * RetVal,
27535 _In_ UINT nodeMask,
27536 D3D12_HEAP_TYPE heapType);
27537
27538#endif
27539
27540 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
27541 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
27542 ID3D12Device13 * This,
27543 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27544 D3D12_HEAP_FLAGS HeapFlags,
27545 _In_ const D3D12_RESOURCE_DESC *pDesc,
27546 D3D12_RESOURCE_STATES InitialResourceState,
27547 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27548 REFIID riidResource,
27549 _COM_Outptr_opt_ void **ppvResource);
27550
27551 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
27552 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
27553 ID3D12Device13 * This,
27554 _In_ const D3D12_HEAP_DESC *pDesc,
27555 REFIID riid,
27556 _COM_Outptr_opt_ void **ppvHeap);
27557
27558 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
27559 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
27560 ID3D12Device13 * This,
27561 _In_ ID3D12Heap *pHeap,
27562 UINT64 HeapOffset,
27563 _In_ const D3D12_RESOURCE_DESC *pDesc,
27564 D3D12_RESOURCE_STATES InitialState,
27565 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27566 REFIID riid,
27567 _COM_Outptr_opt_ void **ppvResource);
27568
27569 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
27570 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
27571 ID3D12Device13 * This,
27572 _In_ const D3D12_RESOURCE_DESC *pDesc,
27573 D3D12_RESOURCE_STATES InitialState,
27574 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27575 REFIID riid,
27576 _COM_Outptr_opt_ void **ppvResource);
27577
27578 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
27579 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
27580 ID3D12Device13 * This,
27581 _In_ ID3D12DeviceChild *pObject,
27582 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
27583 DWORD Access,
27584 _In_opt_ LPCWSTR Name,
27585 _Out_ HANDLE *pHandle);
27586
27587 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
27588 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
27589 ID3D12Device13 * This,
27590 _In_ HANDLE NTHandle,
27591 REFIID riid,
27592 _COM_Outptr_opt_ void **ppvObj);
27593
27594 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
27595 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
27596 ID3D12Device13 * This,
27597 _In_ LPCWSTR Name,
27598 DWORD Access,
27599 /* [annotation][out] */
27600 _Out_ HANDLE *pNTHandle);
27601
27602 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
27603 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
27604 ID3D12Device13 * This,
27605 UINT NumObjects,
27606 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27607
27608 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
27609 HRESULT ( STDMETHODCALLTYPE *Evict )(
27610 ID3D12Device13 * This,
27611 UINT NumObjects,
27612 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
27613
27614 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
27615 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
27616 ID3D12Device13 * This,
27617 UINT64 InitialValue,
27618 D3D12_FENCE_FLAGS Flags,
27619 REFIID riid,
27620 _COM_Outptr_ void **ppFence);
27621
27622 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
27623 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
27624 ID3D12Device13 * This);
27625
27626 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
27627 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
27628 ID3D12Device13 * This,
27629 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
27630 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27631 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27632 UINT64 BaseOffset,
27633 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27634 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27635 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27636 _Out_opt_ UINT64 *pTotalBytes);
27637
27638 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
27639 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
27640 ID3D12Device13 * This,
27641 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
27642 REFIID riid,
27643 _COM_Outptr_opt_ void **ppvHeap);
27644
27645 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
27646 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
27647 ID3D12Device13 * This,
27648 BOOL Enable);
27649
27650 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
27651 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
27652 ID3D12Device13 * This,
27653 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
27654 _In_opt_ ID3D12RootSignature *pRootSignature,
27655 REFIID riid,
27656 _COM_Outptr_opt_ void **ppvCommandSignature);
27657
27658 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
27659 void ( STDMETHODCALLTYPE *GetResourceTiling )(
27660 ID3D12Device13 * This,
27661 _In_ ID3D12Resource *pTiledResource,
27662 _Out_opt_ UINT *pNumTilesForEntireResource,
27663 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
27664 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
27665 _Inout_opt_ UINT *pNumSubresourceTilings,
27666 _In_ UINT FirstSubresourceTilingToGet,
27667 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
27668
27669 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
27670#if !defined(_WIN32)
27671 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
27672 ID3D12Device13 * This);
27673
27674#else
27675 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
27676 ID3D12Device13 * This,
27677 LUID * RetVal);
27678
27679#endif
27680
27681 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
27682 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
27683 ID3D12Device13 * This,
27684 _In_reads_(BlobLength) const void *pLibraryBlob,
27685 SIZE_T BlobLength,
27686 REFIID riid,
27687 _COM_Outptr_ void **ppPipelineLibrary);
27688
27689 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
27690 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
27691 ID3D12Device13 * This,
27692 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
27693 _In_reads_(NumFences) const UINT64 *pFenceValues,
27694 UINT NumFences,
27695 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
27696 HANDLE hEvent);
27697
27698 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
27699 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
27700 ID3D12Device13 * This,
27701 UINT NumObjects,
27702 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27703 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
27704
27705 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
27706 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
27707 ID3D12Device13 * This,
27708 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
27709 REFIID riid,
27710 _COM_Outptr_ void **ppPipelineState);
27711
27712 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
27713 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
27714 ID3D12Device13 * This,
27715 _In_ const void *pAddress,
27716 REFIID riid,
27717 _COM_Outptr_ void **ppvHeap);
27718
27719 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
27720 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
27721 ID3D12Device13 * This,
27722 _In_ HANDLE hFileMapping,
27723 REFIID riid,
27724 _COM_Outptr_ void **ppvHeap);
27725
27726 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
27727 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
27728 ID3D12Device13 * This,
27729 D3D12_RESIDENCY_FLAGS Flags,
27730 UINT NumObjects,
27731 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
27732 _In_ ID3D12Fence *pFenceToSignal,
27733 UINT64 FenceValueToSignal);
27734
27735 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
27736 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
27737 ID3D12Device13 * This,
27738 _In_ UINT nodeMask,
27739 _In_ D3D12_COMMAND_LIST_TYPE type,
27740 _In_ D3D12_COMMAND_LIST_FLAGS flags,
27741 REFIID riid,
27742 _COM_Outptr_ void **ppCommandList);
27743
27744 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
27745 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
27746 ID3D12Device13 * This,
27747 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
27748 _In_ REFIID riid,
27749 _COM_Outptr_ void **ppSession);
27750
27751 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
27752 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
27753 ID3D12Device13 * This,
27754 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27755 D3D12_HEAP_FLAGS HeapFlags,
27756 _In_ const D3D12_RESOURCE_DESC *pDesc,
27757 D3D12_RESOURCE_STATES InitialResourceState,
27758 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27759 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27760 REFIID riidResource,
27761 _COM_Outptr_opt_ void **ppvResource);
27762
27763 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
27764 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
27765 ID3D12Device13 * This,
27766 _In_ const D3D12_HEAP_DESC *pDesc,
27767 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27768 REFIID riid,
27769 _COM_Outptr_opt_ void **ppvHeap);
27770
27771 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
27772 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
27773 ID3D12Device13 * This,
27774 _In_ const D3D12_RESOURCE_DESC *pDesc,
27775 D3D12_RESOURCE_STATES InitialState,
27776 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27777 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27778 REFIID riid,
27779 _COM_Outptr_opt_ void **ppvResource);
27780
27781 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
27782#if !defined(_WIN32)
27783 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27784 ID3D12Device13 * This,
27785 UINT visibleMask,
27786 UINT numResourceDescs,
27787 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27788 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27789
27790#else
27791 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
27792 ID3D12Device13 * This,
27793 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27794 UINT visibleMask,
27795 UINT numResourceDescs,
27796 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
27797 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27798
27799#endif
27800
27801 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
27802 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
27803 ID3D12Device13 * This,
27804 _In_ ID3D12LifetimeOwner *pOwner,
27805 REFIID riid,
27806 _COM_Outptr_ void **ppvTracker);
27807
27808 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
27809 void ( STDMETHODCALLTYPE *RemoveDevice )(
27810 ID3D12Device13 * This);
27811
27812 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
27813 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
27814 ID3D12Device13 * This,
27815 _Inout_ UINT *pNumMetaCommands,
27816 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
27817
27818 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
27819 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
27820 ID3D12Device13 * This,
27821 _In_ REFGUID CommandId,
27822 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
27823 _Out_opt_ UINT *pTotalStructureSizeInBytes,
27824 _Inout_ UINT *pParameterCount,
27825 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
27826
27827 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
27828 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
27829 ID3D12Device13 * This,
27830 _In_ REFGUID CommandId,
27831 _In_ UINT NodeMask,
27832 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
27833 _In_ SIZE_T CreationParametersDataSizeInBytes,
27834 REFIID riid,
27835 _COM_Outptr_ void **ppMetaCommand);
27836
27837 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
27838 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
27839 ID3D12Device13 * This,
27840 const D3D12_STATE_OBJECT_DESC *pDesc,
27841 REFIID riid,
27842 _COM_Outptr_ void **ppStateObject);
27843
27844 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
27845 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
27846 ID3D12Device13 * This,
27847 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
27848 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
27849
27850 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
27851 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
27852 ID3D12Device13 * This,
27853 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
27854 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
27855
27856 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
27857 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
27858 ID3D12Device13 * This,
27859 D3D12_BACKGROUND_PROCESSING_MODE Mode,
27860 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
27861 _In_opt_ HANDLE hEventToSignalUponCompletion,
27862 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
27863
27864 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
27865 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
27866 ID3D12Device13 * This,
27867 const D3D12_STATE_OBJECT_DESC *pAddition,
27868 ID3D12StateObject *pStateObjectToGrowFrom,
27869 REFIID riid,
27870 _COM_Outptr_ void **ppNewStateObject);
27871
27872 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
27873 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
27874 ID3D12Device13 * This,
27875 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
27876 _In_ REFIID riid,
27877 _COM_Outptr_ void **ppSession);
27878
27879 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
27880#if !defined(_WIN32)
27881 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27882 ID3D12Device13 * This,
27883 UINT visibleMask,
27884 UINT numResourceDescs,
27885 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27886 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27887
27888#else
27889 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
27890 ID3D12Device13 * This,
27891 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
27892 UINT visibleMask,
27893 UINT numResourceDescs,
27894 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
27895 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
27896
27897#endif
27898
27899 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
27900 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
27901 ID3D12Device13 * This,
27902 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27903 D3D12_HEAP_FLAGS HeapFlags,
27904 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27905 D3D12_RESOURCE_STATES InitialResourceState,
27906 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27907 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27908 REFIID riidResource,
27909 _COM_Outptr_opt_ void **ppvResource);
27910
27911 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
27912 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
27913 ID3D12Device13 * This,
27914 _In_ ID3D12Heap *pHeap,
27915 UINT64 HeapOffset,
27916 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27917 D3D12_RESOURCE_STATES InitialState,
27918 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27919 REFIID riid,
27920 _COM_Outptr_opt_ void **ppvResource);
27921
27922 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
27923 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
27924 ID3D12Device13 * This,
27925 _In_opt_ ID3D12Resource *pTargetedResource,
27926 _In_opt_ ID3D12Resource *pFeedbackResource,
27927 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
27928
27929 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
27930 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
27931 ID3D12Device13 * This,
27932 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
27933 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
27934 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
27935 UINT64 BaseOffset,
27936 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
27937 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
27938 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
27939 _Out_opt_ UINT64 *pTotalBytes);
27940
27941 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
27942 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
27943 ID3D12Device13 * This,
27944 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
27945 REFIID riid,
27946 _COM_Outptr_opt_ void **ppvSession);
27947
27948 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
27949 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
27950 ID3D12Device13 * This,
27951 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
27952 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
27953
27954 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
27955 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
27956 ID3D12Device13 * This,
27957 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
27958 REFIID CreatorID,
27959 REFIID riid,
27960 _COM_Outptr_ void **ppCommandQueue);
27961
27962 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
27963 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
27964 ID3D12Device13 * This,
27965 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
27966 D3D12_HEAP_FLAGS HeapFlags,
27967 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27968 D3D12_BARRIER_LAYOUT InitialLayout,
27969 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27970 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27971 UINT32 NumCastableFormats,
27972 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27973 REFIID riidResource,
27974 _COM_Outptr_opt_ void **ppvResource);
27975
27976 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
27977 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
27978 ID3D12Device13 * This,
27979 _In_ ID3D12Heap *pHeap,
27980 UINT64 HeapOffset,
27981 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
27982 D3D12_BARRIER_LAYOUT InitialLayout,
27983 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27984 UINT32 NumCastableFormats,
27985 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27986 REFIID riid,
27987 _COM_Outptr_opt_ void **ppvResource);
27988
27989 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
27990 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
27991 ID3D12Device13 * This,
27992 _In_ const D3D12_RESOURCE_DESC *pDesc,
27993 D3D12_BARRIER_LAYOUT InitialLayout,
27994 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
27995 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
27996 UINT32 NumCastableFormats,
27997 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
27998 REFIID riid,
27999 _COM_Outptr_opt_ void **ppvResource);
28000
28001 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
28002 void ( STDMETHODCALLTYPE *CreateSampler2 )(
28003 ID3D12Device13 * This,
28004 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
28005 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28006
28007 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
28008#if !defined(_WIN32)
28009 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28010 ID3D12Device13 * This,
28011 UINT visibleMask,
28012 UINT numResourceDescs,
28013 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28014 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28015 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28016 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28017
28018#else
28019 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
28020 ID3D12Device13 * This,
28021 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28022 UINT visibleMask,
28023 UINT numResourceDescs,
28024 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28025 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
28026 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
28027 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28028
28029#endif
28030
28031 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
28032 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
28033 ID3D12Device13 * This,
28034 _In_ const void *pAddress,
28035 SIZE_T size,
28036 REFIID riid,
28037 _COM_Outptr_ void **ppvHeap);
28038
28039 END_INTERFACE
28040 } ID3D12Device13Vtbl;
28041
28042 interface ID3D12Device13
28043 {
28044 CONST_VTBL struct ID3D12Device13Vtbl *lpVtbl;
28045 };
28046
28047
28048
28049#ifdef COBJMACROS
28050
28051
28052#define ID3D12Device13_QueryInterface(This,riid,ppvObject) \
28053 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
28054
28055#define ID3D12Device13_AddRef(This) \
28056 ( (This)->lpVtbl -> AddRef(This) )
28057
28058#define ID3D12Device13_Release(This) \
28059 ( (This)->lpVtbl -> Release(This) )
28060
28061
28062#define ID3D12Device13_GetPrivateData(This,guid,pDataSize,pData) \
28063 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
28064
28065#define ID3D12Device13_SetPrivateData(This,guid,DataSize,pData) \
28066 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
28067
28068#define ID3D12Device13_SetPrivateDataInterface(This,guid,pData) \
28069 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
28070
28071#define ID3D12Device13_SetName(This,Name) \
28072 ( (This)->lpVtbl -> SetName(This,Name) )
28073
28074
28075#define ID3D12Device13_GetNodeCount(This) \
28076 ( (This)->lpVtbl -> GetNodeCount(This) )
28077
28078#define ID3D12Device13_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
28079 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
28080
28081#define ID3D12Device13_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
28082 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
28083
28084#define ID3D12Device13_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
28085 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
28086
28087#define ID3D12Device13_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
28088 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
28089
28090#define ID3D12Device13_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
28091 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
28092
28093#define ID3D12Device13_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
28094 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
28095
28096#define ID3D12Device13_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
28097 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
28098
28099#define ID3D12Device13_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
28100 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
28101
28102#define ID3D12Device13_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
28103 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
28104
28105#define ID3D12Device13_CreateConstantBufferView(This,pDesc,DestDescriptor) \
28106 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
28107
28108#define ID3D12Device13_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
28109 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
28110
28111#define ID3D12Device13_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
28112 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
28113
28114#define ID3D12Device13_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
28115 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
28116
28117#define ID3D12Device13_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
28118 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
28119
28120#define ID3D12Device13_CreateSampler(This,pDesc,DestDescriptor) \
28121 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
28122
28123#define ID3D12Device13_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
28124 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
28125
28126#define ID3D12Device13_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
28127 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
28128#if !defined(_WIN32)
28129
28130#define ID3D12Device13_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
28131 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
28132#else
28133#define ID3D12Device13_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
28134 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
28135#endif
28136#if !defined(_WIN32)
28137
28138#define ID3D12Device13_GetCustomHeapProperties(This,nodeMask,heapType) \
28139 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
28140#else
28141#define ID3D12Device13_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
28142 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
28143#endif
28144
28145#define ID3D12Device13_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
28146 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
28147
28148#define ID3D12Device13_CreateHeap(This,pDesc,riid,ppvHeap) \
28149 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
28150
28151#define ID3D12Device13_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28152 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28153
28154#define ID3D12Device13_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28155 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28156
28157#define ID3D12Device13_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
28158 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
28159
28160#define ID3D12Device13_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
28161 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
28162
28163#define ID3D12Device13_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
28164 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
28165
28166#define ID3D12Device13_MakeResident(This,NumObjects,ppObjects) \
28167 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
28168
28169#define ID3D12Device13_Evict(This,NumObjects,ppObjects) \
28170 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
28171
28172#define ID3D12Device13_CreateFence(This,InitialValue,Flags,riid,ppFence) \
28173 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
28174
28175#define ID3D12Device13_GetDeviceRemovedReason(This) \
28176 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
28177
28178#define ID3D12Device13_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28179 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28180
28181#define ID3D12Device13_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
28182 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
28183
28184#define ID3D12Device13_SetStablePowerState(This,Enable) \
28185 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
28186
28187#define ID3D12Device13_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
28188 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
28189
28190#define ID3D12Device13_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
28191 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
28192#if !defined(_WIN32)
28193
28194#define ID3D12Device13_GetAdapterLuid(This) \
28195 ( (This)->lpVtbl -> GetAdapterLuid(This) )
28196#else
28197#define ID3D12Device13_GetAdapterLuid(This,RetVal) \
28198 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
28199#endif
28200
28201
28202#define ID3D12Device13_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
28203 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
28204
28205#define ID3D12Device13_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
28206 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
28207
28208#define ID3D12Device13_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
28209 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
28210
28211
28212#define ID3D12Device13_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
28213 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
28214
28215
28216#define ID3D12Device13_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
28217 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
28218
28219#define ID3D12Device13_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
28220 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
28221
28222#define ID3D12Device13_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
28223 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
28224
28225
28226#define ID3D12Device13_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
28227 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
28228
28229#define ID3D12Device13_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
28230 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
28231
28232#define ID3D12Device13_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28233 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28234
28235#define ID3D12Device13_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
28236 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
28237
28238#define ID3D12Device13_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
28239 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
28240#if !defined(_WIN32)
28241
28242#define ID3D12Device13_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28243 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28244#else
28245#define ID3D12Device13_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28246 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28247#endif
28248
28249
28250#define ID3D12Device13_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
28251 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
28252
28253#define ID3D12Device13_RemoveDevice(This) \
28254 ( (This)->lpVtbl -> RemoveDevice(This) )
28255
28256#define ID3D12Device13_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
28257 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
28258
28259#define ID3D12Device13_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
28260 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
28261
28262#define ID3D12Device13_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
28263 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
28264
28265#define ID3D12Device13_CreateStateObject(This,pDesc,riid,ppStateObject) \
28266 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
28267
28268#define ID3D12Device13_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
28269 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
28270
28271#define ID3D12Device13_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
28272 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
28273
28274
28275#define ID3D12Device13_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
28276 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
28277
28278
28279#define ID3D12Device13_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
28280 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
28281
28282#define ID3D12Device13_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
28283 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
28284
28285#if !defined(_WIN32)
28286
28287#define ID3D12Device13_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28288 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28289#else
28290#define ID3D12Device13_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
28291 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
28292#endif
28293
28294#define ID3D12Device13_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
28295 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
28296
28297#define ID3D12Device13_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
28298 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
28299
28300#define ID3D12Device13_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
28301 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
28302
28303#define ID3D12Device13_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
28304 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
28305
28306
28307#define ID3D12Device13_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
28308 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
28309
28310#define ID3D12Device13_ShaderCacheControl(This,Kinds,Control) \
28311 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
28312
28313#define ID3D12Device13_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
28314 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
28315
28316
28317#define ID3D12Device13_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
28318 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
28319
28320#define ID3D12Device13_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28321 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28322
28323#define ID3D12Device13_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
28324 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
28325
28326
28327#define ID3D12Device13_CreateSampler2(This,pDesc,DestDescriptor) \
28328 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
28329
28330#if !defined(_WIN32)
28331
28332#define ID3D12Device13_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28333 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28334#else
28335#define ID3D12Device13_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
28336 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
28337#endif
28338
28339
28340#define ID3D12Device13_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
28341 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
28342
28343#endif /* COBJMACROS */
28344
28345
28346#endif /* C style interface */
28347
28348
28349
28350
28351#endif /* __ID3D12Device13_INTERFACE_DEFINED__ */
28352
28353
28354#ifndef __ID3D12Device14_INTERFACE_DEFINED__
28355#define __ID3D12Device14_INTERFACE_DEFINED__
28356
28357/* interface ID3D12Device14 */
28358/* [unique][local][object][uuid] */
28359
28360
28361EXTERN_C const IID IID_ID3D12Device14;
28362
28363#if defined(__cplusplus) && !defined(CINTERFACE)
28364
28365 MIDL_INTERFACE("5f6e592d-d895-44c2-8e4a-88ad4926d323")
28366 ID3D12Device14 : public ID3D12Device13
28367 {
28368 public:
28369 virtual HRESULT STDMETHODCALLTYPE CreateRootSignatureFromSubobjectInLibrary(
28370 _In_ UINT nodeMask,
28371 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
28372 _In_ SIZE_T blobLengthInBytes,
28373 _In_opt_ LPCWSTR subobjectName,
28374 REFIID riid,
28375 _COM_Outptr_ void **ppvRootSignature) = 0;
28376
28377 };
28378
28379
28380#else /* C style interface */
28381
28382 typedef struct ID3D12Device14Vtbl
28383 {
28384 BEGIN_INTERFACE
28385
28386 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
28387 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
28388 ID3D12Device14 * This,
28389 REFIID riid,
28390 _COM_Outptr_ void **ppvObject);
28391
28392 DECLSPEC_XFGVIRT(IUnknown, AddRef)
28393 ULONG ( STDMETHODCALLTYPE *AddRef )(
28394 ID3D12Device14 * This);
28395
28396 DECLSPEC_XFGVIRT(IUnknown, Release)
28397 ULONG ( STDMETHODCALLTYPE *Release )(
28398 ID3D12Device14 * This);
28399
28400 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
28401 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
28402 ID3D12Device14 * This,
28403 _In_ REFGUID guid,
28404 _Inout_ UINT *pDataSize,
28405 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
28406
28407 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
28408 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
28409 ID3D12Device14 * This,
28410 _In_ REFGUID guid,
28411 _In_ UINT DataSize,
28412 _In_reads_bytes_opt_( DataSize ) const void *pData);
28413
28414 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
28415 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
28416 ID3D12Device14 * This,
28417 _In_ REFGUID guid,
28418 _In_opt_ const IUnknown *pData);
28419
28420 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
28421 HRESULT ( STDMETHODCALLTYPE *SetName )(
28422 ID3D12Device14 * This,
28423 _In_z_ LPCWSTR Name);
28424
28425 DECLSPEC_XFGVIRT(ID3D12Device, GetNodeCount)
28426 UINT ( STDMETHODCALLTYPE *GetNodeCount )(
28427 ID3D12Device14 * This);
28428
28429 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandQueue)
28430 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
28431 ID3D12Device14 * This,
28432 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
28433 REFIID riid,
28434 _COM_Outptr_ void **ppCommandQueue);
28435
28436 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandAllocator)
28437 HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
28438 ID3D12Device14 * This,
28439 _In_ D3D12_COMMAND_LIST_TYPE type,
28440 REFIID riid,
28441 _COM_Outptr_ void **ppCommandAllocator);
28442
28443 DECLSPEC_XFGVIRT(ID3D12Device, CreateGraphicsPipelineState)
28444 HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
28445 ID3D12Device14 * This,
28446 _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
28447 REFIID riid,
28448 _COM_Outptr_ void **ppPipelineState);
28449
28450 DECLSPEC_XFGVIRT(ID3D12Device, CreateComputePipelineState)
28451 HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
28452 ID3D12Device14 * This,
28453 _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
28454 REFIID riid,
28455 _COM_Outptr_ void **ppPipelineState);
28456
28457 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandList)
28458 HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
28459 ID3D12Device14 * This,
28460 _In_ UINT nodeMask,
28461 _In_ D3D12_COMMAND_LIST_TYPE type,
28462 _In_ ID3D12CommandAllocator *pCommandAllocator,
28463 _In_opt_ ID3D12PipelineState *pInitialState,
28464 REFIID riid,
28465 _COM_Outptr_ void **ppCommandList);
28466
28467 DECLSPEC_XFGVIRT(ID3D12Device, CheckFeatureSupport)
28468 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
28469 ID3D12Device14 * This,
28470 D3D12_FEATURE Feature,
28471 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
28472 UINT FeatureSupportDataSize);
28473
28474 DECLSPEC_XFGVIRT(ID3D12Device, CreateDescriptorHeap)
28475 HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
28476 ID3D12Device14 * This,
28477 _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
28478 REFIID riid,
28479 _COM_Outptr_ void **ppvHeap);
28480
28481 DECLSPEC_XFGVIRT(ID3D12Device, GetDescriptorHandleIncrementSize)
28482 UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
28483 ID3D12Device14 * This,
28484 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
28485
28486 DECLSPEC_XFGVIRT(ID3D12Device, CreateRootSignature)
28487 HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
28488 ID3D12Device14 * This,
28489 _In_ UINT nodeMask,
28490 _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
28491 _In_ SIZE_T blobLengthInBytes,
28492 REFIID riid,
28493 _COM_Outptr_ void **ppvRootSignature);
28494
28495 DECLSPEC_XFGVIRT(ID3D12Device, CreateConstantBufferView)
28496 void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
28497 ID3D12Device14 * This,
28498 _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
28499 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28500
28501 DECLSPEC_XFGVIRT(ID3D12Device, CreateShaderResourceView)
28502 void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
28503 ID3D12Device14 * This,
28504 _In_opt_ ID3D12Resource *pResource,
28505 _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
28506 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28507
28508 DECLSPEC_XFGVIRT(ID3D12Device, CreateUnorderedAccessView)
28509 void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
28510 ID3D12Device14 * This,
28511 _In_opt_ ID3D12Resource *pResource,
28512 _In_opt_ ID3D12Resource *pCounterResource,
28513 _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
28514 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28515
28516 DECLSPEC_XFGVIRT(ID3D12Device, CreateRenderTargetView)
28517 void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
28518 ID3D12Device14 * This,
28519 _In_opt_ ID3D12Resource *pResource,
28520 _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
28521 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28522
28523 DECLSPEC_XFGVIRT(ID3D12Device, CreateDepthStencilView)
28524 void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
28525 ID3D12Device14 * This,
28526 _In_opt_ ID3D12Resource *pResource,
28527 _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
28528 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28529
28530 DECLSPEC_XFGVIRT(ID3D12Device, CreateSampler)
28531 void ( STDMETHODCALLTYPE *CreateSampler )(
28532 ID3D12Device14 * This,
28533 _In_ const D3D12_SAMPLER_DESC *pDesc,
28534 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28535
28536 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptors)
28537 void ( STDMETHODCALLTYPE *CopyDescriptors )(
28538 ID3D12Device14 * This,
28539 _In_ UINT NumDestDescriptorRanges,
28540 _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
28541 _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
28542 _In_ UINT NumSrcDescriptorRanges,
28543 _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
28544 _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
28545 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28546
28547 DECLSPEC_XFGVIRT(ID3D12Device, CopyDescriptorsSimple)
28548 void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
28549 ID3D12Device14 * This,
28550 _In_ UINT NumDescriptors,
28551 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
28552 _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
28553 _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
28554
28555 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceAllocationInfo)
28556#if !defined(_WIN32)
28557 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28558 ID3D12Device14 * This,
28559 _In_ UINT visibleMask,
28560 _In_ UINT numResourceDescs,
28561 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28562
28563#else
28564 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
28565 ID3D12Device14 * This,
28566 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28567 _In_ UINT visibleMask,
28568 _In_ UINT numResourceDescs,
28569 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
28570
28571#endif
28572
28573 DECLSPEC_XFGVIRT(ID3D12Device, GetCustomHeapProperties)
28574#if !defined(_WIN32)
28575 D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28576 ID3D12Device14 * This,
28577 _In_ UINT nodeMask,
28578 D3D12_HEAP_TYPE heapType);
28579
28580#else
28581 D3D12_HEAP_PROPERTIES *( STDMETHODCALLTYPE *GetCustomHeapProperties )(
28582 ID3D12Device14 * This,
28583 D3D12_HEAP_PROPERTIES * RetVal,
28584 _In_ UINT nodeMask,
28585 D3D12_HEAP_TYPE heapType);
28586
28587#endif
28588
28589 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommittedResource)
28590 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
28591 ID3D12Device14 * This,
28592 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28593 D3D12_HEAP_FLAGS HeapFlags,
28594 _In_ const D3D12_RESOURCE_DESC *pDesc,
28595 D3D12_RESOURCE_STATES InitialResourceState,
28596 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28597 REFIID riidResource,
28598 _COM_Outptr_opt_ void **ppvResource);
28599
28600 DECLSPEC_XFGVIRT(ID3D12Device, CreateHeap)
28601 HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
28602 ID3D12Device14 * This,
28603 _In_ const D3D12_HEAP_DESC *pDesc,
28604 REFIID riid,
28605 _COM_Outptr_opt_ void **ppvHeap);
28606
28607 DECLSPEC_XFGVIRT(ID3D12Device, CreatePlacedResource)
28608 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
28609 ID3D12Device14 * This,
28610 _In_ ID3D12Heap *pHeap,
28611 UINT64 HeapOffset,
28612 _In_ const D3D12_RESOURCE_DESC *pDesc,
28613 D3D12_RESOURCE_STATES InitialState,
28614 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28615 REFIID riid,
28616 _COM_Outptr_opt_ void **ppvResource);
28617
28618 DECLSPEC_XFGVIRT(ID3D12Device, CreateReservedResource)
28619 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
28620 ID3D12Device14 * This,
28621 _In_ const D3D12_RESOURCE_DESC *pDesc,
28622 D3D12_RESOURCE_STATES InitialState,
28623 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28624 REFIID riid,
28625 _COM_Outptr_opt_ void **ppvResource);
28626
28627 DECLSPEC_XFGVIRT(ID3D12Device, CreateSharedHandle)
28628 HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
28629 ID3D12Device14 * This,
28630 _In_ ID3D12DeviceChild *pObject,
28631 _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
28632 DWORD Access,
28633 _In_opt_ LPCWSTR Name,
28634 _Out_ HANDLE *pHandle);
28635
28636 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandle)
28637 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
28638 ID3D12Device14 * This,
28639 _In_ HANDLE NTHandle,
28640 REFIID riid,
28641 _COM_Outptr_opt_ void **ppvObj);
28642
28643 DECLSPEC_XFGVIRT(ID3D12Device, OpenSharedHandleByName)
28644 HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
28645 ID3D12Device14 * This,
28646 _In_ LPCWSTR Name,
28647 DWORD Access,
28648 /* [annotation][out] */
28649 _Out_ HANDLE *pNTHandle);
28650
28651 DECLSPEC_XFGVIRT(ID3D12Device, MakeResident)
28652 HRESULT ( STDMETHODCALLTYPE *MakeResident )(
28653 ID3D12Device14 * This,
28654 UINT NumObjects,
28655 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28656
28657 DECLSPEC_XFGVIRT(ID3D12Device, Evict)
28658 HRESULT ( STDMETHODCALLTYPE *Evict )(
28659 ID3D12Device14 * This,
28660 UINT NumObjects,
28661 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
28662
28663 DECLSPEC_XFGVIRT(ID3D12Device, CreateFence)
28664 HRESULT ( STDMETHODCALLTYPE *CreateFence )(
28665 ID3D12Device14 * This,
28666 UINT64 InitialValue,
28667 D3D12_FENCE_FLAGS Flags,
28668 REFIID riid,
28669 _COM_Outptr_ void **ppFence);
28670
28671 DECLSPEC_XFGVIRT(ID3D12Device, GetDeviceRemovedReason)
28672 HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
28673 ID3D12Device14 * This);
28674
28675 DECLSPEC_XFGVIRT(ID3D12Device, GetCopyableFootprints)
28676 void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
28677 ID3D12Device14 * This,
28678 _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
28679 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28680 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28681 UINT64 BaseOffset,
28682 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28683 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28684 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28685 _Out_opt_ UINT64 *pTotalBytes);
28686
28687 DECLSPEC_XFGVIRT(ID3D12Device, CreateQueryHeap)
28688 HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
28689 ID3D12Device14 * This,
28690 _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
28691 REFIID riid,
28692 _COM_Outptr_opt_ void **ppvHeap);
28693
28694 DECLSPEC_XFGVIRT(ID3D12Device, SetStablePowerState)
28695 HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
28696 ID3D12Device14 * This,
28697 BOOL Enable);
28698
28699 DECLSPEC_XFGVIRT(ID3D12Device, CreateCommandSignature)
28700 HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
28701 ID3D12Device14 * This,
28702 _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
28703 _In_opt_ ID3D12RootSignature *pRootSignature,
28704 REFIID riid,
28705 _COM_Outptr_opt_ void **ppvCommandSignature);
28706
28707 DECLSPEC_XFGVIRT(ID3D12Device, GetResourceTiling)
28708 void ( STDMETHODCALLTYPE *GetResourceTiling )(
28709 ID3D12Device14 * This,
28710 _In_ ID3D12Resource *pTiledResource,
28711 _Out_opt_ UINT *pNumTilesForEntireResource,
28712 _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
28713 _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
28714 _Inout_opt_ UINT *pNumSubresourceTilings,
28715 _In_ UINT FirstSubresourceTilingToGet,
28716 _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
28717
28718 DECLSPEC_XFGVIRT(ID3D12Device, GetAdapterLuid)
28719#if !defined(_WIN32)
28720 LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
28721 ID3D12Device14 * This);
28722
28723#else
28724 LUID *( STDMETHODCALLTYPE *GetAdapterLuid )(
28725 ID3D12Device14 * This,
28726 LUID * RetVal);
28727
28728#endif
28729
28730 DECLSPEC_XFGVIRT(ID3D12Device1, CreatePipelineLibrary)
28731 HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
28732 ID3D12Device14 * This,
28733 _In_reads_(BlobLength) const void *pLibraryBlob,
28734 SIZE_T BlobLength,
28735 REFIID riid,
28736 _COM_Outptr_ void **ppPipelineLibrary);
28737
28738 DECLSPEC_XFGVIRT(ID3D12Device1, SetEventOnMultipleFenceCompletion)
28739 HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
28740 ID3D12Device14 * This,
28741 _In_reads_(NumFences) ID3D12Fence *const *ppFences,
28742 _In_reads_(NumFences) const UINT64 *pFenceValues,
28743 UINT NumFences,
28744 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
28745 HANDLE hEvent);
28746
28747 DECLSPEC_XFGVIRT(ID3D12Device1, SetResidencyPriority)
28748 HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
28749 ID3D12Device14 * This,
28750 UINT NumObjects,
28751 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28752 _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
28753
28754 DECLSPEC_XFGVIRT(ID3D12Device2, CreatePipelineState)
28755 HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
28756 ID3D12Device14 * This,
28757 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
28758 REFIID riid,
28759 _COM_Outptr_ void **ppPipelineState);
28760
28761 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromAddress)
28762 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress )(
28763 ID3D12Device14 * This,
28764 _In_ const void *pAddress,
28765 REFIID riid,
28766 _COM_Outptr_ void **ppvHeap);
28767
28768 DECLSPEC_XFGVIRT(ID3D12Device3, OpenExistingHeapFromFileMapping)
28769 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromFileMapping )(
28770 ID3D12Device14 * This,
28771 _In_ HANDLE hFileMapping,
28772 REFIID riid,
28773 _COM_Outptr_ void **ppvHeap);
28774
28775 DECLSPEC_XFGVIRT(ID3D12Device3, EnqueueMakeResident)
28776 HRESULT ( STDMETHODCALLTYPE *EnqueueMakeResident )(
28777 ID3D12Device14 * This,
28778 D3D12_RESIDENCY_FLAGS Flags,
28779 UINT NumObjects,
28780 _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
28781 _In_ ID3D12Fence *pFenceToSignal,
28782 UINT64 FenceValueToSignal);
28783
28784 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommandList1)
28785 HRESULT ( STDMETHODCALLTYPE *CreateCommandList1 )(
28786 ID3D12Device14 * This,
28787 _In_ UINT nodeMask,
28788 _In_ D3D12_COMMAND_LIST_TYPE type,
28789 _In_ D3D12_COMMAND_LIST_FLAGS flags,
28790 REFIID riid,
28791 _COM_Outptr_ void **ppCommandList);
28792
28793 DECLSPEC_XFGVIRT(ID3D12Device4, CreateProtectedResourceSession)
28794 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession )(
28795 ID3D12Device14 * This,
28796 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc,
28797 _In_ REFIID riid,
28798 _COM_Outptr_ void **ppSession);
28799
28800 DECLSPEC_XFGVIRT(ID3D12Device4, CreateCommittedResource1)
28801 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource1 )(
28802 ID3D12Device14 * This,
28803 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28804 D3D12_HEAP_FLAGS HeapFlags,
28805 _In_ const D3D12_RESOURCE_DESC *pDesc,
28806 D3D12_RESOURCE_STATES InitialResourceState,
28807 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28808 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28809 REFIID riidResource,
28810 _COM_Outptr_opt_ void **ppvResource);
28811
28812 DECLSPEC_XFGVIRT(ID3D12Device4, CreateHeap1)
28813 HRESULT ( STDMETHODCALLTYPE *CreateHeap1 )(
28814 ID3D12Device14 * This,
28815 _In_ const D3D12_HEAP_DESC *pDesc,
28816 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28817 REFIID riid,
28818 _COM_Outptr_opt_ void **ppvHeap);
28819
28820 DECLSPEC_XFGVIRT(ID3D12Device4, CreateReservedResource1)
28821 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource1 )(
28822 ID3D12Device14 * This,
28823 _In_ const D3D12_RESOURCE_DESC *pDesc,
28824 D3D12_RESOURCE_STATES InitialState,
28825 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28826 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28827 REFIID riid,
28828 _COM_Outptr_opt_ void **ppvResource);
28829
28830 DECLSPEC_XFGVIRT(ID3D12Device4, GetResourceAllocationInfo1)
28831#if !defined(_WIN32)
28832 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28833 ID3D12Device14 * This,
28834 UINT visibleMask,
28835 UINT numResourceDescs,
28836 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28837 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28838
28839#else
28840 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo1 )(
28841 ID3D12Device14 * This,
28842 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28843 UINT visibleMask,
28844 UINT numResourceDescs,
28845 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs,
28846 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28847
28848#endif
28849
28850 DECLSPEC_XFGVIRT(ID3D12Device5, CreateLifetimeTracker)
28851 HRESULT ( STDMETHODCALLTYPE *CreateLifetimeTracker )(
28852 ID3D12Device14 * This,
28853 _In_ ID3D12LifetimeOwner *pOwner,
28854 REFIID riid,
28855 _COM_Outptr_ void **ppvTracker);
28856
28857 DECLSPEC_XFGVIRT(ID3D12Device5, RemoveDevice)
28858 void ( STDMETHODCALLTYPE *RemoveDevice )(
28859 ID3D12Device14 * This);
28860
28861 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommands)
28862 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommands )(
28863 ID3D12Device14 * This,
28864 _Inout_ UINT *pNumMetaCommands,
28865 _Out_writes_opt_(*pNumMetaCommands) D3D12_META_COMMAND_DESC *pDescs);
28866
28867 DECLSPEC_XFGVIRT(ID3D12Device5, EnumerateMetaCommandParameters)
28868 HRESULT ( STDMETHODCALLTYPE *EnumerateMetaCommandParameters )(
28869 ID3D12Device14 * This,
28870 _In_ REFGUID CommandId,
28871 _In_ D3D12_META_COMMAND_PARAMETER_STAGE Stage,
28872 _Out_opt_ UINT *pTotalStructureSizeInBytes,
28873 _Inout_ UINT *pParameterCount,
28874 _Out_writes_opt_(*pParameterCount) D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs);
28875
28876 DECLSPEC_XFGVIRT(ID3D12Device5, CreateMetaCommand)
28877 HRESULT ( STDMETHODCALLTYPE *CreateMetaCommand )(
28878 ID3D12Device14 * This,
28879 _In_ REFGUID CommandId,
28880 _In_ UINT NodeMask,
28881 _In_reads_bytes_opt_(CreationParametersDataSizeInBytes) const void *pCreationParametersData,
28882 _In_ SIZE_T CreationParametersDataSizeInBytes,
28883 REFIID riid,
28884 _COM_Outptr_ void **ppMetaCommand);
28885
28886 DECLSPEC_XFGVIRT(ID3D12Device5, CreateStateObject)
28887 HRESULT ( STDMETHODCALLTYPE *CreateStateObject )(
28888 ID3D12Device14 * This,
28889 const D3D12_STATE_OBJECT_DESC *pDesc,
28890 REFIID riid,
28891 _COM_Outptr_ void **ppStateObject);
28892
28893 DECLSPEC_XFGVIRT(ID3D12Device5, GetRaytracingAccelerationStructurePrebuildInfo)
28894 void ( STDMETHODCALLTYPE *GetRaytracingAccelerationStructurePrebuildInfo )(
28895 ID3D12Device14 * This,
28896 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc,
28897 _Out_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo);
28898
28899 DECLSPEC_XFGVIRT(ID3D12Device5, CheckDriverMatchingIdentifier)
28900 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS ( STDMETHODCALLTYPE *CheckDriverMatchingIdentifier )(
28901 ID3D12Device14 * This,
28902 _In_ D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
28903 _In_ const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck);
28904
28905 DECLSPEC_XFGVIRT(ID3D12Device6, SetBackgroundProcessingMode)
28906 HRESULT ( STDMETHODCALLTYPE *SetBackgroundProcessingMode )(
28907 ID3D12Device14 * This,
28908 D3D12_BACKGROUND_PROCESSING_MODE Mode,
28909 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
28910 _In_opt_ HANDLE hEventToSignalUponCompletion,
28911 _Out_opt_ BOOL *pbFurtherMeasurementsDesired);
28912
28913 DECLSPEC_XFGVIRT(ID3D12Device7, AddToStateObject)
28914 HRESULT ( STDMETHODCALLTYPE *AddToStateObject )(
28915 ID3D12Device14 * This,
28916 const D3D12_STATE_OBJECT_DESC *pAddition,
28917 ID3D12StateObject *pStateObjectToGrowFrom,
28918 REFIID riid,
28919 _COM_Outptr_ void **ppNewStateObject);
28920
28921 DECLSPEC_XFGVIRT(ID3D12Device7, CreateProtectedResourceSession1)
28922 HRESULT ( STDMETHODCALLTYPE *CreateProtectedResourceSession1 )(
28923 ID3D12Device14 * This,
28924 _In_ const D3D12_PROTECTED_RESOURCE_SESSION_DESC1 *pDesc,
28925 _In_ REFIID riid,
28926 _COM_Outptr_ void **ppSession);
28927
28928 DECLSPEC_XFGVIRT(ID3D12Device8, GetResourceAllocationInfo2)
28929#if !defined(_WIN32)
28930 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28931 ID3D12Device14 * This,
28932 UINT visibleMask,
28933 UINT numResourceDescs,
28934 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28935 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28936
28937#else
28938 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo2 )(
28939 ID3D12Device14 * This,
28940 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
28941 UINT visibleMask,
28942 UINT numResourceDescs,
28943 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
28944 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
28945
28946#endif
28947
28948 DECLSPEC_XFGVIRT(ID3D12Device8, CreateCommittedResource2)
28949 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource2 )(
28950 ID3D12Device14 * This,
28951 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
28952 D3D12_HEAP_FLAGS HeapFlags,
28953 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28954 D3D12_RESOURCE_STATES InitialResourceState,
28955 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28956 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
28957 REFIID riidResource,
28958 _COM_Outptr_opt_ void **ppvResource);
28959
28960 DECLSPEC_XFGVIRT(ID3D12Device8, CreatePlacedResource1)
28961 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource1 )(
28962 ID3D12Device14 * This,
28963 _In_ ID3D12Heap *pHeap,
28964 UINT64 HeapOffset,
28965 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
28966 D3D12_RESOURCE_STATES InitialState,
28967 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
28968 REFIID riid,
28969 _COM_Outptr_opt_ void **ppvResource);
28970
28971 DECLSPEC_XFGVIRT(ID3D12Device8, CreateSamplerFeedbackUnorderedAccessView)
28972 void ( STDMETHODCALLTYPE *CreateSamplerFeedbackUnorderedAccessView )(
28973 ID3D12Device14 * This,
28974 _In_opt_ ID3D12Resource *pTargetedResource,
28975 _In_opt_ ID3D12Resource *pFeedbackResource,
28976 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
28977
28978 DECLSPEC_XFGVIRT(ID3D12Device8, GetCopyableFootprints1)
28979 void ( STDMETHODCALLTYPE *GetCopyableFootprints1 )(
28980 ID3D12Device14 * This,
28981 _In_ const D3D12_RESOURCE_DESC1 *pResourceDesc,
28982 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
28983 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
28984 UINT64 BaseOffset,
28985 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
28986 _Out_writes_opt_(NumSubresources) UINT *pNumRows,
28987 _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
28988 _Out_opt_ UINT64 *pTotalBytes);
28989
28990 DECLSPEC_XFGVIRT(ID3D12Device9, CreateShaderCacheSession)
28991 HRESULT ( STDMETHODCALLTYPE *CreateShaderCacheSession )(
28992 ID3D12Device14 * This,
28993 _In_ const D3D12_SHADER_CACHE_SESSION_DESC *pDesc,
28994 REFIID riid,
28995 _COM_Outptr_opt_ void **ppvSession);
28996
28997 DECLSPEC_XFGVIRT(ID3D12Device9, ShaderCacheControl)
28998 HRESULT ( STDMETHODCALLTYPE *ShaderCacheControl )(
28999 ID3D12Device14 * This,
29000 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
29001 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
29002
29003 DECLSPEC_XFGVIRT(ID3D12Device9, CreateCommandQueue1)
29004 HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue1 )(
29005 ID3D12Device14 * This,
29006 _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
29007 REFIID CreatorID,
29008 REFIID riid,
29009 _COM_Outptr_ void **ppCommandQueue);
29010
29011 DECLSPEC_XFGVIRT(ID3D12Device10, CreateCommittedResource3)
29012 HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource3 )(
29013 ID3D12Device14 * This,
29014 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
29015 D3D12_HEAP_FLAGS HeapFlags,
29016 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29017 D3D12_BARRIER_LAYOUT InitialLayout,
29018 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29019 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29020 UINT32 NumCastableFormats,
29021 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29022 REFIID riidResource,
29023 _COM_Outptr_opt_ void **ppvResource);
29024
29025 DECLSPEC_XFGVIRT(ID3D12Device10, CreatePlacedResource2)
29026 HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource2 )(
29027 ID3D12Device14 * This,
29028 _In_ ID3D12Heap *pHeap,
29029 UINT64 HeapOffset,
29030 _In_ const D3D12_RESOURCE_DESC1 *pDesc,
29031 D3D12_BARRIER_LAYOUT InitialLayout,
29032 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29033 UINT32 NumCastableFormats,
29034 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29035 REFIID riid,
29036 _COM_Outptr_opt_ void **ppvResource);
29037
29038 DECLSPEC_XFGVIRT(ID3D12Device10, CreateReservedResource2)
29039 HRESULT ( STDMETHODCALLTYPE *CreateReservedResource2 )(
29040 ID3D12Device14 * This,
29041 _In_ const D3D12_RESOURCE_DESC *pDesc,
29042 D3D12_BARRIER_LAYOUT InitialLayout,
29043 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
29044 _In_opt_ ID3D12ProtectedResourceSession *pProtectedSession,
29045 UINT32 NumCastableFormats,
29046 _In_opt_count_(NumCastableFormats) const DXGI_FORMAT *pCastableFormats,
29047 REFIID riid,
29048 _COM_Outptr_opt_ void **ppvResource);
29049
29050 DECLSPEC_XFGVIRT(ID3D12Device11, CreateSampler2)
29051 void ( STDMETHODCALLTYPE *CreateSampler2 )(
29052 ID3D12Device14 * This,
29053 _In_ const D3D12_SAMPLER_DESC2 *pDesc,
29054 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
29055
29056 DECLSPEC_XFGVIRT(ID3D12Device12, GetResourceAllocationInfo3)
29057#if !defined(_WIN32)
29058 D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29059 ID3D12Device14 * This,
29060 UINT visibleMask,
29061 UINT numResourceDescs,
29062 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29063 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29064 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29065 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29066
29067#else
29068 D3D12_RESOURCE_ALLOCATION_INFO *( STDMETHODCALLTYPE *GetResourceAllocationInfo3 )(
29069 ID3D12Device14 * This,
29070 D3D12_RESOURCE_ALLOCATION_INFO * RetVal,
29071 UINT visibleMask,
29072 UINT numResourceDescs,
29073 _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC1 *pResourceDescs,
29074 _In_opt_count_(numResourceDescs) const UINT32 *pNumCastableFormats,
29075 _In_opt_count_(numResourceDescs) const DXGI_FORMAT *const *ppCastableFormats,
29076 _Out_writes_opt_(numResourceDescs) D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1);
29077
29078#endif
29079
29080 DECLSPEC_XFGVIRT(ID3D12Device13, OpenExistingHeapFromAddress1)
29081 HRESULT ( STDMETHODCALLTYPE *OpenExistingHeapFromAddress1 )(
29082 ID3D12Device14 * This,
29083 _In_ const void *pAddress,
29084 SIZE_T size,
29085 REFIID riid,
29086 _COM_Outptr_ void **ppvHeap);
29087
29088 DECLSPEC_XFGVIRT(ID3D12Device14, CreateRootSignatureFromSubobjectInLibrary)
29089 HRESULT ( STDMETHODCALLTYPE *CreateRootSignatureFromSubobjectInLibrary )(
29090 ID3D12Device14 * This,
29091 _In_ UINT nodeMask,
29092 _In_reads_(blobLengthInBytes) const void *pLibraryBlob,
29093 _In_ SIZE_T blobLengthInBytes,
29094 _In_opt_ LPCWSTR subobjectName,
29095 REFIID riid,
29096 _COM_Outptr_ void **ppvRootSignature);
29097
29098 END_INTERFACE
29099 } ID3D12Device14Vtbl;
29100
29101 interface ID3D12Device14
29102 {
29103 CONST_VTBL struct ID3D12Device14Vtbl *lpVtbl;
29104 };
29105
29106
29107
29108#ifdef COBJMACROS
29109
29110
29111#define ID3D12Device14_QueryInterface(This,riid,ppvObject) \
29112 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29113
29114#define ID3D12Device14_AddRef(This) \
29115 ( (This)->lpVtbl -> AddRef(This) )
29116
29117#define ID3D12Device14_Release(This) \
29118 ( (This)->lpVtbl -> Release(This) )
29119
29120
29121#define ID3D12Device14_GetPrivateData(This,guid,pDataSize,pData) \
29122 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
29123
29124#define ID3D12Device14_SetPrivateData(This,guid,DataSize,pData) \
29125 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
29126
29127#define ID3D12Device14_SetPrivateDataInterface(This,guid,pData) \
29128 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
29129
29130#define ID3D12Device14_SetName(This,Name) \
29131 ( (This)->lpVtbl -> SetName(This,Name) )
29132
29133
29134#define ID3D12Device14_GetNodeCount(This) \
29135 ( (This)->lpVtbl -> GetNodeCount(This) )
29136
29137#define ID3D12Device14_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
29138 ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
29139
29140#define ID3D12Device14_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
29141 ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
29142
29143#define ID3D12Device14_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
29144 ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
29145
29146#define ID3D12Device14_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
29147 ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
29148
29149#define ID3D12Device14_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
29150 ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
29151
29152#define ID3D12Device14_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
29153 ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
29154
29155#define ID3D12Device14_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
29156 ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
29157
29158#define ID3D12Device14_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
29159 ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
29160
29161#define ID3D12Device14_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
29162 ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
29163
29164#define ID3D12Device14_CreateConstantBufferView(This,pDesc,DestDescriptor) \
29165 ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
29166
29167#define ID3D12Device14_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
29168 ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
29169
29170#define ID3D12Device14_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
29171 ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
29172
29173#define ID3D12Device14_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
29174 ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
29175
29176#define ID3D12Device14_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
29177 ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
29178
29179#define ID3D12Device14_CreateSampler(This,pDesc,DestDescriptor) \
29180 ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
29181
29182#define ID3D12Device14_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
29183 ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
29184
29185#define ID3D12Device14_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
29186 ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
29187#if !defined(_WIN32)
29188
29189#define ID3D12Device14_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
29190 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
29191#else
29192#define ID3D12Device14_GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) \
29193 ( (This)->lpVtbl -> GetResourceAllocationInfo(This,RetVal,visibleMask,numResourceDescs,pResourceDescs) )
29194#endif
29195#if !defined(_WIN32)
29196
29197#define ID3D12Device14_GetCustomHeapProperties(This,nodeMask,heapType) \
29198 ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
29199#else
29200#define ID3D12Device14_GetCustomHeapProperties(This,RetVal,nodeMask,heapType) \
29201 ( (This)->lpVtbl -> GetCustomHeapProperties(This,RetVal,nodeMask,heapType) )
29202#endif
29203
29204#define ID3D12Device14_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
29205 ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
29206
29207#define ID3D12Device14_CreateHeap(This,pDesc,riid,ppvHeap) \
29208 ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
29209
29210#define ID3D12Device14_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29211 ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29212
29213#define ID3D12Device14_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29214 ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29215
29216#define ID3D12Device14_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
29217 ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
29218
29219#define ID3D12Device14_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
29220 ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
29221
29222#define ID3D12Device14_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
29223 ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
29224
29225#define ID3D12Device14_MakeResident(This,NumObjects,ppObjects) \
29226 ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
29227
29228#define ID3D12Device14_Evict(This,NumObjects,ppObjects) \
29229 ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
29230
29231#define ID3D12Device14_CreateFence(This,InitialValue,Flags,riid,ppFence) \
29232 ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
29233
29234#define ID3D12Device14_GetDeviceRemovedReason(This) \
29235 ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
29236
29237#define ID3D12Device14_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29238 ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29239
29240#define ID3D12Device14_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
29241 ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
29242
29243#define ID3D12Device14_SetStablePowerState(This,Enable) \
29244 ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
29245
29246#define ID3D12Device14_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
29247 ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
29248
29249#define ID3D12Device14_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
29250 ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
29251#if !defined(_WIN32)
29252
29253#define ID3D12Device14_GetAdapterLuid(This) \
29254 ( (This)->lpVtbl -> GetAdapterLuid(This) )
29255#else
29256#define ID3D12Device14_GetAdapterLuid(This,RetVal) \
29257 ( (This)->lpVtbl -> GetAdapterLuid(This,RetVal) )
29258#endif
29259
29260
29261#define ID3D12Device14_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
29262 ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
29263
29264#define ID3D12Device14_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
29265 ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
29266
29267#define ID3D12Device14_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
29268 ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
29269
29270
29271#define ID3D12Device14_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
29272 ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
29273
29274
29275#define ID3D12Device14_OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) \
29276 ( (This)->lpVtbl -> OpenExistingHeapFromAddress(This,pAddress,riid,ppvHeap) )
29277
29278#define ID3D12Device14_OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) \
29279 ( (This)->lpVtbl -> OpenExistingHeapFromFileMapping(This,hFileMapping,riid,ppvHeap) )
29280
29281#define ID3D12Device14_EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) \
29282 ( (This)->lpVtbl -> EnqueueMakeResident(This,Flags,NumObjects,ppObjects,pFenceToSignal,FenceValueToSignal) )
29283
29284
29285#define ID3D12Device14_CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) \
29286 ( (This)->lpVtbl -> CreateCommandList1(This,nodeMask,type,flags,riid,ppCommandList) )
29287
29288#define ID3D12Device14_CreateProtectedResourceSession(This,pDesc,riid,ppSession) \
29289 ( (This)->lpVtbl -> CreateProtectedResourceSession(This,pDesc,riid,ppSession) )
29290
29291#define ID3D12Device14_CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29292 ( (This)->lpVtbl -> CreateCommittedResource1(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29293
29294#define ID3D12Device14_CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) \
29295 ( (This)->lpVtbl -> CreateHeap1(This,pDesc,pProtectedSession,riid,ppvHeap) )
29296
29297#define ID3D12Device14_CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) \
29298 ( (This)->lpVtbl -> CreateReservedResource1(This,pDesc,InitialState,pOptimizedClearValue,pProtectedSession,riid,ppvResource) )
29299#if !defined(_WIN32)
29300
29301#define ID3D12Device14_GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29302 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29303#else
29304#define ID3D12Device14_GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29305 ( (This)->lpVtbl -> GetResourceAllocationInfo1(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29306#endif
29307
29308
29309#define ID3D12Device14_CreateLifetimeTracker(This,pOwner,riid,ppvTracker) \
29310 ( (This)->lpVtbl -> CreateLifetimeTracker(This,pOwner,riid,ppvTracker) )
29311
29312#define ID3D12Device14_RemoveDevice(This) \
29313 ( (This)->lpVtbl -> RemoveDevice(This) )
29314
29315#define ID3D12Device14_EnumerateMetaCommands(This,pNumMetaCommands,pDescs) \
29316 ( (This)->lpVtbl -> EnumerateMetaCommands(This,pNumMetaCommands,pDescs) )
29317
29318#define ID3D12Device14_EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) \
29319 ( (This)->lpVtbl -> EnumerateMetaCommandParameters(This,CommandId,Stage,pTotalStructureSizeInBytes,pParameterCount,pParameterDescs) )
29320
29321#define ID3D12Device14_CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) \
29322 ( (This)->lpVtbl -> CreateMetaCommand(This,CommandId,NodeMask,pCreationParametersData,CreationParametersDataSizeInBytes,riid,ppMetaCommand) )
29323
29324#define ID3D12Device14_CreateStateObject(This,pDesc,riid,ppStateObject) \
29325 ( (This)->lpVtbl -> CreateStateObject(This,pDesc,riid,ppStateObject) )
29326
29327#define ID3D12Device14_GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) \
29328 ( (This)->lpVtbl -> GetRaytracingAccelerationStructurePrebuildInfo(This,pDesc,pInfo) )
29329
29330#define ID3D12Device14_CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) \
29331 ( (This)->lpVtbl -> CheckDriverMatchingIdentifier(This,SerializedDataType,pIdentifierToCheck) )
29332
29333
29334#define ID3D12Device14_SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) \
29335 ( (This)->lpVtbl -> SetBackgroundProcessingMode(This,Mode,MeasurementsAction,hEventToSignalUponCompletion,pbFurtherMeasurementsDesired) )
29336
29337
29338#define ID3D12Device14_AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) \
29339 ( (This)->lpVtbl -> AddToStateObject(This,pAddition,pStateObjectToGrowFrom,riid,ppNewStateObject) )
29340
29341#define ID3D12Device14_CreateProtectedResourceSession1(This,pDesc,riid,ppSession) \
29342 ( (This)->lpVtbl -> CreateProtectedResourceSession1(This,pDesc,riid,ppSession) )
29343
29344#if !defined(_WIN32)
29345
29346#define ID3D12Device14_GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29347 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29348#else
29349#define ID3D12Device14_GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) \
29350 ( (This)->lpVtbl -> GetResourceAllocationInfo2(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pResourceAllocationInfo1) )
29351#endif
29352
29353#define ID3D12Device14_CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) \
29354 ( (This)->lpVtbl -> CreateCommittedResource2(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pProtectedSession,riidResource,ppvResource) )
29355
29356#define ID3D12Device14_CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
29357 ( (This)->lpVtbl -> CreatePlacedResource1(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
29358
29359#define ID3D12Device14_CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) \
29360 ( (This)->lpVtbl -> CreateSamplerFeedbackUnorderedAccessView(This,pTargetedResource,pFeedbackResource,DestDescriptor) )
29361
29362#define ID3D12Device14_GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
29363 ( (This)->lpVtbl -> GetCopyableFootprints1(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
29364
29365
29366#define ID3D12Device14_CreateShaderCacheSession(This,pDesc,riid,ppvSession) \
29367 ( (This)->lpVtbl -> CreateShaderCacheSession(This,pDesc,riid,ppvSession) )
29368
29369#define ID3D12Device14_ShaderCacheControl(This,Kinds,Control) \
29370 ( (This)->lpVtbl -> ShaderCacheControl(This,Kinds,Control) )
29371
29372#define ID3D12Device14_CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) \
29373 ( (This)->lpVtbl -> CreateCommandQueue1(This,pDesc,CreatorID,riid,ppCommandQueue) )
29374
29375
29376#define ID3D12Device14_CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) \
29377 ( (This)->lpVtbl -> CreateCommittedResource3(This,pHeapProperties,HeapFlags,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riidResource,ppvResource) )
29378
29379#define ID3D12Device14_CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29380 ( (This)->lpVtbl -> CreatePlacedResource2(This,pHeap,HeapOffset,pDesc,InitialLayout,pOptimizedClearValue,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29381
29382#define ID3D12Device14_CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) \
29383 ( (This)->lpVtbl -> CreateReservedResource2(This,pDesc,InitialLayout,pOptimizedClearValue,pProtectedSession,NumCastableFormats,pCastableFormats,riid,ppvResource) )
29384
29385
29386#define ID3D12Device14_CreateSampler2(This,pDesc,DestDescriptor) \
29387 ( (This)->lpVtbl -> CreateSampler2(This,pDesc,DestDescriptor) )
29388
29389#if !defined(_WIN32)
29390
29391#define ID3D12Device14_GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29392 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29393#else
29394#define ID3D12Device14_GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) \
29395 ( (This)->lpVtbl -> GetResourceAllocationInfo3(This,RetVal,visibleMask,numResourceDescs,pResourceDescs,pNumCastableFormats,ppCastableFormats,pResourceAllocationInfo1) )
29396#endif
29397
29398
29399#define ID3D12Device14_OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) \
29400 ( (This)->lpVtbl -> OpenExistingHeapFromAddress1(This,pAddress,size,riid,ppvHeap) )
29401
29402
29403#define ID3D12Device14_CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) \
29404 ( (This)->lpVtbl -> CreateRootSignatureFromSubobjectInLibrary(This,nodeMask,pLibraryBlob,blobLengthInBytes,subobjectName,riid,ppvRootSignature) )
29405
29406#endif /* COBJMACROS */
29407
29408
29409#endif /* C style interface */
29410
29411
29412
29413
29414#endif /* __ID3D12Device14_INTERFACE_DEFINED__ */
29415
29416
29417/* interface __MIDL_itf_d3d12_0000_0063 */
29418/* [local] */
29419
29420typedef union D3D12_VERSION_NUMBER
29421 {
29422 UINT64 Version;
29423 UINT16 VersionParts[ 4 ];
29424 } D3D12_VERSION_NUMBER;
29425
29426typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
29427 {
29428 WCHAR szAdapterFamily[ 128 ];
29429 UINT64 MinimumABISupportVersion;
29430 UINT64 MaximumABISupportVersion;
29431 D3D12_VERSION_NUMBER CompilerVersion;
29432 D3D12_VERSION_NUMBER ApplicationProfileVersion;
29433 } D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
29434
29435typedef void ( __stdcall *D3D12PipelineStateFunc )(
29436 _In_reads_bytes_(KeySize) const void *pKey,
29437 UINT KeySize,
29438 UINT Version,
29439 const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
29440 _Inout_opt_ void *pContext);
29441
29442typedef void ( __stdcall *D3D12StateObjectFunc )(
29443 _In_reads_bytes_(KeySize) const void *pKey,
29444 UINT KeySize,
29445 UINT Version,
29446 const D3D12_STATE_OBJECT_DESC *pDesc,
29447 _In_reads_bytes_(ParentKeySize) const void *pParentKey,
29448 UINT ParentKeySize,
29449 _Inout_opt_ void *pContext);
29450
29451typedef struct D3D12_APPLICATION_DESC
29452 {
29453 LPCWSTR pExeFilename;
29454 LPCWSTR pName;
29455 D3D12_VERSION_NUMBER Version;
29456 LPCWSTR pEngineName;
29457 D3D12_VERSION_NUMBER EngineVersion;
29458 } D3D12_APPLICATION_DESC;
29459
29460typedef void ( __stdcall *D3D12ApplicationDescFunc )(
29461 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
29462 _Inout_opt_ void *pContext);
29463
29464typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
29465 {
29466 _Field_size_bytes_full_(KeySize) const void *pKey;
29467 UINT KeySize;
29468 UINT NumExports;
29469 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
29470 } D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
29471
29472
29473
29474extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_c_ifspec;
29475extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0063_v0_0_s_ifspec;
29476
29477#ifndef __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29478#define __ID3D12StateObjectDatabase_INTERFACE_DEFINED__
29479
29480/* interface ID3D12StateObjectDatabase */
29481/* [unique][local][object][uuid] */
29482
29483
29484EXTERN_C const IID IID_ID3D12StateObjectDatabase;
29485
29486#if defined(__cplusplus) && !defined(CINTERFACE)
29487
29488 MIDL_INTERFACE("c56060b7-b5fc-4135-98e0-a1e9997eace0")
29489 ID3D12StateObjectDatabase : public IUnknown
29490 {
29491 public:
29492 virtual HRESULT STDMETHODCALLTYPE SetApplicationDesc(
29493 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc) = 0;
29494
29495 virtual HRESULT STDMETHODCALLTYPE GetApplicationDesc(
29496 _In_ D3D12ApplicationDescFunc CallbackFunc,
29497 _Inout_opt_ void *pContext) = 0;
29498
29499 virtual HRESULT STDMETHODCALLTYPE StorePipelineStateDesc(
29500 _In_reads_(KeySize) const void *pKey,
29501 UINT KeySize,
29502 UINT Version,
29503 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
29504
29505 virtual HRESULT STDMETHODCALLTYPE FindPipelineStateDesc(
29506 _In_reads_(KeySize) const void *pKey,
29507 UINT KeySize,
29508 _In_ D3D12PipelineStateFunc CallbackFunc,
29509 _Inout_opt_ void *pContext) = 0;
29510
29511 virtual HRESULT STDMETHODCALLTYPE StoreStateObjectDesc(
29512 _In_reads_(KeySize) const void *pKey,
29513 UINT KeySize,
29514 UINT Version,
29515 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29516 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29517 UINT StateObjectToGrowFromKeySize) = 0;
29518
29519 virtual HRESULT STDMETHODCALLTYPE FindStateObjectDesc(
29520 _In_reads_(keySize) const void *pKey,
29521 UINT KeySize,
29522 D3D12StateObjectFunc CallbackFunc,
29523 _Inout_opt_ void *pContext) = 0;
29524
29525 virtual HRESULT STDMETHODCALLTYPE FindObjectVersion(
29526 _In_reads_(keySize) const void *pKey,
29527 UINT KeySize,
29528 _Out_ UINT *pVersion) = 0;
29529
29530 };
29531
29532
29533#else /* C style interface */
29534
29535 typedef struct ID3D12StateObjectDatabaseVtbl
29536 {
29537 BEGIN_INTERFACE
29538
29539 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29540 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29541 ID3D12StateObjectDatabase * This,
29542 REFIID riid,
29543 _COM_Outptr_ void **ppvObject);
29544
29545 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29546 ULONG ( STDMETHODCALLTYPE *AddRef )(
29547 ID3D12StateObjectDatabase * This);
29548
29549 DECLSPEC_XFGVIRT(IUnknown, Release)
29550 ULONG ( STDMETHODCALLTYPE *Release )(
29551 ID3D12StateObjectDatabase * This);
29552
29553 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, SetApplicationDesc)
29554 HRESULT ( STDMETHODCALLTYPE *SetApplicationDesc )(
29555 ID3D12StateObjectDatabase * This,
29556 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc);
29557
29558 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, GetApplicationDesc)
29559 HRESULT ( STDMETHODCALLTYPE *GetApplicationDesc )(
29560 ID3D12StateObjectDatabase * This,
29561 _In_ D3D12ApplicationDescFunc CallbackFunc,
29562 _Inout_opt_ void *pContext);
29563
29564 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StorePipelineStateDesc)
29565 HRESULT ( STDMETHODCALLTYPE *StorePipelineStateDesc )(
29566 ID3D12StateObjectDatabase * This,
29567 _In_reads_(KeySize) const void *pKey,
29568 UINT KeySize,
29569 UINT Version,
29570 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
29571
29572 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindPipelineStateDesc)
29573 HRESULT ( STDMETHODCALLTYPE *FindPipelineStateDesc )(
29574 ID3D12StateObjectDatabase * This,
29575 _In_reads_(KeySize) const void *pKey,
29576 UINT KeySize,
29577 _In_ D3D12PipelineStateFunc CallbackFunc,
29578 _Inout_opt_ void *pContext);
29579
29580 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, StoreStateObjectDesc)
29581 HRESULT ( STDMETHODCALLTYPE *StoreStateObjectDesc )(
29582 ID3D12StateObjectDatabase * This,
29583 _In_reads_(KeySize) const void *pKey,
29584 UINT KeySize,
29585 UINT Version,
29586 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
29587 _In_reads_opt_(StateObjectToGrowFromKeySize) const void *pStateObjectToGrowFromKey,
29588 UINT StateObjectToGrowFromKeySize);
29589
29590 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindStateObjectDesc)
29591 HRESULT ( STDMETHODCALLTYPE *FindStateObjectDesc )(
29592 ID3D12StateObjectDatabase * This,
29593 _In_reads_(keySize) const void *pKey,
29594 UINT KeySize,
29595 D3D12StateObjectFunc CallbackFunc,
29596 _Inout_opt_ void *pContext);
29597
29598 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabase, FindObjectVersion)
29599 HRESULT ( STDMETHODCALLTYPE *FindObjectVersion )(
29600 ID3D12StateObjectDatabase * This,
29601 _In_reads_(keySize) const void *pKey,
29602 UINT KeySize,
29603 _Out_ UINT *pVersion);
29604
29605 END_INTERFACE
29606 } ID3D12StateObjectDatabaseVtbl;
29607
29608 interface ID3D12StateObjectDatabase
29609 {
29610 CONST_VTBL struct ID3D12StateObjectDatabaseVtbl *lpVtbl;
29611 };
29612
29613
29614
29615#ifdef COBJMACROS
29616
29617
29618#define ID3D12StateObjectDatabase_QueryInterface(This,riid,ppvObject) \
29619 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29620
29621#define ID3D12StateObjectDatabase_AddRef(This) \
29622 ( (This)->lpVtbl -> AddRef(This) )
29623
29624#define ID3D12StateObjectDatabase_Release(This) \
29625 ( (This)->lpVtbl -> Release(This) )
29626
29627
29628#define ID3D12StateObjectDatabase_SetApplicationDesc(This,pApplicationDesc) \
29629 ( (This)->lpVtbl -> SetApplicationDesc(This,pApplicationDesc) )
29630
29631#define ID3D12StateObjectDatabase_GetApplicationDesc(This,CallbackFunc,pContext) \
29632 ( (This)->lpVtbl -> GetApplicationDesc(This,CallbackFunc,pContext) )
29633
29634#define ID3D12StateObjectDatabase_StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) \
29635 ( (This)->lpVtbl -> StorePipelineStateDesc(This,pKey,KeySize,Version,pDesc) )
29636
29637#define ID3D12StateObjectDatabase_FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29638 ( (This)->lpVtbl -> FindPipelineStateDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29639
29640#define ID3D12StateObjectDatabase_StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) \
29641 ( (This)->lpVtbl -> StoreStateObjectDesc(This,pKey,KeySize,Version,pDesc,pStateObjectToGrowFromKey,StateObjectToGrowFromKeySize) )
29642
29643#define ID3D12StateObjectDatabase_FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) \
29644 ( (This)->lpVtbl -> FindStateObjectDesc(This,pKey,KeySize,CallbackFunc,pContext) )
29645
29646#define ID3D12StateObjectDatabase_FindObjectVersion(This,pKey,KeySize,pVersion) \
29647 ( (This)->lpVtbl -> FindObjectVersion(This,pKey,KeySize,pVersion) )
29648
29649#endif /* COBJMACROS */
29650
29651
29652#endif /* C style interface */
29653
29654
29655
29656
29657#endif /* __ID3D12StateObjectDatabase_INTERFACE_DEFINED__ */
29658
29659
29660#ifndef __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29661#define __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__
29662
29663/* interface ID3D12VirtualizationGuestDevice */
29664/* [unique][local][object][uuid] */
29665
29666
29667EXTERN_C const IID IID_ID3D12VirtualizationGuestDevice;
29668
29669#if defined(__cplusplus) && !defined(CINTERFACE)
29670
29671 MIDL_INTERFACE("bc66d368-7373-4943-8757-fc87dc79e476")
29672 ID3D12VirtualizationGuestDevice : public IUnknown
29673 {
29674 public:
29675 virtual HRESULT STDMETHODCALLTYPE ShareWithHost(
29676 _In_ ID3D12DeviceChild *pObject,
29677 _Out_ HANDLE *pHandle) = 0;
29678
29679 virtual HRESULT STDMETHODCALLTYPE CreateFenceFd(
29680 _In_ ID3D12Fence *pFence,
29681 UINT64 FenceValue,
29682 _Out_ int *pFenceFd) = 0;
29683
29684 };
29685
29686
29687#else /* C style interface */
29688
29689 typedef struct ID3D12VirtualizationGuestDeviceVtbl
29690 {
29691 BEGIN_INTERFACE
29692
29693 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29694 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29695 ID3D12VirtualizationGuestDevice * This,
29696 REFIID riid,
29697 _COM_Outptr_ void **ppvObject);
29698
29699 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29700 ULONG ( STDMETHODCALLTYPE *AddRef )(
29701 ID3D12VirtualizationGuestDevice * This);
29702
29703 DECLSPEC_XFGVIRT(IUnknown, Release)
29704 ULONG ( STDMETHODCALLTYPE *Release )(
29705 ID3D12VirtualizationGuestDevice * This);
29706
29707 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, ShareWithHost)
29708 HRESULT ( STDMETHODCALLTYPE *ShareWithHost )(
29709 ID3D12VirtualizationGuestDevice * This,
29710 _In_ ID3D12DeviceChild *pObject,
29711 _Out_ HANDLE *pHandle);
29712
29713 DECLSPEC_XFGVIRT(ID3D12VirtualizationGuestDevice, CreateFenceFd)
29714 HRESULT ( STDMETHODCALLTYPE *CreateFenceFd )(
29715 ID3D12VirtualizationGuestDevice * This,
29716 _In_ ID3D12Fence *pFence,
29717 UINT64 FenceValue,
29718 _Out_ int *pFenceFd);
29719
29720 END_INTERFACE
29721 } ID3D12VirtualizationGuestDeviceVtbl;
29722
29723 interface ID3D12VirtualizationGuestDevice
29724 {
29725 CONST_VTBL struct ID3D12VirtualizationGuestDeviceVtbl *lpVtbl;
29726 };
29727
29728
29729
29730#ifdef COBJMACROS
29731
29732
29733#define ID3D12VirtualizationGuestDevice_QueryInterface(This,riid,ppvObject) \
29734 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29735
29736#define ID3D12VirtualizationGuestDevice_AddRef(This) \
29737 ( (This)->lpVtbl -> AddRef(This) )
29738
29739#define ID3D12VirtualizationGuestDevice_Release(This) \
29740 ( (This)->lpVtbl -> Release(This) )
29741
29742
29743#define ID3D12VirtualizationGuestDevice_ShareWithHost(This,pObject,pHandle) \
29744 ( (This)->lpVtbl -> ShareWithHost(This,pObject,pHandle) )
29745
29746#define ID3D12VirtualizationGuestDevice_CreateFenceFd(This,pFence,FenceValue,pFenceFd) \
29747 ( (This)->lpVtbl -> CreateFenceFd(This,pFence,FenceValue,pFenceFd) )
29748
29749#endif /* COBJMACROS */
29750
29751
29752#endif /* C style interface */
29753
29754
29755
29756
29757#endif /* __ID3D12VirtualizationGuestDevice_INTERFACE_DEFINED__ */
29758
29759
29760#ifndef __ID3D12Tools_INTERFACE_DEFINED__
29761#define __ID3D12Tools_INTERFACE_DEFINED__
29762
29763/* interface ID3D12Tools */
29764/* [unique][local][object][uuid] */
29765
29766
29767EXTERN_C const IID IID_ID3D12Tools;
29768
29769#if defined(__cplusplus) && !defined(CINTERFACE)
29770
29771 MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
29772 ID3D12Tools : public IUnknown
29773 {
29774 public:
29775 virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
29776 BOOL bEnable) = 0;
29777
29778 virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
29779
29780 };
29781
29782
29783#else /* C style interface */
29784
29785 typedef struct ID3D12ToolsVtbl
29786 {
29787 BEGIN_INTERFACE
29788
29789 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29790 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29791 ID3D12Tools * This,
29792 REFIID riid,
29793 _COM_Outptr_ void **ppvObject);
29794
29795 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29796 ULONG ( STDMETHODCALLTYPE *AddRef )(
29797 ID3D12Tools * This);
29798
29799 DECLSPEC_XFGVIRT(IUnknown, Release)
29800 ULONG ( STDMETHODCALLTYPE *Release )(
29801 ID3D12Tools * This);
29802
29803 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29804 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29805 ID3D12Tools * This,
29806 BOOL bEnable);
29807
29808 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29809 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29810 ID3D12Tools * This);
29811
29812 END_INTERFACE
29813 } ID3D12ToolsVtbl;
29814
29815 interface ID3D12Tools
29816 {
29817 CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
29818 };
29819
29820
29821
29822#ifdef COBJMACROS
29823
29824
29825#define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
29826 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29827
29828#define ID3D12Tools_AddRef(This) \
29829 ( (This)->lpVtbl -> AddRef(This) )
29830
29831#define ID3D12Tools_Release(This) \
29832 ( (This)->lpVtbl -> Release(This) )
29833
29834
29835#define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
29836 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29837
29838#define ID3D12Tools_ShaderInstrumentationEnabled(This) \
29839 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29840
29841#endif /* COBJMACROS */
29842
29843
29844#endif /* C style interface */
29845
29846
29847
29848
29849#endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
29850
29851
29852#ifndef __ID3D12Tools1_INTERFACE_DEFINED__
29853#define __ID3D12Tools1_INTERFACE_DEFINED__
29854
29855/* interface ID3D12Tools1 */
29856/* [unique][local][object][uuid] */
29857
29858
29859EXTERN_C const IID IID_ID3D12Tools1;
29860
29861#if defined(__cplusplus) && !defined(CINTERFACE)
29862
29863 MIDL_INTERFACE("e4fbc019-dd3c-43e1-8f32-7f649575f0a0")
29864 ID3D12Tools1 : public ID3D12Tools
29865 {
29866 public:
29867 virtual HRESULT STDMETHODCALLTYPE ReserveGPUVARangesAtCreate(
29868 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29869 _In_ UINT uiNumRanges) = 0;
29870
29871 virtual void STDMETHODCALLTYPE ClearReservedGPUVARangesList( void) = 0;
29872
29873 };
29874
29875
29876#else /* C style interface */
29877
29878 typedef struct ID3D12Tools1Vtbl
29879 {
29880 BEGIN_INTERFACE
29881
29882 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29883 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29884 ID3D12Tools1 * This,
29885 REFIID riid,
29886 _COM_Outptr_ void **ppvObject);
29887
29888 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29889 ULONG ( STDMETHODCALLTYPE *AddRef )(
29890 ID3D12Tools1 * This);
29891
29892 DECLSPEC_XFGVIRT(IUnknown, Release)
29893 ULONG ( STDMETHODCALLTYPE *Release )(
29894 ID3D12Tools1 * This);
29895
29896 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
29897 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
29898 ID3D12Tools1 * This,
29899 BOOL bEnable);
29900
29901 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
29902 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
29903 ID3D12Tools1 * This);
29904
29905 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
29906 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
29907 ID3D12Tools1 * This,
29908 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
29909 _In_ UINT uiNumRanges);
29910
29911 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
29912 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
29913 ID3D12Tools1 * This);
29914
29915 END_INTERFACE
29916 } ID3D12Tools1Vtbl;
29917
29918 interface ID3D12Tools1
29919 {
29920 CONST_VTBL struct ID3D12Tools1Vtbl *lpVtbl;
29921 };
29922
29923
29924
29925#ifdef COBJMACROS
29926
29927
29928#define ID3D12Tools1_QueryInterface(This,riid,ppvObject) \
29929 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
29930
29931#define ID3D12Tools1_AddRef(This) \
29932 ( (This)->lpVtbl -> AddRef(This) )
29933
29934#define ID3D12Tools1_Release(This) \
29935 ( (This)->lpVtbl -> Release(This) )
29936
29937
29938#define ID3D12Tools1_EnableShaderInstrumentation(This,bEnable) \
29939 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
29940
29941#define ID3D12Tools1_ShaderInstrumentationEnabled(This) \
29942 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
29943
29944
29945#define ID3D12Tools1_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
29946 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
29947
29948#define ID3D12Tools1_ClearReservedGPUVARangesList(This) \
29949 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
29950
29951#endif /* COBJMACROS */
29952
29953
29954#endif /* C style interface */
29955
29956
29957
29958
29959#endif /* __ID3D12Tools1_INTERFACE_DEFINED__ */
29960
29961
29962#ifndef __ID3D12Tools2_INTERFACE_DEFINED__
29963#define __ID3D12Tools2_INTERFACE_DEFINED__
29964
29965/* interface ID3D12Tools2 */
29966/* [unique][local][object][uuid] */
29967
29968
29969EXTERN_C const IID IID_ID3D12Tools2;
29970
29971#if defined(__cplusplus) && !defined(CINTERFACE)
29972
29973 MIDL_INTERFACE("01d393c5-c9b0-42a1-958c-c26b02d4d097")
29974 ID3D12Tools2 : public ID3D12Tools1
29975 {
29976 public:
29977 virtual HRESULT STDMETHODCALLTYPE SetApplicationSpecificDriverState(
29978 _In_ IUnknown *pAdapter,
29979 _In_opt_ ID3DBlob *pBlob) = 0;
29980
29981 };
29982
29983
29984#else /* C style interface */
29985
29986 typedef struct ID3D12Tools2Vtbl
29987 {
29988 BEGIN_INTERFACE
29989
29990 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
29991 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
29992 ID3D12Tools2 * This,
29993 REFIID riid,
29994 _COM_Outptr_ void **ppvObject);
29995
29996 DECLSPEC_XFGVIRT(IUnknown, AddRef)
29997 ULONG ( STDMETHODCALLTYPE *AddRef )(
29998 ID3D12Tools2 * This);
29999
30000 DECLSPEC_XFGVIRT(IUnknown, Release)
30001 ULONG ( STDMETHODCALLTYPE *Release )(
30002 ID3D12Tools2 * This);
30003
30004 DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
30005 void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
30006 ID3D12Tools2 * This,
30007 BOOL bEnable);
30008
30009 DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
30010 BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
30011 ID3D12Tools2 * This);
30012
30013 DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
30014 HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )(
30015 ID3D12Tools2 * This,
30016 _In_reads_(uiNumRanges) D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
30017 _In_ UINT uiNumRanges);
30018
30019 DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
30020 void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )(
30021 ID3D12Tools2 * This);
30022
30023 DECLSPEC_XFGVIRT(ID3D12Tools2, SetApplicationSpecificDriverState)
30024 HRESULT ( STDMETHODCALLTYPE *SetApplicationSpecificDriverState )(
30025 ID3D12Tools2 * This,
30026 _In_ IUnknown *pAdapter,
30027 _In_opt_ ID3DBlob *pBlob);
30028
30029 END_INTERFACE
30030 } ID3D12Tools2Vtbl;
30031
30032 interface ID3D12Tools2
30033 {
30034 CONST_VTBL struct ID3D12Tools2Vtbl *lpVtbl;
30035 };
30036
30037
30038
30039#ifdef COBJMACROS
30040
30041
30042#define ID3D12Tools2_QueryInterface(This,riid,ppvObject) \
30043 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30044
30045#define ID3D12Tools2_AddRef(This) \
30046 ( (This)->lpVtbl -> AddRef(This) )
30047
30048#define ID3D12Tools2_Release(This) \
30049 ( (This)->lpVtbl -> Release(This) )
30050
30051
30052#define ID3D12Tools2_EnableShaderInstrumentation(This,bEnable) \
30053 ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
30054
30055#define ID3D12Tools2_ShaderInstrumentationEnabled(This) \
30056 ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
30057
30058
30059#define ID3D12Tools2_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) \
30060 ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) )
30061
30062#define ID3D12Tools2_ClearReservedGPUVARangesList(This) \
30063 ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) )
30064
30065
30066#define ID3D12Tools2_SetApplicationSpecificDriverState(This,pAdapter,pBlob) \
30067 ( (This)->lpVtbl -> SetApplicationSpecificDriverState(This,pAdapter,pBlob) )
30068
30069#endif /* COBJMACROS */
30070
30071
30072#endif /* C style interface */
30073
30074
30075
30076
30077#endif /* __ID3D12Tools2_INTERFACE_DEFINED__ */
30078
30079
30080#ifndef __ID3D12PageableTools_INTERFACE_DEFINED__
30081#define __ID3D12PageableTools_INTERFACE_DEFINED__
30082
30083/* interface ID3D12PageableTools */
30084/* [unique][local][object][uuid] */
30085
30086
30087EXTERN_C const IID IID_ID3D12PageableTools;
30088
30089#if defined(__cplusplus) && !defined(CINTERFACE)
30090
30091 MIDL_INTERFACE("8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d")
30092 ID3D12PageableTools : public IUnknown
30093 {
30094 public:
30095 virtual HRESULT STDMETHODCALLTYPE GetAllocation(
30096 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation) = 0;
30097
30098 };
30099
30100
30101#else /* C style interface */
30102
30103 typedef struct ID3D12PageableToolsVtbl
30104 {
30105 BEGIN_INTERFACE
30106
30107 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30108 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30109 ID3D12PageableTools * This,
30110 REFIID riid,
30111 _COM_Outptr_ void **ppvObject);
30112
30113 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30114 ULONG ( STDMETHODCALLTYPE *AddRef )(
30115 ID3D12PageableTools * This);
30116
30117 DECLSPEC_XFGVIRT(IUnknown, Release)
30118 ULONG ( STDMETHODCALLTYPE *Release )(
30119 ID3D12PageableTools * This);
30120
30121 DECLSPEC_XFGVIRT(ID3D12PageableTools, GetAllocation)
30122 HRESULT ( STDMETHODCALLTYPE *GetAllocation )(
30123 ID3D12PageableTools * This,
30124 _Inout_ D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation);
30125
30126 END_INTERFACE
30127 } ID3D12PageableToolsVtbl;
30128
30129 interface ID3D12PageableTools
30130 {
30131 CONST_VTBL struct ID3D12PageableToolsVtbl *lpVtbl;
30132 };
30133
30134
30135
30136#ifdef COBJMACROS
30137
30138
30139#define ID3D12PageableTools_QueryInterface(This,riid,ppvObject) \
30140 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30141
30142#define ID3D12PageableTools_AddRef(This) \
30143 ( (This)->lpVtbl -> AddRef(This) )
30144
30145#define ID3D12PageableTools_Release(This) \
30146 ( (This)->lpVtbl -> Release(This) )
30147
30148
30149#define ID3D12PageableTools_GetAllocation(This,pAllocation) \
30150 ( (This)->lpVtbl -> GetAllocation(This,pAllocation) )
30151
30152#endif /* COBJMACROS */
30153
30154
30155#endif /* C style interface */
30156
30157
30158
30159
30160#endif /* __ID3D12PageableTools_INTERFACE_DEFINED__ */
30161
30162
30163#ifndef __ID3D12DeviceTools_INTERFACE_DEFINED__
30164#define __ID3D12DeviceTools_INTERFACE_DEFINED__
30165
30166/* interface ID3D12DeviceTools */
30167/* [unique][local][object][uuid] */
30168
30169
30170EXTERN_C const IID IID_ID3D12DeviceTools;
30171
30172#if defined(__cplusplus) && !defined(CINTERFACE)
30173
30174 MIDL_INTERFACE("2ea68e9c-19c3-4e47-a109-6cdadff0aca9")
30175 ID3D12DeviceTools : public IUnknown
30176 {
30177 public:
30178 virtual void STDMETHODCALLTYPE SetNextAllocationAddress(
30179 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress) = 0;
30180
30181 };
30182
30183
30184#else /* C style interface */
30185
30186 typedef struct ID3D12DeviceToolsVtbl
30187 {
30188 BEGIN_INTERFACE
30189
30190 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30191 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30192 ID3D12DeviceTools * This,
30193 REFIID riid,
30194 _COM_Outptr_ void **ppvObject);
30195
30196 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30197 ULONG ( STDMETHODCALLTYPE *AddRef )(
30198 ID3D12DeviceTools * This);
30199
30200 DECLSPEC_XFGVIRT(IUnknown, Release)
30201 ULONG ( STDMETHODCALLTYPE *Release )(
30202 ID3D12DeviceTools * This);
30203
30204 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30205 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30206 ID3D12DeviceTools * This,
30207 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30208
30209 END_INTERFACE
30210 } ID3D12DeviceToolsVtbl;
30211
30212 interface ID3D12DeviceTools
30213 {
30214 CONST_VTBL struct ID3D12DeviceToolsVtbl *lpVtbl;
30215 };
30216
30217
30218
30219#ifdef COBJMACROS
30220
30221
30222#define ID3D12DeviceTools_QueryInterface(This,riid,ppvObject) \
30223 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30224
30225#define ID3D12DeviceTools_AddRef(This) \
30226 ( (This)->lpVtbl -> AddRef(This) )
30227
30228#define ID3D12DeviceTools_Release(This) \
30229 ( (This)->lpVtbl -> Release(This) )
30230
30231
30232#define ID3D12DeviceTools_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30233 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30234
30235#endif /* COBJMACROS */
30236
30237
30238#endif /* C style interface */
30239
30240
30241
30242
30243#endif /* __ID3D12DeviceTools_INTERFACE_DEFINED__ */
30244
30245
30246/* interface __MIDL_itf_d3d12_0000_0070 */
30247/* [local] */
30248
30249typedef
30250enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
30251 {
30252 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
30253 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
30254 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
30255 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4
30256 } D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
30257
30258
30259
30260extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_c_ifspec;
30261extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_s_ifspec;
30262
30263#ifndef __ID3D12DeviceTools1_INTERFACE_DEFINED__
30264#define __ID3D12DeviceTools1_INTERFACE_DEFINED__
30265
30266/* interface ID3D12DeviceTools1 */
30267/* [unique][local][object][uuid] */
30268
30269
30270EXTERN_C const IID IID_ID3D12DeviceTools1;
30271
30272#if defined(__cplusplus) && !defined(CINTERFACE)
30273
30274 MIDL_INTERFACE("e30e9fc7-e641-4d6e-8a81-9dd9206ec47a")
30275 ID3D12DeviceTools1 : public ID3D12DeviceTools
30276 {
30277 public:
30278 virtual HRESULT STDMETHODCALLTYPE GetApplicationSpecificDriverState(
30279 _COM_Outptr_ ID3DBlob **ppBlob) = 0;
30280
30281 virtual D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS STDMETHODCALLTYPE GetApplicationSpecificDriverBlobStatus( void) = 0;
30282
30283 };
30284
30285
30286#else /* C style interface */
30287
30288 typedef struct ID3D12DeviceTools1Vtbl
30289 {
30290 BEGIN_INTERFACE
30291
30292 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30293 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30294 ID3D12DeviceTools1 * This,
30295 REFIID riid,
30296 _COM_Outptr_ void **ppvObject);
30297
30298 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30299 ULONG ( STDMETHODCALLTYPE *AddRef )(
30300 ID3D12DeviceTools1 * This);
30301
30302 DECLSPEC_XFGVIRT(IUnknown, Release)
30303 ULONG ( STDMETHODCALLTYPE *Release )(
30304 ID3D12DeviceTools1 * This);
30305
30306 DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
30307 void ( STDMETHODCALLTYPE *SetNextAllocationAddress )(
30308 ID3D12DeviceTools1 * This,
30309 _In_ D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
30310
30311 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverState)
30312 HRESULT ( STDMETHODCALLTYPE *GetApplicationSpecificDriverState )(
30313 ID3D12DeviceTools1 * This,
30314 _COM_Outptr_ ID3DBlob **ppBlob);
30315
30316 DECLSPEC_XFGVIRT(ID3D12DeviceTools1, GetApplicationSpecificDriverBlobStatus)
30317 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS ( STDMETHODCALLTYPE *GetApplicationSpecificDriverBlobStatus )(
30318 ID3D12DeviceTools1 * This);
30319
30320 END_INTERFACE
30321 } ID3D12DeviceTools1Vtbl;
30322
30323 interface ID3D12DeviceTools1
30324 {
30325 CONST_VTBL struct ID3D12DeviceTools1Vtbl *lpVtbl;
30326 };
30327
30328
30329
30330#ifdef COBJMACROS
30331
30332
30333#define ID3D12DeviceTools1_QueryInterface(This,riid,ppvObject) \
30334 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30335
30336#define ID3D12DeviceTools1_AddRef(This) \
30337 ( (This)->lpVtbl -> AddRef(This) )
30338
30339#define ID3D12DeviceTools1_Release(This) \
30340 ( (This)->lpVtbl -> Release(This) )
30341
30342
30343#define ID3D12DeviceTools1_SetNextAllocationAddress(This,nextAllocationVirtualAddress) \
30344 ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) )
30345
30346
30347#define ID3D12DeviceTools1_GetApplicationSpecificDriverState(This,ppBlob) \
30348 ( (This)->lpVtbl -> GetApplicationSpecificDriverState(This,ppBlob) )
30349
30350#define ID3D12DeviceTools1_GetApplicationSpecificDriverBlobStatus(This) \
30351 ( (This)->lpVtbl -> GetApplicationSpecificDriverBlobStatus(This) )
30352
30353#endif /* COBJMACROS */
30354
30355
30356#endif /* C style interface */
30357
30358
30359
30360
30361#endif /* __ID3D12DeviceTools1_INTERFACE_DEFINED__ */
30362
30363
30364/* interface __MIDL_itf_d3d12_0000_0071 */
30365/* [local] */
30366
30367typedef struct D3D12_SUBRESOURCE_DATA
30368 {
30369 const void *pData;
30370 LONG_PTR RowPitch;
30371 LONG_PTR SlicePitch;
30372 } D3D12_SUBRESOURCE_DATA;
30373
30374typedef struct D3D12_MEMCPY_DEST
30375 {
30376 void *pData;
30377 SIZE_T RowPitch;
30378 SIZE_T SlicePitch;
30379 } D3D12_MEMCPY_DEST;
30380
30381#if !defined( D3D12_IGNORE_SDK_LAYERS )
30382#include "d3d12sdklayers.h"
30383#endif
30384
30385///////////////////////////////////////////////////////////////////////////
30386// D3D12CreateDevice
30387// ------------------
30388//
30389// pAdapter
30390// If NULL, D3D12CreateDevice will choose the primary adapter.
30391// If non-NULL, D3D12CreateDevice will use the provided adapter.
30392// MinimumFeatureLevel
30393// The minimum feature level required for successful device creation.
30394// riid
30395// The interface IID of the device to be returned. Expected: ID3D12Device.
30396// ppDevice
30397// Pointer to returned interface. May be NULL.
30398//
30399// Return Values
30400// Any of those documented for
30401// CreateDXGIFactory1
30402// IDXGIFactory::EnumAdapters
30403// D3D12CreateDevice
30404//
30405///////////////////////////////////////////////////////////////////////////
30406typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
30407 D3D_FEATURE_LEVEL,
30408 _In_ REFIID, _COM_Outptr_opt_ void** );
30409
30410HRESULT WINAPI D3D12CreateDevice(
30411 _In_opt_ IUnknown* pAdapter,
30412 D3D_FEATURE_LEVEL MinimumFeatureLevel,
30413 _In_ REFIID riid, // Expected: ID3D12Device
30414 _COM_Outptr_opt_ void** ppDevice );
30415
30416
30417typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
30418
30419HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30420
30421// --------------------------------------------------------------------------------------------------------------------------------
30422// D3D12EnableExperimentalFeatures
30423//
30424// Pass in a list of feature GUIDs to be enabled together.
30425//
30426// If a particular feature requires some configuration information on enablement, it will have
30427// a configuration struct that can be passed alongside the GUID.
30428//
30429// Some features might use an interface IID as the GUID. For these, once the feature is enabled via
30430// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
30431// for manipulating the feature. This allows for control that might not cleanly be expressed by just
30432// the configuration struct that D3D12EnableExperimentalFeatures provides.
30433//
30434// If this method is called and a change to existing feature enablement is made,
30435// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
30436// singleton device for a process. Removing the devices when configuration changes prevents
30437// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
30438//
30439// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
30440// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
30441// in are known to be incompatible with each other, or other errors.
30442// Returns S_OK otherwise.
30443//
30444// --------------------------------------------------------------------------------------------------------------------------------
30445HRESULT WINAPI D3D12EnableExperimentalFeatures(
30446 UINT NumFeatures,
30447 _In_count_(NumFeatures) const IID* pIIDs,
30448 _In_opt_count_(NumFeatures) void* pConfigurationStructs,
30449 _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);
30450
30451// --------------------------------------------------------------------------------------------------------------------------------
30452// Experimental Feature: D3D12ExperimentalShaderModels
30453//
30454// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
30455// meaning shader models that haven't been finalized for use in retail.
30456//
30457// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
30458//
30459// --------------------------------------------------------------------------------------------------------------------------------
30460static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
30461 0x76f5573e,
30462 0xf13a,
30463 0x40f5,
30464 { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
30465};
30466// --------------------------------------------------------------------------------------------------------------------------------
30467// Experimental Feature: D3D12TiledResourceTier4
30468//
30469// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,
30470// meaning texture tile data-inheritance is allowed.
30471//
30472// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.
30473//
30474// --------------------------------------------------------------------------------------------------------------------------------
30475static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */
30476 0xc9c4725f,
30477 0xa81a,
30478 0x4f56,
30479 { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
30480};
30481// --------------------------------------------------------------------------------------------------------------------------------
30482// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS
30483//
30484// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS,
30485// driver support is still required for this feature.
30486//
30487// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.
30488//
30489// --------------------------------------------------------------------------------------------------------------------------------
30490static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */
30491 0x45dc51f3,
30492 0x767f,
30493 0x4588,
30494 { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }
30495};
30496// --------------------------------------------------------------------------------------------------------------------------------
30497// D3D12GetInterface
30498//
30499// Retrieve Global D3D12 Interface.
30500//
30501
30502DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);
30503DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);
30504DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
30505DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
30506DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);
30507DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);
30508DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);
30509
30510typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
30511
30512HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
30513
30514
30515
30516extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_c_ifspec;
30517extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_s_ifspec;
30518
30519#ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30520#define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
30521
30522/* interface ID3D12SDKConfiguration */
30523/* [unique][local][object][uuid] */
30524
30525
30526EXTERN_C const IID IID_ID3D12SDKConfiguration;
30527
30528#if defined(__cplusplus) && !defined(CINTERFACE)
30529
30530 MIDL_INTERFACE("e9eb5314-33aa-42b2-a718-d77f58b1f1c7")
30531 ID3D12SDKConfiguration : public IUnknown
30532 {
30533 public:
30534 virtual HRESULT STDMETHODCALLTYPE SetSDKVersion(
30535 UINT SDKVersion,
30536 _In_z_ LPCSTR SDKPath) = 0;
30537
30538 };
30539
30540
30541#else /* C style interface */
30542
30543 typedef struct ID3D12SDKConfigurationVtbl
30544 {
30545 BEGIN_INTERFACE
30546
30547 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30548 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30549 ID3D12SDKConfiguration * This,
30550 REFIID riid,
30551 _COM_Outptr_ void **ppvObject);
30552
30553 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30554 ULONG ( STDMETHODCALLTYPE *AddRef )(
30555 ID3D12SDKConfiguration * This);
30556
30557 DECLSPEC_XFGVIRT(IUnknown, Release)
30558 ULONG ( STDMETHODCALLTYPE *Release )(
30559 ID3D12SDKConfiguration * This);
30560
30561 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30562 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30563 ID3D12SDKConfiguration * This,
30564 UINT SDKVersion,
30565 _In_z_ LPCSTR SDKPath);
30566
30567 END_INTERFACE
30568 } ID3D12SDKConfigurationVtbl;
30569
30570 interface ID3D12SDKConfiguration
30571 {
30572 CONST_VTBL struct ID3D12SDKConfigurationVtbl *lpVtbl;
30573 };
30574
30575
30576
30577#ifdef COBJMACROS
30578
30579
30580#define ID3D12SDKConfiguration_QueryInterface(This,riid,ppvObject) \
30581 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30582
30583#define ID3D12SDKConfiguration_AddRef(This) \
30584 ( (This)->lpVtbl -> AddRef(This) )
30585
30586#define ID3D12SDKConfiguration_Release(This) \
30587 ( (This)->lpVtbl -> Release(This) )
30588
30589
30590#define ID3D12SDKConfiguration_SetSDKVersion(This,SDKVersion,SDKPath) \
30591 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30592
30593#endif /* COBJMACROS */
30594
30595
30596#endif /* C style interface */
30597
30598
30599
30600
30601#endif /* __ID3D12SDKConfiguration_INTERFACE_DEFINED__ */
30602
30603
30604#ifndef __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30605#define __ID3D12SDKConfiguration1_INTERFACE_DEFINED__
30606
30607/* interface ID3D12SDKConfiguration1 */
30608/* [unique][local][object][uuid] */
30609
30610
30611EXTERN_C const IID IID_ID3D12SDKConfiguration1;
30612
30613#if defined(__cplusplus) && !defined(CINTERFACE)
30614
30615 MIDL_INTERFACE("8aaf9303-ad25-48b9-9a57-d9c37e009d9f")
30616 ID3D12SDKConfiguration1 : public ID3D12SDKConfiguration
30617 {
30618 public:
30619 virtual HRESULT STDMETHODCALLTYPE CreateDeviceFactory(
30620 UINT SDKVersion,
30621 _In_ LPCSTR SDKPath,
30622 REFIID riid,
30623 _COM_Outptr_ void **ppvFactory) = 0;
30624
30625 virtual void STDMETHODCALLTYPE FreeUnusedSDKs( void) = 0;
30626
30627 };
30628
30629
30630#else /* C style interface */
30631
30632 typedef struct ID3D12SDKConfiguration1Vtbl
30633 {
30634 BEGIN_INTERFACE
30635
30636 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30637 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30638 ID3D12SDKConfiguration1 * This,
30639 REFIID riid,
30640 _COM_Outptr_ void **ppvObject);
30641
30642 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30643 ULONG ( STDMETHODCALLTYPE *AddRef )(
30644 ID3D12SDKConfiguration1 * This);
30645
30646 DECLSPEC_XFGVIRT(IUnknown, Release)
30647 ULONG ( STDMETHODCALLTYPE *Release )(
30648 ID3D12SDKConfiguration1 * This);
30649
30650 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration, SetSDKVersion)
30651 HRESULT ( STDMETHODCALLTYPE *SetSDKVersion )(
30652 ID3D12SDKConfiguration1 * This,
30653 UINT SDKVersion,
30654 _In_z_ LPCSTR SDKPath);
30655
30656 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, CreateDeviceFactory)
30657 HRESULT ( STDMETHODCALLTYPE *CreateDeviceFactory )(
30658 ID3D12SDKConfiguration1 * This,
30659 UINT SDKVersion,
30660 _In_ LPCSTR SDKPath,
30661 REFIID riid,
30662 _COM_Outptr_ void **ppvFactory);
30663
30664 DECLSPEC_XFGVIRT(ID3D12SDKConfiguration1, FreeUnusedSDKs)
30665 void ( STDMETHODCALLTYPE *FreeUnusedSDKs )(
30666 ID3D12SDKConfiguration1 * This);
30667
30668 END_INTERFACE
30669 } ID3D12SDKConfiguration1Vtbl;
30670
30671 interface ID3D12SDKConfiguration1
30672 {
30673 CONST_VTBL struct ID3D12SDKConfiguration1Vtbl *lpVtbl;
30674 };
30675
30676
30677
30678#ifdef COBJMACROS
30679
30680
30681#define ID3D12SDKConfiguration1_QueryInterface(This,riid,ppvObject) \
30682 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30683
30684#define ID3D12SDKConfiguration1_AddRef(This) \
30685 ( (This)->lpVtbl -> AddRef(This) )
30686
30687#define ID3D12SDKConfiguration1_Release(This) \
30688 ( (This)->lpVtbl -> Release(This) )
30689
30690
30691#define ID3D12SDKConfiguration1_SetSDKVersion(This,SDKVersion,SDKPath) \
30692 ( (This)->lpVtbl -> SetSDKVersion(This,SDKVersion,SDKPath) )
30693
30694
30695#define ID3D12SDKConfiguration1_CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) \
30696 ( (This)->lpVtbl -> CreateDeviceFactory(This,SDKVersion,SDKPath,riid,ppvFactory) )
30697
30698#define ID3D12SDKConfiguration1_FreeUnusedSDKs(This) \
30699 ( (This)->lpVtbl -> FreeUnusedSDKs(This) )
30700
30701#endif /* COBJMACROS */
30702
30703
30704#endif /* C style interface */
30705
30706
30707
30708
30709#endif /* __ID3D12SDKConfiguration1_INTERFACE_DEFINED__ */
30710
30711
30712/* interface __MIDL_itf_d3d12_0000_0073 */
30713/* [local] */
30714
30715typedef
30716enum D3D12_DEVICE_FACTORY_FLAGS
30717 {
30718 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
30719 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
30720 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
30721 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4
30722 } D3D12_DEVICE_FACTORY_FLAGS;
30723
30724DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )
30725
30726
30727extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_c_ifspec;
30728extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0073_v0_0_s_ifspec;
30729
30730#ifndef __ID3D12DeviceFactory_INTERFACE_DEFINED__
30731#define __ID3D12DeviceFactory_INTERFACE_DEFINED__
30732
30733/* interface ID3D12DeviceFactory */
30734/* [unique][local][object][uuid] */
30735
30736
30737EXTERN_C const IID IID_ID3D12DeviceFactory;
30738
30739#if defined(__cplusplus) && !defined(CINTERFACE)
30740
30741 MIDL_INTERFACE("61f307d3-d34e-4e7c-8374-3ba4de23cccb")
30742 ID3D12DeviceFactory : public IUnknown
30743 {
30744 public:
30745 virtual HRESULT STDMETHODCALLTYPE InitializeFromGlobalState( void) = 0;
30746
30747 virtual HRESULT STDMETHODCALLTYPE ApplyToGlobalState( void) = 0;
30748
30749 virtual HRESULT STDMETHODCALLTYPE SetFlags(
30750 D3D12_DEVICE_FACTORY_FLAGS flags) = 0;
30751
30752 virtual D3D12_DEVICE_FACTORY_FLAGS STDMETHODCALLTYPE GetFlags( void) = 0;
30753
30754 virtual HRESULT STDMETHODCALLTYPE GetConfigurationInterface(
30755 REFCLSID clsid,
30756 REFIID iid,
30757 _COM_Outptr_ void **ppv) = 0;
30758
30759 virtual HRESULT STDMETHODCALLTYPE EnableExperimentalFeatures(
30760 UINT NumFeatures,
30761 _In_reads_(NumFeatures) const IID *pIIDs,
30762 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30763 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes) = 0;
30764
30765 virtual HRESULT STDMETHODCALLTYPE CreateDevice(
30766 _In_opt_ IUnknown *adapter,
30767 D3D_FEATURE_LEVEL FeatureLevel,
30768 REFIID riid,
30769 _COM_Outptr_opt_ void **ppvDevice) = 0;
30770
30771 };
30772
30773
30774#else /* C style interface */
30775
30776 typedef struct ID3D12DeviceFactoryVtbl
30777 {
30778 BEGIN_INTERFACE
30779
30780 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30781 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30782 ID3D12DeviceFactory * This,
30783 REFIID riid,
30784 _COM_Outptr_ void **ppvObject);
30785
30786 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30787 ULONG ( STDMETHODCALLTYPE *AddRef )(
30788 ID3D12DeviceFactory * This);
30789
30790 DECLSPEC_XFGVIRT(IUnknown, Release)
30791 ULONG ( STDMETHODCALLTYPE *Release )(
30792 ID3D12DeviceFactory * This);
30793
30794 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, InitializeFromGlobalState)
30795 HRESULT ( STDMETHODCALLTYPE *InitializeFromGlobalState )(
30796 ID3D12DeviceFactory * This);
30797
30798 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, ApplyToGlobalState)
30799 HRESULT ( STDMETHODCALLTYPE *ApplyToGlobalState )(
30800 ID3D12DeviceFactory * This);
30801
30802 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, SetFlags)
30803 HRESULT ( STDMETHODCALLTYPE *SetFlags )(
30804 ID3D12DeviceFactory * This,
30805 D3D12_DEVICE_FACTORY_FLAGS flags);
30806
30807 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetFlags)
30808 D3D12_DEVICE_FACTORY_FLAGS ( STDMETHODCALLTYPE *GetFlags )(
30809 ID3D12DeviceFactory * This);
30810
30811 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, GetConfigurationInterface)
30812 HRESULT ( STDMETHODCALLTYPE *GetConfigurationInterface )(
30813 ID3D12DeviceFactory * This,
30814 REFCLSID clsid,
30815 REFIID iid,
30816 _COM_Outptr_ void **ppv);
30817
30818 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, EnableExperimentalFeatures)
30819 HRESULT ( STDMETHODCALLTYPE *EnableExperimentalFeatures )(
30820 ID3D12DeviceFactory * This,
30821 UINT NumFeatures,
30822 _In_reads_(NumFeatures) const IID *pIIDs,
30823 _In_reads_opt_(NumFeatures) void *pConfigurationStructs,
30824 _In_reads_opt_(NumFeatures) UINT *pConfigurationStructSizes);
30825
30826 DECLSPEC_XFGVIRT(ID3D12DeviceFactory, CreateDevice)
30827 HRESULT ( STDMETHODCALLTYPE *CreateDevice )(
30828 ID3D12DeviceFactory * This,
30829 _In_opt_ IUnknown *adapter,
30830 D3D_FEATURE_LEVEL FeatureLevel,
30831 REFIID riid,
30832 _COM_Outptr_opt_ void **ppvDevice);
30833
30834 END_INTERFACE
30835 } ID3D12DeviceFactoryVtbl;
30836
30837 interface ID3D12DeviceFactory
30838 {
30839 CONST_VTBL struct ID3D12DeviceFactoryVtbl *lpVtbl;
30840 };
30841
30842
30843
30844#ifdef COBJMACROS
30845
30846
30847#define ID3D12DeviceFactory_QueryInterface(This,riid,ppvObject) \
30848 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
30849
30850#define ID3D12DeviceFactory_AddRef(This) \
30851 ( (This)->lpVtbl -> AddRef(This) )
30852
30853#define ID3D12DeviceFactory_Release(This) \
30854 ( (This)->lpVtbl -> Release(This) )
30855
30856
30857#define ID3D12DeviceFactory_InitializeFromGlobalState(This) \
30858 ( (This)->lpVtbl -> InitializeFromGlobalState(This) )
30859
30860#define ID3D12DeviceFactory_ApplyToGlobalState(This) \
30861 ( (This)->lpVtbl -> ApplyToGlobalState(This) )
30862
30863#define ID3D12DeviceFactory_SetFlags(This,flags) \
30864 ( (This)->lpVtbl -> SetFlags(This,flags) )
30865
30866#define ID3D12DeviceFactory_GetFlags(This) \
30867 ( (This)->lpVtbl -> GetFlags(This) )
30868
30869#define ID3D12DeviceFactory_GetConfigurationInterface(This,clsid,iid,ppv) \
30870 ( (This)->lpVtbl -> GetConfigurationInterface(This,clsid,iid,ppv) )
30871
30872#define ID3D12DeviceFactory_EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) \
30873 ( (This)->lpVtbl -> EnableExperimentalFeatures(This,NumFeatures,pIIDs,pConfigurationStructs,pConfigurationStructSizes) )
30874
30875#define ID3D12DeviceFactory_CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) \
30876 ( (This)->lpVtbl -> CreateDevice(This,adapter,FeatureLevel,riid,ppvDevice) )
30877
30878#endif /* COBJMACROS */
30879
30880
30881#endif /* C style interface */
30882
30883
30884
30885
30886#endif /* __ID3D12DeviceFactory_INTERFACE_DEFINED__ */
30887
30888
30889/* interface __MIDL_itf_d3d12_0000_0074 */
30890/* [local] */
30891
30892typedef
30893enum D3D12_DEVICE_FLAGS
30894 {
30895 D3D12_DEVICE_FLAG_NONE = 0,
30896 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
30897 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
30898 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
30899 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
30900 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
30901 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
30902 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
30903 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
30904 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
30905 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
30906 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400
30907 } D3D12_DEVICE_FLAGS;
30908
30909DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )
30910typedef struct D3D12_DEVICE_CONFIGURATION_DESC
30911 {
30912 D3D12_DEVICE_FLAGS Flags;
30913 UINT GpuBasedValidationFlags;
30914 UINT SDKVersion;
30915 UINT NumEnabledExperimentalFeatures;
30916 } D3D12_DEVICE_CONFIGURATION_DESC;
30917
30918
30919
30920extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_c_ifspec;
30921extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_s_ifspec;
30922
30923#ifndef __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30924#define __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
30925
30926/* interface ID3D12DeviceConfiguration */
30927/* [unique][local][object][uuid] */
30928
30929
30930EXTERN_C const IID IID_ID3D12DeviceConfiguration;
30931
30932#if defined(__cplusplus) && !defined(CINTERFACE)
30933
30934 MIDL_INTERFACE("78dbf87b-f766-422b-a61c-c8c446bdb9ad")
30935 ID3D12DeviceConfiguration : public IUnknown
30936 {
30937 public:
30938#if defined(_MSC_VER) || !defined(_WIN32)
30939 virtual D3D12_DEVICE_CONFIGURATION_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
30940#else
30941 virtual D3D12_DEVICE_CONFIGURATION_DESC *STDMETHODCALLTYPE GetDesc(
30942 D3D12_DEVICE_CONFIGURATION_DESC * RetVal) = 0;
30943#endif
30944
30945 virtual HRESULT STDMETHODCALLTYPE GetEnabledExperimentalFeatures(
30946 _Out_writes_(NumGuids) GUID *pGuids,
30947 UINT NumGuids) = 0;
30948
30949 virtual HRESULT STDMETHODCALLTYPE SerializeVersionedRootSignature(
30950 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
30951 _COM_Outptr_ ID3DBlob **ppResult,
30952 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError) = 0;
30953
30954 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializer(
30955 _In_reads_bytes_(Size) const void *pBlob,
30956 SIZE_T Size,
30957 REFIID riid,
30958 _COM_Outptr_ void **ppvDeserializer) = 0;
30959
30960 };
30961
30962
30963#else /* C style interface */
30964
30965 typedef struct ID3D12DeviceConfigurationVtbl
30966 {
30967 BEGIN_INTERFACE
30968
30969 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
30970 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
30971 ID3D12DeviceConfiguration * This,
30972 REFIID riid,
30973 _COM_Outptr_ void **ppvObject);
30974
30975 DECLSPEC_XFGVIRT(IUnknown, AddRef)
30976 ULONG ( STDMETHODCALLTYPE *AddRef )(
30977 ID3D12DeviceConfiguration * This);
30978
30979 DECLSPEC_XFGVIRT(IUnknown, Release)
30980 ULONG ( STDMETHODCALLTYPE *Release )(
30981 ID3D12DeviceConfiguration * This);
30982
30983 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
30984#if !defined(_WIN32)
30985 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
30986 ID3D12DeviceConfiguration * This);
30987
30988#else
30989 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
30990 ID3D12DeviceConfiguration * This,
30991 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
30992
30993#endif
30994
30995 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
30996 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
30997 ID3D12DeviceConfiguration * This,
30998 _Out_writes_(NumGuids) GUID *pGuids,
30999 UINT NumGuids);
31000
31001 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31002 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31003 ID3D12DeviceConfiguration * This,
31004 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31005 _COM_Outptr_ ID3DBlob **ppResult,
31006 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31007
31008 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31009 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31010 ID3D12DeviceConfiguration * This,
31011 _In_reads_bytes_(Size) const void *pBlob,
31012 SIZE_T Size,
31013 REFIID riid,
31014 _COM_Outptr_ void **ppvDeserializer);
31015
31016 END_INTERFACE
31017 } ID3D12DeviceConfigurationVtbl;
31018
31019 interface ID3D12DeviceConfiguration
31020 {
31021 CONST_VTBL struct ID3D12DeviceConfigurationVtbl *lpVtbl;
31022 };
31023
31024
31025
31026#ifdef COBJMACROS
31027
31028
31029#define ID3D12DeviceConfiguration_QueryInterface(This,riid,ppvObject) \
31030 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31031
31032#define ID3D12DeviceConfiguration_AddRef(This) \
31033 ( (This)->lpVtbl -> AddRef(This) )
31034
31035#define ID3D12DeviceConfiguration_Release(This) \
31036 ( (This)->lpVtbl -> Release(This) )
31037
31038#if !defined(_WIN32)
31039
31040#define ID3D12DeviceConfiguration_GetDesc(This) \
31041 ( (This)->lpVtbl -> GetDesc(This) )
31042#else
31043#define ID3D12DeviceConfiguration_GetDesc(This,RetVal) \
31044 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31045#endif
31046
31047#define ID3D12DeviceConfiguration_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31048 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31049
31050#define ID3D12DeviceConfiguration_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31051 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31052
31053#define ID3D12DeviceConfiguration_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31054 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31055
31056#endif /* COBJMACROS */
31057
31058
31059#endif /* C style interface */
31060
31061
31062
31063
31064#endif /* __ID3D12DeviceConfiguration_INTERFACE_DEFINED__ */
31065
31066
31067#ifndef __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31068#define __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__
31069
31070/* interface ID3D12DeviceConfiguration1 */
31071/* [unique][local][object][uuid] */
31072
31073
31074EXTERN_C const IID IID_ID3D12DeviceConfiguration1;
31075
31076#if defined(__cplusplus) && !defined(CINTERFACE)
31077
31078 MIDL_INTERFACE("ed342442-6343-4e16-bb82-a3a577874e56")
31079 ID3D12DeviceConfiguration1 : public ID3D12DeviceConfiguration
31080 {
31081 public:
31082 virtual HRESULT STDMETHODCALLTYPE CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
31083 _In_reads_bytes_(Size) const void *pLibraryBlob,
31084 SIZE_T Size,
31085 LPCWSTR RootSignatureSubobjectName,
31086 REFIID riid,
31087 _COM_Outptr_ void **ppvDeserializer) = 0;
31088
31089 };
31090
31091
31092#else /* C style interface */
31093
31094 typedef struct ID3D12DeviceConfiguration1Vtbl
31095 {
31096 BEGIN_INTERFACE
31097
31098 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31099 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31100 ID3D12DeviceConfiguration1 * This,
31101 REFIID riid,
31102 _COM_Outptr_ void **ppvObject);
31103
31104 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31105 ULONG ( STDMETHODCALLTYPE *AddRef )(
31106 ID3D12DeviceConfiguration1 * This);
31107
31108 DECLSPEC_XFGVIRT(IUnknown, Release)
31109 ULONG ( STDMETHODCALLTYPE *Release )(
31110 ID3D12DeviceConfiguration1 * This);
31111
31112 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetDesc)
31113#if !defined(_WIN32)
31114 D3D12_DEVICE_CONFIGURATION_DESC ( STDMETHODCALLTYPE *GetDesc )(
31115 ID3D12DeviceConfiguration1 * This);
31116
31117#else
31118 D3D12_DEVICE_CONFIGURATION_DESC *( STDMETHODCALLTYPE *GetDesc )(
31119 ID3D12DeviceConfiguration1 * This,
31120 D3D12_DEVICE_CONFIGURATION_DESC * RetVal);
31121
31122#endif
31123
31124 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, GetEnabledExperimentalFeatures)
31125 HRESULT ( STDMETHODCALLTYPE *GetEnabledExperimentalFeatures )(
31126 ID3D12DeviceConfiguration1 * This,
31127 _Out_writes_(NumGuids) GUID *pGuids,
31128 UINT NumGuids);
31129
31130 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, SerializeVersionedRootSignature)
31131 HRESULT ( STDMETHODCALLTYPE *SerializeVersionedRootSignature )(
31132 ID3D12DeviceConfiguration1 * This,
31133 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
31134 _COM_Outptr_ ID3DBlob **ppResult,
31135 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob **ppError);
31136
31137 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration, CreateVersionedRootSignatureDeserializer)
31138 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializer )(
31139 ID3D12DeviceConfiguration1 * This,
31140 _In_reads_bytes_(Size) const void *pBlob,
31141 SIZE_T Size,
31142 REFIID riid,
31143 _COM_Outptr_ void **ppvDeserializer);
31144
31145 DECLSPEC_XFGVIRT(ID3D12DeviceConfiguration1, CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary)
31146 HRESULT ( STDMETHODCALLTYPE *CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary )(
31147 ID3D12DeviceConfiguration1 * This,
31148 _In_reads_bytes_(Size) const void *pLibraryBlob,
31149 SIZE_T Size,
31150 LPCWSTR RootSignatureSubobjectName,
31151 REFIID riid,
31152 _COM_Outptr_ void **ppvDeserializer);
31153
31154 END_INTERFACE
31155 } ID3D12DeviceConfiguration1Vtbl;
31156
31157 interface ID3D12DeviceConfiguration1
31158 {
31159 CONST_VTBL struct ID3D12DeviceConfiguration1Vtbl *lpVtbl;
31160 };
31161
31162
31163
31164#ifdef COBJMACROS
31165
31166
31167#define ID3D12DeviceConfiguration1_QueryInterface(This,riid,ppvObject) \
31168 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31169
31170#define ID3D12DeviceConfiguration1_AddRef(This) \
31171 ( (This)->lpVtbl -> AddRef(This) )
31172
31173#define ID3D12DeviceConfiguration1_Release(This) \
31174 ( (This)->lpVtbl -> Release(This) )
31175
31176#if !defined(_WIN32)
31177
31178#define ID3D12DeviceConfiguration1_GetDesc(This) \
31179 ( (This)->lpVtbl -> GetDesc(This) )
31180#else
31181#define ID3D12DeviceConfiguration1_GetDesc(This,RetVal) \
31182 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
31183#endif
31184
31185#define ID3D12DeviceConfiguration1_GetEnabledExperimentalFeatures(This,pGuids,NumGuids) \
31186 ( (This)->lpVtbl -> GetEnabledExperimentalFeatures(This,pGuids,NumGuids) )
31187
31188#define ID3D12DeviceConfiguration1_SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) \
31189 ( (This)->lpVtbl -> SerializeVersionedRootSignature(This,pDesc,ppResult,ppError) )
31190
31191#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) \
31192 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializer(This,pBlob,Size,riid,ppvDeserializer) )
31193
31194
31195#define ID3D12DeviceConfiguration1_CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) \
31196 ( (This)->lpVtbl -> CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(This,pLibraryBlob,Size,RootSignatureSubobjectName,riid,ppvDeserializer) )
31197
31198#endif /* COBJMACROS */
31199
31200
31201#endif /* C style interface */
31202
31203
31204
31205
31206#endif /* __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__ */
31207
31208
31209/* interface __MIDL_itf_d3d12_0000_0076 */
31210/* [local] */
31211
31212typedef
31213enum D3D12_STATE_OBJECT_DATABASE_FLAGS
31214 {
31215 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0,
31216 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1
31217 } D3D12_STATE_OBJECT_DATABASE_FLAGS;
31218
31219DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )
31220
31221
31222extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_c_ifspec;
31223extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0076_v0_0_s_ifspec;
31224
31225#ifndef __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31226#define __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__
31227
31228/* interface ID3D12StateObjectDatabaseFactory */
31229/* [unique][local][object][uuid] */
31230
31231
31232EXTERN_C const IID IID_ID3D12StateObjectDatabaseFactory;
31233
31234#if defined(__cplusplus) && !defined(CINTERFACE)
31235
31236 MIDL_INTERFACE("f5b066f0-648a-4611-bd41-27fd0948b9eb")
31237 ID3D12StateObjectDatabaseFactory : public IUnknown
31238 {
31239 public:
31240 virtual HRESULT STDMETHODCALLTYPE CreateStateObjectDatabaseFromFile(
31241 LPCWSTR pDatabaseFile,
31242 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31243 REFIID riid,
31244 _COM_Outptr_ void **ppvStateObjectDatabase) = 0;
31245
31246 };
31247
31248
31249#else /* C style interface */
31250
31251 typedef struct ID3D12StateObjectDatabaseFactoryVtbl
31252 {
31253 BEGIN_INTERFACE
31254
31255 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31256 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31257 ID3D12StateObjectDatabaseFactory * This,
31258 REFIID riid,
31259 _COM_Outptr_ void **ppvObject);
31260
31261 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31262 ULONG ( STDMETHODCALLTYPE *AddRef )(
31263 ID3D12StateObjectDatabaseFactory * This);
31264
31265 DECLSPEC_XFGVIRT(IUnknown, Release)
31266 ULONG ( STDMETHODCALLTYPE *Release )(
31267 ID3D12StateObjectDatabaseFactory * This);
31268
31269 DECLSPEC_XFGVIRT(ID3D12StateObjectDatabaseFactory, CreateStateObjectDatabaseFromFile)
31270 HRESULT ( STDMETHODCALLTYPE *CreateStateObjectDatabaseFromFile )(
31271 ID3D12StateObjectDatabaseFactory * This,
31272 LPCWSTR pDatabaseFile,
31273 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
31274 REFIID riid,
31275 _COM_Outptr_ void **ppvStateObjectDatabase);
31276
31277 END_INTERFACE
31278 } ID3D12StateObjectDatabaseFactoryVtbl;
31279
31280 interface ID3D12StateObjectDatabaseFactory
31281 {
31282 CONST_VTBL struct ID3D12StateObjectDatabaseFactoryVtbl *lpVtbl;
31283 };
31284
31285
31286
31287#ifdef COBJMACROS
31288
31289
31290#define ID3D12StateObjectDatabaseFactory_QueryInterface(This,riid,ppvObject) \
31291 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31292
31293#define ID3D12StateObjectDatabaseFactory_AddRef(This) \
31294 ( (This)->lpVtbl -> AddRef(This) )
31295
31296#define ID3D12StateObjectDatabaseFactory_Release(This) \
31297 ( (This)->lpVtbl -> Release(This) )
31298
31299
31300#define ID3D12StateObjectDatabaseFactory_CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) \
31301 ( (This)->lpVtbl -> CreateStateObjectDatabaseFromFile(This,pDatabaseFile,flags,riid,ppvStateObjectDatabase) )
31302
31303#endif /* COBJMACROS */
31304
31305
31306#endif /* C style interface */
31307
31308
31309
31310
31311#endif /* __ID3D12StateObjectDatabaseFactory_INTERFACE_DEFINED__ */
31312
31313
31314/* interface __MIDL_itf_d3d12_0000_0077 */
31315/* [local] */
31316
31317typedef
31318enum D3D12_AXIS_SHADING_RATE
31319 {
31320 D3D12_AXIS_SHADING_RATE_1X = 0,
31321 D3D12_AXIS_SHADING_RATE_2X = 0x1,
31322 D3D12_AXIS_SHADING_RATE_4X = 0x2
31323 } D3D12_AXIS_SHADING_RATE;
31324
31325#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2
31326#define D3D12_SHADING_RATE_VALID_MASK 3
31327#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))
31328#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)
31329#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)
31330typedef
31331enum D3D12_SHADING_RATE
31332 {
31333 D3D12_SHADING_RATE_1X1 = 0,
31334 D3D12_SHADING_RATE_1X2 = 0x1,
31335 D3D12_SHADING_RATE_2X1 = 0x4,
31336 D3D12_SHADING_RATE_2X2 = 0x5,
31337 D3D12_SHADING_RATE_2X4 = 0x6,
31338 D3D12_SHADING_RATE_4X2 = 0x9,
31339 D3D12_SHADING_RATE_4X4 = 0xa
31340 } D3D12_SHADING_RATE;
31341
31342typedef
31343enum D3D12_SHADING_RATE_COMBINER
31344 {
31345 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
31346 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
31347 D3D12_SHADING_RATE_COMBINER_MIN = 2,
31348 D3D12_SHADING_RATE_COMBINER_MAX = 3,
31349 D3D12_SHADING_RATE_COMBINER_SUM = 4
31350 } D3D12_SHADING_RATE_COMBINER;
31351
31352
31353
31354extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_c_ifspec;
31355extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0077_v0_0_s_ifspec;
31356
31357#ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31358#define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
31359
31360/* interface ID3D12GraphicsCommandList5 */
31361/* [unique][local][object][uuid] */
31362
31363
31364EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
31365
31366#if defined(__cplusplus) && !defined(CINTERFACE)
31367
31368 MIDL_INTERFACE("55050859-4024-474c-87f5-6472eaee44ea")
31369 ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4
31370 {
31371 public:
31372 virtual void STDMETHODCALLTYPE RSSetShadingRate(
31373 _In_ D3D12_SHADING_RATE baseShadingRate,
31374 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners) = 0;
31375
31376 virtual void STDMETHODCALLTYPE RSSetShadingRateImage(
31377 _In_opt_ ID3D12Resource *shadingRateImage) = 0;
31378
31379 };
31380
31381
31382#else /* C style interface */
31383
31384 typedef struct ID3D12GraphicsCommandList5Vtbl
31385 {
31386 BEGIN_INTERFACE
31387
31388 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
31389 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
31390 ID3D12GraphicsCommandList5 * This,
31391 REFIID riid,
31392 _COM_Outptr_ void **ppvObject);
31393
31394 DECLSPEC_XFGVIRT(IUnknown, AddRef)
31395 ULONG ( STDMETHODCALLTYPE *AddRef )(
31396 ID3D12GraphicsCommandList5 * This);
31397
31398 DECLSPEC_XFGVIRT(IUnknown, Release)
31399 ULONG ( STDMETHODCALLTYPE *Release )(
31400 ID3D12GraphicsCommandList5 * This);
31401
31402 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
31403 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
31404 ID3D12GraphicsCommandList5 * This,
31405 _In_ REFGUID guid,
31406 _Inout_ UINT *pDataSize,
31407 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
31408
31409 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
31410 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
31411 ID3D12GraphicsCommandList5 * This,
31412 _In_ REFGUID guid,
31413 _In_ UINT DataSize,
31414 _In_reads_bytes_opt_( DataSize ) const void *pData);
31415
31416 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
31417 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
31418 ID3D12GraphicsCommandList5 * This,
31419 _In_ REFGUID guid,
31420 _In_opt_ const IUnknown *pData);
31421
31422 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
31423 HRESULT ( STDMETHODCALLTYPE *SetName )(
31424 ID3D12GraphicsCommandList5 * This,
31425 _In_z_ LPCWSTR Name);
31426
31427 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
31428 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
31429 ID3D12GraphicsCommandList5 * This,
31430 REFIID riid,
31431 _COM_Outptr_opt_ void **ppvDevice);
31432
31433 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
31434 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
31435 ID3D12GraphicsCommandList5 * This);
31436
31437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
31438 HRESULT ( STDMETHODCALLTYPE *Close )(
31439 ID3D12GraphicsCommandList5 * This);
31440
31441 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
31442 HRESULT ( STDMETHODCALLTYPE *Reset )(
31443 ID3D12GraphicsCommandList5 * This,
31444 _In_ ID3D12CommandAllocator *pAllocator,
31445 _In_opt_ ID3D12PipelineState *pInitialState);
31446
31447 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
31448 void ( STDMETHODCALLTYPE *ClearState )(
31449 ID3D12GraphicsCommandList5 * This,
31450 _In_opt_ ID3D12PipelineState *pPipelineState);
31451
31452 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
31453 void ( STDMETHODCALLTYPE *DrawInstanced )(
31454 ID3D12GraphicsCommandList5 * This,
31455 _In_ UINT VertexCountPerInstance,
31456 _In_ UINT InstanceCount,
31457 _In_ UINT StartVertexLocation,
31458 _In_ UINT StartInstanceLocation);
31459
31460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
31461 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
31462 ID3D12GraphicsCommandList5 * This,
31463 _In_ UINT IndexCountPerInstance,
31464 _In_ UINT InstanceCount,
31465 _In_ UINT StartIndexLocation,
31466 _In_ INT BaseVertexLocation,
31467 _In_ UINT StartInstanceLocation);
31468
31469 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
31470 void ( STDMETHODCALLTYPE *Dispatch )(
31471 ID3D12GraphicsCommandList5 * This,
31472 _In_ UINT ThreadGroupCountX,
31473 _In_ UINT ThreadGroupCountY,
31474 _In_ UINT ThreadGroupCountZ);
31475
31476 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
31477 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
31478 ID3D12GraphicsCommandList5 * This,
31479 _In_ ID3D12Resource *pDstBuffer,
31480 UINT64 DstOffset,
31481 _In_ ID3D12Resource *pSrcBuffer,
31482 UINT64 SrcOffset,
31483 UINT64 NumBytes);
31484
31485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
31486 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
31487 ID3D12GraphicsCommandList5 * This,
31488 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
31489 UINT DstX,
31490 UINT DstY,
31491 UINT DstZ,
31492 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
31493 _In_opt_ const D3D12_BOX *pSrcBox);
31494
31495 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
31496 void ( STDMETHODCALLTYPE *CopyResource )(
31497 ID3D12GraphicsCommandList5 * This,
31498 _In_ ID3D12Resource *pDstResource,
31499 _In_ ID3D12Resource *pSrcResource);
31500
31501 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
31502 void ( STDMETHODCALLTYPE *CopyTiles )(
31503 ID3D12GraphicsCommandList5 * This,
31504 _In_ ID3D12Resource *pTiledResource,
31505 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
31506 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
31507 _In_ ID3D12Resource *pBuffer,
31508 UINT64 BufferStartOffsetInBytes,
31509 D3D12_TILE_COPY_FLAGS Flags);
31510
31511 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
31512 void ( STDMETHODCALLTYPE *ResolveSubresource )(
31513 ID3D12GraphicsCommandList5 * This,
31514 _In_ ID3D12Resource *pDstResource,
31515 _In_ UINT DstSubresource,
31516 _In_ ID3D12Resource *pSrcResource,
31517 _In_ UINT SrcSubresource,
31518 _In_ DXGI_FORMAT Format);
31519
31520 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
31521 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
31522 ID3D12GraphicsCommandList5 * This,
31523 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
31524
31525 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
31526 void ( STDMETHODCALLTYPE *RSSetViewports )(
31527 ID3D12GraphicsCommandList5 * This,
31528 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
31529 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
31530
31531 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
31532 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
31533 ID3D12GraphicsCommandList5 * This,
31534 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
31535 _In_reads_( NumRects) const D3D12_RECT *pRects);
31536
31537 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
31538 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
31539 ID3D12GraphicsCommandList5 * This,
31540 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
31541
31542 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
31543 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
31544 ID3D12GraphicsCommandList5 * This,
31545 _In_ UINT StencilRef);
31546
31547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
31548 void ( STDMETHODCALLTYPE *SetPipelineState )(
31549 ID3D12GraphicsCommandList5 * This,
31550 _In_ ID3D12PipelineState *pPipelineState);
31551
31552 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
31553 void ( STDMETHODCALLTYPE *ResourceBarrier )(
31554 ID3D12GraphicsCommandList5 * This,
31555 _In_ UINT NumBarriers,
31556 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
31557
31558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
31559 void ( STDMETHODCALLTYPE *ExecuteBundle )(
31560 ID3D12GraphicsCommandList5 * This,
31561 _In_ ID3D12GraphicsCommandList *pCommandList);
31562
31563 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
31564 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
31565 ID3D12GraphicsCommandList5 * This,
31566 _In_ UINT NumDescriptorHeaps,
31567 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
31568
31569 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
31570 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
31571 ID3D12GraphicsCommandList5 * This,
31572 _In_opt_ ID3D12RootSignature *pRootSignature);
31573
31574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
31575 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
31576 ID3D12GraphicsCommandList5 * This,
31577 _In_opt_ ID3D12RootSignature *pRootSignature);
31578
31579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
31580 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
31581 ID3D12GraphicsCommandList5 * This,
31582 _In_ UINT RootParameterIndex,
31583 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31584
31585 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
31586 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
31587 ID3D12GraphicsCommandList5 * This,
31588 _In_ UINT RootParameterIndex,
31589 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
31590
31591 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
31592 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
31593 ID3D12GraphicsCommandList5 * This,
31594 _In_ UINT RootParameterIndex,
31595 _In_ UINT SrcData,
31596 _In_ UINT DestOffsetIn32BitValues);
31597
31598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
31599 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
31600 ID3D12GraphicsCommandList5 * This,
31601 _In_ UINT RootParameterIndex,
31602 _In_ UINT SrcData,
31603 _In_ UINT DestOffsetIn32BitValues);
31604
31605 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
31606 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
31607 ID3D12GraphicsCommandList5 * This,
31608 _In_ UINT RootParameterIndex,
31609 _In_ UINT Num32BitValuesToSet,
31610 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31611 _In_ UINT DestOffsetIn32BitValues);
31612
31613 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
31614 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
31615 ID3D12GraphicsCommandList5 * This,
31616 _In_ UINT RootParameterIndex,
31617 _In_ UINT Num32BitValuesToSet,
31618 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
31619 _In_ UINT DestOffsetIn32BitValues);
31620
31621 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
31622 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
31623 ID3D12GraphicsCommandList5 * This,
31624 _In_ UINT RootParameterIndex,
31625 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31626
31627 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
31628 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
31629 ID3D12GraphicsCommandList5 * This,
31630 _In_ UINT RootParameterIndex,
31631 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31632
31633 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
31634 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
31635 ID3D12GraphicsCommandList5 * This,
31636 _In_ UINT RootParameterIndex,
31637 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31638
31639 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
31640 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
31641 ID3D12GraphicsCommandList5 * This,
31642 _In_ UINT RootParameterIndex,
31643 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31644
31645 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
31646 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
31647 ID3D12GraphicsCommandList5 * This,
31648 _In_ UINT RootParameterIndex,
31649 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31650
31651 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
31652 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
31653 ID3D12GraphicsCommandList5 * This,
31654 _In_ UINT RootParameterIndex,
31655 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
31656
31657 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
31658 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
31659 ID3D12GraphicsCommandList5 * This,
31660 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
31661
31662 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
31663 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
31664 ID3D12GraphicsCommandList5 * This,
31665 _In_ UINT StartSlot,
31666 _In_ UINT NumViews,
31667 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
31668
31669 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
31670 void ( STDMETHODCALLTYPE *SOSetTargets )(
31671 ID3D12GraphicsCommandList5 * This,
31672 _In_ UINT StartSlot,
31673 _In_ UINT NumViews,
31674 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
31675
31676 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
31677 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
31678 ID3D12GraphicsCommandList5 * This,
31679 _In_ UINT NumRenderTargetDescriptors,
31680 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
31681 _In_ BOOL RTsSingleHandleToDescriptorRange,
31682 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
31683
31684 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
31685 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
31686 ID3D12GraphicsCommandList5 * This,
31687 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
31688 _In_ D3D12_CLEAR_FLAGS ClearFlags,
31689 _In_ FLOAT Depth,
31690 _In_ UINT8 Stencil,
31691 _In_ UINT NumRects,
31692 _In_reads_(NumRects) const D3D12_RECT *pRects);
31693
31694 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
31695 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
31696 ID3D12GraphicsCommandList5 * This,
31697 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
31698 _In_ const FLOAT ColorRGBA[ 4 ],
31699 _In_ UINT NumRects,
31700 _In_reads_(NumRects) const D3D12_RECT *pRects);
31701
31702 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
31703 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
31704 ID3D12GraphicsCommandList5 * This,
31705 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31706 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31707 _In_ ID3D12Resource *pResource,
31708 _In_ const UINT Values[ 4 ],
31709 _In_ UINT NumRects,
31710 _In_reads_(NumRects) const D3D12_RECT *pRects);
31711
31712 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
31713 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
31714 ID3D12GraphicsCommandList5 * This,
31715 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
31716 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
31717 _In_ ID3D12Resource *pResource,
31718 _In_ const FLOAT Values[ 4 ],
31719 _In_ UINT NumRects,
31720 _In_reads_(NumRects) const D3D12_RECT *pRects);
31721
31722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
31723 void ( STDMETHODCALLTYPE *DiscardResource )(
31724 ID3D12GraphicsCommandList5 * This,
31725 _In_ ID3D12Resource *pResource,
31726 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
31727
31728 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
31729 void ( STDMETHODCALLTYPE *BeginQuery )(
31730 ID3D12GraphicsCommandList5 * This,
31731 _In_ ID3D12QueryHeap *pQueryHeap,
31732 _In_ D3D12_QUERY_TYPE Type,
31733 _In_ UINT Index);
31734
31735 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
31736 void ( STDMETHODCALLTYPE *EndQuery )(
31737 ID3D12GraphicsCommandList5 * This,
31738 _In_ ID3D12QueryHeap *pQueryHeap,
31739 _In_ D3D12_QUERY_TYPE Type,
31740 _In_ UINT Index);
31741
31742 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
31743 void ( STDMETHODCALLTYPE *ResolveQueryData )(
31744 ID3D12GraphicsCommandList5 * This,
31745 _In_ ID3D12QueryHeap *pQueryHeap,
31746 _In_ D3D12_QUERY_TYPE Type,
31747 _In_ UINT StartIndex,
31748 _In_ UINT NumQueries,
31749 _In_ ID3D12Resource *pDestinationBuffer,
31750 _In_ UINT64 AlignedDestinationBufferOffset);
31751
31752 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
31753 void ( STDMETHODCALLTYPE *SetPredication )(
31754 ID3D12GraphicsCommandList5 * This,
31755 _In_opt_ ID3D12Resource *pBuffer,
31756 _In_ UINT64 AlignedBufferOffset,
31757 _In_ D3D12_PREDICATION_OP Operation);
31758
31759 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
31760 void ( STDMETHODCALLTYPE *SetMarker )(
31761 ID3D12GraphicsCommandList5 * This,
31762 UINT Metadata,
31763 _In_reads_bytes_opt_(Size) const void *pData,
31764 UINT Size);
31765
31766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
31767 void ( STDMETHODCALLTYPE *BeginEvent )(
31768 ID3D12GraphicsCommandList5 * This,
31769 UINT Metadata,
31770 _In_reads_bytes_opt_(Size) const void *pData,
31771 UINT Size);
31772
31773 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
31774 void ( STDMETHODCALLTYPE *EndEvent )(
31775 ID3D12GraphicsCommandList5 * This);
31776
31777 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
31778 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
31779 ID3D12GraphicsCommandList5 * This,
31780 _In_ ID3D12CommandSignature *pCommandSignature,
31781 _In_ UINT MaxCommandCount,
31782 _In_ ID3D12Resource *pArgumentBuffer,
31783 _In_ UINT64 ArgumentBufferOffset,
31784 _In_opt_ ID3D12Resource *pCountBuffer,
31785 _In_ UINT64 CountBufferOffset);
31786
31787 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
31788 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
31789 ID3D12GraphicsCommandList5 * This,
31790 _In_ ID3D12Resource *pDstBuffer,
31791 UINT64 DstOffset,
31792 _In_ ID3D12Resource *pSrcBuffer,
31793 UINT64 SrcOffset,
31794 UINT Dependencies,
31795 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31796 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31797
31798 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
31799 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
31800 ID3D12GraphicsCommandList5 * This,
31801 _In_ ID3D12Resource *pDstBuffer,
31802 UINT64 DstOffset,
31803 _In_ ID3D12Resource *pSrcBuffer,
31804 UINT64 SrcOffset,
31805 UINT Dependencies,
31806 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
31807 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
31808
31809 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
31810 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
31811 ID3D12GraphicsCommandList5 * This,
31812 _In_ FLOAT Min,
31813 _In_ FLOAT Max);
31814
31815 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
31816 void ( STDMETHODCALLTYPE *SetSamplePositions )(
31817 ID3D12GraphicsCommandList5 * This,
31818 _In_ UINT NumSamplesPerPixel,
31819 _In_ UINT NumPixels,
31820 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
31821
31822 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
31823 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
31824 ID3D12GraphicsCommandList5 * This,
31825 _In_ ID3D12Resource *pDstResource,
31826 _In_ UINT DstSubresource,
31827 _In_ UINT DstX,
31828 _In_ UINT DstY,
31829 _In_ ID3D12Resource *pSrcResource,
31830 _In_ UINT SrcSubresource,
31831 _In_opt_ D3D12_RECT *pSrcRect,
31832 _In_ DXGI_FORMAT Format,
31833 _In_ D3D12_RESOLVE_MODE ResolveMode);
31834
31835 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
31836 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
31837 ID3D12GraphicsCommandList5 * This,
31838 _In_ UINT Mask);
31839
31840 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
31841 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
31842 ID3D12GraphicsCommandList5 * This,
31843 UINT Count,
31844 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
31845 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
31846
31847 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
31848 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
31849 ID3D12GraphicsCommandList5 * This,
31850 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
31851
31852 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
31853 void ( STDMETHODCALLTYPE *BeginRenderPass )(
31854 ID3D12GraphicsCommandList5 * This,
31855 _In_ UINT NumRenderTargets,
31856 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
31857 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
31858 D3D12_RENDER_PASS_FLAGS Flags);
31859
31860 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
31861 void ( STDMETHODCALLTYPE *EndRenderPass )(
31862 ID3D12GraphicsCommandList5 * This);
31863
31864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
31865 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
31866 ID3D12GraphicsCommandList5 * This,
31867 _In_ ID3D12MetaCommand *pMetaCommand,
31868 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
31869 _In_ SIZE_T InitializationParametersDataSizeInBytes);
31870
31871 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
31872 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
31873 ID3D12GraphicsCommandList5 * This,
31874 _In_ ID3D12MetaCommand *pMetaCommand,
31875 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
31876 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
31877
31878 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
31879 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
31880 ID3D12GraphicsCommandList5 * This,
31881 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
31882 _In_ UINT NumPostbuildInfoDescs,
31883 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
31884
31885 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
31886 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
31887 ID3D12GraphicsCommandList5 * This,
31888 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
31889 _In_ UINT NumSourceAccelerationStructures,
31890 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
31891
31892 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
31893 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
31894 ID3D12GraphicsCommandList5 * This,
31895 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
31896 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
31897 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
31898
31899 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
31900 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
31901 ID3D12GraphicsCommandList5 * This,
31902 _In_ ID3D12StateObject *pStateObject);
31903
31904 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
31905 void ( STDMETHODCALLTYPE *DispatchRays )(
31906 ID3D12GraphicsCommandList5 * This,
31907 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
31908
31909 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
31910 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
31911 ID3D12GraphicsCommandList5 * This,
31912 _In_ D3D12_SHADING_RATE baseShadingRate,
31913 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
31914
31915 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
31916 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
31917 ID3D12GraphicsCommandList5 * This,
31918 _In_opt_ ID3D12Resource *shadingRateImage);
31919
31920 END_INTERFACE
31921 } ID3D12GraphicsCommandList5Vtbl;
31922
31923 interface ID3D12GraphicsCommandList5
31924 {
31925 CONST_VTBL struct ID3D12GraphicsCommandList5Vtbl *lpVtbl;
31926 };
31927
31928
31929
31930#ifdef COBJMACROS
31931
31932
31933#define ID3D12GraphicsCommandList5_QueryInterface(This,riid,ppvObject) \
31934 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
31935
31936#define ID3D12GraphicsCommandList5_AddRef(This) \
31937 ( (This)->lpVtbl -> AddRef(This) )
31938
31939#define ID3D12GraphicsCommandList5_Release(This) \
31940 ( (This)->lpVtbl -> Release(This) )
31941
31942
31943#define ID3D12GraphicsCommandList5_GetPrivateData(This,guid,pDataSize,pData) \
31944 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
31945
31946#define ID3D12GraphicsCommandList5_SetPrivateData(This,guid,DataSize,pData) \
31947 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
31948
31949#define ID3D12GraphicsCommandList5_SetPrivateDataInterface(This,guid,pData) \
31950 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
31951
31952#define ID3D12GraphicsCommandList5_SetName(This,Name) \
31953 ( (This)->lpVtbl -> SetName(This,Name) )
31954
31955
31956#define ID3D12GraphicsCommandList5_GetDevice(This,riid,ppvDevice) \
31957 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
31958
31959
31960#define ID3D12GraphicsCommandList5_GetType(This) \
31961 ( (This)->lpVtbl -> GetType(This) )
31962
31963
31964#define ID3D12GraphicsCommandList5_Close(This) \
31965 ( (This)->lpVtbl -> Close(This) )
31966
31967#define ID3D12GraphicsCommandList5_Reset(This,pAllocator,pInitialState) \
31968 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
31969
31970#define ID3D12GraphicsCommandList5_ClearState(This,pPipelineState) \
31971 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
31972
31973#define ID3D12GraphicsCommandList5_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
31974 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
31975
31976#define ID3D12GraphicsCommandList5_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
31977 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
31978
31979#define ID3D12GraphicsCommandList5_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
31980 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
31981
31982#define ID3D12GraphicsCommandList5_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
31983 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
31984
31985#define ID3D12GraphicsCommandList5_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
31986 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
31987
31988#define ID3D12GraphicsCommandList5_CopyResource(This,pDstResource,pSrcResource) \
31989 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
31990
31991#define ID3D12GraphicsCommandList5_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
31992 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
31993
31994#define ID3D12GraphicsCommandList5_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
31995 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
31996
31997#define ID3D12GraphicsCommandList5_IASetPrimitiveTopology(This,PrimitiveTopology) \
31998 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
31999
32000#define ID3D12GraphicsCommandList5_RSSetViewports(This,NumViewports,pViewports) \
32001 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32002
32003#define ID3D12GraphicsCommandList5_RSSetScissorRects(This,NumRects,pRects) \
32004 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32005
32006#define ID3D12GraphicsCommandList5_OMSetBlendFactor(This,BlendFactor) \
32007 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32008
32009#define ID3D12GraphicsCommandList5_OMSetStencilRef(This,StencilRef) \
32010 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32011
32012#define ID3D12GraphicsCommandList5_SetPipelineState(This,pPipelineState) \
32013 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32014
32015#define ID3D12GraphicsCommandList5_ResourceBarrier(This,NumBarriers,pBarriers) \
32016 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32017
32018#define ID3D12GraphicsCommandList5_ExecuteBundle(This,pCommandList) \
32019 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32020
32021#define ID3D12GraphicsCommandList5_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32022 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32023
32024#define ID3D12GraphicsCommandList5_SetComputeRootSignature(This,pRootSignature) \
32025 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32026
32027#define ID3D12GraphicsCommandList5_SetGraphicsRootSignature(This,pRootSignature) \
32028 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32029
32030#define ID3D12GraphicsCommandList5_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32031 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32032
32033#define ID3D12GraphicsCommandList5_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32034 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32035
32036#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32037 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32038
32039#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32040 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32041
32042#define ID3D12GraphicsCommandList5_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32043 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32044
32045#define ID3D12GraphicsCommandList5_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32046 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32047
32048#define ID3D12GraphicsCommandList5_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32049 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32050
32051#define ID3D12GraphicsCommandList5_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32052 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32053
32054#define ID3D12GraphicsCommandList5_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32055 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32056
32057#define ID3D12GraphicsCommandList5_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32058 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32059
32060#define ID3D12GraphicsCommandList5_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32061 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32062
32063#define ID3D12GraphicsCommandList5_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32064 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32065
32066#define ID3D12GraphicsCommandList5_IASetIndexBuffer(This,pView) \
32067 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32068
32069#define ID3D12GraphicsCommandList5_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32070 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32071
32072#define ID3D12GraphicsCommandList5_SOSetTargets(This,StartSlot,NumViews,pViews) \
32073 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32074
32075#define ID3D12GraphicsCommandList5_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32076 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32077
32078#define ID3D12GraphicsCommandList5_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32079 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32080
32081#define ID3D12GraphicsCommandList5_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32082 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32083
32084#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32085 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32086
32087#define ID3D12GraphicsCommandList5_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32088 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32089
32090#define ID3D12GraphicsCommandList5_DiscardResource(This,pResource,pRegion) \
32091 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32092
32093#define ID3D12GraphicsCommandList5_BeginQuery(This,pQueryHeap,Type,Index) \
32094 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32095
32096#define ID3D12GraphicsCommandList5_EndQuery(This,pQueryHeap,Type,Index) \
32097 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32098
32099#define ID3D12GraphicsCommandList5_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32100 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32101
32102#define ID3D12GraphicsCommandList5_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32103 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32104
32105#define ID3D12GraphicsCommandList5_SetMarker(This,Metadata,pData,Size) \
32106 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32107
32108#define ID3D12GraphicsCommandList5_BeginEvent(This,Metadata,pData,Size) \
32109 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32110
32111#define ID3D12GraphicsCommandList5_EndEvent(This) \
32112 ( (This)->lpVtbl -> EndEvent(This) )
32113
32114#define ID3D12GraphicsCommandList5_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32115 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32116
32117
32118#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32119 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32120
32121#define ID3D12GraphicsCommandList5_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32122 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32123
32124#define ID3D12GraphicsCommandList5_OMSetDepthBounds(This,Min,Max) \
32125 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32126
32127#define ID3D12GraphicsCommandList5_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32128 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32129
32130#define ID3D12GraphicsCommandList5_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32131 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32132
32133#define ID3D12GraphicsCommandList5_SetViewInstanceMask(This,Mask) \
32134 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32135
32136
32137#define ID3D12GraphicsCommandList5_WriteBufferImmediate(This,Count,pParams,pModes) \
32138 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32139
32140
32141#define ID3D12GraphicsCommandList5_SetProtectedResourceSession(This,pProtectedResourceSession) \
32142 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
32143
32144
32145#define ID3D12GraphicsCommandList5_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
32146 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
32147
32148#define ID3D12GraphicsCommandList5_EndRenderPass(This) \
32149 ( (This)->lpVtbl -> EndRenderPass(This) )
32150
32151#define ID3D12GraphicsCommandList5_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
32152 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
32153
32154#define ID3D12GraphicsCommandList5_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
32155 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
32156
32157#define ID3D12GraphicsCommandList5_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
32158 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
32159
32160#define ID3D12GraphicsCommandList5_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
32161 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
32162
32163#define ID3D12GraphicsCommandList5_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
32164 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
32165
32166#define ID3D12GraphicsCommandList5_SetPipelineState1(This,pStateObject) \
32167 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
32168
32169#define ID3D12GraphicsCommandList5_DispatchRays(This,pDesc) \
32170 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
32171
32172
32173#define ID3D12GraphicsCommandList5_RSSetShadingRate(This,baseShadingRate,combiners) \
32174 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
32175
32176#define ID3D12GraphicsCommandList5_RSSetShadingRateImage(This,shadingRateImage) \
32177 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
32178
32179#endif /* COBJMACROS */
32180
32181
32182#endif /* C style interface */
32183
32184
32185
32186
32187#endif /* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
32188
32189
32190/* interface __MIDL_itf_d3d12_0000_0078 */
32191/* [local] */
32192
32193typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
32194 {
32195 UINT ThreadGroupCountX;
32196 UINT ThreadGroupCountY;
32197 UINT ThreadGroupCountZ;
32198 } D3D12_DISPATCH_MESH_ARGUMENTS;
32199
32200
32201
32202extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_c_ifspec;
32203extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_s_ifspec;
32204
32205#ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32206#define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
32207
32208/* interface ID3D12GraphicsCommandList6 */
32209/* [unique][local][object][uuid] */
32210
32211
32212EXTERN_C const IID IID_ID3D12GraphicsCommandList6;
32213
32214#if defined(__cplusplus) && !defined(CINTERFACE)
32215
32216 MIDL_INTERFACE("c3827890-e548-4cfa-96cf-5689a9370f80")
32217 ID3D12GraphicsCommandList6 : public ID3D12GraphicsCommandList5
32218 {
32219 public:
32220 virtual void STDMETHODCALLTYPE DispatchMesh(
32221 _In_ UINT ThreadGroupCountX,
32222 _In_ UINT ThreadGroupCountY,
32223 _In_ UINT ThreadGroupCountZ) = 0;
32224
32225 };
32226
32227
32228#else /* C style interface */
32229
32230 typedef struct ID3D12GraphicsCommandList6Vtbl
32231 {
32232 BEGIN_INTERFACE
32233
32234 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
32235 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
32236 ID3D12GraphicsCommandList6 * This,
32237 REFIID riid,
32238 _COM_Outptr_ void **ppvObject);
32239
32240 DECLSPEC_XFGVIRT(IUnknown, AddRef)
32241 ULONG ( STDMETHODCALLTYPE *AddRef )(
32242 ID3D12GraphicsCommandList6 * This);
32243
32244 DECLSPEC_XFGVIRT(IUnknown, Release)
32245 ULONG ( STDMETHODCALLTYPE *Release )(
32246 ID3D12GraphicsCommandList6 * This);
32247
32248 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
32249 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
32250 ID3D12GraphicsCommandList6 * This,
32251 _In_ REFGUID guid,
32252 _Inout_ UINT *pDataSize,
32253 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
32254
32255 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
32256 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
32257 ID3D12GraphicsCommandList6 * This,
32258 _In_ REFGUID guid,
32259 _In_ UINT DataSize,
32260 _In_reads_bytes_opt_( DataSize ) const void *pData);
32261
32262 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
32263 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
32264 ID3D12GraphicsCommandList6 * This,
32265 _In_ REFGUID guid,
32266 _In_opt_ const IUnknown *pData);
32267
32268 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
32269 HRESULT ( STDMETHODCALLTYPE *SetName )(
32270 ID3D12GraphicsCommandList6 * This,
32271 _In_z_ LPCWSTR Name);
32272
32273 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
32274 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
32275 ID3D12GraphicsCommandList6 * This,
32276 REFIID riid,
32277 _COM_Outptr_opt_ void **ppvDevice);
32278
32279 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
32280 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
32281 ID3D12GraphicsCommandList6 * This);
32282
32283 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
32284 HRESULT ( STDMETHODCALLTYPE *Close )(
32285 ID3D12GraphicsCommandList6 * This);
32286
32287 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
32288 HRESULT ( STDMETHODCALLTYPE *Reset )(
32289 ID3D12GraphicsCommandList6 * This,
32290 _In_ ID3D12CommandAllocator *pAllocator,
32291 _In_opt_ ID3D12PipelineState *pInitialState);
32292
32293 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
32294 void ( STDMETHODCALLTYPE *ClearState )(
32295 ID3D12GraphicsCommandList6 * This,
32296 _In_opt_ ID3D12PipelineState *pPipelineState);
32297
32298 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
32299 void ( STDMETHODCALLTYPE *DrawInstanced )(
32300 ID3D12GraphicsCommandList6 * This,
32301 _In_ UINT VertexCountPerInstance,
32302 _In_ UINT InstanceCount,
32303 _In_ UINT StartVertexLocation,
32304 _In_ UINT StartInstanceLocation);
32305
32306 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
32307 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
32308 ID3D12GraphicsCommandList6 * This,
32309 _In_ UINT IndexCountPerInstance,
32310 _In_ UINT InstanceCount,
32311 _In_ UINT StartIndexLocation,
32312 _In_ INT BaseVertexLocation,
32313 _In_ UINT StartInstanceLocation);
32314
32315 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
32316 void ( STDMETHODCALLTYPE *Dispatch )(
32317 ID3D12GraphicsCommandList6 * This,
32318 _In_ UINT ThreadGroupCountX,
32319 _In_ UINT ThreadGroupCountY,
32320 _In_ UINT ThreadGroupCountZ);
32321
32322 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
32323 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
32324 ID3D12GraphicsCommandList6 * This,
32325 _In_ ID3D12Resource *pDstBuffer,
32326 UINT64 DstOffset,
32327 _In_ ID3D12Resource *pSrcBuffer,
32328 UINT64 SrcOffset,
32329 UINT64 NumBytes);
32330
32331 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
32332 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
32333 ID3D12GraphicsCommandList6 * This,
32334 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
32335 UINT DstX,
32336 UINT DstY,
32337 UINT DstZ,
32338 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
32339 _In_opt_ const D3D12_BOX *pSrcBox);
32340
32341 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
32342 void ( STDMETHODCALLTYPE *CopyResource )(
32343 ID3D12GraphicsCommandList6 * This,
32344 _In_ ID3D12Resource *pDstResource,
32345 _In_ ID3D12Resource *pSrcResource);
32346
32347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
32348 void ( STDMETHODCALLTYPE *CopyTiles )(
32349 ID3D12GraphicsCommandList6 * This,
32350 _In_ ID3D12Resource *pTiledResource,
32351 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
32352 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
32353 _In_ ID3D12Resource *pBuffer,
32354 UINT64 BufferStartOffsetInBytes,
32355 D3D12_TILE_COPY_FLAGS Flags);
32356
32357 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
32358 void ( STDMETHODCALLTYPE *ResolveSubresource )(
32359 ID3D12GraphicsCommandList6 * This,
32360 _In_ ID3D12Resource *pDstResource,
32361 _In_ UINT DstSubresource,
32362 _In_ ID3D12Resource *pSrcResource,
32363 _In_ UINT SrcSubresource,
32364 _In_ DXGI_FORMAT Format);
32365
32366 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
32367 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
32368 ID3D12GraphicsCommandList6 * This,
32369 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
32370
32371 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
32372 void ( STDMETHODCALLTYPE *RSSetViewports )(
32373 ID3D12GraphicsCommandList6 * This,
32374 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
32375 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
32376
32377 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
32378 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
32379 ID3D12GraphicsCommandList6 * This,
32380 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
32381 _In_reads_( NumRects) const D3D12_RECT *pRects);
32382
32383 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
32384 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
32385 ID3D12GraphicsCommandList6 * This,
32386 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
32387
32388 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
32389 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
32390 ID3D12GraphicsCommandList6 * This,
32391 _In_ UINT StencilRef);
32392
32393 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
32394 void ( STDMETHODCALLTYPE *SetPipelineState )(
32395 ID3D12GraphicsCommandList6 * This,
32396 _In_ ID3D12PipelineState *pPipelineState);
32397
32398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
32399 void ( STDMETHODCALLTYPE *ResourceBarrier )(
32400 ID3D12GraphicsCommandList6 * This,
32401 _In_ UINT NumBarriers,
32402 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
32403
32404 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
32405 void ( STDMETHODCALLTYPE *ExecuteBundle )(
32406 ID3D12GraphicsCommandList6 * This,
32407 _In_ ID3D12GraphicsCommandList *pCommandList);
32408
32409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
32410 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
32411 ID3D12GraphicsCommandList6 * This,
32412 _In_ UINT NumDescriptorHeaps,
32413 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
32414
32415 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
32416 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
32417 ID3D12GraphicsCommandList6 * This,
32418 _In_opt_ ID3D12RootSignature *pRootSignature);
32419
32420 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
32421 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
32422 ID3D12GraphicsCommandList6 * This,
32423 _In_opt_ ID3D12RootSignature *pRootSignature);
32424
32425 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
32426 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
32427 ID3D12GraphicsCommandList6 * This,
32428 _In_ UINT RootParameterIndex,
32429 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32430
32431 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
32432 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
32433 ID3D12GraphicsCommandList6 * This,
32434 _In_ UINT RootParameterIndex,
32435 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
32436
32437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
32438 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
32439 ID3D12GraphicsCommandList6 * This,
32440 _In_ UINT RootParameterIndex,
32441 _In_ UINT SrcData,
32442 _In_ UINT DestOffsetIn32BitValues);
32443
32444 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
32445 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
32446 ID3D12GraphicsCommandList6 * This,
32447 _In_ UINT RootParameterIndex,
32448 _In_ UINT SrcData,
32449 _In_ UINT DestOffsetIn32BitValues);
32450
32451 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
32452 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
32453 ID3D12GraphicsCommandList6 * This,
32454 _In_ UINT RootParameterIndex,
32455 _In_ UINT Num32BitValuesToSet,
32456 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32457 _In_ UINT DestOffsetIn32BitValues);
32458
32459 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
32460 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
32461 ID3D12GraphicsCommandList6 * This,
32462 _In_ UINT RootParameterIndex,
32463 _In_ UINT Num32BitValuesToSet,
32464 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
32465 _In_ UINT DestOffsetIn32BitValues);
32466
32467 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
32468 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
32469 ID3D12GraphicsCommandList6 * This,
32470 _In_ UINT RootParameterIndex,
32471 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32472
32473 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
32474 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
32475 ID3D12GraphicsCommandList6 * This,
32476 _In_ UINT RootParameterIndex,
32477 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32478
32479 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
32480 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
32481 ID3D12GraphicsCommandList6 * This,
32482 _In_ UINT RootParameterIndex,
32483 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32484
32485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
32486 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
32487 ID3D12GraphicsCommandList6 * This,
32488 _In_ UINT RootParameterIndex,
32489 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32490
32491 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
32492 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
32493 ID3D12GraphicsCommandList6 * This,
32494 _In_ UINT RootParameterIndex,
32495 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32496
32497 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
32498 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
32499 ID3D12GraphicsCommandList6 * This,
32500 _In_ UINT RootParameterIndex,
32501 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
32502
32503 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
32504 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
32505 ID3D12GraphicsCommandList6 * This,
32506 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
32507
32508 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
32509 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
32510 ID3D12GraphicsCommandList6 * This,
32511 _In_ UINT StartSlot,
32512 _In_ UINT NumViews,
32513 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
32514
32515 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
32516 void ( STDMETHODCALLTYPE *SOSetTargets )(
32517 ID3D12GraphicsCommandList6 * This,
32518 _In_ UINT StartSlot,
32519 _In_ UINT NumViews,
32520 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
32521
32522 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
32523 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
32524 ID3D12GraphicsCommandList6 * This,
32525 _In_ UINT NumRenderTargetDescriptors,
32526 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
32527 _In_ BOOL RTsSingleHandleToDescriptorRange,
32528 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
32529
32530 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
32531 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
32532 ID3D12GraphicsCommandList6 * This,
32533 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
32534 _In_ D3D12_CLEAR_FLAGS ClearFlags,
32535 _In_ FLOAT Depth,
32536 _In_ UINT8 Stencil,
32537 _In_ UINT NumRects,
32538 _In_reads_(NumRects) const D3D12_RECT *pRects);
32539
32540 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
32541 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
32542 ID3D12GraphicsCommandList6 * This,
32543 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
32544 _In_ const FLOAT ColorRGBA[ 4 ],
32545 _In_ UINT NumRects,
32546 _In_reads_(NumRects) const D3D12_RECT *pRects);
32547
32548 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
32549 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
32550 ID3D12GraphicsCommandList6 * This,
32551 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32552 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32553 _In_ ID3D12Resource *pResource,
32554 _In_ const UINT Values[ 4 ],
32555 _In_ UINT NumRects,
32556 _In_reads_(NumRects) const D3D12_RECT *pRects);
32557
32558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
32559 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
32560 ID3D12GraphicsCommandList6 * This,
32561 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
32562 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
32563 _In_ ID3D12Resource *pResource,
32564 _In_ const FLOAT Values[ 4 ],
32565 _In_ UINT NumRects,
32566 _In_reads_(NumRects) const D3D12_RECT *pRects);
32567
32568 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
32569 void ( STDMETHODCALLTYPE *DiscardResource )(
32570 ID3D12GraphicsCommandList6 * This,
32571 _In_ ID3D12Resource *pResource,
32572 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
32573
32574 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
32575 void ( STDMETHODCALLTYPE *BeginQuery )(
32576 ID3D12GraphicsCommandList6 * This,
32577 _In_ ID3D12QueryHeap *pQueryHeap,
32578 _In_ D3D12_QUERY_TYPE Type,
32579 _In_ UINT Index);
32580
32581 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
32582 void ( STDMETHODCALLTYPE *EndQuery )(
32583 ID3D12GraphicsCommandList6 * This,
32584 _In_ ID3D12QueryHeap *pQueryHeap,
32585 _In_ D3D12_QUERY_TYPE Type,
32586 _In_ UINT Index);
32587
32588 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
32589 void ( STDMETHODCALLTYPE *ResolveQueryData )(
32590 ID3D12GraphicsCommandList6 * This,
32591 _In_ ID3D12QueryHeap *pQueryHeap,
32592 _In_ D3D12_QUERY_TYPE Type,
32593 _In_ UINT StartIndex,
32594 _In_ UINT NumQueries,
32595 _In_ ID3D12Resource *pDestinationBuffer,
32596 _In_ UINT64 AlignedDestinationBufferOffset);
32597
32598 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
32599 void ( STDMETHODCALLTYPE *SetPredication )(
32600 ID3D12GraphicsCommandList6 * This,
32601 _In_opt_ ID3D12Resource *pBuffer,
32602 _In_ UINT64 AlignedBufferOffset,
32603 _In_ D3D12_PREDICATION_OP Operation);
32604
32605 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
32606 void ( STDMETHODCALLTYPE *SetMarker )(
32607 ID3D12GraphicsCommandList6 * This,
32608 UINT Metadata,
32609 _In_reads_bytes_opt_(Size) const void *pData,
32610 UINT Size);
32611
32612 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
32613 void ( STDMETHODCALLTYPE *BeginEvent )(
32614 ID3D12GraphicsCommandList6 * This,
32615 UINT Metadata,
32616 _In_reads_bytes_opt_(Size) const void *pData,
32617 UINT Size);
32618
32619 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
32620 void ( STDMETHODCALLTYPE *EndEvent )(
32621 ID3D12GraphicsCommandList6 * This);
32622
32623 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
32624 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
32625 ID3D12GraphicsCommandList6 * This,
32626 _In_ ID3D12CommandSignature *pCommandSignature,
32627 _In_ UINT MaxCommandCount,
32628 _In_ ID3D12Resource *pArgumentBuffer,
32629 _In_ UINT64 ArgumentBufferOffset,
32630 _In_opt_ ID3D12Resource *pCountBuffer,
32631 _In_ UINT64 CountBufferOffset);
32632
32633 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
32634 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
32635 ID3D12GraphicsCommandList6 * This,
32636 _In_ ID3D12Resource *pDstBuffer,
32637 UINT64 DstOffset,
32638 _In_ ID3D12Resource *pSrcBuffer,
32639 UINT64 SrcOffset,
32640 UINT Dependencies,
32641 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32642 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32643
32644 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
32645 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
32646 ID3D12GraphicsCommandList6 * This,
32647 _In_ ID3D12Resource *pDstBuffer,
32648 UINT64 DstOffset,
32649 _In_ ID3D12Resource *pSrcBuffer,
32650 UINT64 SrcOffset,
32651 UINT Dependencies,
32652 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
32653 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
32654
32655 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
32656 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
32657 ID3D12GraphicsCommandList6 * This,
32658 _In_ FLOAT Min,
32659 _In_ FLOAT Max);
32660
32661 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
32662 void ( STDMETHODCALLTYPE *SetSamplePositions )(
32663 ID3D12GraphicsCommandList6 * This,
32664 _In_ UINT NumSamplesPerPixel,
32665 _In_ UINT NumPixels,
32666 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
32667
32668 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
32669 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
32670 ID3D12GraphicsCommandList6 * This,
32671 _In_ ID3D12Resource *pDstResource,
32672 _In_ UINT DstSubresource,
32673 _In_ UINT DstX,
32674 _In_ UINT DstY,
32675 _In_ ID3D12Resource *pSrcResource,
32676 _In_ UINT SrcSubresource,
32677 _In_opt_ D3D12_RECT *pSrcRect,
32678 _In_ DXGI_FORMAT Format,
32679 _In_ D3D12_RESOLVE_MODE ResolveMode);
32680
32681 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
32682 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
32683 ID3D12GraphicsCommandList6 * This,
32684 _In_ UINT Mask);
32685
32686 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
32687 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
32688 ID3D12GraphicsCommandList6 * This,
32689 UINT Count,
32690 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
32691 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
32692
32693 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
32694 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
32695 ID3D12GraphicsCommandList6 * This,
32696 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
32697
32698 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
32699 void ( STDMETHODCALLTYPE *BeginRenderPass )(
32700 ID3D12GraphicsCommandList6 * This,
32701 _In_ UINT NumRenderTargets,
32702 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
32703 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
32704 D3D12_RENDER_PASS_FLAGS Flags);
32705
32706 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
32707 void ( STDMETHODCALLTYPE *EndRenderPass )(
32708 ID3D12GraphicsCommandList6 * This);
32709
32710 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
32711 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
32712 ID3D12GraphicsCommandList6 * This,
32713 _In_ ID3D12MetaCommand *pMetaCommand,
32714 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
32715 _In_ SIZE_T InitializationParametersDataSizeInBytes);
32716
32717 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
32718 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
32719 ID3D12GraphicsCommandList6 * This,
32720 _In_ ID3D12MetaCommand *pMetaCommand,
32721 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
32722 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
32723
32724 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
32725 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
32726 ID3D12GraphicsCommandList6 * This,
32727 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
32728 _In_ UINT NumPostbuildInfoDescs,
32729 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
32730
32731 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
32732 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
32733 ID3D12GraphicsCommandList6 * This,
32734 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
32735 _In_ UINT NumSourceAccelerationStructures,
32736 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
32737
32738 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
32739 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
32740 ID3D12GraphicsCommandList6 * This,
32741 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
32742 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
32743 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
32744
32745 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
32746 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
32747 ID3D12GraphicsCommandList6 * This,
32748 _In_ ID3D12StateObject *pStateObject);
32749
32750 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
32751 void ( STDMETHODCALLTYPE *DispatchRays )(
32752 ID3D12GraphicsCommandList6 * This,
32753 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
32754
32755 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
32756 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
32757 ID3D12GraphicsCommandList6 * This,
32758 _In_ D3D12_SHADING_RATE baseShadingRate,
32759 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
32760
32761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
32762 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
32763 ID3D12GraphicsCommandList6 * This,
32764 _In_opt_ ID3D12Resource *shadingRateImage);
32765
32766 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
32767 void ( STDMETHODCALLTYPE *DispatchMesh )(
32768 ID3D12GraphicsCommandList6 * This,
32769 _In_ UINT ThreadGroupCountX,
32770 _In_ UINT ThreadGroupCountY,
32771 _In_ UINT ThreadGroupCountZ);
32772
32773 END_INTERFACE
32774 } ID3D12GraphicsCommandList6Vtbl;
32775
32776 interface ID3D12GraphicsCommandList6
32777 {
32778 CONST_VTBL struct ID3D12GraphicsCommandList6Vtbl *lpVtbl;
32779 };
32780
32781
32782
32783#ifdef COBJMACROS
32784
32785
32786#define ID3D12GraphicsCommandList6_QueryInterface(This,riid,ppvObject) \
32787 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
32788
32789#define ID3D12GraphicsCommandList6_AddRef(This) \
32790 ( (This)->lpVtbl -> AddRef(This) )
32791
32792#define ID3D12GraphicsCommandList6_Release(This) \
32793 ( (This)->lpVtbl -> Release(This) )
32794
32795
32796#define ID3D12GraphicsCommandList6_GetPrivateData(This,guid,pDataSize,pData) \
32797 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
32798
32799#define ID3D12GraphicsCommandList6_SetPrivateData(This,guid,DataSize,pData) \
32800 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
32801
32802#define ID3D12GraphicsCommandList6_SetPrivateDataInterface(This,guid,pData) \
32803 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
32804
32805#define ID3D12GraphicsCommandList6_SetName(This,Name) \
32806 ( (This)->lpVtbl -> SetName(This,Name) )
32807
32808
32809#define ID3D12GraphicsCommandList6_GetDevice(This,riid,ppvDevice) \
32810 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
32811
32812
32813#define ID3D12GraphicsCommandList6_GetType(This) \
32814 ( (This)->lpVtbl -> GetType(This) )
32815
32816
32817#define ID3D12GraphicsCommandList6_Close(This) \
32818 ( (This)->lpVtbl -> Close(This) )
32819
32820#define ID3D12GraphicsCommandList6_Reset(This,pAllocator,pInitialState) \
32821 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
32822
32823#define ID3D12GraphicsCommandList6_ClearState(This,pPipelineState) \
32824 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
32825
32826#define ID3D12GraphicsCommandList6_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
32827 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
32828
32829#define ID3D12GraphicsCommandList6_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
32830 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
32831
32832#define ID3D12GraphicsCommandList6_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
32833 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
32834
32835#define ID3D12GraphicsCommandList6_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
32836 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
32837
32838#define ID3D12GraphicsCommandList6_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
32839 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
32840
32841#define ID3D12GraphicsCommandList6_CopyResource(This,pDstResource,pSrcResource) \
32842 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
32843
32844#define ID3D12GraphicsCommandList6_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
32845 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
32846
32847#define ID3D12GraphicsCommandList6_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
32848 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
32849
32850#define ID3D12GraphicsCommandList6_IASetPrimitiveTopology(This,PrimitiveTopology) \
32851 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
32852
32853#define ID3D12GraphicsCommandList6_RSSetViewports(This,NumViewports,pViewports) \
32854 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
32855
32856#define ID3D12GraphicsCommandList6_RSSetScissorRects(This,NumRects,pRects) \
32857 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
32858
32859#define ID3D12GraphicsCommandList6_OMSetBlendFactor(This,BlendFactor) \
32860 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
32861
32862#define ID3D12GraphicsCommandList6_OMSetStencilRef(This,StencilRef) \
32863 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
32864
32865#define ID3D12GraphicsCommandList6_SetPipelineState(This,pPipelineState) \
32866 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
32867
32868#define ID3D12GraphicsCommandList6_ResourceBarrier(This,NumBarriers,pBarriers) \
32869 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
32870
32871#define ID3D12GraphicsCommandList6_ExecuteBundle(This,pCommandList) \
32872 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
32873
32874#define ID3D12GraphicsCommandList6_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
32875 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
32876
32877#define ID3D12GraphicsCommandList6_SetComputeRootSignature(This,pRootSignature) \
32878 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
32879
32880#define ID3D12GraphicsCommandList6_SetGraphicsRootSignature(This,pRootSignature) \
32881 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
32882
32883#define ID3D12GraphicsCommandList6_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32884 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32885
32886#define ID3D12GraphicsCommandList6_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
32887 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
32888
32889#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32890 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32891
32892#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
32893 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
32894
32895#define ID3D12GraphicsCommandList6_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32896 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32897
32898#define ID3D12GraphicsCommandList6_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
32899 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
32900
32901#define ID3D12GraphicsCommandList6_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32902 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32903
32904#define ID3D12GraphicsCommandList6_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
32905 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
32906
32907#define ID3D12GraphicsCommandList6_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32908 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32909
32910#define ID3D12GraphicsCommandList6_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
32911 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
32912
32913#define ID3D12GraphicsCommandList6_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32914 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32915
32916#define ID3D12GraphicsCommandList6_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
32917 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
32918
32919#define ID3D12GraphicsCommandList6_IASetIndexBuffer(This,pView) \
32920 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
32921
32922#define ID3D12GraphicsCommandList6_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
32923 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
32924
32925#define ID3D12GraphicsCommandList6_SOSetTargets(This,StartSlot,NumViews,pViews) \
32926 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
32927
32928#define ID3D12GraphicsCommandList6_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
32929 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
32930
32931#define ID3D12GraphicsCommandList6_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
32932 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
32933
32934#define ID3D12GraphicsCommandList6_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
32935 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
32936
32937#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32938 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32939
32940#define ID3D12GraphicsCommandList6_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
32941 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
32942
32943#define ID3D12GraphicsCommandList6_DiscardResource(This,pResource,pRegion) \
32944 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
32945
32946#define ID3D12GraphicsCommandList6_BeginQuery(This,pQueryHeap,Type,Index) \
32947 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
32948
32949#define ID3D12GraphicsCommandList6_EndQuery(This,pQueryHeap,Type,Index) \
32950 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
32951
32952#define ID3D12GraphicsCommandList6_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
32953 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
32954
32955#define ID3D12GraphicsCommandList6_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
32956 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
32957
32958#define ID3D12GraphicsCommandList6_SetMarker(This,Metadata,pData,Size) \
32959 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
32960
32961#define ID3D12GraphicsCommandList6_BeginEvent(This,Metadata,pData,Size) \
32962 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
32963
32964#define ID3D12GraphicsCommandList6_EndEvent(This) \
32965 ( (This)->lpVtbl -> EndEvent(This) )
32966
32967#define ID3D12GraphicsCommandList6_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
32968 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
32969
32970
32971#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32972 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32973
32974#define ID3D12GraphicsCommandList6_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
32975 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
32976
32977#define ID3D12GraphicsCommandList6_OMSetDepthBounds(This,Min,Max) \
32978 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
32979
32980#define ID3D12GraphicsCommandList6_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
32981 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
32982
32983#define ID3D12GraphicsCommandList6_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
32984 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
32985
32986#define ID3D12GraphicsCommandList6_SetViewInstanceMask(This,Mask) \
32987 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
32988
32989
32990#define ID3D12GraphicsCommandList6_WriteBufferImmediate(This,Count,pParams,pModes) \
32991 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
32992
32993
32994#define ID3D12GraphicsCommandList6_SetProtectedResourceSession(This,pProtectedResourceSession) \
32995 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
32996
32997
32998#define ID3D12GraphicsCommandList6_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
32999 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33000
33001#define ID3D12GraphicsCommandList6_EndRenderPass(This) \
33002 ( (This)->lpVtbl -> EndRenderPass(This) )
33003
33004#define ID3D12GraphicsCommandList6_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33005 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33006
33007#define ID3D12GraphicsCommandList6_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33008 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33009
33010#define ID3D12GraphicsCommandList6_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33011 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33012
33013#define ID3D12GraphicsCommandList6_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33014 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33015
33016#define ID3D12GraphicsCommandList6_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33017 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33018
33019#define ID3D12GraphicsCommandList6_SetPipelineState1(This,pStateObject) \
33020 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33021
33022#define ID3D12GraphicsCommandList6_DispatchRays(This,pDesc) \
33023 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33024
33025
33026#define ID3D12GraphicsCommandList6_RSSetShadingRate(This,baseShadingRate,combiners) \
33027 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33028
33029#define ID3D12GraphicsCommandList6_RSSetShadingRateImage(This,shadingRateImage) \
33030 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33031
33032
33033#define ID3D12GraphicsCommandList6_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33034 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33035
33036#endif /* COBJMACROS */
33037
33038
33039#endif /* C style interface */
33040
33041
33042
33043
33044#endif /* __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__ */
33045
33046
33047#ifndef __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33048#define __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__
33049
33050/* interface ID3D12GraphicsCommandList7 */
33051/* [unique][local][object][uuid] */
33052
33053
33054EXTERN_C const IID IID_ID3D12GraphicsCommandList7;
33055
33056#if defined(__cplusplus) && !defined(CINTERFACE)
33057
33058 MIDL_INTERFACE("dd171223-8b61-4769-90e3-160ccde4e2c1")
33059 ID3D12GraphicsCommandList7 : public ID3D12GraphicsCommandList6
33060 {
33061 public:
33062 virtual void STDMETHODCALLTYPE Barrier(
33063 UINT32 NumBarrierGroups,
33064 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
33065
33066 };
33067
33068
33069#else /* C style interface */
33070
33071 typedef struct ID3D12GraphicsCommandList7Vtbl
33072 {
33073 BEGIN_INTERFACE
33074
33075 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33076 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33077 ID3D12GraphicsCommandList7 * This,
33078 REFIID riid,
33079 _COM_Outptr_ void **ppvObject);
33080
33081 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33082 ULONG ( STDMETHODCALLTYPE *AddRef )(
33083 ID3D12GraphicsCommandList7 * This);
33084
33085 DECLSPEC_XFGVIRT(IUnknown, Release)
33086 ULONG ( STDMETHODCALLTYPE *Release )(
33087 ID3D12GraphicsCommandList7 * This);
33088
33089 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33090 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33091 ID3D12GraphicsCommandList7 * This,
33092 _In_ REFGUID guid,
33093 _Inout_ UINT *pDataSize,
33094 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33095
33096 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33097 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33098 ID3D12GraphicsCommandList7 * This,
33099 _In_ REFGUID guid,
33100 _In_ UINT DataSize,
33101 _In_reads_bytes_opt_( DataSize ) const void *pData);
33102
33103 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33104 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33105 ID3D12GraphicsCommandList7 * This,
33106 _In_ REFGUID guid,
33107 _In_opt_ const IUnknown *pData);
33108
33109 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33110 HRESULT ( STDMETHODCALLTYPE *SetName )(
33111 ID3D12GraphicsCommandList7 * This,
33112 _In_z_ LPCWSTR Name);
33113
33114 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33115 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33116 ID3D12GraphicsCommandList7 * This,
33117 REFIID riid,
33118 _COM_Outptr_opt_ void **ppvDevice);
33119
33120 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33121 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33122 ID3D12GraphicsCommandList7 * This);
33123
33124 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33125 HRESULT ( STDMETHODCALLTYPE *Close )(
33126 ID3D12GraphicsCommandList7 * This);
33127
33128 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33129 HRESULT ( STDMETHODCALLTYPE *Reset )(
33130 ID3D12GraphicsCommandList7 * This,
33131 _In_ ID3D12CommandAllocator *pAllocator,
33132 _In_opt_ ID3D12PipelineState *pInitialState);
33133
33134 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33135 void ( STDMETHODCALLTYPE *ClearState )(
33136 ID3D12GraphicsCommandList7 * This,
33137 _In_opt_ ID3D12PipelineState *pPipelineState);
33138
33139 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33140 void ( STDMETHODCALLTYPE *DrawInstanced )(
33141 ID3D12GraphicsCommandList7 * This,
33142 _In_ UINT VertexCountPerInstance,
33143 _In_ UINT InstanceCount,
33144 _In_ UINT StartVertexLocation,
33145 _In_ UINT StartInstanceLocation);
33146
33147 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
33148 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
33149 ID3D12GraphicsCommandList7 * This,
33150 _In_ UINT IndexCountPerInstance,
33151 _In_ UINT InstanceCount,
33152 _In_ UINT StartIndexLocation,
33153 _In_ INT BaseVertexLocation,
33154 _In_ UINT StartInstanceLocation);
33155
33156 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
33157 void ( STDMETHODCALLTYPE *Dispatch )(
33158 ID3D12GraphicsCommandList7 * This,
33159 _In_ UINT ThreadGroupCountX,
33160 _In_ UINT ThreadGroupCountY,
33161 _In_ UINT ThreadGroupCountZ);
33162
33163 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
33164 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
33165 ID3D12GraphicsCommandList7 * This,
33166 _In_ ID3D12Resource *pDstBuffer,
33167 UINT64 DstOffset,
33168 _In_ ID3D12Resource *pSrcBuffer,
33169 UINT64 SrcOffset,
33170 UINT64 NumBytes);
33171
33172 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
33173 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
33174 ID3D12GraphicsCommandList7 * This,
33175 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
33176 UINT DstX,
33177 UINT DstY,
33178 UINT DstZ,
33179 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
33180 _In_opt_ const D3D12_BOX *pSrcBox);
33181
33182 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
33183 void ( STDMETHODCALLTYPE *CopyResource )(
33184 ID3D12GraphicsCommandList7 * This,
33185 _In_ ID3D12Resource *pDstResource,
33186 _In_ ID3D12Resource *pSrcResource);
33187
33188 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
33189 void ( STDMETHODCALLTYPE *CopyTiles )(
33190 ID3D12GraphicsCommandList7 * This,
33191 _In_ ID3D12Resource *pTiledResource,
33192 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
33193 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
33194 _In_ ID3D12Resource *pBuffer,
33195 UINT64 BufferStartOffsetInBytes,
33196 D3D12_TILE_COPY_FLAGS Flags);
33197
33198 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
33199 void ( STDMETHODCALLTYPE *ResolveSubresource )(
33200 ID3D12GraphicsCommandList7 * This,
33201 _In_ ID3D12Resource *pDstResource,
33202 _In_ UINT DstSubresource,
33203 _In_ ID3D12Resource *pSrcResource,
33204 _In_ UINT SrcSubresource,
33205 _In_ DXGI_FORMAT Format);
33206
33207 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
33208 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
33209 ID3D12GraphicsCommandList7 * This,
33210 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
33211
33212 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
33213 void ( STDMETHODCALLTYPE *RSSetViewports )(
33214 ID3D12GraphicsCommandList7 * This,
33215 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
33216 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
33217
33218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
33219 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
33220 ID3D12GraphicsCommandList7 * This,
33221 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
33222 _In_reads_( NumRects) const D3D12_RECT *pRects);
33223
33224 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
33225 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
33226 ID3D12GraphicsCommandList7 * This,
33227 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
33228
33229 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
33230 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
33231 ID3D12GraphicsCommandList7 * This,
33232 _In_ UINT StencilRef);
33233
33234 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
33235 void ( STDMETHODCALLTYPE *SetPipelineState )(
33236 ID3D12GraphicsCommandList7 * This,
33237 _In_ ID3D12PipelineState *pPipelineState);
33238
33239 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
33240 void ( STDMETHODCALLTYPE *ResourceBarrier )(
33241 ID3D12GraphicsCommandList7 * This,
33242 _In_ UINT NumBarriers,
33243 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
33244
33245 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
33246 void ( STDMETHODCALLTYPE *ExecuteBundle )(
33247 ID3D12GraphicsCommandList7 * This,
33248 _In_ ID3D12GraphicsCommandList *pCommandList);
33249
33250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
33251 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
33252 ID3D12GraphicsCommandList7 * This,
33253 _In_ UINT NumDescriptorHeaps,
33254 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
33255
33256 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
33257 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
33258 ID3D12GraphicsCommandList7 * This,
33259 _In_opt_ ID3D12RootSignature *pRootSignature);
33260
33261 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
33262 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
33263 ID3D12GraphicsCommandList7 * This,
33264 _In_opt_ ID3D12RootSignature *pRootSignature);
33265
33266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
33267 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
33268 ID3D12GraphicsCommandList7 * This,
33269 _In_ UINT RootParameterIndex,
33270 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33271
33272 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
33273 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
33274 ID3D12GraphicsCommandList7 * This,
33275 _In_ UINT RootParameterIndex,
33276 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
33277
33278 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
33279 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
33280 ID3D12GraphicsCommandList7 * This,
33281 _In_ UINT RootParameterIndex,
33282 _In_ UINT SrcData,
33283 _In_ UINT DestOffsetIn32BitValues);
33284
33285 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
33286 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
33287 ID3D12GraphicsCommandList7 * This,
33288 _In_ UINT RootParameterIndex,
33289 _In_ UINT SrcData,
33290 _In_ UINT DestOffsetIn32BitValues);
33291
33292 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
33293 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
33294 ID3D12GraphicsCommandList7 * This,
33295 _In_ UINT RootParameterIndex,
33296 _In_ UINT Num32BitValuesToSet,
33297 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33298 _In_ UINT DestOffsetIn32BitValues);
33299
33300 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
33301 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
33302 ID3D12GraphicsCommandList7 * This,
33303 _In_ UINT RootParameterIndex,
33304 _In_ UINT Num32BitValuesToSet,
33305 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
33306 _In_ UINT DestOffsetIn32BitValues);
33307
33308 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
33309 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
33310 ID3D12GraphicsCommandList7 * This,
33311 _In_ UINT RootParameterIndex,
33312 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33313
33314 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
33315 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
33316 ID3D12GraphicsCommandList7 * This,
33317 _In_ UINT RootParameterIndex,
33318 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33319
33320 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
33321 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
33322 ID3D12GraphicsCommandList7 * This,
33323 _In_ UINT RootParameterIndex,
33324 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33325
33326 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
33327 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
33328 ID3D12GraphicsCommandList7 * This,
33329 _In_ UINT RootParameterIndex,
33330 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33331
33332 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
33333 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
33334 ID3D12GraphicsCommandList7 * This,
33335 _In_ UINT RootParameterIndex,
33336 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33337
33338 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
33339 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
33340 ID3D12GraphicsCommandList7 * This,
33341 _In_ UINT RootParameterIndex,
33342 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
33343
33344 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
33345 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
33346 ID3D12GraphicsCommandList7 * This,
33347 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
33348
33349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
33350 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
33351 ID3D12GraphicsCommandList7 * This,
33352 _In_ UINT StartSlot,
33353 _In_ UINT NumViews,
33354 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
33355
33356 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
33357 void ( STDMETHODCALLTYPE *SOSetTargets )(
33358 ID3D12GraphicsCommandList7 * This,
33359 _In_ UINT StartSlot,
33360 _In_ UINT NumViews,
33361 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
33362
33363 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
33364 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
33365 ID3D12GraphicsCommandList7 * This,
33366 _In_ UINT NumRenderTargetDescriptors,
33367 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
33368 _In_ BOOL RTsSingleHandleToDescriptorRange,
33369 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
33370
33371 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
33372 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
33373 ID3D12GraphicsCommandList7 * This,
33374 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
33375 _In_ D3D12_CLEAR_FLAGS ClearFlags,
33376 _In_ FLOAT Depth,
33377 _In_ UINT8 Stencil,
33378 _In_ UINT NumRects,
33379 _In_reads_(NumRects) const D3D12_RECT *pRects);
33380
33381 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
33382 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
33383 ID3D12GraphicsCommandList7 * This,
33384 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
33385 _In_ const FLOAT ColorRGBA[ 4 ],
33386 _In_ UINT NumRects,
33387 _In_reads_(NumRects) const D3D12_RECT *pRects);
33388
33389 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
33390 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
33391 ID3D12GraphicsCommandList7 * This,
33392 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33393 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33394 _In_ ID3D12Resource *pResource,
33395 _In_ const UINT Values[ 4 ],
33396 _In_ UINT NumRects,
33397 _In_reads_(NumRects) const D3D12_RECT *pRects);
33398
33399 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
33400 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
33401 ID3D12GraphicsCommandList7 * This,
33402 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
33403 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
33404 _In_ ID3D12Resource *pResource,
33405 _In_ const FLOAT Values[ 4 ],
33406 _In_ UINT NumRects,
33407 _In_reads_(NumRects) const D3D12_RECT *pRects);
33408
33409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
33410 void ( STDMETHODCALLTYPE *DiscardResource )(
33411 ID3D12GraphicsCommandList7 * This,
33412 _In_ ID3D12Resource *pResource,
33413 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
33414
33415 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
33416 void ( STDMETHODCALLTYPE *BeginQuery )(
33417 ID3D12GraphicsCommandList7 * This,
33418 _In_ ID3D12QueryHeap *pQueryHeap,
33419 _In_ D3D12_QUERY_TYPE Type,
33420 _In_ UINT Index);
33421
33422 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
33423 void ( STDMETHODCALLTYPE *EndQuery )(
33424 ID3D12GraphicsCommandList7 * This,
33425 _In_ ID3D12QueryHeap *pQueryHeap,
33426 _In_ D3D12_QUERY_TYPE Type,
33427 _In_ UINT Index);
33428
33429 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
33430 void ( STDMETHODCALLTYPE *ResolveQueryData )(
33431 ID3D12GraphicsCommandList7 * This,
33432 _In_ ID3D12QueryHeap *pQueryHeap,
33433 _In_ D3D12_QUERY_TYPE Type,
33434 _In_ UINT StartIndex,
33435 _In_ UINT NumQueries,
33436 _In_ ID3D12Resource *pDestinationBuffer,
33437 _In_ UINT64 AlignedDestinationBufferOffset);
33438
33439 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
33440 void ( STDMETHODCALLTYPE *SetPredication )(
33441 ID3D12GraphicsCommandList7 * This,
33442 _In_opt_ ID3D12Resource *pBuffer,
33443 _In_ UINT64 AlignedBufferOffset,
33444 _In_ D3D12_PREDICATION_OP Operation);
33445
33446 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
33447 void ( STDMETHODCALLTYPE *SetMarker )(
33448 ID3D12GraphicsCommandList7 * This,
33449 UINT Metadata,
33450 _In_reads_bytes_opt_(Size) const void *pData,
33451 UINT Size);
33452
33453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
33454 void ( STDMETHODCALLTYPE *BeginEvent )(
33455 ID3D12GraphicsCommandList7 * This,
33456 UINT Metadata,
33457 _In_reads_bytes_opt_(Size) const void *pData,
33458 UINT Size);
33459
33460 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
33461 void ( STDMETHODCALLTYPE *EndEvent )(
33462 ID3D12GraphicsCommandList7 * This);
33463
33464 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
33465 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
33466 ID3D12GraphicsCommandList7 * This,
33467 _In_ ID3D12CommandSignature *pCommandSignature,
33468 _In_ UINT MaxCommandCount,
33469 _In_ ID3D12Resource *pArgumentBuffer,
33470 _In_ UINT64 ArgumentBufferOffset,
33471 _In_opt_ ID3D12Resource *pCountBuffer,
33472 _In_ UINT64 CountBufferOffset);
33473
33474 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
33475 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
33476 ID3D12GraphicsCommandList7 * This,
33477 _In_ ID3D12Resource *pDstBuffer,
33478 UINT64 DstOffset,
33479 _In_ ID3D12Resource *pSrcBuffer,
33480 UINT64 SrcOffset,
33481 UINT Dependencies,
33482 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33483 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33484
33485 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
33486 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
33487 ID3D12GraphicsCommandList7 * This,
33488 _In_ ID3D12Resource *pDstBuffer,
33489 UINT64 DstOffset,
33490 _In_ ID3D12Resource *pSrcBuffer,
33491 UINT64 SrcOffset,
33492 UINT Dependencies,
33493 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
33494 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
33495
33496 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
33497 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
33498 ID3D12GraphicsCommandList7 * This,
33499 _In_ FLOAT Min,
33500 _In_ FLOAT Max);
33501
33502 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
33503 void ( STDMETHODCALLTYPE *SetSamplePositions )(
33504 ID3D12GraphicsCommandList7 * This,
33505 _In_ UINT NumSamplesPerPixel,
33506 _In_ UINT NumPixels,
33507 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
33508
33509 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
33510 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
33511 ID3D12GraphicsCommandList7 * This,
33512 _In_ ID3D12Resource *pDstResource,
33513 _In_ UINT DstSubresource,
33514 _In_ UINT DstX,
33515 _In_ UINT DstY,
33516 _In_ ID3D12Resource *pSrcResource,
33517 _In_ UINT SrcSubresource,
33518 _In_opt_ D3D12_RECT *pSrcRect,
33519 _In_ DXGI_FORMAT Format,
33520 _In_ D3D12_RESOLVE_MODE ResolveMode);
33521
33522 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
33523 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
33524 ID3D12GraphicsCommandList7 * This,
33525 _In_ UINT Mask);
33526
33527 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
33528 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
33529 ID3D12GraphicsCommandList7 * This,
33530 UINT Count,
33531 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
33532 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
33533
33534 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
33535 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
33536 ID3D12GraphicsCommandList7 * This,
33537 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
33538
33539 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
33540 void ( STDMETHODCALLTYPE *BeginRenderPass )(
33541 ID3D12GraphicsCommandList7 * This,
33542 _In_ UINT NumRenderTargets,
33543 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
33544 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
33545 D3D12_RENDER_PASS_FLAGS Flags);
33546
33547 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
33548 void ( STDMETHODCALLTYPE *EndRenderPass )(
33549 ID3D12GraphicsCommandList7 * This);
33550
33551 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
33552 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
33553 ID3D12GraphicsCommandList7 * This,
33554 _In_ ID3D12MetaCommand *pMetaCommand,
33555 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
33556 _In_ SIZE_T InitializationParametersDataSizeInBytes);
33557
33558 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
33559 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
33560 ID3D12GraphicsCommandList7 * This,
33561 _In_ ID3D12MetaCommand *pMetaCommand,
33562 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
33563 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
33564
33565 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
33566 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
33567 ID3D12GraphicsCommandList7 * This,
33568 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
33569 _In_ UINT NumPostbuildInfoDescs,
33570 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
33571
33572 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
33573 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
33574 ID3D12GraphicsCommandList7 * This,
33575 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
33576 _In_ UINT NumSourceAccelerationStructures,
33577 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
33578
33579 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
33580 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
33581 ID3D12GraphicsCommandList7 * This,
33582 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
33583 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
33584 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
33585
33586 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
33587 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
33588 ID3D12GraphicsCommandList7 * This,
33589 _In_ ID3D12StateObject *pStateObject);
33590
33591 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
33592 void ( STDMETHODCALLTYPE *DispatchRays )(
33593 ID3D12GraphicsCommandList7 * This,
33594 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
33595
33596 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
33597 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
33598 ID3D12GraphicsCommandList7 * This,
33599 _In_ D3D12_SHADING_RATE baseShadingRate,
33600 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
33601
33602 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
33603 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
33604 ID3D12GraphicsCommandList7 * This,
33605 _In_opt_ ID3D12Resource *shadingRateImage);
33606
33607 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
33608 void ( STDMETHODCALLTYPE *DispatchMesh )(
33609 ID3D12GraphicsCommandList7 * This,
33610 _In_ UINT ThreadGroupCountX,
33611 _In_ UINT ThreadGroupCountY,
33612 _In_ UINT ThreadGroupCountZ);
33613
33614 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
33615 void ( STDMETHODCALLTYPE *Barrier )(
33616 ID3D12GraphicsCommandList7 * This,
33617 UINT32 NumBarrierGroups,
33618 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
33619
33620 END_INTERFACE
33621 } ID3D12GraphicsCommandList7Vtbl;
33622
33623 interface ID3D12GraphicsCommandList7
33624 {
33625 CONST_VTBL struct ID3D12GraphicsCommandList7Vtbl *lpVtbl;
33626 };
33627
33628
33629
33630#ifdef COBJMACROS
33631
33632
33633#define ID3D12GraphicsCommandList7_QueryInterface(This,riid,ppvObject) \
33634 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
33635
33636#define ID3D12GraphicsCommandList7_AddRef(This) \
33637 ( (This)->lpVtbl -> AddRef(This) )
33638
33639#define ID3D12GraphicsCommandList7_Release(This) \
33640 ( (This)->lpVtbl -> Release(This) )
33641
33642
33643#define ID3D12GraphicsCommandList7_GetPrivateData(This,guid,pDataSize,pData) \
33644 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
33645
33646#define ID3D12GraphicsCommandList7_SetPrivateData(This,guid,DataSize,pData) \
33647 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
33648
33649#define ID3D12GraphicsCommandList7_SetPrivateDataInterface(This,guid,pData) \
33650 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
33651
33652#define ID3D12GraphicsCommandList7_SetName(This,Name) \
33653 ( (This)->lpVtbl -> SetName(This,Name) )
33654
33655
33656#define ID3D12GraphicsCommandList7_GetDevice(This,riid,ppvDevice) \
33657 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
33658
33659
33660#define ID3D12GraphicsCommandList7_GetType(This) \
33661 ( (This)->lpVtbl -> GetType(This) )
33662
33663
33664#define ID3D12GraphicsCommandList7_Close(This) \
33665 ( (This)->lpVtbl -> Close(This) )
33666
33667#define ID3D12GraphicsCommandList7_Reset(This,pAllocator,pInitialState) \
33668 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
33669
33670#define ID3D12GraphicsCommandList7_ClearState(This,pPipelineState) \
33671 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
33672
33673#define ID3D12GraphicsCommandList7_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
33674 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
33675
33676#define ID3D12GraphicsCommandList7_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
33677 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
33678
33679#define ID3D12GraphicsCommandList7_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33680 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33681
33682#define ID3D12GraphicsCommandList7_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
33683 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
33684
33685#define ID3D12GraphicsCommandList7_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
33686 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
33687
33688#define ID3D12GraphicsCommandList7_CopyResource(This,pDstResource,pSrcResource) \
33689 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
33690
33691#define ID3D12GraphicsCommandList7_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
33692 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
33693
33694#define ID3D12GraphicsCommandList7_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
33695 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
33696
33697#define ID3D12GraphicsCommandList7_IASetPrimitiveTopology(This,PrimitiveTopology) \
33698 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
33699
33700#define ID3D12GraphicsCommandList7_RSSetViewports(This,NumViewports,pViewports) \
33701 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
33702
33703#define ID3D12GraphicsCommandList7_RSSetScissorRects(This,NumRects,pRects) \
33704 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
33705
33706#define ID3D12GraphicsCommandList7_OMSetBlendFactor(This,BlendFactor) \
33707 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
33708
33709#define ID3D12GraphicsCommandList7_OMSetStencilRef(This,StencilRef) \
33710 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
33711
33712#define ID3D12GraphicsCommandList7_SetPipelineState(This,pPipelineState) \
33713 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
33714
33715#define ID3D12GraphicsCommandList7_ResourceBarrier(This,NumBarriers,pBarriers) \
33716 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
33717
33718#define ID3D12GraphicsCommandList7_ExecuteBundle(This,pCommandList) \
33719 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
33720
33721#define ID3D12GraphicsCommandList7_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
33722 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
33723
33724#define ID3D12GraphicsCommandList7_SetComputeRootSignature(This,pRootSignature) \
33725 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
33726
33727#define ID3D12GraphicsCommandList7_SetGraphicsRootSignature(This,pRootSignature) \
33728 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
33729
33730#define ID3D12GraphicsCommandList7_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33731 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33732
33733#define ID3D12GraphicsCommandList7_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
33734 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
33735
33736#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33737 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33738
33739#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
33740 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
33741
33742#define ID3D12GraphicsCommandList7_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33743 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33744
33745#define ID3D12GraphicsCommandList7_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
33746 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
33747
33748#define ID3D12GraphicsCommandList7_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33749 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33750
33751#define ID3D12GraphicsCommandList7_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
33752 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
33753
33754#define ID3D12GraphicsCommandList7_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33755 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33756
33757#define ID3D12GraphicsCommandList7_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
33758 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
33759
33760#define ID3D12GraphicsCommandList7_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33761 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33762
33763#define ID3D12GraphicsCommandList7_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
33764 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
33765
33766#define ID3D12GraphicsCommandList7_IASetIndexBuffer(This,pView) \
33767 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
33768
33769#define ID3D12GraphicsCommandList7_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
33770 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
33771
33772#define ID3D12GraphicsCommandList7_SOSetTargets(This,StartSlot,NumViews,pViews) \
33773 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
33774
33775#define ID3D12GraphicsCommandList7_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
33776 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
33777
33778#define ID3D12GraphicsCommandList7_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
33779 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
33780
33781#define ID3D12GraphicsCommandList7_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
33782 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
33783
33784#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33785 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33786
33787#define ID3D12GraphicsCommandList7_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
33788 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
33789
33790#define ID3D12GraphicsCommandList7_DiscardResource(This,pResource,pRegion) \
33791 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
33792
33793#define ID3D12GraphicsCommandList7_BeginQuery(This,pQueryHeap,Type,Index) \
33794 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
33795
33796#define ID3D12GraphicsCommandList7_EndQuery(This,pQueryHeap,Type,Index) \
33797 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
33798
33799#define ID3D12GraphicsCommandList7_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
33800 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
33801
33802#define ID3D12GraphicsCommandList7_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
33803 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
33804
33805#define ID3D12GraphicsCommandList7_SetMarker(This,Metadata,pData,Size) \
33806 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
33807
33808#define ID3D12GraphicsCommandList7_BeginEvent(This,Metadata,pData,Size) \
33809 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
33810
33811#define ID3D12GraphicsCommandList7_EndEvent(This) \
33812 ( (This)->lpVtbl -> EndEvent(This) )
33813
33814#define ID3D12GraphicsCommandList7_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
33815 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
33816
33817
33818#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33819 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33820
33821#define ID3D12GraphicsCommandList7_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
33822 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
33823
33824#define ID3D12GraphicsCommandList7_OMSetDepthBounds(This,Min,Max) \
33825 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
33826
33827#define ID3D12GraphicsCommandList7_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
33828 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
33829
33830#define ID3D12GraphicsCommandList7_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
33831 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
33832
33833#define ID3D12GraphicsCommandList7_SetViewInstanceMask(This,Mask) \
33834 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
33835
33836
33837#define ID3D12GraphicsCommandList7_WriteBufferImmediate(This,Count,pParams,pModes) \
33838 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
33839
33840
33841#define ID3D12GraphicsCommandList7_SetProtectedResourceSession(This,pProtectedResourceSession) \
33842 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
33843
33844
33845#define ID3D12GraphicsCommandList7_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
33846 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
33847
33848#define ID3D12GraphicsCommandList7_EndRenderPass(This) \
33849 ( (This)->lpVtbl -> EndRenderPass(This) )
33850
33851#define ID3D12GraphicsCommandList7_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
33852 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
33853
33854#define ID3D12GraphicsCommandList7_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
33855 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
33856
33857#define ID3D12GraphicsCommandList7_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
33858 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
33859
33860#define ID3D12GraphicsCommandList7_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
33861 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
33862
33863#define ID3D12GraphicsCommandList7_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
33864 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
33865
33866#define ID3D12GraphicsCommandList7_SetPipelineState1(This,pStateObject) \
33867 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
33868
33869#define ID3D12GraphicsCommandList7_DispatchRays(This,pDesc) \
33870 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
33871
33872
33873#define ID3D12GraphicsCommandList7_RSSetShadingRate(This,baseShadingRate,combiners) \
33874 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
33875
33876#define ID3D12GraphicsCommandList7_RSSetShadingRateImage(This,shadingRateImage) \
33877 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
33878
33879
33880#define ID3D12GraphicsCommandList7_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
33881 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
33882
33883
33884#define ID3D12GraphicsCommandList7_Barrier(This,NumBarrierGroups,pBarrierGroups) \
33885 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
33886
33887#endif /* COBJMACROS */
33888
33889
33890#endif /* C style interface */
33891
33892
33893
33894
33895#endif /* __ID3D12GraphicsCommandList7_INTERFACE_DEFINED__ */
33896
33897
33898#ifndef __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33899#define __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__
33900
33901/* interface ID3D12GraphicsCommandList8 */
33902/* [unique][local][object][uuid] */
33903
33904
33905EXTERN_C const IID IID_ID3D12GraphicsCommandList8;
33906
33907#if defined(__cplusplus) && !defined(CINTERFACE)
33908
33909 MIDL_INTERFACE("ee936ef9-599d-4d28-938e-23c4ad05ce51")
33910 ID3D12GraphicsCommandList8 : public ID3D12GraphicsCommandList7
33911 {
33912 public:
33913 virtual void STDMETHODCALLTYPE OMSetFrontAndBackStencilRef(
33914 _In_ UINT FrontStencilRef,
33915 _In_ UINT BackStencilRef) = 0;
33916
33917 };
33918
33919
33920#else /* C style interface */
33921
33922 typedef struct ID3D12GraphicsCommandList8Vtbl
33923 {
33924 BEGIN_INTERFACE
33925
33926 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
33927 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
33928 ID3D12GraphicsCommandList8 * This,
33929 REFIID riid,
33930 _COM_Outptr_ void **ppvObject);
33931
33932 DECLSPEC_XFGVIRT(IUnknown, AddRef)
33933 ULONG ( STDMETHODCALLTYPE *AddRef )(
33934 ID3D12GraphicsCommandList8 * This);
33935
33936 DECLSPEC_XFGVIRT(IUnknown, Release)
33937 ULONG ( STDMETHODCALLTYPE *Release )(
33938 ID3D12GraphicsCommandList8 * This);
33939
33940 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
33941 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
33942 ID3D12GraphicsCommandList8 * This,
33943 _In_ REFGUID guid,
33944 _Inout_ UINT *pDataSize,
33945 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
33946
33947 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
33948 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
33949 ID3D12GraphicsCommandList8 * This,
33950 _In_ REFGUID guid,
33951 _In_ UINT DataSize,
33952 _In_reads_bytes_opt_( DataSize ) const void *pData);
33953
33954 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
33955 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
33956 ID3D12GraphicsCommandList8 * This,
33957 _In_ REFGUID guid,
33958 _In_opt_ const IUnknown *pData);
33959
33960 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
33961 HRESULT ( STDMETHODCALLTYPE *SetName )(
33962 ID3D12GraphicsCommandList8 * This,
33963 _In_z_ LPCWSTR Name);
33964
33965 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
33966 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
33967 ID3D12GraphicsCommandList8 * This,
33968 REFIID riid,
33969 _COM_Outptr_opt_ void **ppvDevice);
33970
33971 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
33972 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
33973 ID3D12GraphicsCommandList8 * This);
33974
33975 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
33976 HRESULT ( STDMETHODCALLTYPE *Close )(
33977 ID3D12GraphicsCommandList8 * This);
33978
33979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
33980 HRESULT ( STDMETHODCALLTYPE *Reset )(
33981 ID3D12GraphicsCommandList8 * This,
33982 _In_ ID3D12CommandAllocator *pAllocator,
33983 _In_opt_ ID3D12PipelineState *pInitialState);
33984
33985 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
33986 void ( STDMETHODCALLTYPE *ClearState )(
33987 ID3D12GraphicsCommandList8 * This,
33988 _In_opt_ ID3D12PipelineState *pPipelineState);
33989
33990 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
33991 void ( STDMETHODCALLTYPE *DrawInstanced )(
33992 ID3D12GraphicsCommandList8 * This,
33993 _In_ UINT VertexCountPerInstance,
33994 _In_ UINT InstanceCount,
33995 _In_ UINT StartVertexLocation,
33996 _In_ UINT StartInstanceLocation);
33997
33998 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
33999 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34000 ID3D12GraphicsCommandList8 * This,
34001 _In_ UINT IndexCountPerInstance,
34002 _In_ UINT InstanceCount,
34003 _In_ UINT StartIndexLocation,
34004 _In_ INT BaseVertexLocation,
34005 _In_ UINT StartInstanceLocation);
34006
34007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34008 void ( STDMETHODCALLTYPE *Dispatch )(
34009 ID3D12GraphicsCommandList8 * This,
34010 _In_ UINT ThreadGroupCountX,
34011 _In_ UINT ThreadGroupCountY,
34012 _In_ UINT ThreadGroupCountZ);
34013
34014 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34015 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34016 ID3D12GraphicsCommandList8 * This,
34017 _In_ ID3D12Resource *pDstBuffer,
34018 UINT64 DstOffset,
34019 _In_ ID3D12Resource *pSrcBuffer,
34020 UINT64 SrcOffset,
34021 UINT64 NumBytes);
34022
34023 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34024 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34025 ID3D12GraphicsCommandList8 * This,
34026 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34027 UINT DstX,
34028 UINT DstY,
34029 UINT DstZ,
34030 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34031 _In_opt_ const D3D12_BOX *pSrcBox);
34032
34033 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34034 void ( STDMETHODCALLTYPE *CopyResource )(
34035 ID3D12GraphicsCommandList8 * This,
34036 _In_ ID3D12Resource *pDstResource,
34037 _In_ ID3D12Resource *pSrcResource);
34038
34039 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34040 void ( STDMETHODCALLTYPE *CopyTiles )(
34041 ID3D12GraphicsCommandList8 * This,
34042 _In_ ID3D12Resource *pTiledResource,
34043 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34044 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34045 _In_ ID3D12Resource *pBuffer,
34046 UINT64 BufferStartOffsetInBytes,
34047 D3D12_TILE_COPY_FLAGS Flags);
34048
34049 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34050 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34051 ID3D12GraphicsCommandList8 * This,
34052 _In_ ID3D12Resource *pDstResource,
34053 _In_ UINT DstSubresource,
34054 _In_ ID3D12Resource *pSrcResource,
34055 _In_ UINT SrcSubresource,
34056 _In_ DXGI_FORMAT Format);
34057
34058 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34059 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34060 ID3D12GraphicsCommandList8 * This,
34061 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34062
34063 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34064 void ( STDMETHODCALLTYPE *RSSetViewports )(
34065 ID3D12GraphicsCommandList8 * This,
34066 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34067 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34068
34069 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34070 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34071 ID3D12GraphicsCommandList8 * This,
34072 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34073 _In_reads_( NumRects) const D3D12_RECT *pRects);
34074
34075 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34076 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34077 ID3D12GraphicsCommandList8 * This,
34078 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34079
34080 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34081 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34082 ID3D12GraphicsCommandList8 * This,
34083 _In_ UINT StencilRef);
34084
34085 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34086 void ( STDMETHODCALLTYPE *SetPipelineState )(
34087 ID3D12GraphicsCommandList8 * This,
34088 _In_ ID3D12PipelineState *pPipelineState);
34089
34090 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34091 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34092 ID3D12GraphicsCommandList8 * This,
34093 _In_ UINT NumBarriers,
34094 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34095
34096 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34097 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34098 ID3D12GraphicsCommandList8 * This,
34099 _In_ ID3D12GraphicsCommandList *pCommandList);
34100
34101 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34102 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34103 ID3D12GraphicsCommandList8 * This,
34104 _In_ UINT NumDescriptorHeaps,
34105 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34106
34107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34108 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34109 ID3D12GraphicsCommandList8 * This,
34110 _In_opt_ ID3D12RootSignature *pRootSignature);
34111
34112 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34113 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34114 ID3D12GraphicsCommandList8 * This,
34115 _In_opt_ ID3D12RootSignature *pRootSignature);
34116
34117 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34118 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34119 ID3D12GraphicsCommandList8 * This,
34120 _In_ UINT RootParameterIndex,
34121 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34122
34123 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34124 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34125 ID3D12GraphicsCommandList8 * This,
34126 _In_ UINT RootParameterIndex,
34127 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34128
34129 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34130 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
34131 ID3D12GraphicsCommandList8 * This,
34132 _In_ UINT RootParameterIndex,
34133 _In_ UINT SrcData,
34134 _In_ UINT DestOffsetIn32BitValues);
34135
34136 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
34137 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
34138 ID3D12GraphicsCommandList8 * This,
34139 _In_ UINT RootParameterIndex,
34140 _In_ UINT SrcData,
34141 _In_ UINT DestOffsetIn32BitValues);
34142
34143 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
34144 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
34145 ID3D12GraphicsCommandList8 * This,
34146 _In_ UINT RootParameterIndex,
34147 _In_ UINT Num32BitValuesToSet,
34148 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34149 _In_ UINT DestOffsetIn32BitValues);
34150
34151 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
34152 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
34153 ID3D12GraphicsCommandList8 * This,
34154 _In_ UINT RootParameterIndex,
34155 _In_ UINT Num32BitValuesToSet,
34156 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
34157 _In_ UINT DestOffsetIn32BitValues);
34158
34159 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
34160 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
34161 ID3D12GraphicsCommandList8 * This,
34162 _In_ UINT RootParameterIndex,
34163 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34164
34165 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
34166 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
34167 ID3D12GraphicsCommandList8 * This,
34168 _In_ UINT RootParameterIndex,
34169 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34170
34171 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
34172 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
34173 ID3D12GraphicsCommandList8 * This,
34174 _In_ UINT RootParameterIndex,
34175 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34176
34177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
34178 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
34179 ID3D12GraphicsCommandList8 * This,
34180 _In_ UINT RootParameterIndex,
34181 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34182
34183 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
34184 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
34185 ID3D12GraphicsCommandList8 * This,
34186 _In_ UINT RootParameterIndex,
34187 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34188
34189 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
34190 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
34191 ID3D12GraphicsCommandList8 * This,
34192 _In_ UINT RootParameterIndex,
34193 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
34194
34195 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
34196 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
34197 ID3D12GraphicsCommandList8 * This,
34198 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
34199
34200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
34201 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
34202 ID3D12GraphicsCommandList8 * This,
34203 _In_ UINT StartSlot,
34204 _In_ UINT NumViews,
34205 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
34206
34207 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
34208 void ( STDMETHODCALLTYPE *SOSetTargets )(
34209 ID3D12GraphicsCommandList8 * This,
34210 _In_ UINT StartSlot,
34211 _In_ UINT NumViews,
34212 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
34213
34214 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
34215 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
34216 ID3D12GraphicsCommandList8 * This,
34217 _In_ UINT NumRenderTargetDescriptors,
34218 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
34219 _In_ BOOL RTsSingleHandleToDescriptorRange,
34220 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
34221
34222 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
34223 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
34224 ID3D12GraphicsCommandList8 * This,
34225 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
34226 _In_ D3D12_CLEAR_FLAGS ClearFlags,
34227 _In_ FLOAT Depth,
34228 _In_ UINT8 Stencil,
34229 _In_ UINT NumRects,
34230 _In_reads_(NumRects) const D3D12_RECT *pRects);
34231
34232 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
34233 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
34234 ID3D12GraphicsCommandList8 * This,
34235 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
34236 _In_ const FLOAT ColorRGBA[ 4 ],
34237 _In_ UINT NumRects,
34238 _In_reads_(NumRects) const D3D12_RECT *pRects);
34239
34240 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
34241 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
34242 ID3D12GraphicsCommandList8 * This,
34243 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34244 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34245 _In_ ID3D12Resource *pResource,
34246 _In_ const UINT Values[ 4 ],
34247 _In_ UINT NumRects,
34248 _In_reads_(NumRects) const D3D12_RECT *pRects);
34249
34250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
34251 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
34252 ID3D12GraphicsCommandList8 * This,
34253 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
34254 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
34255 _In_ ID3D12Resource *pResource,
34256 _In_ const FLOAT Values[ 4 ],
34257 _In_ UINT NumRects,
34258 _In_reads_(NumRects) const D3D12_RECT *pRects);
34259
34260 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
34261 void ( STDMETHODCALLTYPE *DiscardResource )(
34262 ID3D12GraphicsCommandList8 * This,
34263 _In_ ID3D12Resource *pResource,
34264 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
34265
34266 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
34267 void ( STDMETHODCALLTYPE *BeginQuery )(
34268 ID3D12GraphicsCommandList8 * This,
34269 _In_ ID3D12QueryHeap *pQueryHeap,
34270 _In_ D3D12_QUERY_TYPE Type,
34271 _In_ UINT Index);
34272
34273 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
34274 void ( STDMETHODCALLTYPE *EndQuery )(
34275 ID3D12GraphicsCommandList8 * This,
34276 _In_ ID3D12QueryHeap *pQueryHeap,
34277 _In_ D3D12_QUERY_TYPE Type,
34278 _In_ UINT Index);
34279
34280 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
34281 void ( STDMETHODCALLTYPE *ResolveQueryData )(
34282 ID3D12GraphicsCommandList8 * This,
34283 _In_ ID3D12QueryHeap *pQueryHeap,
34284 _In_ D3D12_QUERY_TYPE Type,
34285 _In_ UINT StartIndex,
34286 _In_ UINT NumQueries,
34287 _In_ ID3D12Resource *pDestinationBuffer,
34288 _In_ UINT64 AlignedDestinationBufferOffset);
34289
34290 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
34291 void ( STDMETHODCALLTYPE *SetPredication )(
34292 ID3D12GraphicsCommandList8 * This,
34293 _In_opt_ ID3D12Resource *pBuffer,
34294 _In_ UINT64 AlignedBufferOffset,
34295 _In_ D3D12_PREDICATION_OP Operation);
34296
34297 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
34298 void ( STDMETHODCALLTYPE *SetMarker )(
34299 ID3D12GraphicsCommandList8 * This,
34300 UINT Metadata,
34301 _In_reads_bytes_opt_(Size) const void *pData,
34302 UINT Size);
34303
34304 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
34305 void ( STDMETHODCALLTYPE *BeginEvent )(
34306 ID3D12GraphicsCommandList8 * This,
34307 UINT Metadata,
34308 _In_reads_bytes_opt_(Size) const void *pData,
34309 UINT Size);
34310
34311 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
34312 void ( STDMETHODCALLTYPE *EndEvent )(
34313 ID3D12GraphicsCommandList8 * This);
34314
34315 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
34316 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
34317 ID3D12GraphicsCommandList8 * This,
34318 _In_ ID3D12CommandSignature *pCommandSignature,
34319 _In_ UINT MaxCommandCount,
34320 _In_ ID3D12Resource *pArgumentBuffer,
34321 _In_ UINT64 ArgumentBufferOffset,
34322 _In_opt_ ID3D12Resource *pCountBuffer,
34323 _In_ UINT64 CountBufferOffset);
34324
34325 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
34326 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
34327 ID3D12GraphicsCommandList8 * This,
34328 _In_ ID3D12Resource *pDstBuffer,
34329 UINT64 DstOffset,
34330 _In_ ID3D12Resource *pSrcBuffer,
34331 UINT64 SrcOffset,
34332 UINT Dependencies,
34333 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34334 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34335
34336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
34337 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
34338 ID3D12GraphicsCommandList8 * This,
34339 _In_ ID3D12Resource *pDstBuffer,
34340 UINT64 DstOffset,
34341 _In_ ID3D12Resource *pSrcBuffer,
34342 UINT64 SrcOffset,
34343 UINT Dependencies,
34344 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
34345 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
34346
34347 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
34348 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
34349 ID3D12GraphicsCommandList8 * This,
34350 _In_ FLOAT Min,
34351 _In_ FLOAT Max);
34352
34353 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
34354 void ( STDMETHODCALLTYPE *SetSamplePositions )(
34355 ID3D12GraphicsCommandList8 * This,
34356 _In_ UINT NumSamplesPerPixel,
34357 _In_ UINT NumPixels,
34358 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
34359
34360 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
34361 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
34362 ID3D12GraphicsCommandList8 * This,
34363 _In_ ID3D12Resource *pDstResource,
34364 _In_ UINT DstSubresource,
34365 _In_ UINT DstX,
34366 _In_ UINT DstY,
34367 _In_ ID3D12Resource *pSrcResource,
34368 _In_ UINT SrcSubresource,
34369 _In_opt_ D3D12_RECT *pSrcRect,
34370 _In_ DXGI_FORMAT Format,
34371 _In_ D3D12_RESOLVE_MODE ResolveMode);
34372
34373 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
34374 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
34375 ID3D12GraphicsCommandList8 * This,
34376 _In_ UINT Mask);
34377
34378 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
34379 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
34380 ID3D12GraphicsCommandList8 * This,
34381 UINT Count,
34382 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
34383 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
34384
34385 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
34386 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
34387 ID3D12GraphicsCommandList8 * This,
34388 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
34389
34390 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
34391 void ( STDMETHODCALLTYPE *BeginRenderPass )(
34392 ID3D12GraphicsCommandList8 * This,
34393 _In_ UINT NumRenderTargets,
34394 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
34395 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
34396 D3D12_RENDER_PASS_FLAGS Flags);
34397
34398 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
34399 void ( STDMETHODCALLTYPE *EndRenderPass )(
34400 ID3D12GraphicsCommandList8 * This);
34401
34402 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
34403 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
34404 ID3D12GraphicsCommandList8 * This,
34405 _In_ ID3D12MetaCommand *pMetaCommand,
34406 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
34407 _In_ SIZE_T InitializationParametersDataSizeInBytes);
34408
34409 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
34410 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
34411 ID3D12GraphicsCommandList8 * This,
34412 _In_ ID3D12MetaCommand *pMetaCommand,
34413 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
34414 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
34415
34416 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
34417 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
34418 ID3D12GraphicsCommandList8 * This,
34419 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
34420 _In_ UINT NumPostbuildInfoDescs,
34421 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
34422
34423 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
34424 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
34425 ID3D12GraphicsCommandList8 * This,
34426 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
34427 _In_ UINT NumSourceAccelerationStructures,
34428 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
34429
34430 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
34431 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
34432 ID3D12GraphicsCommandList8 * This,
34433 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
34434 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
34435 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
34436
34437 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
34438 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
34439 ID3D12GraphicsCommandList8 * This,
34440 _In_ ID3D12StateObject *pStateObject);
34441
34442 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
34443 void ( STDMETHODCALLTYPE *DispatchRays )(
34444 ID3D12GraphicsCommandList8 * This,
34445 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
34446
34447 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
34448 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
34449 ID3D12GraphicsCommandList8 * This,
34450 _In_ D3D12_SHADING_RATE baseShadingRate,
34451 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
34452
34453 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
34454 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
34455 ID3D12GraphicsCommandList8 * This,
34456 _In_opt_ ID3D12Resource *shadingRateImage);
34457
34458 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
34459 void ( STDMETHODCALLTYPE *DispatchMesh )(
34460 ID3D12GraphicsCommandList8 * This,
34461 _In_ UINT ThreadGroupCountX,
34462 _In_ UINT ThreadGroupCountY,
34463 _In_ UINT ThreadGroupCountZ);
34464
34465 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
34466 void ( STDMETHODCALLTYPE *Barrier )(
34467 ID3D12GraphicsCommandList8 * This,
34468 UINT32 NumBarrierGroups,
34469 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
34470
34471 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
34472 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
34473 ID3D12GraphicsCommandList8 * This,
34474 _In_ UINT FrontStencilRef,
34475 _In_ UINT BackStencilRef);
34476
34477 END_INTERFACE
34478 } ID3D12GraphicsCommandList8Vtbl;
34479
34480 interface ID3D12GraphicsCommandList8
34481 {
34482 CONST_VTBL struct ID3D12GraphicsCommandList8Vtbl *lpVtbl;
34483 };
34484
34485
34486
34487#ifdef COBJMACROS
34488
34489
34490#define ID3D12GraphicsCommandList8_QueryInterface(This,riid,ppvObject) \
34491 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
34492
34493#define ID3D12GraphicsCommandList8_AddRef(This) \
34494 ( (This)->lpVtbl -> AddRef(This) )
34495
34496#define ID3D12GraphicsCommandList8_Release(This) \
34497 ( (This)->lpVtbl -> Release(This) )
34498
34499
34500#define ID3D12GraphicsCommandList8_GetPrivateData(This,guid,pDataSize,pData) \
34501 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
34502
34503#define ID3D12GraphicsCommandList8_SetPrivateData(This,guid,DataSize,pData) \
34504 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
34505
34506#define ID3D12GraphicsCommandList8_SetPrivateDataInterface(This,guid,pData) \
34507 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
34508
34509#define ID3D12GraphicsCommandList8_SetName(This,Name) \
34510 ( (This)->lpVtbl -> SetName(This,Name) )
34511
34512
34513#define ID3D12GraphicsCommandList8_GetDevice(This,riid,ppvDevice) \
34514 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
34515
34516
34517#define ID3D12GraphicsCommandList8_GetType(This) \
34518 ( (This)->lpVtbl -> GetType(This) )
34519
34520
34521#define ID3D12GraphicsCommandList8_Close(This) \
34522 ( (This)->lpVtbl -> Close(This) )
34523
34524#define ID3D12GraphicsCommandList8_Reset(This,pAllocator,pInitialState) \
34525 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
34526
34527#define ID3D12GraphicsCommandList8_ClearState(This,pPipelineState) \
34528 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
34529
34530#define ID3D12GraphicsCommandList8_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
34531 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
34532
34533#define ID3D12GraphicsCommandList8_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
34534 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
34535
34536#define ID3D12GraphicsCommandList8_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34537 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34538
34539#define ID3D12GraphicsCommandList8_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
34540 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
34541
34542#define ID3D12GraphicsCommandList8_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
34543 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
34544
34545#define ID3D12GraphicsCommandList8_CopyResource(This,pDstResource,pSrcResource) \
34546 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
34547
34548#define ID3D12GraphicsCommandList8_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
34549 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
34550
34551#define ID3D12GraphicsCommandList8_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
34552 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
34553
34554#define ID3D12GraphicsCommandList8_IASetPrimitiveTopology(This,PrimitiveTopology) \
34555 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
34556
34557#define ID3D12GraphicsCommandList8_RSSetViewports(This,NumViewports,pViewports) \
34558 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
34559
34560#define ID3D12GraphicsCommandList8_RSSetScissorRects(This,NumRects,pRects) \
34561 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
34562
34563#define ID3D12GraphicsCommandList8_OMSetBlendFactor(This,BlendFactor) \
34564 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
34565
34566#define ID3D12GraphicsCommandList8_OMSetStencilRef(This,StencilRef) \
34567 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
34568
34569#define ID3D12GraphicsCommandList8_SetPipelineState(This,pPipelineState) \
34570 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
34571
34572#define ID3D12GraphicsCommandList8_ResourceBarrier(This,NumBarriers,pBarriers) \
34573 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
34574
34575#define ID3D12GraphicsCommandList8_ExecuteBundle(This,pCommandList) \
34576 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
34577
34578#define ID3D12GraphicsCommandList8_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
34579 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
34580
34581#define ID3D12GraphicsCommandList8_SetComputeRootSignature(This,pRootSignature) \
34582 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
34583
34584#define ID3D12GraphicsCommandList8_SetGraphicsRootSignature(This,pRootSignature) \
34585 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
34586
34587#define ID3D12GraphicsCommandList8_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34588 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34589
34590#define ID3D12GraphicsCommandList8_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
34591 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
34592
34593#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34594 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34595
34596#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
34597 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
34598
34599#define ID3D12GraphicsCommandList8_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34600 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34601
34602#define ID3D12GraphicsCommandList8_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
34603 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
34604
34605#define ID3D12GraphicsCommandList8_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34606 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34607
34608#define ID3D12GraphicsCommandList8_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
34609 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
34610
34611#define ID3D12GraphicsCommandList8_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34612 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34613
34614#define ID3D12GraphicsCommandList8_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
34615 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
34616
34617#define ID3D12GraphicsCommandList8_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34618 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34619
34620#define ID3D12GraphicsCommandList8_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
34621 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
34622
34623#define ID3D12GraphicsCommandList8_IASetIndexBuffer(This,pView) \
34624 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
34625
34626#define ID3D12GraphicsCommandList8_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
34627 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
34628
34629#define ID3D12GraphicsCommandList8_SOSetTargets(This,StartSlot,NumViews,pViews) \
34630 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
34631
34632#define ID3D12GraphicsCommandList8_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
34633 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
34634
34635#define ID3D12GraphicsCommandList8_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
34636 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
34637
34638#define ID3D12GraphicsCommandList8_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
34639 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
34640
34641#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34642 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34643
34644#define ID3D12GraphicsCommandList8_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
34645 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
34646
34647#define ID3D12GraphicsCommandList8_DiscardResource(This,pResource,pRegion) \
34648 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
34649
34650#define ID3D12GraphicsCommandList8_BeginQuery(This,pQueryHeap,Type,Index) \
34651 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
34652
34653#define ID3D12GraphicsCommandList8_EndQuery(This,pQueryHeap,Type,Index) \
34654 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
34655
34656#define ID3D12GraphicsCommandList8_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
34657 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
34658
34659#define ID3D12GraphicsCommandList8_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
34660 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
34661
34662#define ID3D12GraphicsCommandList8_SetMarker(This,Metadata,pData,Size) \
34663 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
34664
34665#define ID3D12GraphicsCommandList8_BeginEvent(This,Metadata,pData,Size) \
34666 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
34667
34668#define ID3D12GraphicsCommandList8_EndEvent(This) \
34669 ( (This)->lpVtbl -> EndEvent(This) )
34670
34671#define ID3D12GraphicsCommandList8_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
34672 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
34673
34674
34675#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34676 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34677
34678#define ID3D12GraphicsCommandList8_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
34679 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
34680
34681#define ID3D12GraphicsCommandList8_OMSetDepthBounds(This,Min,Max) \
34682 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
34683
34684#define ID3D12GraphicsCommandList8_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
34685 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
34686
34687#define ID3D12GraphicsCommandList8_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
34688 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
34689
34690#define ID3D12GraphicsCommandList8_SetViewInstanceMask(This,Mask) \
34691 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
34692
34693
34694#define ID3D12GraphicsCommandList8_WriteBufferImmediate(This,Count,pParams,pModes) \
34695 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
34696
34697
34698#define ID3D12GraphicsCommandList8_SetProtectedResourceSession(This,pProtectedResourceSession) \
34699 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
34700
34701
34702#define ID3D12GraphicsCommandList8_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
34703 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
34704
34705#define ID3D12GraphicsCommandList8_EndRenderPass(This) \
34706 ( (This)->lpVtbl -> EndRenderPass(This) )
34707
34708#define ID3D12GraphicsCommandList8_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
34709 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
34710
34711#define ID3D12GraphicsCommandList8_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
34712 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
34713
34714#define ID3D12GraphicsCommandList8_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
34715 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
34716
34717#define ID3D12GraphicsCommandList8_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
34718 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
34719
34720#define ID3D12GraphicsCommandList8_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
34721 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
34722
34723#define ID3D12GraphicsCommandList8_SetPipelineState1(This,pStateObject) \
34724 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
34725
34726#define ID3D12GraphicsCommandList8_DispatchRays(This,pDesc) \
34727 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
34728
34729
34730#define ID3D12GraphicsCommandList8_RSSetShadingRate(This,baseShadingRate,combiners) \
34731 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
34732
34733#define ID3D12GraphicsCommandList8_RSSetShadingRateImage(This,shadingRateImage) \
34734 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
34735
34736
34737#define ID3D12GraphicsCommandList8_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
34738 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
34739
34740
34741#define ID3D12GraphicsCommandList8_Barrier(This,NumBarrierGroups,pBarrierGroups) \
34742 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
34743
34744
34745#define ID3D12GraphicsCommandList8_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
34746 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
34747
34748#endif /* COBJMACROS */
34749
34750
34751#endif /* C style interface */
34752
34753
34754
34755
34756#endif /* __ID3D12GraphicsCommandList8_INTERFACE_DEFINED__ */
34757
34758
34759#ifndef __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34760#define __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__
34761
34762/* interface ID3D12GraphicsCommandList9 */
34763/* [unique][local][object][uuid] */
34764
34765
34766EXTERN_C const IID IID_ID3D12GraphicsCommandList9;
34767
34768#if defined(__cplusplus) && !defined(CINTERFACE)
34769
34770 MIDL_INTERFACE("34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1")
34771 ID3D12GraphicsCommandList9 : public ID3D12GraphicsCommandList8
34772 {
34773 public:
34774 virtual void STDMETHODCALLTYPE RSSetDepthBias(
34775 _In_ FLOAT DepthBias,
34776 _In_ FLOAT DepthBiasClamp,
34777 _In_ FLOAT SlopeScaledDepthBias) = 0;
34778
34779 virtual void STDMETHODCALLTYPE IASetIndexBufferStripCutValue(
34780 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) = 0;
34781
34782 };
34783
34784
34785#else /* C style interface */
34786
34787 typedef struct ID3D12GraphicsCommandList9Vtbl
34788 {
34789 BEGIN_INTERFACE
34790
34791 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
34792 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
34793 ID3D12GraphicsCommandList9 * This,
34794 REFIID riid,
34795 _COM_Outptr_ void **ppvObject);
34796
34797 DECLSPEC_XFGVIRT(IUnknown, AddRef)
34798 ULONG ( STDMETHODCALLTYPE *AddRef )(
34799 ID3D12GraphicsCommandList9 * This);
34800
34801 DECLSPEC_XFGVIRT(IUnknown, Release)
34802 ULONG ( STDMETHODCALLTYPE *Release )(
34803 ID3D12GraphicsCommandList9 * This);
34804
34805 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
34806 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
34807 ID3D12GraphicsCommandList9 * This,
34808 _In_ REFGUID guid,
34809 _Inout_ UINT *pDataSize,
34810 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
34811
34812 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
34813 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
34814 ID3D12GraphicsCommandList9 * This,
34815 _In_ REFGUID guid,
34816 _In_ UINT DataSize,
34817 _In_reads_bytes_opt_( DataSize ) const void *pData);
34818
34819 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
34820 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
34821 ID3D12GraphicsCommandList9 * This,
34822 _In_ REFGUID guid,
34823 _In_opt_ const IUnknown *pData);
34824
34825 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
34826 HRESULT ( STDMETHODCALLTYPE *SetName )(
34827 ID3D12GraphicsCommandList9 * This,
34828 _In_z_ LPCWSTR Name);
34829
34830 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
34831 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
34832 ID3D12GraphicsCommandList9 * This,
34833 REFIID riid,
34834 _COM_Outptr_opt_ void **ppvDevice);
34835
34836 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
34837 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
34838 ID3D12GraphicsCommandList9 * This);
34839
34840 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
34841 HRESULT ( STDMETHODCALLTYPE *Close )(
34842 ID3D12GraphicsCommandList9 * This);
34843
34844 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
34845 HRESULT ( STDMETHODCALLTYPE *Reset )(
34846 ID3D12GraphicsCommandList9 * This,
34847 _In_ ID3D12CommandAllocator *pAllocator,
34848 _In_opt_ ID3D12PipelineState *pInitialState);
34849
34850 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
34851 void ( STDMETHODCALLTYPE *ClearState )(
34852 ID3D12GraphicsCommandList9 * This,
34853 _In_opt_ ID3D12PipelineState *pPipelineState);
34854
34855 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
34856 void ( STDMETHODCALLTYPE *DrawInstanced )(
34857 ID3D12GraphicsCommandList9 * This,
34858 _In_ UINT VertexCountPerInstance,
34859 _In_ UINT InstanceCount,
34860 _In_ UINT StartVertexLocation,
34861 _In_ UINT StartInstanceLocation);
34862
34863 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
34864 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
34865 ID3D12GraphicsCommandList9 * This,
34866 _In_ UINT IndexCountPerInstance,
34867 _In_ UINT InstanceCount,
34868 _In_ UINT StartIndexLocation,
34869 _In_ INT BaseVertexLocation,
34870 _In_ UINT StartInstanceLocation);
34871
34872 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
34873 void ( STDMETHODCALLTYPE *Dispatch )(
34874 ID3D12GraphicsCommandList9 * This,
34875 _In_ UINT ThreadGroupCountX,
34876 _In_ UINT ThreadGroupCountY,
34877 _In_ UINT ThreadGroupCountZ);
34878
34879 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
34880 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
34881 ID3D12GraphicsCommandList9 * This,
34882 _In_ ID3D12Resource *pDstBuffer,
34883 UINT64 DstOffset,
34884 _In_ ID3D12Resource *pSrcBuffer,
34885 UINT64 SrcOffset,
34886 UINT64 NumBytes);
34887
34888 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
34889 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
34890 ID3D12GraphicsCommandList9 * This,
34891 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
34892 UINT DstX,
34893 UINT DstY,
34894 UINT DstZ,
34895 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
34896 _In_opt_ const D3D12_BOX *pSrcBox);
34897
34898 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
34899 void ( STDMETHODCALLTYPE *CopyResource )(
34900 ID3D12GraphicsCommandList9 * This,
34901 _In_ ID3D12Resource *pDstResource,
34902 _In_ ID3D12Resource *pSrcResource);
34903
34904 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
34905 void ( STDMETHODCALLTYPE *CopyTiles )(
34906 ID3D12GraphicsCommandList9 * This,
34907 _In_ ID3D12Resource *pTiledResource,
34908 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
34909 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
34910 _In_ ID3D12Resource *pBuffer,
34911 UINT64 BufferStartOffsetInBytes,
34912 D3D12_TILE_COPY_FLAGS Flags);
34913
34914 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
34915 void ( STDMETHODCALLTYPE *ResolveSubresource )(
34916 ID3D12GraphicsCommandList9 * This,
34917 _In_ ID3D12Resource *pDstResource,
34918 _In_ UINT DstSubresource,
34919 _In_ ID3D12Resource *pSrcResource,
34920 _In_ UINT SrcSubresource,
34921 _In_ DXGI_FORMAT Format);
34922
34923 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
34924 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
34925 ID3D12GraphicsCommandList9 * This,
34926 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
34927
34928 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
34929 void ( STDMETHODCALLTYPE *RSSetViewports )(
34930 ID3D12GraphicsCommandList9 * This,
34931 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
34932 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
34933
34934 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
34935 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
34936 ID3D12GraphicsCommandList9 * This,
34937 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
34938 _In_reads_( NumRects) const D3D12_RECT *pRects);
34939
34940 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
34941 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
34942 ID3D12GraphicsCommandList9 * This,
34943 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
34944
34945 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
34946 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
34947 ID3D12GraphicsCommandList9 * This,
34948 _In_ UINT StencilRef);
34949
34950 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
34951 void ( STDMETHODCALLTYPE *SetPipelineState )(
34952 ID3D12GraphicsCommandList9 * This,
34953 _In_ ID3D12PipelineState *pPipelineState);
34954
34955 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
34956 void ( STDMETHODCALLTYPE *ResourceBarrier )(
34957 ID3D12GraphicsCommandList9 * This,
34958 _In_ UINT NumBarriers,
34959 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
34960
34961 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
34962 void ( STDMETHODCALLTYPE *ExecuteBundle )(
34963 ID3D12GraphicsCommandList9 * This,
34964 _In_ ID3D12GraphicsCommandList *pCommandList);
34965
34966 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
34967 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
34968 ID3D12GraphicsCommandList9 * This,
34969 _In_ UINT NumDescriptorHeaps,
34970 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
34971
34972 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
34973 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
34974 ID3D12GraphicsCommandList9 * This,
34975 _In_opt_ ID3D12RootSignature *pRootSignature);
34976
34977 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
34978 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
34979 ID3D12GraphicsCommandList9 * This,
34980 _In_opt_ ID3D12RootSignature *pRootSignature);
34981
34982 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
34983 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
34984 ID3D12GraphicsCommandList9 * This,
34985 _In_ UINT RootParameterIndex,
34986 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34987
34988 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
34989 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
34990 ID3D12GraphicsCommandList9 * This,
34991 _In_ UINT RootParameterIndex,
34992 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
34993
34994 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
34995 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
34996 ID3D12GraphicsCommandList9 * This,
34997 _In_ UINT RootParameterIndex,
34998 _In_ UINT SrcData,
34999 _In_ UINT DestOffsetIn32BitValues);
35000
35001 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35002 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35003 ID3D12GraphicsCommandList9 * This,
35004 _In_ UINT RootParameterIndex,
35005 _In_ UINT SrcData,
35006 _In_ UINT DestOffsetIn32BitValues);
35007
35008 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35009 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35010 ID3D12GraphicsCommandList9 * This,
35011 _In_ UINT RootParameterIndex,
35012 _In_ UINT Num32BitValuesToSet,
35013 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35014 _In_ UINT DestOffsetIn32BitValues);
35015
35016 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35017 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35018 ID3D12GraphicsCommandList9 * This,
35019 _In_ UINT RootParameterIndex,
35020 _In_ UINT Num32BitValuesToSet,
35021 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35022 _In_ UINT DestOffsetIn32BitValues);
35023
35024 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35025 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35026 ID3D12GraphicsCommandList9 * This,
35027 _In_ UINT RootParameterIndex,
35028 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35029
35030 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35031 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35032 ID3D12GraphicsCommandList9 * This,
35033 _In_ UINT RootParameterIndex,
35034 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35035
35036 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35037 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35038 ID3D12GraphicsCommandList9 * This,
35039 _In_ UINT RootParameterIndex,
35040 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35041
35042 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35043 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35044 ID3D12GraphicsCommandList9 * This,
35045 _In_ UINT RootParameterIndex,
35046 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35047
35048 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35049 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35050 ID3D12GraphicsCommandList9 * This,
35051 _In_ UINT RootParameterIndex,
35052 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35053
35054 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35055 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35056 ID3D12GraphicsCommandList9 * This,
35057 _In_ UINT RootParameterIndex,
35058 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35059
35060 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35061 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35062 ID3D12GraphicsCommandList9 * This,
35063 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35064
35065 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35066 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35067 ID3D12GraphicsCommandList9 * This,
35068 _In_ UINT StartSlot,
35069 _In_ UINT NumViews,
35070 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35071
35072 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35073 void ( STDMETHODCALLTYPE *SOSetTargets )(
35074 ID3D12GraphicsCommandList9 * This,
35075 _In_ UINT StartSlot,
35076 _In_ UINT NumViews,
35077 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35078
35079 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35080 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35081 ID3D12GraphicsCommandList9 * This,
35082 _In_ UINT NumRenderTargetDescriptors,
35083 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35084 _In_ BOOL RTsSingleHandleToDescriptorRange,
35085 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35086
35087 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35088 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35089 ID3D12GraphicsCommandList9 * This,
35090 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35091 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35092 _In_ FLOAT Depth,
35093 _In_ UINT8 Stencil,
35094 _In_ UINT NumRects,
35095 _In_reads_(NumRects) const D3D12_RECT *pRects);
35096
35097 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35098 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35099 ID3D12GraphicsCommandList9 * This,
35100 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35101 _In_ const FLOAT ColorRGBA[ 4 ],
35102 _In_ UINT NumRects,
35103 _In_reads_(NumRects) const D3D12_RECT *pRects);
35104
35105 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35106 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35107 ID3D12GraphicsCommandList9 * This,
35108 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35109 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35110 _In_ ID3D12Resource *pResource,
35111 _In_ const UINT Values[ 4 ],
35112 _In_ UINT NumRects,
35113 _In_reads_(NumRects) const D3D12_RECT *pRects);
35114
35115 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
35116 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
35117 ID3D12GraphicsCommandList9 * This,
35118 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35119 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35120 _In_ ID3D12Resource *pResource,
35121 _In_ const FLOAT Values[ 4 ],
35122 _In_ UINT NumRects,
35123 _In_reads_(NumRects) const D3D12_RECT *pRects);
35124
35125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
35126 void ( STDMETHODCALLTYPE *DiscardResource )(
35127 ID3D12GraphicsCommandList9 * This,
35128 _In_ ID3D12Resource *pResource,
35129 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
35130
35131 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
35132 void ( STDMETHODCALLTYPE *BeginQuery )(
35133 ID3D12GraphicsCommandList9 * This,
35134 _In_ ID3D12QueryHeap *pQueryHeap,
35135 _In_ D3D12_QUERY_TYPE Type,
35136 _In_ UINT Index);
35137
35138 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
35139 void ( STDMETHODCALLTYPE *EndQuery )(
35140 ID3D12GraphicsCommandList9 * This,
35141 _In_ ID3D12QueryHeap *pQueryHeap,
35142 _In_ D3D12_QUERY_TYPE Type,
35143 _In_ UINT Index);
35144
35145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
35146 void ( STDMETHODCALLTYPE *ResolveQueryData )(
35147 ID3D12GraphicsCommandList9 * This,
35148 _In_ ID3D12QueryHeap *pQueryHeap,
35149 _In_ D3D12_QUERY_TYPE Type,
35150 _In_ UINT StartIndex,
35151 _In_ UINT NumQueries,
35152 _In_ ID3D12Resource *pDestinationBuffer,
35153 _In_ UINT64 AlignedDestinationBufferOffset);
35154
35155 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
35156 void ( STDMETHODCALLTYPE *SetPredication )(
35157 ID3D12GraphicsCommandList9 * This,
35158 _In_opt_ ID3D12Resource *pBuffer,
35159 _In_ UINT64 AlignedBufferOffset,
35160 _In_ D3D12_PREDICATION_OP Operation);
35161
35162 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
35163 void ( STDMETHODCALLTYPE *SetMarker )(
35164 ID3D12GraphicsCommandList9 * This,
35165 UINT Metadata,
35166 _In_reads_bytes_opt_(Size) const void *pData,
35167 UINT Size);
35168
35169 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
35170 void ( STDMETHODCALLTYPE *BeginEvent )(
35171 ID3D12GraphicsCommandList9 * This,
35172 UINT Metadata,
35173 _In_reads_bytes_opt_(Size) const void *pData,
35174 UINT Size);
35175
35176 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
35177 void ( STDMETHODCALLTYPE *EndEvent )(
35178 ID3D12GraphicsCommandList9 * This);
35179
35180 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
35181 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
35182 ID3D12GraphicsCommandList9 * This,
35183 _In_ ID3D12CommandSignature *pCommandSignature,
35184 _In_ UINT MaxCommandCount,
35185 _In_ ID3D12Resource *pArgumentBuffer,
35186 _In_ UINT64 ArgumentBufferOffset,
35187 _In_opt_ ID3D12Resource *pCountBuffer,
35188 _In_ UINT64 CountBufferOffset);
35189
35190 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
35191 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
35192 ID3D12GraphicsCommandList9 * This,
35193 _In_ ID3D12Resource *pDstBuffer,
35194 UINT64 DstOffset,
35195 _In_ ID3D12Resource *pSrcBuffer,
35196 UINT64 SrcOffset,
35197 UINT Dependencies,
35198 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35199 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35200
35201 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
35202 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
35203 ID3D12GraphicsCommandList9 * This,
35204 _In_ ID3D12Resource *pDstBuffer,
35205 UINT64 DstOffset,
35206 _In_ ID3D12Resource *pSrcBuffer,
35207 UINT64 SrcOffset,
35208 UINT Dependencies,
35209 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
35210 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
35211
35212 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
35213 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
35214 ID3D12GraphicsCommandList9 * This,
35215 _In_ FLOAT Min,
35216 _In_ FLOAT Max);
35217
35218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
35219 void ( STDMETHODCALLTYPE *SetSamplePositions )(
35220 ID3D12GraphicsCommandList9 * This,
35221 _In_ UINT NumSamplesPerPixel,
35222 _In_ UINT NumPixels,
35223 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
35224
35225 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
35226 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
35227 ID3D12GraphicsCommandList9 * This,
35228 _In_ ID3D12Resource *pDstResource,
35229 _In_ UINT DstSubresource,
35230 _In_ UINT DstX,
35231 _In_ UINT DstY,
35232 _In_ ID3D12Resource *pSrcResource,
35233 _In_ UINT SrcSubresource,
35234 _In_opt_ D3D12_RECT *pSrcRect,
35235 _In_ DXGI_FORMAT Format,
35236 _In_ D3D12_RESOLVE_MODE ResolveMode);
35237
35238 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
35239 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
35240 ID3D12GraphicsCommandList9 * This,
35241 _In_ UINT Mask);
35242
35243 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
35244 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
35245 ID3D12GraphicsCommandList9 * This,
35246 UINT Count,
35247 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
35248 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
35249
35250 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
35251 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
35252 ID3D12GraphicsCommandList9 * This,
35253 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
35254
35255 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
35256 void ( STDMETHODCALLTYPE *BeginRenderPass )(
35257 ID3D12GraphicsCommandList9 * This,
35258 _In_ UINT NumRenderTargets,
35259 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
35260 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
35261 D3D12_RENDER_PASS_FLAGS Flags);
35262
35263 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
35264 void ( STDMETHODCALLTYPE *EndRenderPass )(
35265 ID3D12GraphicsCommandList9 * This);
35266
35267 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
35268 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
35269 ID3D12GraphicsCommandList9 * This,
35270 _In_ ID3D12MetaCommand *pMetaCommand,
35271 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
35272 _In_ SIZE_T InitializationParametersDataSizeInBytes);
35273
35274 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
35275 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
35276 ID3D12GraphicsCommandList9 * This,
35277 _In_ ID3D12MetaCommand *pMetaCommand,
35278 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
35279 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
35280
35281 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
35282 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
35283 ID3D12GraphicsCommandList9 * This,
35284 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
35285 _In_ UINT NumPostbuildInfoDescs,
35286 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
35287
35288 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
35289 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
35290 ID3D12GraphicsCommandList9 * This,
35291 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
35292 _In_ UINT NumSourceAccelerationStructures,
35293 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
35294
35295 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
35296 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
35297 ID3D12GraphicsCommandList9 * This,
35298 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
35299 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
35300 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
35301
35302 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
35303 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
35304 ID3D12GraphicsCommandList9 * This,
35305 _In_ ID3D12StateObject *pStateObject);
35306
35307 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
35308 void ( STDMETHODCALLTYPE *DispatchRays )(
35309 ID3D12GraphicsCommandList9 * This,
35310 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
35311
35312 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
35313 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
35314 ID3D12GraphicsCommandList9 * This,
35315 _In_ D3D12_SHADING_RATE baseShadingRate,
35316 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
35317
35318 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
35319 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
35320 ID3D12GraphicsCommandList9 * This,
35321 _In_opt_ ID3D12Resource *shadingRateImage);
35322
35323 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
35324 void ( STDMETHODCALLTYPE *DispatchMesh )(
35325 ID3D12GraphicsCommandList9 * This,
35326 _In_ UINT ThreadGroupCountX,
35327 _In_ UINT ThreadGroupCountY,
35328 _In_ UINT ThreadGroupCountZ);
35329
35330 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
35331 void ( STDMETHODCALLTYPE *Barrier )(
35332 ID3D12GraphicsCommandList9 * This,
35333 UINT32 NumBarrierGroups,
35334 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
35335
35336 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
35337 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
35338 ID3D12GraphicsCommandList9 * This,
35339 _In_ UINT FrontStencilRef,
35340 _In_ UINT BackStencilRef);
35341
35342 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
35343 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
35344 ID3D12GraphicsCommandList9 * This,
35345 _In_ FLOAT DepthBias,
35346 _In_ FLOAT DepthBiasClamp,
35347 _In_ FLOAT SlopeScaledDepthBias);
35348
35349 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
35350 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
35351 ID3D12GraphicsCommandList9 * This,
35352 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
35353
35354 END_INTERFACE
35355 } ID3D12GraphicsCommandList9Vtbl;
35356
35357 interface ID3D12GraphicsCommandList9
35358 {
35359 CONST_VTBL struct ID3D12GraphicsCommandList9Vtbl *lpVtbl;
35360 };
35361
35362
35363
35364#ifdef COBJMACROS
35365
35366
35367#define ID3D12GraphicsCommandList9_QueryInterface(This,riid,ppvObject) \
35368 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
35369
35370#define ID3D12GraphicsCommandList9_AddRef(This) \
35371 ( (This)->lpVtbl -> AddRef(This) )
35372
35373#define ID3D12GraphicsCommandList9_Release(This) \
35374 ( (This)->lpVtbl -> Release(This) )
35375
35376
35377#define ID3D12GraphicsCommandList9_GetPrivateData(This,guid,pDataSize,pData) \
35378 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
35379
35380#define ID3D12GraphicsCommandList9_SetPrivateData(This,guid,DataSize,pData) \
35381 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
35382
35383#define ID3D12GraphicsCommandList9_SetPrivateDataInterface(This,guid,pData) \
35384 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
35385
35386#define ID3D12GraphicsCommandList9_SetName(This,Name) \
35387 ( (This)->lpVtbl -> SetName(This,Name) )
35388
35389
35390#define ID3D12GraphicsCommandList9_GetDevice(This,riid,ppvDevice) \
35391 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
35392
35393
35394#define ID3D12GraphicsCommandList9_GetType(This) \
35395 ( (This)->lpVtbl -> GetType(This) )
35396
35397
35398#define ID3D12GraphicsCommandList9_Close(This) \
35399 ( (This)->lpVtbl -> Close(This) )
35400
35401#define ID3D12GraphicsCommandList9_Reset(This,pAllocator,pInitialState) \
35402 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
35403
35404#define ID3D12GraphicsCommandList9_ClearState(This,pPipelineState) \
35405 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
35406
35407#define ID3D12GraphicsCommandList9_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
35408 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
35409
35410#define ID3D12GraphicsCommandList9_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
35411 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
35412
35413#define ID3D12GraphicsCommandList9_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35414 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35415
35416#define ID3D12GraphicsCommandList9_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
35417 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
35418
35419#define ID3D12GraphicsCommandList9_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
35420 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
35421
35422#define ID3D12GraphicsCommandList9_CopyResource(This,pDstResource,pSrcResource) \
35423 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
35424
35425#define ID3D12GraphicsCommandList9_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
35426 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
35427
35428#define ID3D12GraphicsCommandList9_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
35429 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
35430
35431#define ID3D12GraphicsCommandList9_IASetPrimitiveTopology(This,PrimitiveTopology) \
35432 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
35433
35434#define ID3D12GraphicsCommandList9_RSSetViewports(This,NumViewports,pViewports) \
35435 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
35436
35437#define ID3D12GraphicsCommandList9_RSSetScissorRects(This,NumRects,pRects) \
35438 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
35439
35440#define ID3D12GraphicsCommandList9_OMSetBlendFactor(This,BlendFactor) \
35441 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
35442
35443#define ID3D12GraphicsCommandList9_OMSetStencilRef(This,StencilRef) \
35444 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
35445
35446#define ID3D12GraphicsCommandList9_SetPipelineState(This,pPipelineState) \
35447 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
35448
35449#define ID3D12GraphicsCommandList9_ResourceBarrier(This,NumBarriers,pBarriers) \
35450 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
35451
35452#define ID3D12GraphicsCommandList9_ExecuteBundle(This,pCommandList) \
35453 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
35454
35455#define ID3D12GraphicsCommandList9_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
35456 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
35457
35458#define ID3D12GraphicsCommandList9_SetComputeRootSignature(This,pRootSignature) \
35459 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
35460
35461#define ID3D12GraphicsCommandList9_SetGraphicsRootSignature(This,pRootSignature) \
35462 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
35463
35464#define ID3D12GraphicsCommandList9_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35465 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35466
35467#define ID3D12GraphicsCommandList9_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
35468 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
35469
35470#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35471 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35472
35473#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
35474 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
35475
35476#define ID3D12GraphicsCommandList9_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35477 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35478
35479#define ID3D12GraphicsCommandList9_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
35480 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
35481
35482#define ID3D12GraphicsCommandList9_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35483 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35484
35485#define ID3D12GraphicsCommandList9_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
35486 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
35487
35488#define ID3D12GraphicsCommandList9_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35489 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35490
35491#define ID3D12GraphicsCommandList9_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
35492 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
35493
35494#define ID3D12GraphicsCommandList9_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35495 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35496
35497#define ID3D12GraphicsCommandList9_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
35498 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
35499
35500#define ID3D12GraphicsCommandList9_IASetIndexBuffer(This,pView) \
35501 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
35502
35503#define ID3D12GraphicsCommandList9_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
35504 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
35505
35506#define ID3D12GraphicsCommandList9_SOSetTargets(This,StartSlot,NumViews,pViews) \
35507 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
35508
35509#define ID3D12GraphicsCommandList9_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
35510 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
35511
35512#define ID3D12GraphicsCommandList9_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
35513 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
35514
35515#define ID3D12GraphicsCommandList9_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
35516 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
35517
35518#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35519 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35520
35521#define ID3D12GraphicsCommandList9_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
35522 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
35523
35524#define ID3D12GraphicsCommandList9_DiscardResource(This,pResource,pRegion) \
35525 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
35526
35527#define ID3D12GraphicsCommandList9_BeginQuery(This,pQueryHeap,Type,Index) \
35528 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
35529
35530#define ID3D12GraphicsCommandList9_EndQuery(This,pQueryHeap,Type,Index) \
35531 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
35532
35533#define ID3D12GraphicsCommandList9_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
35534 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
35535
35536#define ID3D12GraphicsCommandList9_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
35537 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
35538
35539#define ID3D12GraphicsCommandList9_SetMarker(This,Metadata,pData,Size) \
35540 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
35541
35542#define ID3D12GraphicsCommandList9_BeginEvent(This,Metadata,pData,Size) \
35543 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
35544
35545#define ID3D12GraphicsCommandList9_EndEvent(This) \
35546 ( (This)->lpVtbl -> EndEvent(This) )
35547
35548#define ID3D12GraphicsCommandList9_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
35549 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
35550
35551
35552#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35553 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35554
35555#define ID3D12GraphicsCommandList9_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
35556 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
35557
35558#define ID3D12GraphicsCommandList9_OMSetDepthBounds(This,Min,Max) \
35559 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
35560
35561#define ID3D12GraphicsCommandList9_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
35562 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
35563
35564#define ID3D12GraphicsCommandList9_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
35565 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
35566
35567#define ID3D12GraphicsCommandList9_SetViewInstanceMask(This,Mask) \
35568 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
35569
35570
35571#define ID3D12GraphicsCommandList9_WriteBufferImmediate(This,Count,pParams,pModes) \
35572 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
35573
35574
35575#define ID3D12GraphicsCommandList9_SetProtectedResourceSession(This,pProtectedResourceSession) \
35576 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
35577
35578
35579#define ID3D12GraphicsCommandList9_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
35580 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
35581
35582#define ID3D12GraphicsCommandList9_EndRenderPass(This) \
35583 ( (This)->lpVtbl -> EndRenderPass(This) )
35584
35585#define ID3D12GraphicsCommandList9_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
35586 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
35587
35588#define ID3D12GraphicsCommandList9_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
35589 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
35590
35591#define ID3D12GraphicsCommandList9_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
35592 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
35593
35594#define ID3D12GraphicsCommandList9_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
35595 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
35596
35597#define ID3D12GraphicsCommandList9_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
35598 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
35599
35600#define ID3D12GraphicsCommandList9_SetPipelineState1(This,pStateObject) \
35601 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
35602
35603#define ID3D12GraphicsCommandList9_DispatchRays(This,pDesc) \
35604 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
35605
35606
35607#define ID3D12GraphicsCommandList9_RSSetShadingRate(This,baseShadingRate,combiners) \
35608 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
35609
35610#define ID3D12GraphicsCommandList9_RSSetShadingRateImage(This,shadingRateImage) \
35611 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
35612
35613
35614#define ID3D12GraphicsCommandList9_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
35615 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
35616
35617
35618#define ID3D12GraphicsCommandList9_Barrier(This,NumBarrierGroups,pBarrierGroups) \
35619 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
35620
35621
35622#define ID3D12GraphicsCommandList9_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
35623 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
35624
35625
35626#define ID3D12GraphicsCommandList9_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
35627 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
35628
35629#define ID3D12GraphicsCommandList9_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
35630 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
35631
35632#endif /* COBJMACROS */
35633
35634
35635#endif /* C style interface */
35636
35637
35638
35639
35640#endif /* __ID3D12GraphicsCommandList9_INTERFACE_DEFINED__ */
35641
35642
35643#ifndef __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35644#define __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__
35645
35646/* interface ID3D12GraphicsCommandList10 */
35647/* [unique][local][object][uuid] */
35648
35649
35650EXTERN_C const IID IID_ID3D12GraphicsCommandList10;
35651
35652#if defined(__cplusplus) && !defined(CINTERFACE)
35653
35654 MIDL_INTERFACE("7013c015-d161-4b63-a08c-238552dd8acc")
35655 ID3D12GraphicsCommandList10 : public ID3D12GraphicsCommandList9
35656 {
35657 public:
35658 virtual void STDMETHODCALLTYPE SetProgram(
35659 _In_ const D3D12_SET_PROGRAM_DESC *pDesc) = 0;
35660
35661 virtual void STDMETHODCALLTYPE DispatchGraph(
35662 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc) = 0;
35663
35664 };
35665
35666
35667#else /* C style interface */
35668
35669 typedef struct ID3D12GraphicsCommandList10Vtbl
35670 {
35671 BEGIN_INTERFACE
35672
35673 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
35674 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
35675 ID3D12GraphicsCommandList10 * This,
35676 REFIID riid,
35677 _COM_Outptr_ void **ppvObject);
35678
35679 DECLSPEC_XFGVIRT(IUnknown, AddRef)
35680 ULONG ( STDMETHODCALLTYPE *AddRef )(
35681 ID3D12GraphicsCommandList10 * This);
35682
35683 DECLSPEC_XFGVIRT(IUnknown, Release)
35684 ULONG ( STDMETHODCALLTYPE *Release )(
35685 ID3D12GraphicsCommandList10 * This);
35686
35687 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
35688 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
35689 ID3D12GraphicsCommandList10 * This,
35690 _In_ REFGUID guid,
35691 _Inout_ UINT *pDataSize,
35692 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
35693
35694 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
35695 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
35696 ID3D12GraphicsCommandList10 * This,
35697 _In_ REFGUID guid,
35698 _In_ UINT DataSize,
35699 _In_reads_bytes_opt_( DataSize ) const void *pData);
35700
35701 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
35702 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
35703 ID3D12GraphicsCommandList10 * This,
35704 _In_ REFGUID guid,
35705 _In_opt_ const IUnknown *pData);
35706
35707 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
35708 HRESULT ( STDMETHODCALLTYPE *SetName )(
35709 ID3D12GraphicsCommandList10 * This,
35710 _In_z_ LPCWSTR Name);
35711
35712 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
35713 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
35714 ID3D12GraphicsCommandList10 * This,
35715 REFIID riid,
35716 _COM_Outptr_opt_ void **ppvDevice);
35717
35718 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
35719 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
35720 ID3D12GraphicsCommandList10 * This);
35721
35722 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Close)
35723 HRESULT ( STDMETHODCALLTYPE *Close )(
35724 ID3D12GraphicsCommandList10 * This);
35725
35726 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Reset)
35727 HRESULT ( STDMETHODCALLTYPE *Reset )(
35728 ID3D12GraphicsCommandList10 * This,
35729 _In_ ID3D12CommandAllocator *pAllocator,
35730 _In_opt_ ID3D12PipelineState *pInitialState);
35731
35732 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearState)
35733 void ( STDMETHODCALLTYPE *ClearState )(
35734 ID3D12GraphicsCommandList10 * This,
35735 _In_opt_ ID3D12PipelineState *pPipelineState);
35736
35737 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawInstanced)
35738 void ( STDMETHODCALLTYPE *DrawInstanced )(
35739 ID3D12GraphicsCommandList10 * This,
35740 _In_ UINT VertexCountPerInstance,
35741 _In_ UINT InstanceCount,
35742 _In_ UINT StartVertexLocation,
35743 _In_ UINT StartInstanceLocation);
35744
35745 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DrawIndexedInstanced)
35746 void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
35747 ID3D12GraphicsCommandList10 * This,
35748 _In_ UINT IndexCountPerInstance,
35749 _In_ UINT InstanceCount,
35750 _In_ UINT StartIndexLocation,
35751 _In_ INT BaseVertexLocation,
35752 _In_ UINT StartInstanceLocation);
35753
35754 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, Dispatch)
35755 void ( STDMETHODCALLTYPE *Dispatch )(
35756 ID3D12GraphicsCommandList10 * This,
35757 _In_ UINT ThreadGroupCountX,
35758 _In_ UINT ThreadGroupCountY,
35759 _In_ UINT ThreadGroupCountZ);
35760
35761 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyBufferRegion)
35762 void ( STDMETHODCALLTYPE *CopyBufferRegion )(
35763 ID3D12GraphicsCommandList10 * This,
35764 _In_ ID3D12Resource *pDstBuffer,
35765 UINT64 DstOffset,
35766 _In_ ID3D12Resource *pSrcBuffer,
35767 UINT64 SrcOffset,
35768 UINT64 NumBytes);
35769
35770 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTextureRegion)
35771 void ( STDMETHODCALLTYPE *CopyTextureRegion )(
35772 ID3D12GraphicsCommandList10 * This,
35773 _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
35774 UINT DstX,
35775 UINT DstY,
35776 UINT DstZ,
35777 _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
35778 _In_opt_ const D3D12_BOX *pSrcBox);
35779
35780 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyResource)
35781 void ( STDMETHODCALLTYPE *CopyResource )(
35782 ID3D12GraphicsCommandList10 * This,
35783 _In_ ID3D12Resource *pDstResource,
35784 _In_ ID3D12Resource *pSrcResource);
35785
35786 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, CopyTiles)
35787 void ( STDMETHODCALLTYPE *CopyTiles )(
35788 ID3D12GraphicsCommandList10 * This,
35789 _In_ ID3D12Resource *pTiledResource,
35790 _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
35791 _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
35792 _In_ ID3D12Resource *pBuffer,
35793 UINT64 BufferStartOffsetInBytes,
35794 D3D12_TILE_COPY_FLAGS Flags);
35795
35796 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveSubresource)
35797 void ( STDMETHODCALLTYPE *ResolveSubresource )(
35798 ID3D12GraphicsCommandList10 * This,
35799 _In_ ID3D12Resource *pDstResource,
35800 _In_ UINT DstSubresource,
35801 _In_ ID3D12Resource *pSrcResource,
35802 _In_ UINT SrcSubresource,
35803 _In_ DXGI_FORMAT Format);
35804
35805 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetPrimitiveTopology)
35806 void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
35807 ID3D12GraphicsCommandList10 * This,
35808 _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
35809
35810 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetViewports)
35811 void ( STDMETHODCALLTYPE *RSSetViewports )(
35812 ID3D12GraphicsCommandList10 * This,
35813 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
35814 _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
35815
35816 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, RSSetScissorRects)
35817 void ( STDMETHODCALLTYPE *RSSetScissorRects )(
35818 ID3D12GraphicsCommandList10 * This,
35819 _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
35820 _In_reads_( NumRects) const D3D12_RECT *pRects);
35821
35822 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetBlendFactor)
35823 void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
35824 ID3D12GraphicsCommandList10 * This,
35825 _In_reads_opt_(4) const FLOAT BlendFactor[ 4 ]);
35826
35827 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetStencilRef)
35828 void ( STDMETHODCALLTYPE *OMSetStencilRef )(
35829 ID3D12GraphicsCommandList10 * This,
35830 _In_ UINT StencilRef);
35831
35832 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPipelineState)
35833 void ( STDMETHODCALLTYPE *SetPipelineState )(
35834 ID3D12GraphicsCommandList10 * This,
35835 _In_ ID3D12PipelineState *pPipelineState);
35836
35837 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResourceBarrier)
35838 void ( STDMETHODCALLTYPE *ResourceBarrier )(
35839 ID3D12GraphicsCommandList10 * This,
35840 _In_ UINT NumBarriers,
35841 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
35842
35843 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteBundle)
35844 void ( STDMETHODCALLTYPE *ExecuteBundle )(
35845 ID3D12GraphicsCommandList10 * This,
35846 _In_ ID3D12GraphicsCommandList *pCommandList);
35847
35848 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetDescriptorHeaps)
35849 void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
35850 ID3D12GraphicsCommandList10 * This,
35851 _In_ UINT NumDescriptorHeaps,
35852 _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
35853
35854 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootSignature)
35855 void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
35856 ID3D12GraphicsCommandList10 * This,
35857 _In_opt_ ID3D12RootSignature *pRootSignature);
35858
35859 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootSignature)
35860 void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
35861 ID3D12GraphicsCommandList10 * This,
35862 _In_opt_ ID3D12RootSignature *pRootSignature);
35863
35864 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootDescriptorTable)
35865 void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
35866 ID3D12GraphicsCommandList10 * This,
35867 _In_ UINT RootParameterIndex,
35868 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35869
35870 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootDescriptorTable)
35871 void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
35872 ID3D12GraphicsCommandList10 * This,
35873 _In_ UINT RootParameterIndex,
35874 _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
35875
35876 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstant)
35877 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
35878 ID3D12GraphicsCommandList10 * This,
35879 _In_ UINT RootParameterIndex,
35880 _In_ UINT SrcData,
35881 _In_ UINT DestOffsetIn32BitValues);
35882
35883 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstant)
35884 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
35885 ID3D12GraphicsCommandList10 * This,
35886 _In_ UINT RootParameterIndex,
35887 _In_ UINT SrcData,
35888 _In_ UINT DestOffsetIn32BitValues);
35889
35890 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRoot32BitConstants)
35891 void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
35892 ID3D12GraphicsCommandList10 * This,
35893 _In_ UINT RootParameterIndex,
35894 _In_ UINT Num32BitValuesToSet,
35895 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35896 _In_ UINT DestOffsetIn32BitValues);
35897
35898 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRoot32BitConstants)
35899 void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
35900 ID3D12GraphicsCommandList10 * This,
35901 _In_ UINT RootParameterIndex,
35902 _In_ UINT Num32BitValuesToSet,
35903 _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
35904 _In_ UINT DestOffsetIn32BitValues);
35905
35906 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootConstantBufferView)
35907 void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
35908 ID3D12GraphicsCommandList10 * This,
35909 _In_ UINT RootParameterIndex,
35910 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35911
35912 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootConstantBufferView)
35913 void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
35914 ID3D12GraphicsCommandList10 * This,
35915 _In_ UINT RootParameterIndex,
35916 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35917
35918 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootShaderResourceView)
35919 void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
35920 ID3D12GraphicsCommandList10 * This,
35921 _In_ UINT RootParameterIndex,
35922 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35923
35924 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootShaderResourceView)
35925 void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
35926 ID3D12GraphicsCommandList10 * This,
35927 _In_ UINT RootParameterIndex,
35928 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35929
35930 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetComputeRootUnorderedAccessView)
35931 void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
35932 ID3D12GraphicsCommandList10 * This,
35933 _In_ UINT RootParameterIndex,
35934 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35935
35936 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetGraphicsRootUnorderedAccessView)
35937 void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
35938 ID3D12GraphicsCommandList10 * This,
35939 _In_ UINT RootParameterIndex,
35940 _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
35941
35942 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetIndexBuffer)
35943 void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
35944 ID3D12GraphicsCommandList10 * This,
35945 _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
35946
35947 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, IASetVertexBuffers)
35948 void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
35949 ID3D12GraphicsCommandList10 * This,
35950 _In_ UINT StartSlot,
35951 _In_ UINT NumViews,
35952 _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
35953
35954 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SOSetTargets)
35955 void ( STDMETHODCALLTYPE *SOSetTargets )(
35956 ID3D12GraphicsCommandList10 * This,
35957 _In_ UINT StartSlot,
35958 _In_ UINT NumViews,
35959 _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
35960
35961 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, OMSetRenderTargets)
35962 void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
35963 ID3D12GraphicsCommandList10 * This,
35964 _In_ UINT NumRenderTargetDescriptors,
35965 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
35966 _In_ BOOL RTsSingleHandleToDescriptorRange,
35967 _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
35968
35969 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearDepthStencilView)
35970 void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
35971 ID3D12GraphicsCommandList10 * This,
35972 _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
35973 _In_ D3D12_CLEAR_FLAGS ClearFlags,
35974 _In_ FLOAT Depth,
35975 _In_ UINT8 Stencil,
35976 _In_ UINT NumRects,
35977 _In_reads_(NumRects) const D3D12_RECT *pRects);
35978
35979 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearRenderTargetView)
35980 void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
35981 ID3D12GraphicsCommandList10 * This,
35982 _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
35983 _In_ const FLOAT ColorRGBA[ 4 ],
35984 _In_ UINT NumRects,
35985 _In_reads_(NumRects) const D3D12_RECT *pRects);
35986
35987 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewUint)
35988 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
35989 ID3D12GraphicsCommandList10 * This,
35990 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
35991 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
35992 _In_ ID3D12Resource *pResource,
35993 _In_ const UINT Values[ 4 ],
35994 _In_ UINT NumRects,
35995 _In_reads_(NumRects) const D3D12_RECT *pRects);
35996
35997 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ClearUnorderedAccessViewFloat)
35998 void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
35999 ID3D12GraphicsCommandList10 * This,
36000 _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
36001 _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
36002 _In_ ID3D12Resource *pResource,
36003 _In_ const FLOAT Values[ 4 ],
36004 _In_ UINT NumRects,
36005 _In_reads_(NumRects) const D3D12_RECT *pRects);
36006
36007 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, DiscardResource)
36008 void ( STDMETHODCALLTYPE *DiscardResource )(
36009 ID3D12GraphicsCommandList10 * This,
36010 _In_ ID3D12Resource *pResource,
36011 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
36012
36013 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginQuery)
36014 void ( STDMETHODCALLTYPE *BeginQuery )(
36015 ID3D12GraphicsCommandList10 * This,
36016 _In_ ID3D12QueryHeap *pQueryHeap,
36017 _In_ D3D12_QUERY_TYPE Type,
36018 _In_ UINT Index);
36019
36020 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndQuery)
36021 void ( STDMETHODCALLTYPE *EndQuery )(
36022 ID3D12GraphicsCommandList10 * This,
36023 _In_ ID3D12QueryHeap *pQueryHeap,
36024 _In_ D3D12_QUERY_TYPE Type,
36025 _In_ UINT Index);
36026
36027 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ResolveQueryData)
36028 void ( STDMETHODCALLTYPE *ResolveQueryData )(
36029 ID3D12GraphicsCommandList10 * This,
36030 _In_ ID3D12QueryHeap *pQueryHeap,
36031 _In_ D3D12_QUERY_TYPE Type,
36032 _In_ UINT StartIndex,
36033 _In_ UINT NumQueries,
36034 _In_ ID3D12Resource *pDestinationBuffer,
36035 _In_ UINT64 AlignedDestinationBufferOffset);
36036
36037 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetPredication)
36038 void ( STDMETHODCALLTYPE *SetPredication )(
36039 ID3D12GraphicsCommandList10 * This,
36040 _In_opt_ ID3D12Resource *pBuffer,
36041 _In_ UINT64 AlignedBufferOffset,
36042 _In_ D3D12_PREDICATION_OP Operation);
36043
36044 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, SetMarker)
36045 void ( STDMETHODCALLTYPE *SetMarker )(
36046 ID3D12GraphicsCommandList10 * This,
36047 UINT Metadata,
36048 _In_reads_bytes_opt_(Size) const void *pData,
36049 UINT Size);
36050
36051 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, BeginEvent)
36052 void ( STDMETHODCALLTYPE *BeginEvent )(
36053 ID3D12GraphicsCommandList10 * This,
36054 UINT Metadata,
36055 _In_reads_bytes_opt_(Size) const void *pData,
36056 UINT Size);
36057
36058 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, EndEvent)
36059 void ( STDMETHODCALLTYPE *EndEvent )(
36060 ID3D12GraphicsCommandList10 * This);
36061
36062 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList, ExecuteIndirect)
36063 void ( STDMETHODCALLTYPE *ExecuteIndirect )(
36064 ID3D12GraphicsCommandList10 * This,
36065 _In_ ID3D12CommandSignature *pCommandSignature,
36066 _In_ UINT MaxCommandCount,
36067 _In_ ID3D12Resource *pArgumentBuffer,
36068 _In_ UINT64 ArgumentBufferOffset,
36069 _In_opt_ ID3D12Resource *pCountBuffer,
36070 _In_ UINT64 CountBufferOffset);
36071
36072 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT)
36073 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
36074 ID3D12GraphicsCommandList10 * This,
36075 _In_ ID3D12Resource *pDstBuffer,
36076 UINT64 DstOffset,
36077 _In_ ID3D12Resource *pSrcBuffer,
36078 UINT64 SrcOffset,
36079 UINT Dependencies,
36080 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36081 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36082
36083 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, AtomicCopyBufferUINT64)
36084 void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
36085 ID3D12GraphicsCommandList10 * This,
36086 _In_ ID3D12Resource *pDstBuffer,
36087 UINT64 DstOffset,
36088 _In_ ID3D12Resource *pSrcBuffer,
36089 UINT64 SrcOffset,
36090 UINT Dependencies,
36091 _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
36092 _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
36093
36094 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, OMSetDepthBounds)
36095 void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
36096 ID3D12GraphicsCommandList10 * This,
36097 _In_ FLOAT Min,
36098 _In_ FLOAT Max);
36099
36100 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetSamplePositions)
36101 void ( STDMETHODCALLTYPE *SetSamplePositions )(
36102 ID3D12GraphicsCommandList10 * This,
36103 _In_ UINT NumSamplesPerPixel,
36104 _In_ UINT NumPixels,
36105 _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
36106
36107 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, ResolveSubresourceRegion)
36108 void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
36109 ID3D12GraphicsCommandList10 * This,
36110 _In_ ID3D12Resource *pDstResource,
36111 _In_ UINT DstSubresource,
36112 _In_ UINT DstX,
36113 _In_ UINT DstY,
36114 _In_ ID3D12Resource *pSrcResource,
36115 _In_ UINT SrcSubresource,
36116 _In_opt_ D3D12_RECT *pSrcRect,
36117 _In_ DXGI_FORMAT Format,
36118 _In_ D3D12_RESOLVE_MODE ResolveMode);
36119
36120 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList1, SetViewInstanceMask)
36121 void ( STDMETHODCALLTYPE *SetViewInstanceMask )(
36122 ID3D12GraphicsCommandList10 * This,
36123 _In_ UINT Mask);
36124
36125 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList2, WriteBufferImmediate)
36126 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
36127 ID3D12GraphicsCommandList10 * This,
36128 UINT Count,
36129 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
36130 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
36131
36132 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList3, SetProtectedResourceSession)
36133 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
36134 ID3D12GraphicsCommandList10 * This,
36135 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
36136
36137 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BeginRenderPass)
36138 void ( STDMETHODCALLTYPE *BeginRenderPass )(
36139 ID3D12GraphicsCommandList10 * This,
36140 _In_ UINT NumRenderTargets,
36141 _In_reads_opt_(NumRenderTargets) const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets,
36142 _In_opt_ const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil,
36143 D3D12_RENDER_PASS_FLAGS Flags);
36144
36145 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EndRenderPass)
36146 void ( STDMETHODCALLTYPE *EndRenderPass )(
36147 ID3D12GraphicsCommandList10 * This);
36148
36149 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, InitializeMetaCommand)
36150 void ( STDMETHODCALLTYPE *InitializeMetaCommand )(
36151 ID3D12GraphicsCommandList10 * This,
36152 _In_ ID3D12MetaCommand *pMetaCommand,
36153 _In_reads_bytes_opt_(InitializationParametersDataSizeInBytes) const void *pInitializationParametersData,
36154 _In_ SIZE_T InitializationParametersDataSizeInBytes);
36155
36156 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, ExecuteMetaCommand)
36157 void ( STDMETHODCALLTYPE *ExecuteMetaCommand )(
36158 ID3D12GraphicsCommandList10 * This,
36159 _In_ ID3D12MetaCommand *pMetaCommand,
36160 _In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes) const void *pExecutionParametersData,
36161 _In_ SIZE_T ExecutionParametersDataSizeInBytes);
36162
36163 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, BuildRaytracingAccelerationStructure)
36164 void ( STDMETHODCALLTYPE *BuildRaytracingAccelerationStructure )(
36165 ID3D12GraphicsCommandList10 * This,
36166 _In_ const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc,
36167 _In_ UINT NumPostbuildInfoDescs,
36168 _In_reads_opt_(NumPostbuildInfoDescs) const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs);
36169
36170 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, EmitRaytracingAccelerationStructurePostbuildInfo)
36171 void ( STDMETHODCALLTYPE *EmitRaytracingAccelerationStructurePostbuildInfo )(
36172 ID3D12GraphicsCommandList10 * This,
36173 _In_ const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc,
36174 _In_ UINT NumSourceAccelerationStructures,
36175 _In_reads_( NumSourceAccelerationStructures ) const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData);
36176
36177 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, CopyRaytracingAccelerationStructure)
36178 void ( STDMETHODCALLTYPE *CopyRaytracingAccelerationStructure )(
36179 ID3D12GraphicsCommandList10 * This,
36180 _In_ D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
36181 _In_ D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
36182 _In_ D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
36183
36184 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, SetPipelineState1)
36185 void ( STDMETHODCALLTYPE *SetPipelineState1 )(
36186 ID3D12GraphicsCommandList10 * This,
36187 _In_ ID3D12StateObject *pStateObject);
36188
36189 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList4, DispatchRays)
36190 void ( STDMETHODCALLTYPE *DispatchRays )(
36191 ID3D12GraphicsCommandList10 * This,
36192 _In_ const D3D12_DISPATCH_RAYS_DESC *pDesc);
36193
36194 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRate)
36195 void ( STDMETHODCALLTYPE *RSSetShadingRate )(
36196 ID3D12GraphicsCommandList10 * This,
36197 _In_ D3D12_SHADING_RATE baseShadingRate,
36198 _In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT) const D3D12_SHADING_RATE_COMBINER *combiners);
36199
36200 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList5, RSSetShadingRateImage)
36201 void ( STDMETHODCALLTYPE *RSSetShadingRateImage )(
36202 ID3D12GraphicsCommandList10 * This,
36203 _In_opt_ ID3D12Resource *shadingRateImage);
36204
36205 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList6, DispatchMesh)
36206 void ( STDMETHODCALLTYPE *DispatchMesh )(
36207 ID3D12GraphicsCommandList10 * This,
36208 _In_ UINT ThreadGroupCountX,
36209 _In_ UINT ThreadGroupCountY,
36210 _In_ UINT ThreadGroupCountZ);
36211
36212 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList7, Barrier)
36213 void ( STDMETHODCALLTYPE *Barrier )(
36214 ID3D12GraphicsCommandList10 * This,
36215 UINT32 NumBarrierGroups,
36216 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
36217
36218 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList8, OMSetFrontAndBackStencilRef)
36219 void ( STDMETHODCALLTYPE *OMSetFrontAndBackStencilRef )(
36220 ID3D12GraphicsCommandList10 * This,
36221 _In_ UINT FrontStencilRef,
36222 _In_ UINT BackStencilRef);
36223
36224 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, RSSetDepthBias)
36225 void ( STDMETHODCALLTYPE *RSSetDepthBias )(
36226 ID3D12GraphicsCommandList10 * This,
36227 _In_ FLOAT DepthBias,
36228 _In_ FLOAT DepthBiasClamp,
36229 _In_ FLOAT SlopeScaledDepthBias);
36230
36231 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList9, IASetIndexBufferStripCutValue)
36232 void ( STDMETHODCALLTYPE *IASetIndexBufferStripCutValue )(
36233 ID3D12GraphicsCommandList10 * This,
36234 _In_ D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue);
36235
36236 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, SetProgram)
36237 void ( STDMETHODCALLTYPE *SetProgram )(
36238 ID3D12GraphicsCommandList10 * This,
36239 _In_ const D3D12_SET_PROGRAM_DESC *pDesc);
36240
36241 DECLSPEC_XFGVIRT(ID3D12GraphicsCommandList10, DispatchGraph)
36242 void ( STDMETHODCALLTYPE *DispatchGraph )(
36243 ID3D12GraphicsCommandList10 * This,
36244 _In_ const D3D12_DISPATCH_GRAPH_DESC *pDesc);
36245
36246 END_INTERFACE
36247 } ID3D12GraphicsCommandList10Vtbl;
36248
36249 interface ID3D12GraphicsCommandList10
36250 {
36251 CONST_VTBL struct ID3D12GraphicsCommandList10Vtbl *lpVtbl;
36252 };
36253
36254
36255
36256#ifdef COBJMACROS
36257
36258
36259#define ID3D12GraphicsCommandList10_QueryInterface(This,riid,ppvObject) \
36260 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36261
36262#define ID3D12GraphicsCommandList10_AddRef(This) \
36263 ( (This)->lpVtbl -> AddRef(This) )
36264
36265#define ID3D12GraphicsCommandList10_Release(This) \
36266 ( (This)->lpVtbl -> Release(This) )
36267
36268
36269#define ID3D12GraphicsCommandList10_GetPrivateData(This,guid,pDataSize,pData) \
36270 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
36271
36272#define ID3D12GraphicsCommandList10_SetPrivateData(This,guid,DataSize,pData) \
36273 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
36274
36275#define ID3D12GraphicsCommandList10_SetPrivateDataInterface(This,guid,pData) \
36276 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
36277
36278#define ID3D12GraphicsCommandList10_SetName(This,Name) \
36279 ( (This)->lpVtbl -> SetName(This,Name) )
36280
36281
36282#define ID3D12GraphicsCommandList10_GetDevice(This,riid,ppvDevice) \
36283 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
36284
36285
36286#define ID3D12GraphicsCommandList10_GetType(This) \
36287 ( (This)->lpVtbl -> GetType(This) )
36288
36289
36290#define ID3D12GraphicsCommandList10_Close(This) \
36291 ( (This)->lpVtbl -> Close(This) )
36292
36293#define ID3D12GraphicsCommandList10_Reset(This,pAllocator,pInitialState) \
36294 ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
36295
36296#define ID3D12GraphicsCommandList10_ClearState(This,pPipelineState) \
36297 ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
36298
36299#define ID3D12GraphicsCommandList10_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
36300 ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
36301
36302#define ID3D12GraphicsCommandList10_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
36303 ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
36304
36305#define ID3D12GraphicsCommandList10_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36306 ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36307
36308#define ID3D12GraphicsCommandList10_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
36309 ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
36310
36311#define ID3D12GraphicsCommandList10_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
36312 ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
36313
36314#define ID3D12GraphicsCommandList10_CopyResource(This,pDstResource,pSrcResource) \
36315 ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
36316
36317#define ID3D12GraphicsCommandList10_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
36318 ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
36319
36320#define ID3D12GraphicsCommandList10_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
36321 ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
36322
36323#define ID3D12GraphicsCommandList10_IASetPrimitiveTopology(This,PrimitiveTopology) \
36324 ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
36325
36326#define ID3D12GraphicsCommandList10_RSSetViewports(This,NumViewports,pViewports) \
36327 ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
36328
36329#define ID3D12GraphicsCommandList10_RSSetScissorRects(This,NumRects,pRects) \
36330 ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
36331
36332#define ID3D12GraphicsCommandList10_OMSetBlendFactor(This,BlendFactor) \
36333 ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
36334
36335#define ID3D12GraphicsCommandList10_OMSetStencilRef(This,StencilRef) \
36336 ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
36337
36338#define ID3D12GraphicsCommandList10_SetPipelineState(This,pPipelineState) \
36339 ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
36340
36341#define ID3D12GraphicsCommandList10_ResourceBarrier(This,NumBarriers,pBarriers) \
36342 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
36343
36344#define ID3D12GraphicsCommandList10_ExecuteBundle(This,pCommandList) \
36345 ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
36346
36347#define ID3D12GraphicsCommandList10_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
36348 ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
36349
36350#define ID3D12GraphicsCommandList10_SetComputeRootSignature(This,pRootSignature) \
36351 ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
36352
36353#define ID3D12GraphicsCommandList10_SetGraphicsRootSignature(This,pRootSignature) \
36354 ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
36355
36356#define ID3D12GraphicsCommandList10_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36357 ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36358
36359#define ID3D12GraphicsCommandList10_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
36360 ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
36361
36362#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36363 ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36364
36365#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
36366 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
36367
36368#define ID3D12GraphicsCommandList10_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36369 ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36370
36371#define ID3D12GraphicsCommandList10_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
36372 ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
36373
36374#define ID3D12GraphicsCommandList10_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36375 ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36376
36377#define ID3D12GraphicsCommandList10_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
36378 ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
36379
36380#define ID3D12GraphicsCommandList10_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36381 ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36382
36383#define ID3D12GraphicsCommandList10_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
36384 ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
36385
36386#define ID3D12GraphicsCommandList10_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36387 ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36388
36389#define ID3D12GraphicsCommandList10_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
36390 ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
36391
36392#define ID3D12GraphicsCommandList10_IASetIndexBuffer(This,pView) \
36393 ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
36394
36395#define ID3D12GraphicsCommandList10_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
36396 ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
36397
36398#define ID3D12GraphicsCommandList10_SOSetTargets(This,StartSlot,NumViews,pViews) \
36399 ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
36400
36401#define ID3D12GraphicsCommandList10_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
36402 ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
36403
36404#define ID3D12GraphicsCommandList10_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
36405 ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
36406
36407#define ID3D12GraphicsCommandList10_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
36408 ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
36409
36410#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36411 ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36412
36413#define ID3D12GraphicsCommandList10_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
36414 ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
36415
36416#define ID3D12GraphicsCommandList10_DiscardResource(This,pResource,pRegion) \
36417 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
36418
36419#define ID3D12GraphicsCommandList10_BeginQuery(This,pQueryHeap,Type,Index) \
36420 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
36421
36422#define ID3D12GraphicsCommandList10_EndQuery(This,pQueryHeap,Type,Index) \
36423 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
36424
36425#define ID3D12GraphicsCommandList10_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
36426 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
36427
36428#define ID3D12GraphicsCommandList10_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
36429 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
36430
36431#define ID3D12GraphicsCommandList10_SetMarker(This,Metadata,pData,Size) \
36432 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
36433
36434#define ID3D12GraphicsCommandList10_BeginEvent(This,Metadata,pData,Size) \
36435 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
36436
36437#define ID3D12GraphicsCommandList10_EndEvent(This) \
36438 ( (This)->lpVtbl -> EndEvent(This) )
36439
36440#define ID3D12GraphicsCommandList10_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
36441 ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
36442
36443
36444#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36445 ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36446
36447#define ID3D12GraphicsCommandList10_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
36448 ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
36449
36450#define ID3D12GraphicsCommandList10_OMSetDepthBounds(This,Min,Max) \
36451 ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
36452
36453#define ID3D12GraphicsCommandList10_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
36454 ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
36455
36456#define ID3D12GraphicsCommandList10_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
36457 ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
36458
36459#define ID3D12GraphicsCommandList10_SetViewInstanceMask(This,Mask) \
36460 ( (This)->lpVtbl -> SetViewInstanceMask(This,Mask) )
36461
36462
36463#define ID3D12GraphicsCommandList10_WriteBufferImmediate(This,Count,pParams,pModes) \
36464 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
36465
36466
36467#define ID3D12GraphicsCommandList10_SetProtectedResourceSession(This,pProtectedResourceSession) \
36468 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
36469
36470
36471#define ID3D12GraphicsCommandList10_BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) \
36472 ( (This)->lpVtbl -> BeginRenderPass(This,NumRenderTargets,pRenderTargets,pDepthStencil,Flags) )
36473
36474#define ID3D12GraphicsCommandList10_EndRenderPass(This) \
36475 ( (This)->lpVtbl -> EndRenderPass(This) )
36476
36477#define ID3D12GraphicsCommandList10_InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) \
36478 ( (This)->lpVtbl -> InitializeMetaCommand(This,pMetaCommand,pInitializationParametersData,InitializationParametersDataSizeInBytes) )
36479
36480#define ID3D12GraphicsCommandList10_ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) \
36481 ( (This)->lpVtbl -> ExecuteMetaCommand(This,pMetaCommand,pExecutionParametersData,ExecutionParametersDataSizeInBytes) )
36482
36483#define ID3D12GraphicsCommandList10_BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) \
36484 ( (This)->lpVtbl -> BuildRaytracingAccelerationStructure(This,pDesc,NumPostbuildInfoDescs,pPostbuildInfoDescs) )
36485
36486#define ID3D12GraphicsCommandList10_EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) \
36487 ( (This)->lpVtbl -> EmitRaytracingAccelerationStructurePostbuildInfo(This,pDesc,NumSourceAccelerationStructures,pSourceAccelerationStructureData) )
36488
36489#define ID3D12GraphicsCommandList10_CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) \
36490 ( (This)->lpVtbl -> CopyRaytracingAccelerationStructure(This,DestAccelerationStructureData,SourceAccelerationStructureData,Mode) )
36491
36492#define ID3D12GraphicsCommandList10_SetPipelineState1(This,pStateObject) \
36493 ( (This)->lpVtbl -> SetPipelineState1(This,pStateObject) )
36494
36495#define ID3D12GraphicsCommandList10_DispatchRays(This,pDesc) \
36496 ( (This)->lpVtbl -> DispatchRays(This,pDesc) )
36497
36498
36499#define ID3D12GraphicsCommandList10_RSSetShadingRate(This,baseShadingRate,combiners) \
36500 ( (This)->lpVtbl -> RSSetShadingRate(This,baseShadingRate,combiners) )
36501
36502#define ID3D12GraphicsCommandList10_RSSetShadingRateImage(This,shadingRateImage) \
36503 ( (This)->lpVtbl -> RSSetShadingRateImage(This,shadingRateImage) )
36504
36505
36506#define ID3D12GraphicsCommandList10_DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
36507 ( (This)->lpVtbl -> DispatchMesh(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
36508
36509
36510#define ID3D12GraphicsCommandList10_Barrier(This,NumBarrierGroups,pBarrierGroups) \
36511 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
36512
36513
36514#define ID3D12GraphicsCommandList10_OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) \
36515 ( (This)->lpVtbl -> OMSetFrontAndBackStencilRef(This,FrontStencilRef,BackStencilRef) )
36516
36517
36518#define ID3D12GraphicsCommandList10_RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) \
36519 ( (This)->lpVtbl -> RSSetDepthBias(This,DepthBias,DepthBiasClamp,SlopeScaledDepthBias) )
36520
36521#define ID3D12GraphicsCommandList10_IASetIndexBufferStripCutValue(This,IBStripCutValue) \
36522 ( (This)->lpVtbl -> IASetIndexBufferStripCutValue(This,IBStripCutValue) )
36523
36524
36525#define ID3D12GraphicsCommandList10_SetProgram(This,pDesc) \
36526 ( (This)->lpVtbl -> SetProgram(This,pDesc) )
36527
36528#define ID3D12GraphicsCommandList10_DispatchGraph(This,pDesc) \
36529 ( (This)->lpVtbl -> DispatchGraph(This,pDesc) )
36530
36531#endif /* COBJMACROS */
36532
36533
36534#endif /* C style interface */
36535
36536
36537
36538
36539#endif /* __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__ */
36540
36541
36542#ifndef __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36543#define __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
36544
36545/* interface ID3D12DSRDeviceFactory */
36546/* [unique][local][object][uuid] */
36547
36548
36549EXTERN_C const IID IID_ID3D12DSRDeviceFactory;
36550
36551#if defined(__cplusplus) && !defined(CINTERFACE)
36552
36553 MIDL_INTERFACE("f343d1a0-afe3-439f-b13d-cd87a43b70ca")
36554 ID3D12DSRDeviceFactory : public IUnknown
36555 {
36556 public:
36557 virtual HRESULT STDMETHODCALLTYPE CreateDSRDevice(
36558 ID3D12Device *pD3D12Device,
36559 UINT NodeMask,
36560 REFIID riid,
36561 _COM_Outptr_ void **ppvDSRDevice) = 0;
36562
36563 };
36564
36565
36566#else /* C style interface */
36567
36568 typedef struct ID3D12DSRDeviceFactoryVtbl
36569 {
36570 BEGIN_INTERFACE
36571
36572 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36573 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36574 ID3D12DSRDeviceFactory * This,
36575 REFIID riid,
36576 _COM_Outptr_ void **ppvObject);
36577
36578 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36579 ULONG ( STDMETHODCALLTYPE *AddRef )(
36580 ID3D12DSRDeviceFactory * This);
36581
36582 DECLSPEC_XFGVIRT(IUnknown, Release)
36583 ULONG ( STDMETHODCALLTYPE *Release )(
36584 ID3D12DSRDeviceFactory * This);
36585
36586 DECLSPEC_XFGVIRT(ID3D12DSRDeviceFactory, CreateDSRDevice)
36587 HRESULT ( STDMETHODCALLTYPE *CreateDSRDevice )(
36588 ID3D12DSRDeviceFactory * This,
36589 ID3D12Device *pD3D12Device,
36590 UINT NodeMask,
36591 REFIID riid,
36592 _COM_Outptr_ void **ppvDSRDevice);
36593
36594 END_INTERFACE
36595 } ID3D12DSRDeviceFactoryVtbl;
36596
36597 interface ID3D12DSRDeviceFactory
36598 {
36599 CONST_VTBL struct ID3D12DSRDeviceFactoryVtbl *lpVtbl;
36600 };
36601
36602
36603
36604#ifdef COBJMACROS
36605
36606
36607#define ID3D12DSRDeviceFactory_QueryInterface(This,riid,ppvObject) \
36608 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36609
36610#define ID3D12DSRDeviceFactory_AddRef(This) \
36611 ( (This)->lpVtbl -> AddRef(This) )
36612
36613#define ID3D12DSRDeviceFactory_Release(This) \
36614 ( (This)->lpVtbl -> Release(This) )
36615
36616
36617#define ID3D12DSRDeviceFactory_CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) \
36618 ( (This)->lpVtbl -> CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) )
36619
36620#endif /* COBJMACROS */
36621
36622
36623#endif /* C style interface */
36624
36625
36626
36627
36628#endif /* __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__ */
36629
36630
36631#ifndef __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36632#define __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
36633
36634/* interface ID3D12GBVDiagnostics */
36635/* [unique][local][object][uuid] */
36636
36637
36638EXTERN_C const IID IID_ID3D12GBVDiagnostics;
36639
36640#if defined(__cplusplus) && !defined(CINTERFACE)
36641
36642 MIDL_INTERFACE("597985ab-9b75-4dbb-be23-0761195bebee")
36643 ID3D12GBVDiagnostics : public IUnknown
36644 {
36645 public:
36646 virtual HRESULT STDMETHODCALLTYPE GetGBVEntireSubresourceStatesData(
36647 _In_ ID3D12Resource *pResource,
36648 _Out_writes_bytes_(DataSize) int *pData,
36649 UINT DataSize) = 0;
36650
36651 virtual HRESULT STDMETHODCALLTYPE GetGBVSubresourceState(
36652 _In_ ID3D12Resource *pResource,
36653 UINT Subresource,
36654 _Out_ int *pData) = 0;
36655
36656 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceUniformState(
36657 _In_ ID3D12Resource *pResource,
36658 _Out_ int *pData) = 0;
36659
36660 virtual HRESULT STDMETHODCALLTYPE GetGBVResourceInfo(
36661 _In_ ID3D12Resource *pResource,
36662 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36663 _In_opt_ UINT32 *pResourceHash,
36664 _In_opt_ UINT32 *pSubresourceStatesByteOffset) = 0;
36665
36666 virtual void STDMETHODCALLTYPE GBVReserved0( void) = 0;
36667
36668 virtual void STDMETHODCALLTYPE GBVReserved1( void) = 0;
36669
36670 };
36671
36672
36673#else /* C style interface */
36674
36675 typedef struct ID3D12GBVDiagnosticsVtbl
36676 {
36677 BEGIN_INTERFACE
36678
36679 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
36680 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
36681 ID3D12GBVDiagnostics * This,
36682 REFIID riid,
36683 _COM_Outptr_ void **ppvObject);
36684
36685 DECLSPEC_XFGVIRT(IUnknown, AddRef)
36686 ULONG ( STDMETHODCALLTYPE *AddRef )(
36687 ID3D12GBVDiagnostics * This);
36688
36689 DECLSPEC_XFGVIRT(IUnknown, Release)
36690 ULONG ( STDMETHODCALLTYPE *Release )(
36691 ID3D12GBVDiagnostics * This);
36692
36693 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVEntireSubresourceStatesData)
36694 HRESULT ( STDMETHODCALLTYPE *GetGBVEntireSubresourceStatesData )(
36695 ID3D12GBVDiagnostics * This,
36696 _In_ ID3D12Resource *pResource,
36697 _Out_writes_bytes_(DataSize) int *pData,
36698 UINT DataSize);
36699
36700 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVSubresourceState)
36701 HRESULT ( STDMETHODCALLTYPE *GetGBVSubresourceState )(
36702 ID3D12GBVDiagnostics * This,
36703 _In_ ID3D12Resource *pResource,
36704 UINT Subresource,
36705 _Out_ int *pData);
36706
36707 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceUniformState)
36708 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceUniformState )(
36709 ID3D12GBVDiagnostics * This,
36710 _In_ ID3D12Resource *pResource,
36711 _Out_ int *pData);
36712
36713 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GetGBVResourceInfo)
36714 HRESULT ( STDMETHODCALLTYPE *GetGBVResourceInfo )(
36715 ID3D12GBVDiagnostics * This,
36716 _In_ ID3D12Resource *pResource,
36717 _In_opt_ D3D12_RESOURCE_DESC *pResourceDesc,
36718 _In_opt_ UINT32 *pResourceHash,
36719 _In_opt_ UINT32 *pSubresourceStatesByteOffset);
36720
36721 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved0)
36722 void ( STDMETHODCALLTYPE *GBVReserved0 )(
36723 ID3D12GBVDiagnostics * This);
36724
36725 DECLSPEC_XFGVIRT(ID3D12GBVDiagnostics, GBVReserved1)
36726 void ( STDMETHODCALLTYPE *GBVReserved1 )(
36727 ID3D12GBVDiagnostics * This);
36728
36729 END_INTERFACE
36730 } ID3D12GBVDiagnosticsVtbl;
36731
36732 interface ID3D12GBVDiagnostics
36733 {
36734 CONST_VTBL struct ID3D12GBVDiagnosticsVtbl *lpVtbl;
36735 };
36736
36737
36738
36739#ifdef COBJMACROS
36740
36741
36742#define ID3D12GBVDiagnostics_QueryInterface(This,riid,ppvObject) \
36743 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
36744
36745#define ID3D12GBVDiagnostics_AddRef(This) \
36746 ( (This)->lpVtbl -> AddRef(This) )
36747
36748#define ID3D12GBVDiagnostics_Release(This) \
36749 ( (This)->lpVtbl -> Release(This) )
36750
36751
36752#define ID3D12GBVDiagnostics_GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) \
36753 ( (This)->lpVtbl -> GetGBVEntireSubresourceStatesData(This,pResource,pData,DataSize) )
36754
36755#define ID3D12GBVDiagnostics_GetGBVSubresourceState(This,pResource,Subresource,pData) \
36756 ( (This)->lpVtbl -> GetGBVSubresourceState(This,pResource,Subresource,pData) )
36757
36758#define ID3D12GBVDiagnostics_GetGBVResourceUniformState(This,pResource,pData) \
36759 ( (This)->lpVtbl -> GetGBVResourceUniformState(This,pResource,pData) )
36760
36761#define ID3D12GBVDiagnostics_GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) \
36762 ( (This)->lpVtbl -> GetGBVResourceInfo(This,pResource,pResourceDesc,pResourceHash,pSubresourceStatesByteOffset) )
36763
36764#define ID3D12GBVDiagnostics_GBVReserved0(This) \
36765 ( (This)->lpVtbl -> GBVReserved0(This) )
36766
36767#define ID3D12GBVDiagnostics_GBVReserved1(This) \
36768 ( (This)->lpVtbl -> GBVReserved1(This) )
36769
36770#endif /* COBJMACROS */
36771
36772
36773#endif /* C style interface */
36774
36775
36776
36777
36778#endif /* __ID3D12GBVDiagnostics_INTERFACE_DEFINED__ */
36779
36780
36781/* interface __MIDL_itf_d3d12_0000_0085 */
36782/* [local] */
36783
36784#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
36785#pragma endregion
36786DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
36787DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
36788DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
36789DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
36790DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
36791DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
36792DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
36793DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
36794DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
36795DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
36796DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);
36797DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
36798DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);
36799DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
36800DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
36801DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
36802DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
36803DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
36804DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
36805DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);
36806DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
36807DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);
36808DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
36809DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
36810DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
36811DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
36812DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
36813DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);
36814DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);
36815DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);
36816DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);
36817DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);
36818DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);
36819DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);
36820DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);
36821DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);
36822DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);
36823DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);
36824DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);
36825DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);
36826DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);
36827DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);
36828DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);
36829DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);
36830DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);
36831DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);
36832DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);
36833DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);
36834DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);
36835DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);
36836DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);
36837DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);
36838DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);
36839DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);
36840DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);
36841DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);
36842DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);
36843DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);
36844DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);
36845DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);
36846DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);
36847DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);
36848DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);
36849DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);
36850DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);
36851DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
36852DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);
36853DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);
36854DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);
36855DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);
36856DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);
36857DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
36858DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);
36859DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);
36860DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);
36861DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);
36862DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);
36863DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);
36864DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);
36865DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);
36866DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);
36867DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);
36868DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);
36869DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);
36870DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);
36871
36872
36873extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_c_ifspec;
36874extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0085_v0_0_s_ifspec;
36875
36876/* Additional Prototypes for ALL interfaces */
36877
36878/* end of Additional Prototypes */
36879
36880#ifdef __cplusplus
36881}
36882#endif
36883
36884#endif
36885
36886
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl
new file mode 100644
index 0000000..f87746a
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12.idl
@@ -0,0 +1,7014 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "dxgiformat.idl";
12
13import "d3dcommon.idl";
14
15cpp_quote("#include <winapifamily.h>")
16
17#pragma region App Family
18cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
19
20// NOTE: The following constants are generated from the D3D12 hardware spec. Do not edit these values directly.
21cpp_quote("#ifndef _D3D12_CONSTANTS")
22cpp_quote("#define _D3D12_CONSTANTS")
23const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
24const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
25const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
26const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
27const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
28const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
29const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
30const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
31const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
32const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
33const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
34const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
35const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
36const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
37const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
38const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
39const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
40const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
41const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
42const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
43const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
44const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
45const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
46const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
47const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
48const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
49const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
50const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
51const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
52const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
53const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
54const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
55const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
56const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
57const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
58const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
59const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
60const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
61const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
62const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
63const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
64const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
65const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
66const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
67const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
68const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
69const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
70const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
71const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
72const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
73const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
74const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
75const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
76const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
77const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
78const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
79const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
80const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
81const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
82const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
83const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
84const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
85const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
86const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
87const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
88const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
89const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
90const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
91const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
92const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
93const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
94const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
95const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
96const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
97const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
98const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
99const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
100const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
101const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
102const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
103const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
104const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
105const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
106const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
107const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
108const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
109const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
110const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
111const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
112const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
113const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
114const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
115const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
116const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
117const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
118const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
119const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
120const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
121const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
122const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
123const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
124const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
125cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )")
126cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )")
127cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )")
128cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )")
129cpp_quote("#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )")
130const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
131cpp_quote("#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )")
132const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
133cpp_quote("#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )")
134const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
135const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
136const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
137const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
138const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
139const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
140const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
141const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
142cpp_quote("#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )")
143const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
144const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
145const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
146const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
147const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
148cpp_quote("#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )")
149cpp_quote("#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )")
150const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
151const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
152const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
153const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
154const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
155const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
156const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
157const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
158const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
159const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
160const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
161const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
162const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
163const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
164const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
165const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
166const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
167const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
168const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
169const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
170const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
171const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
172const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
173const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
174const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
175const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
176const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
177const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
178const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
179const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
180cpp_quote("#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )")
181cpp_quote("#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )")
182cpp_quote("#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )")
183cpp_quote("#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )")
184cpp_quote("#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )")
185cpp_quote("#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )")
186cpp_quote("#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )")
187cpp_quote("#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )")
188cpp_quote("#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )")
189cpp_quote("#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )")
190cpp_quote("#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )")
191cpp_quote("#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )")
192cpp_quote("#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )")
193const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
194const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
195const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
196const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
197const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
198const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
199const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
200const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
201const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
202const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
203const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
204const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
205const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
206const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
207const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
208const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
209const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
210const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
211const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
212const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
213const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
214const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
215const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
216const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
217const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
218const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
219const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
220const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
221const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
222const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
223const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
224const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
225const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
226const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
227const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
228const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
229const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
230const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
231const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
232const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
233const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
234const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
235const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
236const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
237const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
238cpp_quote("#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )")
239cpp_quote("#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )")
240const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
241const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
242const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
243const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
244const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
245const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
246const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
247const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
248const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
249const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
250const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
251const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
252const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
253const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
254const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
255const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
256const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
257const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
258const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
259const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
260const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
261const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
262const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
263const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
264const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
265const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
266const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
267const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
268cpp_quote("#define D3D12_LINEAR_GAMMA ( 1.0f )")
269const UINT D3D12_MAJOR_VERSION = 12;
270cpp_quote("#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )")
271cpp_quote("#define D3D12_MAX_DEPTH ( 1.0f )")
272const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
273const UINT D3D12_MAX_MAXANISOTROPY = 16;
274const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
275cpp_quote("#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )")
276const UINT D3D12_MAX_ROOT_COST = 64;
277const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
278const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
279const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
280const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
281const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
282const UINT D3D12_MINOR_VERSION = 0;
283cpp_quote("#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )")
284cpp_quote("#define D3D12_MIN_DEPTH ( 0.0f )")
285const UINT D3D12_MIN_MAXANISOTROPY = 0;
286cpp_quote("#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )")
287cpp_quote("#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )")
288const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
289const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
290cpp_quote("#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )")
291const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
292const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
293const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
294const UINT D3D12_PACKED_TILE = 0xffffffff;
295const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
296const UINT D3D12_PREVIEW_SDK_VERSION = 717;
297const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
298const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
299const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
300const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
301const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
302const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
303const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
304const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
305const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
306const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
307const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
308const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
309const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
310cpp_quote("#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )")
311const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
312const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
313const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
314const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
315const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
316const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
317const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
318const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
319const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
320cpp_quote("#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )")
321const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
322const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
323const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
324const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
325const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
326const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
327const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
328const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
329const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
330const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
331const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
332const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_BYTE_ALIGNMENT = 128;
333const UINT D3D12_RAYTRACING_OPACITY_MICROMAP_OC1_MAX_SUBDIVISION_LEVEL = 12;
334const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
335const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
336const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
337const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
338const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
339const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
340const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
341const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
342const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
343const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
344const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
345const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
346const UINT D3D12_REQ_MAXANISOTROPY = 16;
347const UINT D3D12_REQ_MIP_LEVELS = 15;
348const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
349const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
350const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
351const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
352cpp_quote("#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )")
353const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
354const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
355const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
356const UINT D3D12_REQ_SUBRESOURCES = 30720;
357const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
358const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
359const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
360const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
361const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
362const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
363const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
364const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
365const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
366const UINT D3D12_SDK_VERSION = 618;
367const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
368const UINT D3D12_SHADER_MAJOR_VERSION = 5;
369const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
370const UINT D3D12_SHADER_MAX_INTERFACES = 253;
371const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
372const UINT D3D12_SHADER_MAX_TYPES = 65535;
373const UINT D3D12_SHADER_MINOR_VERSION = 1;
374const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
375const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
376const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
377const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
378const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
379const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
380const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
381const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
382const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
383const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
384const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
385const UINT D3D12_SO_STREAM_COUNT = 4;
386const UINT D3D12_SPEC_DATE_DAY = 14;
387const UINT D3D12_SPEC_DATE_MONTH = 11;
388const UINT D3D12_SPEC_DATE_YEAR = 2014;
389cpp_quote("#define D3D12_SPEC_VERSION ( 1.16 )")
390cpp_quote("#define D3D12_SRGB_GAMMA ( 2.2f )")
391cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )")
392cpp_quote("#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )")
393cpp_quote("#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )")
394cpp_quote("#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )")
395cpp_quote("#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )")
396cpp_quote("#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )")
397const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
398const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
399const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
400const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
401const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
402const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
403const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
404const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
405const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
406const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
407const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
408const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
409const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
410const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
411const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
412const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
413const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
414const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
415const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
416const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
417const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
418const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
419const UINT D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT = 4096;
420const UINT D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT = 8;
421const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
422const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
423const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
424const UINT D3D12_UAV_SLOT_COUNT = 64;
425const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
426const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
427const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
428const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
429const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
430const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
431const UINT D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX = 0xFF;
432const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS = 64;
433const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS = 64;
434const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN = 9;
435const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM = 8;
436const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
437const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
438const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
439const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
440const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
441const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
442const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
443const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
444const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
445const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
446const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
447const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
448const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
449const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
450const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
451const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
452const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
453const UINT D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES = 8;
454const UINT D3D12_WORK_GRAPHS_MAX_NODE_DEPTH = 32;
455cpp_quote("#endif")
456
457
458// Forward declarations
459interface ID3D12CommandQueue;
460
461
462typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
463
464typedef enum D3D12_COMMAND_LIST_TYPE
465{
466 D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
467 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
468 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
469 D3D12_COMMAND_LIST_TYPE_COPY = 3,
470 D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
471 D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
472 D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
473
474 D3D12_COMMAND_LIST_TYPE_NONE = -1,
475
476} D3D12_COMMAND_LIST_TYPE;
477
478typedef enum D3D12_COMMAND_QUEUE_FLAGS
479{
480 D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
481 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
482 D3D12_COMMAND_QUEUE_FLAG_ALLOW_DYNAMIC_PRIORITY = 0x2,
483} D3D12_COMMAND_QUEUE_FLAGS;
484cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )" )
485
486typedef enum D3D12_COMMAND_QUEUE_PRIORITY
487{
488 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
489 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
490 D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
491} D3D12_COMMAND_QUEUE_PRIORITY;
492
493typedef struct D3D12_COMMAND_QUEUE_DESC
494{
495 D3D12_COMMAND_LIST_TYPE Type;
496 INT Priority;
497 D3D12_COMMAND_QUEUE_FLAGS Flags;
498 UINT NodeMask;
499} D3D12_COMMAND_QUEUE_DESC;
500
501typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
502{
503 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
504 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
505 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
506 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
507 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
508} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
509
510typedef enum D3D12_INPUT_CLASSIFICATION
511{
512 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
513 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
514} D3D12_INPUT_CLASSIFICATION;
515
516typedef struct D3D12_INPUT_ELEMENT_DESC
517{
518 LPCSTR SemanticName;
519 UINT SemanticIndex;
520 DXGI_FORMAT Format;
521 UINT InputSlot;
522 UINT AlignedByteOffset;
523 D3D12_INPUT_CLASSIFICATION InputSlotClass;
524 UINT InstanceDataStepRate;
525} D3D12_INPUT_ELEMENT_DESC;
526
527// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
528typedef enum D3D12_FILL_MODE
529{
530 // 1 was POINT in D3D, unused in D3D12
531 D3D12_FILL_MODE_WIREFRAME = 2,
532 D3D12_FILL_MODE_SOLID = 3
533} D3D12_FILL_MODE;
534
535typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
536
537typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
538
539// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
540typedef enum D3D12_CULL_MODE
541{
542 D3D12_CULL_MODE_NONE = 1,
543 D3D12_CULL_MODE_FRONT = 2,
544 D3D12_CULL_MODE_BACK = 3
545} D3D12_CULL_MODE;
546
547typedef struct D3D12_SO_DECLARATION_ENTRY
548{
549 UINT Stream;
550 LPCSTR SemanticName;
551 UINT SemanticIndex;
552 BYTE StartComponent;
553 BYTE ComponentCount;
554 BYTE OutputSlot;
555} D3D12_SO_DECLARATION_ENTRY;
556
557typedef struct D3D12_VIEWPORT
558{
559 FLOAT TopLeftX;
560 FLOAT TopLeftY;
561 FLOAT Width;
562 FLOAT Height;
563 FLOAT MinDepth;
564 FLOAT MaxDepth;
565} D3D12_VIEWPORT;
566
567
568typedef RECT D3D12_RECT;
569
570
571typedef struct D3D12_BOX
572{
573 UINT left;
574 UINT top;
575 UINT front;
576 UINT right;
577 UINT bottom;
578 UINT back;
579} D3D12_BOX;
580
581//--------------------------------------------------------------------------------------------------------
582// The system LUID struct isn't defined in wtypes, so we repeat it here just
583// for the MIDL compiler.
584cpp_quote("#ifdef __midl")
585cpp_quote("#ifndef LUID_DEFINED")
586cpp_quote("#define LUID_DEFINED 1")
587typedef struct __LUID {
588 DWORD LowPart;
589 LONG HighPart;
590} LUID, * PLUID;
591cpp_quote("#endif")
592cpp_quote("#endif")
593
594
595////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
596//
597// Depth-Stencil State
598//
599////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
600
601// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
602typedef enum D3D12_COMPARISON_FUNC
603{
604 D3D12_COMPARISON_FUNC_NONE = 0,
605 D3D12_COMPARISON_FUNC_NEVER = 1,
606 D3D12_COMPARISON_FUNC_LESS = 2,
607 D3D12_COMPARISON_FUNC_EQUAL = 3,
608 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
609 D3D12_COMPARISON_FUNC_GREATER = 5,
610 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
611 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
612 D3D12_COMPARISON_FUNC_ALWAYS = 8
613} D3D12_COMPARISON_FUNC;
614
615typedef enum D3D12_DEPTH_WRITE_MASK
616{
617 D3D12_DEPTH_WRITE_MASK_ZERO = 0,
618 D3D12_DEPTH_WRITE_MASK_ALL = 1
619} D3D12_DEPTH_WRITE_MASK;
620
621// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
622typedef enum D3D12_STENCIL_OP
623{
624 D3D12_STENCIL_OP_KEEP = 1,
625 D3D12_STENCIL_OP_ZERO = 2,
626 D3D12_STENCIL_OP_REPLACE = 3,
627 D3D12_STENCIL_OP_INCR_SAT = 4,
628 D3D12_STENCIL_OP_DECR_SAT = 5,
629 D3D12_STENCIL_OP_INVERT = 6,
630 D3D12_STENCIL_OP_INCR = 7,
631 D3D12_STENCIL_OP_DECR = 8
632} D3D12_STENCIL_OP;
633
634typedef struct D3D12_DEPTH_STENCILOP_DESC
635{
636 D3D12_STENCIL_OP StencilFailOp;
637 D3D12_STENCIL_OP StencilDepthFailOp;
638 D3D12_STENCIL_OP StencilPassOp;
639 D3D12_COMPARISON_FUNC StencilFunc;
640} D3D12_DEPTH_STENCILOP_DESC;
641
642typedef struct D3D12_DEPTH_STENCIL_DESC
643{
644 BOOL DepthEnable;
645 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
646 D3D12_COMPARISON_FUNC DepthFunc;
647 BOOL StencilEnable;
648 UINT8 StencilReadMask;
649 UINT8 StencilWriteMask;
650 D3D12_DEPTH_STENCILOP_DESC FrontFace;
651 D3D12_DEPTH_STENCILOP_DESC BackFace;
652} D3D12_DEPTH_STENCIL_DESC;
653
654typedef struct D3D12_DEPTH_STENCIL_DESC1
655{
656 BOOL DepthEnable;
657 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
658 D3D12_COMPARISON_FUNC DepthFunc;
659 BOOL StencilEnable;
660 UINT8 StencilReadMask;
661 UINT8 StencilWriteMask;
662 D3D12_DEPTH_STENCILOP_DESC FrontFace;
663 D3D12_DEPTH_STENCILOP_DESC BackFace;
664 BOOL DepthBoundsTestEnable;
665} D3D12_DEPTH_STENCIL_DESC1;
666
667// Front/back face independent stencil masks
668typedef struct D3D12_DEPTH_STENCILOP_DESC1
669{
670 D3D12_STENCIL_OP StencilFailOp;
671 D3D12_STENCIL_OP StencilDepthFailOp;
672 D3D12_STENCIL_OP StencilPassOp;
673 D3D12_COMPARISON_FUNC StencilFunc;
674 UINT8 StencilReadMask;
675 UINT8 StencilWriteMask;
676} D3D12_DEPTH_STENCILOP_DESC1;
677
678typedef struct D3D12_DEPTH_STENCIL_DESC2
679{
680 BOOL DepthEnable;
681 D3D12_DEPTH_WRITE_MASK DepthWriteMask;
682 D3D12_COMPARISON_FUNC DepthFunc;
683 BOOL StencilEnable;
684 D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
685 D3D12_DEPTH_STENCILOP_DESC1 BackFace;
686 BOOL DepthBoundsTestEnable;
687} D3D12_DEPTH_STENCIL_DESC2;
688
689
690////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
691//
692// Blend State
693//
694////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
695
696// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
697typedef enum D3D12_BLEND
698{
699 D3D12_BLEND_ZERO = 1,
700 D3D12_BLEND_ONE = 2,
701 D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
702 D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
703 D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
704 D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
705 D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
706 D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
707 D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
708 D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
709 D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
710 // 12 reserved (was BOTHSRCALPHA)
711 // 13 reserved (was BOTHSRCALPHA)
712 D3D12_BLEND_BLEND_FACTOR = 14,
713 D3D12_BLEND_INV_BLEND_FACTOR = 15,
714 D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
715 D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
716 D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
717 D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
718 D3D12_BLEND_ALPHA_FACTOR = 20,
719 D3D12_BLEND_INV_ALPHA_FACTOR = 21
720} D3D12_BLEND;
721
722// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
723typedef enum D3D12_BLEND_OP
724{
725 D3D12_BLEND_OP_ADD = 1,
726 D3D12_BLEND_OP_SUBTRACT = 2,
727 D3D12_BLEND_OP_REV_SUBTRACT = 3,
728 D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
729 D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
730} D3D12_BLEND_OP;
731
732typedef enum D3D12_COLOR_WRITE_ENABLE
733{
734 D3D12_COLOR_WRITE_ENABLE_RED = 1,
735 D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
736 D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
737 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
738 D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
739 D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
740} D3D12_COLOR_WRITE_ENABLE;
741
742typedef enum D3D12_LOGIC_OP
743{
744 // Operation:
745 // (s == PS output, d = RTV contents)
746 D3D12_LOGIC_OP_CLEAR = 0, // 0
747 D3D12_LOGIC_OP_SET, // 1
748 D3D12_LOGIC_OP_COPY, // s
749 D3D12_LOGIC_OP_COPY_INVERTED, // ~s
750 D3D12_LOGIC_OP_NOOP, // d
751 D3D12_LOGIC_OP_INVERT, // ~d
752 D3D12_LOGIC_OP_AND, // s & d
753 D3D12_LOGIC_OP_NAND, // ~(s & d)
754 D3D12_LOGIC_OP_OR, // s | d
755 D3D12_LOGIC_OP_NOR, // ~(s | d)
756 D3D12_LOGIC_OP_XOR, // s ^ d
757 D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
758 D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
759 D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
760 D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
761 D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
762} D3D12_LOGIC_OP;
763
764typedef struct D3D12_RENDER_TARGET_BLEND_DESC
765{
766 BOOL BlendEnable;
767 BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
768 D3D12_BLEND SrcBlend;
769 D3D12_BLEND DestBlend;
770 D3D12_BLEND_OP BlendOp;
771 D3D12_BLEND SrcBlendAlpha;
772 D3D12_BLEND DestBlendAlpha;
773 D3D12_BLEND_OP BlendOpAlpha;
774 D3D12_LOGIC_OP LogicOp; // applies to RGBA
775 UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
776} D3D12_RENDER_TARGET_BLEND_DESC;
777
778typedef struct D3D12_BLEND_DESC
779{
780 BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
781 BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
782 D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
783} D3D12_BLEND_DESC;
784
785cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
786cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
787
788
789////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
790//
791// Rasterizer State
792//
793////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
794
795typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
796{
797 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
798 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
799} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
800
801typedef struct D3D12_RASTERIZER_DESC
802{
803 D3D12_FILL_MODE FillMode;
804 D3D12_CULL_MODE CullMode;
805 BOOL FrontCounterClockwise;
806 INT DepthBias;
807 FLOAT DepthBiasClamp;
808 FLOAT SlopeScaledDepthBias;
809 BOOL DepthClipEnable;
810 BOOL MultisampleEnable;
811 BOOL AntialiasedLineEnable;
812 UINT ForcedSampleCount;
813 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
814} D3D12_RASTERIZER_DESC;
815
816typedef struct D3D12_RASTERIZER_DESC1
817{
818 D3D12_FILL_MODE FillMode;
819 D3D12_CULL_MODE CullMode;
820 BOOL FrontCounterClockwise;
821 FLOAT DepthBias;
822 FLOAT DepthBiasClamp;
823 FLOAT SlopeScaledDepthBias;
824 BOOL DepthClipEnable;
825 BOOL MultisampleEnable;
826 BOOL AntialiasedLineEnable;
827 UINT ForcedSampleCount;
828 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
829} D3D12_RASTERIZER_DESC1;
830
831typedef enum D3D12_LINE_RASTERIZATION_MODE
832{
833 D3D12_LINE_RASTERIZATION_MODE_ALIASED,
834 D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED,
835 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE,
836 D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW,
837} D3D12_LINE_RASTERIZATION_MODE;
838
839typedef struct D3D12_RASTERIZER_DESC2
840{
841 D3D12_FILL_MODE FillMode;
842 D3D12_CULL_MODE CullMode;
843 BOOL FrontCounterClockwise;
844 FLOAT DepthBias;
845 FLOAT DepthBiasClamp;
846 FLOAT SlopeScaledDepthBias;
847 BOOL DepthClipEnable;
848 D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
849 UINT ForcedSampleCount;
850 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
851} D3D12_RASTERIZER_DESC2;
852
853////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
854//
855// Pipeline State v1
856//
857////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
858
859[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
860interface ID3D12RootSignature
861 : ID3D12DeviceChild
862{
863}
864
865typedef struct D3D12_SHADER_BYTECODE
866{
867 [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
868 SIZE_T BytecodeLength;
869} D3D12_SHADER_BYTECODE;
870
871typedef struct D3D12_STREAM_OUTPUT_DESC
872{
873 [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
874 UINT NumEntries;
875 [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
876 UINT NumStrides;
877 UINT RasterizedStream;
878} D3D12_STREAM_OUTPUT_DESC;
879
880typedef struct D3D12_INPUT_LAYOUT_DESC
881{
882 [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
883 UINT NumElements;
884} D3D12_INPUT_LAYOUT_DESC;
885
886typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
887{
888 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
889 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
890 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
891} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
892
893typedef enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
894{
895 D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
896 D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
897} D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
898
899typedef struct D3D12_CACHED_PIPELINE_STATE
900{
901 [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
902 SIZE_T CachedBlobSizeInBytes;
903} D3D12_CACHED_PIPELINE_STATE;
904
905typedef enum D3D12_PIPELINE_STATE_FLAGS
906{
907 D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
908 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
909 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
910 D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8,
911
912} D3D12_PIPELINE_STATE_FLAGS;
913cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )" )
914
915typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
916{
917 ID3D12RootSignature* pRootSignature;
918 D3D12_SHADER_BYTECODE VS;
919 D3D12_SHADER_BYTECODE PS;
920 D3D12_SHADER_BYTECODE DS;
921 D3D12_SHADER_BYTECODE HS;
922 D3D12_SHADER_BYTECODE GS;
923 D3D12_STREAM_OUTPUT_DESC StreamOutput;
924 D3D12_BLEND_DESC BlendState;
925 UINT SampleMask;
926 D3D12_RASTERIZER_DESC RasterizerState;
927 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
928 D3D12_INPUT_LAYOUT_DESC InputLayout;
929 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
930 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
931 UINT NumRenderTargets;
932 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
933 DXGI_FORMAT DSVFormat;
934 DXGI_SAMPLE_DESC SampleDesc;
935 UINT NodeMask;
936 D3D12_CACHED_PIPELINE_STATE CachedPSO;
937 D3D12_PIPELINE_STATE_FLAGS Flags;
938} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
939
940typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
941{
942 ID3D12RootSignature* pRootSignature;
943 D3D12_SHADER_BYTECODE CS;
944 UINT NodeMask;
945 D3D12_CACHED_PIPELINE_STATE CachedPSO;
946 D3D12_PIPELINE_STATE_FLAGS Flags;
947} D3D12_COMPUTE_PIPELINE_STATE_DESC;
948
949////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
950//
951// Serialized Root Signature
952//
953////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
954typedef enum D3D_ROOT_SIGNATURE_VERSION
955{
956 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
957 D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
958 D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
959 D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3,
960} D3D_ROOT_SIGNATURE_VERSION;
961
962typedef struct D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
963{
964 [annotation("_Field_size_bytes_full_(SerializedBlobSizeInBytes)")] const void* pSerializedBlob;
965 SIZE_T SerializedBlobSizeInBytes;
966} D3D12_SERIALIZED_ROOT_SIGNATURE_DESC;
967
968typedef struct D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE
969{
970 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
971} D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
972
973typedef struct D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE
974{
975 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC Desc;
976} D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE;
977
978////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
979//
980// Pipeline State v2
981//
982////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
983
984struct D3D12_RT_FORMAT_ARRAY
985{
986 DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
987 UINT NumRenderTargets;
988};
989
990typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
991{
992 [annotation("_In_")] SIZE_T SizeInBytes;
993 [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
994} D3D12_PIPELINE_STATE_STREAM_DESC;
995
996typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
997{
998 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
999 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
1000 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
1001 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
1002 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
1003 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
1004 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
1005 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
1006 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
1007 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
1008 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
1009 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
1010 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
1011 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
1012 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
1013 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
1014 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
1015 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
1016 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
1017 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
1018 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
1019 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
1020 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
1021 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
1022 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
1023 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26, // D3D12_DEPTH_STENCIL_DESC2
1024 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27, // D3D12_RASTERIZER_DESC1
1025 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28, // D3D12_RASTERIZER_DESC2
1026 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE = 29, // D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
1027 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
1028} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
1029
1030////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1031//
1032// D3D12 Caps
1033//
1034////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1035
1036typedef enum D3D12_FEATURE
1037{
1038 D3D12_FEATURE_D3D12_OPTIONS = 0,
1039 D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
1040 D3D12_FEATURE_FEATURE_LEVELS = 2,
1041 D3D12_FEATURE_FORMAT_SUPPORT = 3,
1042 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
1043 D3D12_FEATURE_FORMAT_INFO = 5,
1044 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
1045 D3D12_FEATURE_SHADER_MODEL = 7,
1046 D3D12_FEATURE_D3D12_OPTIONS1 = 8,
1047 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
1048 D3D12_FEATURE_ROOT_SIGNATURE = 12,
1049 D3D12_FEATURE_ARCHITECTURE1 = 16,
1050 D3D12_FEATURE_D3D12_OPTIONS2 = 18,
1051 D3D12_FEATURE_SHADER_CACHE = 19,
1052 D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
1053 D3D12_FEATURE_D3D12_OPTIONS3 = 21,
1054 D3D12_FEATURE_EXISTING_HEAPS = 22,
1055 D3D12_FEATURE_D3D12_OPTIONS4 = 23,
1056 D3D12_FEATURE_SERIALIZATION = 24,
1057 D3D12_FEATURE_CROSS_NODE = 25,
1058 D3D12_FEATURE_D3D12_OPTIONS5 = 27,
1059 D3D12_FEATURE_DISPLAYABLE = 28,
1060 D3D12_FEATURE_D3D12_OPTIONS6 = 30,
1061 D3D12_FEATURE_QUERY_META_COMMAND = 31,
1062 D3D12_FEATURE_D3D12_OPTIONS7 = 32,
1063 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
1064 D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
1065 D3D12_FEATURE_D3D12_OPTIONS8 = 36,
1066 D3D12_FEATURE_D3D12_OPTIONS9 = 37,
1067 D3D12_FEATURE_D3D12_OPTIONS10 = 39,
1068 D3D12_FEATURE_D3D12_OPTIONS11 = 40,
1069 D3D12_FEATURE_D3D12_OPTIONS12 = 41,
1070 D3D12_FEATURE_D3D12_OPTIONS13 = 42,
1071 D3D12_FEATURE_D3D12_OPTIONS14 = 43,
1072 D3D12_FEATURE_D3D12_OPTIONS15 = 44,
1073 D3D12_FEATURE_D3D12_OPTIONS16 = 45,
1074 D3D12_FEATURE_D3D12_OPTIONS17 = 46,
1075 D3D12_FEATURE_D3D12_OPTIONS18 = 47,
1076 D3D12_FEATURE_D3D12_OPTIONS19 = 48,
1077 D3D12_FEATURE_D3D12_OPTIONS20 = 49,
1078 D3D12_FEATURE_PREDICATION = 50,
1079 D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
1080 D3D12_FEATURE_HARDWARE_COPY = 52,
1081 D3D12_FEATURE_D3D12_OPTIONS21 = 53,
1082 D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT = 54,
1083 D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
1084 D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
1085 D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT = 61,
1086
1087} D3D12_FEATURE;
1088
1089typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
1090{
1091 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
1092 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
1093 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
1094} D3D12_SHADER_MIN_PRECISION_SUPPORT;
1095cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )" )
1096
1097typedef enum D3D12_TILED_RESOURCES_TIER
1098{
1099 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
1100 D3D12_TILED_RESOURCES_TIER_1 = 1,
1101 D3D12_TILED_RESOURCES_TIER_2 = 2,
1102 D3D12_TILED_RESOURCES_TIER_3 = 3,
1103 D3D12_TILED_RESOURCES_TIER_4 = 4,
1104} D3D12_TILED_RESOURCES_TIER;
1105
1106typedef enum D3D12_RESOURCE_BINDING_TIER
1107{
1108 D3D12_RESOURCE_BINDING_TIER_1 = 1,
1109 D3D12_RESOURCE_BINDING_TIER_2 = 2,
1110 D3D12_RESOURCE_BINDING_TIER_3 = 3,
1111} D3D12_RESOURCE_BINDING_TIER;
1112
1113typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
1114 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
1115 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
1116 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
1117 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
1118} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
1119
1120
1121typedef enum D3D12_FORMAT_SUPPORT1
1122{
1123 D3D12_FORMAT_SUPPORT1_NONE = 0,
1124 D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
1125 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
1126 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
1127 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
1128 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
1129 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
1130 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
1131 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
1132 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
1133 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
1134 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
1135 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
1136 D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
1137 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
1138 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
1139 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
1140 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
1141 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
1142 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
1143 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
1144 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
1145 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
1146 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
1147 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
1148 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
1149 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
1150 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
1151 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
1152 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
1153} D3D12_FORMAT_SUPPORT1;
1154cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )" )
1155
1156typedef enum D3D12_FORMAT_SUPPORT2
1157{
1158 D3D12_FORMAT_SUPPORT2_NONE = 0,
1159 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
1160 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
1161 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
1162 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
1163 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
1164 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
1165 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
1166 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
1167 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
1168 D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
1169 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
1170 D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
1171 D3D12_FORMAT_SUPPORT2_DISPLAYABLE = 0x00010000,
1172} D3D12_FORMAT_SUPPORT2;
1173cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )" )
1174
1175typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
1176{
1177 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
1178 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
1179} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
1180cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )" )
1181
1182typedef enum D3D12_CROSS_NODE_SHARING_TIER
1183{
1184 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
1185 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
1186 D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
1187 D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
1188 D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
1189} D3D12_CROSS_NODE_SHARING_TIER;
1190
1191typedef enum D3D12_RESOURCE_HEAP_TIER
1192{
1193 D3D12_RESOURCE_HEAP_TIER_1 = 1,
1194 D3D12_RESOURCE_HEAP_TIER_2 = 2,
1195} D3D12_RESOURCE_HEAP_TIER;
1196
1197typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
1198{
1199 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
1200 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
1201 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
1202} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
1203
1204typedef enum D3D12_VIEW_INSTANCING_TIER
1205{
1206 D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
1207 D3D12_VIEW_INSTANCING_TIER_1 = 1,
1208 D3D12_VIEW_INSTANCING_TIER_2 = 2,
1209 D3D12_VIEW_INSTANCING_TIER_3 = 3,
1210} D3D12_VIEW_INSTANCING_TIER;
1211
1212
1213typedef enum D3D12_WORK_GRAPHS_TIER {
1214 D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
1215 D3D12_WORK_GRAPHS_TIER_1_0 = 10,
1216} D3D12_WORK_GRAPHS_TIER;
1217
1218
1219// D3D12_FEATURE_D3D12_OPTIONS
1220typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
1221{
1222 [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
1223 [annotation("_Out_")] BOOL OutputMergerLogicOp;
1224 [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
1225 [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
1226 [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
1227 [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
1228 [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
1229 [annotation("_Out_")] BOOL ROVsSupported;
1230 [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
1231 [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
1232 [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
1233 [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
1234 [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
1235 [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
1236 [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
1237} D3D12_FEATURE_DATA_D3D12_OPTIONS;
1238
1239// D3D12_FEATURE_D3D12_OPTIONS1
1240typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
1241{
1242 [annotation("_Out_")] BOOL WaveOps;
1243 [annotation("_Out_")] UINT WaveLaneCountMin;
1244 [annotation("_Out_")] UINT WaveLaneCountMax;
1245 [annotation("_Out_")] UINT TotalLaneCount;
1246 [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
1247 [annotation("_Out_")] BOOL Int64ShaderOps;
1248} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
1249
1250// D3D12_FEATURE_D3D12_OPTIONS2
1251typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
1252{
1253 [annotation("_Out_")] BOOL DepthBoundsTestSupported;
1254 [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
1255} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
1256
1257// D3D12_FEATURE_ROOT_SIGNATURE
1258typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
1259{
1260 [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
1261} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
1262
1263// D3D12_FEATURE_ARCHITECTURE
1264typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
1265{
1266 [annotation("_In_")] UINT NodeIndex;
1267 [annotation("_Out_")] BOOL TileBasedRenderer;
1268 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1269 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1270} D3D12_FEATURE_DATA_ARCHITECTURE;
1271
1272// D3D12_FEATURE_ARCHITECTURE1
1273typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
1274{
1275 [annotation("_In_")] UINT NodeIndex;
1276 [annotation("_Out_")] BOOL TileBasedRenderer;
1277 [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
1278 [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
1279 [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
1280} D3D12_FEATURE_DATA_ARCHITECTURE1;
1281
1282// D3D12_FEATURE_FEATURE_LEVELS
1283typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
1284{
1285 [annotation("_In_")] UINT NumFeatureLevels;
1286 [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
1287 [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
1288} D3D12_FEATURE_DATA_FEATURE_LEVELS;
1289
1290// D3D_SHADER_MODEL
1291typedef enum D3D_SHADER_MODEL
1292{
1293 D3D_SHADER_MODEL_NONE = 0x0, // e.g MCDM Generic devices
1294 D3D_SHADER_MODEL_5_1 = 0x51,
1295 D3D_SHADER_MODEL_6_0 = 0x60,
1296 D3D_SHADER_MODEL_6_1 = 0x61,
1297 D3D_SHADER_MODEL_6_2 = 0x62,
1298 D3D_SHADER_MODEL_6_3 = 0x63,
1299 D3D_SHADER_MODEL_6_4 = 0x64,
1300 D3D_SHADER_MODEL_6_5 = 0x65,
1301 D3D_SHADER_MODEL_6_6 = 0x66,
1302 D3D_SHADER_MODEL_6_7 = 0x67,
1303 D3D_SHADER_MODEL_6_8 = 0x68,
1304 D3D_SHADER_MODEL_6_9 = 0x69,
1305 D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
1306} D3D_SHADER_MODEL;
1307
1308typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
1309{
1310 [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
1311} D3D12_FEATURE_DATA_SHADER_MODEL;
1312
1313// D3D12_FEATURE_FORMAT_SUPPORT
1314typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
1315{
1316 [annotation("_In_")] DXGI_FORMAT Format;
1317 [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
1318 [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
1319} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
1320
1321// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
1322typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
1323{
1324 [annotation("_In_")] DXGI_FORMAT Format;
1325 [annotation("_In_")] UINT SampleCount;
1326 [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
1327 [annotation("_Out_")] UINT NumQualityLevels;
1328} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
1329
1330// D3D12_FEATURE_FORMAT_INFO
1331typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
1332{
1333 DXGI_FORMAT Format;
1334 UINT8 PlaneCount;
1335} D3D12_FEATURE_DATA_FORMAT_INFO;
1336
1337// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
1338typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
1339{
1340 UINT MaxGPUVirtualAddressBitsPerResource;
1341 UINT MaxGPUVirtualAddressBitsPerProcess;
1342} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
1343
1344
1345typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
1346{
1347 D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
1348 D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
1349 D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
1350 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
1351 D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
1352 D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
1353 D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
1354 D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
1355} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
1356cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )" )
1357
1358// D3D12_FEATURE_SHADER_CACHE
1359typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
1360{
1361 [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
1362} D3D12_FEATURE_DATA_SHADER_CACHE;
1363
1364// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
1365typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
1366{
1367 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
1368 [annotation("_In_")] UINT Priority;
1369 [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
1370} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
1371
1372typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
1373{
1374 D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
1375 D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
1376 D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
1377 D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
1378 D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
1379 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
1380 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
1381 D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
1382
1383} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
1384cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )")
1385
1386// D3D12_FEATURE_D3D12_OPTIONS3
1387typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
1388{
1389 [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
1390 [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
1391 [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
1392 [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
1393 [annotation("_Out_")] BOOL BarycentricsSupported;
1394} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
1395
1396// D3D12_FEATURE_EXISTING_HEAPS
1397typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
1398{
1399 [annotation("_Out_")] BOOL Supported;
1400} D3D12_FEATURE_DATA_EXISTING_HEAPS;
1401
1402typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
1403{
1404 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
1405 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
1406 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
1407} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
1408
1409typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
1410{
1411 [annotation("_Out_")] BOOL DisplayableTexture;
1412 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1413} D3D12_FEATURE_DATA_DISPLAYABLE;
1414
1415// D3D12_FEATURE_D3D12_OPTIONS4
1416typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
1417{
1418 [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
1419 [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
1420 [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
1421} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
1422
1423typedef enum D3D12_HEAP_SERIALIZATION_TIER
1424{
1425 D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
1426 D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
1427} D3D12_HEAP_SERIALIZATION_TIER;
1428
1429// D3D12_FEATURE_SERIALIZATION
1430typedef struct D3D12_FEATURE_DATA_SERIALIZATION
1431{
1432 [annotation("_In_")] UINT NodeIndex;
1433 [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
1434} D3D12_FEATURE_DATA_SERIALIZATION;
1435
1436// D3D12_FEATURE_CROSS_NODE
1437typedef struct D3D12_FEATURE_DATA_CROSS_NODE
1438{
1439 D3D12_CROSS_NODE_SHARING_TIER SharingTier;
1440 BOOL AtomicShaderInstructions;
1441} D3D12_FEATURE_DATA_CROSS_NODE;
1442
1443
1444typedef enum D3D12_RENDER_PASS_TIER
1445{
1446 D3D12_RENDER_PASS_TIER_0 = 0,
1447 D3D12_RENDER_PASS_TIER_1 = 1,
1448 D3D12_RENDER_PASS_TIER_2 = 2,
1449
1450
1451} D3D12_RENDER_PASS_TIER;
1452
1453typedef enum D3D12_RAYTRACING_TIER
1454{
1455 D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
1456 D3D12_RAYTRACING_TIER_1_0 = 10,
1457 D3D12_RAYTRACING_TIER_1_1 = 11,
1458 D3D12_RAYTRACING_TIER_1_2 = 12,
1459} D3D12_RAYTRACING_TIER;
1460
1461// D3D12_FEATURE_D3D12_OPTIONS5
1462typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
1463{
1464 [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
1465 [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
1466 [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
1467} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
1468
1469typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
1470{
1471 D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
1472 D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
1473 D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
1474} D3D12_VARIABLE_SHADING_RATE_TIER;
1475
1476// D3D12_FEATURE_D3D12_OPTIONS6
1477typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
1478{
1479 [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
1480 [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
1481 [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
1482 [annotation("_Out_")] UINT ShadingRateImageTileSize;
1483 [annotation("_Out_")] BOOL BackgroundProcessingSupported;
1484} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
1485
1486typedef enum D3D12_MESH_SHADER_TIER
1487{
1488 D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
1489 D3D12_MESH_SHADER_TIER_1 = 10,
1490} D3D12_MESH_SHADER_TIER;
1491
1492typedef enum D3D12_SAMPLER_FEEDBACK_TIER
1493{
1494 D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
1495 D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
1496 D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
1497} D3D12_SAMPLER_FEEDBACK_TIER;
1498
1499// D3D12_FEATURE_D3D12_OPTIONS7
1500typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
1501{
1502 [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
1503 [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
1504
1505} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
1506
1507typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
1508{
1509 [annotation("_In_")] GUID CommandId;
1510 [annotation("_In_")] UINT NodeMask;
1511 [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
1512 [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
1513 [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
1514 [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
1515} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
1516
1517// D3D12_FEATURE_D3D12_OPTIONS8
1518typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
1519{
1520 [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
1521} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
1522
1523typedef enum D3D12_WAVE_MMA_TIER {
1524 D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
1525 D3D12_WAVE_MMA_TIER_1_0 = 10,
1526} D3D12_WAVE_MMA_TIER;
1527
1528// D3D12_FEATURE_D3D12_OPTIONS9
1529typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
1530{
1531 [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
1532 [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
1533 [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
1534 [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
1535 [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
1536 [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
1537} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
1538
1539// D3D12_FEATURE_D3D12_OPTIONS10
1540typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
1541{
1542 [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
1543 [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
1544} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
1545
1546// D3D12_FEATURE_D3D12_OPTIONS11
1547typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
1548{
1549 [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
1550} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
1551
1552typedef enum D3D12_TRI_STATE {
1553 D3D12_TRI_STATE_UNKNOWN = -1,
1554 D3D12_TRI_STATE_FALSE = 0,
1555 D3D12_TRI_STATE_TRUE = 1,
1556} D3D12_TRI_STATE;
1557
1558// D3D12_FEATURE_D3D12_OPTIONS12
1559typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
1560{
1561 [annotation("_Out_")] D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
1562 [annotation("_Out_")] BOOL EnhancedBarriersSupported;
1563 [annotation("_Out_")] BOOL RelaxedFormatCastingSupported;
1564} D3D12_FEATURE_DATA_D3D12_OPTIONS12;
1565
1566// D3D12_FEATURE_D3D12_OPTIONS13
1567typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
1568{
1569 [annotation("_Out_")] BOOL UnrestrictedBufferTextureCopyPitchSupported;
1570 [annotation("_Out_")] BOOL UnrestrictedVertexElementAlignmentSupported;
1571 [annotation("_Out_")] BOOL InvertedViewportHeightFlipsYSupported;
1572 [annotation("_Out_")] BOOL InvertedViewportDepthFlipsZSupported;
1573 [annotation("_Out_")] BOOL TextureCopyBetweenDimensionsSupported;
1574 [annotation("_Out_")] BOOL AlphaBlendFactorSupported;
1575} D3D12_FEATURE_DATA_D3D12_OPTIONS13;
1576
1577// D3D12_FEATURE_D3D12_OPTIONS14
1578typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
1579{
1580 [annotation("_Out_")] BOOL AdvancedTextureOpsSupported;
1581 [annotation("_Out_")] BOOL WriteableMSAATexturesSupported;
1582 [annotation("_Out_")] BOOL IndependentFrontAndBackStencilRefMaskSupported;
1583} D3D12_FEATURE_DATA_D3D12_OPTIONS14;
1584
1585// D3D12_FEATURE_D3D12_OPTIONS15
1586typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
1587{
1588 [annotation("_Out_")] BOOL TriangleFanSupported;
1589 [annotation("_Out_")] BOOL DynamicIndexBufferStripCutSupported;
1590} D3D12_FEATURE_DATA_D3D12_OPTIONS15;
1591
1592// D3D12_FEATURE_D3D12_OPTIONS16
1593typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
1594{
1595 [annotation("_Out_")] BOOL DynamicDepthBiasSupported;
1596 [annotation("_Out_")] BOOL GPUUploadHeapSupported;
1597} D3D12_FEATURE_DATA_D3D12_OPTIONS16;
1598
1599// D3D12_FEATURE_D3D12_OPTIONS17
1600typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
1601{
1602 [annotation("_Out_")] BOOL NonNormalizedCoordinateSamplersSupported;
1603 [annotation("_Out_")] BOOL ManualWriteTrackingResourceSupported;
1604} D3D12_FEATURE_DATA_D3D12_OPTIONS17;
1605
1606// D3D12_FEATURE_D3D12_OPTIONS18
1607typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
1608{
1609 [annotation("_Out_")] BOOL RenderPassesValid;
1610} D3D12_FEATURE_DATA_D3D12_OPTIONS18;
1611
1612// D3D12_FEATURE_D3D12_OPTIONS19
1613typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
1614{
1615 BOOL MismatchingOutputDimensionsSupported;
1616 UINT SupportedSampleCountsWithNoOutputs;
1617 BOOL PointSamplingAddressesNeverRoundUp;
1618 BOOL RasterizerDesc2Supported;
1619 BOOL NarrowQuadrilateralLinesSupported;
1620 BOOL AnisoFilterWithPointMipSupported;
1621 UINT MaxSamplerDescriptorHeapSize;
1622 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
1623 UINT MaxViewDescriptorHeapSize;
1624 [annotation("_Out_")] BOOL ComputeOnlyCustomHeapSupported;
1625} D3D12_FEATURE_DATA_D3D12_OPTIONS19;
1626
1627
1628typedef enum D3D12_RECREATE_AT_TIER
1629{
1630 D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
1631
1632 // * Supports retrieving resource and heap allocation information
1633 // with ID3D12PageableTools::GetAllocationInfo
1634 // * Supports setting resource and heap virtual addresses with
1635 // ID3D12DeviceTools::SetNextAllocation
1636 D3D12_RECREATE_AT_TIER_1 = 1,
1637
1638} D3D12_RECREATE_AT_TIER;
1639
1640
1641// D3D12_FEATURE_D3D12_OPTIONS20
1642typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
1643{
1644 [annotation("_Out_")] BOOL ComputeOnlyWriteWatchSupported;
1645 D3D12_RECREATE_AT_TIER RecreateAtTier;
1646} D3D12_FEATURE_DATA_D3D12_OPTIONS20;
1647
1648typedef enum D3D12_EXECUTE_INDIRECT_TIER
1649{
1650 D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
1651 D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11,
1652} D3D12_EXECUTE_INDIRECT_TIER;
1653
1654typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
1655{
1656 [annotation("_Out_")] D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
1657 [annotation("_Out_")] D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
1658 [annotation("_Out_")] BOOL SampleCmpGradientAndBiasSupported;
1659 [annotation("_Out_")] BOOL ExtendedCommandInfoSupported;
1660} D3D12_FEATURE_DATA_D3D12_OPTIONS21;
1661
1662
1663typedef enum D3D12_TIGHT_ALIGNMENT_TIER
1664{
1665 D3D12_TIGHT_ALIGNMENT_TIER_NOT_SUPPORTED,
1666 D3D12_TIGHT_ALIGNMENT_TIER_1 // Tight alignment of buffers supported
1667} D3D12_TIGHT_ALIGNMENT_TIER;
1668
1669typedef struct D3D12_FEATURE_DATA_TIGHT_ALIGNMENT
1670{
1671 [annotation("_Out_")] D3D12_TIGHT_ALIGNMENT_TIER SupportTier;
1672} D3D12_FEATURE_DATA_TIGHT_ALIGNMENT;
1673
1674
1675typedef struct D3D12_FEATURE_DATA_PREDICATION
1676{
1677 [annotation("_Out_")] BOOL Supported;
1678} D3D12_FEATURE_DATA_PREDICATION;
1679
1680typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
1681{
1682 [annotation("_Out_")] BOOL Supported;
1683} D3D12_FEATURE_DATA_HARDWARE_COPY;
1684
1685typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
1686{
1687 [annotation("_Out_")] BOOL Supported;
1688} D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
1689
1690typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
1691{
1692 [annotation("_Out_")] BOOL Supported;
1693} D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
1694
1695typedef struct D3D12_RESOURCE_ALLOCATION_INFO
1696{
1697 UINT64 SizeInBytes;
1698 UINT64 Alignment;
1699} D3D12_RESOURCE_ALLOCATION_INFO;
1700
1701typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
1702{
1703 UINT64 Offset;
1704 UINT64 Alignment;
1705 UINT64 SizeInBytes;
1706} D3D12_RESOURCE_ALLOCATION_INFO1;
1707
1708typedef enum D3D12_HEAP_TYPE
1709{
1710 D3D12_HEAP_TYPE_DEFAULT = 1,
1711 D3D12_HEAP_TYPE_UPLOAD = 2,
1712 D3D12_HEAP_TYPE_READBACK = 3,
1713 D3D12_HEAP_TYPE_CUSTOM = 4,
1714 D3D12_HEAP_TYPE_GPU_UPLOAD = 5,
1715} D3D12_HEAP_TYPE;
1716
1717typedef enum D3D12_CPU_PAGE_PROPERTY
1718{
1719 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
1720 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
1721 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
1722 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
1723} D3D12_CPU_PAGE_PROPERTY;
1724
1725typedef enum D3D12_MEMORY_POOL
1726{
1727 D3D12_MEMORY_POOL_UNKNOWN = 0,
1728 D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
1729 D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
1730} D3D12_MEMORY_POOL;
1731
1732typedef struct D3D12_HEAP_PROPERTIES
1733{
1734 D3D12_HEAP_TYPE Type;
1735 D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
1736 D3D12_MEMORY_POOL MemoryPoolPreference;
1737 UINT CreationNodeMask;
1738 UINT VisibleNodeMask;
1739} D3D12_HEAP_PROPERTIES;
1740
1741typedef enum D3D12_HEAP_FLAGS
1742{
1743 D3D12_HEAP_FLAG_NONE = 0x0,
1744 D3D12_HEAP_FLAG_SHARED = 0x1,
1745 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
1746 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
1747 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
1748 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
1749 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
1750 D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
1751 D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
1752 D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
1753 D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
1754 D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
1755 D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
1756
1757 // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
1758 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
1759 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
1760 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
1761 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
1762
1763
1764} D3D12_HEAP_FLAGS;
1765cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )" )
1766
1767typedef struct D3D12_HEAP_DESC
1768{
1769 UINT64 SizeInBytes;
1770 D3D12_HEAP_PROPERTIES Properties;
1771 UINT64 Alignment;
1772 D3D12_HEAP_FLAGS Flags;
1773} D3D12_HEAP_DESC;
1774
1775typedef enum D3D12_RESOURCE_DIMENSION
1776{
1777 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
1778 D3D12_RESOURCE_DIMENSION_BUFFER = 1,
1779 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
1780 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
1781 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
1782} D3D12_RESOURCE_DIMENSION;
1783
1784typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
1785{
1786 [annotation("_In_")] DXGI_FORMAT Format;
1787 [annotation("_In_")] D3D12_RESOURCE_DIMENSION Dimension;
1788 [annotation("_In_")] D3D12_HEAP_PROPERTIES DestHeapProperties;
1789 [annotation("_Out_")] BOOL Supported;
1790} D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
1791
1792typedef enum D3D12_TEXTURE_LAYOUT
1793{
1794 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
1795 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
1796 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
1797 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
1798} D3D12_TEXTURE_LAYOUT;
1799
1800typedef enum D3D12_RESOURCE_FLAGS
1801{
1802 D3D12_RESOURCE_FLAG_NONE = 0x0,
1803 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
1804 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
1805 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
1806 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
1807 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
1808 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
1809 D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
1810 D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
1811 D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
1812 D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT = 0x400,
1813
1814} D3D12_RESOURCE_FLAGS;
1815cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )" )
1816
1817typedef struct D3D12_MIP_REGION
1818{
1819 UINT Width;
1820 UINT Height;
1821 UINT Depth;
1822} D3D12_MIP_REGION;
1823
1824typedef struct D3D12_RESOURCE_DESC
1825{
1826 D3D12_RESOURCE_DIMENSION Dimension;
1827 UINT64 Alignment;
1828 UINT64 Width;
1829 UINT Height;
1830 UINT16 DepthOrArraySize;
1831 UINT16 MipLevels;
1832 DXGI_FORMAT Format;
1833 DXGI_SAMPLE_DESC SampleDesc;
1834 D3D12_TEXTURE_LAYOUT Layout;
1835 D3D12_RESOURCE_FLAGS Flags;
1836} D3D12_RESOURCE_DESC;
1837
1838typedef struct D3D12_RESOURCE_DESC1
1839{
1840 D3D12_RESOURCE_DIMENSION Dimension;
1841 UINT64 Alignment;
1842 UINT64 Width;
1843 UINT Height;
1844 UINT16 DepthOrArraySize;
1845 UINT16 MipLevels;
1846 DXGI_FORMAT Format;
1847 DXGI_SAMPLE_DESC SampleDesc;
1848 D3D12_TEXTURE_LAYOUT Layout;
1849 D3D12_RESOURCE_FLAGS Flags;
1850 D3D12_MIP_REGION SamplerFeedbackMipRegion;
1851} D3D12_RESOURCE_DESC1;
1852
1853
1854
1855typedef struct D3D12_DEPTH_STENCIL_VALUE
1856{
1857 FLOAT Depth;
1858 UINT8 Stencil;
1859} D3D12_DEPTH_STENCIL_VALUE;
1860
1861typedef struct D3D12_CLEAR_VALUE
1862{
1863 DXGI_FORMAT Format;
1864 union
1865 {
1866 FLOAT Color[4];
1867 D3D12_DEPTH_STENCIL_VALUE DepthStencil;
1868 };
1869} D3D12_CLEAR_VALUE;
1870
1871typedef struct D3D12_RANGE
1872{
1873 SIZE_T Begin;
1874 SIZE_T End; // One past end, so (End - Begin) = Size
1875} D3D12_RANGE;
1876
1877typedef struct D3D12_RANGE_UINT64
1878{
1879 UINT64 Begin;
1880 UINT64 End; // One past end, so (End - Begin) = Size
1881} D3D12_RANGE_UINT64;
1882
1883typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
1884{
1885 UINT Subresource;
1886 D3D12_RANGE_UINT64 Range;
1887} D3D12_SUBRESOURCE_RANGE_UINT64;
1888
1889typedef struct D3D12_SUBRESOURCE_INFO
1890{
1891 UINT64 Offset;
1892 UINT RowPitch;
1893 UINT DepthPitch;
1894} D3D12_SUBRESOURCE_INFO;
1895
1896typedef struct D3D12_TILED_RESOURCE_COORDINATE
1897{
1898 UINT X;
1899 UINT Y;
1900 UINT Z;
1901 UINT Subresource;
1902} D3D12_TILED_RESOURCE_COORDINATE;
1903
1904typedef struct D3D12_TILE_REGION_SIZE
1905{
1906 UINT NumTiles;
1907 BOOL UseBox;
1908 UINT Width;
1909 UINT16 Height;
1910 UINT16 Depth;
1911} D3D12_TILE_REGION_SIZE;
1912
1913typedef enum D3D12_TILE_RANGE_FLAGS
1914{
1915 D3D12_TILE_RANGE_FLAG_NONE = 0,
1916 D3D12_TILE_RANGE_FLAG_NULL = 1,
1917 D3D12_TILE_RANGE_FLAG_SKIP = 2,
1918 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
1919
1920} D3D12_TILE_RANGE_FLAGS;
1921
1922typedef struct D3D12_SUBRESOURCE_TILING
1923{
1924 UINT WidthInTiles;
1925 UINT16 HeightInTiles;
1926 UINT16 DepthInTiles;
1927 UINT StartTileIndexInOverallResource;
1928} D3D12_SUBRESOURCE_TILING;
1929
1930typedef struct D3D12_TILE_SHAPE
1931{
1932 UINT WidthInTexels;
1933 UINT HeightInTexels;
1934 UINT DepthInTexels;
1935} D3D12_TILE_SHAPE;
1936
1937typedef struct D3D12_PACKED_MIP_INFO
1938{
1939 UINT8 NumStandardMips;
1940 UINT8 NumPackedMips;
1941 UINT NumTilesForPackedMips;
1942 UINT StartTileIndexInOverallResource;
1943} D3D12_PACKED_MIP_INFO;
1944
1945typedef enum D3D12_TILE_MAPPING_FLAGS
1946{
1947 D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
1948 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
1949} D3D12_TILE_MAPPING_FLAGS;
1950cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )" )
1951
1952typedef enum D3D12_TILE_COPY_FLAGS
1953{
1954 D3D12_TILE_COPY_FLAG_NONE = 0x0,
1955 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
1956 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
1957 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
1958} D3D12_TILE_COPY_FLAGS;
1959cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )")
1960
1961// Resource Barrier
1962typedef enum D3D12_RESOURCE_STATES
1963{
1964 D3D12_RESOURCE_STATE_COMMON = 0,
1965
1966 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
1967 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
1968 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
1969 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
1970 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
1971 D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
1972 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
1973 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
1974 D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
1975 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
1976 D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
1977 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
1978 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
1979 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
1980 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
1981 D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
1982
1983 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
1984 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
1985 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
1986 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
1987 D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
1988
1989 D3D12_RESOURCE_STATE_GENERIC_READ =
1990 /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
1991 /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
1992 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
1993 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
1994 /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
1995 /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
1996
1997 D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
1998 /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
1999 /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
2000
2001 D3D12_RESOURCE_STATE_PRESENT = 0,
2002 D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
2003
2004 D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
2005 D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
2006 D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
2007 D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
2008 D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
2009 D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
2010
2011} D3D12_RESOURCE_STATES;
2012cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )" )
2013
2014typedef enum D3D12_RESOURCE_BARRIER_TYPE
2015{
2016 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
2017 D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
2018 D3D12_RESOURCE_BARRIER_TYPE_UAV,
2019} D3D12_RESOURCE_BARRIER_TYPE;
2020
2021interface ID3D12Resource;
2022
2023typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
2024{
2025 ID3D12Resource* pResource;
2026 UINT Subresource;
2027 D3D12_RESOURCE_STATES StateBefore;
2028 D3D12_RESOURCE_STATES StateAfter;
2029} D3D12_RESOURCE_TRANSITION_BARRIER;
2030
2031typedef struct D3D12_RESOURCE_ALIASING_BARRIER
2032{
2033 ID3D12Resource* pResourceBefore;
2034 ID3D12Resource* pResourceAfter;
2035} D3D12_RESOURCE_ALIASING_BARRIER;
2036
2037typedef struct D3D12_RESOURCE_UAV_BARRIER
2038{
2039 ID3D12Resource* pResource;
2040} D3D12_RESOURCE_UAV_BARRIER;
2041
2042typedef enum D3D12_RESOURCE_BARRIER_FLAGS
2043{
2044 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
2045 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
2046 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
2047} D3D12_RESOURCE_BARRIER_FLAGS;
2048cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )" )
2049
2050typedef struct D3D12_RESOURCE_BARRIER
2051{
2052 D3D12_RESOURCE_BARRIER_TYPE Type;
2053 D3D12_RESOURCE_BARRIER_FLAGS Flags;
2054
2055 union
2056 {
2057 D3D12_RESOURCE_TRANSITION_BARRIER Transition;
2058 D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
2059 D3D12_RESOURCE_UAV_BARRIER UAV;
2060 };
2061} D3D12_RESOURCE_BARRIER;
2062
2063typedef struct D3D12_SUBRESOURCE_FOOTPRINT
2064{
2065 DXGI_FORMAT Format;
2066 UINT Width;
2067 UINT Height;
2068 UINT Depth;
2069 UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
2070} D3D12_SUBRESOURCE_FOOTPRINT;
2071
2072typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
2073{
2074 UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
2075 D3D12_SUBRESOURCE_FOOTPRINT Footprint;
2076} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
2077
2078typedef enum D3D12_TEXTURE_COPY_TYPE
2079{
2080 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
2081 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
2082} D3D12_TEXTURE_COPY_TYPE;
2083
2084typedef struct D3D12_TEXTURE_COPY_LOCATION
2085{
2086 ID3D12Resource* pResource;
2087 D3D12_TEXTURE_COPY_TYPE Type;
2088 union
2089 {
2090 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
2091 UINT SubresourceIndex;
2092 };
2093} D3D12_TEXTURE_COPY_LOCATION;
2094
2095typedef enum D3D12_RESOLVE_MODE
2096{
2097 D3D12_RESOLVE_MODE_DECOMPRESS = 0,
2098 D3D12_RESOLVE_MODE_MIN = 1,
2099 D3D12_RESOLVE_MODE_MAX = 2,
2100 D3D12_RESOLVE_MODE_AVERAGE = 3,
2101 D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
2102 D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
2103} D3D12_RESOLVE_MODE;
2104
2105typedef struct D3D12_SAMPLE_POSITION
2106{
2107 INT8 X;
2108 INT8 Y;
2109} D3D12_SAMPLE_POSITION;
2110
2111typedef struct D3D12_VIEW_INSTANCE_LOCATION
2112{
2113 UINT ViewportArrayIndex;
2114 UINT RenderTargetArrayIndex;
2115} D3D12_VIEW_INSTANCE_LOCATION;
2116
2117typedef enum D3D12_VIEW_INSTANCING_FLAGS
2118{
2119 D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
2120 D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
2121} D3D12_VIEW_INSTANCING_FLAGS;
2122cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )")
2123
2124typedef struct D3D12_VIEW_INSTANCING_DESC
2125{
2126 UINT ViewInstanceCount;
2127 [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
2128 D3D12_VIEW_INSTANCING_FLAGS Flags;
2129} D3D12_VIEW_INSTANCING_DESC;
2130
2131// D3D12 view descriptions
2132typedef enum D3D12_SHADER_COMPONENT_MAPPING
2133{
2134 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
2135 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
2136 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
2137 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
2138 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
2139 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
2140} D3D12_SHADER_COMPONENT_MAPPING;
2141
2142cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
2143cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
2144cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
2145cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
2146cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
2147cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
2148cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
2149cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
2150cpp_quote( "#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
2151cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
2152typedef enum D3D12_BUFFER_SRV_FLAGS
2153{
2154 D3D12_BUFFER_SRV_FLAG_NONE = 0,
2155 D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
2156} D3D12_BUFFER_SRV_FLAGS;
2157cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )" )
2158
2159typedef struct D3D12_BUFFER_SRV
2160{
2161 UINT64 FirstElement;
2162 UINT NumElements;
2163 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2164 D3D12_BUFFER_SRV_FLAGS Flags;
2165} D3D12_BUFFER_SRV;
2166
2167typedef struct D3D12_TEX1D_SRV
2168{
2169 UINT MostDetailedMip;
2170 UINT MipLevels;
2171 FLOAT ResourceMinLODClamp;
2172} D3D12_TEX1D_SRV;
2173
2174typedef struct D3D12_TEX1D_ARRAY_SRV
2175{
2176 UINT MostDetailedMip;
2177 UINT MipLevels;
2178 UINT FirstArraySlice;
2179 UINT ArraySize;
2180 FLOAT ResourceMinLODClamp;
2181} D3D12_TEX1D_ARRAY_SRV;
2182
2183typedef struct D3D12_TEX2D_SRV
2184{
2185 UINT MostDetailedMip;
2186 UINT MipLevels;
2187 UINT PlaneSlice;
2188 FLOAT ResourceMinLODClamp;
2189} D3D12_TEX2D_SRV;
2190
2191typedef struct D3D12_TEX2D_ARRAY_SRV
2192{
2193 UINT MostDetailedMip;
2194 UINT MipLevels;
2195 UINT FirstArraySlice;
2196 UINT ArraySize;
2197 UINT PlaneSlice;
2198 FLOAT ResourceMinLODClamp;
2199} D3D12_TEX2D_ARRAY_SRV;
2200
2201typedef struct D3D12_TEX3D_SRV
2202{
2203 UINT MostDetailedMip;
2204 UINT MipLevels;
2205 FLOAT ResourceMinLODClamp;
2206} D3D12_TEX3D_SRV;
2207
2208typedef struct D3D12_TEXCUBE_SRV
2209{
2210 UINT MostDetailedMip;
2211 UINT MipLevels;
2212 FLOAT ResourceMinLODClamp;
2213} D3D12_TEXCUBE_SRV;
2214
2215typedef struct D3D12_TEXCUBE_ARRAY_SRV
2216{
2217 UINT MostDetailedMip;
2218 UINT MipLevels;
2219 UINT First2DArrayFace;
2220 UINT NumCubes;
2221 FLOAT ResourceMinLODClamp;
2222} D3D12_TEXCUBE_ARRAY_SRV;
2223
2224typedef struct D3D12_TEX2DMS_SRV
2225{
2226 // don't need to define anything specific for this view dimension
2227 UINT UnusedField_NothingToDefine;
2228} D3D12_TEX2DMS_SRV;
2229
2230typedef struct D3D12_TEX2DMS_ARRAY_SRV
2231{
2232 UINT FirstArraySlice;
2233 UINT ArraySize;
2234} D3D12_TEX2DMS_ARRAY_SRV;
2235
2236typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
2237{
2238 D3D12_GPU_VIRTUAL_ADDRESS Location;
2239} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
2240
2241typedef enum D3D12_SRV_DIMENSION {
2242 D3D12_SRV_DIMENSION_UNKNOWN = 0,
2243 D3D12_SRV_DIMENSION_BUFFER = 1,
2244 D3D12_SRV_DIMENSION_TEXTURE1D = 2,
2245 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
2246 D3D12_SRV_DIMENSION_TEXTURE2D = 4,
2247 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
2248 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
2249 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
2250 D3D12_SRV_DIMENSION_TEXTURE3D = 8,
2251 D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
2252 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
2253 D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
2254} D3D12_SRV_DIMENSION;
2255
2256typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
2257{
2258 DXGI_FORMAT Format;
2259 D3D12_SRV_DIMENSION ViewDimension;
2260 UINT Shader4ComponentMapping;
2261
2262 union
2263 {
2264 D3D12_BUFFER_SRV Buffer;
2265 D3D12_TEX1D_SRV Texture1D;
2266 D3D12_TEX1D_ARRAY_SRV Texture1DArray;
2267 D3D12_TEX2D_SRV Texture2D;
2268 D3D12_TEX2D_ARRAY_SRV Texture2DArray;
2269 D3D12_TEX2DMS_SRV Texture2DMS;
2270 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
2271 D3D12_TEX3D_SRV Texture3D;
2272 D3D12_TEXCUBE_SRV TextureCube;
2273 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
2274 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
2275 };
2276} D3D12_SHADER_RESOURCE_VIEW_DESC;
2277
2278typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
2279{
2280 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
2281 UINT SizeInBytes;
2282} D3D12_CONSTANT_BUFFER_VIEW_DESC;
2283
2284////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2285//
2286// Sampler
2287//
2288////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2289typedef enum D3D12_FILTER
2290{
2291 // Bits used in defining enumeration of valid filters:
2292 // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
2293 // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
2294 // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
2295 // bit [6] - aniso
2296 // bits [8:7] - reduction type:
2297 // 0 == standard filtering
2298 // 1 == comparison
2299 // 2 == min
2300 // 3 == max
2301 // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
2302
2303 D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
2304 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
2305 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
2306 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
2307 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
2308 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
2309 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
2310 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
2311 D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000054,
2312 D3D12_FILTER_ANISOTROPIC = 0x00000055,
2313 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
2314 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
2315 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
2316 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
2317 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
2318 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
2319 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
2320 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
2321 D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000000d4,
2322 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
2323 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
2324 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
2325 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
2326 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
2327 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
2328 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
2329 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
2330 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
2331 D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000154,
2332 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
2333 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
2334 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
2335 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
2336 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
2337 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
2338 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
2339 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
2340 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
2341 D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000001d4,
2342 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
2343} D3D12_FILTER;
2344
2345typedef enum D3D12_FILTER_TYPE
2346{
2347 D3D12_FILTER_TYPE_POINT = 0,
2348 D3D12_FILTER_TYPE_LINEAR = 1,
2349} D3D12_FILTER_TYPE;
2350
2351typedef enum D3D12_FILTER_REDUCTION_TYPE
2352{
2353 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
2354 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
2355 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
2356 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
2357} D3D12_FILTER_REDUCTION_TYPE;
2358
2359const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
2360const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
2361
2362const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
2363const UINT D3D12_MIN_FILTER_SHIFT = 4;
2364const UINT D3D12_MAG_FILTER_SHIFT = 2;
2365const UINT D3D12_MIP_FILTER_SHIFT = 0;
2366
2367const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
2368
2369// encode enum entry for most filters except anisotropic filtering
2370cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
2371cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2372cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
2373cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
2374cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
2375cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
2376
2377// encode enum entry for anisotropic filtering (with or without comparison filtering)
2378cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
2379cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2380cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2381cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2382cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2383cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2384cpp_quote( " reduction ) ) ) " )
2385cpp_quote( "#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \\" )
2386cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
2387cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
2388cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
2389cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
2390cpp_quote( " D3D12_FILTER_TYPE_POINT, \\" )
2391cpp_quote( " reduction ) ) ) " )
2392
2393cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
2394cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2395cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2396
2397cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
2398cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2399cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2400
2401cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
2402cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
2403cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
2404
2405cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
2406cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
2407cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
2408
2409cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
2410cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
2411
2412cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
2413cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
2414cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
2415cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) ) " )
2416
2417typedef enum D3D12_TEXTURE_ADDRESS_MODE
2418{
2419 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
2420 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
2421 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
2422 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
2423 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
2424} D3D12_TEXTURE_ADDRESS_MODE;
2425
2426
2427
2428typedef struct D3D12_SAMPLER_DESC
2429{
2430 D3D12_FILTER Filter;
2431 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2432 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2433 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2434 FLOAT MipLODBias;
2435 UINT MaxAnisotropy;
2436 D3D12_COMPARISON_FUNC ComparisonFunc;
2437 FLOAT BorderColor[4]; // RGBA
2438 FLOAT MinLOD;
2439 FLOAT MaxLOD;
2440} D3D12_SAMPLER_DESC;
2441
2442
2443typedef enum D3D12_SAMPLER_FLAGS
2444{
2445 D3D12_SAMPLER_FLAG_NONE = 0x0,
2446 D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x01,
2447 D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x02,
2448} D3D12_SAMPLER_FLAGS;
2449cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )")
2450
2451typedef struct D3D12_SAMPLER_DESC2
2452{
2453 D3D12_FILTER Filter;
2454 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2455 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2456 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2457 FLOAT MipLODBias;
2458 UINT MaxAnisotropy;
2459 D3D12_COMPARISON_FUNC ComparisonFunc;
2460 union
2461 {
2462 FLOAT FloatBorderColor[4]; // RGBA
2463 UINT UintBorderColor[4];
2464 };
2465 FLOAT MinLOD;
2466 FLOAT MaxLOD;
2467 D3D12_SAMPLER_FLAGS Flags;
2468} D3D12_SAMPLER_DESC2;
2469
2470
2471
2472typedef enum D3D12_BUFFER_UAV_FLAGS
2473{
2474 D3D12_BUFFER_UAV_FLAG_NONE = 0,
2475 D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
2476} D3D12_BUFFER_UAV_FLAGS;
2477cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )" )
2478
2479typedef struct D3D12_BUFFER_UAV
2480{
2481 UINT64 FirstElement;
2482 UINT NumElements;
2483 UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
2484 UINT64 CounterOffsetInBytes;
2485 D3D12_BUFFER_UAV_FLAGS Flags;
2486} D3D12_BUFFER_UAV;
2487
2488typedef struct D3D12_TEX1D_UAV
2489{
2490 UINT MipSlice;
2491} D3D12_TEX1D_UAV;
2492
2493typedef struct D3D12_TEX1D_ARRAY_UAV
2494{
2495 UINT MipSlice;
2496 UINT FirstArraySlice;
2497 UINT ArraySize;
2498} D3D12_TEX1D_ARRAY_UAV;
2499
2500typedef struct D3D12_TEX2D_UAV
2501{
2502 UINT MipSlice;
2503 UINT PlaneSlice;
2504} D3D12_TEX2D_UAV;
2505
2506typedef struct D3D12_TEX2D_ARRAY_UAV
2507{
2508 UINT MipSlice;
2509 UINT FirstArraySlice;
2510 UINT ArraySize;
2511 UINT PlaneSlice;
2512} D3D12_TEX2D_ARRAY_UAV;
2513
2514typedef struct D3D12_TEX2DMS_UAV
2515{
2516 // don't need to define anything specific for this view dimension
2517 UINT UnusedField_NothingToDefine;
2518} D3D12_TEX2DMS_UAV;
2519
2520typedef struct D3D12_TEX2DMS_ARRAY_UAV
2521{
2522 UINT FirstArraySlice;
2523 UINT ArraySize;
2524} D3D12_TEX2DMS_ARRAY_UAV;
2525
2526typedef struct D3D12_TEX3D_UAV
2527{
2528 UINT MipSlice;
2529 UINT FirstWSlice;
2530 UINT WSize;
2531} D3D12_TEX3D_UAV;
2532
2533typedef enum D3D12_UAV_DIMENSION
2534{
2535 D3D12_UAV_DIMENSION_UNKNOWN = 0,
2536 D3D12_UAV_DIMENSION_BUFFER = 1,
2537 D3D12_UAV_DIMENSION_TEXTURE1D = 2,
2538 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
2539 D3D12_UAV_DIMENSION_TEXTURE2D = 4,
2540 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
2541 D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
2542 D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
2543 D3D12_UAV_DIMENSION_TEXTURE3D = 8,
2544} D3D12_UAV_DIMENSION;
2545
2546typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
2547{
2548 DXGI_FORMAT Format;
2549 D3D12_UAV_DIMENSION ViewDimension;
2550
2551 union
2552 {
2553 D3D12_BUFFER_UAV Buffer;
2554 D3D12_TEX1D_UAV Texture1D;
2555 D3D12_TEX1D_ARRAY_UAV Texture1DArray;
2556 D3D12_TEX2D_UAV Texture2D;
2557 D3D12_TEX2D_ARRAY_UAV Texture2DArray;
2558 D3D12_TEX2DMS_UAV Texture2DMS;
2559 D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
2560 D3D12_TEX3D_UAV Texture3D;
2561 };
2562} D3D12_UNORDERED_ACCESS_VIEW_DESC;
2563
2564typedef struct D3D12_BUFFER_RTV
2565{
2566 UINT64 FirstElement;
2567 UINT NumElements;
2568} D3D12_BUFFER_RTV;
2569
2570typedef struct D3D12_TEX1D_RTV
2571{
2572 UINT MipSlice;
2573} D3D12_TEX1D_RTV;
2574
2575typedef struct D3D12_TEX1D_ARRAY_RTV
2576{
2577 UINT MipSlice;
2578 UINT FirstArraySlice;
2579 UINT ArraySize;
2580} D3D12_TEX1D_ARRAY_RTV;
2581
2582typedef struct D3D12_TEX2D_RTV
2583{
2584 UINT MipSlice;
2585 UINT PlaneSlice;
2586} D3D12_TEX2D_RTV;
2587
2588typedef struct D3D12_TEX2DMS_RTV
2589{
2590 UINT UnusedField_NothingToDefine;
2591} D3D12_TEX2DMS_RTV;
2592
2593typedef struct D3D12_TEX2D_ARRAY_RTV
2594{
2595 UINT MipSlice;
2596 UINT FirstArraySlice;
2597 UINT ArraySize;
2598 UINT PlaneSlice;
2599} D3D12_TEX2D_ARRAY_RTV;
2600
2601typedef struct D3D12_TEX2DMS_ARRAY_RTV
2602{
2603 UINT FirstArraySlice;
2604 UINT ArraySize;
2605} D3D12_TEX2DMS_ARRAY_RTV;
2606
2607typedef struct D3D12_TEX3D_RTV
2608{
2609 UINT MipSlice;
2610 UINT FirstWSlice;
2611 UINT WSize;
2612} D3D12_TEX3D_RTV;
2613
2614typedef enum D3D12_RTV_DIMENSION
2615{
2616 D3D12_RTV_DIMENSION_UNKNOWN = 0,
2617 D3D12_RTV_DIMENSION_BUFFER = 1,
2618 D3D12_RTV_DIMENSION_TEXTURE1D = 2,
2619 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
2620 D3D12_RTV_DIMENSION_TEXTURE2D = 4,
2621 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
2622 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
2623 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
2624 D3D12_RTV_DIMENSION_TEXTURE3D = 8,
2625} D3D12_RTV_DIMENSION;
2626
2627typedef struct D3D12_RENDER_TARGET_VIEW_DESC
2628{
2629 DXGI_FORMAT Format;
2630 D3D12_RTV_DIMENSION ViewDimension;
2631
2632 union
2633 {
2634 D3D12_BUFFER_RTV Buffer;
2635 D3D12_TEX1D_RTV Texture1D;
2636 D3D12_TEX1D_ARRAY_RTV Texture1DArray;
2637 D3D12_TEX2D_RTV Texture2D;
2638 D3D12_TEX2D_ARRAY_RTV Texture2DArray;
2639 D3D12_TEX2DMS_RTV Texture2DMS;
2640 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
2641 D3D12_TEX3D_RTV Texture3D;
2642 };
2643} D3D12_RENDER_TARGET_VIEW_DESC;
2644
2645typedef struct D3D12_TEX1D_DSV
2646{
2647 UINT MipSlice;
2648} D3D12_TEX1D_DSV;
2649
2650typedef struct D3D12_TEX1D_ARRAY_DSV
2651{
2652 UINT MipSlice;
2653 UINT FirstArraySlice;
2654 UINT ArraySize;
2655} D3D12_TEX1D_ARRAY_DSV;
2656
2657typedef struct D3D12_TEX2D_DSV
2658{
2659 UINT MipSlice;
2660} D3D12_TEX2D_DSV;
2661
2662typedef struct D3D12_TEX2D_ARRAY_DSV
2663{
2664 UINT MipSlice;
2665 UINT FirstArraySlice;
2666 UINT ArraySize;
2667} D3D12_TEX2D_ARRAY_DSV;
2668
2669typedef struct D3D12_TEX2DMS_DSV
2670{
2671 UINT UnusedField_NothingToDefine;
2672} D3D12_TEX2DMS_DSV;
2673
2674typedef struct D3D12_TEX2DMS_ARRAY_DSV
2675{
2676 UINT FirstArraySlice;
2677 UINT ArraySize;
2678} D3D12_TEX2DMS_ARRAY_DSV;
2679
2680typedef enum D3D12_DSV_FLAGS
2681{
2682 D3D12_DSV_FLAG_NONE = 0x0,
2683 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
2684 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
2685} D3D12_DSV_FLAGS;
2686cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )" )
2687
2688typedef enum D3D12_DSV_DIMENSION
2689{
2690 D3D12_DSV_DIMENSION_UNKNOWN = 0,
2691 D3D12_DSV_DIMENSION_TEXTURE1D = 1,
2692 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
2693 D3D12_DSV_DIMENSION_TEXTURE2D = 3,
2694 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
2695 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
2696 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
2697} D3D12_DSV_DIMENSION;
2698
2699typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
2700{
2701 DXGI_FORMAT Format;
2702 D3D12_DSV_DIMENSION ViewDimension;
2703 D3D12_DSV_FLAGS Flags;
2704
2705 union
2706 {
2707 D3D12_TEX1D_DSV Texture1D;
2708 D3D12_TEX1D_ARRAY_DSV Texture1DArray;
2709 D3D12_TEX2D_DSV Texture2D;
2710 D3D12_TEX2D_ARRAY_DSV Texture2DArray;
2711 D3D12_TEX2DMS_DSV Texture2DMS;
2712 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
2713 };
2714} D3D12_DEPTH_STENCIL_VIEW_DESC;
2715
2716typedef enum D3D12_CLEAR_FLAGS
2717{
2718 // Intentionally no flag for NONE
2719 D3D12_CLEAR_FLAG_DEPTH = 0x01,
2720 D3D12_CLEAR_FLAG_STENCIL = 0x02,
2721} D3D12_CLEAR_FLAGS;
2722cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )" )
2723
2724typedef enum D3D12_FENCE_FLAGS
2725{
2726 D3D12_FENCE_FLAG_NONE = 0x0,
2727 D3D12_FENCE_FLAG_SHARED = 0x1,
2728 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
2729 D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
2730} D3D12_FENCE_FLAGS;
2731cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )" )
2732
2733typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
2734{
2735 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
2736 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
2737 D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
2738 D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
2739 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
2740} D3D12_DESCRIPTOR_HEAP_TYPE;
2741
2742typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
2743{
2744 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
2745 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
2746} D3D12_DESCRIPTOR_HEAP_FLAGS;
2747cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )" )
2748
2749typedef struct D3D12_DESCRIPTOR_HEAP_DESC
2750{
2751 D3D12_DESCRIPTOR_HEAP_TYPE Type;
2752 UINT NumDescriptors;
2753 D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
2754 UINT NodeMask;
2755} D3D12_DESCRIPTOR_HEAP_DESC;
2756
2757typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
2758{
2759 D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
2760 D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
2761 D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
2762 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
2763} D3D12_DESCRIPTOR_RANGE_TYPE;
2764
2765typedef struct D3D12_DESCRIPTOR_RANGE
2766{
2767 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2768 UINT NumDescriptors;
2769 UINT BaseShaderRegister;
2770 UINT RegisterSpace;
2771 UINT OffsetInDescriptorsFromTableStart;
2772} D3D12_DESCRIPTOR_RANGE;
2773
2774
2775typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
2776{
2777 UINT NumDescriptorRanges;
2778 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
2779} D3D12_ROOT_DESCRIPTOR_TABLE;
2780
2781
2782typedef struct D3D12_ROOT_CONSTANTS
2783{
2784 UINT ShaderRegister;
2785 UINT RegisterSpace;
2786 UINT Num32BitValues;
2787} D3D12_ROOT_CONSTANTS;
2788
2789typedef struct D3D12_ROOT_DESCRIPTOR
2790{
2791 UINT ShaderRegister;
2792 UINT RegisterSpace;
2793} D3D12_ROOT_DESCRIPTOR;
2794
2795typedef enum D3D12_SHADER_VISIBILITY
2796{
2797 D3D12_SHADER_VISIBILITY_ALL = 0,
2798 D3D12_SHADER_VISIBILITY_VERTEX = 1,
2799 D3D12_SHADER_VISIBILITY_HULL = 2,
2800 D3D12_SHADER_VISIBILITY_DOMAIN = 3,
2801 D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
2802 D3D12_SHADER_VISIBILITY_PIXEL = 5,
2803 D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
2804 D3D12_SHADER_VISIBILITY_MESH = 7,
2805} D3D12_SHADER_VISIBILITY;
2806
2807typedef enum D3D12_ROOT_PARAMETER_TYPE
2808{
2809 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
2810 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
2811 D3D12_ROOT_PARAMETER_TYPE_CBV,
2812 D3D12_ROOT_PARAMETER_TYPE_SRV,
2813 D3D12_ROOT_PARAMETER_TYPE_UAV
2814} D3D12_ROOT_PARAMETER_TYPE;
2815
2816typedef struct D3D12_ROOT_PARAMETER
2817{
2818 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2819 union
2820 {
2821 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
2822 D3D12_ROOT_CONSTANTS Constants;
2823 D3D12_ROOT_DESCRIPTOR Descriptor;
2824 };
2825 D3D12_SHADER_VISIBILITY ShaderVisibility;
2826} D3D12_ROOT_PARAMETER;
2827
2828typedef enum D3D12_ROOT_SIGNATURE_FLAGS
2829{
2830 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
2831 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
2832 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
2833 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
2834 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
2835 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
2836 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
2837 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
2838 D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
2839 D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
2840 D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
2841 D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
2842 D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
2843} D3D12_ROOT_SIGNATURE_FLAGS;
2844cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )" )
2845
2846
2847typedef enum D3D12_STATIC_BORDER_COLOR
2848{
2849 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
2850 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
2851 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
2852 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT, // 0,0,0,1
2853 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT, // 1,1,1,1
2854
2855} D3D12_STATIC_BORDER_COLOR;
2856
2857typedef struct D3D12_STATIC_SAMPLER_DESC
2858{
2859 D3D12_FILTER Filter;
2860 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2861 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2862 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2863 FLOAT MipLODBias;
2864 UINT MaxAnisotropy;
2865 D3D12_COMPARISON_FUNC ComparisonFunc;
2866 D3D12_STATIC_BORDER_COLOR BorderColor;
2867 FLOAT MinLOD;
2868 FLOAT MaxLOD;
2869 UINT ShaderRegister;
2870 UINT RegisterSpace;
2871 D3D12_SHADER_VISIBILITY ShaderVisibility;
2872} D3D12_STATIC_SAMPLER_DESC;
2873
2874typedef struct D3D12_STATIC_SAMPLER_DESC1
2875{
2876 D3D12_FILTER Filter;
2877 D3D12_TEXTURE_ADDRESS_MODE AddressU;
2878 D3D12_TEXTURE_ADDRESS_MODE AddressV;
2879 D3D12_TEXTURE_ADDRESS_MODE AddressW;
2880 FLOAT MipLODBias;
2881 UINT MaxAnisotropy;
2882 D3D12_COMPARISON_FUNC ComparisonFunc;
2883 D3D12_STATIC_BORDER_COLOR BorderColor;
2884 FLOAT MinLOD;
2885 FLOAT MaxLOD;
2886 UINT ShaderRegister;
2887 UINT RegisterSpace;
2888 D3D12_SHADER_VISIBILITY ShaderVisibility;
2889 D3D12_SAMPLER_FLAGS Flags;
2890} D3D12_STATIC_SAMPLER_DESC1;
2891
2892typedef struct D3D12_ROOT_SIGNATURE_DESC
2893{
2894 UINT NumParameters;
2895 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
2896 UINT NumStaticSamplers;
2897 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2898 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2899} D3D12_ROOT_SIGNATURE_DESC;
2900
2901typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
2902{
2903 D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
2904 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
2905 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
2906 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2907 D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
2908 D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
2909} D3D12_DESCRIPTOR_RANGE_FLAGS;
2910cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )")
2911
2912typedef struct D3D12_DESCRIPTOR_RANGE1
2913{
2914 D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
2915 UINT NumDescriptors;
2916 UINT BaseShaderRegister;
2917 UINT RegisterSpace;
2918 D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
2919 UINT OffsetInDescriptorsFromTableStart;
2920} D3D12_DESCRIPTOR_RANGE1;
2921
2922typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
2923{
2924 UINT NumDescriptorRanges;
2925 [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
2926} D3D12_ROOT_DESCRIPTOR_TABLE1;
2927
2928typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
2929{
2930 D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
2931 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
2932 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
2933 D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
2934} D3D12_ROOT_DESCRIPTOR_FLAGS;
2935cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )")
2936
2937typedef struct D3D12_ROOT_DESCRIPTOR1
2938{
2939 UINT ShaderRegister;
2940 UINT RegisterSpace;
2941 D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
2942} D3D12_ROOT_DESCRIPTOR1;
2943
2944typedef struct D3D12_ROOT_PARAMETER1
2945{
2946 D3D12_ROOT_PARAMETER_TYPE ParameterType;
2947 union
2948 {
2949 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
2950 D3D12_ROOT_CONSTANTS Constants;
2951 D3D12_ROOT_DESCRIPTOR1 Descriptor;
2952 };
2953 D3D12_SHADER_VISIBILITY ShaderVisibility;
2954} D3D12_ROOT_PARAMETER1;
2955
2956typedef struct D3D12_ROOT_SIGNATURE_DESC1
2957{
2958 UINT NumParameters;
2959 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2960 UINT NumStaticSamplers;
2961 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
2962 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2963} D3D12_ROOT_SIGNATURE_DESC1;
2964
2965typedef struct D3D12_ROOT_SIGNATURE_DESC2
2966{
2967 UINT NumParameters;
2968 [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
2969 UINT NumStaticSamplers;
2970 [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC1* pStaticSamplers;
2971 D3D12_ROOT_SIGNATURE_FLAGS Flags;
2972} D3D12_ROOT_SIGNATURE_DESC2;
2973
2974
2975typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
2976{
2977 D3D_ROOT_SIGNATURE_VERSION Version;
2978 union
2979 {
2980 D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
2981 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
2982 D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
2983 };
2984} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
2985
2986[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
2987interface ID3D12RootSignatureDeserializer
2988 : IUnknown
2989{
2990 const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
2991};
2992
2993[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
2994interface ID3D12VersionedRootSignatureDeserializer
2995 : IUnknown
2996{
2997 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
2998 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
2999};
3000
3001cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
3002cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3003cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3004cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3005cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3006cpp_quote( "" )
3007cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
3008cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
3009cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
3010cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3011cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3012cpp_quote( "" )
3013cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
3014cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3015cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3016cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3017cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3018cpp_quote( "" )
3019cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
3020cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3021cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3022cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3023cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3024cpp_quote( "" )
3025cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
3026cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3027cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3028cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3029cpp_quote( "" )
3030cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
3031cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
3032cpp_quote( " _Out_ ID3DBlob** ppBlob," )
3033cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
3034cpp_quote( "" )
3035cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
3036cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3037cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3038cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3039cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3040cpp_quote( "" )
3041cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
3042cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
3043cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
3044cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
3045cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
3046cpp_quote( "" )
3047cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(")
3048cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3049cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3050cpp_quote(" _In_ LPCWSTR RootSignatureSubobjectName,")
3051cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3052cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3053cpp_quote("")
3054cpp_quote("HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(")
3055cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
3056cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
3057cpp_quote(" _In_opt_ LPCWSTR RootSignatureSubobjectName,")
3058cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
3059cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
3060cpp_quote("")
3061
3062typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
3063{
3064 SIZE_T ptr;
3065} D3D12_CPU_DESCRIPTOR_HANDLE;
3066
3067
3068typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
3069{
3070 UINT64 ptr;
3071} D3D12_GPU_DESCRIPTOR_HANDLE;
3072
3073cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
3074cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
3075typedef struct D3D12_DISCARD_REGION
3076{
3077 UINT NumRects;
3078 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
3079 UINT FirstSubresource;
3080 UINT NumSubresources;
3081} D3D12_DISCARD_REGION;
3082
3083typedef enum D3D12_QUERY_HEAP_TYPE
3084{
3085 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
3086 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
3087 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
3088 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
3089 D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
3090 D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
3091 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
3092
3093} D3D12_QUERY_HEAP_TYPE;
3094
3095typedef struct D3D12_QUERY_HEAP_DESC
3096{
3097 D3D12_QUERY_HEAP_TYPE Type;
3098 UINT Count;
3099 UINT NodeMask;
3100} D3D12_QUERY_HEAP_DESC;
3101
3102typedef enum D3D12_QUERY_TYPE
3103{
3104 D3D12_QUERY_TYPE_OCCLUSION = 0,
3105 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
3106 D3D12_QUERY_TYPE_TIMESTAMP = 2,
3107 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
3108 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
3109 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
3110 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
3111 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
3112 D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
3113 D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
3114
3115} D3D12_QUERY_TYPE;
3116
3117typedef enum D3D12_PREDICATION_OP
3118{
3119 D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
3120 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
3121} D3D12_PREDICATION_OP;
3122
3123typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
3124{
3125 UINT64 IAVertices;
3126 UINT64 IAPrimitives;
3127 UINT64 VSInvocations;
3128 UINT64 GSInvocations;
3129 UINT64 GSPrimitives;
3130 UINT64 CInvocations;
3131 UINT64 CPrimitives;
3132 UINT64 PSInvocations;
3133 UINT64 HSInvocations;
3134 UINT64 DSInvocations;
3135 UINT64 CSInvocations;
3136} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
3137
3138typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
3139{
3140 UINT64 IAVertices;
3141 UINT64 IAPrimitives;
3142 UINT64 VSInvocations;
3143 UINT64 GSInvocations;
3144 UINT64 GSPrimitives;
3145 UINT64 CInvocations;
3146 UINT64 CPrimitives;
3147 UINT64 PSInvocations;
3148 UINT64 HSInvocations;
3149 UINT64 DSInvocations;
3150 UINT64 CSInvocations;
3151 UINT64 ASInvocations;
3152 UINT64 MSInvocations;
3153 UINT64 MSPrimitives;
3154} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
3155
3156typedef struct D3D12_QUERY_DATA_SO_STATISTICS
3157{
3158 UINT64 NumPrimitivesWritten;
3159 UINT64 PrimitivesStorageNeeded;
3160} D3D12_QUERY_DATA_SO_STATISTICS;
3161
3162typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
3163{
3164 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3165 UINT64 SizeInBytes;
3166 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
3167} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
3168
3169typedef struct D3D12_DRAW_ARGUMENTS
3170{
3171 UINT VertexCountPerInstance;
3172 UINT InstanceCount;
3173 UINT StartVertexLocation;
3174 UINT StartInstanceLocation;
3175} D3D12_DRAW_ARGUMENTS;
3176
3177typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
3178{
3179 UINT IndexCountPerInstance;
3180 UINT InstanceCount;
3181 UINT StartIndexLocation;
3182 INT BaseVertexLocation;
3183 UINT StartInstanceLocation;
3184} D3D12_DRAW_INDEXED_ARGUMENTS;
3185
3186typedef struct D3D12_DISPATCH_ARGUMENTS
3187{
3188 UINT ThreadGroupCountX;
3189 UINT ThreadGroupCountY;
3190 UINT ThreadGroupCountZ;
3191} D3D12_DISPATCH_ARGUMENTS;
3192
3193typedef struct D3D12_VERTEX_BUFFER_VIEW
3194{
3195 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3196 UINT SizeInBytes;
3197 UINT StrideInBytes;
3198} D3D12_VERTEX_BUFFER_VIEW;
3199
3200typedef struct D3D12_INDEX_BUFFER_VIEW
3201{
3202 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
3203 UINT SizeInBytes;
3204 DXGI_FORMAT Format;
3205} D3D12_INDEX_BUFFER_VIEW;
3206
3207typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
3208{
3209 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
3210 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
3211 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
3212 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
3213 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
3214 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
3215 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
3216 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
3217 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
3218 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
3219 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
3220 D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT,
3221} D3D12_INDIRECT_ARGUMENT_TYPE;
3222
3223typedef struct D3D12_INDIRECT_ARGUMENT_DESC
3224{
3225 D3D12_INDIRECT_ARGUMENT_TYPE Type;
3226
3227 union
3228 {
3229 struct
3230 {
3231 UINT Slot;
3232 } VertexBuffer;
3233
3234 struct
3235 {
3236 UINT RootParameterIndex;
3237 UINT DestOffsetIn32BitValues;
3238 UINT Num32BitValuesToSet;
3239 } Constant;
3240
3241 struct
3242 {
3243 UINT RootParameterIndex;
3244 } ConstantBufferView;
3245
3246 struct
3247 {
3248 UINT RootParameterIndex;
3249 } ShaderResourceView;
3250
3251 struct
3252 {
3253 UINT RootParameterIndex;
3254 } UnorderedAccessView;
3255
3256 // Tier 1.1 support
3257 struct
3258 {
3259 UINT RootParameterIndex;
3260 UINT DestOffsetIn32BitValues;
3261 } IncrementingConstant;
3262 };
3263} D3D12_INDIRECT_ARGUMENT_DESC;
3264
3265typedef struct D3D12_COMMAND_SIGNATURE_DESC
3266{
3267 // The number of bytes between each drawing structure
3268 UINT ByteStride;
3269 UINT NumArgumentDescs;
3270 [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
3271 UINT NodeMask;
3272} D3D12_COMMAND_SIGNATURE_DESC;
3273
3274interface ID3D12Device;
3275
3276[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
3277interface ID3D12Object
3278 : IUnknown
3279{
3280 HRESULT GetPrivateData(
3281 [annotation("_In_")] REFGUID guid,
3282 [annotation("_Inout_")] UINT* pDataSize,
3283 [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
3284 HRESULT SetPrivateData(
3285 [annotation("_In_")] REFGUID guid,
3286 [annotation("_In_")] UINT DataSize,
3287 [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
3288 HRESULT SetPrivateDataInterface(
3289 [annotation("_In_")] REFGUID guid,
3290 [annotation("_In_opt_")] const IUnknown* pData );
3291 HRESULT SetName(
3292 [annotation("_In_z_")] LPCWSTR Name );
3293}
3294
3295[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
3296interface ID3D12DeviceChild
3297 : ID3D12Object
3298{
3299 HRESULT GetDevice(
3300 [in] REFIID riid,
3301 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
3302 );
3303}
3304
3305[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
3306interface ID3D12Pageable
3307 : ID3D12DeviceChild
3308{
3309}
3310
3311[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
3312interface ID3D12Heap
3313 : ID3D12Pageable
3314{
3315 D3D12_HEAP_DESC GetDesc();
3316}
3317
3318[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
3319interface ID3D12Resource
3320 : ID3D12Pageable
3321{
3322 HRESULT Map(
3323 UINT Subresource,
3324 [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
3325 [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
3326
3327 void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
3328
3329 D3D12_RESOURCE_DESC GetDesc();
3330
3331 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
3332
3333 HRESULT WriteToSubresource(
3334 UINT DstSubresource,
3335 [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
3336 [annotation("_In_")] const void* pSrcData,
3337 UINT SrcRowPitch,
3338 UINT SrcDepthPitch );
3339
3340 HRESULT ReadFromSubresource(
3341 [annotation("_Out_")] void* pDstData,
3342 UINT DstRowPitch,
3343 UINT DstDepthPitch,
3344 UINT SrcSubresource,
3345 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
3346
3347 HRESULT GetHeapProperties(
3348 [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
3349 [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
3350 );
3351}
3352
3353[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
3354interface ID3D12CommandAllocator
3355 : ID3D12Pageable
3356{
3357 HRESULT Reset();
3358}
3359
3360[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
3361interface ID3D12Fence
3362 : ID3D12Pageable
3363{
3364 UINT64 GetCompletedValue();
3365 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
3366 HRESULT Signal(UINT64 Value);
3367};
3368
3369[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
3370interface ID3D12Fence1
3371 : ID3D12Fence
3372{
3373 D3D12_FENCE_FLAGS GetCreationFlags();
3374};
3375
3376
3377[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
3378interface ID3D12PipelineState
3379 : ID3D12Pageable
3380{
3381 HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
3382}
3383
3384[uuid(5646804c-9638-48f7-9182-b3ee5a6b60fb), object, local, pointer_default(unique)]
3385interface ID3D12PipelineState1
3386 : ID3D12PipelineState
3387{
3388 HRESULT GetRootSignature(
3389 [in] REFIID riid, // Expected ID3D12RootSignature
3390 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3391}
3392
3393[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
3394interface ID3D12DescriptorHeap
3395 : ID3D12Pageable
3396{
3397 D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
3398
3399 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
3400 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
3401}
3402
3403[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
3404interface ID3D12QueryHeap
3405 : ID3D12Pageable
3406{
3407};
3408
3409[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
3410interface ID3D12CommandSignature
3411 : ID3D12Pageable
3412{
3413};
3414
3415[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
3416interface ID3D12CommandList
3417 : ID3D12DeviceChild
3418{
3419 D3D12_COMMAND_LIST_TYPE GetType();
3420}
3421
3422// Superseded by ID3D12GraphicsCommandList1
3423[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
3424interface ID3D12GraphicsCommandList
3425 : ID3D12CommandList
3426{
3427 HRESULT Close();
3428
3429 HRESULT Reset(
3430 [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
3431 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
3432 );
3433
3434 void ClearState(
3435 [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
3436 );
3437
3438 void DrawInstanced(
3439 [annotation("_In_")] UINT VertexCountPerInstance,
3440 [annotation("_In_")] UINT InstanceCount,
3441 [annotation("_In_")] UINT StartVertexLocation,
3442 [annotation("_In_")] UINT StartInstanceLocation
3443 );
3444
3445 void DrawIndexedInstanced(
3446 [annotation("_In_")] UINT IndexCountPerInstance,
3447 [annotation("_In_")] UINT InstanceCount,
3448 [annotation("_In_")] UINT StartIndexLocation,
3449 [annotation("_In_")] INT BaseVertexLocation,
3450 [annotation("_In_")] UINT StartInstanceLocation
3451 );
3452
3453 void Dispatch(
3454 [annotation("_In_")] UINT ThreadGroupCountX,
3455 [annotation("_In_")] UINT ThreadGroupCountY,
3456 [annotation("_In_")] UINT ThreadGroupCountZ
3457 );
3458
3459 void CopyBufferRegion(
3460 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3461 UINT64 DstOffset,
3462 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3463 UINT64 SrcOffset,
3464 UINT64 NumBytes
3465 );
3466
3467 void CopyTextureRegion(
3468 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
3469 UINT DstX, UINT DstY, UINT DstZ,
3470 [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
3471 [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
3472 );
3473
3474 void CopyResource(
3475 [annotation("_In_")] ID3D12Resource* pDstResource,
3476 [annotation("_In_")] ID3D12Resource* pSrcResource
3477 );
3478
3479 void CopyTiles(
3480 [annotation("_In_")] ID3D12Resource* pTiledResource,
3481 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
3482 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
3483 [annotation("_In_")] ID3D12Resource* pBuffer,
3484 UINT64 BufferStartOffsetInBytes,
3485 D3D12_TILE_COPY_FLAGS Flags
3486 );
3487
3488 void ResolveSubresource(
3489 [annotation("_In_")] ID3D12Resource* pDstResource,
3490 [annotation("_In_")] UINT DstSubresource,
3491 [annotation("_In_")] ID3D12Resource* pSrcResource,
3492 [annotation("_In_")] UINT SrcSubresource,
3493 [annotation("_In_")] DXGI_FORMAT Format
3494 );
3495
3496 void IASetPrimitiveTopology(
3497 [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
3498 );
3499
3500 void RSSetViewports(
3501 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
3502 [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
3503 );
3504
3505 void RSSetScissorRects(
3506 [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
3507 [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
3508 );
3509
3510 void OMSetBlendFactor(
3511 [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
3512 );
3513
3514 void OMSetStencilRef(
3515 [annotation("_In_")] UINT StencilRef
3516 );
3517
3518 void SetPipelineState(
3519 [annotation("_In_")] ID3D12PipelineState* pPipelineState
3520 );
3521
3522 void ResourceBarrier(
3523 [annotation("_In_")] UINT NumBarriers,
3524 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
3525 );
3526
3527 void ExecuteBundle(
3528 [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
3529 );
3530
3531 void SetDescriptorHeaps(
3532 [annotation("_In_")] UINT NumDescriptorHeaps,
3533 [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
3534 );
3535
3536 void SetComputeRootSignature(
3537 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3538 );
3539
3540 void SetGraphicsRootSignature(
3541 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
3542 );
3543
3544 void SetComputeRootDescriptorTable(
3545 [annotation("_In_")] UINT RootParameterIndex,
3546 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3547 );
3548
3549 void SetGraphicsRootDescriptorTable(
3550 [annotation("_In_")] UINT RootParameterIndex,
3551 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
3552 );
3553
3554 // Single constant
3555 void SetComputeRoot32BitConstant(
3556 [annotation("_In_")] UINT RootParameterIndex,
3557 [annotation("_In_")] UINT SrcData,
3558 [annotation("_In_")] UINT DestOffsetIn32BitValues
3559 );
3560
3561 void SetGraphicsRoot32BitConstant(
3562 [annotation("_In_")] UINT RootParameterIndex,
3563 [annotation("_In_")] UINT SrcData,
3564 [annotation("_In_")] UINT DestOffsetIn32BitValues
3565 );
3566
3567 // Group of constants
3568 void SetComputeRoot32BitConstants(
3569 [annotation("_In_")] UINT RootParameterIndex,
3570 [annotation("_In_")] UINT Num32BitValuesToSet,
3571 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3572 [annotation("_In_")] UINT DestOffsetIn32BitValues
3573 );
3574
3575 void SetGraphicsRoot32BitConstants(
3576 [annotation("_In_")] UINT RootParameterIndex,
3577 [annotation("_In_")] UINT Num32BitValuesToSet,
3578 [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
3579 [annotation("_In_")] UINT DestOffsetIn32BitValues
3580 );
3581
3582 // CBV
3583 void SetComputeRootConstantBufferView(
3584 [annotation("_In_")] UINT RootParameterIndex,
3585 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3586 );
3587
3588 void SetGraphicsRootConstantBufferView(
3589 [annotation("_In_")] UINT RootParameterIndex,
3590 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3591 );
3592
3593 // SRV
3594 void SetComputeRootShaderResourceView(
3595 [annotation("_In_")] UINT RootParameterIndex,
3596 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3597 );
3598
3599 void SetGraphicsRootShaderResourceView(
3600 [annotation("_In_")] UINT RootParameterIndex,
3601 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3602 );
3603
3604 // UAV
3605 void SetComputeRootUnorderedAccessView(
3606 [annotation("_In_")] UINT RootParameterIndex,
3607 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3608 );
3609
3610 void SetGraphicsRootUnorderedAccessView(
3611 [annotation("_In_")] UINT RootParameterIndex,
3612 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
3613 );
3614
3615 void IASetIndexBuffer(
3616 [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
3617 );
3618
3619 void IASetVertexBuffers(
3620 [annotation("_In_")] UINT StartSlot,
3621 [annotation("_In_")] UINT NumViews,
3622 [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
3623 );
3624
3625 void SOSetTargets(
3626 [annotation("_In_")] UINT StartSlot,
3627 [annotation("_In_")] UINT NumViews,
3628 [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
3629 );
3630
3631 void OMSetRenderTargets(
3632 [annotation("_In_")] UINT NumRenderTargetDescriptors,
3633 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
3634 [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
3635 [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
3636 );
3637
3638 void ClearDepthStencilView(
3639 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3640 [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
3641 [annotation("_In_")] FLOAT Depth,
3642 [annotation("_In_")] UINT8 Stencil,
3643 [annotation("_In_")] UINT NumRects,
3644 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3645 );
3646
3647 void ClearRenderTargetView(
3648 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3649 [annotation("_In_")] const FLOAT ColorRGBA[4],
3650 [annotation("_In_")] UINT NumRects,
3651 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3652 );
3653
3654 void ClearUnorderedAccessViewUint(
3655 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3656 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3657 [annotation("_In_")] ID3D12Resource* pResource,
3658 [annotation("_In_")] const UINT Values[4],
3659 [annotation("_In_")] UINT NumRects,
3660 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3661 );
3662
3663 void ClearUnorderedAccessViewFloat(
3664 [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3665 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3666 [annotation("_In_")] ID3D12Resource* pResource,
3667 [annotation("_In_")] const FLOAT Values[4],
3668 [annotation("_In_")] UINT NumRects,
3669 [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
3670 );
3671
3672 void DiscardResource(
3673 [annotation("_In_")] ID3D12Resource* pResource,
3674 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
3675 );
3676
3677 void BeginQuery(
3678 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3679 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3680 [annotation("_In_")] UINT Index
3681 );
3682
3683 void EndQuery(
3684 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3685 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3686 [annotation("_In_")] UINT Index
3687 );
3688
3689 void ResolveQueryData(
3690 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
3691 [annotation("_In_")] D3D12_QUERY_TYPE Type,
3692 [annotation("_In_")] UINT StartIndex,
3693 [annotation("_In_")] UINT NumQueries,
3694 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
3695 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
3696 );
3697
3698 void SetPredication(
3699 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
3700 [annotation("_In_")] UINT64 AlignedBufferOffset,
3701 [annotation("_In_")] D3D12_PREDICATION_OP Operation
3702 );
3703
3704 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3705 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3706 void EndEvent();
3707
3708 void ExecuteIndirect(
3709 [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
3710 [annotation("_In_")] UINT MaxCommandCount,
3711 [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
3712 [annotation("_In_")] UINT64 ArgumentBufferOffset,
3713 [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
3714 [annotation("_In_")] UINT64 CountBufferOffset
3715 );
3716}
3717
3718[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
3719interface ID3D12GraphicsCommandList1
3720 : ID3D12GraphicsCommandList
3721{
3722 void AtomicCopyBufferUINT(
3723 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3724 UINT64 DstOffset,
3725 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3726 UINT64 SrcOffset,
3727 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3728 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3729 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3730 );
3731
3732 // UINT64 is only valid on UMA architectures
3733 void AtomicCopyBufferUINT64(
3734 [annotation("_In_")] ID3D12Resource* pDstBuffer,
3735 UINT64 DstOffset,
3736 [annotation("_In_")] ID3D12Resource* pSrcBuffer,
3737 UINT64 SrcOffset,
3738 UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
3739 [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
3740 [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
3741 );
3742
3743 void OMSetDepthBounds(
3744 [annotation("_In_")] FLOAT Min,
3745 [annotation("_In_")] FLOAT Max
3746 );
3747
3748 void SetSamplePositions(
3749 [annotation("_In_")] UINT NumSamplesPerPixel,
3750 [annotation("_In_")] UINT NumPixels,
3751 [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
3752 );
3753
3754 void ResolveSubresourceRegion(
3755 [annotation("_In_")] ID3D12Resource* pDstResource,
3756 [annotation("_In_")] UINT DstSubresource,
3757 [annotation("_In_")] UINT DstX,
3758 [annotation("_In_")] UINT DstY,
3759 [annotation("_In_")] ID3D12Resource* pSrcResource,
3760 [annotation("_In_")] UINT SrcSubresource,
3761 [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
3762 [annotation("_In_")] DXGI_FORMAT Format,
3763 [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
3764 );
3765
3766 void SetViewInstanceMask(
3767 [annotation("_In_")] UINT Mask
3768 );
3769
3770}
3771
3772typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
3773{
3774 D3D12_GPU_VIRTUAL_ADDRESS Dest;
3775 UINT32 Value;
3776} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
3777
3778typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
3779{
3780 D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
3781 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
3782 D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
3783
3784} D3D12_WRITEBUFFERIMMEDIATE_MODE;
3785
3786[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
3787interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
3788{
3789 void WriteBufferImmediate(
3790 UINT Count,
3791 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3792 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
3793 );
3794}
3795
3796[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
3797interface ID3D12CommandQueue
3798 : ID3D12Pageable
3799{
3800 void UpdateTileMappings(
3801 [annotation("_In_")] ID3D12Resource* pResource,
3802 UINT NumResourceRegions,
3803 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
3804 [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
3805 [annotation("_In_opt_")] ID3D12Heap* pHeap,
3806 UINT NumRanges,
3807 [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
3808 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
3809 [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
3810 D3D12_TILE_MAPPING_FLAGS Flags );
3811
3812 void CopyTileMappings(
3813 [annotation("_In_")] ID3D12Resource* pDstResource,
3814 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
3815 [annotation("_In_")] ID3D12Resource* pSrcResource,
3816 [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
3817 [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
3818 D3D12_TILE_MAPPING_FLAGS Flags );
3819
3820 void ExecuteCommandLists(
3821 [annotation("_In_")] UINT NumCommandLists,
3822 [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
3823 );
3824
3825 void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3826 void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
3827 void EndEvent();
3828
3829 HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
3830 HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
3831
3832 HRESULT GetTimestampFrequency(
3833 [annotation("_Out_")] UINT64* pFrequency
3834 );
3835
3836 HRESULT GetClockCalibration(
3837 [annotation("_Out_")] UINT64* pGpuTimestamp,
3838 [annotation("_Out_")] UINT64* pCpuTimestamp
3839 );
3840
3841 D3D12_COMMAND_QUEUE_DESC GetDesc();
3842}
3843
3844//
3845// Dynamic priority command queue features start
3846//
3847
3848typedef struct D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS
3849{
3850 [annotation("_Out_")] UINT ComputeQueuesPer3DQueue; // 0 means scheduling groups do not group multiple queues.
3851} D3D12_FEATURE_DATA_HARDWARE_SCHEDULING_QUEUE_GROUPINGS;
3852
3853typedef enum D3D12_COMMAND_QUEUE_PROCESS_PRIORITY
3854{
3855 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_NORMAL = 0,
3856 D3D12_COMMAND_QUEUE_PROCESS_PRIORITY_HIGH = 1,
3857} D3D12_COMMAND_QUEUE_PROCESS_PRIORITY;
3858
3859typedef enum D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY
3860{
3861 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_IDLE = 0,
3862 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_DEFAULT = 1,
3863 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_NORMAL_0 = 2,
3864
3865 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_0 = 18,
3866 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_1 = 19,
3867 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_2 = 20,
3868 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_3 = 21,
3869 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_4 = 22,
3870 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_5 = 23,
3871 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_6 = 24,
3872 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_7 = 25,
3873 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_8 = 26,
3874 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_9 = 27,
3875 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_10 = 28,
3876 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_11 = 29,
3877 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_12 = 30,
3878 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_SOFT_REALTIME_13 = 31,
3879
3880 D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY_HARD_REALTIME = 32,
3881} D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY;
3882
3883[uuid(3a3c3165-0ee7-4b8e-a0af-6356b4c3bbb9), object, local, pointer_default(unique)]
3884interface ID3D12CommandQueue1
3885 : ID3D12CommandQueue
3886{
3887 HRESULT SetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY Priority);
3888 HRESULT GetProcessPriority(D3D12_COMMAND_QUEUE_PROCESS_PRIORITY* pOutValue);
3889
3890 HRESULT SetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY Priority);
3891 HRESULT GetGlobalPriority(D3D12_COMMAND_QUEUE_GLOBAL_PRIORITY* pOutValue);
3892}
3893
3894//
3895// Dynamic priority command queue features end
3896//
3897
3898
3899[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
3900interface ID3D12Device
3901 : ID3D12Object
3902{
3903 UINT GetNodeCount();
3904
3905 HRESULT CreateCommandQueue(
3906 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
3907 [in] REFIID riid, // Expected: ID3D12CommandQueue
3908 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
3909 );
3910
3911 HRESULT CreateCommandAllocator(
3912 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3913 [in] REFIID riid, // Expected: ID3D12CommandAllocator
3914 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
3915 );
3916
3917 HRESULT CreateGraphicsPipelineState(
3918 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
3919 [in] REFIID riid, // Expected: ID3D12PipelineState
3920 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3921 );
3922
3923 HRESULT CreateComputePipelineState(
3924 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
3925 [in] REFIID riid, // Expected: ID3D12PipelineState
3926 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
3927 );
3928
3929 HRESULT CreateCommandList(
3930 [annotation("_In_")] UINT nodeMask,
3931 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
3932 [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
3933 [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
3934 [in] REFIID riid, // Expected: ID3D12CommandList
3935 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
3936 );
3937
3938 HRESULT CheckFeatureSupport(
3939 D3D12_FEATURE Feature,
3940 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
3941 UINT FeatureSupportDataSize
3942 );
3943
3944 HRESULT CreateDescriptorHeap(
3945 [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
3946 [in] REFIID riid, // Expected ID3D12DescriptorHeap
3947 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
3948
3949 UINT GetDescriptorHandleIncrementSize(
3950 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
3951
3952 HRESULT CreateRootSignature(
3953 [annotation("_In_")] UINT nodeMask,
3954 [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
3955 [annotation("_In_")] SIZE_T blobLengthInBytes,
3956 [in] REFIID riid, // Expected ID3D12RootSignature
3957 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
3958
3959 void CreateConstantBufferView(
3960 [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
3961 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3962
3963 void CreateShaderResourceView(
3964 [annotation("_In_opt_")] ID3D12Resource* pResource,
3965 [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
3966 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3967
3968 void CreateUnorderedAccessView(
3969 [annotation("_In_opt_")] ID3D12Resource* pResource,
3970 [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
3971 [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
3972 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3973
3974 void CreateRenderTargetView(
3975 [annotation("_In_opt_")] ID3D12Resource* pResource,
3976 [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
3977 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3978
3979 void CreateDepthStencilView(
3980 [annotation("_In_opt_")] ID3D12Resource* pResource,
3981 [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
3982 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3983
3984 void CreateSampler(
3985 [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
3986 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
3987
3988 void CopyDescriptors(
3989 [annotation("_In_")] UINT NumDestDescriptorRanges,
3990 [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
3991 [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
3992 [annotation("_In_")] UINT NumSrcDescriptorRanges,
3993 [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
3994 [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
3995 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
3996
3997 void CopyDescriptorsSimple(
3998 [annotation("_In_")] UINT NumDescriptors,
3999 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
4000 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
4001 [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
4002
4003 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
4004 [annotation("_In_")] UINT visibleMask,
4005 [annotation("_In_")] UINT numResourceDescs,
4006 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
4007
4008 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
4009 [annotation("_In_")] UINT nodeMask,
4010 D3D12_HEAP_TYPE heapType
4011 );
4012
4013 HRESULT CreateCommittedResource(
4014 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4015 D3D12_HEAP_FLAGS HeapFlags,
4016 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4017 D3D12_RESOURCE_STATES InitialResourceState,
4018 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4019 [in] REFIID riidResource, // Expected: ID3D12Resource*
4020 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
4021
4022 HRESULT CreateHeap(
4023 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4024 [in] REFIID riid, // Expected: ID3D12Heap*
4025 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
4026
4027 HRESULT CreatePlacedResource(
4028 [annotation("_In_")] ID3D12Heap* pHeap,
4029 UINT64 HeapOffset,
4030 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4031 D3D12_RESOURCE_STATES InitialState,
4032 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4033 [in] REFIID riid, // Expected: ID3D12Resource*
4034 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4035
4036 HRESULT CreateReservedResource(
4037 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4038 D3D12_RESOURCE_STATES InitialState,
4039 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4040 [in] REFIID riid, // Expected: ID3D12Resource*
4041 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
4042
4043 HRESULT CreateSharedHandle(
4044 [annotation("_In_")] ID3D12DeviceChild* pObject,
4045 [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
4046 DWORD Access,
4047 [annotation("_In_opt_")] LPCWSTR Name,
4048 [annotation("_Out_")] HANDLE* pHandle );
4049
4050 HRESULT OpenSharedHandle(
4051 [annotation("_In_")] HANDLE NTHandle,
4052 [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
4053 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
4054
4055 HRESULT OpenSharedHandleByName(
4056 [annotation("_In_")] LPCWSTR Name,
4057 DWORD Access,
4058 [out, annotation("_Out_")] HANDLE* pNTHandle );
4059
4060 HRESULT MakeResident(
4061 UINT NumObjects,
4062 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4063
4064 HRESULT Evict(
4065 UINT NumObjects,
4066 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
4067
4068 HRESULT CreateFence(
4069 UINT64 InitialValue,
4070 D3D12_FENCE_FLAGS Flags,
4071 [in] REFIID riid, // Expected: ID3D12Fence
4072 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
4073
4074 HRESULT GetDeviceRemovedReason();
4075
4076 void GetCopyableFootprints(
4077 [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
4078 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
4079 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
4080 UINT64 BaseOffset,
4081 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
4082 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
4083 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
4084 [annotation("_Out_opt_")] UINT64* pTotalBytes );
4085
4086 HRESULT CreateQueryHeap(
4087 [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
4088 [in] REFIID riid, // Expected: ID3D12QueryHeap
4089 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4090 );
4091
4092 HRESULT SetStablePowerState(BOOL Enable);
4093
4094 HRESULT CreateCommandSignature(
4095 [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
4096 [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
4097 [in] REFIID riid, // Expected: ID3D12CommandSignature
4098 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
4099 );
4100
4101 void GetResourceTiling(
4102 [annotation("_In_")] ID3D12Resource* pTiledResource,
4103 [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
4104 [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
4105 [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
4106 [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
4107 [annotation("_In_")] UINT FirstSubresourceTilingToGet,
4108 [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
4109 );
4110
4111 LUID GetAdapterLuid();
4112}
4113
4114// D3D12 Revision 1
4115[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
4116interface ID3D12PipelineLibrary
4117 : ID3D12DeviceChild
4118{
4119 HRESULT StorePipeline(
4120 [annotation("_In_opt_")] LPCWSTR pName,
4121 [annotation("_In_")] ID3D12PipelineState *pPipeline
4122 );
4123
4124 HRESULT LoadGraphicsPipeline(
4125 [annotation("_In_")] LPCWSTR pName,
4126 [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
4127 [in] REFIID riid, // Expected: ID3D12PipelineState
4128 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4129 );
4130
4131 HRESULT LoadComputePipeline(
4132 [annotation("_In_")] LPCWSTR pName,
4133 [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
4134 [in] REFIID riid, // Expected: ID3D12PipelineState
4135 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4136 );
4137
4138 SIZE_T GetSerializedSize();
4139
4140 HRESULT Serialize(
4141 [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
4142 SIZE_T DataSizeInBytes
4143 );
4144}
4145
4146// Pipeline State v2
4147[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
4148interface ID3D12PipelineLibrary1
4149 : ID3D12PipelineLibrary
4150{
4151 HRESULT LoadPipeline(
4152 [annotation("_In_")] LPCWSTR pName,
4153 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4154 [in] REFIID riid, // Expected: ID3D12PipelineState
4155 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4156 );
4157}
4158
4159typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
4160{
4161 D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
4162 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
4163
4164 D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
4165} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
4166cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )" )
4167
4168// Applications may use the whole value range of UINT for a priority.
4169// These names are merely semantic suggestions.
4170typedef enum D3D12_RESIDENCY_PRIORITY
4171{
4172 D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
4173 D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
4174 D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
4175 D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
4176 D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
4177} D3D12_RESIDENCY_PRIORITY;
4178
4179[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
4180interface ID3D12Device1
4181 : ID3D12Device
4182{
4183 HRESULT CreatePipelineLibrary(
4184 [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
4185 SIZE_T BlobLength,
4186 [in] REFIID riid, // Expected: ID3D12PipelineLibrary
4187 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
4188 );
4189
4190 HRESULT SetEventOnMultipleFenceCompletion(
4191 [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
4192 [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
4193 UINT NumFences,
4194 D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
4195 HANDLE hEvent
4196 );
4197
4198 HRESULT SetResidencyPriority(
4199 UINT NumObjects,
4200 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4201 [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
4202}
4203
4204[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
4205interface ID3D12Device2
4206 : ID3D12Device1
4207{
4208 HRESULT CreatePipelineState(
4209 [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
4210 [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
4211 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
4212 );
4213}
4214
4215typedef enum D3D12_RESIDENCY_FLAGS
4216{
4217 D3D12_RESIDENCY_FLAG_NONE = 0x0,
4218 D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
4219} D3D12_RESIDENCY_FLAGS;
4220cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )" )
4221
4222[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
4223interface ID3D12Device3
4224 : ID3D12Device2
4225{
4226 HRESULT OpenExistingHeapFromAddress(
4227 [annotation("_In_")] const void* pAddress,
4228 [in] REFIID riid, // Expected: ID3D12Heap
4229 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4230 );
4231 HRESULT OpenExistingHeapFromFileMapping(
4232 [annotation("_In_")] HANDLE hFileMapping,
4233 [in] REFIID riid, // Expected: ID3D12Heap
4234 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
4235 );
4236 HRESULT EnqueueMakeResident(
4237 D3D12_RESIDENCY_FLAGS Flags,
4238 UINT NumObjects,
4239 [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
4240 [annotation("_In_")] ID3D12Fence* pFenceToSignal,
4241 UINT64 FenceValueToSignal
4242 );
4243}
4244
4245typedef enum D3D12_COMMAND_LIST_FLAGS
4246{
4247 D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
4248} D3D12_COMMAND_LIST_FLAGS;
4249cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )")
4250
4251
4252typedef enum D3D12_COMMAND_POOL_FLAGS
4253{
4254 D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
4255
4256} D3D12_COMMAND_POOL_FLAGS;
4257cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )")
4258
4259typedef enum D3D12_COMMAND_RECORDER_FLAGS
4260{
4261 D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
4262
4263} D3D12_COMMAND_RECORDER_FLAGS;
4264cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )")
4265
4266typedef enum D3D12_PROTECTED_SESSION_STATUS
4267{
4268 D3D12_PROTECTED_SESSION_STATUS_OK = 0,
4269 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
4270} D3D12_PROTECTED_SESSION_STATUS;
4271
4272[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
4273interface ID3D12ProtectedSession
4274 : ID3D12DeviceChild
4275{
4276 HRESULT GetStatusFence(
4277 [in] REFIID riid,
4278 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
4279
4280 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
4281}
4282
4283typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
4284{
4285 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
4286 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
4287
4288} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
4289cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )")
4290
4291typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
4292{
4293 UINT NodeIndex; // input
4294 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
4295} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
4296
4297typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
4298{
4299 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
4300
4301} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
4302cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )")
4303
4304typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
4305{
4306 UINT NodeMask;
4307 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
4308} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
4309
4310[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
4311interface ID3D12ProtectedResourceSession
4312 : ID3D12ProtectedSession
4313{
4314 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
4315}
4316
4317[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
4318interface ID3D12Device4
4319 : ID3D12Device3
4320{
4321 HRESULT CreateCommandList1(
4322 [annotation("_In_")] UINT nodeMask,
4323 [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
4324 [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
4325 [in] REFIID riid, // Expected: ID3D12CommandList
4326 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
4327 );
4328
4329 HRESULT CreateProtectedResourceSession(
4330 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
4331 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
4332 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
4333 );
4334
4335 HRESULT CreateCommittedResource1(
4336 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
4337 D3D12_HEAP_FLAGS HeapFlags,
4338 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4339 D3D12_RESOURCE_STATES InitialResourceState,
4340 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4341 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4342 [in] REFIID riidResource, // Expected: ID3D12Resource1*
4343 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
4344 );
4345
4346 HRESULT CreateHeap1(
4347 [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
4348 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4349 [in] REFIID riid, // Expected: ID3D12Heap1*
4350 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
4351 );
4352
4353 HRESULT CreateReservedResource1(
4354 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
4355 D3D12_RESOURCE_STATES InitialState,
4356 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
4357 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
4358 [in] REFIID riid, // Expected: ID3D12Resource1*
4359 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
4360 );
4361
4362 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
4363 UINT visibleMask,
4364 UINT numResourceDescs,
4365 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
4366 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
4367 );
4368}
4369
4370typedef enum D3D12_LIFETIME_STATE
4371{
4372 D3D12_LIFETIME_STATE_IN_USE,
4373 D3D12_LIFETIME_STATE_NOT_IN_USE,
4374} D3D12_LIFETIME_STATE;
4375
4376interface ID3D12LifetimeTracker;
4377
4378[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
4379interface ID3D12LifetimeOwner : IUnknown
4380{
4381 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
4382}
4383
4384[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
4385interface ID3D12SwapChainAssistant
4386 : IUnknown
4387{
4388 LUID GetLUID();
4389 HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
4390 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
4391 REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
4392 HRESULT InsertImplicitSync();
4393}
4394
4395[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
4396interface ID3D12LifetimeTracker
4397 : ID3D12DeviceChild
4398{
4399 HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
4400}
4401
4402typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
4403{
4404 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
4405 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
4406 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
4407 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
4408 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
4409} D3D12_META_COMMAND_PARAMETER_TYPE;
4410
4411typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
4412{
4413 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
4414 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
4415} D3D12_META_COMMAND_PARAMETER_FLAGS;
4416cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )")
4417
4418typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
4419{
4420 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
4421 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
4422 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
4423} D3D12_META_COMMAND_PARAMETER_STAGE;
4424
4425typedef struct D3D12_META_COMMAND_PARAMETER_DESC
4426{
4427 LPCWSTR Name;
4428 D3D12_META_COMMAND_PARAMETER_TYPE Type;
4429 D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
4430 D3D12_RESOURCE_STATES RequiredResourceState;
4431 UINT StructureOffset;
4432} D3D12_META_COMMAND_PARAMETER_DESC;
4433
4434typedef enum D3D12_GRAPHICS_STATES
4435{
4436 D3D12_GRAPHICS_STATE_NONE = 0,
4437 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
4438 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
4439 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
4440 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
4441 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
4442 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
4443 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
4444 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
4445 D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
4446 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
4447 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
4448 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
4449 D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
4450 D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
4451 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
4452 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
4453 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
4454
4455} D3D12_GRAPHICS_STATES;
4456cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )")
4457
4458typedef struct D3D12_META_COMMAND_DESC
4459{
4460 GUID Id;
4461 LPCWSTR Name;
4462 D3D12_GRAPHICS_STATES InitializationDirtyState;
4463 D3D12_GRAPHICS_STATES ExecutionDirtyState;
4464} D3D12_META_COMMAND_DESC;
4465
4466[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
4467interface ID3D12StateObject
4468 : ID3D12Pageable
4469{
4470}
4471
4472[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
4473interface ID3D12StateObjectProperties
4474 : IUnknown
4475{
4476 void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
4477 UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
4478 UINT64 GetPipelineStackSize();
4479 void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
4480}
4481
4482typedef struct D3D12_PROGRAM_IDENTIFIER
4483{
4484 UINT64 OpaqueData[4];
4485} D3D12_PROGRAM_IDENTIFIER;
4486
4487[uuid(460caac7-1d24-446a-a184-ca67db494138), object, local, pointer_default(unique)]
4488interface ID3D12StateObjectProperties1
4489 : ID3D12StateObjectProperties
4490{
4491 D3D12_PROGRAM_IDENTIFIER GetProgramIdentifier(LPCWSTR pProgramName);
4492}
4493
4494[uuid(d5e82917-f0f1-44cf-ae5e-ce222dd0b884), object, local, pointer_default(unique)]
4495interface ID3D12StateObjectProperties2
4496 : ID3D12StateObjectProperties1
4497{
4498 HRESULT GetGlobalRootSignatureForProgram(
4499 [in] LPCWSTR pProgramName,
4500 [in] REFIID riid, // Expected ID3D12RootSignature
4501 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4502
4503 HRESULT GetGlobalRootSignatureForShader(
4504 [in] LPCWSTR pExportName,
4505 [in] REFIID riid, // Expected ID3D12RootSignature
4506 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
4507}
4508
4509typedef struct D3D12_NODE_ID
4510{
4511 LPCWSTR Name;
4512 UINT ArrayIndex;
4513} D3D12_NODE_ID;
4514
4515typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
4516{
4517 UINT64 MinSizeInBytes;
4518 UINT64 MaxSizeInBytes;
4519 UINT SizeGranularityInBytes;
4520} D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
4521
4522[uuid(065acf71-f863-4b89-82f4-02e4d5886757), object, local, pointer_default(unique)]
4523interface ID3D12WorkGraphProperties : IUnknown
4524{
4525 UINT GetNumWorkGraphs();
4526 LPCWSTR GetProgramName(UINT WorkGraphIndex);
4527 UINT GetWorkGraphIndex(LPCWSTR pProgramName);
4528
4529 UINT GetNumNodes(UINT WorkGraphIndex);
4530 D3D12_NODE_ID GetNodeID(UINT WorkGraphIndex, UINT NodeIndex);
4531 UINT GetNodeIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4532 UINT GetNodeLocalRootArgumentsTableIndex(UINT WorkGraphIndex, UINT NodeIndex);
4533
4534 UINT GetNumEntrypoints(UINT WorkGraphIndex);
4535 D3D12_NODE_ID GetEntrypointID(UINT WorkGraphIndex, UINT EntrypointIndex);
4536 UINT GetEntrypointIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
4537 UINT GetEntrypointRecordSizeInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4538
4539 void GetWorkGraphMemoryRequirements(
4540 UINT WorkGraphIndex,
4541 [annotation("_Out_")] D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS* pWorkGraphMemoryRequirements);
4542
4543 UINT GetEntrypointRecordAlignmentInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
4544}
4545
4546
4547typedef enum D3D12_STATE_SUBOBJECT_TYPE
4548{
4549 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
4550 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
4551 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
4552 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
4553 // 4 unused
4554 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
4555 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
4556 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4557 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4558 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
4559 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
4560 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
4561 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
4562 D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13, // D3D12_WORK_GRAPH_DESC
4563 D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14, // D3D12_STREAM_OUTPUT_DESC
4564 D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15, // D3D12_BLEND_DESC
4565 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16, // UINT
4566 D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17, // D3D12_RASTERIZER_DESC2
4567 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18, // D3D12_DEPTH_STENCIL_DESC
4568 D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19, // D3D12_INPUT_LAYOUT_DESC
4569 D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
4570 D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
4571 D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22, // D3D12_RT_FORMAT_ARRAY
4572 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23, // DXGI_FORMAT
4573 D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24, // DXGI_SAMPLE_DESC
4574 // 25 is unused
4575 D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26, // D3D12_PIPELINE_STATE_FLAGS
4576 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27, // D3D12_DEPTH_STENCIL_DESC1
4577 D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28, // D3D12_VIEW_INSTANCING_DESC
4578 D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29, // D3D12_GENERIC_PROGRAM_DESC
4579 D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30, // D3D12_DEPTH_STENCIL_DESC2
4580 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE = 31, // D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_DESC
4581 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE = 32, // D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE_DESC
4582 D3D12_STATE_SUBOBJECT_TYPE_COMPILER_EXISITING_COLLECTION = 33, // D3D12_COMPILER_EXISTING_COLLECTION_DESC
4583 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY = 36, // D3D12_EXISTING_COLLECTION_BY_KEY_DESC
4584 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
4585} D3D12_STATE_SUBOBJECT_TYPE;
4586
4587typedef struct D3D12_STATE_SUBOBJECT
4588{
4589 D3D12_STATE_SUBOBJECT_TYPE Type;
4590 const void* pDesc;
4591} D3D12_STATE_SUBOBJECT;
4592
4593typedef enum D3D12_STATE_OBJECT_FLAGS
4594{
4595 D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
4596 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
4597 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
4598 D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
4599
4600} D3D12_STATE_OBJECT_FLAGS;
4601cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )")
4602
4603typedef struct D3D12_STATE_OBJECT_CONFIG
4604{
4605 D3D12_STATE_OBJECT_FLAGS Flags;
4606} D3D12_STATE_OBJECT_CONFIG;
4607
4608typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
4609{
4610 ID3D12RootSignature* pGlobalRootSignature;
4611} D3D12_GLOBAL_ROOT_SIGNATURE;
4612
4613typedef struct D3D12_LOCAL_ROOT_SIGNATURE
4614{
4615 ID3D12RootSignature* pLocalRootSignature;
4616} D3D12_LOCAL_ROOT_SIGNATURE;
4617
4618typedef struct D3D12_NODE_MASK
4619{
4620 UINT NodeMask;
4621} D3D12_NODE_MASK;
4622
4623typedef struct D3D12_SAMPLE_MASK
4624{
4625 UINT SampleMask;
4626} D3D12_SAMPLE_MASK;
4627
4628typedef struct D3D12_IB_STRIP_CUT_VALUE
4629{
4630 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
4631} D3D12_IB_STRIP_CUT_VALUE;
4632
4633typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
4634{
4635 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
4636} D3D12_PRIMITIVE_TOPOLOGY_DESC;
4637
4638typedef struct D3D12_DEPTH_STENCIL_FORMAT
4639{
4640 DXGI_FORMAT DepthStencilFormat;
4641} D3D12_DEPTH_STENCIL_FORMAT;
4642
4643typedef enum D3D12_EXPORT_FLAGS
4644{
4645 D3D12_EXPORT_FLAG_NONE = 0x0,
4646} D3D12_EXPORT_FLAGS;
4647cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )")
4648
4649typedef struct D3D12_EXPORT_DESC
4650{
4651 LPCWSTR Name;
4652 [annotation("_In_opt_")] LPCWSTR ExportToRename;
4653 D3D12_EXPORT_FLAGS Flags;
4654} D3D12_EXPORT_DESC;
4655
4656typedef struct D3D12_DXIL_LIBRARY_DESC
4657{
4658 D3D12_SHADER_BYTECODE DXILLibrary;
4659 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4660 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4661} D3D12_DXIL_LIBRARY_DESC;
4662
4663
4664typedef struct D3D12_EXISTING_COLLECTION_DESC
4665{
4666 ID3D12StateObject* pExistingCollection;
4667 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
4668 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
4669} D3D12_EXISTING_COLLECTION_DESC;
4670
4671typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4672{
4673 const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
4674 UINT NumExports;
4675 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4676} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4677
4678typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
4679{
4680 LPCWSTR SubobjectToAssociate;
4681 UINT NumExports;
4682 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4683} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
4684
4685typedef enum D3D12_HIT_GROUP_TYPE
4686{
4687 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
4688 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
4689} D3D12_HIT_GROUP_TYPE;
4690
4691typedef struct D3D12_HIT_GROUP_DESC
4692{
4693 LPCWSTR HitGroupExport;
4694 D3D12_HIT_GROUP_TYPE Type;
4695 [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
4696 [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
4697 [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
4698} D3D12_HIT_GROUP_DESC;
4699
4700typedef struct D3D12_RAYTRACING_SHADER_CONFIG
4701{
4702 UINT MaxPayloadSizeInBytes;
4703 UINT MaxAttributeSizeInBytes;
4704} D3D12_RAYTRACING_SHADER_CONFIG;
4705
4706typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
4707{
4708 UINT MaxTraceRecursionDepth;
4709} D3D12_RAYTRACING_PIPELINE_CONFIG;
4710
4711typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
4712{
4713 D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
4714 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
4715 D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
4716 D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400,
4717} D3D12_RAYTRACING_PIPELINE_FLAGS;
4718cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )")
4719
4720typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
4721{
4722 UINT MaxTraceRecursionDepth;
4723 D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
4724} D3D12_RAYTRACING_PIPELINE_CONFIG1;
4725
4726typedef struct D3D12_NODE_OUTPUT_OVERRIDES
4727{
4728 UINT OutputIndex;
4729 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4730 [annotation("_In_opt_")] const BOOL* pAllowSparseNodes;
4731 [annotation("_In_opt_")] const UINT* pMaxRecords;
4732 [annotation("_In_opt_")] const UINT* pMaxRecordsSharedWithOutputIndex;
4733} D3D12_NODE_OUTPUT_OVERRIDES;
4734
4735typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
4736{
4737 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4738 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4739 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4740 [annotation("_In_opt_ ")] const D3D12_NODE_ID* pShareInputOf;
4741 [annotation("_In_reads_opt_(3)")] const UINT* pDispatchGrid;
4742 [annotation("_In_reads_opt_(3)")] const UINT* pMaxDispatchGrid;
4743 UINT NumOutputOverrides;
4744 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4745} D3D12_BROADCASTING_LAUNCH_OVERRIDES;
4746
4747typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
4748{
4749 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4750 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4751 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4752 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4753 UINT NumOutputOverrides;
4754 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4755} D3D12_COALESCING_LAUNCH_OVERRIDES;
4756
4757typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
4758{
4759 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4760 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4761 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4762 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4763 UINT NumOutputOverrides;
4764 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4765} D3D12_THREAD_LAUNCH_OVERRIDES;
4766
4767typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
4768{
4769 [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
4770 [annotation("_In_opt_")] const BOOL* pProgramEntry;
4771 [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
4772 [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
4773 UINT NumOutputOverrides;
4774 [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
4775} D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
4776
4777typedef enum D3D12_NODE_OVERRIDES_TYPE
4778{
4779 D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
4780 D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
4781 D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
4782 D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
4783 D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4,
4784} D3D12_NODE_OVERRIDES_TYPE;
4785
4786typedef struct D3D12_SHADER_NODE
4787{
4788 LPCWSTR Shader;
4789 D3D12_NODE_OVERRIDES_TYPE OverridesType;
4790 union
4791 {
4792 const D3D12_BROADCASTING_LAUNCH_OVERRIDES* pBroadcastingLaunchOverrides;
4793 const D3D12_COALESCING_LAUNCH_OVERRIDES* pCoalescingLaunchOverrides;
4794 const D3D12_THREAD_LAUNCH_OVERRIDES* pThreadLaunchOverrides;
4795 const D3D12_COMMON_COMPUTE_NODE_OVERRIDES* pCommonComputeNodeOverrides;
4796 };
4797} D3D12_SHADER_NODE;
4798
4799
4800typedef enum D3D12_NODE_TYPE
4801{
4802 D3D12_NODE_TYPE_SHADER = 0x0,
4803} D3D12_NODE_TYPE;
4804
4805typedef struct D3D12_NODE
4806{
4807 D3D12_NODE_TYPE NodeType;
4808 union
4809 {
4810 D3D12_SHADER_NODE Shader; // D3D12_NODE_TYPE_SHADER
4811 };
4812} D3D12_NODE;
4813
4814typedef enum D3D12_WORK_GRAPH_FLAGS
4815{
4816 D3D12_WORK_GRAPH_FLAG_NONE = 0x0,
4817 D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1,
4818} D3D12_WORK_GRAPH_FLAGS;
4819cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )")
4820
4821typedef struct D3D12_WORK_GRAPH_DESC
4822{
4823 LPCWSTR ProgramName;
4824 D3D12_WORK_GRAPH_FLAGS Flags;
4825 UINT NumEntrypoints;
4826 [annotation("_In_reads_opt_(NumEntrypoints)")] const D3D12_NODE_ID* pEntrypoints;
4827 UINT NumExplicitlyDefinedNodes;
4828 [annotation("_In_reads_opt_(NumExplicitlyDefinedNodes)")] const D3D12_NODE* pExplicitlyDefinedNodes;
4829} D3D12_WORK_GRAPH_DESC;
4830
4831typedef struct D3D12_GENERIC_PROGRAM_DESC
4832{
4833 LPCWSTR ProgramName;
4834 UINT NumExports;
4835 [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
4836 UINT NumSubobjects;
4837 [annotation("_In_reads_opt_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* const* ppSubobjects;
4838} D3D12_GENERIC_PROGRAM_DESC;
4839
4840typedef enum D3D12_STATE_OBJECT_TYPE
4841{
4842 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
4843 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
4844 D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
4845} D3D12_STATE_OBJECT_TYPE;
4846
4847typedef struct D3D12_STATE_OBJECT_DESC
4848{
4849 D3D12_STATE_OBJECT_TYPE Type;
4850 UINT NumSubobjects;
4851 [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
4852} D3D12_STATE_OBJECT_DESC;
4853
4854typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
4855{
4856 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
4857 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
4858 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
4859} D3D12_RAYTRACING_GEOMETRY_FLAGS;
4860cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )")
4861
4862typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
4863{
4864 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
4865 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
4866 D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES
4867} D3D12_RAYTRACING_GEOMETRY_TYPE;
4868
4869typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
4870{
4871 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
4872 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
4873 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
4874 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
4875 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
4876 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
4877 D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
4878} D3D12_RAYTRACING_INSTANCE_FLAGS;
4879cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )")
4880
4881typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
4882{
4883 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4884 UINT64 StrideInBytes;
4885} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
4886
4887typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
4888{
4889 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4890 UINT64 SizeInBytes;
4891} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
4892
4893typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
4894{
4895 D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
4896 UINT64 SizeInBytes;
4897 UINT64 StrideInBytes;
4898} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
4899
4900typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
4901{
4902 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
4903 DXGI_FORMAT IndexFormat;
4904 DXGI_FORMAT VertexFormat;
4905 UINT IndexCount;
4906 UINT VertexCount;
4907 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
4908 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
4909} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
4910
4911typedef struct D3D12_RAYTRACING_AABB
4912{
4913 FLOAT MinX;
4914 FLOAT MinY;
4915 FLOAT MinZ;
4916 FLOAT MaxX;
4917 FLOAT MaxY;
4918 FLOAT MaxZ;
4919} D3D12_RAYTRACING_AABB;
4920
4921typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
4922{
4923 UINT64 AABBCount;
4924 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
4925} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
4926
4927typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
4928{
4929 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
4930 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
4931 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
4932 D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4,
4933} D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
4934
4935typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
4936{
4937 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
4938 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
4939 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
4940 D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3,
4941} D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
4942
4943typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
4944{
4945 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
4946 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2,
4947} D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
4948
4949cpp_quote("typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC")
4950cpp_quote("{")
4951cpp_quote(" UINT ByteOffset;")
4952cpp_quote(" UINT SubdivisionLevel : 16;")
4953cpp_quote(" D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;")
4954cpp_quote("} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;")
4955
4956typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
4957{
4958 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
4959 DXGI_FORMAT OpacityMicromapIndexFormat;
4960 UINT OpacityMicromapBaseLocation;
4961 D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
4962} D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
4963
4964typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
4965{
4966 const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC* pTriangles;
4967 const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC* pOmmLinkage;
4968} D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
4969
4970typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
4971{
4972 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
4973 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
4974 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
4975 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
4976 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
4977 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
4978 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
4979 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
4980 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80,
4981
4982} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
4983cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )")
4984
4985typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
4986{
4987 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
4988 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
4989 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
4990 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
4991 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
4992} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
4993
4994typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
4995{
4996 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
4997 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
4998 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2,
4999} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
5000
5001typedef enum D3D12_ELEMENTS_LAYOUT
5002{
5003 D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
5004 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
5005} D3D12_ELEMENTS_LAYOUT;
5006
5007typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
5008{
5009 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
5010 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5011 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
5012 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
5013} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
5014
5015typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
5016{
5017 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5018 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
5019} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
5020
5021typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
5022{
5023 UINT64 CompactedSizeInBytes;
5024} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
5025
5026typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5027{
5028 UINT64 DecodedSizeInBytes;
5029} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5030
5031typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
5032{
5033 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5034 UINT NumDescs;
5035} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
5036cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
5037cpp_quote("// depending on Type field, NumDescs above is followed by either:")
5038cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
5039cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
5040cpp_quote("// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).")
5041cpp_quote("//")
5042cpp_quote("// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer")
5043cpp_quote("//")
5044cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
5045cpp_quote("")
5046
5047typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
5048{
5049 UINT64 SerializedSizeInBytes;
5050 union
5051 {
5052 UINT64 NumBottomLevelAccelerationStructurePointers;
5053 UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
5054 };
5055} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
5056
5057typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
5058{
5059 GUID DriverOpaqueGUID;
5060 BYTE DriverOpaqueVersioningData[16];
5061} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
5062
5063typedef enum D3D12_SERIALIZED_DATA_TYPE
5064{
5065 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
5066 D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1,
5067} D3D12_SERIALIZED_DATA_TYPE;
5068
5069typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
5070{
5071 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
5072 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
5073 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
5074 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
5075 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
5076} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
5077
5078typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
5079{
5080 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5081 UINT64 SerializedSizeInBytesIncludingHeader;
5082 UINT64 DeserializedSizeInBytes;
5083 UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
5084} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
5085
5086typedef enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
5087{
5088 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
5089 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
5090 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
5091} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
5092
5093typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
5094{
5095 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
5096 UINT64 SerializedSizeInBytesIncludingHeader;
5097 UINT64 DeserializedSizeInBytes;
5098 union
5099 {
5100 UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
5101 UINT NumBlocks;
5102 };
5103 D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
5104} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
5105
5106typedef enum D3D12_SERIALIZED_BLOCK_TYPE
5107{
5108 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0x0,
5109} D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
5110
5111typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
5112{
5113 D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
5114 UINT64 NumBlockPointersAfterHeader;
5115} D3D12_RAYTRACING_SERIALIZED_BLOCK;
5116
5117typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
5118{
5119 UINT64 CurrentSizeInBytes;
5120} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5121
5122typedef struct D3D12_RAYTRACING_INSTANCE_DESC
5123{
5124 FLOAT Transform[3][4];
5125 UINT InstanceID : 24;
5126 UINT InstanceMask : 8;
5127 UINT InstanceContributionToHitGroupIndex : 24;
5128 UINT Flags : 8;
5129 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
5130} D3D12_RAYTRACING_INSTANCE_DESC;
5131
5132typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
5133{
5134 D3D12_RAYTRACING_GEOMETRY_TYPE Type;
5135 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
5136 union
5137 {
5138 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
5139 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
5140 D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
5141 };
5142} D3D12_RAYTRACING_GEOMETRY_DESC;
5143
5144typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
5145{
5146 UINT Count;
5147 UINT SubdivisionLevel;
5148 D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
5149} D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
5150
5151typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
5152{
5153 UINT NumOmmHistogramEntries;
5154 const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY* pOmmHistogram;
5155 D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
5156 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
5157} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
5158
5159typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
5160{
5161 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
5162 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
5163 UINT NumDescs;
5164 D3D12_ELEMENTS_LAYOUT DescsLayout;
5165 union
5166 {
5167 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
5168 const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
5169 const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
5170 const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC* pOpacityMicromapArrayDesc;
5171 };
5172} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
5173
5174typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
5175{
5176 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
5177 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
5178 [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
5179 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
5180} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
5181
5182typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
5183{
5184 UINT64 ResultDataMaxSizeInBytes;
5185 UINT64 ScratchDataSizeInBytes;
5186 UINT64 UpdateScratchDataSizeInBytes;
5187} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
5188
5189typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
5190{
5191 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0x0,
5192 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
5193} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
5194
5195typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
5196{
5197 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
5198 D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
5199} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
5200
5201typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
5202{
5203 UINT64 CurrentSizeInBytes;
5204} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
5205
5206typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
5207{
5208 UINT64 DecodedSizeInBytes;
5209} D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
5210
5211typedef enum D3D12_RAY_FLAGS
5212{
5213 D3D12_RAY_FLAG_NONE = 0x00,
5214 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
5215 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
5216 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
5217 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
5218 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
5219 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
5220 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
5221 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
5222 D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
5223 D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
5224 D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400,
5225} D3D12_RAY_FLAGS;
5226cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )" )
5227
5228typedef enum D3D12_HIT_KIND
5229{
5230 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
5231 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
5232} D3D12_HIT_KIND;
5233
5234[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
5235interface ID3D12Device5
5236 : ID3D12Device4
5237{
5238 HRESULT CreateLifetimeTracker(
5239 [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
5240 [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
5241 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
5242 );
5243
5244 void RemoveDevice();
5245
5246 HRESULT EnumerateMetaCommands(
5247 [annotation("_Inout_")] UINT* pNumMetaCommands,
5248 [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
5249 );
5250
5251 HRESULT EnumerateMetaCommandParameters(
5252 [annotation("_In_")] REFGUID CommandId,
5253 [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
5254 [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
5255 [annotation("_Inout_")] UINT* pParameterCount,
5256 [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
5257 );
5258
5259 HRESULT CreateMetaCommand(
5260 [annotation("_In_")] REFGUID CommandId,
5261 [annotation("_In_")] UINT NodeMask,
5262 [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
5263 [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
5264 [in] REFIID riid,
5265 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
5266 );
5267
5268 HRESULT CreateStateObject(
5269 [in] const D3D12_STATE_OBJECT_DESC* pDesc,
5270 [in] REFIID riid, // ID3D12StateObject
5271 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
5272 );
5273
5274 void GetRaytracingAccelerationStructurePrebuildInfo(
5275 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
5276 [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
5277 );
5278
5279 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
5280 [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
5281 [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
5282}
5283
5284#include "D3D12MarkerApiEnums.idl"
5285
5286typedef struct D3D12_AUTO_BREADCRUMB_NODE
5287{
5288 const char *pCommandListDebugNameA;
5289 const wchar_t *pCommandListDebugNameW;
5290 const char *pCommandQueueDebugNameA;
5291 const wchar_t *pCommandQueueDebugNameW;
5292 ID3D12GraphicsCommandList *pCommandList;
5293 ID3D12CommandQueue *pCommandQueue;
5294 UINT32 BreadcrumbCount;
5295 const UINT32 *pLastBreadcrumbValue;
5296 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5297 const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
5298} D3D12_AUTO_BREADCRUMB_NODE;
5299
5300typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
5301{
5302 UINT BreadcrumbIndex;
5303 const wchar_t *pContextString;
5304} D3D12_DRED_BREADCRUMB_CONTEXT;
5305
5306// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
5307typedef struct D3D12_AUTO_BREADCRUMB_NODE1
5308{
5309 const char *pCommandListDebugNameA;
5310 const wchar_t *pCommandListDebugNameW;
5311 const char *pCommandQueueDebugNameA;
5312 const wchar_t *pCommandQueueDebugNameW;
5313 ID3D12GraphicsCommandList *pCommandList;
5314 ID3D12CommandQueue *pCommandQueue;
5315 UINT BreadcrumbCount;
5316 const UINT *pLastBreadcrumbValue;
5317 const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
5318 const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
5319 UINT BreadcrumbContextsCount;
5320 D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
5321} D3D12_AUTO_BREADCRUMB_NODE1;
5322
5323// D3D12_DRED_VERSION
5324typedef enum D3D12_DRED_VERSION
5325{
5326 D3D12_DRED_VERSION_1_0 = 0x1,
5327 D3D12_DRED_VERSION_1_1 = 0x2,
5328 D3D12_DRED_VERSION_1_2 = 0x3,
5329 D3D12_DRED_VERSION_1_3 = 0x4,
5330} D3D12_DRED_VERSION;
5331
5332typedef enum D3D12_DRED_FLAGS
5333{
5334 D3D12_DRED_FLAG_NONE = 0,
5335 D3D12_DRED_FLAG_FORCE_ENABLE = 1,
5336 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
5337} D3D12_DRED_FLAGS;
5338cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )")
5339
5340typedef enum D3D12_DRED_ENABLEMENT
5341{
5342 D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
5343 D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
5344 D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
5345} D3D12_DRED_ENABLEMENT;
5346
5347typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
5348{
5349 [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
5350 [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
5351} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
5352
5353typedef enum D3D12_DRED_ALLOCATION_TYPE
5354{
5355 // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
5356 D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
5357 D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
5358 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
5359 D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
5360 D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
5361 D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
5362 D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
5363 D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
5364 D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
5365 D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
5366 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
5367 D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
5368 D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
5369 D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
5370 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
5371 D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
5372 D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
5373 D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
5374 D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
5375 D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
5376 D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
5377 D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
5378 D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
5379 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
5380 D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
5381 D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
5382 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
5383 D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
5384
5385
5386 D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
5387} D3D12_DRED_ALLOCATION_TYPE;
5388
5389typedef struct D3D12_DRED_ALLOCATION_NODE
5390{
5391 const char *ObjectNameA;
5392 const wchar_t *ObjectNameW;
5393 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5394 const struct D3D12_DRED_ALLOCATION_NODE *pNext;
5395} D3D12_DRED_ALLOCATION_NODE;
5396
5397typedef struct D3D12_DRED_ALLOCATION_NODE1
5398{
5399 const char *ObjectNameA;
5400 const wchar_t *ObjectNameW;
5401 D3D12_DRED_ALLOCATION_TYPE AllocationType;
5402 const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
5403 const IUnknown *pObject;
5404} D3D12_DRED_ALLOCATION_NODE1;
5405
5406typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
5407{
5408 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5409} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
5410
5411typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
5412{
5413 [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
5414} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
5415
5416typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
5417{
5418 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5419 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
5420 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
5421} D3D12_DRED_PAGE_FAULT_OUTPUT;
5422
5423typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
5424{
5425 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5426 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5427 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5428} D3D12_DRED_PAGE_FAULT_OUTPUT1;
5429
5430typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
5431{
5432 D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
5433} D3D12_DRED_PAGE_FAULT_FLAGS;
5434cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )")
5435
5436typedef enum D3D12_DRED_DEVICE_STATE
5437{
5438 D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
5439 D3D12_DRED_DEVICE_STATE_HUNG = 3,
5440 D3D12_DRED_DEVICE_STATE_FAULT = 6,
5441 D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
5442} D3D12_DRED_DEVICE_STATE;
5443
5444typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
5445{
5446 D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
5447 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
5448 [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
5449 D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
5450
5451} D3D12_DRED_PAGE_FAULT_OUTPUT2;
5452
5453typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
5454{
5455 HRESULT DeviceRemovedReason;
5456 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
5457 D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
5458} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
5459
5460typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
5461{
5462 HRESULT DeviceRemovedReason;
5463 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5464 D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
5465} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
5466
5467typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
5468{
5469 HRESULT DeviceRemovedReason;
5470 D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
5471 D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
5472 D3D12_DRED_DEVICE_STATE DeviceState;
5473} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
5474
5475typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
5476{
5477 D3D12_DRED_VERSION Version; // Version of the DRED data
5478 union
5479 {
5480 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
5481 D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
5482 D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
5483 D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
5484 };
5485} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
5486
5487[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
5488interface ID3D12DeviceRemovedExtendedDataSettings
5489 : IUnknown
5490{
5491 void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
5492 void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
5493 void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
5494};
5495
5496[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
5497interface ID3D12DeviceRemovedExtendedDataSettings1
5498 : ID3D12DeviceRemovedExtendedDataSettings
5499{
5500 void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
5501};
5502
5503[uuid(61552388-01ab-4008-a436-83db189566ea), object, local, pointer_default(unique)]
5504interface ID3D12DeviceRemovedExtendedDataSettings2
5505 : ID3D12DeviceRemovedExtendedDataSettings1
5506{
5507 void UseMarkersOnlyAutoBreadcrumbs(BOOL MarkersOnly);
5508};
5509
5510
5511[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
5512interface ID3D12DeviceRemovedExtendedData
5513 : IUnknown
5514{
5515 HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
5516 HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
5517};
5518
5519[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
5520interface ID3D12DeviceRemovedExtendedData1
5521 : ID3D12DeviceRemovedExtendedData
5522{
5523 HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
5524 HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
5525};
5526
5527[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
5528interface ID3D12DeviceRemovedExtendedData2
5529 : ID3D12DeviceRemovedExtendedData1
5530{
5531 HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
5532 D3D12_DRED_DEVICE_STATE GetDeviceState();
5533};
5534
5535typedef enum D3D12_BACKGROUND_PROCESSING_MODE
5536{
5537 D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
5538 D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
5539 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
5540 D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
5541} D3D12_BACKGROUND_PROCESSING_MODE;
5542
5543typedef enum D3D12_MEASUREMENTS_ACTION
5544{
5545 D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
5546 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
5547 D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
5548 D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
5549} D3D12_MEASUREMENTS_ACTION;
5550
5551[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
5552interface ID3D12Device6 : ID3D12Device5
5553{
5554 HRESULT SetBackgroundProcessingMode(
5555 D3D12_BACKGROUND_PROCESSING_MODE Mode,
5556 D3D12_MEASUREMENTS_ACTION MeasurementsAction,
5557 [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
5558 [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
5559};
5560
5561cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
5562
5563// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5564typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
5565{
5566 UINT NodeIndex; // input
5567 UINT Count; // output
5568} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
5569
5570// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
5571typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
5572{
5573 UINT NodeIndex; // input
5574 UINT Count; // input
5575 GUID* pTypes; // output
5576} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
5577
5578typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
5579{
5580 UINT NodeMask;
5581 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
5582 GUID ProtectionType;
5583} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
5584
5585[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
5586interface ID3D12ProtectedResourceSession1
5587 : ID3D12ProtectedResourceSession
5588{
5589 D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
5590};
5591
5592[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
5593interface ID3D12Device7 : ID3D12Device6
5594{
5595 HRESULT AddToStateObject(
5596 [in] const D3D12_STATE_OBJECT_DESC* pAddition,
5597 [in] ID3D12StateObject* pStateObjectToGrowFrom,
5598 [in] REFIID riid, // ID3D12StateObject
5599 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
5600 );
5601
5602 HRESULT CreateProtectedResourceSession1(
5603 [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
5604 [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
5605 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
5606 );
5607};
5608
5609[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
5610interface ID3D12Device8 : ID3D12Device7
5611{
5612 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
5613 UINT visibleMask,
5614 UINT numResourceDescs,
5615 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
5616 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
5617
5618 HRESULT CreateCommittedResource2(
5619 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
5620 D3D12_HEAP_FLAGS HeapFlags,
5621 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5622 D3D12_RESOURCE_STATES InitialResourceState,
5623 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5624 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
5625 [in] REFIID riidResource, // Expected: ID3D12Resource1*
5626 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
5627
5628 HRESULT CreatePlacedResource1(
5629 [annotation("_In_")] ID3D12Heap* pHeap,
5630 UINT64 HeapOffset,
5631 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
5632 D3D12_RESOURCE_STATES InitialState,
5633 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
5634 [in] REFIID riid, // Expected: ID3D12Resource*
5635 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
5636
5637 void CreateSamplerFeedbackUnorderedAccessView(
5638 [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
5639 [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
5640 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
5641
5642 void GetCopyableFootprints1(
5643 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
5644 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
5645 [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
5646 UINT64 BaseOffset,
5647 [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
5648 [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
5649 [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
5650 [annotation("_Out_opt_")] UINT64* pTotalBytes);
5651};
5652
5653
5654[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
5655interface ID3D12Resource1
5656 : ID3D12Resource
5657{
5658 HRESULT GetProtectedResourceSession(
5659 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5660 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5661}
5662
5663[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
5664interface ID3D12Resource2
5665 : ID3D12Resource1
5666{
5667 D3D12_RESOURCE_DESC1 GetDesc1();
5668}
5669
5670
5671
5672[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
5673interface ID3D12Heap1
5674 : ID3D12Heap
5675{
5676 HRESULT GetProtectedResourceSession(
5677 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
5678 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
5679}
5680
5681
5682[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
5683interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
5684{
5685 void SetProtectedResourceSession(
5686 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
5687 );
5688}
5689
5690// Beginning Access
5691typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
5692{
5693 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
5694 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
5695 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
5696 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS,
5697 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5698 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5699 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5700} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
5701
5702typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
5703{
5704 D3D12_CLEAR_VALUE ClearValue;
5705} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
5706
5707typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5708{
5709 UINT AdditionalWidth;
5710 UINT AdditionalHeight;
5711} D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5712
5713typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
5714{
5715 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
5716
5717 union
5718 {
5719 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
5720 D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5721 };
5722} D3D12_RENDER_PASS_BEGINNING_ACCESS;
5723
5724// Ending Access
5725typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
5726{
5727 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
5728 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
5729 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
5730 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS,
5731 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
5732 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
5733 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
5734} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
5735
5736typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
5737{
5738 UINT SrcSubresource;
5739 UINT DstSubresource;
5740
5741 UINT DstX;
5742 UINT DstY;
5743 D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
5744
5745} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
5746
5747typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
5748{
5749 ID3D12Resource* pSrcResource;
5750 ID3D12Resource* pDstResource;
5751
5752 // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
5753 UINT SubresourceCount;
5754 [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
5755
5756 DXGI_FORMAT Format;
5757 D3D12_RESOLVE_MODE ResolveMode;
5758
5759 BOOL PreserveResolveSource;
5760
5761} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
5762
5763typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
5764{
5765 UINT AdditionalWidth;
5766 UINT AdditionalHeight;
5767} D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
5768
5769typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
5770{
5771 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
5772
5773 union
5774 {
5775 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
5776 D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
5777 };
5778} D3D12_RENDER_PASS_ENDING_ACCESS;
5779
5780// Render Target Desc
5781typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
5782{
5783 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5784
5785 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
5786 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
5787
5788} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
5789
5790// Depth-Stencil Desc
5791typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
5792{
5793 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
5794
5795 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
5796 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
5797
5798 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
5799 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
5800
5801} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
5802
5803typedef enum D3D12_RENDER_PASS_FLAGS
5804{
5805 D3D12_RENDER_PASS_FLAG_NONE = 0x0,
5806 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
5807 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
5808 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
5809 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
5810 D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
5811} D3D12_RENDER_PASS_FLAGS;
5812cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )")
5813
5814[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
5815interface ID3D12MetaCommand : ID3D12Pageable
5816{
5817 UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
5818}
5819
5820typedef struct D3D12_DISPATCH_RAYS_DESC
5821{
5822 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
5823 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
5824 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
5825 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
5826 UINT Width;
5827 UINT Height;
5828 UINT Depth;
5829} D3D12_DISPATCH_RAYS_DESC;
5830
5831typedef enum D3D12_SET_WORK_GRAPH_FLAGS
5832{
5833 D3D12_SET_WORK_GRAPH_FLAG_NONE = 0x0,
5834 D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1,
5835} D3D12_SET_WORK_GRAPH_FLAGS;
5836cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )" )
5837
5838typedef struct D3D12_SET_WORK_GRAPH_DESC
5839{
5840 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5841 D3D12_SET_WORK_GRAPH_FLAGS Flags;
5842 D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
5843 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
5844} D3D12_SET_WORK_GRAPH_DESC;
5845
5846typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
5847{
5848 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5849} D3D12_SET_RAYTRACING_PIPELINE_DESC;
5850
5851typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
5852{
5853 D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
5854} D3D12_SET_GENERIC_PIPELINE_DESC;
5855
5856typedef enum D3D12_PROGRAM_TYPE
5857{
5858 D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
5859 D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
5860 D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
5861} D3D12_PROGRAM_TYPE;
5862
5863typedef struct D3D12_SET_PROGRAM_DESC
5864{
5865 D3D12_PROGRAM_TYPE Type;
5866 union
5867 {
5868 D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
5869 D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
5870 D3D12_SET_WORK_GRAPH_DESC WorkGraph;
5871 };
5872} D3D12_SET_PROGRAM_DESC;
5873
5874typedef enum D3D12_DISPATCH_MODE
5875{
5876 D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0, // D3D12_NODE_CPU_INPUT
5877 D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1, // D3D12_NODE_GPU_INPUT in GPU memory
5878 D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2, // D3D12_MULTI_NODE_CPU_INPUT
5879 D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3 // D3D12_MULTI_NODE_GPU_INPUT in GPU memory
5880} D3D12_DISPATCH_MODE;
5881
5882typedef struct D3D12_NODE_CPU_INPUT
5883{
5884 UINT EntrypointIndex;
5885 UINT NumRecords;
5886 const void* pRecords;
5887 UINT64 RecordStrideInBytes;
5888} D3D12_NODE_CPU_INPUT;
5889
5890typedef struct D3D12_NODE_GPU_INPUT
5891{
5892 UINT EntrypointIndex;
5893 UINT NumRecords;
5894 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
5895} D3D12_NODE_GPU_INPUT;
5896
5897typedef struct D3D12_MULTI_NODE_CPU_INPUT
5898{
5899 UINT NumNodeInputs;
5900 const D3D12_NODE_CPU_INPUT* pNodeInputs;
5901 UINT64 NodeInputStrideInBytes;
5902} D3D12_MULTI_NODE_CPU_INPUT;
5903
5904typedef struct D3D12_MULTI_NODE_GPU_INPUT
5905{
5906 UINT NumNodeInputs;
5907 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs; // D3D12_GPU_NODE_INPUT array
5908} D3D12_MULTI_NODE_GPU_INPUT;
5909
5910typedef struct D3D12_DISPATCH_GRAPH_DESC
5911{
5912 D3D12_DISPATCH_MODE Mode;
5913 union
5914 {
5915 D3D12_NODE_CPU_INPUT NodeCPUInput;
5916 D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
5917 D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
5918 D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
5919 };
5920} D3D12_DISPATCH_GRAPH_DESC;
5921
5922[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
5923interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
5924{
5925 void BeginRenderPass(
5926 [annotation("_In_")] UINT NumRenderTargets,
5927 [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
5928 [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
5929 D3D12_RENDER_PASS_FLAGS Flags
5930 );
5931
5932 void EndRenderPass();
5933
5934 void InitializeMetaCommand(
5935 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5936 [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
5937 [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
5938 );
5939
5940 void ExecuteMetaCommand(
5941 [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
5942 [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
5943 [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
5944 );
5945
5946 void BuildRaytracingAccelerationStructure(
5947 [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
5948 [annotation("_In_")] UINT NumPostbuildInfoDescs,
5949 [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
5950 );
5951
5952 void EmitRaytracingAccelerationStructurePostbuildInfo(
5953 [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
5954 [annotation("_In_")] UINT NumSourceAccelerationStructures,
5955 [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
5956
5957 void CopyRaytracingAccelerationStructure(
5958 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
5959 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
5960 [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
5961
5962 void SetPipelineState1(
5963 [annotation("_In_")] ID3D12StateObject* pStateObject);
5964
5965 void DispatchRays(
5966 [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
5967}
5968
5969typedef enum D3D12_SHADER_CACHE_MODE
5970{
5971 D3D12_SHADER_CACHE_MODE_MEMORY,
5972 D3D12_SHADER_CACHE_MODE_DISK,
5973} D3D12_SHADER_CACHE_MODE;
5974
5975typedef enum D3D12_SHADER_CACHE_FLAGS
5976{
5977 D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
5978 D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
5979 D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
5980} D3D12_SHADER_CACHE_FLAGS;
5981cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )")
5982
5983typedef struct D3D12_SHADER_CACHE_SESSION_DESC
5984{
5985 GUID Identifier;
5986 D3D12_SHADER_CACHE_MODE Mode;
5987 D3D12_SHADER_CACHE_FLAGS Flags;
5988
5989 UINT MaximumInMemoryCacheSizeBytes;
5990 UINT MaximumInMemoryCacheEntries;
5991
5992 UINT MaximumValueFileSizeBytes;
5993
5994 UINT64 Version;
5995} D3D12_SHADER_CACHE_SESSION_DESC;
5996
5997typedef enum D3D12_BARRIER_LAYOUT
5998{
5999 D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
6000 D3D12_BARRIER_LAYOUT_COMMON = 0,
6001 D3D12_BARRIER_LAYOUT_PRESENT = 0,
6002 D3D12_BARRIER_LAYOUT_GENERIC_READ = 1,
6003 D3D12_BARRIER_LAYOUT_RENDER_TARGET = 2,
6004 D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS = 3,
6005 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE = 4,
6006 D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ = 5,
6007 D3D12_BARRIER_LAYOUT_SHADER_RESOURCE = 6,
6008 D3D12_BARRIER_LAYOUT_COPY_SOURCE = 7,
6009 D3D12_BARRIER_LAYOUT_COPY_DEST = 8,
6010 D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE = 9,
6011 D3D12_BARRIER_LAYOUT_RESOLVE_DEST = 10,
6012 D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE = 11,
6013 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ = 12,
6014 D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE = 13,
6015 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ = 14,
6016 D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE = 15,
6017 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ = 16,
6018 D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE = 17,
6019 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON = 18,
6020 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ = 19,
6021 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS = 20,
6022 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE = 21,
6023 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE = 22,
6024 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST = 23,
6025 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON = 24,
6026 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ = 25,
6027 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS = 26,
6028 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE = 27,
6029 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE = 28,
6030 D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST = 29,
6031 D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ_COMPUTE_QUEUE_ACCESSIBLE = 31,
6032
6033} D3D12_BARRIER_LAYOUT;
6034
6035typedef enum D3D12_BARRIER_SYNC
6036{
6037 D3D12_BARRIER_SYNC_NONE = 0x0,
6038 D3D12_BARRIER_SYNC_ALL = 0x1,
6039 D3D12_BARRIER_SYNC_DRAW = 0x2,
6040 D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
6041 D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
6042 D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
6043 D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
6044 D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
6045 D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
6046 D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
6047 D3D12_BARRIER_SYNC_COPY = 0x200,
6048 D3D12_BARRIER_SYNC_RESOLVE = 0x400,
6049 D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
6050 D3D12_BARRIER_SYNC_PREDICATION = 0x800, // Aliased with SYNC_EXECUTE_INDIRECT
6051 D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
6052 D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
6053 D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
6054 D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
6055 D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
6056 D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
6057 D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
6058 D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
6059 D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
6060 D3D12_BARRIER_SYNC_SPLIT = 0x80000000,
6061} D3D12_BARRIER_SYNC;
6062cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )" )
6063
6064typedef enum D3D12_BARRIER_ACCESS
6065{
6066 D3D12_BARRIER_ACCESS_COMMON = 0,
6067 D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
6068 D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
6069 D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
6070 D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
6071 D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
6072 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
6073 D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
6074 D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
6075 D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
6076 D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
6077 D3D12_BARRIER_ACCESS_PREDICATION = 0x200, // Aliased with ACCESS_INDIRECT_ARGUMENT
6078 D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
6079 D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
6080 D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
6081 D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
6082 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
6083 D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
6084 D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
6085 D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
6086 D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
6087 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
6088 D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
6089 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
6090 D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
6091 D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000,
6092} D3D12_BARRIER_ACCESS;
6093cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )" )
6094
6095typedef enum D3D12_BARRIER_TYPE
6096{
6097 D3D12_BARRIER_TYPE_GLOBAL,
6098 D3D12_BARRIER_TYPE_TEXTURE,
6099 D3D12_BARRIER_TYPE_BUFFER,
6100} D3D12_BARRIER_TYPE;
6101
6102typedef enum D3D12_TEXTURE_BARRIER_FLAGS
6103{
6104 D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
6105 D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1,
6106} D3D12_TEXTURE_BARRIER_FLAGS;
6107cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )")
6108
6109typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
6110{
6111 UINT IndexOrFirstMipLevel;
6112 UINT NumMipLevels;
6113 UINT FirstArraySlice;
6114 UINT NumArraySlices;
6115 UINT FirstPlane;
6116 UINT NumPlanes;
6117} D3D12_BARRIER_SUBRESOURCE_RANGE;
6118
6119typedef struct D3D12_GLOBAL_BARRIER
6120{
6121 D3D12_BARRIER_SYNC SyncBefore;
6122 D3D12_BARRIER_SYNC SyncAfter;
6123 D3D12_BARRIER_ACCESS AccessBefore;
6124 D3D12_BARRIER_ACCESS AccessAfter;
6125} D3D12_GLOBAL_BARRIER;
6126
6127typedef struct D3D12_TEXTURE_BARRIER
6128{
6129 D3D12_BARRIER_SYNC SyncBefore;
6130 D3D12_BARRIER_SYNC SyncAfter;
6131 D3D12_BARRIER_ACCESS AccessBefore;
6132 D3D12_BARRIER_ACCESS AccessAfter;
6133 D3D12_BARRIER_LAYOUT LayoutBefore;
6134 D3D12_BARRIER_LAYOUT LayoutAfter;
6135 [annotation("_In_")] ID3D12Resource *pResource;
6136 D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
6137 D3D12_TEXTURE_BARRIER_FLAGS Flags;
6138} D3D12_TEXTURE_BARRIER;
6139
6140typedef struct D3D12_BUFFER_BARRIER
6141{
6142 D3D12_BARRIER_SYNC SyncBefore;
6143 D3D12_BARRIER_SYNC SyncAfter;
6144 D3D12_BARRIER_ACCESS AccessBefore;
6145 D3D12_BARRIER_ACCESS AccessAfter;
6146 [annotation("_In_")] ID3D12Resource *pResource;
6147 UINT64 Offset;
6148 UINT64 Size;
6149} D3D12_BUFFER_BARRIER;
6150
6151typedef struct D3D12_BARRIER_GROUP
6152{
6153 D3D12_BARRIER_TYPE Type;
6154 UINT32 NumBarriers;
6155 union
6156 {
6157 [annotation("_In_reads_(NumBarriers)")] const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
6158 [annotation("_In_reads_(NumBarriers)")] const D3D12_TEXTURE_BARRIER *pTextureBarriers;
6159 [annotation("_In_reads_(NumBarriers)")] const D3D12_BUFFER_BARRIER *pBufferBarriers;
6160 };
6161} D3D12_BARRIER_GROUP;
6162
6163[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
6164interface ID3D12ShaderCacheSession
6165 : ID3D12DeviceChild
6166{
6167 HRESULT FindValue(
6168 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6169 UINT KeySize,
6170 [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
6171 [annotation("_Inout_")] UINT* pValueSize);
6172 HRESULT StoreValue(
6173 [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6174 UINT KeySize,
6175 [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
6176 UINT ValueSize);
6177
6178 void SetDeleteOnDestroy();
6179 D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
6180};
6181
6182typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
6183{
6184 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
6185 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
6186 D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
6187 D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
6188} D3D12_SHADER_CACHE_KIND_FLAGS;
6189cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )")
6190
6191typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
6192{
6193 D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
6194 D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
6195 D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
6196} D3D12_SHADER_CACHE_CONTROL_FLAGS;
6197cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )")
6198
6199[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
6200interface ID3D12Device9
6201 : ID3D12Device8
6202{
6203 HRESULT CreateShaderCacheSession(
6204 [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
6205 REFIID riid,
6206 [annotation("_COM_Outptr_opt_")] void** ppvSession);
6207
6208 HRESULT ShaderCacheControl(
6209 D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
6210 D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
6211
6212 HRESULT CreateCommandQueue1(
6213 [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
6214 REFIID CreatorID,
6215 [in] REFIID riid, // Expected: ID3D12CommandQueue
6216 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
6217 );
6218};
6219
6220[uuid(517f8718-aa66-49f9-b02b-a7ab89c06031), object, local, pointer_default(unique)]
6221interface ID3D12Device10
6222 : ID3D12Device9
6223{
6224 HRESULT CreateCommittedResource3(
6225 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
6226 D3D12_HEAP_FLAGS HeapFlags,
6227 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6228 D3D12_BARRIER_LAYOUT InitialLayout,
6229 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6230 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
6231 UINT32 NumCastableFormats,
6232 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6233 [in] REFIID riidResource, // Expected: ID3D12Resource1*
6234 [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
6235
6236 HRESULT CreatePlacedResource2(
6237 [annotation("_In_")] ID3D12Heap* pHeap,
6238 UINT64 HeapOffset,
6239 [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
6240 D3D12_BARRIER_LAYOUT InitialLayout,
6241 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6242 UINT32 NumCastableFormats,
6243 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6244 [in] REFIID riid, // Expected: ID3D12Resource*
6245 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
6246
6247 HRESULT CreateReservedResource2(
6248 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
6249 D3D12_BARRIER_LAYOUT InitialLayout,
6250 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
6251 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
6252 UINT32 NumCastableFormats,
6253 [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
6254 [in] REFIID riid, // Expected: ID3D12Resource1*
6255 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
6256 );
6257};
6258
6259[uuid(5405c344-d457-444e-b4dd-2366e45aee39), object, local, pointer_default(unique)]
6260interface ID3D12Device11
6261 : ID3D12Device10
6262{
6263 void CreateSampler2(
6264 [annotation("_In_")] const D3D12_SAMPLER_DESC2* pDesc,
6265 [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
6266};
6267
6268[uuid(5af5c532-4c91-4cd0-b541-15a405395fc5), object, local, pointer_default(unique)]
6269interface ID3D12Device12
6270 : ID3D12Device11
6271{
6272 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo3(
6273 UINT visibleMask,
6274 UINT numResourceDescs,
6275 [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
6276 [annotation("_In_opt_count_(numResourceDescs)")] const UINT32* pNumCastableFormats,
6277 [annotation("_In_opt_count_(numResourceDescs)")] const DXGI_FORMAT *const *ppCastableFormats,
6278 [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
6279};
6280
6281[uuid(14eecffc-4df8-40f7-a118-5c816f45695e), object, local, pointer_default(unique)]
6282interface ID3D12Device13
6283 : ID3D12Device12
6284{
6285 HRESULT OpenExistingHeapFromAddress1(
6286 [annotation("_In_")] const void* pAddress,
6287 SIZE_T size,
6288 [in] REFIID riid, // Expected: ID3D12Heap
6289 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
6290 );
6291};
6292
6293[uuid(5f6e592d-d895-44c2-8e4a-88ad4926d323), object, local, pointer_default(unique)]
6294interface ID3D12Device14 : ID3D12Device13
6295{
6296 HRESULT CreateRootSignatureFromSubobjectInLibrary(
6297 [annotation("_In_")] UINT nodeMask,
6298 [annotation("_In_reads_(blobLengthInBytes)")] const void* pLibraryBlob,
6299 [annotation("_In_")] SIZE_T blobLengthInBytes,
6300 [annotation("_In_opt_")] LPCWSTR subobjectName,
6301 [in] REFIID riid, // Expected ID3D12RootSignature
6302 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
6303};
6304
6305typedef union D3D12_VERSION_NUMBER
6306{
6307 UINT64 Version;
6308 UINT16 VersionParts[4];
6309} D3D12_VERSION_NUMBER;
6310
6311// D3D12_FEATURE_SHADER_CACHE_ABI_SUPPORT
6312typedef struct D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT
6313{
6314 WCHAR szAdapterFamily[128];
6315 UINT64 MinimumABISupportVersion;
6316 UINT64 MaximumABISupportVersion;
6317 D3D12_VERSION_NUMBER CompilerVersion;
6318 D3D12_VERSION_NUMBER ApplicationProfileVersion;
6319} D3D12_FEATURE_DATA_SHADERCACHE_ABI_SUPPORT;
6320
6321
6322typedef void(__stdcall* D3D12PipelineStateFunc) (
6323 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6324 UINT KeySize,
6325 UINT Version,
6326 const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
6327 [annotation("_Inout_opt_")] void* pContext
6328 );
6329
6330typedef void(__stdcall* D3D12StateObjectFunc) (
6331 [annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
6332 UINT KeySize,
6333 UINT Version,
6334 const D3D12_STATE_OBJECT_DESC* pDesc,
6335 [annotation("_In_reads_bytes_(ParentKeySize)")] const void* pParentKey,
6336 UINT ParentKeySize,
6337 [annotation("_Inout_opt_")] void* pContext
6338 );
6339
6340
6341typedef struct D3D12_APPLICATION_DESC
6342{
6343 LPCWSTR pExeFilename;
6344 LPCWSTR pName;
6345 D3D12_VERSION_NUMBER Version;
6346 LPCWSTR pEngineName;
6347 D3D12_VERSION_NUMBER EngineVersion;
6348} D3D12_APPLICATION_DESC;
6349
6350typedef void(__stdcall* D3D12ApplicationDescFunc) (
6351 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
6352 [annotation("_Inout_opt_")] void* pContext
6353 );
6354
6355typedef struct D3D12_EXISTING_COLLECTION_BY_KEY_DESC
6356{
6357 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
6358 UINT KeySize;
6359 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
6360 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
6361} D3D12_EXISTING_COLLECTION_BY_KEY_DESC;
6362
6363[uuid(c56060b7-b5fc-4135-98e0-a1e9997eace0), object, local, pointer_default(unique)]
6364interface ID3D12StateObjectDatabase
6365 : IUnknown
6366{
6367 HRESULT SetApplicationDesc(
6368 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc);
6369
6370 HRESULT GetApplicationDesc(
6371 [annotation("_In_")] D3D12ApplicationDescFunc CallbackFunc,
6372 [annotation("_Inout_opt_")] void* pContext);
6373
6374 HRESULT StorePipelineStateDesc(
6375 [annotation("_In_reads_(KeySize)")] const void* pKey,
6376 UINT KeySize,
6377 UINT Version,
6378 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc);
6379
6380 HRESULT FindPipelineStateDesc(
6381 [annotation("_In_reads_(KeySize)")] const void* pKey,
6382 UINT KeySize,
6383 [annotation("_In_")] D3D12PipelineStateFunc CallbackFunc,
6384 [annotation("_Inout_opt_")] void* pContext);
6385
6386 HRESULT StoreStateObjectDesc(
6387 [annotation("_In_reads_(KeySize)")] const void* pKey,
6388 UINT KeySize,
6389 UINT Version,
6390 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
6391 [annotation("_In_reads_opt_(StateObjectToGrowFromKeySize)")] const void* pStateObjectToGrowFromKey,
6392 UINT StateObjectToGrowFromKeySize);
6393
6394 HRESULT FindStateObjectDesc(
6395 [annotation("_In_reads_(keySize)")] const void* pKey,
6396 UINT KeySize,
6397 D3D12StateObjectFunc CallbackFunc,
6398 [annotation("_Inout_opt_")] void* pContext);
6399
6400 HRESULT FindObjectVersion(
6401 [annotation("_In_reads_(keySize)")] const void* pKey,
6402 UINT KeySize,
6403 [annotation("_Out_")] UINT* pVersion);
6404};
6405
6406
6407
6408[uuid(bc66d368-7373-4943-8757-fc87dc79e476), object, local, pointer_default(unique)]
6409interface ID3D12VirtualizationGuestDevice
6410 : IUnknown
6411{
6412 HRESULT ShareWithHost(
6413 [annotation("_In_")] ID3D12DeviceChild* pObject,
6414 [annotation("_Out_")] HANDLE* pHandle
6415 );
6416
6417 HRESULT CreateFenceFd(
6418 [annotation("_In_")] ID3D12Fence *pFence,
6419 UINT64 FenceValue,
6420 [annotation("_Out_")] int *pFenceFd
6421 );
6422};
6423
6424
6425
6426[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
6427interface ID3D12Tools
6428 : IUnknown
6429{
6430 void EnableShaderInstrumentation(BOOL bEnable);
6431 BOOL ShaderInstrumentationEnabled();
6432}
6433
6434[uuid(e4fbc019-dd3c-43e1-8f32-7f649575f0a0), object, local, pointer_default(unique)]
6435interface ID3D12Tools1
6436 : ID3D12Tools
6437{
6438 HRESULT ReserveGPUVARangesAtCreate(
6439 [annotation("_In_reads_(uiNumRanges)")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pRanges,
6440 [annotation("_In_")] UINT uiNumRanges);
6441 void ClearReservedGPUVARangesList();
6442}
6443
6444[uuid(01d393c5-c9b0-42a1-958c-c26b02d4d097), object, local, pointer_default(unique)]
6445interface ID3D12Tools2
6446 : ID3D12Tools1
6447{
6448 HRESULT SetApplicationSpecificDriverState(
6449 [annotation("_In_")] IUnknown* pAdapter,
6450 [annotation("_In_opt_")] ID3DBlob* pBlob);
6451};
6452
6453
6454[uuid(8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d), object, local, pointer_default(unique)]
6455interface ID3D12PageableTools
6456 : IUnknown
6457{
6458 HRESULT GetAllocation(
6459 [annotation("_Inout_")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pAllocation);
6460}
6461
6462[uuid(2ea68e9c-19c3-4e47-a109-6cdadff0aca9), object, local, pointer_default(unique)]
6463interface ID3D12DeviceTools
6464 : IUnknown
6465{
6466 void SetNextAllocationAddress(
6467 [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
6468}
6469
6470typedef enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
6471{
6472 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
6473 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
6474 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
6475 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4,
6476} D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
6477
6478[uuid(e30e9fc7-e641-4d6e-8a81-9dd9206ec47a), object, local, pointer_default(unique)]
6479interface ID3D12DeviceTools1
6480 : ID3D12DeviceTools
6481{
6482 HRESULT GetApplicationSpecificDriverState(
6483 [annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
6484 D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS GetApplicationSpecificDriverBlobStatus();
6485}
6486
6487typedef struct D3D12_SUBRESOURCE_DATA
6488{
6489 const void* pData;
6490 LONG_PTR RowPitch;
6491 LONG_PTR SlicePitch;
6492} D3D12_SUBRESOURCE_DATA;
6493
6494typedef struct D3D12_MEMCPY_DEST
6495{
6496 void* pData;
6497 SIZE_T RowPitch;
6498 SIZE_T SlicePitch;
6499} D3D12_MEMCPY_DEST;
6500
6501
6502
6503cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
6504cpp_quote( "#include \"d3d12sdklayers.h\" ")
6505cpp_quote( "#endif ")
6506
6507
6508cpp_quote("")
6509cpp_quote("///////////////////////////////////////////////////////////////////////////")
6510cpp_quote("// D3D12CreateDevice")
6511cpp_quote("// ------------------")
6512cpp_quote("//")
6513cpp_quote("// pAdapter")
6514cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
6515cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
6516cpp_quote("// MinimumFeatureLevel")
6517cpp_quote("// The minimum feature level required for successful device creation.")
6518cpp_quote("// riid")
6519cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
6520cpp_quote("// ppDevice")
6521cpp_quote("// Pointer to returned interface. May be NULL.")
6522cpp_quote("//")
6523cpp_quote("// Return Values")
6524cpp_quote("// Any of those documented for ")
6525cpp_quote("// CreateDXGIFactory1")
6526cpp_quote("// IDXGIFactory::EnumAdapters")
6527cpp_quote("// D3D12CreateDevice")
6528cpp_quote("//")
6529cpp_quote("///////////////////////////////////////////////////////////////////////////")
6530cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
6531cpp_quote(" D3D_FEATURE_LEVEL, ")
6532cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
6533cpp_quote("")
6534cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
6535cpp_quote(" _In_opt_ IUnknown* pAdapter,")
6536cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
6537cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
6538cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
6539cpp_quote("")
6540
6541cpp_quote("")
6542cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
6543cpp_quote("")
6544cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6545cpp_quote("")
6546
6547cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6548cpp_quote("// D3D12EnableExperimentalFeatures")
6549cpp_quote("//")
6550cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
6551cpp_quote("// ")
6552cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
6553cpp_quote("// a configuration struct that can be passed alongside the GUID.")
6554cpp_quote("// ")
6555cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
6556cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
6557cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
6558cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
6559cpp_quote("//")
6560cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
6561cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
6562cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
6563cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
6564cpp_quote("//")
6565cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
6566cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
6567cpp_quote("// in are known to be incompatible with each other, or other errors.")
6568cpp_quote("// Returns S_OK otherwise.")
6569cpp_quote("//")
6570cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6571cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
6572cpp_quote(" UINT NumFeatures,")
6573cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
6574cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
6575cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
6576cpp_quote("")
6577cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6578cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
6579cpp_quote("//")
6580cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
6581cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
6582cpp_quote("//")
6583cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6584cpp_quote("//")
6585cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6586cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
6587cpp_quote(" 0x76f5573e,")
6588cpp_quote(" 0xf13a,")
6589cpp_quote(" 0x40f5,")
6590cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
6591cpp_quote("};")
6592cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6593cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
6594cpp_quote("//")
6595cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
6596cpp_quote("// meaning texture tile data-inheritance is allowed.")
6597cpp_quote("//")
6598cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6599cpp_quote("//")
6600cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6601cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
6602cpp_quote(" 0xc9c4725f,")
6603cpp_quote(" 0xa81a,")
6604cpp_quote(" 0x4f56,")
6605cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
6606cpp_quote("};")
6607cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6608cpp_quote("// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS")
6609cpp_quote("//")
6610cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS, ")
6611cpp_quote("// driver support is still required for this feature.")
6612cpp_quote("//")
6613cpp_quote("// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.")
6614cpp_quote("//")
6615cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6616cpp_quote("static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */")
6617cpp_quote(" 0x45dc51f3,")
6618cpp_quote(" 0x767f,")
6619cpp_quote(" 0x4588,")
6620cpp_quote(" { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }")
6621cpp_quote("};")
6622cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
6623cpp_quote("// D3D12GetInterface")
6624cpp_quote("//")
6625cpp_quote("// Retrieve Global D3D12 Interface.")
6626cpp_quote("//")
6627cpp_quote("")
6628cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
6629cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
6630cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
6631cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
6632cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);")
6633cpp_quote("DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);")
6634cpp_quote("DEFINE_GUID(CLSID_D3D12StateObjectFactory, 0x54e1c9f3, 0x1303, 0x4112, 0xbf, 0x8e, 0x7b, 0xf2, 0xbb, 0x60, 0x6a, 0x73);")
6635cpp_quote("")
6636cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
6637cpp_quote("")
6638cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
6639cpp_quote("")
6640
6641//==================================================================================================================================
6642//
6643// SDK Configuration
6644//
6645//==================================================================================================================================
6646
6647[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
6648interface ID3D12SDKConfiguration
6649 : IUnknown
6650{
6651 HRESULT SetSDKVersion(
6652 UINT SDKVersion,
6653 [annotation("_In_z_")] LPCSTR SDKPath
6654 );
6655}
6656
6657[uuid(8aaf9303-ad25-48b9-9a57-d9c37e009d9f), object, local, pointer_default(unique)]
6658interface ID3D12SDKConfiguration1
6659 : ID3D12SDKConfiguration
6660{
6661 HRESULT CreateDeviceFactory(
6662 UINT SDKVersion,
6663 [annotation("_In_")] LPCSTR SDKPath,
6664 REFIID riid, // Expected: ID3D12DeviceFactory
6665 [annotation("_COM_Outptr_")] void **ppvFactory
6666 );
6667 void FreeUnusedSDKs();
6668}
6669
6670typedef enum D3D12_DEVICE_FACTORY_FLAGS
6671{
6672 D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
6673 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
6674 D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
6675 D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4,
6676} D3D12_DEVICE_FACTORY_FLAGS;
6677cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )")
6678
6679[uuid(61f307d3-d34e-4e7c-8374-3ba4de23cccb), object, local, pointer_default(unique)]
6680interface ID3D12DeviceFactory
6681 : IUnknown
6682{
6683 HRESULT InitializeFromGlobalState();
6684 HRESULT ApplyToGlobalState();
6685
6686 HRESULT SetFlags(D3D12_DEVICE_FACTORY_FLAGS flags);
6687 D3D12_DEVICE_FACTORY_FLAGS GetFlags();
6688
6689 HRESULT GetConfigurationInterface(
6690 REFCLSID clsid,
6691 REFIID iid,
6692 [annotation("_COM_Outptr_")] void **ppv);
6693
6694 HRESULT EnableExperimentalFeatures(
6695 UINT NumFeatures,
6696 [annotation("_In_reads_(NumFeatures)")] const IID *pIIDs,
6697 [annotation("_In_reads_opt_(NumFeatures)")] void *pConfigurationStructs,
6698 [annotation("_In_reads_opt_(NumFeatures)")] UINT *pConfigurationStructSizes);
6699
6700 HRESULT CreateDevice(
6701 [annotation("_In_opt_")] IUnknown *adapter,
6702 D3D_FEATURE_LEVEL FeatureLevel,
6703 REFIID riid,
6704 [annotation("_COM_Outptr_opt_")] void **ppvDevice);
6705};
6706
6707typedef enum D3D12_DEVICE_FLAGS
6708{
6709 D3D12_DEVICE_FLAG_NONE = 0,
6710 D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
6711 D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
6712 D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
6713 D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
6714 D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
6715 D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
6716 D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
6717 D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
6718 D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
6719 D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
6720 D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400,
6721} D3D12_DEVICE_FLAGS;
6722cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )")
6723
6724typedef struct D3D12_DEVICE_CONFIGURATION_DESC
6725{
6726 D3D12_DEVICE_FLAGS Flags;
6727 UINT GpuBasedValidationFlags; // D3D12_GPU_BASED_VALIDATION_FLAGS from d3d12sdklayers.h
6728 UINT SDKVersion;
6729 UINT NumEnabledExperimentalFeatures;
6730} D3D12_DEVICE_CONFIGURATION_DESC;
6731
6732[uuid(78dbf87b-f766-422b-a61c-c8c446bdb9ad), object, local, pointer_default(unique)]
6733interface ID3D12DeviceConfiguration
6734 : IUnknown
6735{
6736 D3D12_DEVICE_CONFIGURATION_DESC GetDesc();
6737 HRESULT GetEnabledExperimentalFeatures([annotation("_Out_writes_(NumGuids)")] GUID *pGuids, UINT NumGuids);
6738
6739 HRESULT SerializeVersionedRootSignature(
6740 [annotation("_In_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
6741 [annotation("_COM_Outptr_")] ID3DBlob **ppResult,
6742 [annotation("_Always_(_Outptr_opt_result_maybenull_)")] ID3DBlob **ppError);
6743
6744 HRESULT CreateVersionedRootSignatureDeserializer(
6745 [annotation("_In_reads_bytes_(Size)")] const void *pBlob,
6746 SIZE_T Size,
6747 REFIID riid,
6748 [annotation("_COM_Outptr_")] void **ppvDeserializer);
6749};
6750
6751[uuid(ed342442-6343-4e16-bb82-a3a577874e56), object, local, pointer_default(unique)]
6752interface ID3D12DeviceConfiguration1
6753 : ID3D12DeviceConfiguration
6754{
6755 HRESULT CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
6756 [annotation("_In_reads_bytes_(Size)")] const void* pLibraryBlob,
6757 SIZE_T Size,
6758 LPCWSTR RootSignatureSubobjectName,
6759 REFIID riid,
6760 [annotation("_COM_Outptr_")] void** ppvDeserializer);
6761};
6762
6763
6764typedef enum D3D12_STATE_OBJECT_DATABASE_FLAGS
6765{
6766 D3D12_STATE_OBJECT_DATABASE_FLAG_NONE = 0x0,
6767 D3D12_STATE_OBJECT_DATABASE_FLAG_READ_ONLY = 0x1,
6768} D3D12_STATE_OBJECT_DATABASE_FLAGS;
6769cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_DATABASE_FLAGS )")
6770
6771[uuid(f5b066f0-648a-4611-bd41-27fd0948b9eb), object, local, pointer_default(unique)]
6772interface ID3D12StateObjectDatabaseFactory
6773 : IUnknown
6774{
6775 HRESULT CreateStateObjectDatabaseFromFile(
6776 LPCWSTR pDatabaseFile,
6777 D3D12_STATE_OBJECT_DATABASE_FLAGS flags,
6778 REFIID riid,
6779 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvStateObjectDatabase
6780 );
6781};
6782
6783
6784typedef enum D3D12_AXIS_SHADING_RATE
6785{
6786 D3D12_AXIS_SHADING_RATE_1X = 0x0,
6787 D3D12_AXIS_SHADING_RATE_2X = 0x1,
6788 D3D12_AXIS_SHADING_RATE_4X = 0x2
6789} D3D12_AXIS_SHADING_RATE;
6790
6791
6792cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
6793cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
6794
6795cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
6796
6797cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
6798cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
6799
6800typedef enum D3D12_SHADING_RATE
6801{
6802 D3D12_SHADING_RATE_1X1 = 0x0,
6803 D3D12_SHADING_RATE_1X2 = 0x1,
6804 D3D12_SHADING_RATE_2X1 = 0x4,
6805 D3D12_SHADING_RATE_2X2 = 0x5,
6806 D3D12_SHADING_RATE_2X4 = 0x6,
6807 D3D12_SHADING_RATE_4X2 = 0x9,
6808 D3D12_SHADING_RATE_4X4 = 0xA
6809} D3D12_SHADING_RATE;
6810
6811typedef enum D3D12_SHADING_RATE_COMBINER
6812{
6813 D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
6814 D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
6815 D3D12_SHADING_RATE_COMBINER_MIN = 2,
6816 D3D12_SHADING_RATE_COMBINER_MAX = 3,
6817 D3D12_SHADING_RATE_COMBINER_SUM = 4,
6818} D3D12_SHADING_RATE_COMBINER;
6819
6820[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
6821interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
6822{
6823 void RSSetShadingRate(
6824 [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
6825 [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
6826
6827 void RSSetShadingRateImage(
6828 [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
6829}
6830
6831typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
6832{
6833 UINT ThreadGroupCountX;
6834 UINT ThreadGroupCountY;
6835 UINT ThreadGroupCountZ;
6836} D3D12_DISPATCH_MESH_ARGUMENTS;
6837
6838[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
6839interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
6840{
6841 void DispatchMesh(
6842 [annotation("_In_")] UINT ThreadGroupCountX,
6843 [annotation("_In_")] UINT ThreadGroupCountY,
6844 [annotation("_In_")] UINT ThreadGroupCountZ
6845 );
6846}
6847
6848[uuid(dd171223-8b61-4769-90e3-160ccde4e2c1), object, local, pointer_default(unique)]
6849interface ID3D12GraphicsCommandList7 : ID3D12GraphicsCommandList6
6850{
6851 void Barrier(
6852 UINT32 NumBarrierGroups,
6853 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
6854 );
6855};
6856
6857[uuid(ee936ef9-599d-4d28-938e-23c4ad05ce51), object, local, pointer_default(unique)]
6858interface ID3D12GraphicsCommandList8 : ID3D12GraphicsCommandList7
6859{
6860 void OMSetFrontAndBackStencilRef(
6861 [annotation("_In_")] UINT FrontStencilRef,
6862 [annotation("_In_")] UINT BackStencilRef
6863 );
6864};
6865
6866[uuid(34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1), object, local, pointer_default(unique)]
6867interface ID3D12GraphicsCommandList9 : ID3D12GraphicsCommandList8
6868{
6869 void RSSetDepthBias(
6870 [annotation("_In_")] FLOAT DepthBias,
6871 [annotation("_In_")] FLOAT DepthBiasClamp,
6872 [annotation("_In_")] FLOAT SlopeScaledDepthBias
6873 );
6874
6875 void IASetIndexBufferStripCutValue(
6876 [annotation("_In_")] D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
6877 );
6878};
6879
6880[uuid(7013c015-d161-4b63-a08c-238552dd8acc), object, local, pointer_default(unique)]
6881interface ID3D12GraphicsCommandList10 : ID3D12GraphicsCommandList9
6882{
6883 void SetProgram([annotation("_In_")] const D3D12_SET_PROGRAM_DESC* pDesc);
6884 void DispatchGraph([annotation("_In_")] const D3D12_DISPATCH_GRAPH_DESC* pDesc);
6885};
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895[uuid(f343d1a0-afe3-439f-b13d-cd87a43b70ca), object, local, pointer_default(unique)]
6896interface ID3D12DSRDeviceFactory : IUnknown
6897{
6898 HRESULT CreateDSRDevice(
6899 [in] ID3D12Device *pD3D12Device,
6900 [in] UINT NodeMask,
6901 [in] REFIID riid, // Expected IDSRDevice
6902 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvDSRDevice);
6903}
6904
6905[uuid(597985ab-9b75-4dbb-be23-0761195bebee), object, local, pointer_default(unique)]
6906interface ID3D12GBVDiagnostics
6907 : IUnknown
6908{
6909 HRESULT GetGBVEntireSubresourceStatesData( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_writes_bytes_(DataSize)")] int *pData, UINT DataSize );
6910 HRESULT GetGBVSubresourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_Out_")] int *pData );
6911 HRESULT GetGBVResourceUniformState( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_")] int *pData );
6912 HRESULT GetGBVResourceInfo( [annotation("_In_")] ID3D12Resource* pResource,
6913 [annotation("_In_opt_")] D3D12_RESOURCE_DESC* pResourceDesc,
6914 [annotation("_In_opt_")] UINT32* pResourceHash,
6915 [annotation("_In_opt_")] UINT32* pSubresourceStatesByteOffset );
6916
6917 void GBVReserved0();
6918
6919 void GBVReserved1();
6920}
6921
6922
6923//----------------------------------------------------------------------------------------------------------
6924// Old types which are still supported by the runtime for app-compat
6925
6926cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
6927#pragma endregion
6928
6929
6930cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
6931cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
6932cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
6933cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
6934cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
6935cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
6936cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
6937cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
6938cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
6939cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
6940cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
6941cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
6942cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState1,0x5646804c,0x9638,0x48f7,0x91,0x82,0xb3,0xee,0x5a,0x6b,0x60,0xfb);" )
6943cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
6944cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
6945cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
6946cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
6947cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
6948cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
6949cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
6950cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
6951cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue1,0x3a3c3165,0x0ee7,0x4b8e,0xa0,0xaf,0x63,0x56,0xb4,0xc3,0xbb,0xb9);" )
6952cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
6953cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
6954cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
6955cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
6956cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
6957cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
6958cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
6959cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
6960cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
6961cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
6962cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
6963cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
6964cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
6965cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
6966cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);" )
6967cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties2,0xd5e82917,0xf0f1,0x44cf,0xae,0x5e,0xce,0x22,0x2d,0xd0,0xb8,0x84);" )
6968cpp_quote( "DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);" )
6969cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
6970cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
6971cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
6972cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);" )
6973cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
6974cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
6975cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
6976cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
6977cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
6978cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
6979cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
6980cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
6981cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
6982cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
6983cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
6984cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
6985cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
6986cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
6987cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
6988cpp_quote( "DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);" )
6989cpp_quote( "DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);" )
6990cpp_quote( "DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);" )
6991cpp_quote( "DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);" )
6992cpp_quote( "DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);" )
6993cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabase,0xc56060b7,0xb5fc,0x4135,0x98,0xe0,0xa1,0xe9,0x99,0x7e,0xac,0xe0);" )
6994cpp_quote( "DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);" )
6995cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
6996cpp_quote( "DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);" )
6997cpp_quote( "DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);" )
6998cpp_quote( "DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);" )
6999cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);" )
7000cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);" )
7001cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
7002cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);" )
7003cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);" )
7004cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);" )
7005cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);" )
7006cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectDatabaseFactory,0xf5b066f0,0x648a,0x4611,0xbd,0x41,0x27,0xfd,0x09,0x48,0xb9,0xeb);" )
7007cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
7008cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
7009cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);" )
7010cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);" )
7011cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);" )
7012cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);" )
7013cpp_quote( "DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);" )
7014cpp_quote( "DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h
new file mode 100644
index 0000000..ec9ff5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.h
@@ -0,0 +1,899 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compatibility_h__
39#define __d3d12compatibility_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompatibilityDevice_FWD_DEFINED__
56#define __ID3D12CompatibilityDevice_FWD_DEFINED__
57typedef interface ID3D12CompatibilityDevice ID3D12CompatibilityDevice;
58
59#endif /* __ID3D12CompatibilityDevice_FWD_DEFINED__ */
60
61
62#ifndef __D3D11On12CreatorID_FWD_DEFINED__
63#define __D3D11On12CreatorID_FWD_DEFINED__
64typedef interface D3D11On12CreatorID D3D11On12CreatorID;
65
66#endif /* __D3D11On12CreatorID_FWD_DEFINED__ */
67
68
69#ifndef __D3D9On12CreatorID_FWD_DEFINED__
70#define __D3D9On12CreatorID_FWD_DEFINED__
71typedef interface D3D9On12CreatorID D3D9On12CreatorID;
72
73#endif /* __D3D9On12CreatorID_FWD_DEFINED__ */
74
75
76#ifndef __OpenGLOn12CreatorID_FWD_DEFINED__
77#define __OpenGLOn12CreatorID_FWD_DEFINED__
78typedef interface OpenGLOn12CreatorID OpenGLOn12CreatorID;
79
80#endif /* __OpenGLOn12CreatorID_FWD_DEFINED__ */
81
82
83#ifndef __OpenCLOn12CreatorID_FWD_DEFINED__
84#define __OpenCLOn12CreatorID_FWD_DEFINED__
85typedef interface OpenCLOn12CreatorID OpenCLOn12CreatorID;
86
87#endif /* __OpenCLOn12CreatorID_FWD_DEFINED__ */
88
89
90#ifndef __VulkanOn12CreatorID_FWD_DEFINED__
91#define __VulkanOn12CreatorID_FWD_DEFINED__
92typedef interface VulkanOn12CreatorID VulkanOn12CreatorID;
93
94#endif /* __VulkanOn12CreatorID_FWD_DEFINED__ */
95
96
97#ifndef __DirectMLTensorFlowCreatorID_FWD_DEFINED__
98#define __DirectMLTensorFlowCreatorID_FWD_DEFINED__
99typedef interface DirectMLTensorFlowCreatorID DirectMLTensorFlowCreatorID;
100
101#endif /* __DirectMLTensorFlowCreatorID_FWD_DEFINED__ */
102
103
104#ifndef __DirectMLPyTorchCreatorID_FWD_DEFINED__
105#define __DirectMLPyTorchCreatorID_FWD_DEFINED__
106typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
107
108#endif /* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */
109
110
111#ifndef __DirectMLWebNNCreatorID_FWD_DEFINED__
112#define __DirectMLWebNNCreatorID_FWD_DEFINED__
113typedef interface DirectMLWebNNCreatorID DirectMLWebNNCreatorID;
114
115#endif /* __DirectMLWebNNCreatorID_FWD_DEFINED__ */
116
117
118/* header files for imported files */
119#include "oaidl.h"
120#include "ocidl.h"
121#include "d3d11on12.h"
122
123#ifdef __cplusplus
124extern "C"{
125#endif
126
127
128/* interface __MIDL_itf_d3d12compatibility_0000_0000 */
129/* [local] */
130
131#include <winapifamily.h>
132#pragma region Desktop Family
133#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
134typedef
135enum D3D12_COMPATIBILITY_SHARED_FLAGS
136 {
137 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
138 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
139 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
140 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4
141 } D3D12_COMPATIBILITY_SHARED_FLAGS;
142
143DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )
144typedef
145enum D3D12_REFLECT_SHARED_PROPERTY
146 {
147 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS = 0,
148 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS = ( D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS + 1 ) ,
149 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE = ( D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS + 1 )
150 } D3D12_REFLECT_SHARED_PROPERTY;
151
152
153
154extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_c_ifspec;
155extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0000_v0_0_s_ifspec;
156
157#ifndef __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
158#define __ID3D12CompatibilityDevice_INTERFACE_DEFINED__
159
160/* interface ID3D12CompatibilityDevice */
161/* [unique][local][object][uuid] */
162
163
164EXTERN_C const IID IID_ID3D12CompatibilityDevice;
165
166#if defined(__cplusplus) && !defined(CINTERFACE)
167
168 MIDL_INTERFACE("8f1c0e3c-fae3-4a82-b098-bfe1708207ff")
169 ID3D12CompatibilityDevice : public IUnknown
170 {
171 public:
172 virtual HRESULT STDMETHODCALLTYPE CreateSharedResource(
173 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
174 D3D12_HEAP_FLAGS HeapFlags,
175 _In_ const D3D12_RESOURCE_DESC *pDesc,
176 D3D12_RESOURCE_STATES InitialResourceState,
177 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
178 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
179 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
180 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
181 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
182 REFIID riid,
183 _COM_Outptr_opt_ void **ppResource) = 0;
184
185 virtual HRESULT STDMETHODCALLTYPE CreateSharedHeap(
186 _In_ const D3D12_HEAP_DESC *pHeapDesc,
187 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
188 REFIID riid,
189 _COM_Outptr_opt_ void **ppHeap) = 0;
190
191 virtual HRESULT STDMETHODCALLTYPE ReflectSharedProperties(
192 _In_ ID3D12Object *pHeapOrResource,
193 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
194 _Out_writes_bytes_(DataSize) void *pData,
195 UINT DataSize) = 0;
196
197 };
198
199
200#else /* C style interface */
201
202 typedef struct ID3D12CompatibilityDeviceVtbl
203 {
204 BEGIN_INTERFACE
205
206 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
207 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
208 ID3D12CompatibilityDevice * This,
209 REFIID riid,
210 _COM_Outptr_ void **ppvObject);
211
212 DECLSPEC_XFGVIRT(IUnknown, AddRef)
213 ULONG ( STDMETHODCALLTYPE *AddRef )(
214 ID3D12CompatibilityDevice * This);
215
216 DECLSPEC_XFGVIRT(IUnknown, Release)
217 ULONG ( STDMETHODCALLTYPE *Release )(
218 ID3D12CompatibilityDevice * This);
219
220 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedResource)
221 HRESULT ( STDMETHODCALLTYPE *CreateSharedResource )(
222 ID3D12CompatibilityDevice * This,
223 _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
224 D3D12_HEAP_FLAGS HeapFlags,
225 _In_ const D3D12_RESOURCE_DESC *pDesc,
226 D3D12_RESOURCE_STATES InitialResourceState,
227 _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
228 _In_opt_ const D3D11_RESOURCE_FLAGS *pFlags11,
229 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
230 _In_opt_ ID3D12LifetimeTracker *pLifetimeTracker,
231 _In_opt_ ID3D12SwapChainAssistant *pOwningSwapchain,
232 REFIID riid,
233 _COM_Outptr_opt_ void **ppResource);
234
235 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, CreateSharedHeap)
236 HRESULT ( STDMETHODCALLTYPE *CreateSharedHeap )(
237 ID3D12CompatibilityDevice * This,
238 _In_ const D3D12_HEAP_DESC *pHeapDesc,
239 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
240 REFIID riid,
241 _COM_Outptr_opt_ void **ppHeap);
242
243 DECLSPEC_XFGVIRT(ID3D12CompatibilityDevice, ReflectSharedProperties)
244 HRESULT ( STDMETHODCALLTYPE *ReflectSharedProperties )(
245 ID3D12CompatibilityDevice * This,
246 _In_ ID3D12Object *pHeapOrResource,
247 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
248 _Out_writes_bytes_(DataSize) void *pData,
249 UINT DataSize);
250
251 END_INTERFACE
252 } ID3D12CompatibilityDeviceVtbl;
253
254 interface ID3D12CompatibilityDevice
255 {
256 CONST_VTBL struct ID3D12CompatibilityDeviceVtbl *lpVtbl;
257 };
258
259
260
261#ifdef COBJMACROS
262
263
264#define ID3D12CompatibilityDevice_QueryInterface(This,riid,ppvObject) \
265 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
266
267#define ID3D12CompatibilityDevice_AddRef(This) \
268 ( (This)->lpVtbl -> AddRef(This) )
269
270#define ID3D12CompatibilityDevice_Release(This) \
271 ( (This)->lpVtbl -> Release(This) )
272
273
274#define ID3D12CompatibilityDevice_CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) \
275 ( (This)->lpVtbl -> CreateSharedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,pFlags11,CompatibilityFlags,pLifetimeTracker,pOwningSwapchain,riid,ppResource) )
276
277#define ID3D12CompatibilityDevice_CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) \
278 ( (This)->lpVtbl -> CreateSharedHeap(This,pHeapDesc,CompatibilityFlags,riid,ppHeap) )
279
280#define ID3D12CompatibilityDevice_ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) \
281 ( (This)->lpVtbl -> ReflectSharedProperties(This,pHeapOrResource,ReflectType,pData,DataSize) )
282
283#endif /* COBJMACROS */
284
285
286#endif /* C style interface */
287
288
289
290
291#endif /* __ID3D12CompatibilityDevice_INTERFACE_DEFINED__ */
292
293
294#ifndef __D3D11On12CreatorID_INTERFACE_DEFINED__
295#define __D3D11On12CreatorID_INTERFACE_DEFINED__
296
297/* interface D3D11On12CreatorID */
298/* [unique][local][object][uuid] */
299
300
301EXTERN_C const IID IID_D3D11On12CreatorID;
302
303#if defined(__cplusplus) && !defined(CINTERFACE)
304
305 MIDL_INTERFACE("edbf5678-2960-4e81-8429-99d4b2630c4e")
306 D3D11On12CreatorID : public IUnknown
307 {
308 public:
309 };
310
311
312#else /* C style interface */
313
314 typedef struct D3D11On12CreatorIDVtbl
315 {
316 BEGIN_INTERFACE
317
318 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
319 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
320 D3D11On12CreatorID * This,
321 REFIID riid,
322 _COM_Outptr_ void **ppvObject);
323
324 DECLSPEC_XFGVIRT(IUnknown, AddRef)
325 ULONG ( STDMETHODCALLTYPE *AddRef )(
326 D3D11On12CreatorID * This);
327
328 DECLSPEC_XFGVIRT(IUnknown, Release)
329 ULONG ( STDMETHODCALLTYPE *Release )(
330 D3D11On12CreatorID * This);
331
332 END_INTERFACE
333 } D3D11On12CreatorIDVtbl;
334
335 interface D3D11On12CreatorID
336 {
337 CONST_VTBL struct D3D11On12CreatorIDVtbl *lpVtbl;
338 };
339
340
341
342#ifdef COBJMACROS
343
344
345#define D3D11On12CreatorID_QueryInterface(This,riid,ppvObject) \
346 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
347
348#define D3D11On12CreatorID_AddRef(This) \
349 ( (This)->lpVtbl -> AddRef(This) )
350
351#define D3D11On12CreatorID_Release(This) \
352 ( (This)->lpVtbl -> Release(This) )
353
354
355#endif /* COBJMACROS */
356
357
358#endif /* C style interface */
359
360
361
362
363#endif /* __D3D11On12CreatorID_INTERFACE_DEFINED__ */
364
365
366#ifndef __D3D9On12CreatorID_INTERFACE_DEFINED__
367#define __D3D9On12CreatorID_INTERFACE_DEFINED__
368
369/* interface D3D9On12CreatorID */
370/* [unique][local][object][uuid] */
371
372
373EXTERN_C const IID IID_D3D9On12CreatorID;
374
375#if defined(__cplusplus) && !defined(CINTERFACE)
376
377 MIDL_INTERFACE("fffcbb7f-15d3-42a2-841e-9d8d32f37ddd")
378 D3D9On12CreatorID : public IUnknown
379 {
380 public:
381 };
382
383
384#else /* C style interface */
385
386 typedef struct D3D9On12CreatorIDVtbl
387 {
388 BEGIN_INTERFACE
389
390 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
391 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
392 D3D9On12CreatorID * This,
393 REFIID riid,
394 _COM_Outptr_ void **ppvObject);
395
396 DECLSPEC_XFGVIRT(IUnknown, AddRef)
397 ULONG ( STDMETHODCALLTYPE *AddRef )(
398 D3D9On12CreatorID * This);
399
400 DECLSPEC_XFGVIRT(IUnknown, Release)
401 ULONG ( STDMETHODCALLTYPE *Release )(
402 D3D9On12CreatorID * This);
403
404 END_INTERFACE
405 } D3D9On12CreatorIDVtbl;
406
407 interface D3D9On12CreatorID
408 {
409 CONST_VTBL struct D3D9On12CreatorIDVtbl *lpVtbl;
410 };
411
412
413
414#ifdef COBJMACROS
415
416
417#define D3D9On12CreatorID_QueryInterface(This,riid,ppvObject) \
418 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
419
420#define D3D9On12CreatorID_AddRef(This) \
421 ( (This)->lpVtbl -> AddRef(This) )
422
423#define D3D9On12CreatorID_Release(This) \
424 ( (This)->lpVtbl -> Release(This) )
425
426
427#endif /* COBJMACROS */
428
429
430#endif /* C style interface */
431
432
433
434
435#endif /* __D3D9On12CreatorID_INTERFACE_DEFINED__ */
436
437
438#ifndef __OpenGLOn12CreatorID_INTERFACE_DEFINED__
439#define __OpenGLOn12CreatorID_INTERFACE_DEFINED__
440
441/* interface OpenGLOn12CreatorID */
442/* [unique][local][object][uuid] */
443
444
445EXTERN_C const IID IID_OpenGLOn12CreatorID;
446
447#if defined(__cplusplus) && !defined(CINTERFACE)
448
449 MIDL_INTERFACE("6bb3cd34-0d19-45ab-97ed-d720ba3dfc80")
450 OpenGLOn12CreatorID : public IUnknown
451 {
452 public:
453 };
454
455
456#else /* C style interface */
457
458 typedef struct OpenGLOn12CreatorIDVtbl
459 {
460 BEGIN_INTERFACE
461
462 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
463 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
464 OpenGLOn12CreatorID * This,
465 REFIID riid,
466 _COM_Outptr_ void **ppvObject);
467
468 DECLSPEC_XFGVIRT(IUnknown, AddRef)
469 ULONG ( STDMETHODCALLTYPE *AddRef )(
470 OpenGLOn12CreatorID * This);
471
472 DECLSPEC_XFGVIRT(IUnknown, Release)
473 ULONG ( STDMETHODCALLTYPE *Release )(
474 OpenGLOn12CreatorID * This);
475
476 END_INTERFACE
477 } OpenGLOn12CreatorIDVtbl;
478
479 interface OpenGLOn12CreatorID
480 {
481 CONST_VTBL struct OpenGLOn12CreatorIDVtbl *lpVtbl;
482 };
483
484
485
486#ifdef COBJMACROS
487
488
489#define OpenGLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
491
492#define OpenGLOn12CreatorID_AddRef(This) \
493 ( (This)->lpVtbl -> AddRef(This) )
494
495#define OpenGLOn12CreatorID_Release(This) \
496 ( (This)->lpVtbl -> Release(This) )
497
498
499#endif /* COBJMACROS */
500
501
502#endif /* C style interface */
503
504
505
506
507#endif /* __OpenGLOn12CreatorID_INTERFACE_DEFINED__ */
508
509
510#ifndef __OpenCLOn12CreatorID_INTERFACE_DEFINED__
511#define __OpenCLOn12CreatorID_INTERFACE_DEFINED__
512
513/* interface OpenCLOn12CreatorID */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_OpenCLOn12CreatorID;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("3f76bb74-91b5-4a88-b126-20ca0331cd60")
522 OpenCLOn12CreatorID : public IUnknown
523 {
524 public:
525 };
526
527
528#else /* C style interface */
529
530 typedef struct OpenCLOn12CreatorIDVtbl
531 {
532 BEGIN_INTERFACE
533
534 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
535 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
536 OpenCLOn12CreatorID * This,
537 REFIID riid,
538 _COM_Outptr_ void **ppvObject);
539
540 DECLSPEC_XFGVIRT(IUnknown, AddRef)
541 ULONG ( STDMETHODCALLTYPE *AddRef )(
542 OpenCLOn12CreatorID * This);
543
544 DECLSPEC_XFGVIRT(IUnknown, Release)
545 ULONG ( STDMETHODCALLTYPE *Release )(
546 OpenCLOn12CreatorID * This);
547
548 END_INTERFACE
549 } OpenCLOn12CreatorIDVtbl;
550
551 interface OpenCLOn12CreatorID
552 {
553 CONST_VTBL struct OpenCLOn12CreatorIDVtbl *lpVtbl;
554 };
555
556
557
558#ifdef COBJMACROS
559
560
561#define OpenCLOn12CreatorID_QueryInterface(This,riid,ppvObject) \
562 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
563
564#define OpenCLOn12CreatorID_AddRef(This) \
565 ( (This)->lpVtbl -> AddRef(This) )
566
567#define OpenCLOn12CreatorID_Release(This) \
568 ( (This)->lpVtbl -> Release(This) )
569
570
571#endif /* COBJMACROS */
572
573
574#endif /* C style interface */
575
576
577
578
579#endif /* __OpenCLOn12CreatorID_INTERFACE_DEFINED__ */
580
581
582#ifndef __VulkanOn12CreatorID_INTERFACE_DEFINED__
583#define __VulkanOn12CreatorID_INTERFACE_DEFINED__
584
585/* interface VulkanOn12CreatorID */
586/* [unique][local][object][uuid] */
587
588
589EXTERN_C const IID IID_VulkanOn12CreatorID;
590
591#if defined(__cplusplus) && !defined(CINTERFACE)
592
593 MIDL_INTERFACE("bc806e01-3052-406c-a3e8-9fc07f048f98")
594 VulkanOn12CreatorID : public IUnknown
595 {
596 public:
597 };
598
599
600#else /* C style interface */
601
602 typedef struct VulkanOn12CreatorIDVtbl
603 {
604 BEGIN_INTERFACE
605
606 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
607 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
608 VulkanOn12CreatorID * This,
609 REFIID riid,
610 _COM_Outptr_ void **ppvObject);
611
612 DECLSPEC_XFGVIRT(IUnknown, AddRef)
613 ULONG ( STDMETHODCALLTYPE *AddRef )(
614 VulkanOn12CreatorID * This);
615
616 DECLSPEC_XFGVIRT(IUnknown, Release)
617 ULONG ( STDMETHODCALLTYPE *Release )(
618 VulkanOn12CreatorID * This);
619
620 END_INTERFACE
621 } VulkanOn12CreatorIDVtbl;
622
623 interface VulkanOn12CreatorID
624 {
625 CONST_VTBL struct VulkanOn12CreatorIDVtbl *lpVtbl;
626 };
627
628
629
630#ifdef COBJMACROS
631
632
633#define VulkanOn12CreatorID_QueryInterface(This,riid,ppvObject) \
634 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
635
636#define VulkanOn12CreatorID_AddRef(This) \
637 ( (This)->lpVtbl -> AddRef(This) )
638
639#define VulkanOn12CreatorID_Release(This) \
640 ( (This)->lpVtbl -> Release(This) )
641
642
643#endif /* COBJMACROS */
644
645
646#endif /* C style interface */
647
648
649
650
651#endif /* __VulkanOn12CreatorID_INTERFACE_DEFINED__ */
652
653
654#ifndef __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
655#define __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__
656
657/* interface DirectMLTensorFlowCreatorID */
658/* [unique][local][object][uuid] */
659
660
661EXTERN_C const IID IID_DirectMLTensorFlowCreatorID;
662
663#if defined(__cplusplus) && !defined(CINTERFACE)
664
665 MIDL_INTERFACE("cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab")
666 DirectMLTensorFlowCreatorID : public IUnknown
667 {
668 public:
669 };
670
671
672#else /* C style interface */
673
674 typedef struct DirectMLTensorFlowCreatorIDVtbl
675 {
676 BEGIN_INTERFACE
677
678 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
679 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
680 DirectMLTensorFlowCreatorID * This,
681 REFIID riid,
682 _COM_Outptr_ void **ppvObject);
683
684 DECLSPEC_XFGVIRT(IUnknown, AddRef)
685 ULONG ( STDMETHODCALLTYPE *AddRef )(
686 DirectMLTensorFlowCreatorID * This);
687
688 DECLSPEC_XFGVIRT(IUnknown, Release)
689 ULONG ( STDMETHODCALLTYPE *Release )(
690 DirectMLTensorFlowCreatorID * This);
691
692 END_INTERFACE
693 } DirectMLTensorFlowCreatorIDVtbl;
694
695 interface DirectMLTensorFlowCreatorID
696 {
697 CONST_VTBL struct DirectMLTensorFlowCreatorIDVtbl *lpVtbl;
698 };
699
700
701
702#ifdef COBJMACROS
703
704
705#define DirectMLTensorFlowCreatorID_QueryInterface(This,riid,ppvObject) \
706 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
707
708#define DirectMLTensorFlowCreatorID_AddRef(This) \
709 ( (This)->lpVtbl -> AddRef(This) )
710
711#define DirectMLTensorFlowCreatorID_Release(This) \
712 ( (This)->lpVtbl -> Release(This) )
713
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __DirectMLTensorFlowCreatorID_INTERFACE_DEFINED__ */
724
725
726#ifndef __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
727#define __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__
728
729/* interface DirectMLPyTorchCreatorID */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("af029192-fba1-4b05-9116-235e06560354")
738 DirectMLPyTorchCreatorID : public IUnknown
739 {
740 public:
741 };
742
743
744#else /* C style interface */
745
746 typedef struct DirectMLPyTorchCreatorIDVtbl
747 {
748 BEGIN_INTERFACE
749
750 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
751 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
752 DirectMLPyTorchCreatorID * This,
753 REFIID riid,
754 _COM_Outptr_ void **ppvObject);
755
756 DECLSPEC_XFGVIRT(IUnknown, AddRef)
757 ULONG ( STDMETHODCALLTYPE *AddRef )(
758 DirectMLPyTorchCreatorID * This);
759
760 DECLSPEC_XFGVIRT(IUnknown, Release)
761 ULONG ( STDMETHODCALLTYPE *Release )(
762 DirectMLPyTorchCreatorID * This);
763
764 END_INTERFACE
765 } DirectMLPyTorchCreatorIDVtbl;
766
767 interface DirectMLPyTorchCreatorID
768 {
769 CONST_VTBL struct DirectMLPyTorchCreatorIDVtbl *lpVtbl;
770 };
771
772
773
774#ifdef COBJMACROS
775
776
777#define DirectMLPyTorchCreatorID_QueryInterface(This,riid,ppvObject) \
778 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
779
780#define DirectMLPyTorchCreatorID_AddRef(This) \
781 ( (This)->lpVtbl -> AddRef(This) )
782
783#define DirectMLPyTorchCreatorID_Release(This) \
784 ( (This)->lpVtbl -> Release(This) )
785
786
787#endif /* COBJMACROS */
788
789
790#endif /* C style interface */
791
792
793
794
795#endif /* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */
796
797
798#ifndef __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
799#define __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
800
801/* interface DirectMLWebNNCreatorID */
802/* [unique][local][object][uuid] */
803
804
805EXTERN_C const IID IID_DirectMLWebNNCreatorID;
806
807#if defined(__cplusplus) && !defined(CINTERFACE)
808
809 MIDL_INTERFACE("fdf01a76-1e11-450f-902b-74f04ea08094")
810 DirectMLWebNNCreatorID : public IUnknown
811 {
812 public:
813 };
814
815
816#else /* C style interface */
817
818 typedef struct DirectMLWebNNCreatorIDVtbl
819 {
820 BEGIN_INTERFACE
821
822 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
823 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
824 DirectMLWebNNCreatorID * This,
825 REFIID riid,
826 _COM_Outptr_ void **ppvObject);
827
828 DECLSPEC_XFGVIRT(IUnknown, AddRef)
829 ULONG ( STDMETHODCALLTYPE *AddRef )(
830 DirectMLWebNNCreatorID * This);
831
832 DECLSPEC_XFGVIRT(IUnknown, Release)
833 ULONG ( STDMETHODCALLTYPE *Release )(
834 DirectMLWebNNCreatorID * This);
835
836 END_INTERFACE
837 } DirectMLWebNNCreatorIDVtbl;
838
839 interface DirectMLWebNNCreatorID
840 {
841 CONST_VTBL struct DirectMLWebNNCreatorIDVtbl *lpVtbl;
842 };
843
844
845
846#ifdef COBJMACROS
847
848
849#define DirectMLWebNNCreatorID_QueryInterface(This,riid,ppvObject) \
850 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
851
852#define DirectMLWebNNCreatorID_AddRef(This) \
853 ( (This)->lpVtbl -> AddRef(This) )
854
855#define DirectMLWebNNCreatorID_Release(This) \
856 ( (This)->lpVtbl -> Release(This) )
857
858
859#endif /* COBJMACROS */
860
861
862#endif /* C style interface */
863
864
865
866
867#endif /* __DirectMLWebNNCreatorID_INTERFACE_DEFINED__ */
868
869
870/* interface __MIDL_itf_d3d12compatibility_0000_0009 */
871/* [local] */
872
873#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
874#pragma endregion
875DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);
876DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);
877DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);
878DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);
879DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);
880DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);
881DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
882DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);
883DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);
884
885
886extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_c_ifspec;
887extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_s_ifspec;
888
889/* Additional Prototypes for ALL interfaces */
890
891/* end of Additional Prototypes */
892
893#ifdef __cplusplus
894}
895#endif
896
897#endif
898
899
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl
new file mode 100644
index 0000000..019afc9
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compatibility.idl
@@ -0,0 +1,101 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d11on12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region Desktop Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
18{
19 D3D12_COMPATIBILITY_SHARED_FLAG_NONE = 0,
20 D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
21 D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
22 D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
23
24} D3D12_COMPATIBILITY_SHARED_FLAGS;
25cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )" )
26
27typedef enum D3D12_REFLECT_SHARED_PROPERTY
28{
29 D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS, // D3D11_RESOURCE_FLAGS
30 D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
31 D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE, // HANDLE
32} D3D12_REFLECT_SHARED_PROPERTY;
33
34[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
35interface ID3D12CompatibilityDevice
36 : IUnknown
37{
38 HRESULT CreateSharedResource(
39 [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
40 D3D12_HEAP_FLAGS HeapFlags,
41 [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
42 D3D12_RESOURCE_STATES InitialResourceState,
43 [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
44 [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
45 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
46 [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
47 [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
48 REFIID riid,
49 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
50
51 HRESULT CreateSharedHeap(
52 [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
53 D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
54 REFIID riid,
55 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
56
57 HRESULT ReflectSharedProperties(
58 [annotation("_In_")] ID3D12Object* pHeapOrResource,
59 D3D12_REFLECT_SHARED_PROPERTY ReflectType,
60 [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
61 UINT DataSize);
62}
63
64[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
65interface D3D11On12CreatorID : IUnknown { };
66
67[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
68interface D3D9On12CreatorID : IUnknown { };
69
70[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
71interface OpenGLOn12CreatorID : IUnknown { };
72
73[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
74interface OpenCLOn12CreatorID : IUnknown { };
75
76[uuid(bc806e01-3052-406c-a3e8-9fc07f048f98), object, local, pointer_default(unique)]
77interface VulkanOn12CreatorID : IUnknown { };
78
79[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
80interface DirectMLTensorFlowCreatorID : IUnknown { };
81
82[uuid(af029192-fba1-4b05-9116-235e06560354), object, local, pointer_default(unique)]
83interface DirectMLPyTorchCreatorID : IUnknown { };
84
85[uuid(fdf01a76-1e11-450f-902b-74f04ea08094), object, local, pointer_default(unique)]
86interface DirectMLWebNNCreatorID : IUnknown { };
87
88
89cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
90#pragma endregion
91
92
93cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
94cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
95cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
96cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
97cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
98cpp_quote( "DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);" )
99cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
100cpp_quote( "DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);" )
101cpp_quote( "DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h
new file mode 100644
index 0000000..1d8fe3b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.h
@@ -0,0 +1,977 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12compiler_h__
39#define __d3d12compiler_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12CompilerFactoryChild_FWD_DEFINED__
56#define __ID3D12CompilerFactoryChild_FWD_DEFINED__
57typedef interface ID3D12CompilerFactoryChild ID3D12CompilerFactoryChild;
58
59#endif /* __ID3D12CompilerFactoryChild_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12CompilerCacheSession_FWD_DEFINED__
63#define __ID3D12CompilerCacheSession_FWD_DEFINED__
64typedef interface ID3D12CompilerCacheSession ID3D12CompilerCacheSession;
65
66#endif /* __ID3D12CompilerCacheSession_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12CompilerStateObject_FWD_DEFINED__
70#define __ID3D12CompilerStateObject_FWD_DEFINED__
71typedef interface ID3D12CompilerStateObject ID3D12CompilerStateObject;
72
73#endif /* __ID3D12CompilerStateObject_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Compiler_FWD_DEFINED__
77#define __ID3D12Compiler_FWD_DEFINED__
78typedef interface ID3D12Compiler ID3D12Compiler;
79
80#endif /* __ID3D12Compiler_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12CompilerFactory_FWD_DEFINED__
84#define __ID3D12CompilerFactory_FWD_DEFINED__
85typedef interface ID3D12CompilerFactory ID3D12CompilerFactory;
86
87#endif /* __ID3D12CompilerFactory_FWD_DEFINED__ */
88
89
90/* header files for imported files */
91#include "oaidl.h"
92#include "ocidl.h"
93#include "dxgicommon.h"
94#include "d3d12.h"
95
96#ifdef __cplusplus
97extern "C"{
98#endif
99
100
101/* interface __MIDL_itf_d3d12compiler_0000_0000 */
102/* [local] */
103
104#include <winapifamily.h>
105#pragma region App Family
106#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
107typedef struct D3D12_ADAPTER_FAMILY
108 {
109 WCHAR szAdapterFamily[ 128 ];
110 } D3D12_ADAPTER_FAMILY;
111
112typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)(
113 _In_ LPCWSTR pPluginCompilerDllPath,
114 _In_ REFIID riid,
115 _COM_Outptr_opt_ void** ppFactory );
116
117HRESULT WINAPI D3D12CompilerCreateFactory(
118 _In_ LPCWSTR pPluginCompilerDllPath,
119 _In_ REFIID riid, // Expected: ID3D12CompilerFactory
120 _COM_Outptr_opt_ void** ppFactory );
121
122typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
123 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
124 _Out_ ID3DBlob** ppBlob,
125 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
126
127HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(
128 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
129 _Out_ ID3DBlob** ppBlob,
130 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
131
132
133
134extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_c_ifspec;
135extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0000_v0_0_s_ifspec;
136
137#ifndef __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
138#define __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__
139
140/* interface ID3D12CompilerFactoryChild */
141/* [unique][local][object][uuid] */
142
143
144EXTERN_C const IID IID_ID3D12CompilerFactoryChild;
145
146#if defined(__cplusplus) && !defined(CINTERFACE)
147
148 MIDL_INTERFACE("e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc")
149 ID3D12CompilerFactoryChild : public IUnknown
150 {
151 public:
152 virtual HRESULT STDMETHODCALLTYPE GetFactory(
153 _In_ REFIID riid,
154 _COM_Outptr_ void **ppCompilerFactory) = 0;
155
156 };
157
158
159#else /* C style interface */
160
161 typedef struct ID3D12CompilerFactoryChildVtbl
162 {
163 BEGIN_INTERFACE
164
165 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
166 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
167 ID3D12CompilerFactoryChild * This,
168 REFIID riid,
169 _COM_Outptr_ void **ppvObject);
170
171 DECLSPEC_XFGVIRT(IUnknown, AddRef)
172 ULONG ( STDMETHODCALLTYPE *AddRef )(
173 ID3D12CompilerFactoryChild * This);
174
175 DECLSPEC_XFGVIRT(IUnknown, Release)
176 ULONG ( STDMETHODCALLTYPE *Release )(
177 ID3D12CompilerFactoryChild * This);
178
179 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
180 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
181 ID3D12CompilerFactoryChild * This,
182 _In_ REFIID riid,
183 _COM_Outptr_ void **ppCompilerFactory);
184
185 END_INTERFACE
186 } ID3D12CompilerFactoryChildVtbl;
187
188 interface ID3D12CompilerFactoryChild
189 {
190 CONST_VTBL struct ID3D12CompilerFactoryChildVtbl *lpVtbl;
191 };
192
193
194
195#ifdef COBJMACROS
196
197
198#define ID3D12CompilerFactoryChild_QueryInterface(This,riid,ppvObject) \
199 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
200
201#define ID3D12CompilerFactoryChild_AddRef(This) \
202 ( (This)->lpVtbl -> AddRef(This) )
203
204#define ID3D12CompilerFactoryChild_Release(This) \
205 ( (This)->lpVtbl -> Release(This) )
206
207
208#define ID3D12CompilerFactoryChild_GetFactory(This,riid,ppCompilerFactory) \
209 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
210
211#endif /* COBJMACROS */
212
213
214#endif /* C style interface */
215
216
217
218
219#endif /* __ID3D12CompilerFactoryChild_INTERFACE_DEFINED__ */
220
221
222/* interface __MIDL_itf_d3d12compiler_0000_0001 */
223/* [local] */
224
225typedef
226enum D3D12_COMPILER_VALUE_TYPE
227 {
228 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
229 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
230 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
231 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3
232 } D3D12_COMPILER_VALUE_TYPE;
233
234typedef
235enum D3D12_COMPILER_VALUE_TYPE_FLAGS
236 {
237 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0,
238 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = ( 1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE ) ,
239 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_METADATA ) ,
240 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = ( 1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB ) ,
241 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = ( 1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA )
242 } D3D12_COMPILER_VALUE_TYPE_FLAGS;
243
244DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )
245typedef struct D3D12_COMPILER_DATABASE_PATH
246 {
247 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
248 LPCWSTR pPath;
249 } D3D12_COMPILER_DATABASE_PATH;
250
251typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
252 {
253 _Field_size_bytes_full_(KeySize) const void *pKey;
254 UINT KeySize;
255 } D3D12_COMPILER_CACHE_GROUP_KEY;
256
257typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
258 {
259 _Field_size_bytes_full_(KeySize) const void *pKey;
260 UINT KeySize;
261 } D3D12_COMPILER_CACHE_VALUE_KEY;
262
263typedef struct D3D12_COMPILER_CACHE_VALUE
264 {
265 _Field_size_bytes_full_(ValueSize) void *pValue;
266 UINT ValueSize;
267 } D3D12_COMPILER_CACHE_VALUE;
268
269typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
270 {
271 D3D12_COMPILER_VALUE_TYPE Type;
272 D3D12_COMPILER_CACHE_VALUE Value;
273 } D3D12_COMPILER_CACHE_TYPED_VALUE;
274
275typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
276 {
277 _Field_size_bytes_full_(ValueSize) const void *pValue;
278 UINT ValueSize;
279 } D3D12_COMPILER_CACHE_CONST_VALUE;
280
281typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
282 {
283 D3D12_COMPILER_VALUE_TYPE Type;
284 D3D12_COMPILER_CACHE_CONST_VALUE Value;
285 } D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
286
287typedef struct D3D12_COMPILER_TARGET
288 {
289 UINT AdapterFamilyIndex;
290 UINT64 ABIVersion;
291 } D3D12_COMPILER_TARGET;
292
293typedef void *( __stdcall *D3D12CompilerCacheSessionAllocationFunc )(
294 SIZE_T SizeInBytes,
295 _Inout_opt_ void *pContext);
296
297typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValueKeysFunc )(
298 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
299 _Inout_opt_ void *pContext);
300
301typedef void ( __stdcall *D3D12CompilerCacheSessionGroupValuesFunc )(
302 UINT ValueKeyIndex,
303 _In_ const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValue,
304 _Inout_opt_ void *pContext);
305
306
307
308extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_c_ifspec;
309extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0001_v0_0_s_ifspec;
310
311#ifndef __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
312#define __ID3D12CompilerCacheSession_INTERFACE_DEFINED__
313
314/* interface ID3D12CompilerCacheSession */
315/* [unique][local][object][uuid] */
316
317
318EXTERN_C const IID IID_ID3D12CompilerCacheSession;
319
320#if defined(__cplusplus) && !defined(CINTERFACE)
321
322 MIDL_INTERFACE("5704e5e6-054b-4738-b661-7b0d68d8dde2")
323 ID3D12CompilerCacheSession : public ID3D12CompilerFactoryChild
324 {
325 public:
326 virtual HRESULT STDMETHODCALLTYPE FindGroup(
327 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
328 _Out_opt_ UINT *pGroupVersion) = 0;
329
330 virtual HRESULT STDMETHODCALLTYPE FindGroupValueKeys(
331 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
332 _In_opt_ const UINT *pExpectedGroupVersion,
333 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
334 _Inout_opt_ void *pContext) = 0;
335
336 virtual HRESULT STDMETHODCALLTYPE FindGroupValues(
337 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
338 _In_opt_ const UINT *pExpectedGroupVersion,
339 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
340 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
341 _Inout_opt_ void *pContext) = 0;
342
343 virtual HRESULT STDMETHODCALLTYPE FindValue(
344 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
345 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
346 UINT NumTypedValues,
347 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
348 _Inout_opt_ void *pContext) = 0;
349
350 virtual const D3D12_APPLICATION_DESC *STDMETHODCALLTYPE GetApplicationDesc( void) = 0;
351
352#if defined(_MSC_VER) || !defined(_WIN32)
353 virtual D3D12_COMPILER_TARGET STDMETHODCALLTYPE GetCompilerTarget( void) = 0;
354#else
355 virtual D3D12_COMPILER_TARGET *STDMETHODCALLTYPE GetCompilerTarget(
356 D3D12_COMPILER_TARGET * RetVal) = 0;
357#endif
358
359 virtual D3D12_COMPILER_VALUE_TYPE_FLAGS STDMETHODCALLTYPE GetValueTypes( void) = 0;
360
361 virtual HRESULT STDMETHODCALLTYPE StoreGroupValueKeys(
362 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
363 UINT GroupVersion,
364 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
365 UINT NumValueKeys) = 0;
366
367 virtual HRESULT STDMETHODCALLTYPE StoreValue(
368 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
369 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
370 UINT NumTypedValues) = 0;
371
372 };
373
374
375#else /* C style interface */
376
377 typedef struct ID3D12CompilerCacheSessionVtbl
378 {
379 BEGIN_INTERFACE
380
381 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
382 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
383 ID3D12CompilerCacheSession * This,
384 REFIID riid,
385 _COM_Outptr_ void **ppvObject);
386
387 DECLSPEC_XFGVIRT(IUnknown, AddRef)
388 ULONG ( STDMETHODCALLTYPE *AddRef )(
389 ID3D12CompilerCacheSession * This);
390
391 DECLSPEC_XFGVIRT(IUnknown, Release)
392 ULONG ( STDMETHODCALLTYPE *Release )(
393 ID3D12CompilerCacheSession * This);
394
395 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
396 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
397 ID3D12CompilerCacheSession * This,
398 _In_ REFIID riid,
399 _COM_Outptr_ void **ppCompilerFactory);
400
401 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroup)
402 HRESULT ( STDMETHODCALLTYPE *FindGroup )(
403 ID3D12CompilerCacheSession * This,
404 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
405 _Out_opt_ UINT *pGroupVersion);
406
407 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValueKeys)
408 HRESULT ( STDMETHODCALLTYPE *FindGroupValueKeys )(
409 ID3D12CompilerCacheSession * This,
410 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
411 _In_opt_ const UINT *pExpectedGroupVersion,
412 _In_ D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
413 _Inout_opt_ void *pContext);
414
415 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindGroupValues)
416 HRESULT ( STDMETHODCALLTYPE *FindGroupValues )(
417 ID3D12CompilerCacheSession * This,
418 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
419 _In_opt_ const UINT *pExpectedGroupVersion,
420 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
421 _In_opt_ D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
422 _Inout_opt_ void *pContext);
423
424 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, FindValue)
425 HRESULT ( STDMETHODCALLTYPE *FindValue )(
426 ID3D12CompilerCacheSession * This,
427 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
428 _Inout_count_(NumTypedValues) D3D12_COMPILER_CACHE_TYPED_VALUE *pTypedValues,
429 UINT NumTypedValues,
430 _In_opt_ D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
431 _Inout_opt_ void *pContext);
432
433 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetApplicationDesc)
434 const D3D12_APPLICATION_DESC *( STDMETHODCALLTYPE *GetApplicationDesc )(
435 ID3D12CompilerCacheSession * This);
436
437 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetCompilerTarget)
438#if !defined(_WIN32)
439 D3D12_COMPILER_TARGET ( STDMETHODCALLTYPE *GetCompilerTarget )(
440 ID3D12CompilerCacheSession * This);
441
442#else
443 D3D12_COMPILER_TARGET *( STDMETHODCALLTYPE *GetCompilerTarget )(
444 ID3D12CompilerCacheSession * This,
445 D3D12_COMPILER_TARGET * RetVal);
446
447#endif
448
449 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, GetValueTypes)
450 D3D12_COMPILER_VALUE_TYPE_FLAGS ( STDMETHODCALLTYPE *GetValueTypes )(
451 ID3D12CompilerCacheSession * This);
452
453 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreGroupValueKeys)
454 HRESULT ( STDMETHODCALLTYPE *StoreGroupValueKeys )(
455 ID3D12CompilerCacheSession * This,
456 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
457 UINT GroupVersion,
458 _In_reads_(NumValueKeys) const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKeys,
459 UINT NumValueKeys);
460
461 DECLSPEC_XFGVIRT(ID3D12CompilerCacheSession, StoreValue)
462 HRESULT ( STDMETHODCALLTYPE *StoreValue )(
463 ID3D12CompilerCacheSession * This,
464 _In_ const D3D12_COMPILER_CACHE_VALUE_KEY *pValueKey,
465 _In_reads_(NumTypedValues) const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE *pTypedValues,
466 UINT NumTypedValues);
467
468 END_INTERFACE
469 } ID3D12CompilerCacheSessionVtbl;
470
471 interface ID3D12CompilerCacheSession
472 {
473 CONST_VTBL struct ID3D12CompilerCacheSessionVtbl *lpVtbl;
474 };
475
476
477
478#ifdef COBJMACROS
479
480
481#define ID3D12CompilerCacheSession_QueryInterface(This,riid,ppvObject) \
482 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
483
484#define ID3D12CompilerCacheSession_AddRef(This) \
485 ( (This)->lpVtbl -> AddRef(This) )
486
487#define ID3D12CompilerCacheSession_Release(This) \
488 ( (This)->lpVtbl -> Release(This) )
489
490
491#define ID3D12CompilerCacheSession_GetFactory(This,riid,ppCompilerFactory) \
492 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
493
494
495#define ID3D12CompilerCacheSession_FindGroup(This,pGroupKey,pGroupVersion) \
496 ( (This)->lpVtbl -> FindGroup(This,pGroupKey,pGroupVersion) )
497
498#define ID3D12CompilerCacheSession_FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) \
499 ( (This)->lpVtbl -> FindGroupValueKeys(This,pGroupKey,pExpectedGroupVersion,CallbackFunc,pContext) )
500
501#define ID3D12CompilerCacheSession_FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) \
502 ( (This)->lpVtbl -> FindGroupValues(This,pGroupKey,pExpectedGroupVersion,ValueTypeFlags,CallbackFunc,pContext) )
503
504#define ID3D12CompilerCacheSession_FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) \
505 ( (This)->lpVtbl -> FindValue(This,pValueKey,pTypedValues,NumTypedValues,pCallbackFunc,pContext) )
506
507#define ID3D12CompilerCacheSession_GetApplicationDesc(This) \
508 ( (This)->lpVtbl -> GetApplicationDesc(This) )
509#if !defined(_WIN32)
510
511#define ID3D12CompilerCacheSession_GetCompilerTarget(This) \
512 ( (This)->lpVtbl -> GetCompilerTarget(This) )
513#else
514#define ID3D12CompilerCacheSession_GetCompilerTarget(This,RetVal) \
515 ( (This)->lpVtbl -> GetCompilerTarget(This,RetVal) )
516#endif
517
518#define ID3D12CompilerCacheSession_GetValueTypes(This) \
519 ( (This)->lpVtbl -> GetValueTypes(This) )
520
521#define ID3D12CompilerCacheSession_StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) \
522 ( (This)->lpVtbl -> StoreGroupValueKeys(This,pGroupKey,GroupVersion,pValueKeys,NumValueKeys) )
523
524#define ID3D12CompilerCacheSession_StoreValue(This,pValueKey,pTypedValues,NumTypedValues) \
525 ( (This)->lpVtbl -> StoreValue(This,pValueKey,pTypedValues,NumTypedValues) )
526
527#endif /* COBJMACROS */
528
529
530#endif /* C style interface */
531
532
533
534
535#endif /* __ID3D12CompilerCacheSession_INTERFACE_DEFINED__ */
536
537
538#ifndef __ID3D12CompilerStateObject_INTERFACE_DEFINED__
539#define __ID3D12CompilerStateObject_INTERFACE_DEFINED__
540
541/* interface ID3D12CompilerStateObject */
542/* [unique][local][object][uuid] */
543
544
545EXTERN_C const IID IID_ID3D12CompilerStateObject;
546
547#if defined(__cplusplus) && !defined(CINTERFACE)
548
549 MIDL_INTERFACE("5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a")
550 ID3D12CompilerStateObject : public IUnknown
551 {
552 public:
553 virtual HRESULT STDMETHODCALLTYPE GetCompiler(
554 _In_ REFIID riid,
555 _COM_Outptr_ void **ppCompiler) = 0;
556
557 };
558
559
560#else /* C style interface */
561
562 typedef struct ID3D12CompilerStateObjectVtbl
563 {
564 BEGIN_INTERFACE
565
566 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
567 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
568 ID3D12CompilerStateObject * This,
569 REFIID riid,
570 _COM_Outptr_ void **ppvObject);
571
572 DECLSPEC_XFGVIRT(IUnknown, AddRef)
573 ULONG ( STDMETHODCALLTYPE *AddRef )(
574 ID3D12CompilerStateObject * This);
575
576 DECLSPEC_XFGVIRT(IUnknown, Release)
577 ULONG ( STDMETHODCALLTYPE *Release )(
578 ID3D12CompilerStateObject * This);
579
580 DECLSPEC_XFGVIRT(ID3D12CompilerStateObject, GetCompiler)
581 HRESULT ( STDMETHODCALLTYPE *GetCompiler )(
582 ID3D12CompilerStateObject * This,
583 _In_ REFIID riid,
584 _COM_Outptr_ void **ppCompiler);
585
586 END_INTERFACE
587 } ID3D12CompilerStateObjectVtbl;
588
589 interface ID3D12CompilerStateObject
590 {
591 CONST_VTBL struct ID3D12CompilerStateObjectVtbl *lpVtbl;
592 };
593
594
595
596#ifdef COBJMACROS
597
598
599#define ID3D12CompilerStateObject_QueryInterface(This,riid,ppvObject) \
600 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
601
602#define ID3D12CompilerStateObject_AddRef(This) \
603 ( (This)->lpVtbl -> AddRef(This) )
604
605#define ID3D12CompilerStateObject_Release(This) \
606 ( (This)->lpVtbl -> Release(This) )
607
608
609#define ID3D12CompilerStateObject_GetCompiler(This,riid,ppCompiler) \
610 ( (This)->lpVtbl -> GetCompiler(This,riid,ppCompiler) )
611
612#endif /* COBJMACROS */
613
614
615#endif /* C style interface */
616
617
618
619
620#endif /* __ID3D12CompilerStateObject_INTERFACE_DEFINED__ */
621
622
623/* interface __MIDL_itf_d3d12compiler_0000_0003 */
624/* [local] */
625
626typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
627 {
628 ID3D12CompilerStateObject *pExistingCollection;
629 UINT NumExports;
630 _In_reads_(NumExports) const D3D12_EXPORT_DESC *pExports;
631 } D3D12_COMPILER_EXISTING_COLLECTION_DESC;
632
633
634
635extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_c_ifspec;
636extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0003_v0_0_s_ifspec;
637
638#ifndef __ID3D12Compiler_INTERFACE_DEFINED__
639#define __ID3D12Compiler_INTERFACE_DEFINED__
640
641/* interface ID3D12Compiler */
642/* [unique][local][object][uuid] */
643
644
645EXTERN_C const IID IID_ID3D12Compiler;
646
647#if defined(__cplusplus) && !defined(CINTERFACE)
648
649 MIDL_INTERFACE("8c403c12-993b-4583-80f1-6824138fa68e")
650 ID3D12Compiler : public ID3D12CompilerFactoryChild
651 {
652 public:
653 virtual HRESULT STDMETHODCALLTYPE CompilePipelineState(
654 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
655 UINT GroupVersion,
656 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc) = 0;
657
658 virtual HRESULT STDMETHODCALLTYPE CompileStateObject(
659 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
660 UINT GroupVersion,
661 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
662 _In_ REFIID riid,
663 _COM_Outptr_ void **ppCompilerStateObject) = 0;
664
665 virtual HRESULT STDMETHODCALLTYPE CompileAddToStateObject(
666 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
667 UINT GroupVersion,
668 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
669 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
670 _In_ REFIID riid,
671 _COM_Outptr_ void **ppNewCompilerStateObject) = 0;
672
673 virtual HRESULT STDMETHODCALLTYPE GetCacheSession(
674 _In_ REFIID riid,
675 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
676
677 };
678
679
680#else /* C style interface */
681
682 typedef struct ID3D12CompilerVtbl
683 {
684 BEGIN_INTERFACE
685
686 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
687 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
688 ID3D12Compiler * This,
689 REFIID riid,
690 _COM_Outptr_ void **ppvObject);
691
692 DECLSPEC_XFGVIRT(IUnknown, AddRef)
693 ULONG ( STDMETHODCALLTYPE *AddRef )(
694 ID3D12Compiler * This);
695
696 DECLSPEC_XFGVIRT(IUnknown, Release)
697 ULONG ( STDMETHODCALLTYPE *Release )(
698 ID3D12Compiler * This);
699
700 DECLSPEC_XFGVIRT(ID3D12CompilerFactoryChild, GetFactory)
701 HRESULT ( STDMETHODCALLTYPE *GetFactory )(
702 ID3D12Compiler * This,
703 _In_ REFIID riid,
704 _COM_Outptr_ void **ppCompilerFactory);
705
706 DECLSPEC_XFGVIRT(ID3D12Compiler, CompilePipelineState)
707 HRESULT ( STDMETHODCALLTYPE *CompilePipelineState )(
708 ID3D12Compiler * This,
709 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
710 UINT GroupVersion,
711 _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc);
712
713 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileStateObject)
714 HRESULT ( STDMETHODCALLTYPE *CompileStateObject )(
715 ID3D12Compiler * This,
716 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
717 UINT GroupVersion,
718 _In_ const D3D12_STATE_OBJECT_DESC *pDesc,
719 _In_ REFIID riid,
720 _COM_Outptr_ void **ppCompilerStateObject);
721
722 DECLSPEC_XFGVIRT(ID3D12Compiler, CompileAddToStateObject)
723 HRESULT ( STDMETHODCALLTYPE *CompileAddToStateObject )(
724 ID3D12Compiler * This,
725 _In_ const D3D12_COMPILER_CACHE_GROUP_KEY *pGroupKey,
726 UINT GroupVersion,
727 _In_ const D3D12_STATE_OBJECT_DESC *pAddition,
728 _In_ ID3D12CompilerStateObject *pCompilerStateObjectToGrowFrom,
729 _In_ REFIID riid,
730 _COM_Outptr_ void **ppNewCompilerStateObject);
731
732 DECLSPEC_XFGVIRT(ID3D12Compiler, GetCacheSession)
733 HRESULT ( STDMETHODCALLTYPE *GetCacheSession )(
734 ID3D12Compiler * This,
735 _In_ REFIID riid,
736 _COM_Outptr_ void **ppCompilerCacheSession);
737
738 END_INTERFACE
739 } ID3D12CompilerVtbl;
740
741 interface ID3D12Compiler
742 {
743 CONST_VTBL struct ID3D12CompilerVtbl *lpVtbl;
744 };
745
746
747
748#ifdef COBJMACROS
749
750
751#define ID3D12Compiler_QueryInterface(This,riid,ppvObject) \
752 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
753
754#define ID3D12Compiler_AddRef(This) \
755 ( (This)->lpVtbl -> AddRef(This) )
756
757#define ID3D12Compiler_Release(This) \
758 ( (This)->lpVtbl -> Release(This) )
759
760
761#define ID3D12Compiler_GetFactory(This,riid,ppCompilerFactory) \
762 ( (This)->lpVtbl -> GetFactory(This,riid,ppCompilerFactory) )
763
764
765#define ID3D12Compiler_CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) \
766 ( (This)->lpVtbl -> CompilePipelineState(This,pGroupKey,GroupVersion,pDesc) )
767
768#define ID3D12Compiler_CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) \
769 ( (This)->lpVtbl -> CompileStateObject(This,pGroupKey,GroupVersion,pDesc,riid,ppCompilerStateObject) )
770
771#define ID3D12Compiler_CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) \
772 ( (This)->lpVtbl -> CompileAddToStateObject(This,pGroupKey,GroupVersion,pAddition,pCompilerStateObjectToGrowFrom,riid,ppNewCompilerStateObject) )
773
774#define ID3D12Compiler_GetCacheSession(This,riid,ppCompilerCacheSession) \
775 ( (This)->lpVtbl -> GetCacheSession(This,riid,ppCompilerCacheSession) )
776
777#endif /* COBJMACROS */
778
779
780#endif /* C style interface */
781
782
783
784
785#endif /* __ID3D12Compiler_INTERFACE_DEFINED__ */
786
787
788#ifndef __ID3D12CompilerFactory_INTERFACE_DEFINED__
789#define __ID3D12CompilerFactory_INTERFACE_DEFINED__
790
791/* interface ID3D12CompilerFactory */
792/* [unique][local][object][uuid] */
793
794
795EXTERN_C const IID IID_ID3D12CompilerFactory;
796
797#if defined(__cplusplus) && !defined(CINTERFACE)
798
799 MIDL_INTERFACE("c1ee4b59-3f59-47a5-9b4e-a855c858a878")
800 ID3D12CompilerFactory : public IUnknown
801 {
802 public:
803 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilies(
804 UINT AdapterFamilyIndex,
805 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily) = 0;
806
807 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyABIVersions(
808 UINT AdapterFamilyIndex,
809 _Inout_ UINT32 *pNumABIVersions,
810 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions) = 0;
811
812 virtual HRESULT STDMETHODCALLTYPE EnumerateAdapterFamilyCompilerVersion(
813 UINT AdapterFamilyIndex,
814 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion) = 0;
815
816 virtual HRESULT STDMETHODCALLTYPE GetApplicationProfileVersion(
817 _In_ const D3D12_COMPILER_TARGET *pTarget,
818 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
819 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion) = 0;
820
821 virtual HRESULT STDMETHODCALLTYPE CreateCompilerCacheSession(
822 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
823 UINT NumPaths,
824 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
825 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
826 _In_ REFIID riid,
827 _COM_Outptr_ void **ppCompilerCacheSession) = 0;
828
829 virtual HRESULT STDMETHODCALLTYPE CreateCompiler(
830 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
831 _In_ REFIID riid,
832 _COM_Outptr_ void **ppCompiler) = 0;
833
834 };
835
836
837#else /* C style interface */
838
839 typedef struct ID3D12CompilerFactoryVtbl
840 {
841 BEGIN_INTERFACE
842
843 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
844 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
845 ID3D12CompilerFactory * This,
846 REFIID riid,
847 _COM_Outptr_ void **ppvObject);
848
849 DECLSPEC_XFGVIRT(IUnknown, AddRef)
850 ULONG ( STDMETHODCALLTYPE *AddRef )(
851 ID3D12CompilerFactory * This);
852
853 DECLSPEC_XFGVIRT(IUnknown, Release)
854 ULONG ( STDMETHODCALLTYPE *Release )(
855 ID3D12CompilerFactory * This);
856
857 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilies)
858 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilies )(
859 ID3D12CompilerFactory * This,
860 UINT AdapterFamilyIndex,
861 _Out_ D3D12_ADAPTER_FAMILY *pAdapterFamily);
862
863 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyABIVersions)
864 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyABIVersions )(
865 ID3D12CompilerFactory * This,
866 UINT AdapterFamilyIndex,
867 _Inout_ UINT32 *pNumABIVersions,
868 _Out_writes_opt_(*pNumABIVersions) UINT64 *pABIVersions);
869
870 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, EnumerateAdapterFamilyCompilerVersion)
871 HRESULT ( STDMETHODCALLTYPE *EnumerateAdapterFamilyCompilerVersion )(
872 ID3D12CompilerFactory * This,
873 UINT AdapterFamilyIndex,
874 _Out_ D3D12_VERSION_NUMBER *pCompilerVersion);
875
876 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, GetApplicationProfileVersion)
877 HRESULT ( STDMETHODCALLTYPE *GetApplicationProfileVersion )(
878 ID3D12CompilerFactory * This,
879 _In_ const D3D12_COMPILER_TARGET *pTarget,
880 _In_ const D3D12_APPLICATION_DESC *pApplicationDesc,
881 _Out_ D3D12_VERSION_NUMBER *pApplicationProfileVersion);
882
883 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompilerCacheSession)
884 HRESULT ( STDMETHODCALLTYPE *CreateCompilerCacheSession )(
885 ID3D12CompilerFactory * This,
886 _In_reads_(NumPaths) const D3D12_COMPILER_DATABASE_PATH *pPaths,
887 UINT NumPaths,
888 _In_opt_ const D3D12_COMPILER_TARGET *pTarget,
889 _In_opt_ const D3D12_APPLICATION_DESC *pApplicationDesc,
890 _In_ REFIID riid,
891 _COM_Outptr_ void **ppCompilerCacheSession);
892
893 DECLSPEC_XFGVIRT(ID3D12CompilerFactory, CreateCompiler)
894 HRESULT ( STDMETHODCALLTYPE *CreateCompiler )(
895 ID3D12CompilerFactory * This,
896 _In_ ID3D12CompilerCacheSession *pCompilerCacheSession,
897 _In_ REFIID riid,
898 _COM_Outptr_ void **ppCompiler);
899
900 END_INTERFACE
901 } ID3D12CompilerFactoryVtbl;
902
903 interface ID3D12CompilerFactory
904 {
905 CONST_VTBL struct ID3D12CompilerFactoryVtbl *lpVtbl;
906 };
907
908
909
910#ifdef COBJMACROS
911
912
913#define ID3D12CompilerFactory_QueryInterface(This,riid,ppvObject) \
914 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
915
916#define ID3D12CompilerFactory_AddRef(This) \
917 ( (This)->lpVtbl -> AddRef(This) )
918
919#define ID3D12CompilerFactory_Release(This) \
920 ( (This)->lpVtbl -> Release(This) )
921
922
923#define ID3D12CompilerFactory_EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) \
924 ( (This)->lpVtbl -> EnumerateAdapterFamilies(This,AdapterFamilyIndex,pAdapterFamily) )
925
926#define ID3D12CompilerFactory_EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) \
927 ( (This)->lpVtbl -> EnumerateAdapterFamilyABIVersions(This,AdapterFamilyIndex,pNumABIVersions,pABIVersions) )
928
929#define ID3D12CompilerFactory_EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) \
930 ( (This)->lpVtbl -> EnumerateAdapterFamilyCompilerVersion(This,AdapterFamilyIndex,pCompilerVersion) )
931
932#define ID3D12CompilerFactory_GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) \
933 ( (This)->lpVtbl -> GetApplicationProfileVersion(This,pTarget,pApplicationDesc,pApplicationProfileVersion) )
934
935#define ID3D12CompilerFactory_CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) \
936 ( (This)->lpVtbl -> CreateCompilerCacheSession(This,pPaths,NumPaths,pTarget,pApplicationDesc,riid,ppCompilerCacheSession) )
937
938#define ID3D12CompilerFactory_CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) \
939 ( (This)->lpVtbl -> CreateCompiler(This,pCompilerCacheSession,riid,ppCompiler) )
940
941#endif /* COBJMACROS */
942
943
944#endif /* C style interface */
945
946
947
948
949#endif /* __ID3D12CompilerFactory_INTERFACE_DEFINED__ */
950
951
952/* interface __MIDL_itf_d3d12compiler_0000_0005 */
953/* [local] */
954
955#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
956#pragma endregion
957DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);
958DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);
959DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);
960DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);
961DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);
962
963
964extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_c_ifspec;
965extern RPC_IF_HANDLE __MIDL_itf_d3d12compiler_0000_0005_v0_0_s_ifspec;
966
967/* Additional Prototypes for ALL interfaces */
968
969/* end of Additional Prototypes */
970
971#ifdef __cplusplus
972}
973#endif
974
975#endif
976
977
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl
new file mode 100644
index 0000000..c8ae4b4
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12compiler.idl
@@ -0,0 +1,291 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18
19typedef struct D3D12_ADAPTER_FAMILY
20{
21 WCHAR szAdapterFamily[128];
22} D3D12_ADAPTER_FAMILY;
23
24cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_CREATE_FACTORY)( ")
25cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
26cpp_quote(" _In_ REFIID riid,")
27cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
28cpp_quote("")
29cpp_quote("HRESULT WINAPI D3D12CompilerCreateFactory(")
30cpp_quote(" _In_ LPCWSTR pPluginCompilerDllPath,")
31cpp_quote(" _In_ REFIID riid, // Expected: ID3D12CompilerFactory")
32cpp_quote(" _COM_Outptr_opt_ void** ppFactory );")
33cpp_quote("")
34cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_COMPILER_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(")
35cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
36cpp_quote(" _Out_ ID3DBlob** ppBlob,")
37cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
38cpp_quote("")
39cpp_quote("HRESULT WINAPI D3D12CompilerSerializeVersionedRootSignature(")
40cpp_quote(" _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,")
41cpp_quote(" _Out_ ID3DBlob** ppBlob,")
42cpp_quote(" _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);")
43cpp_quote("")
44
45[uuid(e0d06420-9f31-47e8-ae9a-dd2ba25ac0bc), object, local, pointer_default(unique)]
46interface ID3D12CompilerFactoryChild
47 : IUnknown
48{
49 HRESULT GetFactory(
50 [annotation("_In_")] REFIID riid, // ID3D12CompilerFactory
51 [annotation("_COM_Outptr_")] void** ppCompilerFactory
52 );
53};
54
55typedef enum D3D12_COMPILER_VALUE_TYPE
56{
57 D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE = 0,
58 D3D12_COMPILER_VALUE_TYPE_METADATA = 1,
59 D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB = 2,
60 D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA = 3,
61
62} D3D12_COMPILER_VALUE_TYPE;
63
64typedef enum D3D12_COMPILER_VALUE_TYPE_FLAGS
65{
66 D3D12_COMPILER_VALUE_TYPE_FLAGS_NONE = 0x00000000,
67 D3D12_COMPILER_VALUE_TYPE_FLAGS_OBJECT_CODE = (1 << D3D12_COMPILER_VALUE_TYPE_OBJECT_CODE),
68 D3D12_COMPILER_VALUE_TYPE_FLAGS_METADATA = (1 << D3D12_COMPILER_VALUE_TYPE_METADATA),
69 D3D12_COMPILER_VALUE_TYPE_FLAGS_DEBUG_PDB = (1 << D3D12_COMPILER_VALUE_TYPE_DEBUG_PDB),
70 D3D12_COMPILER_VALUE_TYPE_FLAGS_PERFORMANCE_DATA = (1 << D3D12_COMPILER_VALUE_TYPE_PERFORMANCE_DATA),
71
72
73} D3D12_COMPILER_VALUE_TYPE_FLAGS;
74cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPILER_VALUE_TYPE_FLAGS )")
75
76typedef struct D3D12_COMPILER_DATABASE_PATH
77{
78 D3D12_COMPILER_VALUE_TYPE_FLAGS Types;
79 LPCWSTR pPath;
80} D3D12_COMPILER_DATABASE_PATH;
81
82typedef struct D3D12_COMPILER_CACHE_GROUP_KEY
83{
84 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
85 UINT KeySize;
86} D3D12_COMPILER_CACHE_GROUP_KEY;
87
88typedef struct D3D12_COMPILER_CACHE_VALUE_KEY
89{
90 [annotation("_Field_size_bytes_full_(KeySize)")] const void* pKey;
91 UINT KeySize;
92} D3D12_COMPILER_CACHE_VALUE_KEY;
93
94typedef struct D3D12_COMPILER_CACHE_VALUE
95{
96 [annotation("_Field_size_bytes_full_(ValueSize)")] void* pValue;
97 UINT ValueSize;
98} D3D12_COMPILER_CACHE_VALUE;
99
100typedef struct D3D12_COMPILER_CACHE_TYPED_VALUE
101{
102 D3D12_COMPILER_VALUE_TYPE Type;
103 D3D12_COMPILER_CACHE_VALUE Value;
104} D3D12_COMPILER_CACHE_TYPED_VALUE;
105
106typedef struct D3D12_COMPILER_CACHE_CONST_VALUE
107{
108 [annotation("_Field_size_bytes_full_(ValueSize)")] const void* pValue;
109 UINT ValueSize;
110} D3D12_COMPILER_CACHE_CONST_VALUE;
111
112typedef struct D3D12_COMPILER_CACHE_TYPED_CONST_VALUE
113{
114 D3D12_COMPILER_VALUE_TYPE Type;
115 D3D12_COMPILER_CACHE_CONST_VALUE Value;
116} D3D12_COMPILER_CACHE_TYPED_CONST_VALUE;
117
118typedef struct D3D12_COMPILER_TARGET
119{
120 UINT AdapterFamilyIndex;
121 UINT64 ABIVersion;
122} D3D12_COMPILER_TARGET;
123
124typedef void* (__stdcall* D3D12CompilerCacheSessionAllocationFunc) (
125 SIZE_T SizeInBytes,
126 [annotation("_Inout_opt_")] void* pContext
127 );
128
129typedef void(__stdcall* D3D12CompilerCacheSessionGroupValueKeysFunc) (
130 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
131 [annotation("_Inout_opt_")] void* pContext
132 );
133
134typedef void(__stdcall* D3D12CompilerCacheSessionGroupValuesFunc) (
135 UINT ValueKeyIndex,
136 [annotation("_In_")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValue,
137 [annotation("_Inout_opt_")] void* pContext
138 );
139
140[uuid(5704e5e6-054b-4738-b661-7b0d68d8dde2), object, local, pointer_default(unique)]
141interface ID3D12CompilerCacheSession
142 : ID3D12CompilerFactoryChild
143{
144 HRESULT FindGroup(
145 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
146 [annotation("_Out_opt_")] UINT* pGroupVersion
147 );
148
149 HRESULT FindGroupValueKeys(
150 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
151 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
152 [annotation("_In_")] D3D12CompilerCacheSessionGroupValueKeysFunc CallbackFunc,
153 [annotation("_Inout_opt_")] void* pContext
154 );
155
156 HRESULT FindGroupValues(
157 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
158 [annotation("_In_opt_")] const UINT* pExpectedGroupVersion,
159 D3D12_COMPILER_VALUE_TYPE_FLAGS ValueTypeFlags,
160 [annotation("_In_opt_")] D3D12CompilerCacheSessionGroupValuesFunc CallbackFunc,
161 [annotation("_Inout_opt_")] void* pContext
162 );
163
164 HRESULT FindValue(
165 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
166 [annotation("_Inout_count_(NumTypedValues)")] D3D12_COMPILER_CACHE_TYPED_VALUE* pTypedValues,
167 UINT NumTypedValues,
168 [annotation("_In_opt_")] D3D12CompilerCacheSessionAllocationFunc pCallbackFunc,
169 [annotation("_Inout_opt_")] void* pContext
170 );
171
172 const D3D12_APPLICATION_DESC* GetApplicationDesc();
173
174 D3D12_COMPILER_TARGET GetCompilerTarget();
175
176 D3D12_COMPILER_VALUE_TYPE_FLAGS GetValueTypes();
177
178 HRESULT StoreGroupValueKeys(
179 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
180 UINT GroupVersion,
181 [annotation("_In_reads_(NumValueKeys)")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKeys,
182 UINT NumValueKeys
183 );
184
185 HRESULT StoreValue(
186 [annotation("_In_")] const D3D12_COMPILER_CACHE_VALUE_KEY* pValueKey,
187 [annotation("_In_reads_(NumTypedValues)")] const D3D12_COMPILER_CACHE_TYPED_CONST_VALUE* pTypedValues,
188 UINT NumTypedValues
189 );
190};
191
192[uuid(5981cca4-e8ae-44ca-9b92-4fa86f5a3a3a), object, local, pointer_default(unique)]
193interface ID3D12CompilerStateObject
194 : IUnknown
195{
196 HRESULT GetCompiler(
197 [annotation("_In_")] REFIID riid, // ID3D12Compiler
198 [annotation("_COM_Outptr_")] void** ppCompiler
199 );
200};
201
202typedef struct D3D12_COMPILER_EXISTING_COLLECTION_DESC
203{
204 ID3D12CompilerStateObject* pExistingCollection;
205 UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
206 [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
207} D3D12_COMPILER_EXISTING_COLLECTION_DESC;
208
209[uuid(8c403c12-993b-4583-80f1-6824138fa68e), object, local, pointer_default(unique)]
210interface ID3D12Compiler
211 : ID3D12CompilerFactoryChild
212{
213 HRESULT CompilePipelineState(
214 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
215 UINT GroupVersion,
216 [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc
217 );
218
219 HRESULT CompileStateObject(
220 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
221 UINT GroupVersion,
222 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pDesc,
223 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
224 [annotation("_COM_Outptr_")] void** ppCompilerStateObject
225 );
226
227 HRESULT CompileAddToStateObject(
228 [annotation("_In_")] const D3D12_COMPILER_CACHE_GROUP_KEY* pGroupKey,
229 UINT GroupVersion,
230 [annotation("_In_")] const D3D12_STATE_OBJECT_DESC* pAddition,
231 [annotation("_In_")] ID3D12CompilerStateObject* pCompilerStateObjectToGrowFrom,
232 [annotation("_In_")] REFIID riid, // ID3D12CompilerStateObject
233 [annotation("_COM_Outptr_")] void** ppNewCompilerStateObject
234 );
235
236 HRESULT GetCacheSession(
237 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
238 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
239 );
240};
241
242[uuid(c1ee4b59-3f59-47a5-9b4e-a855c858a878), object, local, pointer_default(unique)]
243interface ID3D12CompilerFactory
244 : IUnknown
245{
246 HRESULT EnumerateAdapterFamilies(
247 UINT AdapterFamilyIndex,
248 [annotation("_Out_")] D3D12_ADAPTER_FAMILY* pAdapterFamily
249 );
250
251 HRESULT EnumerateAdapterFamilyABIVersions(
252 UINT AdapterFamilyIndex,
253 [annotation("_Inout_")] UINT32* pNumABIVersions,
254 [annotation("_Out_writes_opt_(*pNumABIVersions)")] UINT64 * pABIVersions
255 );
256
257 HRESULT EnumerateAdapterFamilyCompilerVersion(
258 UINT AdapterFamilyIndex,
259 [annotation("_Out_")] D3D12_VERSION_NUMBER* pCompilerVersion
260 );
261
262 HRESULT GetApplicationProfileVersion(
263 [annotation("_In_")] const D3D12_COMPILER_TARGET* pTarget,
264 [annotation("_In_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
265 [annotation("_Out_")] D3D12_VERSION_NUMBER* pApplicationProfileVersion
266 );
267
268 HRESULT CreateCompilerCacheSession(
269 [annotation("_In_reads_(NumPaths)")] const D3D12_COMPILER_DATABASE_PATH* pPaths,
270 UINT NumPaths,
271 [annotation("_In_opt_")] const D3D12_COMPILER_TARGET* pTarget,
272 [annotation("_In_opt_")] const D3D12_APPLICATION_DESC* pApplicationDesc,
273 [annotation("_In_")] REFIID riid, // ID3D12CompilerCacheSession
274 [annotation("_COM_Outptr_")] void** ppCompilerCacheSession
275 );
276
277 HRESULT CreateCompiler(
278 [annotation("_In_")] ID3D12CompilerCacheSession* pCompilerCacheSession,
279 [annotation("_In_")] REFIID riid, // ID3D12Compiler
280 [annotation("_COM_Outptr_")] void** ppCompiler
281 );
282};
283
284cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
285#pragma endregion
286
287cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactoryChild,0xe0d06420,0x9f31,0x47e8,0xae,0x9a,0xdd,0x2b,0xa2,0x5a,0xc0,0xbc);" )
288cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerCacheSession,0x5704e5e6,0x054b,0x4738,0xb6,0x61,0x7b,0x0d,0x68,0xd8,0xdd,0xe2);" )
289cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerStateObject,0x5981cca4,0xe8ae,0x44ca,0x9b,0x92,0x4f,0xa8,0x6f,0x5a,0x3a,0x3a);" )
290cpp_quote( "DEFINE_GUID(IID_ID3D12Compiler,0x8c403c12,0x993b,0x4583,0x80,0xf1,0x68,0x24,0x13,0x8f,0xa6,0x8e);" )
291cpp_quote( "DEFINE_GUID(IID_ID3D12CompilerFactory,0xc1ee4b59,0x3f59,0x47a5,0x9b,0x4e,0xa8,0x55,0xc8,0x58,0xa8,0x78);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h
new file mode 100644
index 0000000..96c812b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.h
@@ -0,0 +1,4280 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12sdklayers_h__
39#define __d3d12sdklayers_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12Debug_FWD_DEFINED__
56#define __ID3D12Debug_FWD_DEFINED__
57typedef interface ID3D12Debug ID3D12Debug;
58
59#endif /* __ID3D12Debug_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12Debug1_FWD_DEFINED__
63#define __ID3D12Debug1_FWD_DEFINED__
64typedef interface ID3D12Debug1 ID3D12Debug1;
65
66#endif /* __ID3D12Debug1_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12Debug2_FWD_DEFINED__
70#define __ID3D12Debug2_FWD_DEFINED__
71typedef interface ID3D12Debug2 ID3D12Debug2;
72
73#endif /* __ID3D12Debug2_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12Debug3_FWD_DEFINED__
77#define __ID3D12Debug3_FWD_DEFINED__
78typedef interface ID3D12Debug3 ID3D12Debug3;
79
80#endif /* __ID3D12Debug3_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12Debug4_FWD_DEFINED__
84#define __ID3D12Debug4_FWD_DEFINED__
85typedef interface ID3D12Debug4 ID3D12Debug4;
86
87#endif /* __ID3D12Debug4_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12Debug5_FWD_DEFINED__
91#define __ID3D12Debug5_FWD_DEFINED__
92typedef interface ID3D12Debug5 ID3D12Debug5;
93
94#endif /* __ID3D12Debug5_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12Debug6_FWD_DEFINED__
98#define __ID3D12Debug6_FWD_DEFINED__
99typedef interface ID3D12Debug6 ID3D12Debug6;
100
101#endif /* __ID3D12Debug6_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12DebugDevice1_FWD_DEFINED__
105#define __ID3D12DebugDevice1_FWD_DEFINED__
106typedef interface ID3D12DebugDevice1 ID3D12DebugDevice1;
107
108#endif /* __ID3D12DebugDevice1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12DebugDevice_FWD_DEFINED__
112#define __ID3D12DebugDevice_FWD_DEFINED__
113typedef interface ID3D12DebugDevice ID3D12DebugDevice;
114
115#endif /* __ID3D12DebugDevice_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12DebugDevice2_FWD_DEFINED__
119#define __ID3D12DebugDevice2_FWD_DEFINED__
120typedef interface ID3D12DebugDevice2 ID3D12DebugDevice2;
121
122#endif /* __ID3D12DebugDevice2_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12DebugCommandQueue_FWD_DEFINED__
126#define __ID3D12DebugCommandQueue_FWD_DEFINED__
127typedef interface ID3D12DebugCommandQueue ID3D12DebugCommandQueue;
128
129#endif /* __ID3D12DebugCommandQueue_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12DebugCommandQueue1_FWD_DEFINED__
133#define __ID3D12DebugCommandQueue1_FWD_DEFINED__
134typedef interface ID3D12DebugCommandQueue1 ID3D12DebugCommandQueue1;
135
136#endif /* __ID3D12DebugCommandQueue1_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12DebugCommandList1_FWD_DEFINED__
140#define __ID3D12DebugCommandList1_FWD_DEFINED__
141typedef interface ID3D12DebugCommandList1 ID3D12DebugCommandList1;
142
143#endif /* __ID3D12DebugCommandList1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12DebugCommandList_FWD_DEFINED__
147#define __ID3D12DebugCommandList_FWD_DEFINED__
148typedef interface ID3D12DebugCommandList ID3D12DebugCommandList;
149
150#endif /* __ID3D12DebugCommandList_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12DebugCommandList2_FWD_DEFINED__
154#define __ID3D12DebugCommandList2_FWD_DEFINED__
155typedef interface ID3D12DebugCommandList2 ID3D12DebugCommandList2;
156
157#endif /* __ID3D12DebugCommandList2_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12DebugCommandList3_FWD_DEFINED__
161#define __ID3D12DebugCommandList3_FWD_DEFINED__
162typedef interface ID3D12DebugCommandList3 ID3D12DebugCommandList3;
163
164#endif /* __ID3D12DebugCommandList3_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12SharingContract_FWD_DEFINED__
168#define __ID3D12SharingContract_FWD_DEFINED__
169typedef interface ID3D12SharingContract ID3D12SharingContract;
170
171#endif /* __ID3D12SharingContract_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
175#define __ID3D12ManualWriteTrackingResource_FWD_DEFINED__
176typedef interface ID3D12ManualWriteTrackingResource ID3D12ManualWriteTrackingResource;
177
178#endif /* __ID3D12ManualWriteTrackingResource_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12InfoQueue_FWD_DEFINED__
182#define __ID3D12InfoQueue_FWD_DEFINED__
183typedef interface ID3D12InfoQueue ID3D12InfoQueue;
184
185#endif /* __ID3D12InfoQueue_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12InfoQueue1_FWD_DEFINED__
189#define __ID3D12InfoQueue1_FWD_DEFINED__
190typedef interface ID3D12InfoQueue1 ID3D12InfoQueue1;
191
192#endif /* __ID3D12InfoQueue1_FWD_DEFINED__ */
193
194
195/* header files for imported files */
196#include "oaidl.h"
197#include "ocidl.h"
198#include "d3d12.h"
199
200#ifdef __cplusplus
201extern "C"{
202#endif
203
204
205/* interface __MIDL_itf_d3d12sdklayers_0000_0000 */
206/* [local] */
207
208#include <winapifamily.h>
209#pragma region App Family
210#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
211
212
213extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_c_ifspec;
214extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0000_v0_0_s_ifspec;
215
216#ifndef __ID3D12Debug_INTERFACE_DEFINED__
217#define __ID3D12Debug_INTERFACE_DEFINED__
218
219/* interface ID3D12Debug */
220/* [unique][local][object][uuid] */
221
222
223EXTERN_C const IID IID_ID3D12Debug;
224
225#if defined(__cplusplus) && !defined(CINTERFACE)
226
227 MIDL_INTERFACE("344488b7-6846-474b-b989-f027448245e0")
228 ID3D12Debug : public IUnknown
229 {
230 public:
231 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
232
233 };
234
235
236#else /* C style interface */
237
238 typedef struct ID3D12DebugVtbl
239 {
240 BEGIN_INTERFACE
241
242 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
243 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
244 ID3D12Debug * This,
245 REFIID riid,
246 _COM_Outptr_ void **ppvObject);
247
248 DECLSPEC_XFGVIRT(IUnknown, AddRef)
249 ULONG ( STDMETHODCALLTYPE *AddRef )(
250 ID3D12Debug * This);
251
252 DECLSPEC_XFGVIRT(IUnknown, Release)
253 ULONG ( STDMETHODCALLTYPE *Release )(
254 ID3D12Debug * This);
255
256 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
257 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
258 ID3D12Debug * This);
259
260 END_INTERFACE
261 } ID3D12DebugVtbl;
262
263 interface ID3D12Debug
264 {
265 CONST_VTBL struct ID3D12DebugVtbl *lpVtbl;
266 };
267
268
269
270#ifdef COBJMACROS
271
272
273#define ID3D12Debug_QueryInterface(This,riid,ppvObject) \
274 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
275
276#define ID3D12Debug_AddRef(This) \
277 ( (This)->lpVtbl -> AddRef(This) )
278
279#define ID3D12Debug_Release(This) \
280 ( (This)->lpVtbl -> Release(This) )
281
282
283#define ID3D12Debug_EnableDebugLayer(This) \
284 ( (This)->lpVtbl -> EnableDebugLayer(This) )
285
286#endif /* COBJMACROS */
287
288
289#endif /* C style interface */
290
291
292
293
294#endif /* __ID3D12Debug_INTERFACE_DEFINED__ */
295
296
297/* interface __MIDL_itf_d3d12sdklayers_0000_0001 */
298/* [local] */
299
300typedef
301enum D3D12_GPU_BASED_VALIDATION_FLAGS
302 {
303 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0,
304 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x1
305 } D3D12_GPU_BASED_VALIDATION_FLAGS;
306
307DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)
308
309
310extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_c_ifspec;
311extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0001_v0_0_s_ifspec;
312
313#ifndef __ID3D12Debug1_INTERFACE_DEFINED__
314#define __ID3D12Debug1_INTERFACE_DEFINED__
315
316/* interface ID3D12Debug1 */
317/* [unique][local][object][uuid] */
318
319
320EXTERN_C const IID IID_ID3D12Debug1;
321
322#if defined(__cplusplus) && !defined(CINTERFACE)
323
324 MIDL_INTERFACE("affaa4ca-63fe-4d8e-b8ad-159000af4304")
325 ID3D12Debug1 : public IUnknown
326 {
327 public:
328 virtual void STDMETHODCALLTYPE EnableDebugLayer( void) = 0;
329
330 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
331 BOOL Enable) = 0;
332
333 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
334 BOOL Enable) = 0;
335
336 };
337
338
339#else /* C style interface */
340
341 typedef struct ID3D12Debug1Vtbl
342 {
343 BEGIN_INTERFACE
344
345 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
346 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
347 ID3D12Debug1 * This,
348 REFIID riid,
349 _COM_Outptr_ void **ppvObject);
350
351 DECLSPEC_XFGVIRT(IUnknown, AddRef)
352 ULONG ( STDMETHODCALLTYPE *AddRef )(
353 ID3D12Debug1 * This);
354
355 DECLSPEC_XFGVIRT(IUnknown, Release)
356 ULONG ( STDMETHODCALLTYPE *Release )(
357 ID3D12Debug1 * This);
358
359 DECLSPEC_XFGVIRT(ID3D12Debug1, EnableDebugLayer)
360 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
361 ID3D12Debug1 * This);
362
363 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableGPUBasedValidation)
364 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
365 ID3D12Debug1 * This,
366 BOOL Enable);
367
368 DECLSPEC_XFGVIRT(ID3D12Debug1, SetEnableSynchronizedCommandQueueValidation)
369 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
370 ID3D12Debug1 * This,
371 BOOL Enable);
372
373 END_INTERFACE
374 } ID3D12Debug1Vtbl;
375
376 interface ID3D12Debug1
377 {
378 CONST_VTBL struct ID3D12Debug1Vtbl *lpVtbl;
379 };
380
381
382
383#ifdef COBJMACROS
384
385
386#define ID3D12Debug1_QueryInterface(This,riid,ppvObject) \
387 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
388
389#define ID3D12Debug1_AddRef(This) \
390 ( (This)->lpVtbl -> AddRef(This) )
391
392#define ID3D12Debug1_Release(This) \
393 ( (This)->lpVtbl -> Release(This) )
394
395
396#define ID3D12Debug1_EnableDebugLayer(This) \
397 ( (This)->lpVtbl -> EnableDebugLayer(This) )
398
399#define ID3D12Debug1_SetEnableGPUBasedValidation(This,Enable) \
400 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
401
402#define ID3D12Debug1_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
403 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
404
405#endif /* COBJMACROS */
406
407
408#endif /* C style interface */
409
410
411
412
413#endif /* __ID3D12Debug1_INTERFACE_DEFINED__ */
414
415
416#ifndef __ID3D12Debug2_INTERFACE_DEFINED__
417#define __ID3D12Debug2_INTERFACE_DEFINED__
418
419/* interface ID3D12Debug2 */
420/* [unique][local][object][uuid] */
421
422
423EXTERN_C const IID IID_ID3D12Debug2;
424
425#if defined(__cplusplus) && !defined(CINTERFACE)
426
427 MIDL_INTERFACE("93a665c4-a3b2-4e5d-b692-a26ae14e3374")
428 ID3D12Debug2 : public IUnknown
429 {
430 public:
431 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
432 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
433
434 };
435
436
437#else /* C style interface */
438
439 typedef struct ID3D12Debug2Vtbl
440 {
441 BEGIN_INTERFACE
442
443 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
444 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
445 ID3D12Debug2 * This,
446 REFIID riid,
447 _COM_Outptr_ void **ppvObject);
448
449 DECLSPEC_XFGVIRT(IUnknown, AddRef)
450 ULONG ( STDMETHODCALLTYPE *AddRef )(
451 ID3D12Debug2 * This);
452
453 DECLSPEC_XFGVIRT(IUnknown, Release)
454 ULONG ( STDMETHODCALLTYPE *Release )(
455 ID3D12Debug2 * This);
456
457 DECLSPEC_XFGVIRT(ID3D12Debug2, SetGPUBasedValidationFlags)
458 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
459 ID3D12Debug2 * This,
460 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
461
462 END_INTERFACE
463 } ID3D12Debug2Vtbl;
464
465 interface ID3D12Debug2
466 {
467 CONST_VTBL struct ID3D12Debug2Vtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D12Debug2_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D12Debug2_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D12Debug2_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D12Debug2_SetGPUBasedValidationFlags(This,Flags) \
486 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
487
488#endif /* COBJMACROS */
489
490
491#endif /* C style interface */
492
493
494
495
496#endif /* __ID3D12Debug2_INTERFACE_DEFINED__ */
497
498
499#ifndef __ID3D12Debug3_INTERFACE_DEFINED__
500#define __ID3D12Debug3_INTERFACE_DEFINED__
501
502/* interface ID3D12Debug3 */
503/* [unique][local][object][uuid] */
504
505
506EXTERN_C const IID IID_ID3D12Debug3;
507
508#if defined(__cplusplus) && !defined(CINTERFACE)
509
510 MIDL_INTERFACE("5cf4e58f-f671-4ff1-a542-3686e3d153d1")
511 ID3D12Debug3 : public ID3D12Debug
512 {
513 public:
514 virtual void STDMETHODCALLTYPE SetEnableGPUBasedValidation(
515 BOOL Enable) = 0;
516
517 virtual void STDMETHODCALLTYPE SetEnableSynchronizedCommandQueueValidation(
518 BOOL Enable) = 0;
519
520 virtual void STDMETHODCALLTYPE SetGPUBasedValidationFlags(
521 D3D12_GPU_BASED_VALIDATION_FLAGS Flags) = 0;
522
523 };
524
525
526#else /* C style interface */
527
528 typedef struct ID3D12Debug3Vtbl
529 {
530 BEGIN_INTERFACE
531
532 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
533 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
534 ID3D12Debug3 * This,
535 REFIID riid,
536 _COM_Outptr_ void **ppvObject);
537
538 DECLSPEC_XFGVIRT(IUnknown, AddRef)
539 ULONG ( STDMETHODCALLTYPE *AddRef )(
540 ID3D12Debug3 * This);
541
542 DECLSPEC_XFGVIRT(IUnknown, Release)
543 ULONG ( STDMETHODCALLTYPE *Release )(
544 ID3D12Debug3 * This);
545
546 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
547 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
548 ID3D12Debug3 * This);
549
550 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
551 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
552 ID3D12Debug3 * This,
553 BOOL Enable);
554
555 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
556 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
557 ID3D12Debug3 * This,
558 BOOL Enable);
559
560 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
561 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
562 ID3D12Debug3 * This,
563 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
564
565 END_INTERFACE
566 } ID3D12Debug3Vtbl;
567
568 interface ID3D12Debug3
569 {
570 CONST_VTBL struct ID3D12Debug3Vtbl *lpVtbl;
571 };
572
573
574
575#ifdef COBJMACROS
576
577
578#define ID3D12Debug3_QueryInterface(This,riid,ppvObject) \
579 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
580
581#define ID3D12Debug3_AddRef(This) \
582 ( (This)->lpVtbl -> AddRef(This) )
583
584#define ID3D12Debug3_Release(This) \
585 ( (This)->lpVtbl -> Release(This) )
586
587
588#define ID3D12Debug3_EnableDebugLayer(This) \
589 ( (This)->lpVtbl -> EnableDebugLayer(This) )
590
591
592#define ID3D12Debug3_SetEnableGPUBasedValidation(This,Enable) \
593 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
594
595#define ID3D12Debug3_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
596 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
597
598#define ID3D12Debug3_SetGPUBasedValidationFlags(This,Flags) \
599 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
600
601#endif /* COBJMACROS */
602
603
604#endif /* C style interface */
605
606
607
608
609#endif /* __ID3D12Debug3_INTERFACE_DEFINED__ */
610
611
612#ifndef __ID3D12Debug4_INTERFACE_DEFINED__
613#define __ID3D12Debug4_INTERFACE_DEFINED__
614
615/* interface ID3D12Debug4 */
616/* [unique][local][object][uuid] */
617
618
619EXTERN_C const IID IID_ID3D12Debug4;
620
621#if defined(__cplusplus) && !defined(CINTERFACE)
622
623 MIDL_INTERFACE("014b816e-9ec5-4a2f-a845-ffbe441ce13a")
624 ID3D12Debug4 : public ID3D12Debug3
625 {
626 public:
627 virtual void STDMETHODCALLTYPE DisableDebugLayer( void) = 0;
628
629 };
630
631
632#else /* C style interface */
633
634 typedef struct ID3D12Debug4Vtbl
635 {
636 BEGIN_INTERFACE
637
638 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
639 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
640 ID3D12Debug4 * This,
641 REFIID riid,
642 _COM_Outptr_ void **ppvObject);
643
644 DECLSPEC_XFGVIRT(IUnknown, AddRef)
645 ULONG ( STDMETHODCALLTYPE *AddRef )(
646 ID3D12Debug4 * This);
647
648 DECLSPEC_XFGVIRT(IUnknown, Release)
649 ULONG ( STDMETHODCALLTYPE *Release )(
650 ID3D12Debug4 * This);
651
652 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
653 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
654 ID3D12Debug4 * This);
655
656 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
657 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
658 ID3D12Debug4 * This,
659 BOOL Enable);
660
661 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
662 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
663 ID3D12Debug4 * This,
664 BOOL Enable);
665
666 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
667 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
668 ID3D12Debug4 * This,
669 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
670
671 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
672 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
673 ID3D12Debug4 * This);
674
675 END_INTERFACE
676 } ID3D12Debug4Vtbl;
677
678 interface ID3D12Debug4
679 {
680 CONST_VTBL struct ID3D12Debug4Vtbl *lpVtbl;
681 };
682
683
684
685#ifdef COBJMACROS
686
687
688#define ID3D12Debug4_QueryInterface(This,riid,ppvObject) \
689 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
690
691#define ID3D12Debug4_AddRef(This) \
692 ( (This)->lpVtbl -> AddRef(This) )
693
694#define ID3D12Debug4_Release(This) \
695 ( (This)->lpVtbl -> Release(This) )
696
697
698#define ID3D12Debug4_EnableDebugLayer(This) \
699 ( (This)->lpVtbl -> EnableDebugLayer(This) )
700
701
702#define ID3D12Debug4_SetEnableGPUBasedValidation(This,Enable) \
703 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
704
705#define ID3D12Debug4_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
706 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
707
708#define ID3D12Debug4_SetGPUBasedValidationFlags(This,Flags) \
709 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
710
711
712#define ID3D12Debug4_DisableDebugLayer(This) \
713 ( (This)->lpVtbl -> DisableDebugLayer(This) )
714
715#endif /* COBJMACROS */
716
717
718#endif /* C style interface */
719
720
721
722
723#endif /* __ID3D12Debug4_INTERFACE_DEFINED__ */
724
725
726#ifndef __ID3D12Debug5_INTERFACE_DEFINED__
727#define __ID3D12Debug5_INTERFACE_DEFINED__
728
729/* interface ID3D12Debug5 */
730/* [unique][local][object][uuid] */
731
732
733EXTERN_C const IID IID_ID3D12Debug5;
734
735#if defined(__cplusplus) && !defined(CINTERFACE)
736
737 MIDL_INTERFACE("548d6b12-09fa-40e0-9069-5dcd589a52c9")
738 ID3D12Debug5 : public ID3D12Debug4
739 {
740 public:
741 virtual void STDMETHODCALLTYPE SetEnableAutoName(
742 BOOL Enable) = 0;
743
744 };
745
746
747#else /* C style interface */
748
749 typedef struct ID3D12Debug5Vtbl
750 {
751 BEGIN_INTERFACE
752
753 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
754 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
755 ID3D12Debug5 * This,
756 REFIID riid,
757 _COM_Outptr_ void **ppvObject);
758
759 DECLSPEC_XFGVIRT(IUnknown, AddRef)
760 ULONG ( STDMETHODCALLTYPE *AddRef )(
761 ID3D12Debug5 * This);
762
763 DECLSPEC_XFGVIRT(IUnknown, Release)
764 ULONG ( STDMETHODCALLTYPE *Release )(
765 ID3D12Debug5 * This);
766
767 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
768 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
769 ID3D12Debug5 * This);
770
771 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
772 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
773 ID3D12Debug5 * This,
774 BOOL Enable);
775
776 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
777 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
778 ID3D12Debug5 * This,
779 BOOL Enable);
780
781 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
782 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
783 ID3D12Debug5 * This,
784 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
785
786 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
787 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
788 ID3D12Debug5 * This);
789
790 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
791 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
792 ID3D12Debug5 * This,
793 BOOL Enable);
794
795 END_INTERFACE
796 } ID3D12Debug5Vtbl;
797
798 interface ID3D12Debug5
799 {
800 CONST_VTBL struct ID3D12Debug5Vtbl *lpVtbl;
801 };
802
803
804
805#ifdef COBJMACROS
806
807
808#define ID3D12Debug5_QueryInterface(This,riid,ppvObject) \
809 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
810
811#define ID3D12Debug5_AddRef(This) \
812 ( (This)->lpVtbl -> AddRef(This) )
813
814#define ID3D12Debug5_Release(This) \
815 ( (This)->lpVtbl -> Release(This) )
816
817
818#define ID3D12Debug5_EnableDebugLayer(This) \
819 ( (This)->lpVtbl -> EnableDebugLayer(This) )
820
821
822#define ID3D12Debug5_SetEnableGPUBasedValidation(This,Enable) \
823 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
824
825#define ID3D12Debug5_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
826 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
827
828#define ID3D12Debug5_SetGPUBasedValidationFlags(This,Flags) \
829 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
830
831
832#define ID3D12Debug5_DisableDebugLayer(This) \
833 ( (This)->lpVtbl -> DisableDebugLayer(This) )
834
835
836#define ID3D12Debug5_SetEnableAutoName(This,Enable) \
837 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
838
839#endif /* COBJMACROS */
840
841
842#endif /* C style interface */
843
844
845
846
847#endif /* __ID3D12Debug5_INTERFACE_DEFINED__ */
848
849
850#ifndef __ID3D12Debug6_INTERFACE_DEFINED__
851#define __ID3D12Debug6_INTERFACE_DEFINED__
852
853/* interface ID3D12Debug6 */
854/* [unique][local][object][uuid] */
855
856
857EXTERN_C const IID IID_ID3D12Debug6;
858
859#if defined(__cplusplus) && !defined(CINTERFACE)
860
861 MIDL_INTERFACE("82a816d6-5d01-4157-97d0-4975463fd1ed")
862 ID3D12Debug6 : public ID3D12Debug5
863 {
864 public:
865 virtual void STDMETHODCALLTYPE SetForceLegacyBarrierValidation(
866 BOOL Enable) = 0;
867
868 };
869
870
871#else /* C style interface */
872
873 typedef struct ID3D12Debug6Vtbl
874 {
875 BEGIN_INTERFACE
876
877 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
878 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
879 ID3D12Debug6 * This,
880 REFIID riid,
881 _COM_Outptr_ void **ppvObject);
882
883 DECLSPEC_XFGVIRT(IUnknown, AddRef)
884 ULONG ( STDMETHODCALLTYPE *AddRef )(
885 ID3D12Debug6 * This);
886
887 DECLSPEC_XFGVIRT(IUnknown, Release)
888 ULONG ( STDMETHODCALLTYPE *Release )(
889 ID3D12Debug6 * This);
890
891 DECLSPEC_XFGVIRT(ID3D12Debug, EnableDebugLayer)
892 void ( STDMETHODCALLTYPE *EnableDebugLayer )(
893 ID3D12Debug6 * This);
894
895 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableGPUBasedValidation)
896 void ( STDMETHODCALLTYPE *SetEnableGPUBasedValidation )(
897 ID3D12Debug6 * This,
898 BOOL Enable);
899
900 DECLSPEC_XFGVIRT(ID3D12Debug3, SetEnableSynchronizedCommandQueueValidation)
901 void ( STDMETHODCALLTYPE *SetEnableSynchronizedCommandQueueValidation )(
902 ID3D12Debug6 * This,
903 BOOL Enable);
904
905 DECLSPEC_XFGVIRT(ID3D12Debug3, SetGPUBasedValidationFlags)
906 void ( STDMETHODCALLTYPE *SetGPUBasedValidationFlags )(
907 ID3D12Debug6 * This,
908 D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
909
910 DECLSPEC_XFGVIRT(ID3D12Debug4, DisableDebugLayer)
911 void ( STDMETHODCALLTYPE *DisableDebugLayer )(
912 ID3D12Debug6 * This);
913
914 DECLSPEC_XFGVIRT(ID3D12Debug5, SetEnableAutoName)
915 void ( STDMETHODCALLTYPE *SetEnableAutoName )(
916 ID3D12Debug6 * This,
917 BOOL Enable);
918
919 DECLSPEC_XFGVIRT(ID3D12Debug6, SetForceLegacyBarrierValidation)
920 void ( STDMETHODCALLTYPE *SetForceLegacyBarrierValidation )(
921 ID3D12Debug6 * This,
922 BOOL Enable);
923
924 END_INTERFACE
925 } ID3D12Debug6Vtbl;
926
927 interface ID3D12Debug6
928 {
929 CONST_VTBL struct ID3D12Debug6Vtbl *lpVtbl;
930 };
931
932
933
934#ifdef COBJMACROS
935
936
937#define ID3D12Debug6_QueryInterface(This,riid,ppvObject) \
938 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
939
940#define ID3D12Debug6_AddRef(This) \
941 ( (This)->lpVtbl -> AddRef(This) )
942
943#define ID3D12Debug6_Release(This) \
944 ( (This)->lpVtbl -> Release(This) )
945
946
947#define ID3D12Debug6_EnableDebugLayer(This) \
948 ( (This)->lpVtbl -> EnableDebugLayer(This) )
949
950
951#define ID3D12Debug6_SetEnableGPUBasedValidation(This,Enable) \
952 ( (This)->lpVtbl -> SetEnableGPUBasedValidation(This,Enable) )
953
954#define ID3D12Debug6_SetEnableSynchronizedCommandQueueValidation(This,Enable) \
955 ( (This)->lpVtbl -> SetEnableSynchronizedCommandQueueValidation(This,Enable) )
956
957#define ID3D12Debug6_SetGPUBasedValidationFlags(This,Flags) \
958 ( (This)->lpVtbl -> SetGPUBasedValidationFlags(This,Flags) )
959
960
961#define ID3D12Debug6_DisableDebugLayer(This) \
962 ( (This)->lpVtbl -> DisableDebugLayer(This) )
963
964
965#define ID3D12Debug6_SetEnableAutoName(This,Enable) \
966 ( (This)->lpVtbl -> SetEnableAutoName(This,Enable) )
967
968
969#define ID3D12Debug6_SetForceLegacyBarrierValidation(This,Enable) \
970 ( (This)->lpVtbl -> SetForceLegacyBarrierValidation(This,Enable) )
971
972#endif /* COBJMACROS */
973
974
975#endif /* C style interface */
976
977
978
979
980#endif /* __ID3D12Debug6_INTERFACE_DEFINED__ */
981
982
983/* interface __MIDL_itf_d3d12sdklayers_0000_0007 */
984/* [local] */
985
986DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);
987typedef
988enum D3D12_RLDO_FLAGS
989 {
990 D3D12_RLDO_NONE = 0,
991 D3D12_RLDO_SUMMARY = 0x1,
992 D3D12_RLDO_DETAIL = 0x2,
993 D3D12_RLDO_IGNORE_INTERNAL = 0x4
994 } D3D12_RLDO_FLAGS;
995
996DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)
997typedef
998enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
999 {
1000 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS = 0,
1001 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
1002 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) ,
1003 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE = ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR + 1 )
1004 } D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
1005
1006typedef
1007enum D3D12_DEBUG_FEATURE
1008 {
1009 D3D12_DEBUG_FEATURE_NONE = 0,
1010 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x1,
1011 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x2,
1012 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x4,
1013 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x8
1014 } D3D12_DEBUG_FEATURE;
1015
1016DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)
1017typedef
1018enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
1019 {
1020 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0,
1021 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE + 1 ) ,
1022 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY + 1 ) ,
1023 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION + 1 ) ,
1024 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = ( D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION + 1 )
1025 } D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
1026
1027typedef
1028enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
1029 {
1030 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0,
1031 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1,
1032 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2,
1033 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4,
1034 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x7
1035 } D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
1036
1037DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)
1038typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
1039 {
1040 UINT MaxMessagesPerCommandList;
1041 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
1042 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
1043 } D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
1044
1045typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
1046 {
1047 FLOAT SlowdownFactor;
1048 } D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
1049
1050typedef
1051enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
1052 {
1053 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED = 0,
1054 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED + 1 ) ,
1055 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE = ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED + 1 ) ,
1056 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT = D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
1057 } D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
1058
1059
1060
1061extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec;
1062extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_s_ifspec;
1063
1064#ifndef __ID3D12DebugDevice1_INTERFACE_DEFINED__
1065#define __ID3D12DebugDevice1_INTERFACE_DEFINED__
1066
1067/* interface ID3D12DebugDevice1 */
1068/* [unique][local][object][uuid] */
1069
1070
1071EXTERN_C const IID IID_ID3D12DebugDevice1;
1072
1073#if defined(__cplusplus) && !defined(CINTERFACE)
1074
1075 MIDL_INTERFACE("a9b71770-d099-4a65-a698-3dee10020f88")
1076 ID3D12DebugDevice1 : public IUnknown
1077 {
1078 public:
1079 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1080 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1081 _In_reads_bytes_(DataSize) const void *pData,
1082 UINT DataSize) = 0;
1083
1084 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1085 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1086 _Out_writes_bytes_(DataSize) void *pData,
1087 UINT DataSize) = 0;
1088
1089 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1090 D3D12_RLDO_FLAGS Flags) = 0;
1091
1092 };
1093
1094
1095#else /* C style interface */
1096
1097 typedef struct ID3D12DebugDevice1Vtbl
1098 {
1099 BEGIN_INTERFACE
1100
1101 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1102 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1103 ID3D12DebugDevice1 * This,
1104 REFIID riid,
1105 _COM_Outptr_ void **ppvObject);
1106
1107 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1108 ULONG ( STDMETHODCALLTYPE *AddRef )(
1109 ID3D12DebugDevice1 * This);
1110
1111 DECLSPEC_XFGVIRT(IUnknown, Release)
1112 ULONG ( STDMETHODCALLTYPE *Release )(
1113 ID3D12DebugDevice1 * This);
1114
1115 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, SetDebugParameter)
1116 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1117 ID3D12DebugDevice1 * This,
1118 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1119 _In_reads_bytes_(DataSize) const void *pData,
1120 UINT DataSize);
1121
1122 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, GetDebugParameter)
1123 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1124 ID3D12DebugDevice1 * This,
1125 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1126 _Out_writes_bytes_(DataSize) void *pData,
1127 UINT DataSize);
1128
1129 DECLSPEC_XFGVIRT(ID3D12DebugDevice1, ReportLiveDeviceObjects)
1130 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1131 ID3D12DebugDevice1 * This,
1132 D3D12_RLDO_FLAGS Flags);
1133
1134 END_INTERFACE
1135 } ID3D12DebugDevice1Vtbl;
1136
1137 interface ID3D12DebugDevice1
1138 {
1139 CONST_VTBL struct ID3D12DebugDevice1Vtbl *lpVtbl;
1140 };
1141
1142
1143
1144#ifdef COBJMACROS
1145
1146
1147#define ID3D12DebugDevice1_QueryInterface(This,riid,ppvObject) \
1148 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1149
1150#define ID3D12DebugDevice1_AddRef(This) \
1151 ( (This)->lpVtbl -> AddRef(This) )
1152
1153#define ID3D12DebugDevice1_Release(This) \
1154 ( (This)->lpVtbl -> Release(This) )
1155
1156
1157#define ID3D12DebugDevice1_SetDebugParameter(This,Type,pData,DataSize) \
1158 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1159
1160#define ID3D12DebugDevice1_GetDebugParameter(This,Type,pData,DataSize) \
1161 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1162
1163#define ID3D12DebugDevice1_ReportLiveDeviceObjects(This,Flags) \
1164 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1165
1166#endif /* COBJMACROS */
1167
1168
1169#endif /* C style interface */
1170
1171
1172
1173
1174#endif /* __ID3D12DebugDevice1_INTERFACE_DEFINED__ */
1175
1176
1177#ifndef __ID3D12DebugDevice_INTERFACE_DEFINED__
1178#define __ID3D12DebugDevice_INTERFACE_DEFINED__
1179
1180/* interface ID3D12DebugDevice */
1181/* [unique][local][object][uuid] */
1182
1183
1184EXTERN_C const IID IID_ID3D12DebugDevice;
1185
1186#if defined(__cplusplus) && !defined(CINTERFACE)
1187
1188 MIDL_INTERFACE("3febd6dd-4973-4787-8194-e45f9e28923e")
1189 ID3D12DebugDevice : public IUnknown
1190 {
1191 public:
1192 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1193 D3D12_DEBUG_FEATURE Mask) = 0;
1194
1195 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1196
1197 virtual HRESULT STDMETHODCALLTYPE ReportLiveDeviceObjects(
1198 D3D12_RLDO_FLAGS Flags) = 0;
1199
1200 };
1201
1202
1203#else /* C style interface */
1204
1205 typedef struct ID3D12DebugDeviceVtbl
1206 {
1207 BEGIN_INTERFACE
1208
1209 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1210 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1211 ID3D12DebugDevice * This,
1212 REFIID riid,
1213 _COM_Outptr_ void **ppvObject);
1214
1215 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1216 ULONG ( STDMETHODCALLTYPE *AddRef )(
1217 ID3D12DebugDevice * This);
1218
1219 DECLSPEC_XFGVIRT(IUnknown, Release)
1220 ULONG ( STDMETHODCALLTYPE *Release )(
1221 ID3D12DebugDevice * This);
1222
1223 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1224 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1225 ID3D12DebugDevice * This,
1226 D3D12_DEBUG_FEATURE Mask);
1227
1228 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1229 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1230 ID3D12DebugDevice * This);
1231
1232 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1233 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1234 ID3D12DebugDevice * This,
1235 D3D12_RLDO_FLAGS Flags);
1236
1237 END_INTERFACE
1238 } ID3D12DebugDeviceVtbl;
1239
1240 interface ID3D12DebugDevice
1241 {
1242 CONST_VTBL struct ID3D12DebugDeviceVtbl *lpVtbl;
1243 };
1244
1245
1246
1247#ifdef COBJMACROS
1248
1249
1250#define ID3D12DebugDevice_QueryInterface(This,riid,ppvObject) \
1251 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1252
1253#define ID3D12DebugDevice_AddRef(This) \
1254 ( (This)->lpVtbl -> AddRef(This) )
1255
1256#define ID3D12DebugDevice_Release(This) \
1257 ( (This)->lpVtbl -> Release(This) )
1258
1259
1260#define ID3D12DebugDevice_SetFeatureMask(This,Mask) \
1261 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1262
1263#define ID3D12DebugDevice_GetFeatureMask(This) \
1264 ( (This)->lpVtbl -> GetFeatureMask(This) )
1265
1266#define ID3D12DebugDevice_ReportLiveDeviceObjects(This,Flags) \
1267 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1268
1269#endif /* COBJMACROS */
1270
1271
1272#endif /* C style interface */
1273
1274
1275
1276
1277#endif /* __ID3D12DebugDevice_INTERFACE_DEFINED__ */
1278
1279
1280#ifndef __ID3D12DebugDevice2_INTERFACE_DEFINED__
1281#define __ID3D12DebugDevice2_INTERFACE_DEFINED__
1282
1283/* interface ID3D12DebugDevice2 */
1284/* [unique][local][object][uuid] */
1285
1286
1287EXTERN_C const IID IID_ID3D12DebugDevice2;
1288
1289#if defined(__cplusplus) && !defined(CINTERFACE)
1290
1291 MIDL_INTERFACE("60eccbc1-378d-4df1-894c-f8ac5ce4d7dd")
1292 ID3D12DebugDevice2 : public ID3D12DebugDevice
1293 {
1294 public:
1295 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1296 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1297 _In_reads_bytes_(DataSize) const void *pData,
1298 UINT DataSize) = 0;
1299
1300 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1301 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1302 _Out_writes_bytes_(DataSize) void *pData,
1303 UINT DataSize) = 0;
1304
1305 };
1306
1307
1308#else /* C style interface */
1309
1310 typedef struct ID3D12DebugDevice2Vtbl
1311 {
1312 BEGIN_INTERFACE
1313
1314 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1315 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1316 ID3D12DebugDevice2 * This,
1317 REFIID riid,
1318 _COM_Outptr_ void **ppvObject);
1319
1320 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1321 ULONG ( STDMETHODCALLTYPE *AddRef )(
1322 ID3D12DebugDevice2 * This);
1323
1324 DECLSPEC_XFGVIRT(IUnknown, Release)
1325 ULONG ( STDMETHODCALLTYPE *Release )(
1326 ID3D12DebugDevice2 * This);
1327
1328 DECLSPEC_XFGVIRT(ID3D12DebugDevice, SetFeatureMask)
1329 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1330 ID3D12DebugDevice2 * This,
1331 D3D12_DEBUG_FEATURE Mask);
1332
1333 DECLSPEC_XFGVIRT(ID3D12DebugDevice, GetFeatureMask)
1334 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1335 ID3D12DebugDevice2 * This);
1336
1337 DECLSPEC_XFGVIRT(ID3D12DebugDevice, ReportLiveDeviceObjects)
1338 HRESULT ( STDMETHODCALLTYPE *ReportLiveDeviceObjects )(
1339 ID3D12DebugDevice2 * This,
1340 D3D12_RLDO_FLAGS Flags);
1341
1342 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, SetDebugParameter)
1343 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1344 ID3D12DebugDevice2 * This,
1345 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1346 _In_reads_bytes_(DataSize) const void *pData,
1347 UINT DataSize);
1348
1349 DECLSPEC_XFGVIRT(ID3D12DebugDevice2, GetDebugParameter)
1350 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1351 ID3D12DebugDevice2 * This,
1352 D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type,
1353 _Out_writes_bytes_(DataSize) void *pData,
1354 UINT DataSize);
1355
1356 END_INTERFACE
1357 } ID3D12DebugDevice2Vtbl;
1358
1359 interface ID3D12DebugDevice2
1360 {
1361 CONST_VTBL struct ID3D12DebugDevice2Vtbl *lpVtbl;
1362 };
1363
1364
1365
1366#ifdef COBJMACROS
1367
1368
1369#define ID3D12DebugDevice2_QueryInterface(This,riid,ppvObject) \
1370 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1371
1372#define ID3D12DebugDevice2_AddRef(This) \
1373 ( (This)->lpVtbl -> AddRef(This) )
1374
1375#define ID3D12DebugDevice2_Release(This) \
1376 ( (This)->lpVtbl -> Release(This) )
1377
1378
1379#define ID3D12DebugDevice2_SetFeatureMask(This,Mask) \
1380 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1381
1382#define ID3D12DebugDevice2_GetFeatureMask(This) \
1383 ( (This)->lpVtbl -> GetFeatureMask(This) )
1384
1385#define ID3D12DebugDevice2_ReportLiveDeviceObjects(This,Flags) \
1386 ( (This)->lpVtbl -> ReportLiveDeviceObjects(This,Flags) )
1387
1388
1389#define ID3D12DebugDevice2_SetDebugParameter(This,Type,pData,DataSize) \
1390 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1391
1392#define ID3D12DebugDevice2_GetDebugParameter(This,Type,pData,DataSize) \
1393 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1394
1395#endif /* COBJMACROS */
1396
1397
1398#endif /* C style interface */
1399
1400
1401
1402
1403#endif /* __ID3D12DebugDevice2_INTERFACE_DEFINED__ */
1404
1405
1406/* interface __MIDL_itf_d3d12sdklayers_0000_0010 */
1407/* [local] */
1408
1409DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);
1410
1411
1412extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_c_ifspec;
1413extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0010_v0_0_s_ifspec;
1414
1415#ifndef __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1416#define __ID3D12DebugCommandQueue_INTERFACE_DEFINED__
1417
1418/* interface ID3D12DebugCommandQueue */
1419/* [unique][local][object][uuid] */
1420
1421
1422EXTERN_C const IID IID_ID3D12DebugCommandQueue;
1423
1424#if defined(__cplusplus) && !defined(CINTERFACE)
1425
1426 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053a")
1427 ID3D12DebugCommandQueue : public IUnknown
1428 {
1429 public:
1430 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1431 _In_ ID3D12Resource *pResource,
1432 UINT Subresource,
1433 UINT State) = 0;
1434
1435 };
1436
1437
1438#else /* C style interface */
1439
1440 typedef struct ID3D12DebugCommandQueueVtbl
1441 {
1442 BEGIN_INTERFACE
1443
1444 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1445 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1446 ID3D12DebugCommandQueue * This,
1447 REFIID riid,
1448 _COM_Outptr_ void **ppvObject);
1449
1450 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1451 ULONG ( STDMETHODCALLTYPE *AddRef )(
1452 ID3D12DebugCommandQueue * This);
1453
1454 DECLSPEC_XFGVIRT(IUnknown, Release)
1455 ULONG ( STDMETHODCALLTYPE *Release )(
1456 ID3D12DebugCommandQueue * This);
1457
1458 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1459 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1460 ID3D12DebugCommandQueue * This,
1461 _In_ ID3D12Resource *pResource,
1462 UINT Subresource,
1463 UINT State);
1464
1465 END_INTERFACE
1466 } ID3D12DebugCommandQueueVtbl;
1467
1468 interface ID3D12DebugCommandQueue
1469 {
1470 CONST_VTBL struct ID3D12DebugCommandQueueVtbl *lpVtbl;
1471 };
1472
1473
1474
1475#ifdef COBJMACROS
1476
1477
1478#define ID3D12DebugCommandQueue_QueryInterface(This,riid,ppvObject) \
1479 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1480
1481#define ID3D12DebugCommandQueue_AddRef(This) \
1482 ( (This)->lpVtbl -> AddRef(This) )
1483
1484#define ID3D12DebugCommandQueue_Release(This) \
1485 ( (This)->lpVtbl -> Release(This) )
1486
1487
1488#define ID3D12DebugCommandQueue_AssertResourceState(This,pResource,Subresource,State) \
1489 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1490
1491#endif /* COBJMACROS */
1492
1493
1494#endif /* C style interface */
1495
1496
1497
1498
1499#endif /* __ID3D12DebugCommandQueue_INTERFACE_DEFINED__ */
1500
1501
1502#ifndef __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1503#define __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__
1504
1505/* interface ID3D12DebugCommandQueue1 */
1506/* [unique][local][object][uuid] */
1507
1508
1509EXTERN_C const IID IID_ID3D12DebugCommandQueue1;
1510
1511#if defined(__cplusplus) && !defined(CINTERFACE)
1512
1513 MIDL_INTERFACE("16be35a2-bfd6-49f2-bcae-eaae4aff862d")
1514 ID3D12DebugCommandQueue1 : public ID3D12DebugCommandQueue
1515 {
1516 public:
1517 virtual void STDMETHODCALLTYPE AssertResourceAccess(
1518 _In_ ID3D12Resource *pResource,
1519 UINT Subresource,
1520 D3D12_BARRIER_ACCESS Access) = 0;
1521
1522 virtual void STDMETHODCALLTYPE AssertTextureLayout(
1523 _In_ ID3D12Resource *pResource,
1524 UINT Subresource,
1525 D3D12_BARRIER_LAYOUT Layout) = 0;
1526
1527 };
1528
1529
1530#else /* C style interface */
1531
1532 typedef struct ID3D12DebugCommandQueue1Vtbl
1533 {
1534 BEGIN_INTERFACE
1535
1536 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1537 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1538 ID3D12DebugCommandQueue1 * This,
1539 REFIID riid,
1540 _COM_Outptr_ void **ppvObject);
1541
1542 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1543 ULONG ( STDMETHODCALLTYPE *AddRef )(
1544 ID3D12DebugCommandQueue1 * This);
1545
1546 DECLSPEC_XFGVIRT(IUnknown, Release)
1547 ULONG ( STDMETHODCALLTYPE *Release )(
1548 ID3D12DebugCommandQueue1 * This);
1549
1550 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue, AssertResourceState)
1551 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1552 ID3D12DebugCommandQueue1 * This,
1553 _In_ ID3D12Resource *pResource,
1554 UINT Subresource,
1555 UINT State);
1556
1557 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertResourceAccess)
1558 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
1559 ID3D12DebugCommandQueue1 * This,
1560 _In_ ID3D12Resource *pResource,
1561 UINT Subresource,
1562 D3D12_BARRIER_ACCESS Access);
1563
1564 DECLSPEC_XFGVIRT(ID3D12DebugCommandQueue1, AssertTextureLayout)
1565 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
1566 ID3D12DebugCommandQueue1 * This,
1567 _In_ ID3D12Resource *pResource,
1568 UINT Subresource,
1569 D3D12_BARRIER_LAYOUT Layout);
1570
1571 END_INTERFACE
1572 } ID3D12DebugCommandQueue1Vtbl;
1573
1574 interface ID3D12DebugCommandQueue1
1575 {
1576 CONST_VTBL struct ID3D12DebugCommandQueue1Vtbl *lpVtbl;
1577 };
1578
1579
1580
1581#ifdef COBJMACROS
1582
1583
1584#define ID3D12DebugCommandQueue1_QueryInterface(This,riid,ppvObject) \
1585 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1586
1587#define ID3D12DebugCommandQueue1_AddRef(This) \
1588 ( (This)->lpVtbl -> AddRef(This) )
1589
1590#define ID3D12DebugCommandQueue1_Release(This) \
1591 ( (This)->lpVtbl -> Release(This) )
1592
1593
1594#define ID3D12DebugCommandQueue1_AssertResourceState(This,pResource,Subresource,State) \
1595 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1596
1597
1598#define ID3D12DebugCommandQueue1_AssertResourceAccess(This,pResource,Subresource,Access) \
1599 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
1600
1601#define ID3D12DebugCommandQueue1_AssertTextureLayout(This,pResource,Subresource,Layout) \
1602 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
1603
1604#endif /* COBJMACROS */
1605
1606
1607#endif /* C style interface */
1608
1609
1610
1611
1612#endif /* __ID3D12DebugCommandQueue1_INTERFACE_DEFINED__ */
1613
1614
1615/* interface __MIDL_itf_d3d12sdklayers_0000_0012 */
1616/* [local] */
1617
1618typedef
1619enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
1620 {
1621 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS = 0
1622 } D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
1623
1624typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
1625 {
1626 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
1627 } D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
1628
1629
1630
1631extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_c_ifspec;
1632extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0012_v0_0_s_ifspec;
1633
1634#ifndef __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1635#define __ID3D12DebugCommandList1_INTERFACE_DEFINED__
1636
1637/* interface ID3D12DebugCommandList1 */
1638/* [unique][local][object][uuid] */
1639
1640
1641EXTERN_C const IID IID_ID3D12DebugCommandList1;
1642
1643#if defined(__cplusplus) && !defined(CINTERFACE)
1644
1645 MIDL_INTERFACE("102ca951-311b-4b01-b11f-ecb83e061b37")
1646 ID3D12DebugCommandList1 : public IUnknown
1647 {
1648 public:
1649 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1650 _In_ ID3D12Resource *pResource,
1651 UINT Subresource,
1652 UINT State) = 0;
1653
1654 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1655 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1656 _In_reads_bytes_(DataSize) const void *pData,
1657 UINT DataSize) = 0;
1658
1659 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1660 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1661 _Out_writes_bytes_(DataSize) void *pData,
1662 UINT DataSize) = 0;
1663
1664 };
1665
1666
1667#else /* C style interface */
1668
1669 typedef struct ID3D12DebugCommandList1Vtbl
1670 {
1671 BEGIN_INTERFACE
1672
1673 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1674 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1675 ID3D12DebugCommandList1 * This,
1676 REFIID riid,
1677 _COM_Outptr_ void **ppvObject);
1678
1679 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1680 ULONG ( STDMETHODCALLTYPE *AddRef )(
1681 ID3D12DebugCommandList1 * This);
1682
1683 DECLSPEC_XFGVIRT(IUnknown, Release)
1684 ULONG ( STDMETHODCALLTYPE *Release )(
1685 ID3D12DebugCommandList1 * This);
1686
1687 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, AssertResourceState)
1688 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1689 ID3D12DebugCommandList1 * This,
1690 _In_ ID3D12Resource *pResource,
1691 UINT Subresource,
1692 UINT State);
1693
1694 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, SetDebugParameter)
1695 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1696 ID3D12DebugCommandList1 * This,
1697 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1698 _In_reads_bytes_(DataSize) const void *pData,
1699 UINT DataSize);
1700
1701 DECLSPEC_XFGVIRT(ID3D12DebugCommandList1, GetDebugParameter)
1702 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1703 ID3D12DebugCommandList1 * This,
1704 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1705 _Out_writes_bytes_(DataSize) void *pData,
1706 UINT DataSize);
1707
1708 END_INTERFACE
1709 } ID3D12DebugCommandList1Vtbl;
1710
1711 interface ID3D12DebugCommandList1
1712 {
1713 CONST_VTBL struct ID3D12DebugCommandList1Vtbl *lpVtbl;
1714 };
1715
1716
1717
1718#ifdef COBJMACROS
1719
1720
1721#define ID3D12DebugCommandList1_QueryInterface(This,riid,ppvObject) \
1722 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1723
1724#define ID3D12DebugCommandList1_AddRef(This) \
1725 ( (This)->lpVtbl -> AddRef(This) )
1726
1727#define ID3D12DebugCommandList1_Release(This) \
1728 ( (This)->lpVtbl -> Release(This) )
1729
1730
1731#define ID3D12DebugCommandList1_AssertResourceState(This,pResource,Subresource,State) \
1732 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1733
1734#define ID3D12DebugCommandList1_SetDebugParameter(This,Type,pData,DataSize) \
1735 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1736
1737#define ID3D12DebugCommandList1_GetDebugParameter(This,Type,pData,DataSize) \
1738 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1739
1740#endif /* COBJMACROS */
1741
1742
1743#endif /* C style interface */
1744
1745
1746
1747
1748#endif /* __ID3D12DebugCommandList1_INTERFACE_DEFINED__ */
1749
1750
1751#ifndef __ID3D12DebugCommandList_INTERFACE_DEFINED__
1752#define __ID3D12DebugCommandList_INTERFACE_DEFINED__
1753
1754/* interface ID3D12DebugCommandList */
1755/* [unique][local][object][uuid] */
1756
1757
1758EXTERN_C const IID IID_ID3D12DebugCommandList;
1759
1760#if defined(__cplusplus) && !defined(CINTERFACE)
1761
1762 MIDL_INTERFACE("09e0bf36-54ac-484f-8847-4baeeab6053f")
1763 ID3D12DebugCommandList : public IUnknown
1764 {
1765 public:
1766 virtual BOOL STDMETHODCALLTYPE AssertResourceState(
1767 _In_ ID3D12Resource *pResource,
1768 UINT Subresource,
1769 UINT State) = 0;
1770
1771 virtual HRESULT STDMETHODCALLTYPE SetFeatureMask(
1772 D3D12_DEBUG_FEATURE Mask) = 0;
1773
1774 virtual D3D12_DEBUG_FEATURE STDMETHODCALLTYPE GetFeatureMask( void) = 0;
1775
1776 };
1777
1778
1779#else /* C style interface */
1780
1781 typedef struct ID3D12DebugCommandListVtbl
1782 {
1783 BEGIN_INTERFACE
1784
1785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1787 ID3D12DebugCommandList * This,
1788 REFIID riid,
1789 _COM_Outptr_ void **ppvObject);
1790
1791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1792 ULONG ( STDMETHODCALLTYPE *AddRef )(
1793 ID3D12DebugCommandList * This);
1794
1795 DECLSPEC_XFGVIRT(IUnknown, Release)
1796 ULONG ( STDMETHODCALLTYPE *Release )(
1797 ID3D12DebugCommandList * This);
1798
1799 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1800 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1801 ID3D12DebugCommandList * This,
1802 _In_ ID3D12Resource *pResource,
1803 UINT Subresource,
1804 UINT State);
1805
1806 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1807 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1808 ID3D12DebugCommandList * This,
1809 D3D12_DEBUG_FEATURE Mask);
1810
1811 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1812 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1813 ID3D12DebugCommandList * This);
1814
1815 END_INTERFACE
1816 } ID3D12DebugCommandListVtbl;
1817
1818 interface ID3D12DebugCommandList
1819 {
1820 CONST_VTBL struct ID3D12DebugCommandListVtbl *lpVtbl;
1821 };
1822
1823
1824
1825#ifdef COBJMACROS
1826
1827
1828#define ID3D12DebugCommandList_QueryInterface(This,riid,ppvObject) \
1829 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1830
1831#define ID3D12DebugCommandList_AddRef(This) \
1832 ( (This)->lpVtbl -> AddRef(This) )
1833
1834#define ID3D12DebugCommandList_Release(This) \
1835 ( (This)->lpVtbl -> Release(This) )
1836
1837
1838#define ID3D12DebugCommandList_AssertResourceState(This,pResource,Subresource,State) \
1839 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1840
1841#define ID3D12DebugCommandList_SetFeatureMask(This,Mask) \
1842 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1843
1844#define ID3D12DebugCommandList_GetFeatureMask(This) \
1845 ( (This)->lpVtbl -> GetFeatureMask(This) )
1846
1847#endif /* COBJMACROS */
1848
1849
1850#endif /* C style interface */
1851
1852
1853
1854
1855#endif /* __ID3D12DebugCommandList_INTERFACE_DEFINED__ */
1856
1857
1858#ifndef __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1859#define __ID3D12DebugCommandList2_INTERFACE_DEFINED__
1860
1861/* interface ID3D12DebugCommandList2 */
1862/* [unique][local][object][uuid] */
1863
1864
1865EXTERN_C const IID IID_ID3D12DebugCommandList2;
1866
1867#if defined(__cplusplus) && !defined(CINTERFACE)
1868
1869 MIDL_INTERFACE("aeb575cf-4e06-48be-ba3b-c450fc96652e")
1870 ID3D12DebugCommandList2 : public ID3D12DebugCommandList
1871 {
1872 public:
1873 virtual HRESULT STDMETHODCALLTYPE SetDebugParameter(
1874 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1875 _In_reads_bytes_(DataSize) const void *pData,
1876 UINT DataSize) = 0;
1877
1878 virtual HRESULT STDMETHODCALLTYPE GetDebugParameter(
1879 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1880 _Out_writes_bytes_(DataSize) void *pData,
1881 UINT DataSize) = 0;
1882
1883 };
1884
1885
1886#else /* C style interface */
1887
1888 typedef struct ID3D12DebugCommandList2Vtbl
1889 {
1890 BEGIN_INTERFACE
1891
1892 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1893 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1894 ID3D12DebugCommandList2 * This,
1895 REFIID riid,
1896 _COM_Outptr_ void **ppvObject);
1897
1898 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1899 ULONG ( STDMETHODCALLTYPE *AddRef )(
1900 ID3D12DebugCommandList2 * This);
1901
1902 DECLSPEC_XFGVIRT(IUnknown, Release)
1903 ULONG ( STDMETHODCALLTYPE *Release )(
1904 ID3D12DebugCommandList2 * This);
1905
1906 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
1907 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
1908 ID3D12DebugCommandList2 * This,
1909 _In_ ID3D12Resource *pResource,
1910 UINT Subresource,
1911 UINT State);
1912
1913 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
1914 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
1915 ID3D12DebugCommandList2 * This,
1916 D3D12_DEBUG_FEATURE Mask);
1917
1918 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
1919 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
1920 ID3D12DebugCommandList2 * This);
1921
1922 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
1923 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
1924 ID3D12DebugCommandList2 * This,
1925 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1926 _In_reads_bytes_(DataSize) const void *pData,
1927 UINT DataSize);
1928
1929 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
1930 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
1931 ID3D12DebugCommandList2 * This,
1932 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
1933 _Out_writes_bytes_(DataSize) void *pData,
1934 UINT DataSize);
1935
1936 END_INTERFACE
1937 } ID3D12DebugCommandList2Vtbl;
1938
1939 interface ID3D12DebugCommandList2
1940 {
1941 CONST_VTBL struct ID3D12DebugCommandList2Vtbl *lpVtbl;
1942 };
1943
1944
1945
1946#ifdef COBJMACROS
1947
1948
1949#define ID3D12DebugCommandList2_QueryInterface(This,riid,ppvObject) \
1950 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1951
1952#define ID3D12DebugCommandList2_AddRef(This) \
1953 ( (This)->lpVtbl -> AddRef(This) )
1954
1955#define ID3D12DebugCommandList2_Release(This) \
1956 ( (This)->lpVtbl -> Release(This) )
1957
1958
1959#define ID3D12DebugCommandList2_AssertResourceState(This,pResource,Subresource,State) \
1960 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
1961
1962#define ID3D12DebugCommandList2_SetFeatureMask(This,Mask) \
1963 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
1964
1965#define ID3D12DebugCommandList2_GetFeatureMask(This) \
1966 ( (This)->lpVtbl -> GetFeatureMask(This) )
1967
1968
1969#define ID3D12DebugCommandList2_SetDebugParameter(This,Type,pData,DataSize) \
1970 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
1971
1972#define ID3D12DebugCommandList2_GetDebugParameter(This,Type,pData,DataSize) \
1973 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
1974
1975#endif /* COBJMACROS */
1976
1977
1978#endif /* C style interface */
1979
1980
1981
1982
1983#endif /* __ID3D12DebugCommandList2_INTERFACE_DEFINED__ */
1984
1985
1986#ifndef __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1987#define __ID3D12DebugCommandList3_INTERFACE_DEFINED__
1988
1989/* interface ID3D12DebugCommandList3 */
1990/* [unique][local][object][uuid] */
1991
1992
1993EXTERN_C const IID IID_ID3D12DebugCommandList3;
1994
1995#if defined(__cplusplus) && !defined(CINTERFACE)
1996
1997 MIDL_INTERFACE("197d5e15-4d37-4d34-af78-724cd70fdb1f")
1998 ID3D12DebugCommandList3 : public ID3D12DebugCommandList2
1999 {
2000 public:
2001 virtual void STDMETHODCALLTYPE AssertResourceAccess(
2002 _In_ ID3D12Resource *pResource,
2003 UINT Subresource,
2004 D3D12_BARRIER_ACCESS Access) = 0;
2005
2006 virtual void STDMETHODCALLTYPE AssertTextureLayout(
2007 _In_ ID3D12Resource *pResource,
2008 UINT Subresource,
2009 D3D12_BARRIER_LAYOUT Layout) = 0;
2010
2011 };
2012
2013
2014#else /* C style interface */
2015
2016 typedef struct ID3D12DebugCommandList3Vtbl
2017 {
2018 BEGIN_INTERFACE
2019
2020 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2021 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2022 ID3D12DebugCommandList3 * This,
2023 REFIID riid,
2024 _COM_Outptr_ void **ppvObject);
2025
2026 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2027 ULONG ( STDMETHODCALLTYPE *AddRef )(
2028 ID3D12DebugCommandList3 * This);
2029
2030 DECLSPEC_XFGVIRT(IUnknown, Release)
2031 ULONG ( STDMETHODCALLTYPE *Release )(
2032 ID3D12DebugCommandList3 * This);
2033
2034 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, AssertResourceState)
2035 BOOL ( STDMETHODCALLTYPE *AssertResourceState )(
2036 ID3D12DebugCommandList3 * This,
2037 _In_ ID3D12Resource *pResource,
2038 UINT Subresource,
2039 UINT State);
2040
2041 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, SetFeatureMask)
2042 HRESULT ( STDMETHODCALLTYPE *SetFeatureMask )(
2043 ID3D12DebugCommandList3 * This,
2044 D3D12_DEBUG_FEATURE Mask);
2045
2046 DECLSPEC_XFGVIRT(ID3D12DebugCommandList, GetFeatureMask)
2047 D3D12_DEBUG_FEATURE ( STDMETHODCALLTYPE *GetFeatureMask )(
2048 ID3D12DebugCommandList3 * This);
2049
2050 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, SetDebugParameter)
2051 HRESULT ( STDMETHODCALLTYPE *SetDebugParameter )(
2052 ID3D12DebugCommandList3 * This,
2053 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2054 _In_reads_bytes_(DataSize) const void *pData,
2055 UINT DataSize);
2056
2057 DECLSPEC_XFGVIRT(ID3D12DebugCommandList2, GetDebugParameter)
2058 HRESULT ( STDMETHODCALLTYPE *GetDebugParameter )(
2059 ID3D12DebugCommandList3 * This,
2060 D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type,
2061 _Out_writes_bytes_(DataSize) void *pData,
2062 UINT DataSize);
2063
2064 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertResourceAccess)
2065 void ( STDMETHODCALLTYPE *AssertResourceAccess )(
2066 ID3D12DebugCommandList3 * This,
2067 _In_ ID3D12Resource *pResource,
2068 UINT Subresource,
2069 D3D12_BARRIER_ACCESS Access);
2070
2071 DECLSPEC_XFGVIRT(ID3D12DebugCommandList3, AssertTextureLayout)
2072 void ( STDMETHODCALLTYPE *AssertTextureLayout )(
2073 ID3D12DebugCommandList3 * This,
2074 _In_ ID3D12Resource *pResource,
2075 UINT Subresource,
2076 D3D12_BARRIER_LAYOUT Layout);
2077
2078 END_INTERFACE
2079 } ID3D12DebugCommandList3Vtbl;
2080
2081 interface ID3D12DebugCommandList3
2082 {
2083 CONST_VTBL struct ID3D12DebugCommandList3Vtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12DebugCommandList3_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12DebugCommandList3_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12DebugCommandList3_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12DebugCommandList3_AssertResourceState(This,pResource,Subresource,State) \
2102 ( (This)->lpVtbl -> AssertResourceState(This,pResource,Subresource,State) )
2103
2104#define ID3D12DebugCommandList3_SetFeatureMask(This,Mask) \
2105 ( (This)->lpVtbl -> SetFeatureMask(This,Mask) )
2106
2107#define ID3D12DebugCommandList3_GetFeatureMask(This) \
2108 ( (This)->lpVtbl -> GetFeatureMask(This) )
2109
2110
2111#define ID3D12DebugCommandList3_SetDebugParameter(This,Type,pData,DataSize) \
2112 ( (This)->lpVtbl -> SetDebugParameter(This,Type,pData,DataSize) )
2113
2114#define ID3D12DebugCommandList3_GetDebugParameter(This,Type,pData,DataSize) \
2115 ( (This)->lpVtbl -> GetDebugParameter(This,Type,pData,DataSize) )
2116
2117
2118#define ID3D12DebugCommandList3_AssertResourceAccess(This,pResource,Subresource,Access) \
2119 ( (This)->lpVtbl -> AssertResourceAccess(This,pResource,Subresource,Access) )
2120
2121#define ID3D12DebugCommandList3_AssertTextureLayout(This,pResource,Subresource,Layout) \
2122 ( (This)->lpVtbl -> AssertTextureLayout(This,pResource,Subresource,Layout) )
2123
2124#endif /* COBJMACROS */
2125
2126
2127#endif /* C style interface */
2128
2129
2130
2131
2132#endif /* __ID3D12DebugCommandList3_INTERFACE_DEFINED__ */
2133
2134
2135#ifndef __ID3D12SharingContract_INTERFACE_DEFINED__
2136#define __ID3D12SharingContract_INTERFACE_DEFINED__
2137
2138/* interface ID3D12SharingContract */
2139/* [unique][local][object][uuid] */
2140
2141
2142EXTERN_C const IID IID_ID3D12SharingContract;
2143
2144#if defined(__cplusplus) && !defined(CINTERFACE)
2145
2146 MIDL_INTERFACE("0adf7d52-929c-4e61-addb-ffed30de66ef")
2147 ID3D12SharingContract : public IUnknown
2148 {
2149 public:
2150 virtual void STDMETHODCALLTYPE Present(
2151 _In_ ID3D12Resource *pResource,
2152 UINT Subresource,
2153 _In_ HWND window) = 0;
2154
2155 virtual void STDMETHODCALLTYPE SharedFenceSignal(
2156 _In_ ID3D12Fence *pFence,
2157 UINT64 FenceValue) = 0;
2158
2159 virtual void STDMETHODCALLTYPE BeginCapturableWork(
2160 _In_ REFGUID guid) = 0;
2161
2162 virtual void STDMETHODCALLTYPE EndCapturableWork(
2163 _In_ REFGUID guid) = 0;
2164
2165 };
2166
2167
2168#else /* C style interface */
2169
2170 typedef struct ID3D12SharingContractVtbl
2171 {
2172 BEGIN_INTERFACE
2173
2174 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2175 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2176 ID3D12SharingContract * This,
2177 REFIID riid,
2178 _COM_Outptr_ void **ppvObject);
2179
2180 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2181 ULONG ( STDMETHODCALLTYPE *AddRef )(
2182 ID3D12SharingContract * This);
2183
2184 DECLSPEC_XFGVIRT(IUnknown, Release)
2185 ULONG ( STDMETHODCALLTYPE *Release )(
2186 ID3D12SharingContract * This);
2187
2188 DECLSPEC_XFGVIRT(ID3D12SharingContract, Present)
2189 void ( STDMETHODCALLTYPE *Present )(
2190 ID3D12SharingContract * This,
2191 _In_ ID3D12Resource *pResource,
2192 UINT Subresource,
2193 _In_ HWND window);
2194
2195 DECLSPEC_XFGVIRT(ID3D12SharingContract, SharedFenceSignal)
2196 void ( STDMETHODCALLTYPE *SharedFenceSignal )(
2197 ID3D12SharingContract * This,
2198 _In_ ID3D12Fence *pFence,
2199 UINT64 FenceValue);
2200
2201 DECLSPEC_XFGVIRT(ID3D12SharingContract, BeginCapturableWork)
2202 void ( STDMETHODCALLTYPE *BeginCapturableWork )(
2203 ID3D12SharingContract * This,
2204 _In_ REFGUID guid);
2205
2206 DECLSPEC_XFGVIRT(ID3D12SharingContract, EndCapturableWork)
2207 void ( STDMETHODCALLTYPE *EndCapturableWork )(
2208 ID3D12SharingContract * This,
2209 _In_ REFGUID guid);
2210
2211 END_INTERFACE
2212 } ID3D12SharingContractVtbl;
2213
2214 interface ID3D12SharingContract
2215 {
2216 CONST_VTBL struct ID3D12SharingContractVtbl *lpVtbl;
2217 };
2218
2219
2220
2221#ifdef COBJMACROS
2222
2223
2224#define ID3D12SharingContract_QueryInterface(This,riid,ppvObject) \
2225 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2226
2227#define ID3D12SharingContract_AddRef(This) \
2228 ( (This)->lpVtbl -> AddRef(This) )
2229
2230#define ID3D12SharingContract_Release(This) \
2231 ( (This)->lpVtbl -> Release(This) )
2232
2233
2234#define ID3D12SharingContract_Present(This,pResource,Subresource,window) \
2235 ( (This)->lpVtbl -> Present(This,pResource,Subresource,window) )
2236
2237#define ID3D12SharingContract_SharedFenceSignal(This,pFence,FenceValue) \
2238 ( (This)->lpVtbl -> SharedFenceSignal(This,pFence,FenceValue) )
2239
2240#define ID3D12SharingContract_BeginCapturableWork(This,guid) \
2241 ( (This)->lpVtbl -> BeginCapturableWork(This,guid) )
2242
2243#define ID3D12SharingContract_EndCapturableWork(This,guid) \
2244 ( (This)->lpVtbl -> EndCapturableWork(This,guid) )
2245
2246#endif /* COBJMACROS */
2247
2248
2249#endif /* C style interface */
2250
2251
2252
2253
2254#endif /* __ID3D12SharingContract_INTERFACE_DEFINED__ */
2255
2256
2257#ifndef __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2258#define __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__
2259
2260/* interface ID3D12ManualWriteTrackingResource */
2261/* [unique][local][object][uuid] */
2262
2263
2264EXTERN_C const IID IID_ID3D12ManualWriteTrackingResource;
2265
2266#if defined(__cplusplus) && !defined(CINTERFACE)
2267
2268 MIDL_INTERFACE("86ca3b85-49ad-4b6e-aed5-eddb18540f41")
2269 ID3D12ManualWriteTrackingResource : public IUnknown
2270 {
2271 public:
2272 virtual void STDMETHODCALLTYPE TrackWrite(
2273 UINT Subresource,
2274 _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
2275
2276 };
2277
2278
2279#else /* C style interface */
2280
2281 typedef struct ID3D12ManualWriteTrackingResourceVtbl
2282 {
2283 BEGIN_INTERFACE
2284
2285 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2286 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2287 ID3D12ManualWriteTrackingResource * This,
2288 REFIID riid,
2289 _COM_Outptr_ void **ppvObject);
2290
2291 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2292 ULONG ( STDMETHODCALLTYPE *AddRef )(
2293 ID3D12ManualWriteTrackingResource * This);
2294
2295 DECLSPEC_XFGVIRT(IUnknown, Release)
2296 ULONG ( STDMETHODCALLTYPE *Release )(
2297 ID3D12ManualWriteTrackingResource * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12ManualWriteTrackingResource, TrackWrite)
2300 void ( STDMETHODCALLTYPE *TrackWrite )(
2301 ID3D12ManualWriteTrackingResource * This,
2302 UINT Subresource,
2303 _In_opt_ const D3D12_RANGE *pWrittenRange);
2304
2305 END_INTERFACE
2306 } ID3D12ManualWriteTrackingResourceVtbl;
2307
2308 interface ID3D12ManualWriteTrackingResource
2309 {
2310 CONST_VTBL struct ID3D12ManualWriteTrackingResourceVtbl *lpVtbl;
2311 };
2312
2313
2314
2315#ifdef COBJMACROS
2316
2317
2318#define ID3D12ManualWriteTrackingResource_QueryInterface(This,riid,ppvObject) \
2319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2320
2321#define ID3D12ManualWriteTrackingResource_AddRef(This) \
2322 ( (This)->lpVtbl -> AddRef(This) )
2323
2324#define ID3D12ManualWriteTrackingResource_Release(This) \
2325 ( (This)->lpVtbl -> Release(This) )
2326
2327
2328#define ID3D12ManualWriteTrackingResource_TrackWrite(This,Subresource,pWrittenRange) \
2329 ( (This)->lpVtbl -> TrackWrite(This,Subresource,pWrittenRange) )
2330
2331#endif /* COBJMACROS */
2332
2333
2334#endif /* C style interface */
2335
2336
2337
2338
2339#endif /* __ID3D12ManualWriteTrackingResource_INTERFACE_DEFINED__ */
2340
2341
2342/* interface __MIDL_itf_d3d12sdklayers_0000_0018 */
2343/* [local] */
2344
2345typedef
2346enum D3D12_MESSAGE_CATEGORY
2347 {
2348 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0,
2349 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = ( D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED + 1 ) ,
2350 D3D12_MESSAGE_CATEGORY_INITIALIZATION = ( D3D12_MESSAGE_CATEGORY_MISCELLANEOUS + 1 ) ,
2351 D3D12_MESSAGE_CATEGORY_CLEANUP = ( D3D12_MESSAGE_CATEGORY_INITIALIZATION + 1 ) ,
2352 D3D12_MESSAGE_CATEGORY_COMPILATION = ( D3D12_MESSAGE_CATEGORY_CLEANUP + 1 ) ,
2353 D3D12_MESSAGE_CATEGORY_STATE_CREATION = ( D3D12_MESSAGE_CATEGORY_COMPILATION + 1 ) ,
2354 D3D12_MESSAGE_CATEGORY_STATE_SETTING = ( D3D12_MESSAGE_CATEGORY_STATE_CREATION + 1 ) ,
2355 D3D12_MESSAGE_CATEGORY_STATE_GETTING = ( D3D12_MESSAGE_CATEGORY_STATE_SETTING + 1 ) ,
2356 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = ( D3D12_MESSAGE_CATEGORY_STATE_GETTING + 1 ) ,
2357 D3D12_MESSAGE_CATEGORY_EXECUTION = ( D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION + 1 ) ,
2358 D3D12_MESSAGE_CATEGORY_SHADER = ( D3D12_MESSAGE_CATEGORY_EXECUTION + 1 )
2359 } D3D12_MESSAGE_CATEGORY;
2360
2361typedef
2362enum D3D12_MESSAGE_SEVERITY
2363 {
2364 D3D12_MESSAGE_SEVERITY_CORRUPTION = 0,
2365 D3D12_MESSAGE_SEVERITY_ERROR = ( D3D12_MESSAGE_SEVERITY_CORRUPTION + 1 ) ,
2366 D3D12_MESSAGE_SEVERITY_WARNING = ( D3D12_MESSAGE_SEVERITY_ERROR + 1 ) ,
2367 D3D12_MESSAGE_SEVERITY_INFO = ( D3D12_MESSAGE_SEVERITY_WARNING + 1 ) ,
2368 D3D12_MESSAGE_SEVERITY_MESSAGE = ( D3D12_MESSAGE_SEVERITY_INFO + 1 )
2369 } D3D12_MESSAGE_SEVERITY;
2370
2371typedef
2372enum D3D12_MESSAGE_ID
2373 {
2374 D3D12_MESSAGE_ID_UNKNOWN = 0,
2375 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
2376 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
2377 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
2378 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
2379 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
2380 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
2381 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
2382 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
2383 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
2384 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
2385 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
2386 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
2387 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
2388 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
2389 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
2390 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
2391 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
2392 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
2393 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
2394 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
2395 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
2396 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
2397 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
2398 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
2399 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
2400 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
2401 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
2402 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
2403 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
2404 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
2405 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
2406 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
2407 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
2408 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
2409 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
2410 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
2411 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
2412 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
2413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
2414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
2415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
2416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
2417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
2418 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
2419 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
2420 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
2421 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
2422 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
2423 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
2424 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
2425 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
2426 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
2427 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
2428 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
2429 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
2430 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
2431 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
2432 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
2433 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
2434 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
2435 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
2436 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
2437 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
2438 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
2439 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
2440 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
2441 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
2442 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
2443 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
2444 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
2445 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
2446 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
2447 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
2448 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
2449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
2450 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
2451 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
2452 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
2453 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
2454 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
2455 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
2456 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
2457 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
2458 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
2459 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
2460 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
2461 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
2462 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
2463 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
2464 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
2465 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
2466 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
2467 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
2468 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
2469 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
2470 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
2471 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
2472 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
2473 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
2474 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
2475 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
2476 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
2477 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
2478 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
2479 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
2480 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
2481 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
2482 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
2483 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
2484 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
2485 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
2486 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
2487 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
2488 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
2489 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
2490 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
2491 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
2492 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
2493 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
2494 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
2495 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
2496 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
2497 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
2498 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
2499 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
2500 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
2501 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
2502 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
2503 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
2504 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
2505 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
2506 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
2507 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
2508 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
2509 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
2510 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
2511 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
2512 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
2513 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
2514 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
2515 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
2516 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
2517 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
2518 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
2519 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
2520 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
2521 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
2522 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
2523 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
2524 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
2525 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
2526 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
2527 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
2528 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
2529 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
2530 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
2531 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
2532 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
2533 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
2534 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
2535 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
2536 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
2537 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
2538 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
2539 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
2540 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
2541 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
2542 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
2543 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
2544 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
2545 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
2546 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
2547 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
2548 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
2549 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
2550 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
2551 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
2552 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
2553 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
2554 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
2555 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
2556 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
2557 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
2558 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
2559 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
2560 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
2561 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
2562 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
2563 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
2564 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
2565 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
2566 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
2567 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
2568 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
2569 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
2570 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
2571 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
2572 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
2573 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
2574 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
2575 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
2576 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
2577 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
2578 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
2579 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
2580 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
2581 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
2582 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
2583 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
2584 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
2585 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
2586 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
2587 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
2588 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
2589 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
2590 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
2591 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
2592 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
2593 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
2594 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
2595 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
2596 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
2597 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
2598 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
2599 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
2600 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
2601 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
2602 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
2603 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
2604 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
2605 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
2606 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
2607 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
2608 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
2609 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
2610 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
2611 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
2612 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
2613 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
2614 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
2615 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
2616 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
2617 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
2618 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
2619 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
2620 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
2621 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
2622 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
2623 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
2624 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
2625 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
2626 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
2627 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
2628 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
2629 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
2630 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
2631 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
2632 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
2633 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
2634 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
2635 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
2636 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
2637 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
2638 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
2639 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
2640 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
2641 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
2642 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
2643 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
2644 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
2645 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
2646 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
2647 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
2648 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
2649 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
2650 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
2651 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
2652 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
2653 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
2654 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
2655 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
2656 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
2657 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
2658 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
2659 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
2660 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
2661 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
2662 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
2663 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
2664 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
2665 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
2666 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
2667 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
2668 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
2669 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
2670 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
2671 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
2672 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
2673 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
2674 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
2675 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
2676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
2677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
2678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
2679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
2680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
2681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
2682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
2683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
2684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
2685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
2686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
2687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
2688 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
2689 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
2690 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
2691 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
2692 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
2693 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
2694 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
2695 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
2696 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
2697 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
2698 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
2699 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
2700 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
2701 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
2702 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
2703 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
2704 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
2705 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
2706 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
2707 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
2708 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
2709 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
2710 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
2711 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
2712 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
2713 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
2714 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
2715 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
2716 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
2717 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
2718 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
2719 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
2720 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
2721 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
2722 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
2723 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
2724 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
2725 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
2726 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
2727 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
2728 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
2729 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
2730 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
2731 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
2732 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
2733 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
2734 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
2735 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
2736 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
2737 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
2738 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
2739 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
2740 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
2741 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
2742 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
2743 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
2744 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
2745 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
2746 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
2747 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
2748 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
2749 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
2750 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
2751 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
2752 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
2753 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
2754 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
2755 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
2756 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
2757 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
2758 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
2759 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
2760 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
2761 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
2762 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
2763 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
2764 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
2765 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
2766 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
2767 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
2768 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
2769 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
2770 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
2771 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
2772 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
2773 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
2774 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
2775 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
2776 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
2777 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
2778 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
2779 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
2780 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
2781 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
2782 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
2783 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
2784 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
2785 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
2786 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
2787 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
2788 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
2789 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
2790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
2791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
2792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
2793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
2794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
2795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
2796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
2797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
2798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
2799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
2800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
2801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
2802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
2803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
2804 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
2805 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
2806 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
2807 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
2808 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
2809 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
2810 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
2811 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
2812 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
2813 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
2814 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
2815 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
2816 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
2817 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
2818 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
2819 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
2820 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
2821 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
2822 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
2823 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
2824 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
2825 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
2826 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
2827 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
2828 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
2829 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
2830 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
2831 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
2832 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
2833 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
2834 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
2835 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
2836 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
2837 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
2838 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
2839 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
2840 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
2841 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
2842 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
2843 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
2844 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
2845 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
2846 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
2847 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
2848 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
2849 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
2850 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
2851 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
2852 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
2853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
2854 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
2855 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
2856 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
2857 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
2858 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
2859 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
2860 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
2861 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
2862 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
2863 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
2864 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
2865 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
2866 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
2867 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
2868 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
2869 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
2870 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
2871 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
2872 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
2873 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
2874 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
2875 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
2876 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
2877 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
2878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
2879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
2880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
2881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
2882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
2883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
2884 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
2885 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
2886 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
2887 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
2888 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
2889 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
2890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
2891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
2892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
2893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
2894 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
2895 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
2896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
2897 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
2898 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
2899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
2900 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
2901 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
2902 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
2903 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
2904 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
2905 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
2906 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
2907 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
2908 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
2909 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
2910 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
2911 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
2912 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
2913 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
2914 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
2915 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
2916 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
2917 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
2918 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
2919 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
2920 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
2921 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
2922 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
2923 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
2924 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
2925 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
2926 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
2927 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
2928 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
2929 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
2930 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
2931 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
2932 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
2933 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
2934 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
2935 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
2936 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
2937 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
2938 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
2939 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
2940 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
2941 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
2942 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
2943 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
2944 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
2945 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
2946 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
2947 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
2948 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
2949 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
2950 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
2951 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
2952 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
2953 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
2954 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
2955 D3D12_MESSAGE_ID_END_EVENT = 1015,
2956 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
2957 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
2958 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
2959 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
2960 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
2961 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
2962 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
2963 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
2964 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
2965 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
2966 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
2967 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
2968 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
2969 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
2970 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
2971 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
2972 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
2973 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
2974 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
2975 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
2976 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
2977 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
2978 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
2979 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
2980 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
2981 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
2982 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
2983 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
2984 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
2985 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
2986 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
2987 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
2988 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
2989 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
2990 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
2991 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
2992 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
2993 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
2994 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
2995 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
2996 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
2997 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
2998 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
2999 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
3000 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
3001 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
3002 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
3003 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
3004 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
3005 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
3006 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
3007 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
3008 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
3009 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
3010 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
3011 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
3012 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
3013 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
3014 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
3015 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
3016 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
3017 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
3018 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
3019 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
3020 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
3021 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
3022 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
3023 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
3024 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
3025 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
3026 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
3027 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
3028 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
3029 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
3030 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
3031 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
3032 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
3033 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
3034 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
3035 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
3036 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
3037 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
3038 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
3039 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
3040 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
3041 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
3042 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
3043 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
3044 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
3045 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
3046 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
3047 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
3048 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
3049 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
3050 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
3051 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
3052 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
3053 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
3054 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
3055 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
3056 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
3057 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
3058 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
3059 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
3060 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
3061 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
3062 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
3063 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
3064 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
3065 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
3066 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
3067 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
3068 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
3069 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
3070 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
3071 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
3072 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
3073 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
3074 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
3075 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
3076 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
3077 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
3078 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
3079 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
3080 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
3081 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
3082 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
3083 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
3084 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
3085 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
3086 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
3087 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
3088 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
3089 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
3090 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
3091 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
3092 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
3093 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
3094 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
3095 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
3096 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
3097 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
3098 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
3099 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
3100 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
3101 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
3102 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
3103 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
3104 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
3105 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
3106 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
3107 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
3108 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
3109 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
3110 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
3111 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
3112 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
3113 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
3114 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
3115 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
3116 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
3117 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
3118 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
3119 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
3120 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
3121 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
3122 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
3123 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
3124 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
3125 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
3126 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
3127 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
3128 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
3129 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
3130 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
3131 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
3132 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
3133 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
3134 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
3135 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
3136 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
3137 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
3138 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
3139 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
3140 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
3141 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
3142 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
3143 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
3144 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
3145 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
3146 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
3147 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
3148 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
3149 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
3150 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
3151 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
3152 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
3153 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
3154 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
3155 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
3156 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
3157 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
3158 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
3159 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
3160 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
3161 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
3162 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
3163 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
3164 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
3165 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
3166 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
3167 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
3168 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
3169 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
3170 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
3171 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
3172 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
3173 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
3174 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
3175 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
3176 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
3177 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
3178 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
3179 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
3180 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
3181 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
3182 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
3183 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
3184 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
3185 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
3186 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
3187 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
3188 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
3189 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
3190 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
3191 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
3192 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
3193 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
3194 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
3195 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
3196 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
3197 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
3198 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
3199 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
3200 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
3201 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
3202 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
3203 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
3204 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
3205 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
3206 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
3207 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
3208 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
3209 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
3210 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
3211 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
3212 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
3213 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
3214 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
3215 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
3216 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
3217 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
3218 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
3219 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
3220 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
3221 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
3222 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
3223 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
3224 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
3225 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
3226 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
3227 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
3228 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
3229 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
3230 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
3231 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
3232 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
3233 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
3234 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
3235 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
3236 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
3237 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
3238 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
3239 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
3240 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
3241 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
3242 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
3243 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
3244 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
3245 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
3246 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
3247 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
3248 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
3249 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
3250 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
3251 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
3252 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
3253 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
3254 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
3255 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
3256 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
3257 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
3258 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
3259 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
3260 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
3261 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
3262 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
3263 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
3264 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
3265 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
3266 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
3267 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
3268 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
3269 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
3270 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
3271 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
3272 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
3273 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
3274 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
3275 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
3276 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
3277 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
3278 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
3279 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
3280 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
3281 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
3282 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
3283 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
3284 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
3285 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
3286 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
3287 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
3288 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
3289 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
3290 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
3291 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
3292 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
3293 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
3294 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
3295 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
3296 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
3297 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
3298 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
3299 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
3300 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
3301 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
3302 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
3303 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
3304 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
3305 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
3306 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
3307 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
3308 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
3309 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
3310 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
3311 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
3312 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
3313 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
3314 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
3315 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
3316 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
3317 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
3318 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
3319 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
3320 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
3321 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
3322 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
3323 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
3324 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
3325 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
3326 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
3327 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
3328 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
3329 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
3330 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
3331 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
3332 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
3333 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
3334 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
3335 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
3336 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
3337 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
3338 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
3339 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
3340 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
3341 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
3342 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
3343 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
3344 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
3345 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
3346 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
3347 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
3348 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
3349 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
3350 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
3351 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
3352 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
3353 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
3354 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
3355 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
3356 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
3357 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
3358 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
3359 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
3360 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
3361 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
3362 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
3363 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
3364 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
3365 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
3366 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442
3367 } D3D12_MESSAGE_ID;
3368
3369typedef struct D3D12_MESSAGE
3370 {
3371 D3D12_MESSAGE_CATEGORY Category;
3372 D3D12_MESSAGE_SEVERITY Severity;
3373 D3D12_MESSAGE_ID ID;
3374 _Field_size_(DescriptionByteLength) const char *pDescription;
3375 SIZE_T DescriptionByteLength;
3376 } D3D12_MESSAGE;
3377
3378typedef struct D3D12_INFO_QUEUE_FILTER_DESC
3379 {
3380 UINT NumCategories;
3381 _Field_size_(NumCategories) D3D12_MESSAGE_CATEGORY *pCategoryList;
3382 UINT NumSeverities;
3383 _Field_size_(NumSeverities) D3D12_MESSAGE_SEVERITY *pSeverityList;
3384 UINT NumIDs;
3385 _Field_size_(NumIDs) D3D12_MESSAGE_ID *pIDList;
3386 } D3D12_INFO_QUEUE_FILTER_DESC;
3387
3388typedef struct D3D12_INFO_QUEUE_FILTER
3389 {
3390 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
3391 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
3392 } D3D12_INFO_QUEUE_FILTER;
3393
3394#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024
3395
3396
3397extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_c_ifspec;
3398extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0018_v0_0_s_ifspec;
3399
3400#ifndef __ID3D12InfoQueue_INTERFACE_DEFINED__
3401#define __ID3D12InfoQueue_INTERFACE_DEFINED__
3402
3403/* interface ID3D12InfoQueue */
3404/* [unique][local][object][uuid] */
3405
3406
3407EXTERN_C const IID IID_ID3D12InfoQueue;
3408
3409#if defined(__cplusplus) && !defined(CINTERFACE)
3410
3411 MIDL_INTERFACE("0742a90b-c387-483f-b946-30a7e4e61458")
3412 ID3D12InfoQueue : public IUnknown
3413 {
3414 public:
3415 virtual HRESULT STDMETHODCALLTYPE SetMessageCountLimit(
3416 _In_ UINT64 MessageCountLimit) = 0;
3417
3418 virtual void STDMETHODCALLTYPE ClearStoredMessages( void) = 0;
3419
3420 virtual HRESULT STDMETHODCALLTYPE GetMessage(
3421 _In_ UINT64 MessageIndex,
3422 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3423 _Inout_ SIZE_T *pMessageByteLength) = 0;
3424
3425 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesAllowedByStorageFilter( void) = 0;
3426
3427 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDeniedByStorageFilter( void) = 0;
3428
3429 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessages( void) = 0;
3430
3431 virtual UINT64 STDMETHODCALLTYPE GetNumStoredMessagesAllowedByRetrievalFilter( void) = 0;
3432
3433 virtual UINT64 STDMETHODCALLTYPE GetNumMessagesDiscardedByMessageCountLimit( void) = 0;
3434
3435 virtual UINT64 STDMETHODCALLTYPE GetMessageCountLimit( void) = 0;
3436
3437 virtual HRESULT STDMETHODCALLTYPE AddStorageFilterEntries(
3438 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3439
3440 virtual HRESULT STDMETHODCALLTYPE GetStorageFilter(
3441 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3442 _Inout_ SIZE_T *pFilterByteLength) = 0;
3443
3444 virtual void STDMETHODCALLTYPE ClearStorageFilter( void) = 0;
3445
3446 virtual HRESULT STDMETHODCALLTYPE PushEmptyStorageFilter( void) = 0;
3447
3448 virtual HRESULT STDMETHODCALLTYPE PushCopyOfStorageFilter( void) = 0;
3449
3450 virtual HRESULT STDMETHODCALLTYPE PushStorageFilter(
3451 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3452
3453 virtual void STDMETHODCALLTYPE PopStorageFilter( void) = 0;
3454
3455 virtual UINT STDMETHODCALLTYPE GetStorageFilterStackSize( void) = 0;
3456
3457 virtual HRESULT STDMETHODCALLTYPE AddRetrievalFilterEntries(
3458 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3459
3460 virtual HRESULT STDMETHODCALLTYPE GetRetrievalFilter(
3461 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3462 _Inout_ SIZE_T *pFilterByteLength) = 0;
3463
3464 virtual void STDMETHODCALLTYPE ClearRetrievalFilter( void) = 0;
3465
3466 virtual HRESULT STDMETHODCALLTYPE PushEmptyRetrievalFilter( void) = 0;
3467
3468 virtual HRESULT STDMETHODCALLTYPE PushCopyOfRetrievalFilter( void) = 0;
3469
3470 virtual HRESULT STDMETHODCALLTYPE PushRetrievalFilter(
3471 _In_ D3D12_INFO_QUEUE_FILTER *pFilter) = 0;
3472
3473 virtual void STDMETHODCALLTYPE PopRetrievalFilter( void) = 0;
3474
3475 virtual UINT STDMETHODCALLTYPE GetRetrievalFilterStackSize( void) = 0;
3476
3477 virtual HRESULT STDMETHODCALLTYPE AddMessage(
3478 _In_ D3D12_MESSAGE_CATEGORY Category,
3479 _In_ D3D12_MESSAGE_SEVERITY Severity,
3480 _In_ D3D12_MESSAGE_ID ID,
3481 _In_ LPCSTR pDescription) = 0;
3482
3483 virtual HRESULT STDMETHODCALLTYPE AddApplicationMessage(
3484 _In_ D3D12_MESSAGE_SEVERITY Severity,
3485 _In_ LPCSTR pDescription) = 0;
3486
3487 virtual HRESULT STDMETHODCALLTYPE SetBreakOnCategory(
3488 _In_ D3D12_MESSAGE_CATEGORY Category,
3489 _In_ BOOL bEnable) = 0;
3490
3491 virtual HRESULT STDMETHODCALLTYPE SetBreakOnSeverity(
3492 _In_ D3D12_MESSAGE_SEVERITY Severity,
3493 _In_ BOOL bEnable) = 0;
3494
3495 virtual HRESULT STDMETHODCALLTYPE SetBreakOnID(
3496 _In_ D3D12_MESSAGE_ID ID,
3497 _In_ BOOL bEnable) = 0;
3498
3499 virtual BOOL STDMETHODCALLTYPE GetBreakOnCategory(
3500 _In_ D3D12_MESSAGE_CATEGORY Category) = 0;
3501
3502 virtual BOOL STDMETHODCALLTYPE GetBreakOnSeverity(
3503 _In_ D3D12_MESSAGE_SEVERITY Severity) = 0;
3504
3505 virtual BOOL STDMETHODCALLTYPE GetBreakOnID(
3506 _In_ D3D12_MESSAGE_ID ID) = 0;
3507
3508 virtual void STDMETHODCALLTYPE SetMuteDebugOutput(
3509 _In_ BOOL bMute) = 0;
3510
3511 virtual BOOL STDMETHODCALLTYPE GetMuteDebugOutput( void) = 0;
3512
3513 };
3514
3515
3516#else /* C style interface */
3517
3518 typedef struct ID3D12InfoQueueVtbl
3519 {
3520 BEGIN_INTERFACE
3521
3522 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3523 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3524 ID3D12InfoQueue * This,
3525 REFIID riid,
3526 _COM_Outptr_ void **ppvObject);
3527
3528 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3529 ULONG ( STDMETHODCALLTYPE *AddRef )(
3530 ID3D12InfoQueue * This);
3531
3532 DECLSPEC_XFGVIRT(IUnknown, Release)
3533 ULONG ( STDMETHODCALLTYPE *Release )(
3534 ID3D12InfoQueue * This);
3535
3536 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3537 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3538 ID3D12InfoQueue * This,
3539 _In_ UINT64 MessageCountLimit);
3540
3541 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3542 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3543 ID3D12InfoQueue * This);
3544
3545 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3546 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3547 ID3D12InfoQueue * This,
3548 _In_ UINT64 MessageIndex,
3549 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3550 _Inout_ SIZE_T *pMessageByteLength);
3551
3552 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3553 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3554 ID3D12InfoQueue * This);
3555
3556 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3557 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3558 ID3D12InfoQueue * This);
3559
3560 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3561 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3562 ID3D12InfoQueue * This);
3563
3564 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3565 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3566 ID3D12InfoQueue * This);
3567
3568 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3569 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3570 ID3D12InfoQueue * This);
3571
3572 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3573 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3574 ID3D12InfoQueue * This);
3575
3576 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3577 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3578 ID3D12InfoQueue * This,
3579 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3580
3581 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3582 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3583 ID3D12InfoQueue * This,
3584 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3585 _Inout_ SIZE_T *pFilterByteLength);
3586
3587 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3588 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3589 ID3D12InfoQueue * This);
3590
3591 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3592 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3593 ID3D12InfoQueue * This);
3594
3595 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3596 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3597 ID3D12InfoQueue * This);
3598
3599 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3600 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3601 ID3D12InfoQueue * This,
3602 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3603
3604 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3605 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3606 ID3D12InfoQueue * This);
3607
3608 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3609 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3610 ID3D12InfoQueue * This);
3611
3612 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3613 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3614 ID3D12InfoQueue * This,
3615 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3616
3617 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3618 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3619 ID3D12InfoQueue * This,
3620 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3621 _Inout_ SIZE_T *pFilterByteLength);
3622
3623 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
3624 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
3625 ID3D12InfoQueue * This);
3626
3627 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
3628 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
3629 ID3D12InfoQueue * This);
3630
3631 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
3632 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
3633 ID3D12InfoQueue * This);
3634
3635 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
3636 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
3637 ID3D12InfoQueue * This,
3638 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3639
3640 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
3641 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
3642 ID3D12InfoQueue * This);
3643
3644 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
3645 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
3646 ID3D12InfoQueue * This);
3647
3648 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
3649 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
3650 ID3D12InfoQueue * This,
3651 _In_ D3D12_MESSAGE_CATEGORY Category,
3652 _In_ D3D12_MESSAGE_SEVERITY Severity,
3653 _In_ D3D12_MESSAGE_ID ID,
3654 _In_ LPCSTR pDescription);
3655
3656 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
3657 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
3658 ID3D12InfoQueue * This,
3659 _In_ D3D12_MESSAGE_SEVERITY Severity,
3660 _In_ LPCSTR pDescription);
3661
3662 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
3663 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
3664 ID3D12InfoQueue * This,
3665 _In_ D3D12_MESSAGE_CATEGORY Category,
3666 _In_ BOOL bEnable);
3667
3668 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
3669 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
3670 ID3D12InfoQueue * This,
3671 _In_ D3D12_MESSAGE_SEVERITY Severity,
3672 _In_ BOOL bEnable);
3673
3674 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
3675 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
3676 ID3D12InfoQueue * This,
3677 _In_ D3D12_MESSAGE_ID ID,
3678 _In_ BOOL bEnable);
3679
3680 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
3681 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
3682 ID3D12InfoQueue * This,
3683 _In_ D3D12_MESSAGE_CATEGORY Category);
3684
3685 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
3686 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
3687 ID3D12InfoQueue * This,
3688 _In_ D3D12_MESSAGE_SEVERITY Severity);
3689
3690 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
3691 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
3692 ID3D12InfoQueue * This,
3693 _In_ D3D12_MESSAGE_ID ID);
3694
3695 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
3696 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
3697 ID3D12InfoQueue * This,
3698 _In_ BOOL bMute);
3699
3700 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
3701 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
3702 ID3D12InfoQueue * This);
3703
3704 END_INTERFACE
3705 } ID3D12InfoQueueVtbl;
3706
3707 interface ID3D12InfoQueue
3708 {
3709 CONST_VTBL struct ID3D12InfoQueueVtbl *lpVtbl;
3710 };
3711
3712
3713
3714#ifdef COBJMACROS
3715
3716
3717#define ID3D12InfoQueue_QueryInterface(This,riid,ppvObject) \
3718 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3719
3720#define ID3D12InfoQueue_AddRef(This) \
3721 ( (This)->lpVtbl -> AddRef(This) )
3722
3723#define ID3D12InfoQueue_Release(This) \
3724 ( (This)->lpVtbl -> Release(This) )
3725
3726
3727#define ID3D12InfoQueue_SetMessageCountLimit(This,MessageCountLimit) \
3728 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
3729
3730#define ID3D12InfoQueue_ClearStoredMessages(This) \
3731 ( (This)->lpVtbl -> ClearStoredMessages(This) )
3732
3733#define ID3D12InfoQueue_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
3734 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
3735
3736#define ID3D12InfoQueue_GetNumMessagesAllowedByStorageFilter(This) \
3737 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
3738
3739#define ID3D12InfoQueue_GetNumMessagesDeniedByStorageFilter(This) \
3740 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
3741
3742#define ID3D12InfoQueue_GetNumStoredMessages(This) \
3743 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
3744
3745#define ID3D12InfoQueue_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
3746 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
3747
3748#define ID3D12InfoQueue_GetNumMessagesDiscardedByMessageCountLimit(This) \
3749 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
3750
3751#define ID3D12InfoQueue_GetMessageCountLimit(This) \
3752 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
3753
3754#define ID3D12InfoQueue_AddStorageFilterEntries(This,pFilter) \
3755 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
3756
3757#define ID3D12InfoQueue_GetStorageFilter(This,pFilter,pFilterByteLength) \
3758 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
3759
3760#define ID3D12InfoQueue_ClearStorageFilter(This) \
3761 ( (This)->lpVtbl -> ClearStorageFilter(This) )
3762
3763#define ID3D12InfoQueue_PushEmptyStorageFilter(This) \
3764 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
3765
3766#define ID3D12InfoQueue_PushCopyOfStorageFilter(This) \
3767 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
3768
3769#define ID3D12InfoQueue_PushStorageFilter(This,pFilter) \
3770 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
3771
3772#define ID3D12InfoQueue_PopStorageFilter(This) \
3773 ( (This)->lpVtbl -> PopStorageFilter(This) )
3774
3775#define ID3D12InfoQueue_GetStorageFilterStackSize(This) \
3776 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
3777
3778#define ID3D12InfoQueue_AddRetrievalFilterEntries(This,pFilter) \
3779 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
3780
3781#define ID3D12InfoQueue_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
3782 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
3783
3784#define ID3D12InfoQueue_ClearRetrievalFilter(This) \
3785 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
3786
3787#define ID3D12InfoQueue_PushEmptyRetrievalFilter(This) \
3788 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
3789
3790#define ID3D12InfoQueue_PushCopyOfRetrievalFilter(This) \
3791 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
3792
3793#define ID3D12InfoQueue_PushRetrievalFilter(This,pFilter) \
3794 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
3795
3796#define ID3D12InfoQueue_PopRetrievalFilter(This) \
3797 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
3798
3799#define ID3D12InfoQueue_GetRetrievalFilterStackSize(This) \
3800 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
3801
3802#define ID3D12InfoQueue_AddMessage(This,Category,Severity,ID,pDescription) \
3803 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
3804
3805#define ID3D12InfoQueue_AddApplicationMessage(This,Severity,pDescription) \
3806 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
3807
3808#define ID3D12InfoQueue_SetBreakOnCategory(This,Category,bEnable) \
3809 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
3810
3811#define ID3D12InfoQueue_SetBreakOnSeverity(This,Severity,bEnable) \
3812 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
3813
3814#define ID3D12InfoQueue_SetBreakOnID(This,ID,bEnable) \
3815 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
3816
3817#define ID3D12InfoQueue_GetBreakOnCategory(This,Category) \
3818 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
3819
3820#define ID3D12InfoQueue_GetBreakOnSeverity(This,Severity) \
3821 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
3822
3823#define ID3D12InfoQueue_GetBreakOnID(This,ID) \
3824 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
3825
3826#define ID3D12InfoQueue_SetMuteDebugOutput(This,bMute) \
3827 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
3828
3829#define ID3D12InfoQueue_GetMuteDebugOutput(This) \
3830 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
3831
3832#endif /* COBJMACROS */
3833
3834
3835#endif /* C style interface */
3836
3837
3838
3839
3840#endif /* __ID3D12InfoQueue_INTERFACE_DEFINED__ */
3841
3842
3843/* interface __MIDL_itf_d3d12sdklayers_0000_0019 */
3844/* [local] */
3845
3846typedef
3847enum D3D12_MESSAGE_CALLBACK_FLAGS
3848 {
3849 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0,
3850 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x1
3851 } D3D12_MESSAGE_CALLBACK_FLAGS;
3852
3853DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)
3854typedef void ( __stdcall *D3D12MessageFunc )(
3855 D3D12_MESSAGE_CATEGORY Category,
3856 D3D12_MESSAGE_SEVERITY Severity,
3857 D3D12_MESSAGE_ID ID,
3858 LPCSTR pDescription,
3859 void *pContext);
3860
3861
3862
3863extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_c_ifspec;
3864extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0019_v0_0_s_ifspec;
3865
3866#ifndef __ID3D12InfoQueue1_INTERFACE_DEFINED__
3867#define __ID3D12InfoQueue1_INTERFACE_DEFINED__
3868
3869/* interface ID3D12InfoQueue1 */
3870/* [unique][local][object][uuid] */
3871
3872
3873EXTERN_C const IID IID_ID3D12InfoQueue1;
3874
3875#if defined(__cplusplus) && !defined(CINTERFACE)
3876
3877 MIDL_INTERFACE("2852dd88-b484-4c0c-b6b1-67168500e600")
3878 ID3D12InfoQueue1 : public ID3D12InfoQueue
3879 {
3880 public:
3881 virtual HRESULT STDMETHODCALLTYPE RegisterMessageCallback(
3882 _In_ D3D12MessageFunc CallbackFunc,
3883 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
3884 _Inout_ void *pContext,
3885 _Inout_ DWORD *pCallbackCookie) = 0;
3886
3887 virtual HRESULT STDMETHODCALLTYPE UnregisterMessageCallback(
3888 _In_ DWORD CallbackCookie) = 0;
3889
3890 };
3891
3892
3893#else /* C style interface */
3894
3895 typedef struct ID3D12InfoQueue1Vtbl
3896 {
3897 BEGIN_INTERFACE
3898
3899 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3900 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3901 ID3D12InfoQueue1 * This,
3902 REFIID riid,
3903 _COM_Outptr_ void **ppvObject);
3904
3905 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3906 ULONG ( STDMETHODCALLTYPE *AddRef )(
3907 ID3D12InfoQueue1 * This);
3908
3909 DECLSPEC_XFGVIRT(IUnknown, Release)
3910 ULONG ( STDMETHODCALLTYPE *Release )(
3911 ID3D12InfoQueue1 * This);
3912
3913 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMessageCountLimit)
3914 HRESULT ( STDMETHODCALLTYPE *SetMessageCountLimit )(
3915 ID3D12InfoQueue1 * This,
3916 _In_ UINT64 MessageCountLimit);
3917
3918 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStoredMessages)
3919 void ( STDMETHODCALLTYPE *ClearStoredMessages )(
3920 ID3D12InfoQueue1 * This);
3921
3922 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessage)
3923 HRESULT ( STDMETHODCALLTYPE *GetMessage )(
3924 ID3D12InfoQueue1 * This,
3925 _In_ UINT64 MessageIndex,
3926 _Out_writes_bytes_opt_(*pMessageByteLength) D3D12_MESSAGE *pMessage,
3927 _Inout_ SIZE_T *pMessageByteLength);
3928
3929 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesAllowedByStorageFilter)
3930 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesAllowedByStorageFilter )(
3931 ID3D12InfoQueue1 * This);
3932
3933 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDeniedByStorageFilter)
3934 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDeniedByStorageFilter )(
3935 ID3D12InfoQueue1 * This);
3936
3937 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessages)
3938 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessages )(
3939 ID3D12InfoQueue1 * This);
3940
3941 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumStoredMessagesAllowedByRetrievalFilter)
3942 UINT64 ( STDMETHODCALLTYPE *GetNumStoredMessagesAllowedByRetrievalFilter )(
3943 ID3D12InfoQueue1 * This);
3944
3945 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetNumMessagesDiscardedByMessageCountLimit)
3946 UINT64 ( STDMETHODCALLTYPE *GetNumMessagesDiscardedByMessageCountLimit )(
3947 ID3D12InfoQueue1 * This);
3948
3949 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMessageCountLimit)
3950 UINT64 ( STDMETHODCALLTYPE *GetMessageCountLimit )(
3951 ID3D12InfoQueue1 * This);
3952
3953 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddStorageFilterEntries)
3954 HRESULT ( STDMETHODCALLTYPE *AddStorageFilterEntries )(
3955 ID3D12InfoQueue1 * This,
3956 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3957
3958 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilter)
3959 HRESULT ( STDMETHODCALLTYPE *GetStorageFilter )(
3960 ID3D12InfoQueue1 * This,
3961 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3962 _Inout_ SIZE_T *pFilterByteLength);
3963
3964 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearStorageFilter)
3965 void ( STDMETHODCALLTYPE *ClearStorageFilter )(
3966 ID3D12InfoQueue1 * This);
3967
3968 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyStorageFilter)
3969 HRESULT ( STDMETHODCALLTYPE *PushEmptyStorageFilter )(
3970 ID3D12InfoQueue1 * This);
3971
3972 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfStorageFilter)
3973 HRESULT ( STDMETHODCALLTYPE *PushCopyOfStorageFilter )(
3974 ID3D12InfoQueue1 * This);
3975
3976 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushStorageFilter)
3977 HRESULT ( STDMETHODCALLTYPE *PushStorageFilter )(
3978 ID3D12InfoQueue1 * This,
3979 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3980
3981 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopStorageFilter)
3982 void ( STDMETHODCALLTYPE *PopStorageFilter )(
3983 ID3D12InfoQueue1 * This);
3984
3985 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetStorageFilterStackSize)
3986 UINT ( STDMETHODCALLTYPE *GetStorageFilterStackSize )(
3987 ID3D12InfoQueue1 * This);
3988
3989 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddRetrievalFilterEntries)
3990 HRESULT ( STDMETHODCALLTYPE *AddRetrievalFilterEntries )(
3991 ID3D12InfoQueue1 * This,
3992 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
3993
3994 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilter)
3995 HRESULT ( STDMETHODCALLTYPE *GetRetrievalFilter )(
3996 ID3D12InfoQueue1 * This,
3997 _Out_writes_bytes_opt_(*pFilterByteLength) D3D12_INFO_QUEUE_FILTER *pFilter,
3998 _Inout_ SIZE_T *pFilterByteLength);
3999
4000 DECLSPEC_XFGVIRT(ID3D12InfoQueue, ClearRetrievalFilter)
4001 void ( STDMETHODCALLTYPE *ClearRetrievalFilter )(
4002 ID3D12InfoQueue1 * This);
4003
4004 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushEmptyRetrievalFilter)
4005 HRESULT ( STDMETHODCALLTYPE *PushEmptyRetrievalFilter )(
4006 ID3D12InfoQueue1 * This);
4007
4008 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushCopyOfRetrievalFilter)
4009 HRESULT ( STDMETHODCALLTYPE *PushCopyOfRetrievalFilter )(
4010 ID3D12InfoQueue1 * This);
4011
4012 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PushRetrievalFilter)
4013 HRESULT ( STDMETHODCALLTYPE *PushRetrievalFilter )(
4014 ID3D12InfoQueue1 * This,
4015 _In_ D3D12_INFO_QUEUE_FILTER *pFilter);
4016
4017 DECLSPEC_XFGVIRT(ID3D12InfoQueue, PopRetrievalFilter)
4018 void ( STDMETHODCALLTYPE *PopRetrievalFilter )(
4019 ID3D12InfoQueue1 * This);
4020
4021 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetRetrievalFilterStackSize)
4022 UINT ( STDMETHODCALLTYPE *GetRetrievalFilterStackSize )(
4023 ID3D12InfoQueue1 * This);
4024
4025 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddMessage)
4026 HRESULT ( STDMETHODCALLTYPE *AddMessage )(
4027 ID3D12InfoQueue1 * This,
4028 _In_ D3D12_MESSAGE_CATEGORY Category,
4029 _In_ D3D12_MESSAGE_SEVERITY Severity,
4030 _In_ D3D12_MESSAGE_ID ID,
4031 _In_ LPCSTR pDescription);
4032
4033 DECLSPEC_XFGVIRT(ID3D12InfoQueue, AddApplicationMessage)
4034 HRESULT ( STDMETHODCALLTYPE *AddApplicationMessage )(
4035 ID3D12InfoQueue1 * This,
4036 _In_ D3D12_MESSAGE_SEVERITY Severity,
4037 _In_ LPCSTR pDescription);
4038
4039 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnCategory)
4040 HRESULT ( STDMETHODCALLTYPE *SetBreakOnCategory )(
4041 ID3D12InfoQueue1 * This,
4042 _In_ D3D12_MESSAGE_CATEGORY Category,
4043 _In_ BOOL bEnable);
4044
4045 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnSeverity)
4046 HRESULT ( STDMETHODCALLTYPE *SetBreakOnSeverity )(
4047 ID3D12InfoQueue1 * This,
4048 _In_ D3D12_MESSAGE_SEVERITY Severity,
4049 _In_ BOOL bEnable);
4050
4051 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetBreakOnID)
4052 HRESULT ( STDMETHODCALLTYPE *SetBreakOnID )(
4053 ID3D12InfoQueue1 * This,
4054 _In_ D3D12_MESSAGE_ID ID,
4055 _In_ BOOL bEnable);
4056
4057 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnCategory)
4058 BOOL ( STDMETHODCALLTYPE *GetBreakOnCategory )(
4059 ID3D12InfoQueue1 * This,
4060 _In_ D3D12_MESSAGE_CATEGORY Category);
4061
4062 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnSeverity)
4063 BOOL ( STDMETHODCALLTYPE *GetBreakOnSeverity )(
4064 ID3D12InfoQueue1 * This,
4065 _In_ D3D12_MESSAGE_SEVERITY Severity);
4066
4067 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetBreakOnID)
4068 BOOL ( STDMETHODCALLTYPE *GetBreakOnID )(
4069 ID3D12InfoQueue1 * This,
4070 _In_ D3D12_MESSAGE_ID ID);
4071
4072 DECLSPEC_XFGVIRT(ID3D12InfoQueue, SetMuteDebugOutput)
4073 void ( STDMETHODCALLTYPE *SetMuteDebugOutput )(
4074 ID3D12InfoQueue1 * This,
4075 _In_ BOOL bMute);
4076
4077 DECLSPEC_XFGVIRT(ID3D12InfoQueue, GetMuteDebugOutput)
4078 BOOL ( STDMETHODCALLTYPE *GetMuteDebugOutput )(
4079 ID3D12InfoQueue1 * This);
4080
4081 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, RegisterMessageCallback)
4082 HRESULT ( STDMETHODCALLTYPE *RegisterMessageCallback )(
4083 ID3D12InfoQueue1 * This,
4084 _In_ D3D12MessageFunc CallbackFunc,
4085 _In_ D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
4086 _Inout_ void *pContext,
4087 _Inout_ DWORD *pCallbackCookie);
4088
4089 DECLSPEC_XFGVIRT(ID3D12InfoQueue1, UnregisterMessageCallback)
4090 HRESULT ( STDMETHODCALLTYPE *UnregisterMessageCallback )(
4091 ID3D12InfoQueue1 * This,
4092 _In_ DWORD CallbackCookie);
4093
4094 END_INTERFACE
4095 } ID3D12InfoQueue1Vtbl;
4096
4097 interface ID3D12InfoQueue1
4098 {
4099 CONST_VTBL struct ID3D12InfoQueue1Vtbl *lpVtbl;
4100 };
4101
4102
4103
4104#ifdef COBJMACROS
4105
4106
4107#define ID3D12InfoQueue1_QueryInterface(This,riid,ppvObject) \
4108 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4109
4110#define ID3D12InfoQueue1_AddRef(This) \
4111 ( (This)->lpVtbl -> AddRef(This) )
4112
4113#define ID3D12InfoQueue1_Release(This) \
4114 ( (This)->lpVtbl -> Release(This) )
4115
4116
4117#define ID3D12InfoQueue1_SetMessageCountLimit(This,MessageCountLimit) \
4118 ( (This)->lpVtbl -> SetMessageCountLimit(This,MessageCountLimit) )
4119
4120#define ID3D12InfoQueue1_ClearStoredMessages(This) \
4121 ( (This)->lpVtbl -> ClearStoredMessages(This) )
4122
4123#define ID3D12InfoQueue1_GetMessage(This,MessageIndex,pMessage,pMessageByteLength) \
4124 ( (This)->lpVtbl -> GetMessage(This,MessageIndex,pMessage,pMessageByteLength) )
4125
4126#define ID3D12InfoQueue1_GetNumMessagesAllowedByStorageFilter(This) \
4127 ( (This)->lpVtbl -> GetNumMessagesAllowedByStorageFilter(This) )
4128
4129#define ID3D12InfoQueue1_GetNumMessagesDeniedByStorageFilter(This) \
4130 ( (This)->lpVtbl -> GetNumMessagesDeniedByStorageFilter(This) )
4131
4132#define ID3D12InfoQueue1_GetNumStoredMessages(This) \
4133 ( (This)->lpVtbl -> GetNumStoredMessages(This) )
4134
4135#define ID3D12InfoQueue1_GetNumStoredMessagesAllowedByRetrievalFilter(This) \
4136 ( (This)->lpVtbl -> GetNumStoredMessagesAllowedByRetrievalFilter(This) )
4137
4138#define ID3D12InfoQueue1_GetNumMessagesDiscardedByMessageCountLimit(This) \
4139 ( (This)->lpVtbl -> GetNumMessagesDiscardedByMessageCountLimit(This) )
4140
4141#define ID3D12InfoQueue1_GetMessageCountLimit(This) \
4142 ( (This)->lpVtbl -> GetMessageCountLimit(This) )
4143
4144#define ID3D12InfoQueue1_AddStorageFilterEntries(This,pFilter) \
4145 ( (This)->lpVtbl -> AddStorageFilterEntries(This,pFilter) )
4146
4147#define ID3D12InfoQueue1_GetStorageFilter(This,pFilter,pFilterByteLength) \
4148 ( (This)->lpVtbl -> GetStorageFilter(This,pFilter,pFilterByteLength) )
4149
4150#define ID3D12InfoQueue1_ClearStorageFilter(This) \
4151 ( (This)->lpVtbl -> ClearStorageFilter(This) )
4152
4153#define ID3D12InfoQueue1_PushEmptyStorageFilter(This) \
4154 ( (This)->lpVtbl -> PushEmptyStorageFilter(This) )
4155
4156#define ID3D12InfoQueue1_PushCopyOfStorageFilter(This) \
4157 ( (This)->lpVtbl -> PushCopyOfStorageFilter(This) )
4158
4159#define ID3D12InfoQueue1_PushStorageFilter(This,pFilter) \
4160 ( (This)->lpVtbl -> PushStorageFilter(This,pFilter) )
4161
4162#define ID3D12InfoQueue1_PopStorageFilter(This) \
4163 ( (This)->lpVtbl -> PopStorageFilter(This) )
4164
4165#define ID3D12InfoQueue1_GetStorageFilterStackSize(This) \
4166 ( (This)->lpVtbl -> GetStorageFilterStackSize(This) )
4167
4168#define ID3D12InfoQueue1_AddRetrievalFilterEntries(This,pFilter) \
4169 ( (This)->lpVtbl -> AddRetrievalFilterEntries(This,pFilter) )
4170
4171#define ID3D12InfoQueue1_GetRetrievalFilter(This,pFilter,pFilterByteLength) \
4172 ( (This)->lpVtbl -> GetRetrievalFilter(This,pFilter,pFilterByteLength) )
4173
4174#define ID3D12InfoQueue1_ClearRetrievalFilter(This) \
4175 ( (This)->lpVtbl -> ClearRetrievalFilter(This) )
4176
4177#define ID3D12InfoQueue1_PushEmptyRetrievalFilter(This) \
4178 ( (This)->lpVtbl -> PushEmptyRetrievalFilter(This) )
4179
4180#define ID3D12InfoQueue1_PushCopyOfRetrievalFilter(This) \
4181 ( (This)->lpVtbl -> PushCopyOfRetrievalFilter(This) )
4182
4183#define ID3D12InfoQueue1_PushRetrievalFilter(This,pFilter) \
4184 ( (This)->lpVtbl -> PushRetrievalFilter(This,pFilter) )
4185
4186#define ID3D12InfoQueue1_PopRetrievalFilter(This) \
4187 ( (This)->lpVtbl -> PopRetrievalFilter(This) )
4188
4189#define ID3D12InfoQueue1_GetRetrievalFilterStackSize(This) \
4190 ( (This)->lpVtbl -> GetRetrievalFilterStackSize(This) )
4191
4192#define ID3D12InfoQueue1_AddMessage(This,Category,Severity,ID,pDescription) \
4193 ( (This)->lpVtbl -> AddMessage(This,Category,Severity,ID,pDescription) )
4194
4195#define ID3D12InfoQueue1_AddApplicationMessage(This,Severity,pDescription) \
4196 ( (This)->lpVtbl -> AddApplicationMessage(This,Severity,pDescription) )
4197
4198#define ID3D12InfoQueue1_SetBreakOnCategory(This,Category,bEnable) \
4199 ( (This)->lpVtbl -> SetBreakOnCategory(This,Category,bEnable) )
4200
4201#define ID3D12InfoQueue1_SetBreakOnSeverity(This,Severity,bEnable) \
4202 ( (This)->lpVtbl -> SetBreakOnSeverity(This,Severity,bEnable) )
4203
4204#define ID3D12InfoQueue1_SetBreakOnID(This,ID,bEnable) \
4205 ( (This)->lpVtbl -> SetBreakOnID(This,ID,bEnable) )
4206
4207#define ID3D12InfoQueue1_GetBreakOnCategory(This,Category) \
4208 ( (This)->lpVtbl -> GetBreakOnCategory(This,Category) )
4209
4210#define ID3D12InfoQueue1_GetBreakOnSeverity(This,Severity) \
4211 ( (This)->lpVtbl -> GetBreakOnSeverity(This,Severity) )
4212
4213#define ID3D12InfoQueue1_GetBreakOnID(This,ID) \
4214 ( (This)->lpVtbl -> GetBreakOnID(This,ID) )
4215
4216#define ID3D12InfoQueue1_SetMuteDebugOutput(This,bMute) \
4217 ( (This)->lpVtbl -> SetMuteDebugOutput(This,bMute) )
4218
4219#define ID3D12InfoQueue1_GetMuteDebugOutput(This) \
4220 ( (This)->lpVtbl -> GetMuteDebugOutput(This) )
4221
4222
4223#define ID3D12InfoQueue1_RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) \
4224 ( (This)->lpVtbl -> RegisterMessageCallback(This,CallbackFunc,CallbackFilterFlags,pContext,pCallbackCookie) )
4225
4226#define ID3D12InfoQueue1_UnregisterMessageCallback(This,CallbackCookie) \
4227 ( (This)->lpVtbl -> UnregisterMessageCallback(This,CallbackCookie) )
4228
4229#endif /* COBJMACROS */
4230
4231
4232#endif /* C style interface */
4233
4234
4235
4236
4237#endif /* __ID3D12InfoQueue1_INTERFACE_DEFINED__ */
4238
4239
4240/* interface __MIDL_itf_d3d12sdklayers_0000_0020 */
4241/* [local] */
4242
4243#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
4244#pragma endregion
4245DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);
4246DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);
4247DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);
4248DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);
4249DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);
4250DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);
4251DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);
4252DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);
4253DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);
4254DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);
4255DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);
4256DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);
4257DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);
4258DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);
4259DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);
4260DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);
4261DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);
4262DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);
4263DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);
4264DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);
4265
4266
4267extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_c_ifspec;
4268extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0020_v0_0_s_ifspec;
4269
4270/* Additional Prototypes for ALL interfaces */
4271
4272/* end of Additional Prototypes */
4273
4274#ifdef __cplusplus
4275}
4276#endif
4277
4278#endif
4279
4280
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl
new file mode 100644
index 0000000..082565d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12sdklayers.idl
@@ -0,0 +1,1860 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "d3d12.idl";
11
12cpp_quote("#include <winapifamily.h>")
13
14#pragma region App Family
15cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
16
17//==================================================================================================================================
18//
19// Debugging Layer
20//
21//==================================================================================================================================
22
23[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
24interface ID3D12Debug
25 : IUnknown
26{
27 void EnableDebugLayer();
28}
29
30typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
31{
32 D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
33 D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
34
35} D3D12_GPU_BASED_VALIDATION_FLAGS;
36cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
37
38
39[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
40interface ID3D12Debug1
41 : IUnknown
42{
43 void EnableDebugLayer();
44 void SetEnableGPUBasedValidation(BOOL Enable);
45 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
46}
47
48[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
49interface ID3D12Debug2
50 : IUnknown
51{
52 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
53}
54
55[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
56interface ID3D12Debug3
57 : ID3D12Debug
58{
59 void SetEnableGPUBasedValidation(BOOL Enable);
60 void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
61 void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
62}
63
64[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
65interface ID3D12Debug4
66 : ID3D12Debug3
67{
68 void DisableDebugLayer();
69}
70
71[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
72interface ID3D12Debug5
73 : ID3D12Debug4
74{
75 void SetEnableAutoName(BOOL Enable);
76}
77
78[uuid(82a816d6-5d01-4157-97d0-4975463fd1ed), object, local, pointer_default(unique)]
79interface ID3D12Debug6
80 : ID3D12Debug5
81{
82 void SetForceLegacyBarrierValidation(BOOL Enable);
83}
84
85cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
86
87typedef enum D3D12_RLDO_FLAGS
88{
89 D3D12_RLDO_NONE = 0x0,
90 D3D12_RLDO_SUMMARY = 0x1,
91 D3D12_RLDO_DETAIL = 0x2,
92 D3D12_RLDO_IGNORE_INTERNAL = 0x4,
93
94} D3D12_RLDO_FLAGS;
95
96cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
97
98typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
99{
100 D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
101 D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
102 D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
103 D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE
104} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
105
106typedef enum D3D12_DEBUG_FEATURE
107{
108 D3D12_DEBUG_FEATURE_NONE = 0x00,
109 D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
110 D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
111 D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
112 D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
113} D3D12_DEBUG_FEATURE;
114
115cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
116
117typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
118{
119 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
120 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
121 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
122 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
123 NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
124} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
125
126typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
127{
128 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
129 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
130 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
131 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
132 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
133} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
134
135cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
136
137typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
138{
139 UINT MaxMessagesPerCommandList;
140 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
141 D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
142} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
143
144typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
145{
146 FLOAT SlowdownFactor;
147} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
148
149typedef enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
150{
151 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED,
152 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED,
153 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE,
154 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT =
155 D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
156} D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
157
158[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
159interface ID3D12DebugDevice1
160 : IUnknown
161{
162 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
163 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
164 HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
165}
166
167[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
168interface ID3D12DebugDevice
169 : IUnknown
170{
171 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
172 D3D12_DEBUG_FEATURE GetFeatureMask();
173 HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
174}
175
176[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
177interface ID3D12DebugDevice2
178 : ID3D12DebugDevice
179{
180 HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
181 HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
182}
183
184cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
185
186
187[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
188interface ID3D12DebugCommandQueue
189 : IUnknown
190{
191 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
192// TODO: Stale BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
193};
194
195[ uuid( 16be35a2-bfd6-49f2-bcae-eaae4aff862d ), object, local, pointer_default( unique ) ]
196interface ID3D12DebugCommandQueue1
197 : ID3D12DebugCommandQueue
198{
199 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
200 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
201};
202
203typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
204{
205 D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
206} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
207
208typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
209{
210 D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
211} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
212
213[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
214interface ID3D12DebugCommandList1
215 : IUnknown
216{
217 BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
218 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
219 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
220};
221
222[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
223interface ID3D12DebugCommandList
224 : IUnknown
225{
226 BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
227 HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
228 D3D12_DEBUG_FEATURE GetFeatureMask();
229};
230
231[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
232interface ID3D12DebugCommandList2
233 : ID3D12DebugCommandList
234{
235 HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
236 HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
237};
238
239[ uuid(197d5e15-4d37-4d34-af78-724cd70fdb1f), object, local, pointer_default( unique ) ]
240interface ID3D12DebugCommandList3
241 : ID3D12DebugCommandList2
242{
243 void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
244 void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
245};
246
247[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
248interface ID3D12SharingContract
249 : IUnknown
250{
251 void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
252 void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
253 void BeginCapturableWork([annotation("_In_")] REFGUID guid);
254 void EndCapturableWork([annotation("_In_")] REFGUID guid);
255};
256
257[uuid(86ca3b85-49ad-4b6e-aed5-eddb18540f41), object, local, pointer_default(unique)]
258interface ID3D12ManualWriteTrackingResource
259 : IUnknown
260{
261 void TrackWrite(
262 UINT Subresource,
263 [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange);
264};
265
266
267//==================================================================================================================================
268//
269// Info Queue
270//
271//==================================================================================================================================
272typedef enum D3D12_MESSAGE_CATEGORY {
273 D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
274 D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
275 D3D12_MESSAGE_CATEGORY_INITIALIZATION,
276 D3D12_MESSAGE_CATEGORY_CLEANUP,
277 D3D12_MESSAGE_CATEGORY_COMPILATION,
278 D3D12_MESSAGE_CATEGORY_STATE_CREATION,
279 D3D12_MESSAGE_CATEGORY_STATE_SETTING,
280 D3D12_MESSAGE_CATEGORY_STATE_GETTING,
281 D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
282 D3D12_MESSAGE_CATEGORY_EXECUTION,
283 D3D12_MESSAGE_CATEGORY_SHADER,
284} D3D12_MESSAGE_CATEGORY;
285
286typedef enum D3D12_MESSAGE_SEVERITY {
287 D3D12_MESSAGE_SEVERITY_CORRUPTION,
288 D3D12_MESSAGE_SEVERITY_ERROR,
289 D3D12_MESSAGE_SEVERITY_WARNING,
290 D3D12_MESSAGE_SEVERITY_INFO,
291 D3D12_MESSAGE_SEVERITY_MESSAGE
292} D3D12_MESSAGE_SEVERITY;
293
294// Unique ID for every error
295// CAUTION: New enum values should be appended to the list only. Inserting
296// new enum values into the middle of the list results in changing the numeric
297// values of some ID's from one SDK release to the next. This in-turn breaks
298// PIX and customer tools/filters.
299typedef enum D3D12_MESSAGE_ID {
300 D3D12_MESSAGE_ID_UNKNOWN = 0,
301
302 //--------------------------------------------------------------------------
303 // Messages Used by Core
304 // Message IDs generated from core are at the beginning
305 // since the core changes less frequently than the debug layer.
306
307 // End of Messages used by Core
308 // ------------------------------------------------------------------------
309 D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
310 D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
311 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
312 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
313 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
314 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
315 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
316 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
317 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
318 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
319 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
320 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
321 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
322 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
323 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
324 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
325 D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
326 D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
327 D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
328
329 D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
330 D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
331 D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
332 D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
333
334 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
335 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
336 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
337 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
338 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
339 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
340 D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
341
342 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
343 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
344 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
345 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
346 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
347 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
348 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
349 D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
350
351 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
352 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
353 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
354 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
355 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
356
357 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
358 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
359 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
360 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
361 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
362 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
363 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
364 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
365 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
366 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
367 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
368 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
369 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
370 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
371
372 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
373 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
374 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
375
376 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
377 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
378 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
379
380 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
381 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
382 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
383 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
384 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
385 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
386 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
387 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
388 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
389 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
390 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
391 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
392 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
393 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
394 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
395 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
396 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
397 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
398
399 D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
400 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
401 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
402
403 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
404 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
405 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
406 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
407
408 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
409 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
410 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
411 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
412 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
413 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
414 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
415 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
416 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
417 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
418
419 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
420 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
421 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
422 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
423 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
424 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
425 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
426
427 D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
428 D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
429 D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
430
431 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
432
433 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
434 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
435 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
436 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
437 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
438 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
439 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
440 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
441 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
442 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
443 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
444 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
445 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
446 D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
447
448 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
449 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
450 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
451
452 D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
453
454 D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
455 D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
456 D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
457
458 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
459 D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
460 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
461 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
462 D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
463
464 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
465 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
466 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
467 D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
468
469 D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
470 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
471 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
472 D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
473
474 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
475 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
476 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
477 D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
478
479 D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
480
481 D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
482
483 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
484 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
485 D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
486
487 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
488 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
489 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
490 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
491 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
492 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
493 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
494
495 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
496 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
497 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
498 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
499 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
500 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
501 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
502 D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
503
504 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
505
506 D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
507
508 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
509 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
510 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
511 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
512 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
513 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
514 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
515
516 D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
517 D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
518 D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
519 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
520 D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
521 D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
522 D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
523
524 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
525 D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
526
527 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
528 D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
529
530 D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
531 D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
532
533 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
534 D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
535 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
536 D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
537 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
538 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
539 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
540 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
541 D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
542 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
543 D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
544 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
545 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
546 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
547 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
548 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
549 D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
550 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
551 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
552 D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
553 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
554 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
555 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
556 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
557 D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
558 D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
559 D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
560 D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
561 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
562 D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
563 D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
564
565 D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
566 D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
567 D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
568 D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
569 D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
570 D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
571 D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
572 D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
573 D3D12_MESSAGE_ID_CREATE_HEAP = 566,
574 D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
575 D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
576 D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
577
578 D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
579 D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
580 D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
581 D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
582 D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
583 D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
584 D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
585 D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
586 D3D12_MESSAGE_ID_LIVE_HEAP = 579,
587 D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
588 D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
589 D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
590
591 D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
592 D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
593 D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
594 D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
595 D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
596 D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
597 D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
598 D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
599 D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
600 D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
601 D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
602 D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
603
604 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
605 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
606 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
607 D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
608 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
609 // This was shipped, but is no longer used. Do not reuse.
610 //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
611 D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
612 D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
613 D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
614 D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
615 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
616 D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
617 D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
618 D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
619 D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
620 D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
621 D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
622 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
623 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
624 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
625 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
626 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
627 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
628 D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
629 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
630 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
631 D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
632 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
633 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
634 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
635 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
636 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
637 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
638 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
639 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
640 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
641 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
642 D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
643 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
644 D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
645 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
646 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
647 D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
648 D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
649 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
650 D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
651 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
652 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
653 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
654 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
655 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
656 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
657 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
658 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
659 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
660 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
661 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
662 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
663 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
664 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
665 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
666 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
667 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
668 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
669 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
670 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
671 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
672 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
673 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
674 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
675 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
676 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
677 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
678 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
679 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
680 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
681 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
682 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
683 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
684 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
685 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
686 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
687 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
688 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
689 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
690 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
691 D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
692 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
693 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
694 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
695 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
696 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
697 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
698 D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
699 D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
700 D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
701 D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
702 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
703 D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
704 D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
705 D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
706 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
707 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
708 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
709 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
710 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
711 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
712 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
713 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
714 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
715 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
716 D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
717 D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
718 D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
719 D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
720 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
721 D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
722 D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
723 D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
724 D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
725 D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
726 // This was shipped, but is no longer used. Do not reuse.
727 //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
728 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
729 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
730 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
731 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
732 // Note: These are the same as the above two, with the original (incorrect) name
733 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
734 D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
735 D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
736 D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
737 D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
738 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
739 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
740
741 // These values shipped, but are no longer used. Do not reuse.
742 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
743 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
744 //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
745 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
746 D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
747 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
748 D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
749 D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
750 D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
751 D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
752 D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
753 D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
754 D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
755 D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
756 D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
757 D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
758 D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
759 D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
760 D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
761 D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
762 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
763 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
764 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
765 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
766 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
767 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
768 D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
769 D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
770 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
771 D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
772 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
773 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
774 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
775 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
776 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
777 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
778 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
779 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
780 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
781 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
782 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
783 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
784 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
785 D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
786 D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
787 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
788 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
789 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
790 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
791 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
792 D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
793 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
794 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
795 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
796 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
797 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
798 D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
799 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
800 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
801 D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
802 D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
803 D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
804
805 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
806 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
807 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
808 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
809
810 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
811 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
812 D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
813
814 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
815 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
816 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
817 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
818 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
819 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
820 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
821 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
822 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
823 D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
824 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
825 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
826 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
827 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
828 D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
829
830 D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
831 D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
832
833 D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
834 D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
835 D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
836 D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
837 D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
838 D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
839 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
840 D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
841 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
842 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
843
844 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
845 D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
846 D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
847 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
848 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
849 D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
850 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
851 D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
852 D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
853 D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
854
855 D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
856 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
857
858 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
859
860 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
861
862 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
863
864 D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
865
866 D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
867 D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
868 D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
869 D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
870
871 D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
872 D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
873
874 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
875
876 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
877 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
878 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
879 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
880 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
881 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
882 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
883 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
884
885 D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
886 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
887 D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
888 D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
889
890 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
891 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
892 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
893 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
894
895 D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
896 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
897 D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
898
899 D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
900
901 D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
902
903 D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
904
905 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
906
907 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
908
909 D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
910
911 D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
912
913 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
914
915 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
916 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
917 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
918 D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
919 D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
920 D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
921 D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
922
923 D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
924 D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
925 D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
926 D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
927 D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
928
929 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
930
931 D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
932
933 D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
934 D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
935 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
936 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
937 D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
938 D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
939 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
940 D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
941 D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
942 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
943 D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
944 D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
945 D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
946
947 D3D12_MESSAGE_ID_DEPRECATED_API = 989,
948
949 D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
950
951 D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
952 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
953 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
954 D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
955
956 D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
957 D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
958 D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
959
960 D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
961
962 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
963
964 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
965
966 D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
967 D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
968 D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
969 D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
970
971 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
972 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
973
974 D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
975
976 D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
977 D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
978 D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
979
980 D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
981 D3D12_MESSAGE_ID_END_EVENT = 1015,
982
983 D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
984
985 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
986
987 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
988 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
989 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
990 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
991 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
992
993 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
994
995 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
996 D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
997
998 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
999 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
1000 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
1001 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
1002 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
1003 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
1004 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
1005 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
1006 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
1007 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
1008 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
1009 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
1010 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
1011 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
1012 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
1013
1014 D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
1015
1016 D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
1017
1018 D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
1019
1020 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
1021
1022 D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
1023
1024 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
1025
1026 D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
1027
1028 D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
1029
1030 D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
1031
1032 D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
1033
1034 D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
1035 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
1036 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
1037 D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
1038 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
1039 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
1040 D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
1041 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
1042 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
1043 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
1044 D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
1045 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
1046 D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
1047 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
1048 D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
1049
1050 D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
1051
1052 D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
1053
1054 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
1055 D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
1056 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
1057 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
1058 D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
1059 D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
1060 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
1061 D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
1062 D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
1063 D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
1064
1065 D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
1066
1067 D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
1068
1069 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
1070 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
1071 D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
1072
1073 D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
1074 D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
1075 D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
1076
1077 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
1078 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
1079 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
1080 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
1081
1082 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
1083 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
1084 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
1085 D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
1086
1087 D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
1088 D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
1089 D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
1090
1091 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
1092 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
1093
1094 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
1095 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
1096 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
1097 D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
1098
1099 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
1100 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
1101 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
1102
1103 D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
1104
1105 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
1106 D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
1107 D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
1108
1109 D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
1110
1111 D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
1112 D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
1113
1114 D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
1115
1116 D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
1117
1118 D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
1119 D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
1120 D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
1121 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
1122 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
1123 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
1124 D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
1125
1126 D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
1127 D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
1128 D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
1129 D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
1130
1131 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
1132
1133 D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
1134 D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
1135
1136 D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
1137 D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
1138 D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
1139
1140 D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
1141 D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
1142 D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
1143 D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
1144
1145 D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
1146
1147 D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
1148 D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
1149 D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
1150 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
1151 D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
1152 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
1153 D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
1154 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
1155 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
1156 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
1157 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
1158 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
1159 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
1160 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
1161 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
1162 D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
1163
1164 D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
1165 D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
1166
1167 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
1168
1169 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
1170
1171 D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
1172
1173 D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
1174 D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
1175 D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
1176 D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
1177 D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
1178
1179 D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
1180 D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
1181 D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
1182 D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
1183
1184 D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
1185 D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
1186 D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
1187
1188 D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
1189
1190 D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
1191 D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
1192 D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
1193 D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
1194 D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
1195 D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
1196
1197 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
1198 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
1199 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
1200
1201 D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
1202 D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
1203 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
1204
1205 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
1206 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
1207 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
1208
1209 D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
1210 D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
1211 D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
1212
1213 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
1214 D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
1215 D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
1216 D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
1217 D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
1218 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
1219 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
1220 D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
1221 D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
1222 D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
1223 D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
1224 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
1225 D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
1226
1227 D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
1228 D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
1229 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
1230 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
1231 D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
1232 D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
1233 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
1234 D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
1235 D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
1236
1237 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
1238 D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
1239
1240 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
1241 D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
1242
1243 D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
1244
1245 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
1246 D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
1247
1248 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
1249 D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
1250 D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
1251 D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
1252
1253 D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
1254 D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
1255 D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
1256
1257 D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
1258 D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
1259 D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
1260 D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
1261 D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
1262
1263 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
1264
1265 D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,
1266 D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
1267 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
1268 D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
1269 D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
1270 D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
1271 D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
1272 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
1273 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
1274 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
1275 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
1276 D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
1277
1278 D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
1279
1280 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
1281 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
1282
1283 D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
1284
1285 D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
1286
1287 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
1288 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
1289 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
1290 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
1291 D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,
1292 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
1293
1294 D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
1295
1296
1297 D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
1298 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
1299 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
1300 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
1301 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
1302 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
1303 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
1304 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
1305 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
1306 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
1307
1308 D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
1309 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
1310 D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
1311
1312 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
1313 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
1314 D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
1315
1316 D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
1317
1318 D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
1319 D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
1320
1321 D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
1322 D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
1323 D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
1324
1325 D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
1326
1327 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
1328 D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
1329
1330 D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
1331 D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
1332 D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
1333
1334 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
1335 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
1336 D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
1337
1338 D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
1339 D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
1340 D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
1341 D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
1342
1343 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
1344 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
1345 D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
1346 D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
1347 D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
1348 D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
1349
1350 D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
1351 D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
1352 D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
1353 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
1354 D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
1355 D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
1356 D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
1357
1358 D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
1359 D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
1360 D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
1361 D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
1362 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
1363 D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
1364 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
1365 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
1366 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
1367 D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
1368 D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
1369 D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
1370 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
1371 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
1372 D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
1373 D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
1374 D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
1375 D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
1376 D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
1377 D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
1378 D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
1379 D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
1380 D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
1381 D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
1382 D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
1383 D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
1384 D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
1385 D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
1386
1387 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
1388 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
1389 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
1390 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
1391 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
1392 D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
1393 D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
1394
1395 D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
1396
1397 D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
1398
1399 D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
1400
1401 D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
1402
1403 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
1404
1405 D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
1406
1407 D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
1408
1409 D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
1410
1411 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
1412
1413 D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
1414
1415 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
1416 D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
1417
1418 D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
1419
1420 D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
1421 D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
1422
1423 D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
1424
1425 D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
1426
1427 D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
1428
1429 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
1430
1431 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
1432 D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
1433
1434 D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
1435
1436 D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
1437 D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
1438 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
1439 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
1440
1441 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
1442 D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
1443 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
1444 D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
1445
1446 D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
1447
1448 D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
1449
1450 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
1451 D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
1452 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
1453 D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
1454 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
1455 D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
1456
1457 D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
1458 D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
1459
1460 D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
1461 D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
1462
1463 D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
1464
1465 D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
1466 D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
1467
1468 D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
1469 D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
1470
1471 D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
1472
1473 D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
1474
1475 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
1476 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
1477 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
1478 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
1479 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
1480 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
1481 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
1482 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
1483 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
1484 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
1485 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
1486 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
1487 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
1488 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
1489 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
1490 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
1491 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
1492 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
1493 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
1494 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
1495 D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
1496 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
1497 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
1498 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
1499 D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
1500 D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
1501 D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
1502 D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
1503 D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
1504 D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
1505 D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
1506 D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
1507 D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
1508 D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
1509 D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
1510 D3D12_MESSAGE_ID_FENCE_ZERO_WAIT = 1424,
1511 D3D12_MESSAGE_ID_NON_COMMON_RESOURCE_IN_COPY_QUEUE = 1431,
1512 D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MULTIPLE_ROOT_SIGNATURES_DEFINED = 1435,
1513 D3D12_MESSAGE_ID_TEXTURE_BARRIER_INVALID_FLAGS = 1436,
1514 D3D12_MESSAGE_ID_D3D12_MESSAGES_END = 1442, // This must be the last entry in the enum.
1515} D3D12_MESSAGE_ID;
1516
1517typedef struct D3D12_MESSAGE
1518{
1519 D3D12_MESSAGE_CATEGORY Category;
1520 D3D12_MESSAGE_SEVERITY Severity;
1521 D3D12_MESSAGE_ID ID;
1522 [annotation("_Field_size_(DescriptionByteLength)")] const char* pDescription;
1523 SIZE_T DescriptionByteLength;
1524} D3D12_MESSAGE;
1525
1526typedef struct D3D12_INFO_QUEUE_FILTER_DESC
1527{
1528 UINT NumCategories;
1529 [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
1530 UINT NumSeverities;
1531 [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
1532 UINT NumIDs;
1533 [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID* pIDList;
1534} D3D12_INFO_QUEUE_FILTER_DESC;
1535
1536// To use, memset to 0, then fill in what you need.
1537typedef struct D3D12_INFO_QUEUE_FILTER
1538{
1539 D3D12_INFO_QUEUE_FILTER_DESC AllowList;
1540 D3D12_INFO_QUEUE_FILTER_DESC DenyList;
1541} D3D12_INFO_QUEUE_FILTER;
1542
1543//=============================================================================
1544// ID3D12InfoQueue
1545//
1546// Logs D3D12 Messages.
1547// This interface can be queried from ID3D12Device, as long as the device
1548// was created with the debug layer.
1549//
1550//
1551cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
1552[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
1553interface ID3D12InfoQueue
1554 : IUnknown
1555{
1556 //=========================================================================
1557 // Methods for configuring how much data is stored in the queue.
1558
1559 // SetMessageCountLimit()
1560 // This sets how many messages are stored. When the queue is full,
1561 // new messages coming in push old messages out.
1562 // Passing -1 to SetMessageCountLimit means the queue has
1563 // unlimited size (go until out of memory or ClearStoredMessages()).
1564 // The default message count size is
1565 // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
1566 // Returns S_OK or E_INVALIDARG.
1567 HRESULT SetMessageCountLimit([annotation("_In_")] UINT64 MessageCountLimit);
1568
1569 // ClearStoredMessages
1570 void ClearStoredMessages();
1571
1572 //=========================================================================
1573 // Methods for retrieving data or statistics from the queue.
1574
1575 // GetMessage()
1576 // Retrieves messages, one at a time, from the queue which pass any
1577 // retrieval filter currently defined. If there is no retrieval filter,
1578 // all messages can be retrieved.
1579 // The MessageIndex parameter is a 0 based index into the results passing
1580 // the filter. The number of results is returned by
1581 // GetNumStoredMessagesAllowedByRetrievalFilter().
1582 //
1583 // Note this does not remove the message from the queue.
1584 //
1585 // pMessageByteLength inputs the size of the buffer passed in via
1586 // pMessage, and outputs the size of the message. pMessage can be NULL
1587 // when the size of the required buffer is being queried (return S_FALSE).
1588 //
1589 // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
1590 // it includes extra memory after the D3D12_MESSAGE for storing the string
1591 // description, which is pointed to from within D3D12_MESSAGE. Therefore
1592 // applications should check the size needed for pMessage as described above.
1593 //
1594 // Watch out for thread safety when making consecutive calls first to
1595 // determine the buffer size required and then to pass in the buffer and
1596 // retrieve the message, and also between calling
1597 // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
1598 // the results via GetMessagE().
1599 //
1600 // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
1601 HRESULT GetMessage(
1602 [annotation("_In_")] UINT64 MessageIndex,
1603 [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
1604 [annotation("_Inout_")] SIZE_T* pMessageByteLength);
1605
1606 // GetNumMessagesAllowedByStorageFilter()
1607 // Returns how many messages sent to the queue passed
1608 // whatever storage filter was active upon receipt of
1609 // the message.
1610 // This can be a larger value than the message count limit,
1611 // returned by GetMessageCountLimit(), since old messages are discarded
1612 // when the queue is full to prevent overflow.
1613 UINT64 GetNumMessagesAllowedByStorageFilter();
1614
1615 // GetNumMessagesDeniedByStorageFilter()
1616 UINT64 GetNumMessagesDeniedByStorageFilter();
1617
1618 // GetNumStoredMessages()
1619 // Returns how many messages are currently stored in the queue.
1620 UINT64 GetNumStoredMessages();
1621
1622 // GetNumStoredMessagesAllowedByRetrievalFilter()
1623 // Returns how many messages that are currently in the queue
1624 // pass any retrieval filter that is currently set.
1625 // The MessageIndex parameter to GetMessage() indexes
1626 // an array of this many results.
1627 UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
1628
1629 // GetNumMessagesDiscardedByMessageCountLimit()
1630 UINT64 GetNumMessagesDiscardedByMessageCountLimit();
1631
1632 // GetMessageCountLimit
1633 // This is how many messages can be stored in the queue.
1634 // When the queue is full, new messages coming in push old messages out.
1635 // -1 means there is no limit.
1636 UINT64 GetMessageCountLimit();
1637
1638 //=========================================================================
1639 // Methods for filtering what gets stored in the queue
1640
1641 // AddStorageFilterEntries()
1642 // Adds to the existing entries at top of stack
1643 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1644 HRESULT AddStorageFilterEntries(
1645 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1646
1647 // GetStorageFilter()
1648 // Gets all entries at top of stack.
1649 // The application must allocate the output buffer. The size required can be
1650 // queried by passing null for pFilter and looking at the returned
1651 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1652 // pointers - these will point to locations within the same
1653 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1654 // data. So the application needs to only allocate/free the memory for pFilter.
1655 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1656 HRESULT GetStorageFilter(
1657 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1658 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1659
1660 // ClearStorageFilter()
1661 // Clears filter at the top of the stack (if there is one)
1662 void ClearStorageFilter();
1663
1664 // PushEmptyStorageFilter()
1665 // Push an empty storage filter on the stack to allow local filtering changes.
1666 // For convenience, this is automatically called by SetStorageFilter()
1667 // if the stack is empty. Thus if the stack is not needed, filters can be
1668 // defined without ever bothering to push or pop.
1669 // Returns S_OK or E_OUTOFMEMORY
1670 HRESULT PushEmptyStorageFilter();
1671
1672 // PushCopyOfStorageFilter()
1673 // Push a copy of the current filter so that local modifications can be made
1674 // starting from what currently exists.
1675 // Returns S_OK or E_OUTOFMEMORY
1676 HRESULT PushCopyOfStorageFilter();
1677
1678 // PushStorageFilter()
1679 // Push a filter passed as a parameter onto the stack. This is
1680 // just a helper for calling PushEmptyStorageFilter() followed
1681 // by AddStorageFilterEntries()
1682 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1683 HRESULT PushStorageFilter(
1684 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1685
1686 // PopStorageFilter()
1687 // Pop the current storage filter off the stack (if there is one)
1688 void PopStorageFilter();
1689
1690 // GetStorageFilterStackSize()
1691 UINT GetStorageFilterStackSize();
1692
1693 //=========================================================================
1694 // Methods for filtering what gets read out of the queue by GetMessage().
1695
1696 // AddRetrievalFilterEntries()
1697 // Adds to the existing entries at top of stack
1698 // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1699 HRESULT AddRetrievalFilterEntries(
1700 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1701
1702 // GetRetrievalFilter()
1703 // Gets all entries at top of stack.
1704 // The application must allocate the output buffer. The size required can be
1705 // queried by passing null for pFilter and looking at the returned
1706 // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
1707 // pointers - these will point to locations within the same
1708 // contiguous buffer - *pFilterByteLength is the total storage needed for all
1709 // data. So the application needs to only allocate/free the memory for pFilter.
1710 // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
1711 HRESULT GetRetrievalFilter(
1712 [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
1713 [annotation("_Inout_")] SIZE_T* pFilterByteLength);
1714
1715 // ClearRetrievalFilter()
1716 // Clears filter at the top of the stack (if there is one)
1717 void ClearRetrievalFilter();
1718
1719 // PushEmptyRetrievalFilter()
1720 // Push an empty storage filter on the stack to allow local filtering changes.
1721 // For convenience, this is automatically called by SetRetrievalFilter()
1722 // if the stack is empty. Thus if the stack is not needed, filters can be
1723 // defined without ever bothering to push or pop.
1724 // Returns S_OK or E_OUTOFMEMORY
1725 HRESULT PushEmptyRetrievalFilter();
1726
1727 // PushCopyOfRetrievalFilter()
1728 // Push a copy of the current filter so that local modifications can be made
1729 // starting from what currently exists.
1730 // Returns S_OK or E_OUTOFMEMORY
1731 HRESULT PushCopyOfRetrievalFilter();
1732
1733 // PushRetrievalFilter()
1734 // Push a filter passed as a parameter onto the stack. This is
1735 // just a helper for calling PushEmptyRetrievalFilter() followed
1736 // by AddRetrievalFilterEntries()
1737 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
1738 HRESULT PushRetrievalFilter(
1739 [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
1740
1741 // PopRetrievalFilter()
1742 // Pop the current storage filter off the stack (if there is one)
1743 void PopRetrievalFilter();
1744
1745 // GetRetrievalFilterStackSize()
1746 UINT GetRetrievalFilterStackSize();
1747
1748 //=========================================================================
1749 // Methods for adding entries to the queue.
1750
1751 // AddMessage()
1752 // This is used by D3D12 components to log messages. Nothing stops
1753 // applications from calling this, but it isn’t particularly useful.
1754 // If an application wishes to insert custom strings into the queue,
1755 // AddApplicationMessage() below is suggested. See below.
1756 //
1757 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1758 HRESULT AddMessage(
1759 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1760 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1761 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1762 [annotation("_In_")] LPCSTR pDescription);
1763
1764 // AddApplicationMessage()
1765 // This is a convenience for applications that want
1766 // to insert strings of their own into the queue, perhaps to log issues
1767 // of its own, or to mark out points in time in the queue. This
1768 // has the same effect as calling AddMessage() above with the
1769 // following settings:
1770 // Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
1771 // Severity = <app selects from D3D12_MESSAGE_SEVERITY>
1772 // ID = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
1773 // pDescription = <application provided string>
1774 //
1775 // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
1776 HRESULT AddApplicationMessage(
1777 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1778 [annotation("_In_")] LPCSTR pDescription);
1779
1780 //=========================================================================
1781 // Methods for breaking on errors that pass the storage filter.
1782 HRESULT SetBreakOnCategory(
1783 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category,
1784 [annotation("_In_")] BOOL bEnable);
1785 HRESULT SetBreakOnSeverity(
1786 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
1787 [annotation("_In_")] BOOL bEnable);
1788 HRESULT SetBreakOnID(
1789 [annotation("_In_")] D3D12_MESSAGE_ID ID,
1790 [annotation("_In_")] BOOL bEnable);
1791
1792 BOOL GetBreakOnCategory(
1793 [annotation("_In_")] D3D12_MESSAGE_CATEGORY Category);
1794 BOOL GetBreakOnSeverity(
1795 [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity);
1796 BOOL GetBreakOnID(
1797 [annotation("_In_")] D3D12_MESSAGE_ID ID);
1798
1799 //=========================================================================
1800 // Methods for globally muting debug spte from the InfoQueue
1801 void SetMuteDebugOutput(
1802 [annotation("_In_")] BOOL bMute);
1803 BOOL GetMuteDebugOutput();
1804};
1805
1806typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
1807{
1808 D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
1809 D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
1810
1811} D3D12_MESSAGE_CALLBACK_FLAGS;
1812
1813cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
1814
1815typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
1816 D3D12_MESSAGE_SEVERITY Severity,
1817 D3D12_MESSAGE_ID ID,
1818 LPCSTR pDescription,
1819 void* pContext);
1820
1821[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
1822interface ID3D12InfoQueue1
1823 : ID3D12InfoQueue
1824{
1825 HRESULT RegisterMessageCallback(
1826 [annotation("_In_")] D3D12MessageFunc CallbackFunc,
1827 [annotation("_In_")] D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
1828 [annotation("_Inout_")] void* pContext,
1829 [annotation("_Inout_")] DWORD *pCallbackCookie);
1830
1831 HRESULT UnregisterMessageCallback(
1832 [annotation("_In_")] DWORD CallbackCookie);
1833};
1834
1835
1836
1837cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
1838#pragma endregion
1839
1840
1841cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
1842cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
1843cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
1844cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
1845cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
1846cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
1847cpp_quote( "DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);" )
1848cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
1849cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
1850cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
1851cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
1852cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);" )
1853cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
1854cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
1855cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
1856cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);" )
1857cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
1858cpp_quote( "DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);" )
1859cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
1860cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h
new file mode 100644
index 0000000..56455b5
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12shader.h
@@ -0,0 +1,495 @@
1//////////////////////////////////////////////////////////////////////////////
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6// File: D3D12Shader.h
7// Content: D3D12 Shader Types and APIs
8//
9//////////////////////////////////////////////////////////////////////////////
10
11#ifndef __D3D12SHADER_H__
12#define __D3D12SHADER_H__
13
14#include "d3dcommon.h"
15
16typedef enum D3D12_SHADER_VERSION_TYPE
17{
18 D3D12_SHVER_PIXEL_SHADER = 0,
19 D3D12_SHVER_VERTEX_SHADER = 1,
20 D3D12_SHVER_GEOMETRY_SHADER = 2,
21
22 // D3D11 Shaders
23 D3D12_SHVER_HULL_SHADER = 3,
24 D3D12_SHVER_DOMAIN_SHADER = 4,
25 D3D12_SHVER_COMPUTE_SHADER = 5,
26
27 // D3D12 Shaders
28 D3D12_SHVER_LIBRARY = 6,
29
30 D3D12_SHVER_RAY_GENERATION_SHADER = 7,
31 D3D12_SHVER_INTERSECTION_SHADER = 8,
32 D3D12_SHVER_ANY_HIT_SHADER = 9,
33 D3D12_SHVER_CLOSEST_HIT_SHADER = 10,
34 D3D12_SHVER_MISS_SHADER = 11,
35 D3D12_SHVER_CALLABLE_SHADER = 12,
36
37 D3D12_SHVER_MESH_SHADER = 13,
38 D3D12_SHVER_AMPLIFICATION_SHADER = 14,
39
40 D3D12_SHVER_NODE_SHADER = 15,
41
42 D3D12_SHVER_RESERVED0 = 0xFFF0,
43} D3D12_SHADER_VERSION_TYPE;
44
45#define D3D12_SHVER_GET_TYPE(_Version) \
46 (((_Version) >> 16) & 0xffff)
47#define D3D12_SHVER_GET_MAJOR(_Version) \
48 (((_Version) >> 4) & 0xf)
49#define D3D12_SHVER_GET_MINOR(_Version) \
50 (((_Version) >> 0) & 0xf)
51
52// Slot ID for library function return
53#define D3D_RETURN_PARAMETER_INDEX (-1)
54
55typedef D3D_RESOURCE_RETURN_TYPE D3D12_RESOURCE_RETURN_TYPE;
56
57typedef D3D_CBUFFER_TYPE D3D12_CBUFFER_TYPE;
58
59
60typedef struct _D3D12_SIGNATURE_PARAMETER_DESC
61{
62 LPCSTR SemanticName; // Name of the semantic
63 UINT SemanticIndex; // Index of the semantic
64 UINT Register; // Number of member variables
65 D3D_NAME SystemValueType;// A predefined system value, or D3D_NAME_UNDEFINED if not applicable
66 D3D_REGISTER_COMPONENT_TYPE ComponentType; // Scalar type (e.g. uint, float, etc.)
67 BYTE Mask; // Mask to indicate which components of the register
68 // are used (combination of D3D10_COMPONENT_MASK values)
69 BYTE ReadWriteMask; // Mask to indicate whether a given component is
70 // never written (if this is an output signature) or
71 // always read (if this is an input signature).
72 // (combination of D3D_MASK_* values)
73 UINT Stream; // Stream index
74 D3D_MIN_PRECISION MinPrecision; // Minimum desired interpolation precision
75} D3D12_SIGNATURE_PARAMETER_DESC;
76
77typedef struct _D3D12_SHADER_BUFFER_DESC
78{
79 LPCSTR Name; // Name of the constant buffer
80 D3D_CBUFFER_TYPE Type; // Indicates type of buffer content
81 UINT Variables; // Number of member variables
82 UINT Size; // Size of CB (in bytes)
83 UINT uFlags; // Buffer description flags
84} D3D12_SHADER_BUFFER_DESC;
85
86typedef struct _D3D12_SHADER_VARIABLE_DESC
87{
88 LPCSTR Name; // Name of the variable
89 UINT StartOffset; // Offset in constant buffer's backing store
90 UINT Size; // Size of variable (in bytes)
91 UINT uFlags; // Variable flags
92 LPVOID DefaultValue; // Raw pointer to default value
93 UINT StartTexture; // First texture index (or -1 if no textures used)
94 UINT TextureSize; // Number of texture slots possibly used.
95 UINT StartSampler; // First sampler index (or -1 if no textures used)
96 UINT SamplerSize; // Number of sampler slots possibly used.
97} D3D12_SHADER_VARIABLE_DESC;
98
99typedef struct _D3D12_SHADER_TYPE_DESC
100{
101 D3D_SHADER_VARIABLE_CLASS Class; // Variable class (e.g. object, matrix, etc.)
102 D3D_SHADER_VARIABLE_TYPE Type; // Variable type (e.g. float, sampler, etc.)
103 UINT Rows; // Number of rows (for matrices, 1 for other numeric, 0 if not applicable)
104 UINT Columns; // Number of columns (for vectors & matrices, 1 for other numeric, 0 if not applicable)
105 UINT Elements; // Number of elements (0 if not an array)
106 UINT Members; // Number of members (0 if not a structure)
107 UINT Offset; // Offset from the start of structure (0 if not a structure member)
108 LPCSTR Name; // Name of type, can be NULL
109} D3D12_SHADER_TYPE_DESC;
110
111typedef D3D_TESSELLATOR_DOMAIN D3D12_TESSELLATOR_DOMAIN;
112
113typedef D3D_TESSELLATOR_PARTITIONING D3D12_TESSELLATOR_PARTITIONING;
114
115typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D12_TESSELLATOR_OUTPUT_PRIMITIVE;
116
117typedef struct _D3D12_SHADER_DESC
118{
119 UINT Version; // Shader version
120 LPCSTR Creator; // Creator string
121 UINT Flags; // Shader compilation/parse flags
122
123 UINT ConstantBuffers; // Number of constant buffers
124 UINT BoundResources; // Number of bound resources
125 UINT InputParameters; // Number of parameters in the input signature
126 UINT OutputParameters; // Number of parameters in the output signature
127
128 UINT InstructionCount; // Number of emitted instructions
129 UINT TempRegisterCount; // Number of temporary registers used
130 UINT TempArrayCount; // Number of temporary arrays used
131 UINT DefCount; // Number of constant defines
132 UINT DclCount; // Number of declarations (input + output)
133 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
134 UINT TextureLoadInstructions; // Number of texture load instructions
135 UINT TextureCompInstructions; // Number of texture comparison instructions
136 UINT TextureBiasInstructions; // Number of texture bias instructions
137 UINT TextureGradientInstructions; // Number of texture gradient instructions
138 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
139 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
140 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
141 UINT StaticFlowControlCount; // Number of static flow control instructions used
142 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
143 UINT MacroInstructionCount; // Number of macro instructions used
144 UINT ArrayInstructionCount; // Number of array instructions used
145 UINT CutInstructionCount; // Number of cut instructions used
146 UINT EmitInstructionCount; // Number of emit instructions used
147 D3D_PRIMITIVE_TOPOLOGY GSOutputTopology; // Geometry shader output topology
148 UINT GSMaxOutputVertexCount; // Geometry shader maximum output vertex count
149 D3D_PRIMITIVE InputPrimitive; // GS/HS input primitive
150 UINT PatchConstantParameters; // Number of parameters in the patch constant signature
151 UINT cGSInstanceCount; // Number of Geometry shader instances
152 UINT cControlPoints; // Number of control points in the HS->DS stage
153 D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive; // Primitive output by the tessellator
154 D3D_TESSELLATOR_PARTITIONING HSPartitioning; // Partitioning mode of the tessellator
155 D3D_TESSELLATOR_DOMAIN TessellatorDomain; // Domain of the tessellator (quad, tri, isoline)
156 // instruction counts
157 UINT cBarrierInstructions; // Number of barrier instructions in a compute shader
158 UINT cInterlockedInstructions; // Number of interlocked instructions
159 UINT cTextureStoreInstructions; // Number of texture writes
160} D3D12_SHADER_DESC;
161
162typedef struct _D3D12_SHADER_INPUT_BIND_DESC
163{
164 LPCSTR Name; // Name of the resource
165 D3D_SHADER_INPUT_TYPE Type; // Type of resource (e.g. texture, cbuffer, etc.)
166 UINT BindPoint; // Starting bind point
167 UINT BindCount; // Number of contiguous bind points (for arrays)
168
169 UINT uFlags; // Input binding flags
170 D3D_RESOURCE_RETURN_TYPE ReturnType; // Return type (if texture)
171 D3D_SRV_DIMENSION Dimension; // Dimension (if texture)
172 UINT NumSamples; // Number of samples (0 if not MS texture)
173 UINT Space; // Register space
174 UINT uID; // Range ID in the bytecode
175} D3D12_SHADER_INPUT_BIND_DESC;
176
177#define D3D_SHADER_REQUIRES_DOUBLES 0x00000001
178#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL 0x00000002
179#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE 0x00000004
180#define D3D_SHADER_REQUIRES_64_UAVS 0x00000008
181#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION 0x00000010
182#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS 0x00000020
183#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS 0x00000040
184#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING 0x00000080
185#define D3D_SHADER_REQUIRES_TILED_RESOURCES 0x00000100
186#define D3D_SHADER_REQUIRES_STENCIL_REF 0x00000200
187#define D3D_SHADER_REQUIRES_INNER_COVERAGE 0x00000400
188#define D3D_SHADER_REQUIRES_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00000800
189#define D3D_SHADER_REQUIRES_ROVS 0x00001000
190#define D3D_SHADER_REQUIRES_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x00002000
191#define D3D_SHADER_REQUIRES_WAVE_OPS 0x00004000
192#define D3D_SHADER_REQUIRES_INT64_OPS 0x00008000
193#define D3D_SHADER_REQUIRES_VIEW_ID 0x00010000
194#define D3D_SHADER_REQUIRES_BARYCENTRICS 0x00020000
195#define D3D_SHADER_REQUIRES_NATIVE_16BIT_OPS 0x00040000
196#define D3D_SHADER_REQUIRES_SHADING_RATE 0x00080000
197#define D3D_SHADER_REQUIRES_RAYTRACING_TIER_1_1 0x00100000
198#define D3D_SHADER_REQUIRES_SAMPLER_FEEDBACK 0x00200000
199#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_TYPED_RESOURCE 0x00400000
200#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_GROUP_SHARED 0x00800000
201#define D3D_SHADER_REQUIRES_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x01000000
202#define D3D_SHADER_REQUIRES_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x02000000
203#define D3D_SHADER_REQUIRES_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x04000000
204#define D3D_SHADER_REQUIRES_WAVE_MMA 0x08000000
205#define D3D_SHADER_REQUIRES_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
206#define D3D_SHADER_REQUIRES_ADVANCED_TEXTURE_OPS 0x20000000
207#define D3D_SHADER_REQUIRES_WRITEABLE_MSAA_TEXTURES 0x40000000
208#define D3D_SHADER_REQUIRES_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
209#define D3D_SHADER_REQUIRES_EXTENDED_COMMAND_INFO 0x100000000ull
210
211
212typedef struct _D3D12_LIBRARY_DESC
213{
214 LPCSTR Creator; // The name of the originator of the library.
215 UINT Flags; // Compilation flags.
216 UINT FunctionCount; // Number of functions exported from the library.
217} D3D12_LIBRARY_DESC;
218
219typedef struct _D3D12_FUNCTION_DESC
220{
221 UINT Version; // Shader version
222 LPCSTR Creator; // Creator string
223 UINT Flags; // Shader compilation/parse flags
224
225 UINT ConstantBuffers; // Number of constant buffers
226 UINT BoundResources; // Number of bound resources
227
228 UINT InstructionCount; // Number of emitted instructions
229 UINT TempRegisterCount; // Number of temporary registers used
230 UINT TempArrayCount; // Number of temporary arrays used
231 UINT DefCount; // Number of constant defines
232 UINT DclCount; // Number of declarations (input + output)
233 UINT TextureNormalInstructions; // Number of non-categorized texture instructions
234 UINT TextureLoadInstructions; // Number of texture load instructions
235 UINT TextureCompInstructions; // Number of texture comparison instructions
236 UINT TextureBiasInstructions; // Number of texture bias instructions
237 UINT TextureGradientInstructions; // Number of texture gradient instructions
238 UINT FloatInstructionCount; // Number of floating point arithmetic instructions used
239 UINT IntInstructionCount; // Number of signed integer arithmetic instructions used
240 UINT UintInstructionCount; // Number of unsigned integer arithmetic instructions used
241 UINT StaticFlowControlCount; // Number of static flow control instructions used
242 UINT DynamicFlowControlCount; // Number of dynamic flow control instructions used
243 UINT MacroInstructionCount; // Number of macro instructions used
244 UINT ArrayInstructionCount; // Number of array instructions used
245 UINT MovInstructionCount; // Number of mov instructions used
246 UINT MovcInstructionCount; // Number of movc instructions used
247 UINT ConversionInstructionCount; // Number of type conversion instructions used
248 UINT BitwiseInstructionCount; // Number of bitwise arithmetic instructions used
249 D3D_FEATURE_LEVEL MinFeatureLevel; // Min target of the function byte code
250 UINT64 RequiredFeatureFlags; // Required feature flags
251
252 LPCSTR Name; // Function name
253 INT FunctionParameterCount; // Number of logical parameters in the function signature (not including return)
254 BOOL HasReturn; // TRUE, if function returns a value, false - it is a subroutine
255 BOOL Has10Level9VertexShader; // TRUE, if there is a 10L9 VS blob
256 BOOL Has10Level9PixelShader; // TRUE, if there is a 10L9 PS blob
257} D3D12_FUNCTION_DESC;
258
259typedef struct _D3D12_PARAMETER_DESC
260{
261 LPCSTR Name; // Parameter name.
262 LPCSTR SemanticName; // Parameter semantic name (+index).
263 D3D_SHADER_VARIABLE_TYPE Type; // Element type.
264 D3D_SHADER_VARIABLE_CLASS Class; // Scalar/Vector/Matrix.
265 UINT Rows; // Rows are for matrix parameters.
266 UINT Columns; // Components or Columns in matrix.
267 D3D_INTERPOLATION_MODE InterpolationMode; // Interpolation mode.
268 D3D_PARAMETER_FLAGS Flags; // Parameter modifiers.
269
270 UINT FirstInRegister; // The first input register for this parameter.
271 UINT FirstInComponent; // The first input register component for this parameter.
272 UINT FirstOutRegister; // The first output register for this parameter.
273 UINT FirstOutComponent; // The first output register component for this parameter.
274} D3D12_PARAMETER_DESC;
275
276
277//////////////////////////////////////////////////////////////////////////////
278// Interfaces ////////////////////////////////////////////////////////////////
279//////////////////////////////////////////////////////////////////////////////
280
281typedef interface ID3D12ShaderReflectionType ID3D12ShaderReflectionType;
282typedef interface ID3D12ShaderReflectionType *LPD3D12SHADERREFLECTIONTYPE;
283
284typedef interface ID3D12ShaderReflectionVariable ID3D12ShaderReflectionVariable;
285typedef interface ID3D12ShaderReflectionVariable *LPD3D12SHADERREFLECTIONVARIABLE;
286
287typedef interface ID3D12ShaderReflectionConstantBuffer ID3D12ShaderReflectionConstantBuffer;
288typedef interface ID3D12ShaderReflectionConstantBuffer *LPD3D12SHADERREFLECTIONCONSTANTBUFFER;
289
290typedef interface ID3D12ShaderReflection ID3D12ShaderReflection;
291typedef interface ID3D12ShaderReflection *LPD3D12SHADERREFLECTION;
292
293typedef interface ID3D12LibraryReflection ID3D12LibraryReflection;
294typedef interface ID3D12LibraryReflection *LPD3D12LIBRARYREFLECTION;
295
296typedef interface ID3D12FunctionReflection ID3D12FunctionReflection;
297typedef interface ID3D12FunctionReflection *LPD3D12FUNCTIONREFLECTION;
298
299typedef interface ID3D12FunctionParameterReflection ID3D12FunctionParameterReflection;
300typedef interface ID3D12FunctionParameterReflection *LPD3D12FUNCTIONPARAMETERREFLECTION;
301
302
303// {E913C351-783D-48CA-A1D1-4F306284AD56}
304interface DECLSPEC_UUID("E913C351-783D-48CA-A1D1-4F306284AD56") ID3D12ShaderReflectionType;
305DEFINE_GUID(IID_ID3D12ShaderReflectionType,
3060xe913c351, 0x783d, 0x48ca, 0xa1, 0xd1, 0x4f, 0x30, 0x62, 0x84, 0xad, 0x56);
307
308#undef INTERFACE
309#define INTERFACE ID3D12ShaderReflectionType
310
311DECLARE_INTERFACE(ID3D12ShaderReflectionType)
312{
313 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_TYPE_DESC *pDesc) PURE;
314
315 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByIndex)(THIS_ _In_ UINT Index) PURE;
316 STDMETHOD_(ID3D12ShaderReflectionType*, GetMemberTypeByName)(THIS_ _In_ LPCSTR Name) PURE;
317 STDMETHOD_(LPCSTR, GetMemberTypeName)(THIS_ _In_ UINT Index) PURE;
318
319 STDMETHOD(IsEqual)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
320 STDMETHOD_(ID3D12ShaderReflectionType*, GetSubType)(THIS) PURE;
321 STDMETHOD_(ID3D12ShaderReflectionType*, GetBaseClass)(THIS) PURE;
322 STDMETHOD_(UINT, GetNumInterfaces)(THIS) PURE;
323 STDMETHOD_(ID3D12ShaderReflectionType*, GetInterfaceByIndex)(THIS_ _In_ UINT uIndex) PURE;
324 STDMETHOD(IsOfType)(THIS_ _In_ ID3D12ShaderReflectionType* pType) PURE;
325 STDMETHOD(ImplementsInterface)(THIS_ _In_ ID3D12ShaderReflectionType* pBase) PURE;
326};
327
328// {8337A8A6-A216-444A-B2F4-314733A73AEA}
329interface DECLSPEC_UUID("8337A8A6-A216-444A-B2F4-314733A73AEA") ID3D12ShaderReflectionVariable;
330DEFINE_GUID(IID_ID3D12ShaderReflectionVariable,
3310x8337a8a6, 0xa216, 0x444a, 0xb2, 0xf4, 0x31, 0x47, 0x33, 0xa7, 0x3a, 0xea);
332
333#undef INTERFACE
334#define INTERFACE ID3D12ShaderReflectionVariable
335
336DECLARE_INTERFACE(ID3D12ShaderReflectionVariable)
337{
338 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_VARIABLE_DESC *pDesc) PURE;
339
340 STDMETHOD_(ID3D12ShaderReflectionType*, GetType)(THIS) PURE;
341 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetBuffer)(THIS) PURE;
342
343 STDMETHOD_(UINT, GetInterfaceSlot)(THIS_ _In_ UINT uArrayIndex) PURE;
344};
345
346// {C59598B4-48B3-4869-B9B1-B1618B14A8B7}
347interface DECLSPEC_UUID("C59598B4-48B3-4869-B9B1-B1618B14A8B7") ID3D12ShaderReflectionConstantBuffer;
348DEFINE_GUID(IID_ID3D12ShaderReflectionConstantBuffer,
3490xc59598b4, 0x48b3, 0x4869, 0xb9, 0xb1, 0xb1, 0x61, 0x8b, 0x14, 0xa8, 0xb7);
350
351#undef INTERFACE
352#define INTERFACE ID3D12ShaderReflectionConstantBuffer
353
354DECLARE_INTERFACE(ID3D12ShaderReflectionConstantBuffer)
355{
356 STDMETHOD(GetDesc)(THIS_ D3D12_SHADER_BUFFER_DESC *pDesc) PURE;
357
358 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByIndex)(THIS_ _In_ UINT Index) PURE;
359 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
360};
361
362// The ID3D12ShaderReflection IID may change from SDK version to SDK version
363// if the reflection API changes. This prevents new code with the new API
364// from working with an old binary. Recompiling with the new header
365// will pick up the new IID.
366
367// {5A58797D-A72C-478D-8BA2-EFC6B0EFE88E}
368interface DECLSPEC_UUID("5A58797D-A72C-478D-8BA2-EFC6B0EFE88E") ID3D12ShaderReflection;
369DEFINE_GUID(IID_ID3D12ShaderReflection,
3700x5a58797d, 0xa72c, 0x478d, 0x8b, 0xa2, 0xef, 0xc6, 0xb0, 0xef, 0xe8, 0x8e);
371
372#undef INTERFACE
373#define INTERFACE ID3D12ShaderReflection
374
375DECLARE_INTERFACE_(ID3D12ShaderReflection, IUnknown)
376{
377 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid,
378 _Out_ LPVOID *ppv) PURE;
379 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
380 STDMETHOD_(ULONG, Release)(THIS) PURE;
381
382 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_SHADER_DESC *pDesc) PURE;
383
384 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByIndex)(THIS_ _In_ UINT Index) PURE;
385 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer*, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
386
387 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
388 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
389
390 STDMETHOD(GetInputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
391 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
392 STDMETHOD(GetOutputParameterDesc)(THIS_ _In_ UINT ParameterIndex,
393 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
394 STDMETHOD(GetPatchConstantParameterDesc)(THIS_ _In_ UINT ParameterIndex,
395 _Out_ D3D12_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
396
397 STDMETHOD_(ID3D12ShaderReflectionVariable*, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
398
399 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
400 _Out_ D3D12_SHADER_INPUT_BIND_DESC *pDesc) PURE;
401
402 STDMETHOD_(UINT, GetMovInstructionCount)(THIS) PURE;
403 STDMETHOD_(UINT, GetMovcInstructionCount)(THIS) PURE;
404 STDMETHOD_(UINT, GetConversionInstructionCount)(THIS) PURE;
405 STDMETHOD_(UINT, GetBitwiseInstructionCount)(THIS) PURE;
406
407 STDMETHOD_(D3D_PRIMITIVE, GetGSInputPrimitive)(THIS) PURE;
408 STDMETHOD_(BOOL, IsSampleFrequencyShader)(THIS) PURE;
409
410 STDMETHOD_(UINT, GetNumInterfaceSlots)(THIS) PURE;
411 STDMETHOD(GetMinFeatureLevel)(THIS_ _Out_ enum D3D_FEATURE_LEVEL* pLevel) PURE;
412
413 STDMETHOD_(UINT, GetThreadGroupSize)(THIS_
414 _Out_opt_ UINT* pSizeX,
415 _Out_opt_ UINT* pSizeY,
416 _Out_opt_ UINT* pSizeZ) PURE;
417
418 STDMETHOD_(UINT64, GetRequiresFlags)(THIS) PURE;
419};
420
421// {8E349D19-54DB-4A56-9DC9-119D87BDB804}
422interface DECLSPEC_UUID("8E349D19-54DB-4A56-9DC9-119D87BDB804") ID3D12LibraryReflection;
423DEFINE_GUID(IID_ID3D12LibraryReflection,
4240x8e349d19, 0x54db, 0x4a56, 0x9d, 0xc9, 0x11, 0x9d, 0x87, 0xbd, 0xb8, 0x4);
425
426#undef INTERFACE
427#define INTERFACE ID3D12LibraryReflection
428
429DECLARE_INTERFACE_(ID3D12LibraryReflection, IUnknown)
430{
431 STDMETHOD(QueryInterface)(THIS_ _In_ REFIID iid, _Out_ LPVOID * ppv) PURE;
432 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
433 STDMETHOD_(ULONG, Release)(THIS) PURE;
434
435 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_LIBRARY_DESC * pDesc) PURE;
436
437 STDMETHOD_(ID3D12FunctionReflection *, GetFunctionByIndex)(THIS_ _In_ INT FunctionIndex) PURE;
438};
439
440// {1108795C-2772-4BA9-B2A8-D464DC7E2799}
441interface DECLSPEC_UUID("1108795C-2772-4BA9-B2A8-D464DC7E2799") ID3D12FunctionReflection;
442DEFINE_GUID(IID_ID3D12FunctionReflection,
4430x1108795c, 0x2772, 0x4ba9, 0xb2, 0xa8, 0xd4, 0x64, 0xdc, 0x7e, 0x27, 0x99);
444
445#undef INTERFACE
446#define INTERFACE ID3D12FunctionReflection
447
448DECLARE_INTERFACE(ID3D12FunctionReflection)
449{
450 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_FUNCTION_DESC * pDesc) PURE;
451
452 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByIndex)(THIS_ _In_ UINT BufferIndex) PURE;
453 STDMETHOD_(ID3D12ShaderReflectionConstantBuffer *, GetConstantBufferByName)(THIS_ _In_ LPCSTR Name) PURE;
454
455 STDMETHOD(GetResourceBindingDesc)(THIS_ _In_ UINT ResourceIndex,
456 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
457
458 STDMETHOD_(ID3D12ShaderReflectionVariable *, GetVariableByName)(THIS_ _In_ LPCSTR Name) PURE;
459
460 STDMETHOD(GetResourceBindingDescByName)(THIS_ _In_ LPCSTR Name,
461 _Out_ D3D12_SHADER_INPUT_BIND_DESC * pDesc) PURE;
462
463 // Use D3D_RETURN_PARAMETER_INDEX to get description of the return value.
464 STDMETHOD_(ID3D12FunctionParameterReflection *, GetFunctionParameter)(THIS_ _In_ INT ParameterIndex) PURE;
465};
466
467// {EC25F42D-7006-4F2B-B33E-02CC3375733F}
468interface DECLSPEC_UUID("EC25F42D-7006-4F2B-B33E-02CC3375733F") ID3D12FunctionParameterReflection;
469DEFINE_GUID(IID_ID3D12FunctionParameterReflection,
4700xec25f42d, 0x7006, 0x4f2b, 0xb3, 0x3e, 0x2, 0xcc, 0x33, 0x75, 0x73, 0x3f);
471
472#undef INTERFACE
473#define INTERFACE ID3D12FunctionParameterReflection
474
475DECLARE_INTERFACE(ID3D12FunctionParameterReflection)
476{
477 STDMETHOD(GetDesc)(THIS_ _Out_ D3D12_PARAMETER_DESC * pDesc) PURE;
478};
479
480
481//////////////////////////////////////////////////////////////////////////////
482// APIs //////////////////////////////////////////////////////////////////////
483//////////////////////////////////////////////////////////////////////////////
484
485#ifdef __cplusplus
486extern "C" {
487#endif //__cplusplus
488
489#ifdef __cplusplus
490}
491#endif //__cplusplus
492
493#endif //__D3D12SHADER_H__
494
495
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h
new file mode 100644
index 0000000..843e78d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.h
@@ -0,0 +1,10726 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3d12video_h__
39#define __d3d12video_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3D12VideoDecoderHeap_FWD_DEFINED__
56#define __ID3D12VideoDecoderHeap_FWD_DEFINED__
57typedef interface ID3D12VideoDecoderHeap ID3D12VideoDecoderHeap;
58
59#endif /* __ID3D12VideoDecoderHeap_FWD_DEFINED__ */
60
61
62#ifndef __ID3D12VideoDevice_FWD_DEFINED__
63#define __ID3D12VideoDevice_FWD_DEFINED__
64typedef interface ID3D12VideoDevice ID3D12VideoDevice;
65
66#endif /* __ID3D12VideoDevice_FWD_DEFINED__ */
67
68
69#ifndef __ID3D12VideoDecoder_FWD_DEFINED__
70#define __ID3D12VideoDecoder_FWD_DEFINED__
71typedef interface ID3D12VideoDecoder ID3D12VideoDecoder;
72
73#endif /* __ID3D12VideoDecoder_FWD_DEFINED__ */
74
75
76#ifndef __ID3D12VideoProcessor_FWD_DEFINED__
77#define __ID3D12VideoProcessor_FWD_DEFINED__
78typedef interface ID3D12VideoProcessor ID3D12VideoProcessor;
79
80#endif /* __ID3D12VideoProcessor_FWD_DEFINED__ */
81
82
83#ifndef __ID3D12VideoDecodeCommandList_FWD_DEFINED__
84#define __ID3D12VideoDecodeCommandList_FWD_DEFINED__
85typedef interface ID3D12VideoDecodeCommandList ID3D12VideoDecodeCommandList;
86
87#endif /* __ID3D12VideoDecodeCommandList_FWD_DEFINED__ */
88
89
90#ifndef __ID3D12VideoProcessCommandList_FWD_DEFINED__
91#define __ID3D12VideoProcessCommandList_FWD_DEFINED__
92typedef interface ID3D12VideoProcessCommandList ID3D12VideoProcessCommandList;
93
94#endif /* __ID3D12VideoProcessCommandList_FWD_DEFINED__ */
95
96
97#ifndef __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
98#define __ID3D12VideoDecodeCommandList1_FWD_DEFINED__
99typedef interface ID3D12VideoDecodeCommandList1 ID3D12VideoDecodeCommandList1;
100
101#endif /* __ID3D12VideoDecodeCommandList1_FWD_DEFINED__ */
102
103
104#ifndef __ID3D12VideoProcessCommandList1_FWD_DEFINED__
105#define __ID3D12VideoProcessCommandList1_FWD_DEFINED__
106typedef interface ID3D12VideoProcessCommandList1 ID3D12VideoProcessCommandList1;
107
108#endif /* __ID3D12VideoProcessCommandList1_FWD_DEFINED__ */
109
110
111#ifndef __ID3D12VideoMotionEstimator_FWD_DEFINED__
112#define __ID3D12VideoMotionEstimator_FWD_DEFINED__
113typedef interface ID3D12VideoMotionEstimator ID3D12VideoMotionEstimator;
114
115#endif /* __ID3D12VideoMotionEstimator_FWD_DEFINED__ */
116
117
118#ifndef __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
119#define __ID3D12VideoMotionVectorHeap_FWD_DEFINED__
120typedef interface ID3D12VideoMotionVectorHeap ID3D12VideoMotionVectorHeap;
121
122#endif /* __ID3D12VideoMotionVectorHeap_FWD_DEFINED__ */
123
124
125#ifndef __ID3D12VideoDevice1_FWD_DEFINED__
126#define __ID3D12VideoDevice1_FWD_DEFINED__
127typedef interface ID3D12VideoDevice1 ID3D12VideoDevice1;
128
129#endif /* __ID3D12VideoDevice1_FWD_DEFINED__ */
130
131
132#ifndef __ID3D12VideoEncodeCommandList_FWD_DEFINED__
133#define __ID3D12VideoEncodeCommandList_FWD_DEFINED__
134typedef interface ID3D12VideoEncodeCommandList ID3D12VideoEncodeCommandList;
135
136#endif /* __ID3D12VideoEncodeCommandList_FWD_DEFINED__ */
137
138
139#ifndef __ID3D12VideoDecoder1_FWD_DEFINED__
140#define __ID3D12VideoDecoder1_FWD_DEFINED__
141typedef interface ID3D12VideoDecoder1 ID3D12VideoDecoder1;
142
143#endif /* __ID3D12VideoDecoder1_FWD_DEFINED__ */
144
145
146#ifndef __ID3D12VideoDecoderHeap1_FWD_DEFINED__
147#define __ID3D12VideoDecoderHeap1_FWD_DEFINED__
148typedef interface ID3D12VideoDecoderHeap1 ID3D12VideoDecoderHeap1;
149
150#endif /* __ID3D12VideoDecoderHeap1_FWD_DEFINED__ */
151
152
153#ifndef __ID3D12VideoProcessor1_FWD_DEFINED__
154#define __ID3D12VideoProcessor1_FWD_DEFINED__
155typedef interface ID3D12VideoProcessor1 ID3D12VideoProcessor1;
156
157#endif /* __ID3D12VideoProcessor1_FWD_DEFINED__ */
158
159
160#ifndef __ID3D12VideoExtensionCommand_FWD_DEFINED__
161#define __ID3D12VideoExtensionCommand_FWD_DEFINED__
162typedef interface ID3D12VideoExtensionCommand ID3D12VideoExtensionCommand;
163
164#endif /* __ID3D12VideoExtensionCommand_FWD_DEFINED__ */
165
166
167#ifndef __ID3D12VideoDevice2_FWD_DEFINED__
168#define __ID3D12VideoDevice2_FWD_DEFINED__
169typedef interface ID3D12VideoDevice2 ID3D12VideoDevice2;
170
171#endif /* __ID3D12VideoDevice2_FWD_DEFINED__ */
172
173
174#ifndef __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
175#define __ID3D12VideoDecodeCommandList2_FWD_DEFINED__
176typedef interface ID3D12VideoDecodeCommandList2 ID3D12VideoDecodeCommandList2;
177
178#endif /* __ID3D12VideoDecodeCommandList2_FWD_DEFINED__ */
179
180
181#ifndef __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
182#define __ID3D12VideoDecodeCommandList3_FWD_DEFINED__
183typedef interface ID3D12VideoDecodeCommandList3 ID3D12VideoDecodeCommandList3;
184
185#endif /* __ID3D12VideoDecodeCommandList3_FWD_DEFINED__ */
186
187
188#ifndef __ID3D12VideoProcessCommandList2_FWD_DEFINED__
189#define __ID3D12VideoProcessCommandList2_FWD_DEFINED__
190typedef interface ID3D12VideoProcessCommandList2 ID3D12VideoProcessCommandList2;
191
192#endif /* __ID3D12VideoProcessCommandList2_FWD_DEFINED__ */
193
194
195#ifndef __ID3D12VideoProcessCommandList3_FWD_DEFINED__
196#define __ID3D12VideoProcessCommandList3_FWD_DEFINED__
197typedef interface ID3D12VideoProcessCommandList3 ID3D12VideoProcessCommandList3;
198
199#endif /* __ID3D12VideoProcessCommandList3_FWD_DEFINED__ */
200
201
202#ifndef __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
203#define __ID3D12VideoEncodeCommandList1_FWD_DEFINED__
204typedef interface ID3D12VideoEncodeCommandList1 ID3D12VideoEncodeCommandList1;
205
206#endif /* __ID3D12VideoEncodeCommandList1_FWD_DEFINED__ */
207
208
209#ifndef __ID3D12VideoEncoder_FWD_DEFINED__
210#define __ID3D12VideoEncoder_FWD_DEFINED__
211typedef interface ID3D12VideoEncoder ID3D12VideoEncoder;
212
213#endif /* __ID3D12VideoEncoder_FWD_DEFINED__ */
214
215
216#ifndef __ID3D12VideoEncoderHeap_FWD_DEFINED__
217#define __ID3D12VideoEncoderHeap_FWD_DEFINED__
218typedef interface ID3D12VideoEncoderHeap ID3D12VideoEncoderHeap;
219
220#endif /* __ID3D12VideoEncoderHeap_FWD_DEFINED__ */
221
222
223#ifndef __ID3D12VideoDevice3_FWD_DEFINED__
224#define __ID3D12VideoDevice3_FWD_DEFINED__
225typedef interface ID3D12VideoDevice3 ID3D12VideoDevice3;
226
227#endif /* __ID3D12VideoDevice3_FWD_DEFINED__ */
228
229
230#ifndef __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
231#define __ID3D12VideoEncodeCommandList2_FWD_DEFINED__
232typedef interface ID3D12VideoEncodeCommandList2 ID3D12VideoEncodeCommandList2;
233
234#endif /* __ID3D12VideoEncodeCommandList2_FWD_DEFINED__ */
235
236
237#ifndef __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
238#define __ID3D12VideoEncodeCommandList3_FWD_DEFINED__
239typedef interface ID3D12VideoEncodeCommandList3 ID3D12VideoEncodeCommandList3;
240
241#endif /* __ID3D12VideoEncodeCommandList3_FWD_DEFINED__ */
242
243
244#ifndef __ID3D12VideoEncoderHeap1_FWD_DEFINED__
245#define __ID3D12VideoEncoderHeap1_FWD_DEFINED__
246typedef interface ID3D12VideoEncoderHeap1 ID3D12VideoEncoderHeap1;
247
248#endif /* __ID3D12VideoEncoderHeap1_FWD_DEFINED__ */
249
250
251#ifndef __ID3D12VideoDevice4_FWD_DEFINED__
252#define __ID3D12VideoDevice4_FWD_DEFINED__
253typedef interface ID3D12VideoDevice4 ID3D12VideoDevice4;
254
255#endif /* __ID3D12VideoDevice4_FWD_DEFINED__ */
256
257
258#ifndef __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
259#define __ID3D12VideoEncodeCommandList4_FWD_DEFINED__
260typedef interface ID3D12VideoEncodeCommandList4 ID3D12VideoEncodeCommandList4;
261
262#endif /* __ID3D12VideoEncodeCommandList4_FWD_DEFINED__ */
263
264
265/* header files for imported files */
266#include "oaidl.h"
267#include "ocidl.h"
268#include "dxgicommon.h"
269#include "d3d12.h"
270
271#ifdef __cplusplus
272extern "C"{
273#endif
274
275
276/* interface __MIDL_itf_d3d12video_0000_0000 */
277/* [local] */
278
279#include <winapifamily.h>
280#pragma region App Family
281#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)
282typedef
283enum D3D12_VIDEO_FIELD_TYPE
284 {
285 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
286 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
287 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2
288 } D3D12_VIDEO_FIELD_TYPE;
289
290typedef
291enum D3D12_VIDEO_FRAME_STEREO_FORMAT
292 {
293 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
294 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
295 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
296 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
297 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4
298 } D3D12_VIDEO_FRAME_STEREO_FORMAT;
299
300typedef struct D3D12_VIDEO_FORMAT
301 {
302 DXGI_FORMAT Format;
303 DXGI_COLOR_SPACE_TYPE ColorSpace;
304 } D3D12_VIDEO_FORMAT;
305
306typedef struct D3D12_VIDEO_SAMPLE
307 {
308 UINT Width;
309 UINT Height;
310 D3D12_VIDEO_FORMAT Format;
311 } D3D12_VIDEO_SAMPLE;
312
313typedef
314enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
315 {
316 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
317 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1
318 } D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
319
320typedef
321enum D3D12_FEATURE_VIDEO
322 {
323 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
324 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
325 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
326 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
327 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
328 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
329 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
330 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
331 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
332 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
333 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
334 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
335 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
336 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
337 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
338 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
339 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
340 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
341 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
342 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
343 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
344 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
345 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
346 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
347 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
348 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
349 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
350 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
351 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
352 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
353 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
354 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
355 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
356 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
357 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
358 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
359 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
360 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
361 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
362 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
363 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
364 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
365 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
366 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
367 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
368 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
369 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
370 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
371 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
372 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57
373 } D3D12_FEATURE_VIDEO;
374
375typedef
376enum D3D12_BITSTREAM_ENCRYPTION_TYPE
377 {
378 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0
379 } D3D12_BITSTREAM_ENCRYPTION_TYPE;
380
381typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
382 {
383 GUID DecodeProfile;
384 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
385 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
386 } D3D12_VIDEO_DECODE_CONFIGURATION;
387
388typedef struct D3D12_VIDEO_DECODER_DESC
389 {
390 UINT NodeMask;
391 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
392 } D3D12_VIDEO_DECODER_DESC;
393
394typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
395 {
396 UINT NodeMask;
397 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
398 UINT DecodeWidth;
399 UINT DecodeHeight;
400 DXGI_FORMAT Format;
401 DXGI_RATIONAL FrameRate;
402 UINT BitRate;
403 UINT MaxDecodePictureBufferCount;
404 } D3D12_VIDEO_DECODER_HEAP_DESC;
405
406typedef struct D3D12_VIDEO_SIZE_RANGE
407 {
408 UINT MaxWidth;
409 UINT MaxHeight;
410 UINT MinWidth;
411 UINT MinHeight;
412 } D3D12_VIDEO_SIZE_RANGE;
413
414typedef
415enum D3D12_VIDEO_PROCESS_FILTER
416 {
417 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
418 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
419 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
420 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
421 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
422 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
423 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
424 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7
425 } D3D12_VIDEO_PROCESS_FILTER;
426
427typedef
428enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
429 {
430 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0,
431 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = ( 1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS ) ,
432 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = ( 1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST ) ,
433 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = ( 1 << D3D12_VIDEO_PROCESS_FILTER_HUE ) ,
434 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION ) ,
435 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = ( 1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION ) ,
436 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT ) ,
437 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = ( 1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING ) ,
438 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = ( 1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT )
439 } D3D12_VIDEO_PROCESS_FILTER_FLAGS;
440
441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )
442typedef
443enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
444 {
445 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0,
446 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
447 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000
448 } D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
449
450DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )
451typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
452 {
453 BOOL Enable;
454 FLOAT Alpha;
455 } D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
456
457typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
458 {
459 BOOL Enable;
460 FLOAT Lower;
461 FLOAT Upper;
462 } D3D12_VIDEO_PROCESS_LUMA_KEY;
463
464typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
465 {
466 DXGI_FORMAT Format;
467 DXGI_COLOR_SPACE_TYPE ColorSpace;
468 DXGI_RATIONAL SourceAspectRatio;
469 DXGI_RATIONAL DestinationAspectRatio;
470 DXGI_RATIONAL FrameRate;
471 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
472 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
473 BOOL EnableOrientation;
474 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
475 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
476 D3D12_VIDEO_FIELD_TYPE FieldType;
477 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
478 BOOL EnableAlphaBlending;
479 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
480 UINT NumPastFrames;
481 UINT NumFutureFrames;
482 BOOL EnableAutoProcessing;
483 } D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
484
485typedef
486enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
487 {
488 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
489 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
490 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
491 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3
492 } D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
493
494typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
495 {
496 DXGI_FORMAT Format;
497 DXGI_COLOR_SPACE_TYPE ColorSpace;
498 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
499 UINT AlphaFillModeSourceStreamIndex;
500 FLOAT BackgroundColor[ 4 ];
501 DXGI_RATIONAL FrameRate;
502 BOOL EnableStereo;
503 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
504
505
506
507extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_c_ifspec;
508extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0000_v0_0_s_ifspec;
509
510#ifndef __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
511#define __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__
512
513/* interface ID3D12VideoDecoderHeap */
514/* [unique][local][object][uuid] */
515
516
517EXTERN_C const IID IID_ID3D12VideoDecoderHeap;
518
519#if defined(__cplusplus) && !defined(CINTERFACE)
520
521 MIDL_INTERFACE("0946B7C9-EBF6-4047-BB73-8683E27DBB1F")
522 ID3D12VideoDecoderHeap : public ID3D12Pageable
523 {
524 public:
525#if defined(_MSC_VER) || !defined(_WIN32)
526 virtual D3D12_VIDEO_DECODER_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
527#else
528 virtual D3D12_VIDEO_DECODER_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
529 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal) = 0;
530#endif
531
532 };
533
534
535#else /* C style interface */
536
537 typedef struct ID3D12VideoDecoderHeapVtbl
538 {
539 BEGIN_INTERFACE
540
541 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
542 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
543 ID3D12VideoDecoderHeap * This,
544 REFIID riid,
545 _COM_Outptr_ void **ppvObject);
546
547 DECLSPEC_XFGVIRT(IUnknown, AddRef)
548 ULONG ( STDMETHODCALLTYPE *AddRef )(
549 ID3D12VideoDecoderHeap * This);
550
551 DECLSPEC_XFGVIRT(IUnknown, Release)
552 ULONG ( STDMETHODCALLTYPE *Release )(
553 ID3D12VideoDecoderHeap * This);
554
555 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
556 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
557 ID3D12VideoDecoderHeap * This,
558 _In_ REFGUID guid,
559 _Inout_ UINT *pDataSize,
560 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
561
562 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
563 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
564 ID3D12VideoDecoderHeap * This,
565 _In_ REFGUID guid,
566 _In_ UINT DataSize,
567 _In_reads_bytes_opt_( DataSize ) const void *pData);
568
569 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
570 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
571 ID3D12VideoDecoderHeap * This,
572 _In_ REFGUID guid,
573 _In_opt_ const IUnknown *pData);
574
575 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
576 HRESULT ( STDMETHODCALLTYPE *SetName )(
577 ID3D12VideoDecoderHeap * This,
578 _In_z_ LPCWSTR Name);
579
580 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
581 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
582 ID3D12VideoDecoderHeap * This,
583 REFIID riid,
584 _COM_Outptr_opt_ void **ppvDevice);
585
586 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
587#if !defined(_WIN32)
588 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
589 ID3D12VideoDecoderHeap * This);
590
591#else
592 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
593 ID3D12VideoDecoderHeap * This,
594 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
595
596#endif
597
598 END_INTERFACE
599 } ID3D12VideoDecoderHeapVtbl;
600
601 interface ID3D12VideoDecoderHeap
602 {
603 CONST_VTBL struct ID3D12VideoDecoderHeapVtbl *lpVtbl;
604 };
605
606
607
608#ifdef COBJMACROS
609
610
611#define ID3D12VideoDecoderHeap_QueryInterface(This,riid,ppvObject) \
612 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
613
614#define ID3D12VideoDecoderHeap_AddRef(This) \
615 ( (This)->lpVtbl -> AddRef(This) )
616
617#define ID3D12VideoDecoderHeap_Release(This) \
618 ( (This)->lpVtbl -> Release(This) )
619
620
621#define ID3D12VideoDecoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
622 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
623
624#define ID3D12VideoDecoderHeap_SetPrivateData(This,guid,DataSize,pData) \
625 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
626
627#define ID3D12VideoDecoderHeap_SetPrivateDataInterface(This,guid,pData) \
628 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
629
630#define ID3D12VideoDecoderHeap_SetName(This,Name) \
631 ( (This)->lpVtbl -> SetName(This,Name) )
632
633
634#define ID3D12VideoDecoderHeap_GetDevice(This,riid,ppvDevice) \
635 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
636
637
638#if !defined(_WIN32)
639
640#define ID3D12VideoDecoderHeap_GetDesc(This) \
641 ( (This)->lpVtbl -> GetDesc(This) )
642#else
643#define ID3D12VideoDecoderHeap_GetDesc(This,RetVal) \
644 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
645#endif
646
647#endif /* COBJMACROS */
648
649
650#endif /* C style interface */
651
652
653
654
655#endif /* __ID3D12VideoDecoderHeap_INTERFACE_DEFINED__ */
656
657
658#ifndef __ID3D12VideoDevice_INTERFACE_DEFINED__
659#define __ID3D12VideoDevice_INTERFACE_DEFINED__
660
661/* interface ID3D12VideoDevice */
662/* [unique][local][object][uuid] */
663
664
665EXTERN_C const IID IID_ID3D12VideoDevice;
666
667#if defined(__cplusplus) && !defined(CINTERFACE)
668
669 MIDL_INTERFACE("1F052807-0B46-4ACC-8A89-364F793718A4")
670 ID3D12VideoDevice : public IUnknown
671 {
672 public:
673 virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
674 D3D12_FEATURE_VIDEO FeatureVideo,
675 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
676 UINT FeatureSupportDataSize) = 0;
677
678 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
679 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
680 _In_ REFIID riid,
681 _COM_Outptr_ void **ppVideoDecoder) = 0;
682
683 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap(
684 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
685 _In_ REFIID riid,
686 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
687
688 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
689 UINT NodeMask,
690 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
691 UINT NumInputStreamDescs,
692 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
693 _In_ REFIID riid,
694 _COM_Outptr_ void **ppVideoProcessor) = 0;
695
696 };
697
698
699#else /* C style interface */
700
701 typedef struct ID3D12VideoDeviceVtbl
702 {
703 BEGIN_INTERFACE
704
705 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
706 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
707 ID3D12VideoDevice * This,
708 REFIID riid,
709 _COM_Outptr_ void **ppvObject);
710
711 DECLSPEC_XFGVIRT(IUnknown, AddRef)
712 ULONG ( STDMETHODCALLTYPE *AddRef )(
713 ID3D12VideoDevice * This);
714
715 DECLSPEC_XFGVIRT(IUnknown, Release)
716 ULONG ( STDMETHODCALLTYPE *Release )(
717 ID3D12VideoDevice * This);
718
719 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
720 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
721 ID3D12VideoDevice * This,
722 D3D12_FEATURE_VIDEO FeatureVideo,
723 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
724 UINT FeatureSupportDataSize);
725
726 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
727 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
728 ID3D12VideoDevice * This,
729 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
730 _In_ REFIID riid,
731 _COM_Outptr_ void **ppVideoDecoder);
732
733 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
734 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
735 ID3D12VideoDevice * This,
736 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
737 _In_ REFIID riid,
738 _COM_Outptr_ void **ppVideoDecoderHeap);
739
740 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
741 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
742 ID3D12VideoDevice * This,
743 UINT NodeMask,
744 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
745 UINT NumInputStreamDescs,
746 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
747 _In_ REFIID riid,
748 _COM_Outptr_ void **ppVideoProcessor);
749
750 END_INTERFACE
751 } ID3D12VideoDeviceVtbl;
752
753 interface ID3D12VideoDevice
754 {
755 CONST_VTBL struct ID3D12VideoDeviceVtbl *lpVtbl;
756 };
757
758
759
760#ifdef COBJMACROS
761
762
763#define ID3D12VideoDevice_QueryInterface(This,riid,ppvObject) \
764 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
765
766#define ID3D12VideoDevice_AddRef(This) \
767 ( (This)->lpVtbl -> AddRef(This) )
768
769#define ID3D12VideoDevice_Release(This) \
770 ( (This)->lpVtbl -> Release(This) )
771
772
773#define ID3D12VideoDevice_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
774 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
775
776#define ID3D12VideoDevice_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
777 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
778
779#define ID3D12VideoDevice_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
780 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
781
782#define ID3D12VideoDevice_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
783 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
784
785#endif /* COBJMACROS */
786
787
788#endif /* C style interface */
789
790
791
792
793#endif /* __ID3D12VideoDevice_INTERFACE_DEFINED__ */
794
795
796#ifndef __ID3D12VideoDecoder_INTERFACE_DEFINED__
797#define __ID3D12VideoDecoder_INTERFACE_DEFINED__
798
799/* interface ID3D12VideoDecoder */
800/* [unique][local][object][uuid] */
801
802
803EXTERN_C const IID IID_ID3D12VideoDecoder;
804
805#if defined(__cplusplus) && !defined(CINTERFACE)
806
807 MIDL_INTERFACE("C59B6BDC-7720-4074-A136-17A156037470")
808 ID3D12VideoDecoder : public ID3D12Pageable
809 {
810 public:
811#if defined(_MSC_VER) || !defined(_WIN32)
812 virtual D3D12_VIDEO_DECODER_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
813#else
814 virtual D3D12_VIDEO_DECODER_DESC *STDMETHODCALLTYPE GetDesc(
815 D3D12_VIDEO_DECODER_DESC * RetVal) = 0;
816#endif
817
818 };
819
820
821#else /* C style interface */
822
823 typedef struct ID3D12VideoDecoderVtbl
824 {
825 BEGIN_INTERFACE
826
827 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
828 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
829 ID3D12VideoDecoder * This,
830 REFIID riid,
831 _COM_Outptr_ void **ppvObject);
832
833 DECLSPEC_XFGVIRT(IUnknown, AddRef)
834 ULONG ( STDMETHODCALLTYPE *AddRef )(
835 ID3D12VideoDecoder * This);
836
837 DECLSPEC_XFGVIRT(IUnknown, Release)
838 ULONG ( STDMETHODCALLTYPE *Release )(
839 ID3D12VideoDecoder * This);
840
841 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
842 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
843 ID3D12VideoDecoder * This,
844 _In_ REFGUID guid,
845 _Inout_ UINT *pDataSize,
846 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
847
848 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
849 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
850 ID3D12VideoDecoder * This,
851 _In_ REFGUID guid,
852 _In_ UINT DataSize,
853 _In_reads_bytes_opt_( DataSize ) const void *pData);
854
855 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
856 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
857 ID3D12VideoDecoder * This,
858 _In_ REFGUID guid,
859 _In_opt_ const IUnknown *pData);
860
861 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
862 HRESULT ( STDMETHODCALLTYPE *SetName )(
863 ID3D12VideoDecoder * This,
864 _In_z_ LPCWSTR Name);
865
866 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
867 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
868 ID3D12VideoDecoder * This,
869 REFIID riid,
870 _COM_Outptr_opt_ void **ppvDevice);
871
872 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
873#if !defined(_WIN32)
874 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
875 ID3D12VideoDecoder * This);
876
877#else
878 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
879 ID3D12VideoDecoder * This,
880 D3D12_VIDEO_DECODER_DESC * RetVal);
881
882#endif
883
884 END_INTERFACE
885 } ID3D12VideoDecoderVtbl;
886
887 interface ID3D12VideoDecoder
888 {
889 CONST_VTBL struct ID3D12VideoDecoderVtbl *lpVtbl;
890 };
891
892
893
894#ifdef COBJMACROS
895
896
897#define ID3D12VideoDecoder_QueryInterface(This,riid,ppvObject) \
898 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
899
900#define ID3D12VideoDecoder_AddRef(This) \
901 ( (This)->lpVtbl -> AddRef(This) )
902
903#define ID3D12VideoDecoder_Release(This) \
904 ( (This)->lpVtbl -> Release(This) )
905
906
907#define ID3D12VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) \
908 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
909
910#define ID3D12VideoDecoder_SetPrivateData(This,guid,DataSize,pData) \
911 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
912
913#define ID3D12VideoDecoder_SetPrivateDataInterface(This,guid,pData) \
914 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
915
916#define ID3D12VideoDecoder_SetName(This,Name) \
917 ( (This)->lpVtbl -> SetName(This,Name) )
918
919
920#define ID3D12VideoDecoder_GetDevice(This,riid,ppvDevice) \
921 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
922
923
924#if !defined(_WIN32)
925
926#define ID3D12VideoDecoder_GetDesc(This) \
927 ( (This)->lpVtbl -> GetDesc(This) )
928#else
929#define ID3D12VideoDecoder_GetDesc(This,RetVal) \
930 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
931#endif
932
933#endif /* COBJMACROS */
934
935
936#endif /* C style interface */
937
938
939
940
941#endif /* __ID3D12VideoDecoder_INTERFACE_DEFINED__ */
942
943
944/* interface __MIDL_itf_d3d12video_0000_0003 */
945/* [local] */
946
947typedef
948enum D3D12_VIDEO_DECODE_TIER
949 {
950 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
951 D3D12_VIDEO_DECODE_TIER_1 = 1,
952 D3D12_VIDEO_DECODE_TIER_2 = 2,
953 D3D12_VIDEO_DECODE_TIER_3 = 3
954 } D3D12_VIDEO_DECODE_TIER;
955
956typedef
957enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
958 {
959 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0,
960 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1
961 } D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
962
963DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )
964typedef
965enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
966 {
967 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0,
968 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
969 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
970 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
971 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8
972 } D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
973
974DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )
975typedef
976enum D3D12_VIDEO_DECODE_STATUS
977 {
978 D3D12_VIDEO_DECODE_STATUS_OK = 0,
979 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
980 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
981 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
982 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4
983 } D3D12_VIDEO_DECODE_STATUS;
984
985typedef
986enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
987 {
988 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
989 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
990 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
991 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3
992 } D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
993
994typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
995 {
996 UINT NodeIndex;
997 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
998 UINT Width;
999 UINT Height;
1000 DXGI_FORMAT DecodeFormat;
1001 DXGI_RATIONAL FrameRate;
1002 UINT BitRate;
1003 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;
1004 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags;
1005 D3D12_VIDEO_DECODE_TIER DecodeTier;
1006 } D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
1007
1008typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
1009 {
1010 UINT NodeIndex;
1011 UINT ProfileCount;
1012 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
1013
1014typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
1015 {
1016 UINT NodeIndex;
1017 UINT ProfileCount;
1018 _Field_size_full_(ProfileCount) GUID *pProfiles;
1019 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
1020
1021typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
1022 {
1023 UINT NodeIndex;
1024 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1025 UINT FormatCount;
1026 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
1027
1028typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
1029 {
1030 UINT NodeIndex;
1031 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1032 UINT FormatCount;
1033 _Field_size_full_(FormatCount) DXGI_FORMAT *pOutputFormats;
1034 } D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
1035
1036typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
1037 {
1038 BOOL IOCoherent;
1039 } D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
1040
1041typedef
1042enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
1043 {
1044 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
1045 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
1046 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
1047 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
1048 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
1049 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
1050 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3
1051 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
1052
1053typedef
1054enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
1055 {
1056 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0,
1057 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y ) ,
1058 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U ) ,
1059 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V ) ,
1060 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R ) ,
1061 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G ) ,
1062 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B ) ,
1063 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = ( 1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A )
1064 } D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
1065
1066DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )
1067typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
1068 {
1069 UINT NodeIndex;
1070 GUID DecodeProfile;
1071 UINT Width;
1072 UINT Height;
1073 DXGI_FORMAT DecodeFormat;
1074 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;
1075 UINT BinCount;
1076 UINT CounterBitDepth;
1077 } D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
1078
1079typedef
1080enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
1081 {
1082 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0,
1083 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1
1084 } D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
1085
1086DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )
1087typedef
1088enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
1089 {
1090 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0,
1091 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
1092 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
1093 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4
1094 } D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
1095
1096DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )
1097typedef struct D3D12_VIDEO_SCALE_SUPPORT
1098 {
1099 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
1100 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
1101 } D3D12_VIDEO_SCALE_SUPPORT;
1102
1103typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
1104 {
1105 UINT NodeIndex;
1106 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
1107 D3D12_VIDEO_SAMPLE DecodeSample;
1108 D3D12_VIDEO_FORMAT OutputFormat;
1109 DXGI_RATIONAL FrameRate;
1110 UINT BitRate;
1111 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;
1112 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1113 } D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
1114
1115typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
1116 {
1117 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
1118 UINT64 MemoryPoolL0Size;
1119 UINT64 MemoryPoolL1Size;
1120 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
1121
1122typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
1123 {
1124 UINT NodeMask;
1125 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
1126 UINT NumInputStreamDescs;
1127 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
1128 UINT64 MemoryPoolL0Size;
1129 UINT64 MemoryPoolL1Size;
1130 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
1131
1132typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
1133 {
1134 UINT64 Status;
1135 UINT64 NumMacroblocksAffected;
1136 DXGI_RATIONAL FrameRate;
1137 UINT BitRate;
1138 } D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
1139
1140typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
1141 {
1142 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
1143 UINT Size;
1144 _Field_size_bytes_full_(Size) void *pData;
1145 } D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
1146
1147typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
1148 {
1149 UINT NumTexture2Ds;
1150 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
1151 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
1152 _Field_size_full_opt_(NumTexture2Ds) ID3D12VideoDecoderHeap **ppHeaps;
1153 } D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
1154
1155typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
1156 {
1157 ID3D12Resource *pBuffer;
1158 UINT64 Offset;
1159 UINT64 Size;
1160 } D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
1161
1162typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
1163 {
1164 BOOL Enable;
1165 ID3D12Resource *pReferenceTexture2D;
1166 UINT ReferenceSubresource;
1167 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
1168 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
1169 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
1170
1171typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
1172 {
1173 UINT NumFrameArguments;
1174 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[ 10 ];
1175 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
1176 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
1177 ID3D12VideoDecoderHeap *pHeap;
1178 } D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
1179
1180typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
1181 {
1182 ID3D12Resource *pOutputTexture2D;
1183 UINT OutputSubresource;
1184 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
1185 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
1186
1187
1188
1189extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_c_ifspec;
1190extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0003_v0_0_s_ifspec;
1191
1192#ifndef __ID3D12VideoProcessor_INTERFACE_DEFINED__
1193#define __ID3D12VideoProcessor_INTERFACE_DEFINED__
1194
1195/* interface ID3D12VideoProcessor */
1196/* [unique][local][object][uuid] */
1197
1198
1199EXTERN_C const IID IID_ID3D12VideoProcessor;
1200
1201#if defined(__cplusplus) && !defined(CINTERFACE)
1202
1203 MIDL_INTERFACE("304FDB32-BEDE-410A-8545-943AC6A46138")
1204 ID3D12VideoProcessor : public ID3D12Pageable
1205 {
1206 public:
1207 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
1208
1209 virtual UINT STDMETHODCALLTYPE GetNumInputStreamDescs( void) = 0;
1210
1211 virtual HRESULT STDMETHODCALLTYPE GetInputStreamDescs(
1212 UINT NumInputStreamDescs,
1213 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs) = 0;
1214
1215#if defined(_MSC_VER) || !defined(_WIN32)
1216 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC STDMETHODCALLTYPE GetOutputStreamDesc( void) = 0;
1217#else
1218 virtual D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *STDMETHODCALLTYPE GetOutputStreamDesc(
1219 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal) = 0;
1220#endif
1221
1222 };
1223
1224
1225#else /* C style interface */
1226
1227 typedef struct ID3D12VideoProcessorVtbl
1228 {
1229 BEGIN_INTERFACE
1230
1231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1233 ID3D12VideoProcessor * This,
1234 REFIID riid,
1235 _COM_Outptr_ void **ppvObject);
1236
1237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1238 ULONG ( STDMETHODCALLTYPE *AddRef )(
1239 ID3D12VideoProcessor * This);
1240
1241 DECLSPEC_XFGVIRT(IUnknown, Release)
1242 ULONG ( STDMETHODCALLTYPE *Release )(
1243 ID3D12VideoProcessor * This);
1244
1245 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1246 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1247 ID3D12VideoProcessor * This,
1248 _In_ REFGUID guid,
1249 _Inout_ UINT *pDataSize,
1250 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1251
1252 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1253 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1254 ID3D12VideoProcessor * This,
1255 _In_ REFGUID guid,
1256 _In_ UINT DataSize,
1257 _In_reads_bytes_opt_( DataSize ) const void *pData);
1258
1259 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1260 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1261 ID3D12VideoProcessor * This,
1262 _In_ REFGUID guid,
1263 _In_opt_ const IUnknown *pData);
1264
1265 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1266 HRESULT ( STDMETHODCALLTYPE *SetName )(
1267 ID3D12VideoProcessor * This,
1268 _In_z_ LPCWSTR Name);
1269
1270 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1271 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1272 ID3D12VideoProcessor * This,
1273 REFIID riid,
1274 _COM_Outptr_opt_ void **ppvDevice);
1275
1276 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
1277 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
1278 ID3D12VideoProcessor * This);
1279
1280 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
1281 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
1282 ID3D12VideoProcessor * This);
1283
1284 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
1285 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
1286 ID3D12VideoProcessor * This,
1287 UINT NumInputStreamDescs,
1288 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
1289
1290 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
1291#if !defined(_WIN32)
1292 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1293 ID3D12VideoProcessor * This);
1294
1295#else
1296 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
1297 ID3D12VideoProcessor * This,
1298 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
1299
1300#endif
1301
1302 END_INTERFACE
1303 } ID3D12VideoProcessorVtbl;
1304
1305 interface ID3D12VideoProcessor
1306 {
1307 CONST_VTBL struct ID3D12VideoProcessorVtbl *lpVtbl;
1308 };
1309
1310
1311
1312#ifdef COBJMACROS
1313
1314
1315#define ID3D12VideoProcessor_QueryInterface(This,riid,ppvObject) \
1316 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1317
1318#define ID3D12VideoProcessor_AddRef(This) \
1319 ( (This)->lpVtbl -> AddRef(This) )
1320
1321#define ID3D12VideoProcessor_Release(This) \
1322 ( (This)->lpVtbl -> Release(This) )
1323
1324
1325#define ID3D12VideoProcessor_GetPrivateData(This,guid,pDataSize,pData) \
1326 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1327
1328#define ID3D12VideoProcessor_SetPrivateData(This,guid,DataSize,pData) \
1329 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1330
1331#define ID3D12VideoProcessor_SetPrivateDataInterface(This,guid,pData) \
1332 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1333
1334#define ID3D12VideoProcessor_SetName(This,Name) \
1335 ( (This)->lpVtbl -> SetName(This,Name) )
1336
1337
1338#define ID3D12VideoProcessor_GetDevice(This,riid,ppvDevice) \
1339 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1340
1341
1342
1343#define ID3D12VideoProcessor_GetNodeMask(This) \
1344 ( (This)->lpVtbl -> GetNodeMask(This) )
1345
1346#define ID3D12VideoProcessor_GetNumInputStreamDescs(This) \
1347 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
1348
1349#define ID3D12VideoProcessor_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
1350 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
1351#if !defined(_WIN32)
1352
1353#define ID3D12VideoProcessor_GetOutputStreamDesc(This) \
1354 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
1355#else
1356#define ID3D12VideoProcessor_GetOutputStreamDesc(This,RetVal) \
1357 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
1358#endif
1359
1360#endif /* COBJMACROS */
1361
1362
1363#endif /* C style interface */
1364
1365
1366
1367
1368#endif /* __ID3D12VideoProcessor_INTERFACE_DEFINED__ */
1369
1370
1371/* interface __MIDL_itf_d3d12video_0000_0004 */
1372/* [local] */
1373
1374typedef
1375enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
1376 {
1377 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0,
1378 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
1379 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
1380 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
1381 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
1382 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
1383 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
1384 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40
1385 } D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
1386
1387DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )
1388typedef
1389enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
1390 {
1391 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0,
1392 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x1,
1393 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x2,
1394 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x4,
1395 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x8,
1396 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
1397 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
1398 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
1399 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
1400 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000
1401 } D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
1402
1403DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )
1404typedef
1405enum D3D12_VIDEO_PROCESS_ORIENTATION
1406 {
1407 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
1408 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
1409 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
1410 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
1411 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
1412 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
1413 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
1414 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7
1415 } D3D12_VIDEO_PROCESS_ORIENTATION;
1416
1417typedef
1418enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
1419 {
1420 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0,
1421 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
1422 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2
1423 } D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
1424
1425DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )
1426typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
1427 {
1428 INT Minimum;
1429 INT Maximum;
1430 INT Default;
1431 FLOAT Multiplier;
1432 } D3D12_VIDEO_PROCESS_FILTER_RANGE;
1433
1434typedef
1435enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
1436 {
1437 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0,
1438 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1
1439 } D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
1440
1441DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )
1442typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
1443 {
1444 UINT NodeIndex;
1445 D3D12_VIDEO_SAMPLE InputSample;
1446 D3D12_VIDEO_FIELD_TYPE InputFieldType;
1447 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;
1448 DXGI_RATIONAL InputFrameRate;
1449 D3D12_VIDEO_FORMAT OutputFormat;
1450 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;
1451 DXGI_RATIONAL OutputFrameRate;
1452 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;
1453 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;
1454 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1455 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;
1456 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;
1457 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;
1458 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[ 32 ];
1459 } D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
1460
1461typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
1462 {
1463 UINT NodeIndex;
1464 UINT MaxInputStreams;
1465 } D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
1466
1467typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
1468 {
1469 UINT NodeIndex;
1470 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
1471 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;
1472 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;
1473 DXGI_RATIONAL InputFrameRate;
1474 DXGI_RATIONAL OutputFrameRate;
1475 BOOL EnableAutoProcessing;
1476 UINT PastFrames;
1477 UINT FutureFrames;
1478 } D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
1479
1480typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
1481 {
1482 UINT NumPastFrames;
1483 ID3D12Resource **ppPastFrames;
1484 UINT *pPastSubresources;
1485 UINT NumFutureFrames;
1486 ID3D12Resource **ppFutureFrames;
1487 UINT *pFutureSubresources;
1488 } D3D12_VIDEO_PROCESS_REFERENCE_SET;
1489
1490typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
1491 {
1492 D3D12_RECT SourceRectangle;
1493 D3D12_RECT DestinationRectangle;
1494 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
1495 } D3D12_VIDEO_PROCESS_TRANSFORM;
1496
1497typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
1498 {
1499 UINT OutputIndex;
1500 UINT InputFrameOrField;
1501 } D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
1502
1503typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
1504 {
1505 ID3D12Resource *pTexture2D;
1506 UINT Subresource;
1507 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
1508 } D3D12_VIDEO_PROCESS_INPUT_STREAM;
1509
1510typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
1511 {
1512 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
1513 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
1514 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
1515 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
1516 INT FilterLevels[ 32 ];
1517 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
1518 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
1519
1520typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
1521 {
1522 ID3D12Resource *pTexture2D;
1523 UINT Subresource;
1524 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
1525
1526typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
1527 {
1528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[ 2 ];
1529 D3D12_RECT TargetRectangle;
1530 } D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
1531
1532
1533
1534extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_c_ifspec;
1535extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0004_v0_0_s_ifspec;
1536
1537#ifndef __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1538#define __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__
1539
1540/* interface ID3D12VideoDecodeCommandList */
1541/* [unique][local][object][uuid] */
1542
1543
1544EXTERN_C const IID IID_ID3D12VideoDecodeCommandList;
1545
1546#if defined(__cplusplus) && !defined(CINTERFACE)
1547
1548 MIDL_INTERFACE("3B60536E-AD29-4E64-A269-F853837E5E53")
1549 ID3D12VideoDecodeCommandList : public ID3D12CommandList
1550 {
1551 public:
1552 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1553
1554 virtual HRESULT STDMETHODCALLTYPE Reset(
1555 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1556
1557 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1558
1559 virtual void STDMETHODCALLTYPE ResourceBarrier(
1560 _In_ UINT NumBarriers,
1561 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1562
1563 virtual void STDMETHODCALLTYPE DiscardResource(
1564 _In_ ID3D12Resource *pResource,
1565 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1566
1567 virtual void STDMETHODCALLTYPE BeginQuery(
1568 _In_ ID3D12QueryHeap *pQueryHeap,
1569 _In_ D3D12_QUERY_TYPE Type,
1570 _In_ UINT Index) = 0;
1571
1572 virtual void STDMETHODCALLTYPE EndQuery(
1573 _In_ ID3D12QueryHeap *pQueryHeap,
1574 _In_ D3D12_QUERY_TYPE Type,
1575 _In_ UINT Index) = 0;
1576
1577 virtual void STDMETHODCALLTYPE ResolveQueryData(
1578 _In_ ID3D12QueryHeap *pQueryHeap,
1579 _In_ D3D12_QUERY_TYPE Type,
1580 _In_ UINT StartIndex,
1581 _In_ UINT NumQueries,
1582 _In_ ID3D12Resource *pDestinationBuffer,
1583 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1584
1585 virtual void STDMETHODCALLTYPE SetPredication(
1586 _In_opt_ ID3D12Resource *pBuffer,
1587 _In_ UINT64 AlignedBufferOffset,
1588 _In_ D3D12_PREDICATION_OP Operation) = 0;
1589
1590 virtual void STDMETHODCALLTYPE SetMarker(
1591 UINT Metadata,
1592 _In_reads_bytes_opt_(Size) const void *pData,
1593 UINT Size) = 0;
1594
1595 virtual void STDMETHODCALLTYPE BeginEvent(
1596 UINT Metadata,
1597 _In_reads_bytes_opt_(Size) const void *pData,
1598 UINT Size) = 0;
1599
1600 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1601
1602 virtual void STDMETHODCALLTYPE DecodeFrame(
1603 _In_ ID3D12VideoDecoder *pDecoder,
1604 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1605 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1606
1607 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1608 UINT Count,
1609 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1610 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1611
1612 };
1613
1614
1615#else /* C style interface */
1616
1617 typedef struct ID3D12VideoDecodeCommandListVtbl
1618 {
1619 BEGIN_INTERFACE
1620
1621 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1622 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1623 ID3D12VideoDecodeCommandList * This,
1624 REFIID riid,
1625 _COM_Outptr_ void **ppvObject);
1626
1627 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1628 ULONG ( STDMETHODCALLTYPE *AddRef )(
1629 ID3D12VideoDecodeCommandList * This);
1630
1631 DECLSPEC_XFGVIRT(IUnknown, Release)
1632 ULONG ( STDMETHODCALLTYPE *Release )(
1633 ID3D12VideoDecodeCommandList * This);
1634
1635 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1636 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1637 ID3D12VideoDecodeCommandList * This,
1638 _In_ REFGUID guid,
1639 _Inout_ UINT *pDataSize,
1640 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1641
1642 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1643 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1644 ID3D12VideoDecodeCommandList * This,
1645 _In_ REFGUID guid,
1646 _In_ UINT DataSize,
1647 _In_reads_bytes_opt_( DataSize ) const void *pData);
1648
1649 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1650 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1651 ID3D12VideoDecodeCommandList * This,
1652 _In_ REFGUID guid,
1653 _In_opt_ const IUnknown *pData);
1654
1655 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1656 HRESULT ( STDMETHODCALLTYPE *SetName )(
1657 ID3D12VideoDecodeCommandList * This,
1658 _In_z_ LPCWSTR Name);
1659
1660 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1661 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1662 ID3D12VideoDecodeCommandList * This,
1663 REFIID riid,
1664 _COM_Outptr_opt_ void **ppvDevice);
1665
1666 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1667 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1668 ID3D12VideoDecodeCommandList * This);
1669
1670 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
1671 HRESULT ( STDMETHODCALLTYPE *Close )(
1672 ID3D12VideoDecodeCommandList * This);
1673
1674 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
1675 HRESULT ( STDMETHODCALLTYPE *Reset )(
1676 ID3D12VideoDecodeCommandList * This,
1677 _In_ ID3D12CommandAllocator *pAllocator);
1678
1679 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
1680 void ( STDMETHODCALLTYPE *ClearState )(
1681 ID3D12VideoDecodeCommandList * This);
1682
1683 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
1684 void ( STDMETHODCALLTYPE *ResourceBarrier )(
1685 ID3D12VideoDecodeCommandList * This,
1686 _In_ UINT NumBarriers,
1687 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
1688
1689 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
1690 void ( STDMETHODCALLTYPE *DiscardResource )(
1691 ID3D12VideoDecodeCommandList * This,
1692 _In_ ID3D12Resource *pResource,
1693 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
1694
1695 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
1696 void ( STDMETHODCALLTYPE *BeginQuery )(
1697 ID3D12VideoDecodeCommandList * This,
1698 _In_ ID3D12QueryHeap *pQueryHeap,
1699 _In_ D3D12_QUERY_TYPE Type,
1700 _In_ UINT Index);
1701
1702 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
1703 void ( STDMETHODCALLTYPE *EndQuery )(
1704 ID3D12VideoDecodeCommandList * This,
1705 _In_ ID3D12QueryHeap *pQueryHeap,
1706 _In_ D3D12_QUERY_TYPE Type,
1707 _In_ UINT Index);
1708
1709 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
1710 void ( STDMETHODCALLTYPE *ResolveQueryData )(
1711 ID3D12VideoDecodeCommandList * This,
1712 _In_ ID3D12QueryHeap *pQueryHeap,
1713 _In_ D3D12_QUERY_TYPE Type,
1714 _In_ UINT StartIndex,
1715 _In_ UINT NumQueries,
1716 _In_ ID3D12Resource *pDestinationBuffer,
1717 _In_ UINT64 AlignedDestinationBufferOffset);
1718
1719 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
1720 void ( STDMETHODCALLTYPE *SetPredication )(
1721 ID3D12VideoDecodeCommandList * This,
1722 _In_opt_ ID3D12Resource *pBuffer,
1723 _In_ UINT64 AlignedBufferOffset,
1724 _In_ D3D12_PREDICATION_OP Operation);
1725
1726 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
1727 void ( STDMETHODCALLTYPE *SetMarker )(
1728 ID3D12VideoDecodeCommandList * This,
1729 UINT Metadata,
1730 _In_reads_bytes_opt_(Size) const void *pData,
1731 UINT Size);
1732
1733 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
1734 void ( STDMETHODCALLTYPE *BeginEvent )(
1735 ID3D12VideoDecodeCommandList * This,
1736 UINT Metadata,
1737 _In_reads_bytes_opt_(Size) const void *pData,
1738 UINT Size);
1739
1740 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
1741 void ( STDMETHODCALLTYPE *EndEvent )(
1742 ID3D12VideoDecodeCommandList * This);
1743
1744 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
1745 void ( STDMETHODCALLTYPE *DecodeFrame )(
1746 ID3D12VideoDecodeCommandList * This,
1747 _In_ ID3D12VideoDecoder *pDecoder,
1748 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1749 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
1750
1751 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
1752 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
1753 ID3D12VideoDecodeCommandList * This,
1754 UINT Count,
1755 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1756 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
1757
1758 END_INTERFACE
1759 } ID3D12VideoDecodeCommandListVtbl;
1760
1761 interface ID3D12VideoDecodeCommandList
1762 {
1763 CONST_VTBL struct ID3D12VideoDecodeCommandListVtbl *lpVtbl;
1764 };
1765
1766
1767
1768#ifdef COBJMACROS
1769
1770
1771#define ID3D12VideoDecodeCommandList_QueryInterface(This,riid,ppvObject) \
1772 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
1773
1774#define ID3D12VideoDecodeCommandList_AddRef(This) \
1775 ( (This)->lpVtbl -> AddRef(This) )
1776
1777#define ID3D12VideoDecodeCommandList_Release(This) \
1778 ( (This)->lpVtbl -> Release(This) )
1779
1780
1781#define ID3D12VideoDecodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
1782 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
1783
1784#define ID3D12VideoDecodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
1785 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
1786
1787#define ID3D12VideoDecodeCommandList_SetPrivateDataInterface(This,guid,pData) \
1788 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
1789
1790#define ID3D12VideoDecodeCommandList_SetName(This,Name) \
1791 ( (This)->lpVtbl -> SetName(This,Name) )
1792
1793
1794#define ID3D12VideoDecodeCommandList_GetDevice(This,riid,ppvDevice) \
1795 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
1796
1797
1798#define ID3D12VideoDecodeCommandList_GetType(This) \
1799 ( (This)->lpVtbl -> GetType(This) )
1800
1801
1802#define ID3D12VideoDecodeCommandList_Close(This) \
1803 ( (This)->lpVtbl -> Close(This) )
1804
1805#define ID3D12VideoDecodeCommandList_Reset(This,pAllocator) \
1806 ( (This)->lpVtbl -> Reset(This,pAllocator) )
1807
1808#define ID3D12VideoDecodeCommandList_ClearState(This) \
1809 ( (This)->lpVtbl -> ClearState(This) )
1810
1811#define ID3D12VideoDecodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
1812 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
1813
1814#define ID3D12VideoDecodeCommandList_DiscardResource(This,pResource,pRegion) \
1815 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
1816
1817#define ID3D12VideoDecodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
1818 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
1819
1820#define ID3D12VideoDecodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
1821 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
1822
1823#define ID3D12VideoDecodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
1824 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
1825
1826#define ID3D12VideoDecodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
1827 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
1828
1829#define ID3D12VideoDecodeCommandList_SetMarker(This,Metadata,pData,Size) \
1830 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
1831
1832#define ID3D12VideoDecodeCommandList_BeginEvent(This,Metadata,pData,Size) \
1833 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
1834
1835#define ID3D12VideoDecodeCommandList_EndEvent(This) \
1836 ( (This)->lpVtbl -> EndEvent(This) )
1837
1838#define ID3D12VideoDecodeCommandList_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
1839 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
1840
1841#define ID3D12VideoDecodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
1842 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
1843
1844#endif /* COBJMACROS */
1845
1846
1847#endif /* C style interface */
1848
1849
1850
1851
1852#endif /* __ID3D12VideoDecodeCommandList_INTERFACE_DEFINED__ */
1853
1854
1855#ifndef __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1856#define __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__
1857
1858/* interface ID3D12VideoProcessCommandList */
1859/* [unique][local][object][uuid] */
1860
1861
1862EXTERN_C const IID IID_ID3D12VideoProcessCommandList;
1863
1864#if defined(__cplusplus) && !defined(CINTERFACE)
1865
1866 MIDL_INTERFACE("AEB2543A-167F-4682-ACC8-D159ED4A6209")
1867 ID3D12VideoProcessCommandList : public ID3D12CommandList
1868 {
1869 public:
1870 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
1871
1872 virtual HRESULT STDMETHODCALLTYPE Reset(
1873 _In_ ID3D12CommandAllocator *pAllocator) = 0;
1874
1875 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
1876
1877 virtual void STDMETHODCALLTYPE ResourceBarrier(
1878 _In_ UINT NumBarriers,
1879 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
1880
1881 virtual void STDMETHODCALLTYPE DiscardResource(
1882 _In_ ID3D12Resource *pResource,
1883 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
1884
1885 virtual void STDMETHODCALLTYPE BeginQuery(
1886 _In_ ID3D12QueryHeap *pQueryHeap,
1887 _In_ D3D12_QUERY_TYPE Type,
1888 _In_ UINT Index) = 0;
1889
1890 virtual void STDMETHODCALLTYPE EndQuery(
1891 _In_ ID3D12QueryHeap *pQueryHeap,
1892 _In_ D3D12_QUERY_TYPE Type,
1893 _In_ UINT Index) = 0;
1894
1895 virtual void STDMETHODCALLTYPE ResolveQueryData(
1896 _In_ ID3D12QueryHeap *pQueryHeap,
1897 _In_ D3D12_QUERY_TYPE Type,
1898 _In_ UINT StartIndex,
1899 _In_ UINT NumQueries,
1900 _In_ ID3D12Resource *pDestinationBuffer,
1901 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
1902
1903 virtual void STDMETHODCALLTYPE SetPredication(
1904 _In_opt_ ID3D12Resource *pBuffer,
1905 _In_ UINT64 AlignedBufferOffset,
1906 _In_ D3D12_PREDICATION_OP Operation) = 0;
1907
1908 virtual void STDMETHODCALLTYPE SetMarker(
1909 UINT Metadata,
1910 _In_reads_bytes_opt_(Size) const void *pData,
1911 UINT Size) = 0;
1912
1913 virtual void STDMETHODCALLTYPE BeginEvent(
1914 UINT Metadata,
1915 _In_reads_bytes_opt_(Size) const void *pData,
1916 UINT Size) = 0;
1917
1918 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
1919
1920 virtual void STDMETHODCALLTYPE ProcessFrames(
1921 _In_ ID3D12VideoProcessor *pVideoProcessor,
1922 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
1923 UINT NumInputStreams,
1924 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
1925
1926 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
1927 UINT Count,
1928 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1929 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
1930
1931 };
1932
1933
1934#else /* C style interface */
1935
1936 typedef struct ID3D12VideoProcessCommandListVtbl
1937 {
1938 BEGIN_INTERFACE
1939
1940 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
1941 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
1942 ID3D12VideoProcessCommandList * This,
1943 REFIID riid,
1944 _COM_Outptr_ void **ppvObject);
1945
1946 DECLSPEC_XFGVIRT(IUnknown, AddRef)
1947 ULONG ( STDMETHODCALLTYPE *AddRef )(
1948 ID3D12VideoProcessCommandList * This);
1949
1950 DECLSPEC_XFGVIRT(IUnknown, Release)
1951 ULONG ( STDMETHODCALLTYPE *Release )(
1952 ID3D12VideoProcessCommandList * This);
1953
1954 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
1955 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
1956 ID3D12VideoProcessCommandList * This,
1957 _In_ REFGUID guid,
1958 _Inout_ UINT *pDataSize,
1959 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
1960
1961 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
1962 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
1963 ID3D12VideoProcessCommandList * This,
1964 _In_ REFGUID guid,
1965 _In_ UINT DataSize,
1966 _In_reads_bytes_opt_( DataSize ) const void *pData);
1967
1968 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
1969 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
1970 ID3D12VideoProcessCommandList * This,
1971 _In_ REFGUID guid,
1972 _In_opt_ const IUnknown *pData);
1973
1974 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
1975 HRESULT ( STDMETHODCALLTYPE *SetName )(
1976 ID3D12VideoProcessCommandList * This,
1977 _In_z_ LPCWSTR Name);
1978
1979 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
1980 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
1981 ID3D12VideoProcessCommandList * This,
1982 REFIID riid,
1983 _COM_Outptr_opt_ void **ppvDevice);
1984
1985 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
1986 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
1987 ID3D12VideoProcessCommandList * This);
1988
1989 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
1990 HRESULT ( STDMETHODCALLTYPE *Close )(
1991 ID3D12VideoProcessCommandList * This);
1992
1993 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
1994 HRESULT ( STDMETHODCALLTYPE *Reset )(
1995 ID3D12VideoProcessCommandList * This,
1996 _In_ ID3D12CommandAllocator *pAllocator);
1997
1998 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
1999 void ( STDMETHODCALLTYPE *ClearState )(
2000 ID3D12VideoProcessCommandList * This);
2001
2002 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2003 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2004 ID3D12VideoProcessCommandList * This,
2005 _In_ UINT NumBarriers,
2006 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2007
2008 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2009 void ( STDMETHODCALLTYPE *DiscardResource )(
2010 ID3D12VideoProcessCommandList * This,
2011 _In_ ID3D12Resource *pResource,
2012 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2013
2014 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2015 void ( STDMETHODCALLTYPE *BeginQuery )(
2016 ID3D12VideoProcessCommandList * This,
2017 _In_ ID3D12QueryHeap *pQueryHeap,
2018 _In_ D3D12_QUERY_TYPE Type,
2019 _In_ UINT Index);
2020
2021 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2022 void ( STDMETHODCALLTYPE *EndQuery )(
2023 ID3D12VideoProcessCommandList * This,
2024 _In_ ID3D12QueryHeap *pQueryHeap,
2025 _In_ D3D12_QUERY_TYPE Type,
2026 _In_ UINT Index);
2027
2028 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2029 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2030 ID3D12VideoProcessCommandList * This,
2031 _In_ ID3D12QueryHeap *pQueryHeap,
2032 _In_ D3D12_QUERY_TYPE Type,
2033 _In_ UINT StartIndex,
2034 _In_ UINT NumQueries,
2035 _In_ ID3D12Resource *pDestinationBuffer,
2036 _In_ UINT64 AlignedDestinationBufferOffset);
2037
2038 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2039 void ( STDMETHODCALLTYPE *SetPredication )(
2040 ID3D12VideoProcessCommandList * This,
2041 _In_opt_ ID3D12Resource *pBuffer,
2042 _In_ UINT64 AlignedBufferOffset,
2043 _In_ D3D12_PREDICATION_OP Operation);
2044
2045 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2046 void ( STDMETHODCALLTYPE *SetMarker )(
2047 ID3D12VideoProcessCommandList * This,
2048 UINT Metadata,
2049 _In_reads_bytes_opt_(Size) const void *pData,
2050 UINT Size);
2051
2052 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2053 void ( STDMETHODCALLTYPE *BeginEvent )(
2054 ID3D12VideoProcessCommandList * This,
2055 UINT Metadata,
2056 _In_reads_bytes_opt_(Size) const void *pData,
2057 UINT Size);
2058
2059 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2060 void ( STDMETHODCALLTYPE *EndEvent )(
2061 ID3D12VideoProcessCommandList * This);
2062
2063 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2064 void ( STDMETHODCALLTYPE *ProcessFrames )(
2065 ID3D12VideoProcessCommandList * This,
2066 _In_ ID3D12VideoProcessor *pVideoProcessor,
2067 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2068 UINT NumInputStreams,
2069 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2070
2071 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2072 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2073 ID3D12VideoProcessCommandList * This,
2074 UINT Count,
2075 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2076 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2077
2078 END_INTERFACE
2079 } ID3D12VideoProcessCommandListVtbl;
2080
2081 interface ID3D12VideoProcessCommandList
2082 {
2083 CONST_VTBL struct ID3D12VideoProcessCommandListVtbl *lpVtbl;
2084 };
2085
2086
2087
2088#ifdef COBJMACROS
2089
2090
2091#define ID3D12VideoProcessCommandList_QueryInterface(This,riid,ppvObject) \
2092 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2093
2094#define ID3D12VideoProcessCommandList_AddRef(This) \
2095 ( (This)->lpVtbl -> AddRef(This) )
2096
2097#define ID3D12VideoProcessCommandList_Release(This) \
2098 ( (This)->lpVtbl -> Release(This) )
2099
2100
2101#define ID3D12VideoProcessCommandList_GetPrivateData(This,guid,pDataSize,pData) \
2102 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2103
2104#define ID3D12VideoProcessCommandList_SetPrivateData(This,guid,DataSize,pData) \
2105 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2106
2107#define ID3D12VideoProcessCommandList_SetPrivateDataInterface(This,guid,pData) \
2108 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2109
2110#define ID3D12VideoProcessCommandList_SetName(This,Name) \
2111 ( (This)->lpVtbl -> SetName(This,Name) )
2112
2113
2114#define ID3D12VideoProcessCommandList_GetDevice(This,riid,ppvDevice) \
2115 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2116
2117
2118#define ID3D12VideoProcessCommandList_GetType(This) \
2119 ( (This)->lpVtbl -> GetType(This) )
2120
2121
2122#define ID3D12VideoProcessCommandList_Close(This) \
2123 ( (This)->lpVtbl -> Close(This) )
2124
2125#define ID3D12VideoProcessCommandList_Reset(This,pAllocator) \
2126 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2127
2128#define ID3D12VideoProcessCommandList_ClearState(This) \
2129 ( (This)->lpVtbl -> ClearState(This) )
2130
2131#define ID3D12VideoProcessCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
2132 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2133
2134#define ID3D12VideoProcessCommandList_DiscardResource(This,pResource,pRegion) \
2135 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2136
2137#define ID3D12VideoProcessCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
2138 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2139
2140#define ID3D12VideoProcessCommandList_EndQuery(This,pQueryHeap,Type,Index) \
2141 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2142
2143#define ID3D12VideoProcessCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2144 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2145
2146#define ID3D12VideoProcessCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2147 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2148
2149#define ID3D12VideoProcessCommandList_SetMarker(This,Metadata,pData,Size) \
2150 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2151
2152#define ID3D12VideoProcessCommandList_BeginEvent(This,Metadata,pData,Size) \
2153 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2154
2155#define ID3D12VideoProcessCommandList_EndEvent(This) \
2156 ( (This)->lpVtbl -> EndEvent(This) )
2157
2158#define ID3D12VideoProcessCommandList_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2159 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2160
2161#define ID3D12VideoProcessCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
2162 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2163
2164#endif /* COBJMACROS */
2165
2166
2167#endif /* C style interface */
2168
2169
2170
2171
2172#endif /* __ID3D12VideoProcessCommandList_INTERFACE_DEFINED__ */
2173
2174
2175/* interface __MIDL_itf_d3d12video_0000_0006 */
2176/* [local] */
2177
2178typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
2179 {
2180 UINT64 Offset;
2181 ID3D12Resource *pBuffer;
2182 } D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
2183
2184typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
2185 {
2186 BOOL Enable;
2187 ID3D12Resource *pReferenceTexture2D;
2188 UINT ReferenceSubresource;
2189 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
2190 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
2191 UINT OutputWidth;
2192 UINT OutputHeight;
2193 } D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
2194
2195typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
2196 {
2197 ID3D12Resource *pOutputTexture2D;
2198 UINT OutputSubresource;
2199 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
2200 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[ 4 ];
2201 } D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
2202
2203
2204
2205extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_c_ifspec;
2206extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0006_v0_0_s_ifspec;
2207
2208#ifndef __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2209#define __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__
2210
2211/* interface ID3D12VideoDecodeCommandList1 */
2212/* [unique][local][object][uuid] */
2213
2214
2215EXTERN_C const IID IID_ID3D12VideoDecodeCommandList1;
2216
2217#if defined(__cplusplus) && !defined(CINTERFACE)
2218
2219 MIDL_INTERFACE("D52F011B-B56E-453C-A05A-A7F311C8F472")
2220 ID3D12VideoDecodeCommandList1 : public ID3D12VideoDecodeCommandList
2221 {
2222 public:
2223 virtual void STDMETHODCALLTYPE DecodeFrame1(
2224 _In_ ID3D12VideoDecoder *pDecoder,
2225 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2226 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments) = 0;
2227
2228 };
2229
2230
2231#else /* C style interface */
2232
2233 typedef struct ID3D12VideoDecodeCommandList1Vtbl
2234 {
2235 BEGIN_INTERFACE
2236
2237 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2238 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2239 ID3D12VideoDecodeCommandList1 * This,
2240 REFIID riid,
2241 _COM_Outptr_ void **ppvObject);
2242
2243 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2244 ULONG ( STDMETHODCALLTYPE *AddRef )(
2245 ID3D12VideoDecodeCommandList1 * This);
2246
2247 DECLSPEC_XFGVIRT(IUnknown, Release)
2248 ULONG ( STDMETHODCALLTYPE *Release )(
2249 ID3D12VideoDecodeCommandList1 * This);
2250
2251 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2252 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2253 ID3D12VideoDecodeCommandList1 * This,
2254 _In_ REFGUID guid,
2255 _Inout_ UINT *pDataSize,
2256 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2257
2258 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2259 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2260 ID3D12VideoDecodeCommandList1 * This,
2261 _In_ REFGUID guid,
2262 _In_ UINT DataSize,
2263 _In_reads_bytes_opt_( DataSize ) const void *pData);
2264
2265 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2266 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2267 ID3D12VideoDecodeCommandList1 * This,
2268 _In_ REFGUID guid,
2269 _In_opt_ const IUnknown *pData);
2270
2271 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2272 HRESULT ( STDMETHODCALLTYPE *SetName )(
2273 ID3D12VideoDecodeCommandList1 * This,
2274 _In_z_ LPCWSTR Name);
2275
2276 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2277 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2278 ID3D12VideoDecodeCommandList1 * This,
2279 REFIID riid,
2280 _COM_Outptr_opt_ void **ppvDevice);
2281
2282 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2283 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2284 ID3D12VideoDecodeCommandList1 * This);
2285
2286 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
2287 HRESULT ( STDMETHODCALLTYPE *Close )(
2288 ID3D12VideoDecodeCommandList1 * This);
2289
2290 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
2291 HRESULT ( STDMETHODCALLTYPE *Reset )(
2292 ID3D12VideoDecodeCommandList1 * This,
2293 _In_ ID3D12CommandAllocator *pAllocator);
2294
2295 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
2296 void ( STDMETHODCALLTYPE *ClearState )(
2297 ID3D12VideoDecodeCommandList1 * This);
2298
2299 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
2300 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2301 ID3D12VideoDecodeCommandList1 * This,
2302 _In_ UINT NumBarriers,
2303 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2304
2305 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
2306 void ( STDMETHODCALLTYPE *DiscardResource )(
2307 ID3D12VideoDecodeCommandList1 * This,
2308 _In_ ID3D12Resource *pResource,
2309 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2310
2311 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
2312 void ( STDMETHODCALLTYPE *BeginQuery )(
2313 ID3D12VideoDecodeCommandList1 * This,
2314 _In_ ID3D12QueryHeap *pQueryHeap,
2315 _In_ D3D12_QUERY_TYPE Type,
2316 _In_ UINT Index);
2317
2318 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
2319 void ( STDMETHODCALLTYPE *EndQuery )(
2320 ID3D12VideoDecodeCommandList1 * This,
2321 _In_ ID3D12QueryHeap *pQueryHeap,
2322 _In_ D3D12_QUERY_TYPE Type,
2323 _In_ UINT Index);
2324
2325 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
2326 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2327 ID3D12VideoDecodeCommandList1 * This,
2328 _In_ ID3D12QueryHeap *pQueryHeap,
2329 _In_ D3D12_QUERY_TYPE Type,
2330 _In_ UINT StartIndex,
2331 _In_ UINT NumQueries,
2332 _In_ ID3D12Resource *pDestinationBuffer,
2333 _In_ UINT64 AlignedDestinationBufferOffset);
2334
2335 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
2336 void ( STDMETHODCALLTYPE *SetPredication )(
2337 ID3D12VideoDecodeCommandList1 * This,
2338 _In_opt_ ID3D12Resource *pBuffer,
2339 _In_ UINT64 AlignedBufferOffset,
2340 _In_ D3D12_PREDICATION_OP Operation);
2341
2342 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
2343 void ( STDMETHODCALLTYPE *SetMarker )(
2344 ID3D12VideoDecodeCommandList1 * This,
2345 UINT Metadata,
2346 _In_reads_bytes_opt_(Size) const void *pData,
2347 UINT Size);
2348
2349 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
2350 void ( STDMETHODCALLTYPE *BeginEvent )(
2351 ID3D12VideoDecodeCommandList1 * This,
2352 UINT Metadata,
2353 _In_reads_bytes_opt_(Size) const void *pData,
2354 UINT Size);
2355
2356 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
2357 void ( STDMETHODCALLTYPE *EndEvent )(
2358 ID3D12VideoDecodeCommandList1 * This);
2359
2360 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
2361 void ( STDMETHODCALLTYPE *DecodeFrame )(
2362 ID3D12VideoDecodeCommandList1 * This,
2363 _In_ ID3D12VideoDecoder *pDecoder,
2364 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2365 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2366
2367 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
2368 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2369 ID3D12VideoDecodeCommandList1 * This,
2370 UINT Count,
2371 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2372 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2373
2374 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
2375 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
2376 ID3D12VideoDecodeCommandList1 * This,
2377 _In_ ID3D12VideoDecoder *pDecoder,
2378 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
2379 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
2380
2381 END_INTERFACE
2382 } ID3D12VideoDecodeCommandList1Vtbl;
2383
2384 interface ID3D12VideoDecodeCommandList1
2385 {
2386 CONST_VTBL struct ID3D12VideoDecodeCommandList1Vtbl *lpVtbl;
2387 };
2388
2389
2390
2391#ifdef COBJMACROS
2392
2393
2394#define ID3D12VideoDecodeCommandList1_QueryInterface(This,riid,ppvObject) \
2395 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2396
2397#define ID3D12VideoDecodeCommandList1_AddRef(This) \
2398 ( (This)->lpVtbl -> AddRef(This) )
2399
2400#define ID3D12VideoDecodeCommandList1_Release(This) \
2401 ( (This)->lpVtbl -> Release(This) )
2402
2403
2404#define ID3D12VideoDecodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2405 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2406
2407#define ID3D12VideoDecodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2408 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2409
2410#define ID3D12VideoDecodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
2411 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2412
2413#define ID3D12VideoDecodeCommandList1_SetName(This,Name) \
2414 ( (This)->lpVtbl -> SetName(This,Name) )
2415
2416
2417#define ID3D12VideoDecodeCommandList1_GetDevice(This,riid,ppvDevice) \
2418 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2419
2420
2421#define ID3D12VideoDecodeCommandList1_GetType(This) \
2422 ( (This)->lpVtbl -> GetType(This) )
2423
2424
2425#define ID3D12VideoDecodeCommandList1_Close(This) \
2426 ( (This)->lpVtbl -> Close(This) )
2427
2428#define ID3D12VideoDecodeCommandList1_Reset(This,pAllocator) \
2429 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2430
2431#define ID3D12VideoDecodeCommandList1_ClearState(This) \
2432 ( (This)->lpVtbl -> ClearState(This) )
2433
2434#define ID3D12VideoDecodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2435 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2436
2437#define ID3D12VideoDecodeCommandList1_DiscardResource(This,pResource,pRegion) \
2438 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2439
2440#define ID3D12VideoDecodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2441 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2442
2443#define ID3D12VideoDecodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2444 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2445
2446#define ID3D12VideoDecodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2447 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2448
2449#define ID3D12VideoDecodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2450 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2451
2452#define ID3D12VideoDecodeCommandList1_SetMarker(This,Metadata,pData,Size) \
2453 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2454
2455#define ID3D12VideoDecodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
2456 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2457
2458#define ID3D12VideoDecodeCommandList1_EndEvent(This) \
2459 ( (This)->lpVtbl -> EndEvent(This) )
2460
2461#define ID3D12VideoDecodeCommandList1_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
2462 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
2463
2464#define ID3D12VideoDecodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2465 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2466
2467
2468#define ID3D12VideoDecodeCommandList1_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
2469 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
2470
2471#endif /* COBJMACROS */
2472
2473
2474#endif /* C style interface */
2475
2476
2477
2478
2479#endif /* __ID3D12VideoDecodeCommandList1_INTERFACE_DEFINED__ */
2480
2481
2482/* interface __MIDL_itf_d3d12video_0000_0007 */
2483/* [local] */
2484
2485typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
2486 {
2487 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[ 2 ];
2488 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
2489 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
2490 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
2491 INT FilterLevels[ 32 ];
2492 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
2493 D3D12_VIDEO_FIELD_TYPE FieldType;
2494 } D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
2495
2496
2497
2498extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_c_ifspec;
2499extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0007_v0_0_s_ifspec;
2500
2501#ifndef __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2502#define __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__
2503
2504/* interface ID3D12VideoProcessCommandList1 */
2505/* [unique][local][object][uuid] */
2506
2507
2508EXTERN_C const IID IID_ID3D12VideoProcessCommandList1;
2509
2510#if defined(__cplusplus) && !defined(CINTERFACE)
2511
2512 MIDL_INTERFACE("542C5C4D-7596-434F-8C93-4EFA6766F267")
2513 ID3D12VideoProcessCommandList1 : public ID3D12VideoProcessCommandList
2514 {
2515 public:
2516 virtual void STDMETHODCALLTYPE ProcessFrames1(
2517 _In_ ID3D12VideoProcessor *pVideoProcessor,
2518 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2519 UINT NumInputStreams,
2520 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments) = 0;
2521
2522 };
2523
2524
2525#else /* C style interface */
2526
2527 typedef struct ID3D12VideoProcessCommandList1Vtbl
2528 {
2529 BEGIN_INTERFACE
2530
2531 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2532 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2533 ID3D12VideoProcessCommandList1 * This,
2534 REFIID riid,
2535 _COM_Outptr_ void **ppvObject);
2536
2537 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2538 ULONG ( STDMETHODCALLTYPE *AddRef )(
2539 ID3D12VideoProcessCommandList1 * This);
2540
2541 DECLSPEC_XFGVIRT(IUnknown, Release)
2542 ULONG ( STDMETHODCALLTYPE *Release )(
2543 ID3D12VideoProcessCommandList1 * This);
2544
2545 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2546 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2547 ID3D12VideoProcessCommandList1 * This,
2548 _In_ REFGUID guid,
2549 _Inout_ UINT *pDataSize,
2550 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2551
2552 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2553 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2554 ID3D12VideoProcessCommandList1 * This,
2555 _In_ REFGUID guid,
2556 _In_ UINT DataSize,
2557 _In_reads_bytes_opt_( DataSize ) const void *pData);
2558
2559 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2560 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2561 ID3D12VideoProcessCommandList1 * This,
2562 _In_ REFGUID guid,
2563 _In_opt_ const IUnknown *pData);
2564
2565 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2566 HRESULT ( STDMETHODCALLTYPE *SetName )(
2567 ID3D12VideoProcessCommandList1 * This,
2568 _In_z_ LPCWSTR Name);
2569
2570 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2571 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2572 ID3D12VideoProcessCommandList1 * This,
2573 REFIID riid,
2574 _COM_Outptr_opt_ void **ppvDevice);
2575
2576 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
2577 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
2578 ID3D12VideoProcessCommandList1 * This);
2579
2580 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
2581 HRESULT ( STDMETHODCALLTYPE *Close )(
2582 ID3D12VideoProcessCommandList1 * This);
2583
2584 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
2585 HRESULT ( STDMETHODCALLTYPE *Reset )(
2586 ID3D12VideoProcessCommandList1 * This,
2587 _In_ ID3D12CommandAllocator *pAllocator);
2588
2589 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
2590 void ( STDMETHODCALLTYPE *ClearState )(
2591 ID3D12VideoProcessCommandList1 * This);
2592
2593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
2594 void ( STDMETHODCALLTYPE *ResourceBarrier )(
2595 ID3D12VideoProcessCommandList1 * This,
2596 _In_ UINT NumBarriers,
2597 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
2598
2599 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
2600 void ( STDMETHODCALLTYPE *DiscardResource )(
2601 ID3D12VideoProcessCommandList1 * This,
2602 _In_ ID3D12Resource *pResource,
2603 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
2604
2605 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
2606 void ( STDMETHODCALLTYPE *BeginQuery )(
2607 ID3D12VideoProcessCommandList1 * This,
2608 _In_ ID3D12QueryHeap *pQueryHeap,
2609 _In_ D3D12_QUERY_TYPE Type,
2610 _In_ UINT Index);
2611
2612 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
2613 void ( STDMETHODCALLTYPE *EndQuery )(
2614 ID3D12VideoProcessCommandList1 * This,
2615 _In_ ID3D12QueryHeap *pQueryHeap,
2616 _In_ D3D12_QUERY_TYPE Type,
2617 _In_ UINT Index);
2618
2619 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
2620 void ( STDMETHODCALLTYPE *ResolveQueryData )(
2621 ID3D12VideoProcessCommandList1 * This,
2622 _In_ ID3D12QueryHeap *pQueryHeap,
2623 _In_ D3D12_QUERY_TYPE Type,
2624 _In_ UINT StartIndex,
2625 _In_ UINT NumQueries,
2626 _In_ ID3D12Resource *pDestinationBuffer,
2627 _In_ UINT64 AlignedDestinationBufferOffset);
2628
2629 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
2630 void ( STDMETHODCALLTYPE *SetPredication )(
2631 ID3D12VideoProcessCommandList1 * This,
2632 _In_opt_ ID3D12Resource *pBuffer,
2633 _In_ UINT64 AlignedBufferOffset,
2634 _In_ D3D12_PREDICATION_OP Operation);
2635
2636 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
2637 void ( STDMETHODCALLTYPE *SetMarker )(
2638 ID3D12VideoProcessCommandList1 * This,
2639 UINT Metadata,
2640 _In_reads_bytes_opt_(Size) const void *pData,
2641 UINT Size);
2642
2643 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
2644 void ( STDMETHODCALLTYPE *BeginEvent )(
2645 ID3D12VideoProcessCommandList1 * This,
2646 UINT Metadata,
2647 _In_reads_bytes_opt_(Size) const void *pData,
2648 UINT Size);
2649
2650 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
2651 void ( STDMETHODCALLTYPE *EndEvent )(
2652 ID3D12VideoProcessCommandList1 * This);
2653
2654 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
2655 void ( STDMETHODCALLTYPE *ProcessFrames )(
2656 ID3D12VideoProcessCommandList1 * This,
2657 _In_ ID3D12VideoProcessor *pVideoProcessor,
2658 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2659 UINT NumInputStreams,
2660 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
2661
2662 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
2663 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
2664 ID3D12VideoProcessCommandList1 * This,
2665 UINT Count,
2666 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
2667 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
2668
2669 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
2670 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
2671 ID3D12VideoProcessCommandList1 * This,
2672 _In_ ID3D12VideoProcessor *pVideoProcessor,
2673 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
2674 UINT NumInputStreams,
2675 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
2676
2677 END_INTERFACE
2678 } ID3D12VideoProcessCommandList1Vtbl;
2679
2680 interface ID3D12VideoProcessCommandList1
2681 {
2682 CONST_VTBL struct ID3D12VideoProcessCommandList1Vtbl *lpVtbl;
2683 };
2684
2685
2686
2687#ifdef COBJMACROS
2688
2689
2690#define ID3D12VideoProcessCommandList1_QueryInterface(This,riid,ppvObject) \
2691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2692
2693#define ID3D12VideoProcessCommandList1_AddRef(This) \
2694 ( (This)->lpVtbl -> AddRef(This) )
2695
2696#define ID3D12VideoProcessCommandList1_Release(This) \
2697 ( (This)->lpVtbl -> Release(This) )
2698
2699
2700#define ID3D12VideoProcessCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
2701 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2702
2703#define ID3D12VideoProcessCommandList1_SetPrivateData(This,guid,DataSize,pData) \
2704 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2705
2706#define ID3D12VideoProcessCommandList1_SetPrivateDataInterface(This,guid,pData) \
2707 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2708
2709#define ID3D12VideoProcessCommandList1_SetName(This,Name) \
2710 ( (This)->lpVtbl -> SetName(This,Name) )
2711
2712
2713#define ID3D12VideoProcessCommandList1_GetDevice(This,riid,ppvDevice) \
2714 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2715
2716
2717#define ID3D12VideoProcessCommandList1_GetType(This) \
2718 ( (This)->lpVtbl -> GetType(This) )
2719
2720
2721#define ID3D12VideoProcessCommandList1_Close(This) \
2722 ( (This)->lpVtbl -> Close(This) )
2723
2724#define ID3D12VideoProcessCommandList1_Reset(This,pAllocator) \
2725 ( (This)->lpVtbl -> Reset(This,pAllocator) )
2726
2727#define ID3D12VideoProcessCommandList1_ClearState(This) \
2728 ( (This)->lpVtbl -> ClearState(This) )
2729
2730#define ID3D12VideoProcessCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
2731 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
2732
2733#define ID3D12VideoProcessCommandList1_DiscardResource(This,pResource,pRegion) \
2734 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
2735
2736#define ID3D12VideoProcessCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
2737 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
2738
2739#define ID3D12VideoProcessCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
2740 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
2741
2742#define ID3D12VideoProcessCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
2743 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
2744
2745#define ID3D12VideoProcessCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
2746 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
2747
2748#define ID3D12VideoProcessCommandList1_SetMarker(This,Metadata,pData,Size) \
2749 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
2750
2751#define ID3D12VideoProcessCommandList1_BeginEvent(This,Metadata,pData,Size) \
2752 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
2753
2754#define ID3D12VideoProcessCommandList1_EndEvent(This) \
2755 ( (This)->lpVtbl -> EndEvent(This) )
2756
2757#define ID3D12VideoProcessCommandList1_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2758 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2759
2760#define ID3D12VideoProcessCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
2761 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
2762
2763
2764#define ID3D12VideoProcessCommandList1_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
2765 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
2766
2767#endif /* COBJMACROS */
2768
2769
2770#endif /* C style interface */
2771
2772
2773
2774
2775#endif /* __ID3D12VideoProcessCommandList1_INTERFACE_DEFINED__ */
2776
2777
2778/* interface __MIDL_itf_d3d12video_0000_0008 */
2779/* [local] */
2780
2781typedef
2782enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
2783 {
2784 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
2785 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1
2786 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
2787
2788typedef
2789enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
2790 {
2791 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
2792 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 ) ,
2793 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 )
2794 } D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
2795
2796DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )
2797typedef
2798enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
2799 {
2800 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0
2801 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
2802
2803typedef
2804enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
2805 {
2806 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
2807 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = ( 1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL )
2808 } D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
2809
2810DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )
2811typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
2812 {
2813 UINT NodeIndex;
2814 BOOL VideoDecodeSupport;
2815 BOOL VideoProcessSupport;
2816 BOOL VideoEncodeSupport;
2817 } D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
2818
2819typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
2820 {
2821 UINT NodeIndex;
2822 DXGI_FORMAT InputFormat;
2823 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;
2824 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;
2825 D3D12_VIDEO_SIZE_RANGE SizeRange;
2826 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
2827
2828typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
2829 {
2830 UINT NodeIndex;
2831 DXGI_FORMAT InputFormat;
2832 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2833 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2834 D3D12_VIDEO_SIZE_RANGE SizeRange;
2835 BOOL Protected;
2836 UINT64 MotionVectorHeapMemoryPoolL0Size;
2837 UINT64 MotionVectorHeapMemoryPoolL1Size;
2838 UINT64 MotionEstimatorMemoryPoolL0Size;
2839 UINT64 MotionEstimatorMemoryPoolL1Size;
2840 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
2841
2842typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
2843 {
2844 UINT NodeMask;
2845 DXGI_FORMAT InputFormat;
2846 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
2847 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
2848 D3D12_VIDEO_SIZE_RANGE SizeRange;
2849 } D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
2850
2851
2852
2853extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_c_ifspec;
2854extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0008_v0_0_s_ifspec;
2855
2856#ifndef __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2857#define __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__
2858
2859/* interface ID3D12VideoMotionEstimator */
2860/* [unique][local][object][uuid] */
2861
2862
2863EXTERN_C const IID IID_ID3D12VideoMotionEstimator;
2864
2865#if defined(__cplusplus) && !defined(CINTERFACE)
2866
2867 MIDL_INTERFACE("33FDAE0E-098B-428F-87BB-34B695DE08F8")
2868 ID3D12VideoMotionEstimator : public ID3D12Pageable
2869 {
2870 public:
2871#if defined(_MSC_VER) || !defined(_WIN32)
2872 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
2873#else
2874 virtual D3D12_VIDEO_MOTION_ESTIMATOR_DESC *STDMETHODCALLTYPE GetDesc(
2875 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal) = 0;
2876#endif
2877
2878 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
2879 REFIID riid,
2880 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
2881
2882 };
2883
2884
2885#else /* C style interface */
2886
2887 typedef struct ID3D12VideoMotionEstimatorVtbl
2888 {
2889 BEGIN_INTERFACE
2890
2891 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
2892 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
2893 ID3D12VideoMotionEstimator * This,
2894 REFIID riid,
2895 _COM_Outptr_ void **ppvObject);
2896
2897 DECLSPEC_XFGVIRT(IUnknown, AddRef)
2898 ULONG ( STDMETHODCALLTYPE *AddRef )(
2899 ID3D12VideoMotionEstimator * This);
2900
2901 DECLSPEC_XFGVIRT(IUnknown, Release)
2902 ULONG ( STDMETHODCALLTYPE *Release )(
2903 ID3D12VideoMotionEstimator * This);
2904
2905 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
2906 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
2907 ID3D12VideoMotionEstimator * This,
2908 _In_ REFGUID guid,
2909 _Inout_ UINT *pDataSize,
2910 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
2911
2912 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
2913 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
2914 ID3D12VideoMotionEstimator * This,
2915 _In_ REFGUID guid,
2916 _In_ UINT DataSize,
2917 _In_reads_bytes_opt_( DataSize ) const void *pData);
2918
2919 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
2920 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
2921 ID3D12VideoMotionEstimator * This,
2922 _In_ REFGUID guid,
2923 _In_opt_ const IUnknown *pData);
2924
2925 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
2926 HRESULT ( STDMETHODCALLTYPE *SetName )(
2927 ID3D12VideoMotionEstimator * This,
2928 _In_z_ LPCWSTR Name);
2929
2930 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
2931 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
2932 ID3D12VideoMotionEstimator * This,
2933 REFIID riid,
2934 _COM_Outptr_opt_ void **ppvDevice);
2935
2936 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetDesc)
2937#if !defined(_WIN32)
2938 D3D12_VIDEO_MOTION_ESTIMATOR_DESC ( STDMETHODCALLTYPE *GetDesc )(
2939 ID3D12VideoMotionEstimator * This);
2940
2941#else
2942 D3D12_VIDEO_MOTION_ESTIMATOR_DESC *( STDMETHODCALLTYPE *GetDesc )(
2943 ID3D12VideoMotionEstimator * This,
2944 D3D12_VIDEO_MOTION_ESTIMATOR_DESC * RetVal);
2945
2946#endif
2947
2948 DECLSPEC_XFGVIRT(ID3D12VideoMotionEstimator, GetProtectedResourceSession)
2949 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
2950 ID3D12VideoMotionEstimator * This,
2951 REFIID riid,
2952 _COM_Outptr_opt_ void **ppProtectedSession);
2953
2954 END_INTERFACE
2955 } ID3D12VideoMotionEstimatorVtbl;
2956
2957 interface ID3D12VideoMotionEstimator
2958 {
2959 CONST_VTBL struct ID3D12VideoMotionEstimatorVtbl *lpVtbl;
2960 };
2961
2962
2963
2964#ifdef COBJMACROS
2965
2966
2967#define ID3D12VideoMotionEstimator_QueryInterface(This,riid,ppvObject) \
2968 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
2969
2970#define ID3D12VideoMotionEstimator_AddRef(This) \
2971 ( (This)->lpVtbl -> AddRef(This) )
2972
2973#define ID3D12VideoMotionEstimator_Release(This) \
2974 ( (This)->lpVtbl -> Release(This) )
2975
2976
2977#define ID3D12VideoMotionEstimator_GetPrivateData(This,guid,pDataSize,pData) \
2978 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
2979
2980#define ID3D12VideoMotionEstimator_SetPrivateData(This,guid,DataSize,pData) \
2981 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
2982
2983#define ID3D12VideoMotionEstimator_SetPrivateDataInterface(This,guid,pData) \
2984 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
2985
2986#define ID3D12VideoMotionEstimator_SetName(This,Name) \
2987 ( (This)->lpVtbl -> SetName(This,Name) )
2988
2989
2990#define ID3D12VideoMotionEstimator_GetDevice(This,riid,ppvDevice) \
2991 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
2992
2993
2994#if !defined(_WIN32)
2995
2996#define ID3D12VideoMotionEstimator_GetDesc(This) \
2997 ( (This)->lpVtbl -> GetDesc(This) )
2998#else
2999#define ID3D12VideoMotionEstimator_GetDesc(This,RetVal) \
3000 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3001#endif
3002
3003#define ID3D12VideoMotionEstimator_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3004 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3005
3006#endif /* COBJMACROS */
3007
3008
3009#endif /* C style interface */
3010
3011
3012
3013
3014#endif /* __ID3D12VideoMotionEstimator_INTERFACE_DEFINED__ */
3015
3016
3017/* interface __MIDL_itf_d3d12video_0000_0009 */
3018/* [local] */
3019
3020typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
3021 {
3022 UINT NodeMask;
3023 DXGI_FORMAT InputFormat;
3024 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
3025 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
3026 D3D12_VIDEO_SIZE_RANGE SizeRange;
3027 } D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
3028
3029
3030
3031extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_c_ifspec;
3032extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0009_v0_0_s_ifspec;
3033
3034#ifndef __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3035#define __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__
3036
3037/* interface ID3D12VideoMotionVectorHeap */
3038/* [unique][local][object][uuid] */
3039
3040
3041EXTERN_C const IID IID_ID3D12VideoMotionVectorHeap;
3042
3043#if defined(__cplusplus) && !defined(CINTERFACE)
3044
3045 MIDL_INTERFACE("5BE17987-743A-4061-834B-23D22DAEA505")
3046 ID3D12VideoMotionVectorHeap : public ID3D12Pageable
3047 {
3048 public:
3049#if defined(_MSC_VER) || !defined(_WIN32)
3050 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
3051#else
3052 virtual D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *STDMETHODCALLTYPE GetDesc(
3053 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal) = 0;
3054#endif
3055
3056 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3057 REFIID riid,
3058 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3059
3060 };
3061
3062
3063#else /* C style interface */
3064
3065 typedef struct ID3D12VideoMotionVectorHeapVtbl
3066 {
3067 BEGIN_INTERFACE
3068
3069 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3070 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3071 ID3D12VideoMotionVectorHeap * This,
3072 REFIID riid,
3073 _COM_Outptr_ void **ppvObject);
3074
3075 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3076 ULONG ( STDMETHODCALLTYPE *AddRef )(
3077 ID3D12VideoMotionVectorHeap * This);
3078
3079 DECLSPEC_XFGVIRT(IUnknown, Release)
3080 ULONG ( STDMETHODCALLTYPE *Release )(
3081 ID3D12VideoMotionVectorHeap * This);
3082
3083 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3084 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3085 ID3D12VideoMotionVectorHeap * This,
3086 _In_ REFGUID guid,
3087 _Inout_ UINT *pDataSize,
3088 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3089
3090 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3091 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3092 ID3D12VideoMotionVectorHeap * This,
3093 _In_ REFGUID guid,
3094 _In_ UINT DataSize,
3095 _In_reads_bytes_opt_( DataSize ) const void *pData);
3096
3097 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3098 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3099 ID3D12VideoMotionVectorHeap * This,
3100 _In_ REFGUID guid,
3101 _In_opt_ const IUnknown *pData);
3102
3103 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3104 HRESULT ( STDMETHODCALLTYPE *SetName )(
3105 ID3D12VideoMotionVectorHeap * This,
3106 _In_z_ LPCWSTR Name);
3107
3108 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3109 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3110 ID3D12VideoMotionVectorHeap * This,
3111 REFIID riid,
3112 _COM_Outptr_opt_ void **ppvDevice);
3113
3114 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetDesc)
3115#if !defined(_WIN32)
3116 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
3117 ID3D12VideoMotionVectorHeap * This);
3118
3119#else
3120 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
3121 ID3D12VideoMotionVectorHeap * This,
3122 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC * RetVal);
3123
3124#endif
3125
3126 DECLSPEC_XFGVIRT(ID3D12VideoMotionVectorHeap, GetProtectedResourceSession)
3127 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3128 ID3D12VideoMotionVectorHeap * This,
3129 REFIID riid,
3130 _COM_Outptr_opt_ void **ppProtectedSession);
3131
3132 END_INTERFACE
3133 } ID3D12VideoMotionVectorHeapVtbl;
3134
3135 interface ID3D12VideoMotionVectorHeap
3136 {
3137 CONST_VTBL struct ID3D12VideoMotionVectorHeapVtbl *lpVtbl;
3138 };
3139
3140
3141
3142#ifdef COBJMACROS
3143
3144
3145#define ID3D12VideoMotionVectorHeap_QueryInterface(This,riid,ppvObject) \
3146 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3147
3148#define ID3D12VideoMotionVectorHeap_AddRef(This) \
3149 ( (This)->lpVtbl -> AddRef(This) )
3150
3151#define ID3D12VideoMotionVectorHeap_Release(This) \
3152 ( (This)->lpVtbl -> Release(This) )
3153
3154
3155#define ID3D12VideoMotionVectorHeap_GetPrivateData(This,guid,pDataSize,pData) \
3156 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3157
3158#define ID3D12VideoMotionVectorHeap_SetPrivateData(This,guid,DataSize,pData) \
3159 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3160
3161#define ID3D12VideoMotionVectorHeap_SetPrivateDataInterface(This,guid,pData) \
3162 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3163
3164#define ID3D12VideoMotionVectorHeap_SetName(This,Name) \
3165 ( (This)->lpVtbl -> SetName(This,Name) )
3166
3167
3168#define ID3D12VideoMotionVectorHeap_GetDevice(This,riid,ppvDevice) \
3169 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3170
3171
3172#if !defined(_WIN32)
3173
3174#define ID3D12VideoMotionVectorHeap_GetDesc(This) \
3175 ( (This)->lpVtbl -> GetDesc(This) )
3176#else
3177#define ID3D12VideoMotionVectorHeap_GetDesc(This,RetVal) \
3178 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
3179#endif
3180
3181#define ID3D12VideoMotionVectorHeap_GetProtectedResourceSession(This,riid,ppProtectedSession) \
3182 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
3183
3184#endif /* COBJMACROS */
3185
3186
3187#endif /* C style interface */
3188
3189
3190
3191
3192#endif /* __ID3D12VideoMotionVectorHeap_INTERFACE_DEFINED__ */
3193
3194
3195#ifndef __ID3D12VideoDevice1_INTERFACE_DEFINED__
3196#define __ID3D12VideoDevice1_INTERFACE_DEFINED__
3197
3198/* interface ID3D12VideoDevice1 */
3199/* [unique][local][object][uuid] */
3200
3201
3202EXTERN_C const IID IID_ID3D12VideoDevice1;
3203
3204#if defined(__cplusplus) && !defined(CINTERFACE)
3205
3206 MIDL_INTERFACE("981611AD-A144-4C83-9890-F30E26D658AB")
3207 ID3D12VideoDevice1 : public ID3D12VideoDevice
3208 {
3209 public:
3210 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionEstimator(
3211 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3212 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3213 _In_ REFIID riid,
3214 _COM_Outptr_ void **ppVideoMotionEstimator) = 0;
3215
3216 virtual HRESULT STDMETHODCALLTYPE CreateVideoMotionVectorHeap(
3217 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3218 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3219 _In_ REFIID riid,
3220 _COM_Outptr_ void **ppVideoMotionVectorHeap) = 0;
3221
3222 };
3223
3224
3225#else /* C style interface */
3226
3227 typedef struct ID3D12VideoDevice1Vtbl
3228 {
3229 BEGIN_INTERFACE
3230
3231 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3232 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3233 ID3D12VideoDevice1 * This,
3234 REFIID riid,
3235 _COM_Outptr_ void **ppvObject);
3236
3237 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3238 ULONG ( STDMETHODCALLTYPE *AddRef )(
3239 ID3D12VideoDevice1 * This);
3240
3241 DECLSPEC_XFGVIRT(IUnknown, Release)
3242 ULONG ( STDMETHODCALLTYPE *Release )(
3243 ID3D12VideoDevice1 * This);
3244
3245 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
3246 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
3247 ID3D12VideoDevice1 * This,
3248 D3D12_FEATURE_VIDEO FeatureVideo,
3249 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
3250 UINT FeatureSupportDataSize);
3251
3252 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
3253 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
3254 ID3D12VideoDevice1 * This,
3255 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
3256 _In_ REFIID riid,
3257 _COM_Outptr_ void **ppVideoDecoder);
3258
3259 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
3260 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
3261 ID3D12VideoDevice1 * This,
3262 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
3263 _In_ REFIID riid,
3264 _COM_Outptr_ void **ppVideoDecoderHeap);
3265
3266 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
3267 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
3268 ID3D12VideoDevice1 * This,
3269 UINT NodeMask,
3270 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
3271 UINT NumInputStreamDescs,
3272 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
3273 _In_ REFIID riid,
3274 _COM_Outptr_ void **ppVideoProcessor);
3275
3276 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
3277 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
3278 ID3D12VideoDevice1 * This,
3279 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
3280 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3281 _In_ REFIID riid,
3282 _COM_Outptr_ void **ppVideoMotionEstimator);
3283
3284 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
3285 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
3286 ID3D12VideoDevice1 * This,
3287 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
3288 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
3289 _In_ REFIID riid,
3290 _COM_Outptr_ void **ppVideoMotionVectorHeap);
3291
3292 END_INTERFACE
3293 } ID3D12VideoDevice1Vtbl;
3294
3295 interface ID3D12VideoDevice1
3296 {
3297 CONST_VTBL struct ID3D12VideoDevice1Vtbl *lpVtbl;
3298 };
3299
3300
3301
3302#ifdef COBJMACROS
3303
3304
3305#define ID3D12VideoDevice1_QueryInterface(This,riid,ppvObject) \
3306 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3307
3308#define ID3D12VideoDevice1_AddRef(This) \
3309 ( (This)->lpVtbl -> AddRef(This) )
3310
3311#define ID3D12VideoDevice1_Release(This) \
3312 ( (This)->lpVtbl -> Release(This) )
3313
3314
3315#define ID3D12VideoDevice1_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
3316 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
3317
3318#define ID3D12VideoDevice1_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
3319 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
3320
3321#define ID3D12VideoDevice1_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
3322 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
3323
3324#define ID3D12VideoDevice1_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
3325 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
3326
3327
3328#define ID3D12VideoDevice1_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
3329 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
3330
3331#define ID3D12VideoDevice1_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
3332 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
3333
3334#endif /* COBJMACROS */
3335
3336
3337#endif /* C style interface */
3338
3339
3340
3341
3342#endif /* __ID3D12VideoDevice1_INTERFACE_DEFINED__ */
3343
3344
3345/* interface __MIDL_itf_d3d12video_0000_0011 */
3346/* [local] */
3347
3348typedef struct D3D12_RESOURCE_COORDINATE
3349 {
3350 UINT64 X;
3351 UINT Y;
3352 UINT Z;
3353 UINT SubresourceIndex;
3354 } D3D12_RESOURCE_COORDINATE;
3355
3356typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
3357 {
3358 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3359 } D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
3360
3361typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
3362 {
3363 ID3D12Resource *pInputTexture2D;
3364 UINT InputSubresourceIndex;
3365 ID3D12Resource *pReferenceTexture2D;
3366 UINT ReferenceSubresourceIndex;
3367 ID3D12VideoMotionVectorHeap *pHintMotionVectorHeap;
3368 } D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
3369
3370typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
3371 {
3372 ID3D12Resource *pMotionVectorTexture2D;
3373 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
3374 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
3375
3376typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
3377 {
3378 ID3D12VideoMotionVectorHeap *pMotionVectorHeap;
3379 UINT PixelWidth;
3380 UINT PixelHeight;
3381 } D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
3382
3383
3384
3385extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_c_ifspec;
3386extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0011_v0_0_s_ifspec;
3387
3388#ifndef __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3389#define __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__
3390
3391/* interface ID3D12VideoEncodeCommandList */
3392/* [unique][local][object][uuid] */
3393
3394
3395EXTERN_C const IID IID_ID3D12VideoEncodeCommandList;
3396
3397#if defined(__cplusplus) && !defined(CINTERFACE)
3398
3399 MIDL_INTERFACE("8455293A-0CBD-4831-9B39-FBDBAB724723")
3400 ID3D12VideoEncodeCommandList : public ID3D12CommandList
3401 {
3402 public:
3403 virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
3404
3405 virtual HRESULT STDMETHODCALLTYPE Reset(
3406 _In_ ID3D12CommandAllocator *pAllocator) = 0;
3407
3408 virtual void STDMETHODCALLTYPE ClearState( void) = 0;
3409
3410 virtual void STDMETHODCALLTYPE ResourceBarrier(
3411 _In_ UINT NumBarriers,
3412 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3413
3414 virtual void STDMETHODCALLTYPE DiscardResource(
3415 _In_ ID3D12Resource *pResource,
3416 _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3417
3418 virtual void STDMETHODCALLTYPE BeginQuery(
3419 _In_ ID3D12QueryHeap *pQueryHeap,
3420 _In_ D3D12_QUERY_TYPE Type,
3421 _In_ UINT Index) = 0;
3422
3423 virtual void STDMETHODCALLTYPE EndQuery(
3424 _In_ ID3D12QueryHeap *pQueryHeap,
3425 _In_ D3D12_QUERY_TYPE Type,
3426 _In_ UINT Index) = 0;
3427
3428 virtual void STDMETHODCALLTYPE ResolveQueryData(
3429 _In_ ID3D12QueryHeap *pQueryHeap,
3430 _In_ D3D12_QUERY_TYPE Type,
3431 _In_ UINT StartIndex,
3432 _In_ UINT NumQueries,
3433 _In_ ID3D12Resource *pDestinationBuffer,
3434 _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3435
3436 virtual void STDMETHODCALLTYPE SetPredication(
3437 _In_opt_ ID3D12Resource *pBuffer,
3438 _In_ UINT64 AlignedBufferOffset,
3439 _In_ D3D12_PREDICATION_OP Operation) = 0;
3440
3441 virtual void STDMETHODCALLTYPE SetMarker(
3442 UINT Metadata,
3443 _In_reads_bytes_opt_(Size) const void *pData,
3444 UINT Size) = 0;
3445
3446 virtual void STDMETHODCALLTYPE BeginEvent(
3447 UINT Metadata,
3448 _In_reads_bytes_opt_(Size) const void *pData,
3449 UINT Size) = 0;
3450
3451 virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
3452
3453 virtual void STDMETHODCALLTYPE EstimateMotion(
3454 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3455 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3456 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments) = 0;
3457
3458 virtual void STDMETHODCALLTYPE ResolveMotionVectorHeap(
3459 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3460 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments) = 0;
3461
3462 virtual void STDMETHODCALLTYPE WriteBufferImmediate(
3463 UINT Count,
3464 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3465 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes) = 0;
3466
3467 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
3468 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
3469
3470 };
3471
3472
3473#else /* C style interface */
3474
3475 typedef struct ID3D12VideoEncodeCommandListVtbl
3476 {
3477 BEGIN_INTERFACE
3478
3479 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3480 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3481 ID3D12VideoEncodeCommandList * This,
3482 REFIID riid,
3483 _COM_Outptr_ void **ppvObject);
3484
3485 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3486 ULONG ( STDMETHODCALLTYPE *AddRef )(
3487 ID3D12VideoEncodeCommandList * This);
3488
3489 DECLSPEC_XFGVIRT(IUnknown, Release)
3490 ULONG ( STDMETHODCALLTYPE *Release )(
3491 ID3D12VideoEncodeCommandList * This);
3492
3493 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3494 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3495 ID3D12VideoEncodeCommandList * This,
3496 _In_ REFGUID guid,
3497 _Inout_ UINT *pDataSize,
3498 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3499
3500 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3501 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3502 ID3D12VideoEncodeCommandList * This,
3503 _In_ REFGUID guid,
3504 _In_ UINT DataSize,
3505 _In_reads_bytes_opt_( DataSize ) const void *pData);
3506
3507 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3508 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3509 ID3D12VideoEncodeCommandList * This,
3510 _In_ REFGUID guid,
3511 _In_opt_ const IUnknown *pData);
3512
3513 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3514 HRESULT ( STDMETHODCALLTYPE *SetName )(
3515 ID3D12VideoEncodeCommandList * This,
3516 _In_z_ LPCWSTR Name);
3517
3518 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3519 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3520 ID3D12VideoEncodeCommandList * This,
3521 REFIID riid,
3522 _COM_Outptr_opt_ void **ppvDevice);
3523
3524 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
3525 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
3526 ID3D12VideoEncodeCommandList * This);
3527
3528 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
3529 HRESULT ( STDMETHODCALLTYPE *Close )(
3530 ID3D12VideoEncodeCommandList * This);
3531
3532 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
3533 HRESULT ( STDMETHODCALLTYPE *Reset )(
3534 ID3D12VideoEncodeCommandList * This,
3535 _In_ ID3D12CommandAllocator *pAllocator);
3536
3537 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
3538 void ( STDMETHODCALLTYPE *ClearState )(
3539 ID3D12VideoEncodeCommandList * This);
3540
3541 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
3542 void ( STDMETHODCALLTYPE *ResourceBarrier )(
3543 ID3D12VideoEncodeCommandList * This,
3544 _In_ UINT NumBarriers,
3545 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3546
3547 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
3548 void ( STDMETHODCALLTYPE *DiscardResource )(
3549 ID3D12VideoEncodeCommandList * This,
3550 _In_ ID3D12Resource *pResource,
3551 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
3552
3553 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
3554 void ( STDMETHODCALLTYPE *BeginQuery )(
3555 ID3D12VideoEncodeCommandList * This,
3556 _In_ ID3D12QueryHeap *pQueryHeap,
3557 _In_ D3D12_QUERY_TYPE Type,
3558 _In_ UINT Index);
3559
3560 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
3561 void ( STDMETHODCALLTYPE *EndQuery )(
3562 ID3D12VideoEncodeCommandList * This,
3563 _In_ ID3D12QueryHeap *pQueryHeap,
3564 _In_ D3D12_QUERY_TYPE Type,
3565 _In_ UINT Index);
3566
3567 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
3568 void ( STDMETHODCALLTYPE *ResolveQueryData )(
3569 ID3D12VideoEncodeCommandList * This,
3570 _In_ ID3D12QueryHeap *pQueryHeap,
3571 _In_ D3D12_QUERY_TYPE Type,
3572 _In_ UINT StartIndex,
3573 _In_ UINT NumQueries,
3574 _In_ ID3D12Resource *pDestinationBuffer,
3575 _In_ UINT64 AlignedDestinationBufferOffset);
3576
3577 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
3578 void ( STDMETHODCALLTYPE *SetPredication )(
3579 ID3D12VideoEncodeCommandList * This,
3580 _In_opt_ ID3D12Resource *pBuffer,
3581 _In_ UINT64 AlignedBufferOffset,
3582 _In_ D3D12_PREDICATION_OP Operation);
3583
3584 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
3585 void ( STDMETHODCALLTYPE *SetMarker )(
3586 ID3D12VideoEncodeCommandList * This,
3587 UINT Metadata,
3588 _In_reads_bytes_opt_(Size) const void *pData,
3589 UINT Size);
3590
3591 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
3592 void ( STDMETHODCALLTYPE *BeginEvent )(
3593 ID3D12VideoEncodeCommandList * This,
3594 UINT Metadata,
3595 _In_reads_bytes_opt_(Size) const void *pData,
3596 UINT Size);
3597
3598 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
3599 void ( STDMETHODCALLTYPE *EndEvent )(
3600 ID3D12VideoEncodeCommandList * This);
3601
3602 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
3603 void ( STDMETHODCALLTYPE *EstimateMotion )(
3604 ID3D12VideoEncodeCommandList * This,
3605 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
3606 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
3607 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
3608
3609 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
3610 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
3611 ID3D12VideoEncodeCommandList * This,
3612 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
3613 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
3614
3615 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
3616 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
3617 ID3D12VideoEncodeCommandList * This,
3618 UINT Count,
3619 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
3620 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
3621
3622 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
3623 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
3624 ID3D12VideoEncodeCommandList * This,
3625 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
3626
3627 END_INTERFACE
3628 } ID3D12VideoEncodeCommandListVtbl;
3629
3630 interface ID3D12VideoEncodeCommandList
3631 {
3632 CONST_VTBL struct ID3D12VideoEncodeCommandListVtbl *lpVtbl;
3633 };
3634
3635
3636
3637#ifdef COBJMACROS
3638
3639
3640#define ID3D12VideoEncodeCommandList_QueryInterface(This,riid,ppvObject) \
3641 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3642
3643#define ID3D12VideoEncodeCommandList_AddRef(This) \
3644 ( (This)->lpVtbl -> AddRef(This) )
3645
3646#define ID3D12VideoEncodeCommandList_Release(This) \
3647 ( (This)->lpVtbl -> Release(This) )
3648
3649
3650#define ID3D12VideoEncodeCommandList_GetPrivateData(This,guid,pDataSize,pData) \
3651 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
3652
3653#define ID3D12VideoEncodeCommandList_SetPrivateData(This,guid,DataSize,pData) \
3654 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
3655
3656#define ID3D12VideoEncodeCommandList_SetPrivateDataInterface(This,guid,pData) \
3657 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
3658
3659#define ID3D12VideoEncodeCommandList_SetName(This,Name) \
3660 ( (This)->lpVtbl -> SetName(This,Name) )
3661
3662
3663#define ID3D12VideoEncodeCommandList_GetDevice(This,riid,ppvDevice) \
3664 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
3665
3666
3667#define ID3D12VideoEncodeCommandList_GetType(This) \
3668 ( (This)->lpVtbl -> GetType(This) )
3669
3670
3671#define ID3D12VideoEncodeCommandList_Close(This) \
3672 ( (This)->lpVtbl -> Close(This) )
3673
3674#define ID3D12VideoEncodeCommandList_Reset(This,pAllocator) \
3675 ( (This)->lpVtbl -> Reset(This,pAllocator) )
3676
3677#define ID3D12VideoEncodeCommandList_ClearState(This) \
3678 ( (This)->lpVtbl -> ClearState(This) )
3679
3680#define ID3D12VideoEncodeCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
3681 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
3682
3683#define ID3D12VideoEncodeCommandList_DiscardResource(This,pResource,pRegion) \
3684 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
3685
3686#define ID3D12VideoEncodeCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
3687 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
3688
3689#define ID3D12VideoEncodeCommandList_EndQuery(This,pQueryHeap,Type,Index) \
3690 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
3691
3692#define ID3D12VideoEncodeCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
3693 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
3694
3695#define ID3D12VideoEncodeCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
3696 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
3697
3698#define ID3D12VideoEncodeCommandList_SetMarker(This,Metadata,pData,Size) \
3699 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
3700
3701#define ID3D12VideoEncodeCommandList_BeginEvent(This,Metadata,pData,Size) \
3702 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
3703
3704#define ID3D12VideoEncodeCommandList_EndEvent(This) \
3705 ( (This)->lpVtbl -> EndEvent(This) )
3706
3707#define ID3D12VideoEncodeCommandList_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
3708 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
3709
3710#define ID3D12VideoEncodeCommandList_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
3711 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
3712
3713#define ID3D12VideoEncodeCommandList_WriteBufferImmediate(This,Count,pParams,pModes) \
3714 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
3715
3716#define ID3D12VideoEncodeCommandList_SetProtectedResourceSession(This,pProtectedResourceSession) \
3717 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
3718
3719#endif /* COBJMACROS */
3720
3721
3722#endif /* C style interface */
3723
3724
3725
3726
3727#endif /* __ID3D12VideoEncodeCommandList_INTERFACE_DEFINED__ */
3728
3729
3730/* interface __MIDL_itf_d3d12video_0000_0012 */
3731/* [local] */
3732
3733typedef
3734enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
3735 {
3736 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0,
3737 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1
3738 } D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
3739
3740DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )
3741typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
3742 {
3743 UINT NodeIndex;
3744 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
3745 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3746 } D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
3747
3748typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
3749 {
3750 UINT NodeIndex;
3751 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3752 } D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
3753
3754typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
3755 {
3756 UINT NodeIndex;
3757 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;
3758 } D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
3759
3760typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
3761 {
3762 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;
3763 BOOL Protected;
3764 UINT64 MemoryPoolL0Size;
3765 UINT64 MemoryPoolL1Size;
3766 } D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
3767
3768typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
3769 {
3770 UINT NodeMask;
3771 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc;
3772 UINT NumInputStreamDescs;
3773 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;
3774 BOOL Protected;
3775 UINT64 MemoryPoolL0Size;
3776 UINT64 MemoryPoolL1Size;
3777 } D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
3778
3779typedef
3780enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
3781 {
3782 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
3783 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
3784 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
3785 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
3786 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
3787 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
3788 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6
3789 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
3790
3791typedef
3792enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
3793 {
3794 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
3795 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
3796 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
3797 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
3798 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
3799 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
3800 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
3801 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
3802 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
3803 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
3804 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10
3805 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
3806
3807typedef
3808enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
3809 {
3810 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0,
3811 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x1,
3812 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x2
3813 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
3814
3815DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )
3816typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
3817 {
3818 UINT NodeIndex;
3819 UINT CommandCount;
3820 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
3821
3822typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
3823 {
3824 GUID CommandId;
3825 LPCWSTR Name;
3826 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
3827 } D3D12_VIDEO_EXTENSION_COMMAND_INFO;
3828
3829typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
3830 {
3831 UINT NodeIndex;
3832 UINT CommandCount;
3833 _Field_size_full_(CommandCount) D3D12_VIDEO_EXTENSION_COMMAND_INFO *pCommandInfos;
3834 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
3835
3836typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
3837 {
3838 GUID CommandId;
3839 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3840 UINT ParameterCount;
3841 UINT ParameterPacking;
3842 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
3843
3844typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
3845 {
3846 LPCWSTR Name;
3847 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
3848 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
3849 } D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
3850
3851typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
3852 {
3853 GUID CommandId;
3854 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;
3855 UINT ParameterCount;
3856 _Field_size_full_(ParameterCount) D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO *pParameterInfos;
3857 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
3858
3859typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
3860 {
3861 UINT NodeIndex;
3862 GUID CommandId;
3863 _Field_size_bytes_full_opt_(InputDataSizeInBytes) const void *pInputData;
3864 SIZE_T InputDataSizeInBytes;
3865 _Field_size_bytes_full_opt_(OutputDataSizeInBytes) void *pOutputData;
3866 SIZE_T OutputDataSizeInBytes;
3867 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
3868
3869typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
3870 {
3871 UINT NodeIndex;
3872 GUID CommandId;
3873 _Field_size_bytes_full_(CreationParametersDataSizeInBytes) const void *pCreationParameters;
3874 SIZE_T CreationParametersSizeInBytes;
3875 UINT64 MemoryPoolL0Size;
3876 UINT64 MemoryPoolL1Size;
3877 } D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
3878
3879typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
3880 {
3881 UINT NodeMask;
3882 GUID CommandId;
3883 } D3D12_VIDEO_EXTENSION_COMMAND_DESC;
3884
3885
3886
3887extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_c_ifspec;
3888extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0012_v0_0_s_ifspec;
3889
3890#ifndef __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3891#define __ID3D12VideoDecoder1_INTERFACE_DEFINED__
3892
3893/* interface ID3D12VideoDecoder1 */
3894/* [unique][local][object][uuid] */
3895
3896
3897EXTERN_C const IID IID_ID3D12VideoDecoder1;
3898
3899#if defined(__cplusplus) && !defined(CINTERFACE)
3900
3901 MIDL_INTERFACE("79A2E5FB-CCD2-469A-9FDE-195D10951F7E")
3902 ID3D12VideoDecoder1 : public ID3D12VideoDecoder
3903 {
3904 public:
3905 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
3906 REFIID riid,
3907 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
3908
3909 };
3910
3911
3912#else /* C style interface */
3913
3914 typedef struct ID3D12VideoDecoder1Vtbl
3915 {
3916 BEGIN_INTERFACE
3917
3918 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
3919 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
3920 ID3D12VideoDecoder1 * This,
3921 REFIID riid,
3922 _COM_Outptr_ void **ppvObject);
3923
3924 DECLSPEC_XFGVIRT(IUnknown, AddRef)
3925 ULONG ( STDMETHODCALLTYPE *AddRef )(
3926 ID3D12VideoDecoder1 * This);
3927
3928 DECLSPEC_XFGVIRT(IUnknown, Release)
3929 ULONG ( STDMETHODCALLTYPE *Release )(
3930 ID3D12VideoDecoder1 * This);
3931
3932 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
3933 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
3934 ID3D12VideoDecoder1 * This,
3935 _In_ REFGUID guid,
3936 _Inout_ UINT *pDataSize,
3937 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
3938
3939 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
3940 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
3941 ID3D12VideoDecoder1 * This,
3942 _In_ REFGUID guid,
3943 _In_ UINT DataSize,
3944 _In_reads_bytes_opt_( DataSize ) const void *pData);
3945
3946 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
3947 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
3948 ID3D12VideoDecoder1 * This,
3949 _In_ REFGUID guid,
3950 _In_opt_ const IUnknown *pData);
3951
3952 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
3953 HRESULT ( STDMETHODCALLTYPE *SetName )(
3954 ID3D12VideoDecoder1 * This,
3955 _In_z_ LPCWSTR Name);
3956
3957 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
3958 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
3959 ID3D12VideoDecoder1 * This,
3960 REFIID riid,
3961 _COM_Outptr_opt_ void **ppvDevice);
3962
3963 DECLSPEC_XFGVIRT(ID3D12VideoDecoder, GetDesc)
3964#if !defined(_WIN32)
3965 D3D12_VIDEO_DECODER_DESC ( STDMETHODCALLTYPE *GetDesc )(
3966 ID3D12VideoDecoder1 * This);
3967
3968#else
3969 D3D12_VIDEO_DECODER_DESC *( STDMETHODCALLTYPE *GetDesc )(
3970 ID3D12VideoDecoder1 * This,
3971 D3D12_VIDEO_DECODER_DESC * RetVal);
3972
3973#endif
3974
3975 DECLSPEC_XFGVIRT(ID3D12VideoDecoder1, GetProtectedResourceSession)
3976 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
3977 ID3D12VideoDecoder1 * This,
3978 REFIID riid,
3979 _COM_Outptr_opt_ void **ppProtectedSession);
3980
3981 END_INTERFACE
3982 } ID3D12VideoDecoder1Vtbl;
3983
3984 interface ID3D12VideoDecoder1
3985 {
3986 CONST_VTBL struct ID3D12VideoDecoder1Vtbl *lpVtbl;
3987 };
3988
3989
3990
3991#ifdef COBJMACROS
3992
3993
3994#define ID3D12VideoDecoder1_QueryInterface(This,riid,ppvObject) \
3995 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
3996
3997#define ID3D12VideoDecoder1_AddRef(This) \
3998 ( (This)->lpVtbl -> AddRef(This) )
3999
4000#define ID3D12VideoDecoder1_Release(This) \
4001 ( (This)->lpVtbl -> Release(This) )
4002
4003
4004#define ID3D12VideoDecoder1_GetPrivateData(This,guid,pDataSize,pData) \
4005 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4006
4007#define ID3D12VideoDecoder1_SetPrivateData(This,guid,DataSize,pData) \
4008 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4009
4010#define ID3D12VideoDecoder1_SetPrivateDataInterface(This,guid,pData) \
4011 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4012
4013#define ID3D12VideoDecoder1_SetName(This,Name) \
4014 ( (This)->lpVtbl -> SetName(This,Name) )
4015
4016
4017#define ID3D12VideoDecoder1_GetDevice(This,riid,ppvDevice) \
4018 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4019
4020
4021#if !defined(_WIN32)
4022
4023#define ID3D12VideoDecoder1_GetDesc(This) \
4024 ( (This)->lpVtbl -> GetDesc(This) )
4025#else
4026#define ID3D12VideoDecoder1_GetDesc(This,RetVal) \
4027 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4028#endif
4029
4030
4031#define ID3D12VideoDecoder1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4032 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4033
4034#endif /* COBJMACROS */
4035
4036
4037#endif /* C style interface */
4038
4039
4040
4041
4042#endif /* __ID3D12VideoDecoder1_INTERFACE_DEFINED__ */
4043
4044
4045#ifndef __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4046#define __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__
4047
4048/* interface ID3D12VideoDecoderHeap1 */
4049/* [unique][local][object][uuid] */
4050
4051
4052EXTERN_C const IID IID_ID3D12VideoDecoderHeap1;
4053
4054#if defined(__cplusplus) && !defined(CINTERFACE)
4055
4056 MIDL_INTERFACE("DA1D98C5-539F-41B2-BF6B-1198A03B6D26")
4057 ID3D12VideoDecoderHeap1 : public ID3D12VideoDecoderHeap
4058 {
4059 public:
4060 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4061 REFIID riid,
4062 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4063
4064 };
4065
4066
4067#else /* C style interface */
4068
4069 typedef struct ID3D12VideoDecoderHeap1Vtbl
4070 {
4071 BEGIN_INTERFACE
4072
4073 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4074 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4075 ID3D12VideoDecoderHeap1 * This,
4076 REFIID riid,
4077 _COM_Outptr_ void **ppvObject);
4078
4079 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4080 ULONG ( STDMETHODCALLTYPE *AddRef )(
4081 ID3D12VideoDecoderHeap1 * This);
4082
4083 DECLSPEC_XFGVIRT(IUnknown, Release)
4084 ULONG ( STDMETHODCALLTYPE *Release )(
4085 ID3D12VideoDecoderHeap1 * This);
4086
4087 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4088 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4089 ID3D12VideoDecoderHeap1 * This,
4090 _In_ REFGUID guid,
4091 _Inout_ UINT *pDataSize,
4092 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4093
4094 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4095 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4096 ID3D12VideoDecoderHeap1 * This,
4097 _In_ REFGUID guid,
4098 _In_ UINT DataSize,
4099 _In_reads_bytes_opt_( DataSize ) const void *pData);
4100
4101 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4102 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4103 ID3D12VideoDecoderHeap1 * This,
4104 _In_ REFGUID guid,
4105 _In_opt_ const IUnknown *pData);
4106
4107 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4108 HRESULT ( STDMETHODCALLTYPE *SetName )(
4109 ID3D12VideoDecoderHeap1 * This,
4110 _In_z_ LPCWSTR Name);
4111
4112 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4113 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4114 ID3D12VideoDecoderHeap1 * This,
4115 REFIID riid,
4116 _COM_Outptr_opt_ void **ppvDevice);
4117
4118 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap, GetDesc)
4119#if !defined(_WIN32)
4120 D3D12_VIDEO_DECODER_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
4121 ID3D12VideoDecoderHeap1 * This);
4122
4123#else
4124 D3D12_VIDEO_DECODER_HEAP_DESC *( STDMETHODCALLTYPE *GetDesc )(
4125 ID3D12VideoDecoderHeap1 * This,
4126 D3D12_VIDEO_DECODER_HEAP_DESC * RetVal);
4127
4128#endif
4129
4130 DECLSPEC_XFGVIRT(ID3D12VideoDecoderHeap1, GetProtectedResourceSession)
4131 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4132 ID3D12VideoDecoderHeap1 * This,
4133 REFIID riid,
4134 _COM_Outptr_opt_ void **ppProtectedSession);
4135
4136 END_INTERFACE
4137 } ID3D12VideoDecoderHeap1Vtbl;
4138
4139 interface ID3D12VideoDecoderHeap1
4140 {
4141 CONST_VTBL struct ID3D12VideoDecoderHeap1Vtbl *lpVtbl;
4142 };
4143
4144
4145
4146#ifdef COBJMACROS
4147
4148
4149#define ID3D12VideoDecoderHeap1_QueryInterface(This,riid,ppvObject) \
4150 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4151
4152#define ID3D12VideoDecoderHeap1_AddRef(This) \
4153 ( (This)->lpVtbl -> AddRef(This) )
4154
4155#define ID3D12VideoDecoderHeap1_Release(This) \
4156 ( (This)->lpVtbl -> Release(This) )
4157
4158
4159#define ID3D12VideoDecoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
4160 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4161
4162#define ID3D12VideoDecoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
4163 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4164
4165#define ID3D12VideoDecoderHeap1_SetPrivateDataInterface(This,guid,pData) \
4166 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4167
4168#define ID3D12VideoDecoderHeap1_SetName(This,Name) \
4169 ( (This)->lpVtbl -> SetName(This,Name) )
4170
4171
4172#define ID3D12VideoDecoderHeap1_GetDevice(This,riid,ppvDevice) \
4173 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4174
4175
4176#if !defined(_WIN32)
4177
4178#define ID3D12VideoDecoderHeap1_GetDesc(This) \
4179 ( (This)->lpVtbl -> GetDesc(This) )
4180#else
4181#define ID3D12VideoDecoderHeap1_GetDesc(This,RetVal) \
4182 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4183#endif
4184
4185
4186#define ID3D12VideoDecoderHeap1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4187 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4188
4189#endif /* COBJMACROS */
4190
4191
4192#endif /* C style interface */
4193
4194
4195
4196
4197#endif /* __ID3D12VideoDecoderHeap1_INTERFACE_DEFINED__ */
4198
4199
4200#ifndef __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4201#define __ID3D12VideoProcessor1_INTERFACE_DEFINED__
4202
4203/* interface ID3D12VideoProcessor1 */
4204/* [unique][local][object][uuid] */
4205
4206
4207EXTERN_C const IID IID_ID3D12VideoProcessor1;
4208
4209#if defined(__cplusplus) && !defined(CINTERFACE)
4210
4211 MIDL_INTERFACE("F3CFE615-553F-425C-86D8-EE8C1B1FB01C")
4212 ID3D12VideoProcessor1 : public ID3D12VideoProcessor
4213 {
4214 public:
4215 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4216 REFIID riid,
4217 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4218
4219 };
4220
4221
4222#else /* C style interface */
4223
4224 typedef struct ID3D12VideoProcessor1Vtbl
4225 {
4226 BEGIN_INTERFACE
4227
4228 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4229 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4230 ID3D12VideoProcessor1 * This,
4231 REFIID riid,
4232 _COM_Outptr_ void **ppvObject);
4233
4234 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4235 ULONG ( STDMETHODCALLTYPE *AddRef )(
4236 ID3D12VideoProcessor1 * This);
4237
4238 DECLSPEC_XFGVIRT(IUnknown, Release)
4239 ULONG ( STDMETHODCALLTYPE *Release )(
4240 ID3D12VideoProcessor1 * This);
4241
4242 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4243 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4244 ID3D12VideoProcessor1 * This,
4245 _In_ REFGUID guid,
4246 _Inout_ UINT *pDataSize,
4247 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4248
4249 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4250 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4251 ID3D12VideoProcessor1 * This,
4252 _In_ REFGUID guid,
4253 _In_ UINT DataSize,
4254 _In_reads_bytes_opt_( DataSize ) const void *pData);
4255
4256 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4257 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4258 ID3D12VideoProcessor1 * This,
4259 _In_ REFGUID guid,
4260 _In_opt_ const IUnknown *pData);
4261
4262 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4263 HRESULT ( STDMETHODCALLTYPE *SetName )(
4264 ID3D12VideoProcessor1 * This,
4265 _In_z_ LPCWSTR Name);
4266
4267 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4268 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4269 ID3D12VideoProcessor1 * This,
4270 REFIID riid,
4271 _COM_Outptr_opt_ void **ppvDevice);
4272
4273 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNodeMask)
4274 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
4275 ID3D12VideoProcessor1 * This);
4276
4277 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetNumInputStreamDescs)
4278 UINT ( STDMETHODCALLTYPE *GetNumInputStreamDescs )(
4279 ID3D12VideoProcessor1 * This);
4280
4281 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetInputStreamDescs)
4282 HRESULT ( STDMETHODCALLTYPE *GetInputStreamDescs )(
4283 ID3D12VideoProcessor1 * This,
4284 UINT NumInputStreamDescs,
4285 _Out_writes_(NumInputStreamDescs) D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
4286
4287 DECLSPEC_XFGVIRT(ID3D12VideoProcessor, GetOutputStreamDesc)
4288#if !defined(_WIN32)
4289 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC ( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4290 ID3D12VideoProcessor1 * This);
4291
4292#else
4293 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *( STDMETHODCALLTYPE *GetOutputStreamDesc )(
4294 ID3D12VideoProcessor1 * This,
4295 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC * RetVal);
4296
4297#endif
4298
4299 DECLSPEC_XFGVIRT(ID3D12VideoProcessor1, GetProtectedResourceSession)
4300 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4301 ID3D12VideoProcessor1 * This,
4302 REFIID riid,
4303 _COM_Outptr_opt_ void **ppProtectedSession);
4304
4305 END_INTERFACE
4306 } ID3D12VideoProcessor1Vtbl;
4307
4308 interface ID3D12VideoProcessor1
4309 {
4310 CONST_VTBL struct ID3D12VideoProcessor1Vtbl *lpVtbl;
4311 };
4312
4313
4314
4315#ifdef COBJMACROS
4316
4317
4318#define ID3D12VideoProcessor1_QueryInterface(This,riid,ppvObject) \
4319 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4320
4321#define ID3D12VideoProcessor1_AddRef(This) \
4322 ( (This)->lpVtbl -> AddRef(This) )
4323
4324#define ID3D12VideoProcessor1_Release(This) \
4325 ( (This)->lpVtbl -> Release(This) )
4326
4327
4328#define ID3D12VideoProcessor1_GetPrivateData(This,guid,pDataSize,pData) \
4329 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4330
4331#define ID3D12VideoProcessor1_SetPrivateData(This,guid,DataSize,pData) \
4332 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4333
4334#define ID3D12VideoProcessor1_SetPrivateDataInterface(This,guid,pData) \
4335 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4336
4337#define ID3D12VideoProcessor1_SetName(This,Name) \
4338 ( (This)->lpVtbl -> SetName(This,Name) )
4339
4340
4341#define ID3D12VideoProcessor1_GetDevice(This,riid,ppvDevice) \
4342 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4343
4344
4345
4346#define ID3D12VideoProcessor1_GetNodeMask(This) \
4347 ( (This)->lpVtbl -> GetNodeMask(This) )
4348
4349#define ID3D12VideoProcessor1_GetNumInputStreamDescs(This) \
4350 ( (This)->lpVtbl -> GetNumInputStreamDescs(This) )
4351
4352#define ID3D12VideoProcessor1_GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) \
4353 ( (This)->lpVtbl -> GetInputStreamDescs(This,NumInputStreamDescs,pInputStreamDescs) )
4354#if !defined(_WIN32)
4355
4356#define ID3D12VideoProcessor1_GetOutputStreamDesc(This) \
4357 ( (This)->lpVtbl -> GetOutputStreamDesc(This) )
4358#else
4359#define ID3D12VideoProcessor1_GetOutputStreamDesc(This,RetVal) \
4360 ( (This)->lpVtbl -> GetOutputStreamDesc(This,RetVal) )
4361#endif
4362
4363
4364#define ID3D12VideoProcessor1_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4365 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4366
4367#endif /* COBJMACROS */
4368
4369
4370#endif /* C style interface */
4371
4372
4373
4374
4375#endif /* __ID3D12VideoProcessor1_INTERFACE_DEFINED__ */
4376
4377
4378#ifndef __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4379#define __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__
4380
4381/* interface ID3D12VideoExtensionCommand */
4382/* [unique][local][object][uuid] */
4383
4384
4385EXTERN_C const IID IID_ID3D12VideoExtensionCommand;
4386
4387#if defined(__cplusplus) && !defined(CINTERFACE)
4388
4389 MIDL_INTERFACE("554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4")
4390 ID3D12VideoExtensionCommand : public ID3D12Pageable
4391 {
4392 public:
4393#if defined(_MSC_VER) || !defined(_WIN32)
4394 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
4395#else
4396 virtual D3D12_VIDEO_EXTENSION_COMMAND_DESC *STDMETHODCALLTYPE GetDesc(
4397 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal) = 0;
4398#endif
4399
4400 virtual HRESULT STDMETHODCALLTYPE GetProtectedResourceSession(
4401 REFIID riid,
4402 _COM_Outptr_opt_ void **ppProtectedSession) = 0;
4403
4404 };
4405
4406
4407#else /* C style interface */
4408
4409 typedef struct ID3D12VideoExtensionCommandVtbl
4410 {
4411 BEGIN_INTERFACE
4412
4413 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4414 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4415 ID3D12VideoExtensionCommand * This,
4416 REFIID riid,
4417 _COM_Outptr_ void **ppvObject);
4418
4419 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4420 ULONG ( STDMETHODCALLTYPE *AddRef )(
4421 ID3D12VideoExtensionCommand * This);
4422
4423 DECLSPEC_XFGVIRT(IUnknown, Release)
4424 ULONG ( STDMETHODCALLTYPE *Release )(
4425 ID3D12VideoExtensionCommand * This);
4426
4427 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4428 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4429 ID3D12VideoExtensionCommand * This,
4430 _In_ REFGUID guid,
4431 _Inout_ UINT *pDataSize,
4432 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4433
4434 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4435 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4436 ID3D12VideoExtensionCommand * This,
4437 _In_ REFGUID guid,
4438 _In_ UINT DataSize,
4439 _In_reads_bytes_opt_( DataSize ) const void *pData);
4440
4441 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4442 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4443 ID3D12VideoExtensionCommand * This,
4444 _In_ REFGUID guid,
4445 _In_opt_ const IUnknown *pData);
4446
4447 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4448 HRESULT ( STDMETHODCALLTYPE *SetName )(
4449 ID3D12VideoExtensionCommand * This,
4450 _In_z_ LPCWSTR Name);
4451
4452 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4453 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4454 ID3D12VideoExtensionCommand * This,
4455 REFIID riid,
4456 _COM_Outptr_opt_ void **ppvDevice);
4457
4458 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetDesc)
4459#if !defined(_WIN32)
4460 D3D12_VIDEO_EXTENSION_COMMAND_DESC ( STDMETHODCALLTYPE *GetDesc )(
4461 ID3D12VideoExtensionCommand * This);
4462
4463#else
4464 D3D12_VIDEO_EXTENSION_COMMAND_DESC *( STDMETHODCALLTYPE *GetDesc )(
4465 ID3D12VideoExtensionCommand * This,
4466 D3D12_VIDEO_EXTENSION_COMMAND_DESC * RetVal);
4467
4468#endif
4469
4470 DECLSPEC_XFGVIRT(ID3D12VideoExtensionCommand, GetProtectedResourceSession)
4471 HRESULT ( STDMETHODCALLTYPE *GetProtectedResourceSession )(
4472 ID3D12VideoExtensionCommand * This,
4473 REFIID riid,
4474 _COM_Outptr_opt_ void **ppProtectedSession);
4475
4476 END_INTERFACE
4477 } ID3D12VideoExtensionCommandVtbl;
4478
4479 interface ID3D12VideoExtensionCommand
4480 {
4481 CONST_VTBL struct ID3D12VideoExtensionCommandVtbl *lpVtbl;
4482 };
4483
4484
4485
4486#ifdef COBJMACROS
4487
4488
4489#define ID3D12VideoExtensionCommand_QueryInterface(This,riid,ppvObject) \
4490 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4491
4492#define ID3D12VideoExtensionCommand_AddRef(This) \
4493 ( (This)->lpVtbl -> AddRef(This) )
4494
4495#define ID3D12VideoExtensionCommand_Release(This) \
4496 ( (This)->lpVtbl -> Release(This) )
4497
4498
4499#define ID3D12VideoExtensionCommand_GetPrivateData(This,guid,pDataSize,pData) \
4500 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
4501
4502#define ID3D12VideoExtensionCommand_SetPrivateData(This,guid,DataSize,pData) \
4503 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
4504
4505#define ID3D12VideoExtensionCommand_SetPrivateDataInterface(This,guid,pData) \
4506 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
4507
4508#define ID3D12VideoExtensionCommand_SetName(This,Name) \
4509 ( (This)->lpVtbl -> SetName(This,Name) )
4510
4511
4512#define ID3D12VideoExtensionCommand_GetDevice(This,riid,ppvDevice) \
4513 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
4514
4515
4516#if !defined(_WIN32)
4517
4518#define ID3D12VideoExtensionCommand_GetDesc(This) \
4519 ( (This)->lpVtbl -> GetDesc(This) )
4520#else
4521#define ID3D12VideoExtensionCommand_GetDesc(This,RetVal) \
4522 ( (This)->lpVtbl -> GetDesc(This,RetVal) )
4523#endif
4524
4525#define ID3D12VideoExtensionCommand_GetProtectedResourceSession(This,riid,ppProtectedSession) \
4526 ( (This)->lpVtbl -> GetProtectedResourceSession(This,riid,ppProtectedSession) )
4527
4528#endif /* COBJMACROS */
4529
4530
4531#endif /* C style interface */
4532
4533
4534
4535
4536#endif /* __ID3D12VideoExtensionCommand_INTERFACE_DEFINED__ */
4537
4538
4539#ifndef __ID3D12VideoDevice2_INTERFACE_DEFINED__
4540#define __ID3D12VideoDevice2_INTERFACE_DEFINED__
4541
4542/* interface ID3D12VideoDevice2 */
4543/* [unique][local][object][uuid] */
4544
4545
4546EXTERN_C const IID IID_ID3D12VideoDevice2;
4547
4548#if defined(__cplusplus) && !defined(CINTERFACE)
4549
4550 MIDL_INTERFACE("F019AC49-F838-4A95-9B17-579437C8F513")
4551 ID3D12VideoDevice2 : public ID3D12VideoDevice1
4552 {
4553 public:
4554 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder1(
4555 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4556 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4557 _In_ REFIID riid,
4558 _COM_Outptr_ void **ppVideoDecoder) = 0;
4559
4560 virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderHeap1(
4561 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4562 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4563 _In_ REFIID riid,
4564 _COM_Outptr_ void **ppVideoDecoderHeap) = 0;
4565
4566 virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor1(
4567 UINT NodeMask,
4568 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4569 UINT NumInputStreamDescs,
4570 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4571 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4572 _In_ REFIID riid,
4573 _COM_Outptr_ void **ppVideoProcessor) = 0;
4574
4575 virtual HRESULT STDMETHODCALLTYPE CreateVideoExtensionCommand(
4576 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4577 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4578 SIZE_T CreationParametersDataSizeInBytes,
4579 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4580 _In_ REFIID riid,
4581 _COM_Outptr_ void **ppVideoExtensionCommand) = 0;
4582
4583 virtual HRESULT STDMETHODCALLTYPE ExecuteExtensionCommand(
4584 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4585 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4586 SIZE_T ExecutionParametersSizeInBytes,
4587 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4588 SIZE_T OutputDataSizeInBytes) = 0;
4589
4590 };
4591
4592
4593#else /* C style interface */
4594
4595 typedef struct ID3D12VideoDevice2Vtbl
4596 {
4597 BEGIN_INTERFACE
4598
4599 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4600 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4601 ID3D12VideoDevice2 * This,
4602 REFIID riid,
4603 _COM_Outptr_ void **ppvObject);
4604
4605 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4606 ULONG ( STDMETHODCALLTYPE *AddRef )(
4607 ID3D12VideoDevice2 * This);
4608
4609 DECLSPEC_XFGVIRT(IUnknown, Release)
4610 ULONG ( STDMETHODCALLTYPE *Release )(
4611 ID3D12VideoDevice2 * This);
4612
4613 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
4614 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
4615 ID3D12VideoDevice2 * This,
4616 D3D12_FEATURE_VIDEO FeatureVideo,
4617 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
4618 UINT FeatureSupportDataSize);
4619
4620 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
4621 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
4622 ID3D12VideoDevice2 * This,
4623 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4624 _In_ REFIID riid,
4625 _COM_Outptr_ void **ppVideoDecoder);
4626
4627 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
4628 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
4629 ID3D12VideoDevice2 * This,
4630 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4631 _In_ REFIID riid,
4632 _COM_Outptr_ void **ppVideoDecoderHeap);
4633
4634 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
4635 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
4636 ID3D12VideoDevice2 * This,
4637 UINT NodeMask,
4638 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4639 UINT NumInputStreamDescs,
4640 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4641 _In_ REFIID riid,
4642 _COM_Outptr_ void **ppVideoProcessor);
4643
4644 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
4645 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
4646 ID3D12VideoDevice2 * This,
4647 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
4648 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4649 _In_ REFIID riid,
4650 _COM_Outptr_ void **ppVideoMotionEstimator);
4651
4652 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
4653 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
4654 ID3D12VideoDevice2 * This,
4655 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
4656 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4657 _In_ REFIID riid,
4658 _COM_Outptr_ void **ppVideoMotionVectorHeap);
4659
4660 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
4661 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
4662 ID3D12VideoDevice2 * This,
4663 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
4664 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4665 _In_ REFIID riid,
4666 _COM_Outptr_ void **ppVideoDecoder);
4667
4668 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
4669 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
4670 ID3D12VideoDevice2 * This,
4671 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
4672 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4673 _In_ REFIID riid,
4674 _COM_Outptr_ void **ppVideoDecoderHeap);
4675
4676 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
4677 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
4678 ID3D12VideoDevice2 * This,
4679 UINT NodeMask,
4680 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
4681 UINT NumInputStreamDescs,
4682 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
4683 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4684 _In_ REFIID riid,
4685 _COM_Outptr_ void **ppVideoProcessor);
4686
4687 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
4688 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
4689 ID3D12VideoDevice2 * This,
4690 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
4691 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
4692 SIZE_T CreationParametersDataSizeInBytes,
4693 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
4694 _In_ REFIID riid,
4695 _COM_Outptr_ void **ppVideoExtensionCommand);
4696
4697 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
4698 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4699 ID3D12VideoDevice2 * This,
4700 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4701 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4702 SIZE_T ExecutionParametersSizeInBytes,
4703 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
4704 SIZE_T OutputDataSizeInBytes);
4705
4706 END_INTERFACE
4707 } ID3D12VideoDevice2Vtbl;
4708
4709 interface ID3D12VideoDevice2
4710 {
4711 CONST_VTBL struct ID3D12VideoDevice2Vtbl *lpVtbl;
4712 };
4713
4714
4715
4716#ifdef COBJMACROS
4717
4718
4719#define ID3D12VideoDevice2_QueryInterface(This,riid,ppvObject) \
4720 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4721
4722#define ID3D12VideoDevice2_AddRef(This) \
4723 ( (This)->lpVtbl -> AddRef(This) )
4724
4725#define ID3D12VideoDevice2_Release(This) \
4726 ( (This)->lpVtbl -> Release(This) )
4727
4728
4729#define ID3D12VideoDevice2_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
4730 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
4731
4732#define ID3D12VideoDevice2_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
4733 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
4734
4735#define ID3D12VideoDevice2_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
4736 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
4737
4738#define ID3D12VideoDevice2_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
4739 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
4740
4741
4742#define ID3D12VideoDevice2_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
4743 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
4744
4745#define ID3D12VideoDevice2_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
4746 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
4747
4748
4749#define ID3D12VideoDevice2_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
4750 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
4751
4752#define ID3D12VideoDevice2_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
4753 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
4754
4755#define ID3D12VideoDevice2_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
4756 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
4757
4758#define ID3D12VideoDevice2_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
4759 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
4760
4761#define ID3D12VideoDevice2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
4762 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
4763
4764#endif /* COBJMACROS */
4765
4766
4767#endif /* C style interface */
4768
4769
4770
4771
4772#endif /* __ID3D12VideoDevice2_INTERFACE_DEFINED__ */
4773
4774
4775#ifndef __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4776#define __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__
4777
4778/* interface ID3D12VideoDecodeCommandList2 */
4779/* [unique][local][object][uuid] */
4780
4781
4782EXTERN_C const IID IID_ID3D12VideoDecodeCommandList2;
4783
4784#if defined(__cplusplus) && !defined(CINTERFACE)
4785
4786 MIDL_INTERFACE("6e120880-c114-4153-8036-d247051e1729")
4787 ID3D12VideoDecodeCommandList2 : public ID3D12VideoDecodeCommandList1
4788 {
4789 public:
4790 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
4791 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
4792
4793 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
4794 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4795 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4796 SIZE_T InitializationParametersSizeInBytes) = 0;
4797
4798 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
4799 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4800 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4801 SIZE_T ExecutionParametersSizeInBytes) = 0;
4802
4803 };
4804
4805
4806#else /* C style interface */
4807
4808 typedef struct ID3D12VideoDecodeCommandList2Vtbl
4809 {
4810 BEGIN_INTERFACE
4811
4812 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
4813 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
4814 ID3D12VideoDecodeCommandList2 * This,
4815 REFIID riid,
4816 _COM_Outptr_ void **ppvObject);
4817
4818 DECLSPEC_XFGVIRT(IUnknown, AddRef)
4819 ULONG ( STDMETHODCALLTYPE *AddRef )(
4820 ID3D12VideoDecodeCommandList2 * This);
4821
4822 DECLSPEC_XFGVIRT(IUnknown, Release)
4823 ULONG ( STDMETHODCALLTYPE *Release )(
4824 ID3D12VideoDecodeCommandList2 * This);
4825
4826 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
4827 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
4828 ID3D12VideoDecodeCommandList2 * This,
4829 _In_ REFGUID guid,
4830 _Inout_ UINT *pDataSize,
4831 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
4832
4833 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
4834 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
4835 ID3D12VideoDecodeCommandList2 * This,
4836 _In_ REFGUID guid,
4837 _In_ UINT DataSize,
4838 _In_reads_bytes_opt_( DataSize ) const void *pData);
4839
4840 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
4841 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
4842 ID3D12VideoDecodeCommandList2 * This,
4843 _In_ REFGUID guid,
4844 _In_opt_ const IUnknown *pData);
4845
4846 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
4847 HRESULT ( STDMETHODCALLTYPE *SetName )(
4848 ID3D12VideoDecodeCommandList2 * This,
4849 _In_z_ LPCWSTR Name);
4850
4851 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
4852 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
4853 ID3D12VideoDecodeCommandList2 * This,
4854 REFIID riid,
4855 _COM_Outptr_opt_ void **ppvDevice);
4856
4857 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
4858 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
4859 ID3D12VideoDecodeCommandList2 * This);
4860
4861 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
4862 HRESULT ( STDMETHODCALLTYPE *Close )(
4863 ID3D12VideoDecodeCommandList2 * This);
4864
4865 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
4866 HRESULT ( STDMETHODCALLTYPE *Reset )(
4867 ID3D12VideoDecodeCommandList2 * This,
4868 _In_ ID3D12CommandAllocator *pAllocator);
4869
4870 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
4871 void ( STDMETHODCALLTYPE *ClearState )(
4872 ID3D12VideoDecodeCommandList2 * This);
4873
4874 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
4875 void ( STDMETHODCALLTYPE *ResourceBarrier )(
4876 ID3D12VideoDecodeCommandList2 * This,
4877 _In_ UINT NumBarriers,
4878 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
4879
4880 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
4881 void ( STDMETHODCALLTYPE *DiscardResource )(
4882 ID3D12VideoDecodeCommandList2 * This,
4883 _In_ ID3D12Resource *pResource,
4884 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
4885
4886 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
4887 void ( STDMETHODCALLTYPE *BeginQuery )(
4888 ID3D12VideoDecodeCommandList2 * This,
4889 _In_ ID3D12QueryHeap *pQueryHeap,
4890 _In_ D3D12_QUERY_TYPE Type,
4891 _In_ UINT Index);
4892
4893 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
4894 void ( STDMETHODCALLTYPE *EndQuery )(
4895 ID3D12VideoDecodeCommandList2 * This,
4896 _In_ ID3D12QueryHeap *pQueryHeap,
4897 _In_ D3D12_QUERY_TYPE Type,
4898 _In_ UINT Index);
4899
4900 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
4901 void ( STDMETHODCALLTYPE *ResolveQueryData )(
4902 ID3D12VideoDecodeCommandList2 * This,
4903 _In_ ID3D12QueryHeap *pQueryHeap,
4904 _In_ D3D12_QUERY_TYPE Type,
4905 _In_ UINT StartIndex,
4906 _In_ UINT NumQueries,
4907 _In_ ID3D12Resource *pDestinationBuffer,
4908 _In_ UINT64 AlignedDestinationBufferOffset);
4909
4910 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
4911 void ( STDMETHODCALLTYPE *SetPredication )(
4912 ID3D12VideoDecodeCommandList2 * This,
4913 _In_opt_ ID3D12Resource *pBuffer,
4914 _In_ UINT64 AlignedBufferOffset,
4915 _In_ D3D12_PREDICATION_OP Operation);
4916
4917 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
4918 void ( STDMETHODCALLTYPE *SetMarker )(
4919 ID3D12VideoDecodeCommandList2 * This,
4920 UINT Metadata,
4921 _In_reads_bytes_opt_(Size) const void *pData,
4922 UINT Size);
4923
4924 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
4925 void ( STDMETHODCALLTYPE *BeginEvent )(
4926 ID3D12VideoDecodeCommandList2 * This,
4927 UINT Metadata,
4928 _In_reads_bytes_opt_(Size) const void *pData,
4929 UINT Size);
4930
4931 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
4932 void ( STDMETHODCALLTYPE *EndEvent )(
4933 ID3D12VideoDecodeCommandList2 * This);
4934
4935 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
4936 void ( STDMETHODCALLTYPE *DecodeFrame )(
4937 ID3D12VideoDecodeCommandList2 * This,
4938 _In_ ID3D12VideoDecoder *pDecoder,
4939 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
4940 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4941
4942 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
4943 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
4944 ID3D12VideoDecodeCommandList2 * This,
4945 UINT Count,
4946 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
4947 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
4948
4949 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
4950 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
4951 ID3D12VideoDecodeCommandList2 * This,
4952 _In_ ID3D12VideoDecoder *pDecoder,
4953 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
4954 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
4955
4956 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
4957 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
4958 ID3D12VideoDecodeCommandList2 * This,
4959 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
4960
4961 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
4962 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
4963 ID3D12VideoDecodeCommandList2 * This,
4964 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4965 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
4966 SIZE_T InitializationParametersSizeInBytes);
4967
4968 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
4969 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
4970 ID3D12VideoDecodeCommandList2 * This,
4971 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
4972 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
4973 SIZE_T ExecutionParametersSizeInBytes);
4974
4975 END_INTERFACE
4976 } ID3D12VideoDecodeCommandList2Vtbl;
4977
4978 interface ID3D12VideoDecodeCommandList2
4979 {
4980 CONST_VTBL struct ID3D12VideoDecodeCommandList2Vtbl *lpVtbl;
4981 };
4982
4983
4984
4985#ifdef COBJMACROS
4986
4987
4988#define ID3D12VideoDecodeCommandList2_QueryInterface(This,riid,ppvObject) \
4989 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
4990
4991#define ID3D12VideoDecodeCommandList2_AddRef(This) \
4992 ( (This)->lpVtbl -> AddRef(This) )
4993
4994#define ID3D12VideoDecodeCommandList2_Release(This) \
4995 ( (This)->lpVtbl -> Release(This) )
4996
4997
4998#define ID3D12VideoDecodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
4999 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5000
5001#define ID3D12VideoDecodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5002 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5003
5004#define ID3D12VideoDecodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
5005 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5006
5007#define ID3D12VideoDecodeCommandList2_SetName(This,Name) \
5008 ( (This)->lpVtbl -> SetName(This,Name) )
5009
5010
5011#define ID3D12VideoDecodeCommandList2_GetDevice(This,riid,ppvDevice) \
5012 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5013
5014
5015#define ID3D12VideoDecodeCommandList2_GetType(This) \
5016 ( (This)->lpVtbl -> GetType(This) )
5017
5018
5019#define ID3D12VideoDecodeCommandList2_Close(This) \
5020 ( (This)->lpVtbl -> Close(This) )
5021
5022#define ID3D12VideoDecodeCommandList2_Reset(This,pAllocator) \
5023 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5024
5025#define ID3D12VideoDecodeCommandList2_ClearState(This) \
5026 ( (This)->lpVtbl -> ClearState(This) )
5027
5028#define ID3D12VideoDecodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5029 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5030
5031#define ID3D12VideoDecodeCommandList2_DiscardResource(This,pResource,pRegion) \
5032 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5033
5034#define ID3D12VideoDecodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5035 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5036
5037#define ID3D12VideoDecodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5038 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5039
5040#define ID3D12VideoDecodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5041 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5042
5043#define ID3D12VideoDecodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5044 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5045
5046#define ID3D12VideoDecodeCommandList2_SetMarker(This,Metadata,pData,Size) \
5047 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5048
5049#define ID3D12VideoDecodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
5050 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5051
5052#define ID3D12VideoDecodeCommandList2_EndEvent(This) \
5053 ( (This)->lpVtbl -> EndEvent(This) )
5054
5055#define ID3D12VideoDecodeCommandList2_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5056 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5057
5058#define ID3D12VideoDecodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5059 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5060
5061
5062#define ID3D12VideoDecodeCommandList2_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5063 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5064
5065
5066#define ID3D12VideoDecodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5067 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5068
5069#define ID3D12VideoDecodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5070 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5071
5072#define ID3D12VideoDecodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5073 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5074
5075#endif /* COBJMACROS */
5076
5077
5078#endif /* C style interface */
5079
5080
5081
5082
5083#endif /* __ID3D12VideoDecodeCommandList2_INTERFACE_DEFINED__ */
5084
5085
5086#ifndef __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5087#define __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__
5088
5089/* interface ID3D12VideoDecodeCommandList3 */
5090/* [unique][local][object][uuid] */
5091
5092
5093EXTERN_C const IID IID_ID3D12VideoDecodeCommandList3;
5094
5095#if defined(__cplusplus) && !defined(CINTERFACE)
5096
5097 MIDL_INTERFACE("2aee8c37-9562-42da-8abf-61efeb2e4513")
5098 ID3D12VideoDecodeCommandList3 : public ID3D12VideoDecodeCommandList2
5099 {
5100 public:
5101 virtual void STDMETHODCALLTYPE Barrier(
5102 UINT32 NumBarrierGroups,
5103 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5104
5105 };
5106
5107
5108#else /* C style interface */
5109
5110 typedef struct ID3D12VideoDecodeCommandList3Vtbl
5111 {
5112 BEGIN_INTERFACE
5113
5114 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5115 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5116 ID3D12VideoDecodeCommandList3 * This,
5117 REFIID riid,
5118 _COM_Outptr_ void **ppvObject);
5119
5120 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5121 ULONG ( STDMETHODCALLTYPE *AddRef )(
5122 ID3D12VideoDecodeCommandList3 * This);
5123
5124 DECLSPEC_XFGVIRT(IUnknown, Release)
5125 ULONG ( STDMETHODCALLTYPE *Release )(
5126 ID3D12VideoDecodeCommandList3 * This);
5127
5128 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5129 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5130 ID3D12VideoDecodeCommandList3 * This,
5131 _In_ REFGUID guid,
5132 _Inout_ UINT *pDataSize,
5133 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5134
5135 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5136 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5137 ID3D12VideoDecodeCommandList3 * This,
5138 _In_ REFGUID guid,
5139 _In_ UINT DataSize,
5140 _In_reads_bytes_opt_( DataSize ) const void *pData);
5141
5142 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5143 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5144 ID3D12VideoDecodeCommandList3 * This,
5145 _In_ REFGUID guid,
5146 _In_opt_ const IUnknown *pData);
5147
5148 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5149 HRESULT ( STDMETHODCALLTYPE *SetName )(
5150 ID3D12VideoDecodeCommandList3 * This,
5151 _In_z_ LPCWSTR Name);
5152
5153 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5154 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5155 ID3D12VideoDecodeCommandList3 * This,
5156 REFIID riid,
5157 _COM_Outptr_opt_ void **ppvDevice);
5158
5159 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5160 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5161 ID3D12VideoDecodeCommandList3 * This);
5162
5163 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Close)
5164 HRESULT ( STDMETHODCALLTYPE *Close )(
5165 ID3D12VideoDecodeCommandList3 * This);
5166
5167 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, Reset)
5168 HRESULT ( STDMETHODCALLTYPE *Reset )(
5169 ID3D12VideoDecodeCommandList3 * This,
5170 _In_ ID3D12CommandAllocator *pAllocator);
5171
5172 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ClearState)
5173 void ( STDMETHODCALLTYPE *ClearState )(
5174 ID3D12VideoDecodeCommandList3 * This);
5175
5176 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResourceBarrier)
5177 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5178 ID3D12VideoDecodeCommandList3 * This,
5179 _In_ UINT NumBarriers,
5180 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5181
5182 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DiscardResource)
5183 void ( STDMETHODCALLTYPE *DiscardResource )(
5184 ID3D12VideoDecodeCommandList3 * This,
5185 _In_ ID3D12Resource *pResource,
5186 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5187
5188 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginQuery)
5189 void ( STDMETHODCALLTYPE *BeginQuery )(
5190 ID3D12VideoDecodeCommandList3 * This,
5191 _In_ ID3D12QueryHeap *pQueryHeap,
5192 _In_ D3D12_QUERY_TYPE Type,
5193 _In_ UINT Index);
5194
5195 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndQuery)
5196 void ( STDMETHODCALLTYPE *EndQuery )(
5197 ID3D12VideoDecodeCommandList3 * This,
5198 _In_ ID3D12QueryHeap *pQueryHeap,
5199 _In_ D3D12_QUERY_TYPE Type,
5200 _In_ UINT Index);
5201
5202 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, ResolveQueryData)
5203 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5204 ID3D12VideoDecodeCommandList3 * This,
5205 _In_ ID3D12QueryHeap *pQueryHeap,
5206 _In_ D3D12_QUERY_TYPE Type,
5207 _In_ UINT StartIndex,
5208 _In_ UINT NumQueries,
5209 _In_ ID3D12Resource *pDestinationBuffer,
5210 _In_ UINT64 AlignedDestinationBufferOffset);
5211
5212 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetPredication)
5213 void ( STDMETHODCALLTYPE *SetPredication )(
5214 ID3D12VideoDecodeCommandList3 * This,
5215 _In_opt_ ID3D12Resource *pBuffer,
5216 _In_ UINT64 AlignedBufferOffset,
5217 _In_ D3D12_PREDICATION_OP Operation);
5218
5219 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, SetMarker)
5220 void ( STDMETHODCALLTYPE *SetMarker )(
5221 ID3D12VideoDecodeCommandList3 * This,
5222 UINT Metadata,
5223 _In_reads_bytes_opt_(Size) const void *pData,
5224 UINT Size);
5225
5226 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, BeginEvent)
5227 void ( STDMETHODCALLTYPE *BeginEvent )(
5228 ID3D12VideoDecodeCommandList3 * This,
5229 UINT Metadata,
5230 _In_reads_bytes_opt_(Size) const void *pData,
5231 UINT Size);
5232
5233 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, EndEvent)
5234 void ( STDMETHODCALLTYPE *EndEvent )(
5235 ID3D12VideoDecodeCommandList3 * This);
5236
5237 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, DecodeFrame)
5238 void ( STDMETHODCALLTYPE *DecodeFrame )(
5239 ID3D12VideoDecodeCommandList3 * This,
5240 _In_ ID3D12VideoDecoder *pDecoder,
5241 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5242 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5243
5244 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList, WriteBufferImmediate)
5245 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5246 ID3D12VideoDecodeCommandList3 * This,
5247 UINT Count,
5248 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5249 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5250
5251 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList1, DecodeFrame1)
5252 void ( STDMETHODCALLTYPE *DecodeFrame1 )(
5253 ID3D12VideoDecodeCommandList3 * This,
5254 _In_ ID3D12VideoDecoder *pDecoder,
5255 _In_ const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
5256 _In_ const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments);
5257
5258 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, SetProtectedResourceSession)
5259 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5260 ID3D12VideoDecodeCommandList3 * This,
5261 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5262
5263 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, InitializeExtensionCommand)
5264 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5265 ID3D12VideoDecodeCommandList3 * This,
5266 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5267 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5268 SIZE_T InitializationParametersSizeInBytes);
5269
5270 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList2, ExecuteExtensionCommand)
5271 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5272 ID3D12VideoDecodeCommandList3 * This,
5273 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5274 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5275 SIZE_T ExecutionParametersSizeInBytes);
5276
5277 DECLSPEC_XFGVIRT(ID3D12VideoDecodeCommandList3, Barrier)
5278 void ( STDMETHODCALLTYPE *Barrier )(
5279 ID3D12VideoDecodeCommandList3 * This,
5280 UINT32 NumBarrierGroups,
5281 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5282
5283 END_INTERFACE
5284 } ID3D12VideoDecodeCommandList3Vtbl;
5285
5286 interface ID3D12VideoDecodeCommandList3
5287 {
5288 CONST_VTBL struct ID3D12VideoDecodeCommandList3Vtbl *lpVtbl;
5289 };
5290
5291
5292
5293#ifdef COBJMACROS
5294
5295
5296#define ID3D12VideoDecodeCommandList3_QueryInterface(This,riid,ppvObject) \
5297 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5298
5299#define ID3D12VideoDecodeCommandList3_AddRef(This) \
5300 ( (This)->lpVtbl -> AddRef(This) )
5301
5302#define ID3D12VideoDecodeCommandList3_Release(This) \
5303 ( (This)->lpVtbl -> Release(This) )
5304
5305
5306#define ID3D12VideoDecodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5307 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5308
5309#define ID3D12VideoDecodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5310 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5311
5312#define ID3D12VideoDecodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
5313 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5314
5315#define ID3D12VideoDecodeCommandList3_SetName(This,Name) \
5316 ( (This)->lpVtbl -> SetName(This,Name) )
5317
5318
5319#define ID3D12VideoDecodeCommandList3_GetDevice(This,riid,ppvDevice) \
5320 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5321
5322
5323#define ID3D12VideoDecodeCommandList3_GetType(This) \
5324 ( (This)->lpVtbl -> GetType(This) )
5325
5326
5327#define ID3D12VideoDecodeCommandList3_Close(This) \
5328 ( (This)->lpVtbl -> Close(This) )
5329
5330#define ID3D12VideoDecodeCommandList3_Reset(This,pAllocator) \
5331 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5332
5333#define ID3D12VideoDecodeCommandList3_ClearState(This) \
5334 ( (This)->lpVtbl -> ClearState(This) )
5335
5336#define ID3D12VideoDecodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5337 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5338
5339#define ID3D12VideoDecodeCommandList3_DiscardResource(This,pResource,pRegion) \
5340 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5341
5342#define ID3D12VideoDecodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5343 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5344
5345#define ID3D12VideoDecodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5346 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5347
5348#define ID3D12VideoDecodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5349 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5350
5351#define ID3D12VideoDecodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5352 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5353
5354#define ID3D12VideoDecodeCommandList3_SetMarker(This,Metadata,pData,Size) \
5355 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5356
5357#define ID3D12VideoDecodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
5358 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5359
5360#define ID3D12VideoDecodeCommandList3_EndEvent(This) \
5361 ( (This)->lpVtbl -> EndEvent(This) )
5362
5363#define ID3D12VideoDecodeCommandList3_DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) \
5364 ( (This)->lpVtbl -> DecodeFrame(This,pDecoder,pOutputArguments,pInputArguments) )
5365
5366#define ID3D12VideoDecodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5367 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5368
5369
5370#define ID3D12VideoDecodeCommandList3_DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) \
5371 ( (This)->lpVtbl -> DecodeFrame1(This,pDecoder,pOutputArguments,pInputArguments) )
5372
5373
5374#define ID3D12VideoDecodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
5375 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5376
5377#define ID3D12VideoDecodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5378 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5379
5380#define ID3D12VideoDecodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5381 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5382
5383
5384#define ID3D12VideoDecodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
5385 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
5386
5387#endif /* COBJMACROS */
5388
5389
5390#endif /* C style interface */
5391
5392
5393
5394
5395#endif /* __ID3D12VideoDecodeCommandList3_INTERFACE_DEFINED__ */
5396
5397
5398#ifndef __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5399#define __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__
5400
5401/* interface ID3D12VideoProcessCommandList2 */
5402/* [unique][local][object][uuid] */
5403
5404
5405EXTERN_C const IID IID_ID3D12VideoProcessCommandList2;
5406
5407#if defined(__cplusplus) && !defined(CINTERFACE)
5408
5409 MIDL_INTERFACE("db525ae4-6ad6-473c-baa7-59b2e37082e4")
5410 ID3D12VideoProcessCommandList2 : public ID3D12VideoProcessCommandList1
5411 {
5412 public:
5413 virtual void STDMETHODCALLTYPE SetProtectedResourceSession(
5414 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession) = 0;
5415
5416 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
5417 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5418 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5419 SIZE_T InitializationParametersSizeInBytes) = 0;
5420
5421 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
5422 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5423 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5424 SIZE_T ExecutionParametersSizeInBytes) = 0;
5425
5426 };
5427
5428
5429#else /* C style interface */
5430
5431 typedef struct ID3D12VideoProcessCommandList2Vtbl
5432 {
5433 BEGIN_INTERFACE
5434
5435 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5436 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5437 ID3D12VideoProcessCommandList2 * This,
5438 REFIID riid,
5439 _COM_Outptr_ void **ppvObject);
5440
5441 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5442 ULONG ( STDMETHODCALLTYPE *AddRef )(
5443 ID3D12VideoProcessCommandList2 * This);
5444
5445 DECLSPEC_XFGVIRT(IUnknown, Release)
5446 ULONG ( STDMETHODCALLTYPE *Release )(
5447 ID3D12VideoProcessCommandList2 * This);
5448
5449 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5450 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5451 ID3D12VideoProcessCommandList2 * This,
5452 _In_ REFGUID guid,
5453 _Inout_ UINT *pDataSize,
5454 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5455
5456 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5457 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5458 ID3D12VideoProcessCommandList2 * This,
5459 _In_ REFGUID guid,
5460 _In_ UINT DataSize,
5461 _In_reads_bytes_opt_( DataSize ) const void *pData);
5462
5463 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5464 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5465 ID3D12VideoProcessCommandList2 * This,
5466 _In_ REFGUID guid,
5467 _In_opt_ const IUnknown *pData);
5468
5469 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5470 HRESULT ( STDMETHODCALLTYPE *SetName )(
5471 ID3D12VideoProcessCommandList2 * This,
5472 _In_z_ LPCWSTR Name);
5473
5474 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5475 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5476 ID3D12VideoProcessCommandList2 * This,
5477 REFIID riid,
5478 _COM_Outptr_opt_ void **ppvDevice);
5479
5480 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5481 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5482 ID3D12VideoProcessCommandList2 * This);
5483
5484 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5485 HRESULT ( STDMETHODCALLTYPE *Close )(
5486 ID3D12VideoProcessCommandList2 * This);
5487
5488 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5489 HRESULT ( STDMETHODCALLTYPE *Reset )(
5490 ID3D12VideoProcessCommandList2 * This,
5491 _In_ ID3D12CommandAllocator *pAllocator);
5492
5493 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5494 void ( STDMETHODCALLTYPE *ClearState )(
5495 ID3D12VideoProcessCommandList2 * This);
5496
5497 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5498 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5499 ID3D12VideoProcessCommandList2 * This,
5500 _In_ UINT NumBarriers,
5501 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5502
5503 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5504 void ( STDMETHODCALLTYPE *DiscardResource )(
5505 ID3D12VideoProcessCommandList2 * This,
5506 _In_ ID3D12Resource *pResource,
5507 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5508
5509 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5510 void ( STDMETHODCALLTYPE *BeginQuery )(
5511 ID3D12VideoProcessCommandList2 * This,
5512 _In_ ID3D12QueryHeap *pQueryHeap,
5513 _In_ D3D12_QUERY_TYPE Type,
5514 _In_ UINT Index);
5515
5516 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5517 void ( STDMETHODCALLTYPE *EndQuery )(
5518 ID3D12VideoProcessCommandList2 * This,
5519 _In_ ID3D12QueryHeap *pQueryHeap,
5520 _In_ D3D12_QUERY_TYPE Type,
5521 _In_ UINT Index);
5522
5523 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5524 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5525 ID3D12VideoProcessCommandList2 * This,
5526 _In_ ID3D12QueryHeap *pQueryHeap,
5527 _In_ D3D12_QUERY_TYPE Type,
5528 _In_ UINT StartIndex,
5529 _In_ UINT NumQueries,
5530 _In_ ID3D12Resource *pDestinationBuffer,
5531 _In_ UINT64 AlignedDestinationBufferOffset);
5532
5533 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5534 void ( STDMETHODCALLTYPE *SetPredication )(
5535 ID3D12VideoProcessCommandList2 * This,
5536 _In_opt_ ID3D12Resource *pBuffer,
5537 _In_ UINT64 AlignedBufferOffset,
5538 _In_ D3D12_PREDICATION_OP Operation);
5539
5540 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5541 void ( STDMETHODCALLTYPE *SetMarker )(
5542 ID3D12VideoProcessCommandList2 * This,
5543 UINT Metadata,
5544 _In_reads_bytes_opt_(Size) const void *pData,
5545 UINT Size);
5546
5547 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5548 void ( STDMETHODCALLTYPE *BeginEvent )(
5549 ID3D12VideoProcessCommandList2 * This,
5550 UINT Metadata,
5551 _In_reads_bytes_opt_(Size) const void *pData,
5552 UINT Size);
5553
5554 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5555 void ( STDMETHODCALLTYPE *EndEvent )(
5556 ID3D12VideoProcessCommandList2 * This);
5557
5558 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5559 void ( STDMETHODCALLTYPE *ProcessFrames )(
5560 ID3D12VideoProcessCommandList2 * This,
5561 _In_ ID3D12VideoProcessor *pVideoProcessor,
5562 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5563 UINT NumInputStreams,
5564 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5565
5566 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5567 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5568 ID3D12VideoProcessCommandList2 * This,
5569 UINT Count,
5570 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5571 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5572
5573 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5574 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5575 ID3D12VideoProcessCommandList2 * This,
5576 _In_ ID3D12VideoProcessor *pVideoProcessor,
5577 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5578 UINT NumInputStreams,
5579 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5580
5581 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5582 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5583 ID3D12VideoProcessCommandList2 * This,
5584 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5585
5586 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5587 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5588 ID3D12VideoProcessCommandList2 * This,
5589 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5590 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5591 SIZE_T InitializationParametersSizeInBytes);
5592
5593 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5594 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5595 ID3D12VideoProcessCommandList2 * This,
5596 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5597 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5598 SIZE_T ExecutionParametersSizeInBytes);
5599
5600 END_INTERFACE
5601 } ID3D12VideoProcessCommandList2Vtbl;
5602
5603 interface ID3D12VideoProcessCommandList2
5604 {
5605 CONST_VTBL struct ID3D12VideoProcessCommandList2Vtbl *lpVtbl;
5606 };
5607
5608
5609
5610#ifdef COBJMACROS
5611
5612
5613#define ID3D12VideoProcessCommandList2_QueryInterface(This,riid,ppvObject) \
5614 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5615
5616#define ID3D12VideoProcessCommandList2_AddRef(This) \
5617 ( (This)->lpVtbl -> AddRef(This) )
5618
5619#define ID3D12VideoProcessCommandList2_Release(This) \
5620 ( (This)->lpVtbl -> Release(This) )
5621
5622
5623#define ID3D12VideoProcessCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
5624 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5625
5626#define ID3D12VideoProcessCommandList2_SetPrivateData(This,guid,DataSize,pData) \
5627 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5628
5629#define ID3D12VideoProcessCommandList2_SetPrivateDataInterface(This,guid,pData) \
5630 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5631
5632#define ID3D12VideoProcessCommandList2_SetName(This,Name) \
5633 ( (This)->lpVtbl -> SetName(This,Name) )
5634
5635
5636#define ID3D12VideoProcessCommandList2_GetDevice(This,riid,ppvDevice) \
5637 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5638
5639
5640#define ID3D12VideoProcessCommandList2_GetType(This) \
5641 ( (This)->lpVtbl -> GetType(This) )
5642
5643
5644#define ID3D12VideoProcessCommandList2_Close(This) \
5645 ( (This)->lpVtbl -> Close(This) )
5646
5647#define ID3D12VideoProcessCommandList2_Reset(This,pAllocator) \
5648 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5649
5650#define ID3D12VideoProcessCommandList2_ClearState(This) \
5651 ( (This)->lpVtbl -> ClearState(This) )
5652
5653#define ID3D12VideoProcessCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
5654 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5655
5656#define ID3D12VideoProcessCommandList2_DiscardResource(This,pResource,pRegion) \
5657 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5658
5659#define ID3D12VideoProcessCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
5660 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5661
5662#define ID3D12VideoProcessCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
5663 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5664
5665#define ID3D12VideoProcessCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5666 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5667
5668#define ID3D12VideoProcessCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5669 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5670
5671#define ID3D12VideoProcessCommandList2_SetMarker(This,Metadata,pData,Size) \
5672 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5673
5674#define ID3D12VideoProcessCommandList2_BeginEvent(This,Metadata,pData,Size) \
5675 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5676
5677#define ID3D12VideoProcessCommandList2_EndEvent(This) \
5678 ( (This)->lpVtbl -> EndEvent(This) )
5679
5680#define ID3D12VideoProcessCommandList2_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5681 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5682
5683#define ID3D12VideoProcessCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
5684 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5685
5686
5687#define ID3D12VideoProcessCommandList2_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5688 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5689
5690
5691#define ID3D12VideoProcessCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
5692 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
5693
5694#define ID3D12VideoProcessCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
5695 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
5696
5697#define ID3D12VideoProcessCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
5698 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
5699
5700#endif /* COBJMACROS */
5701
5702
5703#endif /* C style interface */
5704
5705
5706
5707
5708#endif /* __ID3D12VideoProcessCommandList2_INTERFACE_DEFINED__ */
5709
5710
5711#ifndef __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5712#define __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__
5713
5714/* interface ID3D12VideoProcessCommandList3 */
5715/* [unique][local][object][uuid] */
5716
5717
5718EXTERN_C const IID IID_ID3D12VideoProcessCommandList3;
5719
5720#if defined(__cplusplus) && !defined(CINTERFACE)
5721
5722 MIDL_INTERFACE("1a0a4ca4-9f08-40ce-9558-b411fd2666ff")
5723 ID3D12VideoProcessCommandList3 : public ID3D12VideoProcessCommandList2
5724 {
5725 public:
5726 virtual void STDMETHODCALLTYPE Barrier(
5727 UINT32 NumBarrierGroups,
5728 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
5729
5730 };
5731
5732
5733#else /* C style interface */
5734
5735 typedef struct ID3D12VideoProcessCommandList3Vtbl
5736 {
5737 BEGIN_INTERFACE
5738
5739 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
5740 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
5741 ID3D12VideoProcessCommandList3 * This,
5742 REFIID riid,
5743 _COM_Outptr_ void **ppvObject);
5744
5745 DECLSPEC_XFGVIRT(IUnknown, AddRef)
5746 ULONG ( STDMETHODCALLTYPE *AddRef )(
5747 ID3D12VideoProcessCommandList3 * This);
5748
5749 DECLSPEC_XFGVIRT(IUnknown, Release)
5750 ULONG ( STDMETHODCALLTYPE *Release )(
5751 ID3D12VideoProcessCommandList3 * This);
5752
5753 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
5754 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
5755 ID3D12VideoProcessCommandList3 * This,
5756 _In_ REFGUID guid,
5757 _Inout_ UINT *pDataSize,
5758 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
5759
5760 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
5761 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
5762 ID3D12VideoProcessCommandList3 * This,
5763 _In_ REFGUID guid,
5764 _In_ UINT DataSize,
5765 _In_reads_bytes_opt_( DataSize ) const void *pData);
5766
5767 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
5768 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
5769 ID3D12VideoProcessCommandList3 * This,
5770 _In_ REFGUID guid,
5771 _In_opt_ const IUnknown *pData);
5772
5773 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
5774 HRESULT ( STDMETHODCALLTYPE *SetName )(
5775 ID3D12VideoProcessCommandList3 * This,
5776 _In_z_ LPCWSTR Name);
5777
5778 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
5779 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
5780 ID3D12VideoProcessCommandList3 * This,
5781 REFIID riid,
5782 _COM_Outptr_opt_ void **ppvDevice);
5783
5784 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
5785 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
5786 ID3D12VideoProcessCommandList3 * This);
5787
5788 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Close)
5789 HRESULT ( STDMETHODCALLTYPE *Close )(
5790 ID3D12VideoProcessCommandList3 * This);
5791
5792 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, Reset)
5793 HRESULT ( STDMETHODCALLTYPE *Reset )(
5794 ID3D12VideoProcessCommandList3 * This,
5795 _In_ ID3D12CommandAllocator *pAllocator);
5796
5797 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ClearState)
5798 void ( STDMETHODCALLTYPE *ClearState )(
5799 ID3D12VideoProcessCommandList3 * This);
5800
5801 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResourceBarrier)
5802 void ( STDMETHODCALLTYPE *ResourceBarrier )(
5803 ID3D12VideoProcessCommandList3 * This,
5804 _In_ UINT NumBarriers,
5805 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
5806
5807 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, DiscardResource)
5808 void ( STDMETHODCALLTYPE *DiscardResource )(
5809 ID3D12VideoProcessCommandList3 * This,
5810 _In_ ID3D12Resource *pResource,
5811 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
5812
5813 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginQuery)
5814 void ( STDMETHODCALLTYPE *BeginQuery )(
5815 ID3D12VideoProcessCommandList3 * This,
5816 _In_ ID3D12QueryHeap *pQueryHeap,
5817 _In_ D3D12_QUERY_TYPE Type,
5818 _In_ UINT Index);
5819
5820 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndQuery)
5821 void ( STDMETHODCALLTYPE *EndQuery )(
5822 ID3D12VideoProcessCommandList3 * This,
5823 _In_ ID3D12QueryHeap *pQueryHeap,
5824 _In_ D3D12_QUERY_TYPE Type,
5825 _In_ UINT Index);
5826
5827 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ResolveQueryData)
5828 void ( STDMETHODCALLTYPE *ResolveQueryData )(
5829 ID3D12VideoProcessCommandList3 * This,
5830 _In_ ID3D12QueryHeap *pQueryHeap,
5831 _In_ D3D12_QUERY_TYPE Type,
5832 _In_ UINT StartIndex,
5833 _In_ UINT NumQueries,
5834 _In_ ID3D12Resource *pDestinationBuffer,
5835 _In_ UINT64 AlignedDestinationBufferOffset);
5836
5837 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetPredication)
5838 void ( STDMETHODCALLTYPE *SetPredication )(
5839 ID3D12VideoProcessCommandList3 * This,
5840 _In_opt_ ID3D12Resource *pBuffer,
5841 _In_ UINT64 AlignedBufferOffset,
5842 _In_ D3D12_PREDICATION_OP Operation);
5843
5844 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, SetMarker)
5845 void ( STDMETHODCALLTYPE *SetMarker )(
5846 ID3D12VideoProcessCommandList3 * This,
5847 UINT Metadata,
5848 _In_reads_bytes_opt_(Size) const void *pData,
5849 UINT Size);
5850
5851 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, BeginEvent)
5852 void ( STDMETHODCALLTYPE *BeginEvent )(
5853 ID3D12VideoProcessCommandList3 * This,
5854 UINT Metadata,
5855 _In_reads_bytes_opt_(Size) const void *pData,
5856 UINT Size);
5857
5858 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, EndEvent)
5859 void ( STDMETHODCALLTYPE *EndEvent )(
5860 ID3D12VideoProcessCommandList3 * This);
5861
5862 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, ProcessFrames)
5863 void ( STDMETHODCALLTYPE *ProcessFrames )(
5864 ID3D12VideoProcessCommandList3 * This,
5865 _In_ ID3D12VideoProcessor *pVideoProcessor,
5866 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5867 UINT NumInputStreams,
5868 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments);
5869
5870 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList, WriteBufferImmediate)
5871 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
5872 ID3D12VideoProcessCommandList3 * This,
5873 UINT Count,
5874 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
5875 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
5876
5877 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList1, ProcessFrames1)
5878 void ( STDMETHODCALLTYPE *ProcessFrames1 )(
5879 ID3D12VideoProcessCommandList3 * This,
5880 _In_ ID3D12VideoProcessor *pVideoProcessor,
5881 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
5882 UINT NumInputStreams,
5883 _In_reads_(NumInputStreams) const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments);
5884
5885 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, SetProtectedResourceSession)
5886 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
5887 ID3D12VideoProcessCommandList3 * This,
5888 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
5889
5890 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, InitializeExtensionCommand)
5891 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
5892 ID3D12VideoProcessCommandList3 * This,
5893 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5894 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
5895 SIZE_T InitializationParametersSizeInBytes);
5896
5897 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList2, ExecuteExtensionCommand)
5898 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
5899 ID3D12VideoProcessCommandList3 * This,
5900 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
5901 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
5902 SIZE_T ExecutionParametersSizeInBytes);
5903
5904 DECLSPEC_XFGVIRT(ID3D12VideoProcessCommandList3, Barrier)
5905 void ( STDMETHODCALLTYPE *Barrier )(
5906 ID3D12VideoProcessCommandList3 * This,
5907 UINT32 NumBarrierGroups,
5908 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
5909
5910 END_INTERFACE
5911 } ID3D12VideoProcessCommandList3Vtbl;
5912
5913 interface ID3D12VideoProcessCommandList3
5914 {
5915 CONST_VTBL struct ID3D12VideoProcessCommandList3Vtbl *lpVtbl;
5916 };
5917
5918
5919
5920#ifdef COBJMACROS
5921
5922
5923#define ID3D12VideoProcessCommandList3_QueryInterface(This,riid,ppvObject) \
5924 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
5925
5926#define ID3D12VideoProcessCommandList3_AddRef(This) \
5927 ( (This)->lpVtbl -> AddRef(This) )
5928
5929#define ID3D12VideoProcessCommandList3_Release(This) \
5930 ( (This)->lpVtbl -> Release(This) )
5931
5932
5933#define ID3D12VideoProcessCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
5934 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
5935
5936#define ID3D12VideoProcessCommandList3_SetPrivateData(This,guid,DataSize,pData) \
5937 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
5938
5939#define ID3D12VideoProcessCommandList3_SetPrivateDataInterface(This,guid,pData) \
5940 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
5941
5942#define ID3D12VideoProcessCommandList3_SetName(This,Name) \
5943 ( (This)->lpVtbl -> SetName(This,Name) )
5944
5945
5946#define ID3D12VideoProcessCommandList3_GetDevice(This,riid,ppvDevice) \
5947 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
5948
5949
5950#define ID3D12VideoProcessCommandList3_GetType(This) \
5951 ( (This)->lpVtbl -> GetType(This) )
5952
5953
5954#define ID3D12VideoProcessCommandList3_Close(This) \
5955 ( (This)->lpVtbl -> Close(This) )
5956
5957#define ID3D12VideoProcessCommandList3_Reset(This,pAllocator) \
5958 ( (This)->lpVtbl -> Reset(This,pAllocator) )
5959
5960#define ID3D12VideoProcessCommandList3_ClearState(This) \
5961 ( (This)->lpVtbl -> ClearState(This) )
5962
5963#define ID3D12VideoProcessCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
5964 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
5965
5966#define ID3D12VideoProcessCommandList3_DiscardResource(This,pResource,pRegion) \
5967 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
5968
5969#define ID3D12VideoProcessCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
5970 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
5971
5972#define ID3D12VideoProcessCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
5973 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
5974
5975#define ID3D12VideoProcessCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
5976 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
5977
5978#define ID3D12VideoProcessCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
5979 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
5980
5981#define ID3D12VideoProcessCommandList3_SetMarker(This,Metadata,pData,Size) \
5982 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
5983
5984#define ID3D12VideoProcessCommandList3_BeginEvent(This,Metadata,pData,Size) \
5985 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
5986
5987#define ID3D12VideoProcessCommandList3_EndEvent(This) \
5988 ( (This)->lpVtbl -> EndEvent(This) )
5989
5990#define ID3D12VideoProcessCommandList3_ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5991 ( (This)->lpVtbl -> ProcessFrames(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5992
5993#define ID3D12VideoProcessCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
5994 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
5995
5996
5997#define ID3D12VideoProcessCommandList3_ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) \
5998 ( (This)->lpVtbl -> ProcessFrames1(This,pVideoProcessor,pOutputArguments,NumInputStreams,pInputArguments) )
5999
6000
6001#define ID3D12VideoProcessCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
6002 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6003
6004#define ID3D12VideoProcessCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6005 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6006
6007#define ID3D12VideoProcessCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6008 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6009
6010
6011#define ID3D12VideoProcessCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
6012 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
6013
6014#endif /* COBJMACROS */
6015
6016
6017#endif /* C style interface */
6018
6019
6020
6021
6022#endif /* __ID3D12VideoProcessCommandList3_INTERFACE_DEFINED__ */
6023
6024
6025#ifndef __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6026#define __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__
6027
6028/* interface ID3D12VideoEncodeCommandList1 */
6029/* [unique][local][object][uuid] */
6030
6031
6032EXTERN_C const IID IID_ID3D12VideoEncodeCommandList1;
6033
6034#if defined(__cplusplus) && !defined(CINTERFACE)
6035
6036 MIDL_INTERFACE("94971eca-2bdb-4769-88cf-3675ea757ebc")
6037 ID3D12VideoEncodeCommandList1 : public ID3D12VideoEncodeCommandList
6038 {
6039 public:
6040 virtual void STDMETHODCALLTYPE InitializeExtensionCommand(
6041 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6042 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6043 SIZE_T InitializationParametersSizeInBytes) = 0;
6044
6045 virtual void STDMETHODCALLTYPE ExecuteExtensionCommand(
6046 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6047 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6048 SIZE_T ExecutionParametersSizeInBytes) = 0;
6049
6050 };
6051
6052
6053#else /* C style interface */
6054
6055 typedef struct ID3D12VideoEncodeCommandList1Vtbl
6056 {
6057 BEGIN_INTERFACE
6058
6059 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
6060 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
6061 ID3D12VideoEncodeCommandList1 * This,
6062 REFIID riid,
6063 _COM_Outptr_ void **ppvObject);
6064
6065 DECLSPEC_XFGVIRT(IUnknown, AddRef)
6066 ULONG ( STDMETHODCALLTYPE *AddRef )(
6067 ID3D12VideoEncodeCommandList1 * This);
6068
6069 DECLSPEC_XFGVIRT(IUnknown, Release)
6070 ULONG ( STDMETHODCALLTYPE *Release )(
6071 ID3D12VideoEncodeCommandList1 * This);
6072
6073 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
6074 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
6075 ID3D12VideoEncodeCommandList1 * This,
6076 _In_ REFGUID guid,
6077 _Inout_ UINT *pDataSize,
6078 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
6079
6080 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
6081 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
6082 ID3D12VideoEncodeCommandList1 * This,
6083 _In_ REFGUID guid,
6084 _In_ UINT DataSize,
6085 _In_reads_bytes_opt_( DataSize ) const void *pData);
6086
6087 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
6088 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
6089 ID3D12VideoEncodeCommandList1 * This,
6090 _In_ REFGUID guid,
6091 _In_opt_ const IUnknown *pData);
6092
6093 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
6094 HRESULT ( STDMETHODCALLTYPE *SetName )(
6095 ID3D12VideoEncodeCommandList1 * This,
6096 _In_z_ LPCWSTR Name);
6097
6098 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
6099 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
6100 ID3D12VideoEncodeCommandList1 * This,
6101 REFIID riid,
6102 _COM_Outptr_opt_ void **ppvDevice);
6103
6104 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
6105 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
6106 ID3D12VideoEncodeCommandList1 * This);
6107
6108 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
6109 HRESULT ( STDMETHODCALLTYPE *Close )(
6110 ID3D12VideoEncodeCommandList1 * This);
6111
6112 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
6113 HRESULT ( STDMETHODCALLTYPE *Reset )(
6114 ID3D12VideoEncodeCommandList1 * This,
6115 _In_ ID3D12CommandAllocator *pAllocator);
6116
6117 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
6118 void ( STDMETHODCALLTYPE *ClearState )(
6119 ID3D12VideoEncodeCommandList1 * This);
6120
6121 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
6122 void ( STDMETHODCALLTYPE *ResourceBarrier )(
6123 ID3D12VideoEncodeCommandList1 * This,
6124 _In_ UINT NumBarriers,
6125 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
6126
6127 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
6128 void ( STDMETHODCALLTYPE *DiscardResource )(
6129 ID3D12VideoEncodeCommandList1 * This,
6130 _In_ ID3D12Resource *pResource,
6131 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
6132
6133 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
6134 void ( STDMETHODCALLTYPE *BeginQuery )(
6135 ID3D12VideoEncodeCommandList1 * This,
6136 _In_ ID3D12QueryHeap *pQueryHeap,
6137 _In_ D3D12_QUERY_TYPE Type,
6138 _In_ UINT Index);
6139
6140 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
6141 void ( STDMETHODCALLTYPE *EndQuery )(
6142 ID3D12VideoEncodeCommandList1 * This,
6143 _In_ ID3D12QueryHeap *pQueryHeap,
6144 _In_ D3D12_QUERY_TYPE Type,
6145 _In_ UINT Index);
6146
6147 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
6148 void ( STDMETHODCALLTYPE *ResolveQueryData )(
6149 ID3D12VideoEncodeCommandList1 * This,
6150 _In_ ID3D12QueryHeap *pQueryHeap,
6151 _In_ D3D12_QUERY_TYPE Type,
6152 _In_ UINT StartIndex,
6153 _In_ UINT NumQueries,
6154 _In_ ID3D12Resource *pDestinationBuffer,
6155 _In_ UINT64 AlignedDestinationBufferOffset);
6156
6157 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
6158 void ( STDMETHODCALLTYPE *SetPredication )(
6159 ID3D12VideoEncodeCommandList1 * This,
6160 _In_opt_ ID3D12Resource *pBuffer,
6161 _In_ UINT64 AlignedBufferOffset,
6162 _In_ D3D12_PREDICATION_OP Operation);
6163
6164 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
6165 void ( STDMETHODCALLTYPE *SetMarker )(
6166 ID3D12VideoEncodeCommandList1 * This,
6167 UINT Metadata,
6168 _In_reads_bytes_opt_(Size) const void *pData,
6169 UINT Size);
6170
6171 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
6172 void ( STDMETHODCALLTYPE *BeginEvent )(
6173 ID3D12VideoEncodeCommandList1 * This,
6174 UINT Metadata,
6175 _In_reads_bytes_opt_(Size) const void *pData,
6176 UINT Size);
6177
6178 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
6179 void ( STDMETHODCALLTYPE *EndEvent )(
6180 ID3D12VideoEncodeCommandList1 * This);
6181
6182 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
6183 void ( STDMETHODCALLTYPE *EstimateMotion )(
6184 ID3D12VideoEncodeCommandList1 * This,
6185 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
6186 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
6187 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
6188
6189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
6190 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
6191 ID3D12VideoEncodeCommandList1 * This,
6192 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
6193 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
6194
6195 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
6196 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
6197 ID3D12VideoEncodeCommandList1 * This,
6198 UINT Count,
6199 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
6200 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
6201
6202 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
6203 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
6204 ID3D12VideoEncodeCommandList1 * This,
6205 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
6206
6207 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
6208 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
6209 ID3D12VideoEncodeCommandList1 * This,
6210 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6211 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
6212 SIZE_T InitializationParametersSizeInBytes);
6213
6214 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
6215 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
6216 ID3D12VideoEncodeCommandList1 * This,
6217 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
6218 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
6219 SIZE_T ExecutionParametersSizeInBytes);
6220
6221 END_INTERFACE
6222 } ID3D12VideoEncodeCommandList1Vtbl;
6223
6224 interface ID3D12VideoEncodeCommandList1
6225 {
6226 CONST_VTBL struct ID3D12VideoEncodeCommandList1Vtbl *lpVtbl;
6227 };
6228
6229
6230
6231#ifdef COBJMACROS
6232
6233
6234#define ID3D12VideoEncodeCommandList1_QueryInterface(This,riid,ppvObject) \
6235 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
6236
6237#define ID3D12VideoEncodeCommandList1_AddRef(This) \
6238 ( (This)->lpVtbl -> AddRef(This) )
6239
6240#define ID3D12VideoEncodeCommandList1_Release(This) \
6241 ( (This)->lpVtbl -> Release(This) )
6242
6243
6244#define ID3D12VideoEncodeCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
6245 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
6246
6247#define ID3D12VideoEncodeCommandList1_SetPrivateData(This,guid,DataSize,pData) \
6248 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
6249
6250#define ID3D12VideoEncodeCommandList1_SetPrivateDataInterface(This,guid,pData) \
6251 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
6252
6253#define ID3D12VideoEncodeCommandList1_SetName(This,Name) \
6254 ( (This)->lpVtbl -> SetName(This,Name) )
6255
6256
6257#define ID3D12VideoEncodeCommandList1_GetDevice(This,riid,ppvDevice) \
6258 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
6259
6260
6261#define ID3D12VideoEncodeCommandList1_GetType(This) \
6262 ( (This)->lpVtbl -> GetType(This) )
6263
6264
6265#define ID3D12VideoEncodeCommandList1_Close(This) \
6266 ( (This)->lpVtbl -> Close(This) )
6267
6268#define ID3D12VideoEncodeCommandList1_Reset(This,pAllocator) \
6269 ( (This)->lpVtbl -> Reset(This,pAllocator) )
6270
6271#define ID3D12VideoEncodeCommandList1_ClearState(This) \
6272 ( (This)->lpVtbl -> ClearState(This) )
6273
6274#define ID3D12VideoEncodeCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
6275 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
6276
6277#define ID3D12VideoEncodeCommandList1_DiscardResource(This,pResource,pRegion) \
6278 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
6279
6280#define ID3D12VideoEncodeCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
6281 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
6282
6283#define ID3D12VideoEncodeCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
6284 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
6285
6286#define ID3D12VideoEncodeCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
6287 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
6288
6289#define ID3D12VideoEncodeCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
6290 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
6291
6292#define ID3D12VideoEncodeCommandList1_SetMarker(This,Metadata,pData,Size) \
6293 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
6294
6295#define ID3D12VideoEncodeCommandList1_BeginEvent(This,Metadata,pData,Size) \
6296 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
6297
6298#define ID3D12VideoEncodeCommandList1_EndEvent(This) \
6299 ( (This)->lpVtbl -> EndEvent(This) )
6300
6301#define ID3D12VideoEncodeCommandList1_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
6302 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
6303
6304#define ID3D12VideoEncodeCommandList1_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
6305 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
6306
6307#define ID3D12VideoEncodeCommandList1_WriteBufferImmediate(This,Count,pParams,pModes) \
6308 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
6309
6310#define ID3D12VideoEncodeCommandList1_SetProtectedResourceSession(This,pProtectedResourceSession) \
6311 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
6312
6313
6314#define ID3D12VideoEncodeCommandList1_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
6315 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
6316
6317#define ID3D12VideoEncodeCommandList1_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
6318 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
6319
6320#endif /* COBJMACROS */
6321
6322
6323#endif /* C style interface */
6324
6325
6326
6327
6328#endif /* __ID3D12VideoEncodeCommandList1_INTERFACE_DEFINED__ */
6329
6330
6331/* interface __MIDL_itf_d3d12video_0000_0022 */
6332/* [local] */
6333
6334DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);
6335DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
6336DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6337DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
6338DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
6339DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
6340DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6341DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
6342DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
6343DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
6344DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
6345DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
6346DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
6347DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
6348DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
6349DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
6350DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
6351DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
6352DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
6353DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
6354DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
6355DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
6356DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
6357DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
6358DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
6359DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
6360DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
6361DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
6362DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
6363DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
6364DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4);
6365DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
6366DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
6367DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
6368DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
6369DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
6370DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
6371typedef
6372enum D3D12_VIDEO_ENCODER_AV1_PROFILE
6373 {
6374 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
6375 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
6376 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2
6377 } D3D12_VIDEO_ENCODER_AV1_PROFILE;
6378
6379typedef
6380enum D3D12_VIDEO_ENCODER_AV1_LEVELS
6381 {
6382 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
6383 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
6384 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
6385 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
6386 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
6387 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
6388 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
6389 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
6390 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
6391 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
6392 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
6393 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
6394 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
6395 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
6396 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
6397 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
6398 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
6399 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
6400 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
6401 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
6402 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
6403 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
6404 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
6405 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23
6406 } D3D12_VIDEO_ENCODER_AV1_LEVELS;
6407
6408typedef
6409enum D3D12_VIDEO_ENCODER_AV1_TIER
6410 {
6411 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
6412 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1
6413 } D3D12_VIDEO_ENCODER_AV1_TIER;
6414
6415typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
6416 {
6417 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
6418 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
6419 } D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
6420
6421typedef
6422enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
6423 {
6424 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0,
6425 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
6426 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
6427 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
6428 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
6429 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
6430 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
6431 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
6432 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
6433 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
6434 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
6435 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
6436 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
6437 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
6438 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
6439 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
6440 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
6441 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
6442 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
6443 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
6444 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
6445 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
6446 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
6447 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
6448 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
6449 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
6450 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000
6451 } D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
6452
6453DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)
6454typedef
6455enum D3D12_VIDEO_ENCODER_AV1_TX_MODE
6456 {
6457 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
6458 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
6459 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2
6460 } D3D12_VIDEO_ENCODER_AV1_TX_MODE;
6461
6462typedef
6463enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS
6464 {
6465 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0,
6466 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 ) ,
6467 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST ) ,
6468 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = ( 1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT )
6469 } D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
6470
6471DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)
6472typedef
6473enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS
6474 {
6475 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
6476 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
6477 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
6478 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
6479 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4
6480 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
6481
6482typedef
6483enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS
6484 {
6485 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0,
6486 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP ) ,
6487 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH ) ,
6488 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP ) ,
6489 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR ) ,
6490 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = ( 1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE )
6491 } D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
6492
6493DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)
6494typedef
6495enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE
6496 {
6497 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
6498 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
6499 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
6500 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
6501 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4
6502 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
6503
6504typedef
6505enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE
6506 {
6507 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
6508 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
6509 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
6510 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
6511 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
6512 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
6513 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
6514 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
6515 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8
6516 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
6517
6518typedef
6519enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
6520 {
6521 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
6522 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED ) ,
6523 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q ) ,
6524 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V ) ,
6525 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H ) ,
6526 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U ) ,
6527 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V ) ,
6528 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME ) ,
6529 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP ) ,
6530 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = ( 1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV )
6531 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
6532
6533DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)
6534typedef
6535enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE
6536 {
6537 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
6538 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
6539 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
6540 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3
6541 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
6542
6543typedef
6544enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE
6545 {
6546 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
6547 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
6548 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
6549 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
6550 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4
6551 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
6552
6553typedef
6554enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS
6555 {
6556 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0,
6557 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
6558 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
6559 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
6560 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8
6561 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
6562
6563DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)
6564typedef
6565enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
6566 {
6567 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
6568 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
6569 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
6570 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3
6571 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
6572
6573typedef
6574enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS
6575 {
6576 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0,
6577 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY ) ,
6578 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION ) ,
6579 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM ) ,
6580 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = ( 1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE )
6581 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
6582
6583DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)
6584typedef
6585enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS
6586 {
6587 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
6588 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
6589 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
6590 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
6591 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
6592 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
6593 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
6594 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
6595 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
6596 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100
6597 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
6598
6599DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)
6600typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
6601 {
6602 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
6603 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
6604 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
6605 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[ 3 ][ 3 ];
6606 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
6607 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[ 4 ];
6608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
6609 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
6610 UINT MaxTemporalLayers;
6611 UINT MaxSpatialLayers;
6612 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
6613
6614typedef
6615enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
6616 {
6617 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
6618 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
6619 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
6620 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3
6621 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
6622
6623typedef
6624enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS
6625 {
6626 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0,
6627 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME ) ,
6628 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME ) ,
6629 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME ) ,
6630 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = ( 1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME )
6631 } D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
6632
6633DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)
6634typedef
6635enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
6636 {
6637 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
6638 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1
6639 } D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
6640
6641typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT
6642 {
6643 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
6644 UINT MaxUniqueReferencesPerFrame;
6645 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
6646 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
6647 } D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
6648
6649typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION
6650 {
6651 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
6652 UINT OrderHintBitsMinus1;
6653 } D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
6654
6655typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
6656 {
6657 UINT IntraDistance;
6658 UINT InterFramePeriod;
6659 } D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
6660
6661typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
6662 {
6663 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
6664 INT TransformationMatrix[ 8 ];
6665 BOOL InvalidAffineSet;
6666 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
6667
6668typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
6669 {
6670 UINT ReconstructedPictureResourceIndex;
6671 UINT TemporalLayerIndexPlus1;
6672 UINT SpatialLayerIndexPlus1;
6673 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
6675 UINT OrderHint;
6676 UINT PictureIndex;
6677 } D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
6678
6679typedef
6680enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
6681 {
6682 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0,
6683 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
6684 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
6685 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
6686 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
6687 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
6688 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
6689 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
6690 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
6691 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
6692 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
6693 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
6694 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
6695 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
6696 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
6697 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000
6698 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
6699
6700DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)
6701typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
6702 {
6703 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[ 3 ];
6704 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[ 3 ];
6705 } D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
6706
6707typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
6708 {
6709 UINT64 EnabledFeatures;
6710 INT64 FeatureValue[ 8 ];
6711 } D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
6712
6713typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
6714 {
6715 UINT64 UpdateMap;
6716 UINT64 TemporalUpdate;
6717 UINT64 UpdateData;
6718 UINT64 NumSegments;
6719 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[ 8 ];
6720 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
6721
6722typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
6723 {
6724 UINT SegmentsMapByteSize;
6725 UINT8 *pSegmentsMap;
6726 } D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
6727
6728typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
6729 {
6730 UINT64 LoopFilterLevel[ 2 ];
6731 UINT64 LoopFilterLevelU;
6732 UINT64 LoopFilterLevelV;
6733 UINT64 LoopFilterSharpnessLevel;
6734 UINT64 LoopFilterDeltaEnabled;
6735 UINT64 UpdateRefDelta;
6736 INT64 RefDeltas[ 8 ];
6737 UINT64 UpdateModeDelta;
6738 INT64 ModeDeltas[ 2 ];
6739 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
6740
6741typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
6742 {
6743 UINT64 DeltaLFPresent;
6744 UINT64 DeltaLFMulti;
6745 UINT64 DeltaLFRes;
6746 } D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
6747
6748typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
6749 {
6750 UINT64 BaseQIndex;
6751 INT64 YDCDeltaQ;
6752 INT64 UDCDeltaQ;
6753 INT64 UACDeltaQ;
6754 INT64 VDCDeltaQ;
6755 INT64 VACDeltaQ;
6756 UINT64 UsingQMatrix;
6757 UINT64 QMY;
6758 UINT64 QMU;
6759 UINT64 QMV;
6760 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
6761
6762typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
6763 {
6764 UINT64 DeltaQPresent;
6765 UINT64 DeltaQRes;
6766 } D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
6767
6768typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
6769 {
6770 UINT64 CdefBits;
6771 UINT64 CdefDampingMinus3;
6772 UINT64 CdefYPriStrength[ 8 ];
6773 UINT64 CdefUVPriStrength[ 8 ];
6774 UINT64 CdefYSecStrength[ 8 ];
6775 UINT64 CdefUVSecStrength[ 8 ];
6776 } D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
6777
6778typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
6779 {
6780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
6781 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
6782 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
6783 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
6784 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
6785 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
6786 UINT SuperResDenominator;
6787 UINT OrderHint;
6788 UINT PictureIndex;
6789 UINT TemporalLayerIndexPlus1;
6790 UINT SpatialLayerIndexPlus1;
6791 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[ 8 ];
6792 UINT ReferenceIndices[ 7 ];
6793 UINT PrimaryRefFrame;
6794 UINT RefreshFrameFlags;
6795 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6796 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6797 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6798 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6799 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6800 UINT QPMapValuesCount;
6801 _Field_size_full_(QPMapValuesCount) INT16 *pRateControlQPMap;
6802 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
6803 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
6804 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
6805
6806typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
6807 {
6808 UINT64 RowCount;
6809 UINT64 ColCount;
6810 UINT64 RowHeights[ 64 ];
6811 UINT64 ColWidths[ 64 ];
6812 UINT64 ContextUpdateTileId;
6813 } D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
6814
6815typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
6816 {
6817 UINT64 CompoundPredictionType;
6818 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
6819 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
6820 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
6821 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
6822 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
6823 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
6824 UINT64 PrimaryRefFrame;
6825 UINT64 ReferenceIndices[ 7 ];
6826 } D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
6827
6828typedef
6829enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
6830 {
6831 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
6832 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
6833 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
6834 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
6835 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4
6836 } D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
6837
6838typedef
6839enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
6840 {
6841 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0,
6842 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
6843 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
6844 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
6845 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
6846 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
6847 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
6848 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
6849 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
6850 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100
6851 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
6852
6853DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)
6854typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP
6855 {
6856 UINT ConstantQP_FullIntracodedFrame;
6857 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6858 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6859 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
6860
6861typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1
6862 {
6863 UINT ConstantQP_FullIntracodedFrame;
6864 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
6865 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
6866 UINT QualityVsSpeed;
6867 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
6868
6869typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR
6870 {
6871 UINT InitialQP;
6872 UINT MinQP;
6873 UINT MaxQP;
6874 UINT64 MaxFrameBitSize;
6875 UINT64 TargetBitRate;
6876 UINT64 VBVCapacity;
6877 UINT64 InitialVBVFullness;
6878 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
6879
6880typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1
6881 {
6882 UINT InitialQP;
6883 UINT MinQP;
6884 UINT MaxQP;
6885 UINT64 MaxFrameBitSize;
6886 UINT64 TargetBitRate;
6887 UINT64 VBVCapacity;
6888 UINT64 InitialVBVFullness;
6889 UINT QualityVsSpeed;
6890 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
6891
6892typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR
6893 {
6894 UINT InitialQP;
6895 UINT MinQP;
6896 UINT MaxQP;
6897 UINT64 MaxFrameBitSize;
6898 UINT64 TargetAvgBitRate;
6899 UINT64 PeakBitRate;
6900 UINT64 VBVCapacity;
6901 UINT64 InitialVBVFullness;
6902 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
6903
6904typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1
6905 {
6906 UINT InitialQP;
6907 UINT MinQP;
6908 UINT MaxQP;
6909 UINT64 MaxFrameBitSize;
6910 UINT64 TargetAvgBitRate;
6911 UINT64 PeakBitRate;
6912 UINT64 VBVCapacity;
6913 UINT64 InitialVBVFullness;
6914 UINT QualityVsSpeed;
6915 } D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
6916
6917typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR
6918 {
6919 UINT InitialQP;
6920 UINT MinQP;
6921 UINT MaxQP;
6922 UINT64 MaxFrameBitSize;
6923 UINT64 TargetAvgBitRate;
6924 UINT64 PeakBitRate;
6925 UINT ConstantQualityTarget;
6926 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
6927
6928typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
6929 {
6930 UINT InitialQP;
6931 UINT MinQP;
6932 UINT MaxQP;
6933 UINT64 MaxFrameBitSize;
6934 UINT64 TargetAvgBitRate;
6935 UINT64 PeakBitRate;
6936 UINT ConstantQualityTarget;
6937 UINT64 VBVCapacity;
6938 UINT64 InitialVBVFullness;
6939 UINT QualityVsSpeed;
6940 } D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
6941
6942typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP
6943 {
6944 UINT QualityVsSpeed;
6945 } D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
6946
6947typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
6948 {
6949 UINT DataSize;
6950 union
6951 {
6952 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP *pConfiguration_CQP;
6953 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR *pConfiguration_CBR;
6954 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR *pConfiguration_VBR;
6955 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR *pConfiguration_QVBR;
6956 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 *pConfiguration_CQP1;
6957 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 *pConfiguration_CBR1;
6958 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 *pConfiguration_VBR1;
6959 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1 *pConfiguration_QVBR1;
6960 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP *pConfiguration_AbsoluteQPMap;
6961 } ;
6962 } D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
6963
6964typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL
6965 {
6966 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
6967 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
6968 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
6969 DXGI_RATIONAL TargetFrameRate;
6970 } D3D12_VIDEO_ENCODER_RATE_CONTROL;
6971
6972typedef
6973enum D3D12_VIDEO_ENCODER_CODEC
6974 {
6975 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
6976 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
6977 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2
6978 } D3D12_VIDEO_ENCODER_CODEC;
6979
6980typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
6981 {
6982 UINT NodeIndex;
6983 D3D12_VIDEO_ENCODER_CODEC Codec;
6984 BOOL IsSupported;
6985 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
6986
6987typedef
6988enum D3D12_VIDEO_ENCODER_PROFILE_H264
6989 {
6990 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
6991 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
6992 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2
6993 } D3D12_VIDEO_ENCODER_PROFILE_H264;
6994
6995typedef
6996enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
6997 {
6998 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
6999 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
7000 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
7001 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
7002 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
7003 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
7004 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
7005 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
7006 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8
7007 } D3D12_VIDEO_ENCODER_PROFILE_HEVC;
7008
7009typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
7010 {
7011 UINT DataSize;
7012 union
7013 {
7014 D3D12_VIDEO_ENCODER_PROFILE_H264 *pH264Profile;
7015 D3D12_VIDEO_ENCODER_PROFILE_HEVC *pHEVCProfile;
7016 D3D12_VIDEO_ENCODER_AV1_PROFILE *pAV1Profile;
7017 } ;
7018 } D3D12_VIDEO_ENCODER_PROFILE_DESC;
7019
7020typedef
7021enum D3D12_VIDEO_ENCODER_LEVELS_H264
7022 {
7023 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
7024 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
7025 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
7026 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
7027 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
7028 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
7029 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
7030 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
7031 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
7032 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
7033 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
7034 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
7035 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
7036 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
7037 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
7038 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
7039 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
7040 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
7041 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
7042 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19
7043 } D3D12_VIDEO_ENCODER_LEVELS_H264;
7044
7045typedef
7046enum D3D12_VIDEO_ENCODER_TIER_HEVC
7047 {
7048 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
7049 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1
7050 } D3D12_VIDEO_ENCODER_TIER_HEVC;
7051
7052typedef
7053enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
7054 {
7055 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
7056 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
7057 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
7058 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
7059 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
7060 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
7061 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
7062 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
7063 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
7064 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
7065 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
7066 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
7067 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12
7068 } D3D12_VIDEO_ENCODER_LEVELS_HEVC;
7069
7070typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
7071 {
7072 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
7073 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
7074 } D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
7075
7076typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
7077 {
7078 UINT DataSize;
7079 union
7080 {
7081 D3D12_VIDEO_ENCODER_LEVELS_H264 *pH264LevelSetting;
7082 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC *pHEVCLevelSetting;
7083 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS *pAV1LevelSetting;
7084 } ;
7085 } D3D12_VIDEO_ENCODER_LEVEL_SETTING;
7086
7087typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
7088 {
7089 UINT NodeIndex;
7090 D3D12_VIDEO_ENCODER_CODEC Codec;
7091 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7092 BOOL IsSupported;
7093 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel;
7094 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel;
7095 } D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
7096
7097typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
7098 {
7099 UINT Width;
7100 UINT Height;
7101 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
7102
7103typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
7104 {
7105 UINT WidthRatio;
7106 UINT HeightRatio;
7107 } D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
7108
7109typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
7110 {
7111 UINT NodeIndex;
7112 D3D12_VIDEO_ENCODER_CODEC Codec;
7113 UINT ResolutionRatiosCount;
7114 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
7115
7116typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
7117 {
7118 UINT NodeIndex;
7119 D3D12_VIDEO_ENCODER_CODEC Codec;
7120 UINT ResolutionRatiosCount;
7121 BOOL IsSupported;
7122 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported;
7123 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported;
7124 UINT ResolutionWidthMultipleRequirement;
7125 UINT ResolutionHeightMultipleRequirement;
7126 _Field_size_full_(ResolutionRatiosCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC *pResolutionRatios;
7127 } D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
7128
7129typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
7130 {
7131 UINT NodeIndex;
7132 D3D12_VIDEO_ENCODER_CODEC Codec;
7133 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7134 DXGI_FORMAT Format;
7135 BOOL IsSupported;
7136 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
7137
7138typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
7139 {
7140 UINT NodeIndex;
7141 D3D12_VIDEO_ENCODER_CODEC Codec;
7142 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;
7143 BOOL IsSupported;
7144 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
7145
7146typedef
7147enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
7148 {
7149 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
7150 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1
7151 } D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7152
7153typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE
7154 {
7155 UINT NodeIndex;
7156 D3D12_VIDEO_ENCODER_CODEC Codec;
7157 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7158 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7159 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;
7160 BOOL IsSupported;
7161 } D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
7162
7163typedef
7164enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7165 {
7166 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
7167 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
7168 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
7169 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
7170 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
7171 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
7172 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
7173 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7
7174 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7175
7176typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
7177 {
7178 UINT NodeIndex;
7179 D3D12_VIDEO_ENCODER_CODEC Codec;
7180 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7181 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7182 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7183 BOOL IsSupported;
7184 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
7185
7186typedef
7187enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
7188 {
7189 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0,
7190 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
7191 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
7192 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
7193 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
7194 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
7195 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
7196 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
7197 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80
7198 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
7199
7200DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)
7201typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7202 {
7203 BOOL Use128SuperBlocks;
7204 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
7205 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
7206 UINT MinTileRows;
7207 UINT MaxTileRows;
7208 UINT MinTileCols;
7209 UINT MaxTileCols;
7210 UINT MinTileWidth;
7211 UINT MaxTileWidth;
7212 UINT MinTileArea;
7213 UINT MaxTileArea;
7214 UINT TileSizeBytesMinus1;
7215 } D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7216
7217typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
7218 {
7219 UINT DataSize;
7220 union
7221 {
7222 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT *pAV1Support;
7223 } ;
7224 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
7225
7226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
7227 {
7228 UINT NodeIndex;
7229 D3D12_VIDEO_ENCODER_CODEC Codec;
7230 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7231 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
7232 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;
7233 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution;
7234 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport;
7235 BOOL IsSupported;
7236 } D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
7237
7238typedef
7239enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
7240 {
7241 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0,
7242 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
7243 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
7244 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
7245 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8
7246 } D3D12_VIDEO_ENCODER_HEAP_FLAGS;
7247
7248DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)
7249typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
7250 {
7251 UINT NodeMask;
7252 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
7253 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7254 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7255 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
7256 UINT ResolutionsListCount;
7257 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7258 } D3D12_VIDEO_ENCODER_HEAP_DESC;
7259
7260typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE
7261 {
7262 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;
7263 BOOL IsSupported;
7264 UINT64 MemoryPoolL0Size;
7265 UINT64 MemoryPoolL1Size;
7266 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
7267
7268typedef
7269enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
7270 {
7271 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0,
7272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
7273 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7274 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
7275 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
7276 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
7277 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
7278 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
7279 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80
7280 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
7281
7282DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)
7283typedef
7284enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES
7285 {
7286 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
7287 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
7288 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
7289 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
7290 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
7291 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
7292 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6
7293 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
7294
7295typedef
7296enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS
7297 {
7298 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0,
7299 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED ) ,
7300 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES ) ,
7301 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS ) ,
7302 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING ) ,
7303 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES ) ,
7304 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES ) ,
7305 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = ( 1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING )
7306 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
7307
7308DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)
7309typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264
7310 {
7311 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
7312 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
7313 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
7314
7315typedef
7316enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
7317 {
7318 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0,
7319 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
7320 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
7321 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
7322 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
7323 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
7324 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
7325 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
7326 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
7327 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
7328 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
7329 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
7330 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
7331 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
7332 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
7333 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
7334 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
7335 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
7336 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
7337 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
7338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
7339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
7340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
7341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
7342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
7343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
7344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
7345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
7346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
7347 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
7348 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
7349 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
7350 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000
7351 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
7352
7353DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)
7354typedef
7355enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE
7356 {
7357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
7358 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
7359 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
7360 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3
7361 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
7362
7363typedef
7364enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE
7365 {
7366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
7367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
7368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
7369 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3
7370 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
7371
7372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC
7373 {
7374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7375 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7376 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7377 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7378 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7379 UCHAR max_transform_hierarchy_depth_inter;
7380 UCHAR max_transform_hierarchy_depth_intra;
7381 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
7382
7383typedef
7384enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
7385 {
7386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0,
7387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
7388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2
7389 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
7390
7391DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)
7392typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
7393 {
7394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
7395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7399 UCHAR max_transform_hierarchy_depth_inter;
7400 UCHAR max_transform_hierarchy_depth_intra;
7401 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
7402 UINT allowed_log2_sao_offset_scale_luma_values;
7403 UINT allowed_log2_sao_offset_scale_chroma_values;
7404 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
7405 UINT allowed_chroma_qp_offset_list_len_minus1_values;
7406 UINT allowed_cb_qp_offset_list_values[ 6 ];
7407 UINT allowed_cr_qp_offset_list_values[ 6 ];
7408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
7409 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
7410
7411typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7412 {
7413 UINT DataSize;
7414 union
7415 {
7416 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 *pH264Support;
7417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC *pHEVCSupport;
7418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 *pHEVCSupport1;
7419 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT *pAV1Support;
7420 } ;
7421 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7422
7423typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT
7424 {
7425 UINT NodeIndex;
7426 D3D12_VIDEO_ENCODER_CODEC Codec;
7427 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7428 BOOL IsSupported;
7429 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;
7430 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
7431
7432typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264
7433 {
7434 UINT MaxL0ReferencesForP;
7435 UINT MaxL0ReferencesForB;
7436 UINT MaxL1ReferencesForB;
7437 UINT MaxLongTermReferences;
7438 UINT MaxDPBCapacity;
7439 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
7440
7441typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC
7442 {
7443 UINT MaxL0ReferencesForP;
7444 UINT MaxL0ReferencesForB;
7445 UINT MaxL1ReferencesForB;
7446 UINT MaxLongTermReferences;
7447 UINT MaxDPBCapacity;
7448 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
7449
7450typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7451 {
7452 UINT DataSize;
7453 union
7454 {
7455 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 *pH264Support;
7456 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC *pHEVCSupport;
7457 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT *pAV1Support;
7458 } ;
7459 } D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7460
7461typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT
7462 {
7463 UINT NodeIndex;
7464 D3D12_VIDEO_ENCODER_CODEC Codec;
7465 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7466 BOOL IsSupported;
7467 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;
7468 } D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
7469
7470typedef
7471enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
7472 {
7473 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0,
7474 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
7475 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
7476 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
7477 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
7478 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
7479 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
7480 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
7481 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
7482 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
7483 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
7484 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
7485 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
7486 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
7487 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
7488 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
7489 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
7490 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
7491 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
7492 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
7493 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
7494 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
7495 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
7496 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
7497 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000
7498 } D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
7499
7500DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)
7501typedef
7502enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
7503 {
7504 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0,
7505 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
7506 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
7507 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
7508 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8
7509 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
7510
7511DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)
7512typedef
7513enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES
7514 {
7515 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
7516 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
7517 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2
7518 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
7519
7520typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
7521 {
7522 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
7523 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
7524 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
7525 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
7526
7527typedef
7528enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
7529 {
7530 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0,
7531 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
7532 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
7533 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
7534 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
7535 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
7536 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
7537 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
7538 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
7539 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
7540 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
7541 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
7542 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
7543 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
7544 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
7545 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
7546 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
7547 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000
7548 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
7549
7550DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)
7551typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
7552 {
7553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
7554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
7555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
7556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
7557 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
7558 UCHAR max_transform_hierarchy_depth_inter;
7559 UCHAR max_transform_hierarchy_depth_intra;
7560 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
7561
7562typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
7563 {
7564 UINT DataSize;
7565 union
7566 {
7567 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 *pH264Config;
7568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC *pHEVCConfig;
7569 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION *pAV1Config;
7570 } ;
7571 } D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
7572
7573typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
7574 {
7575 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
7576 UINT IntraRefreshDuration;
7577 } D3D12_VIDEO_ENCODER_INTRA_REFRESH;
7578
7579typedef
7580enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
7581 {
7582 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
7583 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
7584 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
7585 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
7586 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4
7587 } D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
7588
7589typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
7590 {
7591 UINT MaxSubregionsNumber;
7592 UINT MaxIntraRefreshFrameDuration;
7593 UINT SubregionBlockPixelsSize;
7594 UINT QPMapRegionPixelsSize;
7595 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
7596
7597typedef
7598enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
7599 {
7600 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0,
7601 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
7602 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
7603 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
7604 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
7605 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
7606 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
7607 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
7608 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
7609 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
7610 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
7611 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
7612 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
7613 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
7614 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000
7615 } D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
7616
7617DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)
7618typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
7619 {
7620 UINT GOPLength;
7621 UINT PPicturePeriod;
7622 UCHAR pic_order_cnt_type;
7623 UCHAR log2_max_frame_num_minus4;
7624 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7625 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
7626
7627typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
7628 {
7629 UINT GOPLength;
7630 UINT PPicturePeriod;
7631 UCHAR log2_max_pic_order_cnt_lsb_minus4;
7632 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
7633
7634typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
7635 {
7636 UINT DataSize;
7637 union
7638 {
7639 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 *pH264GroupOfPictures;
7640 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC *pHEVCGroupOfPictures;
7641 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE *pAV1SequenceStructure;
7642 } ;
7643 } D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
7644
7645typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
7646 {
7647 UINT NodeIndex;
7648 D3D12_VIDEO_ENCODER_CODEC Codec;
7649 DXGI_FORMAT InputFormat;
7650 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7651 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7652 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7653 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7654 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7655 UINT ResolutionsListCount;
7656 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7657 UINT MaxReferenceFramesInDPB;
7658 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7659 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7660 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7661 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7662 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7663 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
7664
7665typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
7666 {
7667 union
7668 {
7669 UINT MaxBytesPerSlice;
7670 UINT NumberOfCodingUnitsPerSlice;
7671 UINT NumberOfRowsPerSlice;
7672 UINT NumberOfSlicesPerFrame;
7673 } ;
7674 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
7675
7676typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
7677 {
7678 UINT DataSize;
7679 union
7680 {
7681 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_H264;
7682 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES *pSlicesPartition_HEVC;
7683 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES *pTilesPartition_AV1;
7684 } ;
7685 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
7686
7687typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
7688 {
7689 UINT NodeIndex;
7690 D3D12_VIDEO_ENCODER_CODEC Codec;
7691 DXGI_FORMAT InputFormat;
7692 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7693 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
7694 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
7695 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
7696 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
7697 UINT ResolutionsListCount;
7698 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
7699 UINT MaxReferenceFramesInDPB;
7700 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
7701 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
7702 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
7703 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
7704 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS *pResolutionDependentSupport;
7705 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
7706 UINT MaxQualityVsSpeed;
7707 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
7708
7709typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
7710 {
7711 UINT NodeIndex;
7712 D3D12_VIDEO_ENCODER_CODEC Codec;
7713 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
7714 DXGI_FORMAT InputFormat;
7715 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
7716 BOOL IsSupported;
7717 UINT CompressedBitstreamBufferAccessAlignment;
7718 UINT EncoderMetadataBufferAccessAlignment;
7719 UINT MaxEncoderOutputMetadataBufferSize;
7720 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
7721
7722typedef
7723enum D3D12_VIDEO_ENCODER_FLAGS
7724 {
7725 D3D12_VIDEO_ENCODER_FLAG_NONE = 0
7726 } D3D12_VIDEO_ENCODER_FLAGS;
7727
7728DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)
7729typedef struct D3D12_VIDEO_ENCODER_DESC
7730 {
7731 UINT NodeMask;
7732 D3D12_VIDEO_ENCODER_FLAGS Flags;
7733 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
7734 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
7735 DXGI_FORMAT InputFormat;
7736 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
7737 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
7738 } D3D12_VIDEO_ENCODER_DESC;
7739
7740
7741
7742extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_c_ifspec;
7743extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0022_v0_0_s_ifspec;
7744
7745#ifndef __ID3D12VideoEncoder_INTERFACE_DEFINED__
7746#define __ID3D12VideoEncoder_INTERFACE_DEFINED__
7747
7748/* interface ID3D12VideoEncoder */
7749/* [unique][local][object][uuid] */
7750
7751
7752EXTERN_C const IID IID_ID3D12VideoEncoder;
7753
7754#if defined(__cplusplus) && !defined(CINTERFACE)
7755
7756 MIDL_INTERFACE("2E0D212D-8DF9-44A6-A770-BB289B182737")
7757 ID3D12VideoEncoder : public ID3D12Pageable
7758 {
7759 public:
7760 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7761
7762 virtual D3D12_VIDEO_ENCODER_FLAGS STDMETHODCALLTYPE GetEncoderFlags( void) = 0;
7763
7764 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7765
7766 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7767 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7768
7769 virtual HRESULT STDMETHODCALLTYPE GetCodecConfiguration(
7770 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig) = 0;
7771
7772 virtual DXGI_FORMAT STDMETHODCALLTYPE GetInputFormat( void) = 0;
7773
7774 virtual D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE STDMETHODCALLTYPE GetMaxMotionEstimationPrecision( void) = 0;
7775
7776 };
7777
7778
7779#else /* C style interface */
7780
7781 typedef struct ID3D12VideoEncoderVtbl
7782 {
7783 BEGIN_INTERFACE
7784
7785 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7786 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7787 ID3D12VideoEncoder * This,
7788 REFIID riid,
7789 _COM_Outptr_ void **ppvObject);
7790
7791 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7792 ULONG ( STDMETHODCALLTYPE *AddRef )(
7793 ID3D12VideoEncoder * This);
7794
7795 DECLSPEC_XFGVIRT(IUnknown, Release)
7796 ULONG ( STDMETHODCALLTYPE *Release )(
7797 ID3D12VideoEncoder * This);
7798
7799 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7800 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7801 ID3D12VideoEncoder * This,
7802 _In_ REFGUID guid,
7803 _Inout_ UINT *pDataSize,
7804 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7805
7806 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7807 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7808 ID3D12VideoEncoder * This,
7809 _In_ REFGUID guid,
7810 _In_ UINT DataSize,
7811 _In_reads_bytes_opt_( DataSize ) const void *pData);
7812
7813 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
7814 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
7815 ID3D12VideoEncoder * This,
7816 _In_ REFGUID guid,
7817 _In_opt_ const IUnknown *pData);
7818
7819 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
7820 HRESULT ( STDMETHODCALLTYPE *SetName )(
7821 ID3D12VideoEncoder * This,
7822 _In_z_ LPCWSTR Name);
7823
7824 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
7825 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
7826 ID3D12VideoEncoder * This,
7827 REFIID riid,
7828 _COM_Outptr_opt_ void **ppvDevice);
7829
7830 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetNodeMask)
7831 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
7832 ID3D12VideoEncoder * This);
7833
7834 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetEncoderFlags)
7835 D3D12_VIDEO_ENCODER_FLAGS ( STDMETHODCALLTYPE *GetEncoderFlags )(
7836 ID3D12VideoEncoder * This);
7837
7838 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodec)
7839 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
7840 ID3D12VideoEncoder * This);
7841
7842 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecProfile)
7843 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
7844 ID3D12VideoEncoder * This,
7845 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
7846
7847 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetCodecConfiguration)
7848 HRESULT ( STDMETHODCALLTYPE *GetCodecConfiguration )(
7849 ID3D12VideoEncoder * This,
7850 _Inout_ D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
7851
7852 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetInputFormat)
7853 DXGI_FORMAT ( STDMETHODCALLTYPE *GetInputFormat )(
7854 ID3D12VideoEncoder * This);
7855
7856 DECLSPEC_XFGVIRT(ID3D12VideoEncoder, GetMaxMotionEstimationPrecision)
7857 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE ( STDMETHODCALLTYPE *GetMaxMotionEstimationPrecision )(
7858 ID3D12VideoEncoder * This);
7859
7860 END_INTERFACE
7861 } ID3D12VideoEncoderVtbl;
7862
7863 interface ID3D12VideoEncoder
7864 {
7865 CONST_VTBL struct ID3D12VideoEncoderVtbl *lpVtbl;
7866 };
7867
7868
7869
7870#ifdef COBJMACROS
7871
7872
7873#define ID3D12VideoEncoder_QueryInterface(This,riid,ppvObject) \
7874 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
7875
7876#define ID3D12VideoEncoder_AddRef(This) \
7877 ( (This)->lpVtbl -> AddRef(This) )
7878
7879#define ID3D12VideoEncoder_Release(This) \
7880 ( (This)->lpVtbl -> Release(This) )
7881
7882
7883#define ID3D12VideoEncoder_GetPrivateData(This,guid,pDataSize,pData) \
7884 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
7885
7886#define ID3D12VideoEncoder_SetPrivateData(This,guid,DataSize,pData) \
7887 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
7888
7889#define ID3D12VideoEncoder_SetPrivateDataInterface(This,guid,pData) \
7890 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
7891
7892#define ID3D12VideoEncoder_SetName(This,Name) \
7893 ( (This)->lpVtbl -> SetName(This,Name) )
7894
7895
7896#define ID3D12VideoEncoder_GetDevice(This,riid,ppvDevice) \
7897 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
7898
7899
7900
7901#define ID3D12VideoEncoder_GetNodeMask(This) \
7902 ( (This)->lpVtbl -> GetNodeMask(This) )
7903
7904#define ID3D12VideoEncoder_GetEncoderFlags(This) \
7905 ( (This)->lpVtbl -> GetEncoderFlags(This) )
7906
7907#define ID3D12VideoEncoder_GetCodec(This) \
7908 ( (This)->lpVtbl -> GetCodec(This) )
7909
7910#define ID3D12VideoEncoder_GetCodecProfile(This,dstProfile) \
7911 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
7912
7913#define ID3D12VideoEncoder_GetCodecConfiguration(This,dstCodecConfig) \
7914 ( (This)->lpVtbl -> GetCodecConfiguration(This,dstCodecConfig) )
7915
7916#define ID3D12VideoEncoder_GetInputFormat(This) \
7917 ( (This)->lpVtbl -> GetInputFormat(This) )
7918
7919#define ID3D12VideoEncoder_GetMaxMotionEstimationPrecision(This) \
7920 ( (This)->lpVtbl -> GetMaxMotionEstimationPrecision(This) )
7921
7922#endif /* COBJMACROS */
7923
7924
7925#endif /* C style interface */
7926
7927
7928
7929
7930#endif /* __ID3D12VideoEncoder_INTERFACE_DEFINED__ */
7931
7932
7933#ifndef __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7934#define __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__
7935
7936/* interface ID3D12VideoEncoderHeap */
7937/* [unique][local][object][uuid] */
7938
7939
7940EXTERN_C const IID IID_ID3D12VideoEncoderHeap;
7941
7942#if defined(__cplusplus) && !defined(CINTERFACE)
7943
7944 MIDL_INTERFACE("22B35D96-876A-44C0-B25E-FB8C9C7F1C4A")
7945 ID3D12VideoEncoderHeap : public ID3D12Pageable
7946 {
7947 public:
7948 virtual UINT STDMETHODCALLTYPE GetNodeMask( void) = 0;
7949
7950 virtual D3D12_VIDEO_ENCODER_HEAP_FLAGS STDMETHODCALLTYPE GetEncoderHeapFlags( void) = 0;
7951
7952 virtual D3D12_VIDEO_ENCODER_CODEC STDMETHODCALLTYPE GetCodec( void) = 0;
7953
7954 virtual HRESULT STDMETHODCALLTYPE GetCodecProfile(
7955 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile) = 0;
7956
7957 virtual HRESULT STDMETHODCALLTYPE GetCodecLevel(
7958 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel) = 0;
7959
7960 virtual UINT STDMETHODCALLTYPE GetResolutionListCount( void) = 0;
7961
7962 virtual HRESULT STDMETHODCALLTYPE GetResolutionList(
7963 const UINT ResolutionsListCount,
7964 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList) = 0;
7965
7966 };
7967
7968
7969#else /* C style interface */
7970
7971 typedef struct ID3D12VideoEncoderHeapVtbl
7972 {
7973 BEGIN_INTERFACE
7974
7975 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
7976 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
7977 ID3D12VideoEncoderHeap * This,
7978 REFIID riid,
7979 _COM_Outptr_ void **ppvObject);
7980
7981 DECLSPEC_XFGVIRT(IUnknown, AddRef)
7982 ULONG ( STDMETHODCALLTYPE *AddRef )(
7983 ID3D12VideoEncoderHeap * This);
7984
7985 DECLSPEC_XFGVIRT(IUnknown, Release)
7986 ULONG ( STDMETHODCALLTYPE *Release )(
7987 ID3D12VideoEncoderHeap * This);
7988
7989 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
7990 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
7991 ID3D12VideoEncoderHeap * This,
7992 _In_ REFGUID guid,
7993 _Inout_ UINT *pDataSize,
7994 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
7995
7996 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
7997 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
7998 ID3D12VideoEncoderHeap * This,
7999 _In_ REFGUID guid,
8000 _In_ UINT DataSize,
8001 _In_reads_bytes_opt_( DataSize ) const void *pData);
8002
8003 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8004 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8005 ID3D12VideoEncoderHeap * This,
8006 _In_ REFGUID guid,
8007 _In_opt_ const IUnknown *pData);
8008
8009 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8010 HRESULT ( STDMETHODCALLTYPE *SetName )(
8011 ID3D12VideoEncoderHeap * This,
8012 _In_z_ LPCWSTR Name);
8013
8014 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8015 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8016 ID3D12VideoEncoderHeap * This,
8017 REFIID riid,
8018 _COM_Outptr_opt_ void **ppvDevice);
8019
8020 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
8021 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
8022 ID3D12VideoEncoderHeap * This);
8023
8024 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
8025 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
8026 ID3D12VideoEncoderHeap * This);
8027
8028 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
8029 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
8030 ID3D12VideoEncoderHeap * This);
8031
8032 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
8033 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
8034 ID3D12VideoEncoderHeap * This,
8035 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
8036
8037 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
8038 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
8039 ID3D12VideoEncoderHeap * This,
8040 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
8041
8042 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
8043 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
8044 ID3D12VideoEncoderHeap * This);
8045
8046 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
8047 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
8048 ID3D12VideoEncoderHeap * This,
8049 const UINT ResolutionsListCount,
8050 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
8051
8052 END_INTERFACE
8053 } ID3D12VideoEncoderHeapVtbl;
8054
8055 interface ID3D12VideoEncoderHeap
8056 {
8057 CONST_VTBL struct ID3D12VideoEncoderHeapVtbl *lpVtbl;
8058 };
8059
8060
8061
8062#ifdef COBJMACROS
8063
8064
8065#define ID3D12VideoEncoderHeap_QueryInterface(This,riid,ppvObject) \
8066 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8067
8068#define ID3D12VideoEncoderHeap_AddRef(This) \
8069 ( (This)->lpVtbl -> AddRef(This) )
8070
8071#define ID3D12VideoEncoderHeap_Release(This) \
8072 ( (This)->lpVtbl -> Release(This) )
8073
8074
8075#define ID3D12VideoEncoderHeap_GetPrivateData(This,guid,pDataSize,pData) \
8076 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8077
8078#define ID3D12VideoEncoderHeap_SetPrivateData(This,guid,DataSize,pData) \
8079 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8080
8081#define ID3D12VideoEncoderHeap_SetPrivateDataInterface(This,guid,pData) \
8082 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8083
8084#define ID3D12VideoEncoderHeap_SetName(This,Name) \
8085 ( (This)->lpVtbl -> SetName(This,Name) )
8086
8087
8088#define ID3D12VideoEncoderHeap_GetDevice(This,riid,ppvDevice) \
8089 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8090
8091
8092
8093#define ID3D12VideoEncoderHeap_GetNodeMask(This) \
8094 ( (This)->lpVtbl -> GetNodeMask(This) )
8095
8096#define ID3D12VideoEncoderHeap_GetEncoderHeapFlags(This) \
8097 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
8098
8099#define ID3D12VideoEncoderHeap_GetCodec(This) \
8100 ( (This)->lpVtbl -> GetCodec(This) )
8101
8102#define ID3D12VideoEncoderHeap_GetCodecProfile(This,dstProfile) \
8103 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
8104
8105#define ID3D12VideoEncoderHeap_GetCodecLevel(This,dstLevel) \
8106 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
8107
8108#define ID3D12VideoEncoderHeap_GetResolutionListCount(This) \
8109 ( (This)->lpVtbl -> GetResolutionListCount(This) )
8110
8111#define ID3D12VideoEncoderHeap_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
8112 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
8113
8114#endif /* COBJMACROS */
8115
8116
8117#endif /* C style interface */
8118
8119
8120
8121
8122#endif /* __ID3D12VideoEncoderHeap_INTERFACE_DEFINED__ */
8123
8124
8125#ifndef __ID3D12VideoDevice3_INTERFACE_DEFINED__
8126#define __ID3D12VideoDevice3_INTERFACE_DEFINED__
8127
8128/* interface ID3D12VideoDevice3 */
8129/* [unique][local][object][uuid] */
8130
8131
8132EXTERN_C const IID IID_ID3D12VideoDevice3;
8133
8134#if defined(__cplusplus) && !defined(CINTERFACE)
8135
8136 MIDL_INTERFACE("4243ADB4-3A32-4666-973C-0CCC5625DC44")
8137 ID3D12VideoDevice3 : public ID3D12VideoDevice2
8138 {
8139 public:
8140 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoder(
8141 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8142 _In_ REFIID riid,
8143 _COM_Outptr_ void **ppVideoEncoder) = 0;
8144
8145 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap(
8146 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8147 _In_ REFIID riid,
8148 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
8149
8150 };
8151
8152
8153#else /* C style interface */
8154
8155 typedef struct ID3D12VideoDevice3Vtbl
8156 {
8157 BEGIN_INTERFACE
8158
8159 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8160 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8161 ID3D12VideoDevice3 * This,
8162 REFIID riid,
8163 _COM_Outptr_ void **ppvObject);
8164
8165 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8166 ULONG ( STDMETHODCALLTYPE *AddRef )(
8167 ID3D12VideoDevice3 * This);
8168
8169 DECLSPEC_XFGVIRT(IUnknown, Release)
8170 ULONG ( STDMETHODCALLTYPE *Release )(
8171 ID3D12VideoDevice3 * This);
8172
8173 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
8174 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
8175 ID3D12VideoDevice3 * This,
8176 D3D12_FEATURE_VIDEO FeatureVideo,
8177 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
8178 UINT FeatureSupportDataSize);
8179
8180 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
8181 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
8182 ID3D12VideoDevice3 * This,
8183 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8184 _In_ REFIID riid,
8185 _COM_Outptr_ void **ppVideoDecoder);
8186
8187 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
8188 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
8189 ID3D12VideoDevice3 * This,
8190 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8191 _In_ REFIID riid,
8192 _COM_Outptr_ void **ppVideoDecoderHeap);
8193
8194 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
8195 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
8196 ID3D12VideoDevice3 * This,
8197 UINT NodeMask,
8198 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8199 UINT NumInputStreamDescs,
8200 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8201 _In_ REFIID riid,
8202 _COM_Outptr_ void **ppVideoProcessor);
8203
8204 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
8205 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
8206 ID3D12VideoDevice3 * This,
8207 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
8208 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8209 _In_ REFIID riid,
8210 _COM_Outptr_ void **ppVideoMotionEstimator);
8211
8212 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
8213 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
8214 ID3D12VideoDevice3 * This,
8215 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
8216 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8217 _In_ REFIID riid,
8218 _COM_Outptr_ void **ppVideoMotionVectorHeap);
8219
8220 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
8221 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
8222 ID3D12VideoDevice3 * This,
8223 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
8224 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8225 _In_ REFIID riid,
8226 _COM_Outptr_ void **ppVideoDecoder);
8227
8228 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
8229 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
8230 ID3D12VideoDevice3 * This,
8231 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
8232 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8233 _In_ REFIID riid,
8234 _COM_Outptr_ void **ppVideoDecoderHeap);
8235
8236 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
8237 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
8238 ID3D12VideoDevice3 * This,
8239 UINT NodeMask,
8240 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
8241 UINT NumInputStreamDescs,
8242 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
8243 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8244 _In_ REFIID riid,
8245 _COM_Outptr_ void **ppVideoProcessor);
8246
8247 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
8248 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
8249 ID3D12VideoDevice3 * This,
8250 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
8251 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
8252 SIZE_T CreationParametersDataSizeInBytes,
8253 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
8254 _In_ REFIID riid,
8255 _COM_Outptr_ void **ppVideoExtensionCommand);
8256
8257 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
8258 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8259 ID3D12VideoDevice3 * This,
8260 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8261 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8262 SIZE_T ExecutionParametersSizeInBytes,
8263 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
8264 SIZE_T OutputDataSizeInBytes);
8265
8266 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
8267 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
8268 ID3D12VideoDevice3 * This,
8269 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
8270 _In_ REFIID riid,
8271 _COM_Outptr_ void **ppVideoEncoder);
8272
8273 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
8274 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
8275 ID3D12VideoDevice3 * This,
8276 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
8277 _In_ REFIID riid,
8278 _COM_Outptr_ void **ppVideoEncoderHeap);
8279
8280 END_INTERFACE
8281 } ID3D12VideoDevice3Vtbl;
8282
8283 interface ID3D12VideoDevice3
8284 {
8285 CONST_VTBL struct ID3D12VideoDevice3Vtbl *lpVtbl;
8286 };
8287
8288
8289
8290#ifdef COBJMACROS
8291
8292
8293#define ID3D12VideoDevice3_QueryInterface(This,riid,ppvObject) \
8294 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8295
8296#define ID3D12VideoDevice3_AddRef(This) \
8297 ( (This)->lpVtbl -> AddRef(This) )
8298
8299#define ID3D12VideoDevice3_Release(This) \
8300 ( (This)->lpVtbl -> Release(This) )
8301
8302
8303#define ID3D12VideoDevice3_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
8304 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
8305
8306#define ID3D12VideoDevice3_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
8307 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
8308
8309#define ID3D12VideoDevice3_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
8310 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
8311
8312#define ID3D12VideoDevice3_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
8313 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
8314
8315
8316#define ID3D12VideoDevice3_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
8317 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
8318
8319#define ID3D12VideoDevice3_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
8320 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
8321
8322
8323#define ID3D12VideoDevice3_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
8324 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
8325
8326#define ID3D12VideoDevice3_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
8327 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
8328
8329#define ID3D12VideoDevice3_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
8330 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
8331
8332#define ID3D12VideoDevice3_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
8333 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
8334
8335#define ID3D12VideoDevice3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
8336 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
8337
8338
8339#define ID3D12VideoDevice3_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
8340 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
8341
8342#define ID3D12VideoDevice3_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
8343 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
8344
8345#endif /* COBJMACROS */
8346
8347
8348#endif /* C style interface */
8349
8350
8351
8352
8353#endif /* __ID3D12VideoDevice3_INTERFACE_DEFINED__ */
8354
8355
8356/* interface __MIDL_itf_d3d12video_0000_0025 */
8357/* [local] */
8358
8359typedef
8360enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
8361 {
8362 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
8363 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
8364 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
8365 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3
8366 } D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
8367
8368typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
8369 {
8370 UINT ReconstructedPictureResourceIndex;
8371 BOOL IsLongTermReference;
8372 UINT LongTermPictureIdx;
8373 UINT PictureOrderCountNumber;
8374 UINT FrameDecodingOrderNumber;
8375 UINT TemporalLayerIndex;
8376 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
8377
8378typedef
8379enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
8380 {
8381 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0,
8382 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8383 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2
8384 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
8385
8386DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)
8387typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
8388 {
8389 UCHAR memory_management_control_operation;
8390 UINT difference_of_pic_nums_minus1;
8391 UINT long_term_pic_num;
8392 UINT long_term_frame_idx;
8393 UINT max_long_term_frame_idx_plus1;
8394 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
8395
8396typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
8397 {
8398 UCHAR modification_of_pic_nums_idc;
8399 UINT abs_diff_pic_num_minus1;
8400 UINT long_term_pic_num;
8401 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
8402
8403typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
8404 {
8405 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
8406 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
8407 UINT pic_parameter_set_id;
8408 UINT idr_pic_id;
8409 UINT PictureOrderCountNumber;
8410 UINT FrameDecodingOrderNumber;
8411 UINT TemporalLayerIndex;
8412 UINT List0ReferenceFramesCount;
8413 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8414 UINT List1ReferenceFramesCount;
8415 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8416 UINT ReferenceFramesReconPictureDescriptorsCount;
8417 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
8418 UCHAR adaptive_ref_pic_marking_mode_flag;
8419 UINT RefPicMarkingOperationsCommandsCount;
8420 _Field_size_full_(RefPicMarkingOperationsCommandsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
8421 UINT List0RefPicModificationsCount;
8422 _Field_size_full_(List0RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
8423 UINT List1RefPicModificationsCount;
8424 _Field_size_full_(List1RefPicModificationsCount) D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
8425 UINT QPMapValuesCount;
8426 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8427 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
8428
8429typedef
8430enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
8431 {
8432 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
8433 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
8434 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
8435 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3
8436 } D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
8437
8438typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
8439 {
8440 UINT ReconstructedPictureResourceIndex;
8441 BOOL IsRefUsedByCurrentPic;
8442 BOOL IsLongTermReference;
8443 UINT PictureOrderCountNumber;
8444 UINT TemporalLayerIndex;
8445 } D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
8446
8447typedef
8448enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
8449 {
8450 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0,
8451 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
8452 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
8453 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
8454 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8
8455 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
8456
8457DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)
8458typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
8459 {
8460 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8461 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8462 UINT slice_pic_parameter_set_id;
8463 UINT PictureOrderCountNumber;
8464 UINT TemporalLayerIndex;
8465 UINT List0ReferenceFramesCount;
8466 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8467 UINT List1ReferenceFramesCount;
8468 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8469 UINT ReferenceFramesReconPictureDescriptorsCount;
8470 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8471 UINT List0RefPicModificationsCount;
8472 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8473 UINT List1RefPicModificationsCount;
8474 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8475 UINT QPMapValuesCount;
8476 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8477 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
8478
8479typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
8480 {
8481 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
8482 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
8483 UINT slice_pic_parameter_set_id;
8484 UINT PictureOrderCountNumber;
8485 UINT TemporalLayerIndex;
8486 UINT List0ReferenceFramesCount;
8487 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
8488 UINT List1ReferenceFramesCount;
8489 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
8490 UINT ReferenceFramesReconPictureDescriptorsCount;
8491 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
8492 UINT List0RefPicModificationsCount;
8493 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
8494 UINT List1RefPicModificationsCount;
8495 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
8496 UINT QPMapValuesCount;
8497 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
8498 UCHAR diff_cu_chroma_qp_offset_depth;
8499 UCHAR log2_sao_offset_scale_luma;
8500 UCHAR log2_sao_offset_scale_chroma;
8501 UCHAR log2_max_transform_skip_block_size_minus2;
8502 UCHAR chroma_qp_offset_list_len_minus1;
8503 CHAR cb_qp_offset_list[ 6 ];
8504 CHAR cr_qp_offset_list[ 6 ];
8505 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
8506
8507typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
8508 {
8509 UINT DataSize;
8510 union
8511 {
8512 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
8513 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC *pHEVCPicData;
8514 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 *pHEVCPicData1;
8515 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
8516 } ;
8517 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
8518
8519typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
8520 {
8521 UINT NumTexture2Ds;
8522 _Field_size_full_(NumTexture2Ds) ID3D12Resource **ppTexture2Ds;
8523 _Field_size_full_(NumTexture2Ds) UINT *pSubresources;
8524 } D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
8525
8526typedef
8527enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
8528 {
8529 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0,
8530 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
8531 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
8532 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
8533 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8
8534 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
8535
8536DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)
8537typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
8538 {
8539 UINT IntraRefreshFrameIndex;
8540 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
8541 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
8542 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
8543 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
8544
8545typedef
8546enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
8547 {
8548 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0,
8549 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
8550 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
8551 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
8552 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
8553 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10
8554 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
8555
8556DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)
8557typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
8558 {
8559 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
8560 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
8561 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
8562 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
8563 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
8564 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
8565 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
8566 } D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
8567
8568typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
8569 {
8570 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
8571 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
8572 ID3D12Resource *pInputFrame;
8573 UINT InputFrameSubresource;
8574 UINT CurrentFrameBitstreamMetadataSize;
8575 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
8576
8577typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
8578 {
8579 ID3D12Resource *pBuffer;
8580 UINT64 FrameStartOffset;
8581 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
8582
8583typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
8584 {
8585 ID3D12Resource *pReconstructedPicture;
8586 UINT ReconstructedPictureSubresource;
8587 } D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
8588
8589typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
8590 {
8591 UINT64 bSize;
8592 UINT64 bStartOffset;
8593 UINT64 bHeaderSize;
8594 } D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
8595
8596typedef
8597enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
8598 {
8599 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0,
8600 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
8601 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
8602 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
8603 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
8604 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10
8605 } D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
8606
8607DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)
8608typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
8609 {
8610 UINT64 AverageQP;
8611 UINT64 IntraCodingUnitsCount;
8612 UINT64 InterCodingUnitsCount;
8613 UINT64 SkipCodingUnitsCount;
8614 UINT64 AverageMotionEstimationXDirection;
8615 UINT64 AverageMotionEstimationYDirection;
8616 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
8617
8618typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
8619 {
8620 UINT64 EncodeErrorFlags;
8621 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
8622 UINT64 EncodedBitstreamWrittenBytesCount;
8623 UINT64 WrittenSubregionsCount;
8624 } D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
8625
8626typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
8627 {
8628 ID3D12Resource *pBuffer;
8629 UINT64 Offset;
8630 } D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
8631
8632typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
8633 {
8634 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
8635 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
8636 DXGI_FORMAT EncoderInputFormat;
8637 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
8638 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
8639 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
8640
8641typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
8642 {
8643 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
8644 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
8645
8646typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
8647 {
8648 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
8649 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
8650 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
8651 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
8652
8653
8654
8655extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_c_ifspec;
8656extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0025_v0_0_s_ifspec;
8657
8658#ifndef __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8659#define __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__
8660
8661/* interface ID3D12VideoEncodeCommandList2 */
8662/* [unique][local][object][uuid] */
8663
8664
8665EXTERN_C const IID IID_ID3D12VideoEncodeCommandList2;
8666
8667#if defined(__cplusplus) && !defined(CINTERFACE)
8668
8669 MIDL_INTERFACE("895491e2-e701-46a9-9a1f-8d3480ed867a")
8670 ID3D12VideoEncodeCommandList2 : public ID3D12VideoEncodeCommandList1
8671 {
8672 public:
8673 virtual void STDMETHODCALLTYPE EncodeFrame(
8674 _In_ ID3D12VideoEncoder *pEncoder,
8675 _In_ ID3D12VideoEncoderHeap *pHeap,
8676 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8677 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8678
8679 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata(
8680 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8681 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
8682
8683 };
8684
8685
8686#else /* C style interface */
8687
8688 typedef struct ID3D12VideoEncodeCommandList2Vtbl
8689 {
8690 BEGIN_INTERFACE
8691
8692 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
8693 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
8694 ID3D12VideoEncodeCommandList2 * This,
8695 REFIID riid,
8696 _COM_Outptr_ void **ppvObject);
8697
8698 DECLSPEC_XFGVIRT(IUnknown, AddRef)
8699 ULONG ( STDMETHODCALLTYPE *AddRef )(
8700 ID3D12VideoEncodeCommandList2 * This);
8701
8702 DECLSPEC_XFGVIRT(IUnknown, Release)
8703 ULONG ( STDMETHODCALLTYPE *Release )(
8704 ID3D12VideoEncodeCommandList2 * This);
8705
8706 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
8707 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
8708 ID3D12VideoEncodeCommandList2 * This,
8709 _In_ REFGUID guid,
8710 _Inout_ UINT *pDataSize,
8711 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
8712
8713 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
8714 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
8715 ID3D12VideoEncodeCommandList2 * This,
8716 _In_ REFGUID guid,
8717 _In_ UINT DataSize,
8718 _In_reads_bytes_opt_( DataSize ) const void *pData);
8719
8720 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
8721 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
8722 ID3D12VideoEncodeCommandList2 * This,
8723 _In_ REFGUID guid,
8724 _In_opt_ const IUnknown *pData);
8725
8726 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
8727 HRESULT ( STDMETHODCALLTYPE *SetName )(
8728 ID3D12VideoEncodeCommandList2 * This,
8729 _In_z_ LPCWSTR Name);
8730
8731 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
8732 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
8733 ID3D12VideoEncodeCommandList2 * This,
8734 REFIID riid,
8735 _COM_Outptr_opt_ void **ppvDevice);
8736
8737 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
8738 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
8739 ID3D12VideoEncodeCommandList2 * This);
8740
8741 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
8742 HRESULT ( STDMETHODCALLTYPE *Close )(
8743 ID3D12VideoEncodeCommandList2 * This);
8744
8745 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
8746 HRESULT ( STDMETHODCALLTYPE *Reset )(
8747 ID3D12VideoEncodeCommandList2 * This,
8748 _In_ ID3D12CommandAllocator *pAllocator);
8749
8750 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
8751 void ( STDMETHODCALLTYPE *ClearState )(
8752 ID3D12VideoEncodeCommandList2 * This);
8753
8754 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
8755 void ( STDMETHODCALLTYPE *ResourceBarrier )(
8756 ID3D12VideoEncodeCommandList2 * This,
8757 _In_ UINT NumBarriers,
8758 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
8759
8760 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
8761 void ( STDMETHODCALLTYPE *DiscardResource )(
8762 ID3D12VideoEncodeCommandList2 * This,
8763 _In_ ID3D12Resource *pResource,
8764 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
8765
8766 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
8767 void ( STDMETHODCALLTYPE *BeginQuery )(
8768 ID3D12VideoEncodeCommandList2 * This,
8769 _In_ ID3D12QueryHeap *pQueryHeap,
8770 _In_ D3D12_QUERY_TYPE Type,
8771 _In_ UINT Index);
8772
8773 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
8774 void ( STDMETHODCALLTYPE *EndQuery )(
8775 ID3D12VideoEncodeCommandList2 * This,
8776 _In_ ID3D12QueryHeap *pQueryHeap,
8777 _In_ D3D12_QUERY_TYPE Type,
8778 _In_ UINT Index);
8779
8780 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
8781 void ( STDMETHODCALLTYPE *ResolveQueryData )(
8782 ID3D12VideoEncodeCommandList2 * This,
8783 _In_ ID3D12QueryHeap *pQueryHeap,
8784 _In_ D3D12_QUERY_TYPE Type,
8785 _In_ UINT StartIndex,
8786 _In_ UINT NumQueries,
8787 _In_ ID3D12Resource *pDestinationBuffer,
8788 _In_ UINT64 AlignedDestinationBufferOffset);
8789
8790 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
8791 void ( STDMETHODCALLTYPE *SetPredication )(
8792 ID3D12VideoEncodeCommandList2 * This,
8793 _In_opt_ ID3D12Resource *pBuffer,
8794 _In_ UINT64 AlignedBufferOffset,
8795 _In_ D3D12_PREDICATION_OP Operation);
8796
8797 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
8798 void ( STDMETHODCALLTYPE *SetMarker )(
8799 ID3D12VideoEncodeCommandList2 * This,
8800 UINT Metadata,
8801 _In_reads_bytes_opt_(Size) const void *pData,
8802 UINT Size);
8803
8804 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
8805 void ( STDMETHODCALLTYPE *BeginEvent )(
8806 ID3D12VideoEncodeCommandList2 * This,
8807 UINT Metadata,
8808 _In_reads_bytes_opt_(Size) const void *pData,
8809 UINT Size);
8810
8811 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
8812 void ( STDMETHODCALLTYPE *EndEvent )(
8813 ID3D12VideoEncodeCommandList2 * This);
8814
8815 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
8816 void ( STDMETHODCALLTYPE *EstimateMotion )(
8817 ID3D12VideoEncodeCommandList2 * This,
8818 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
8819 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
8820 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
8821
8822 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
8823 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
8824 ID3D12VideoEncodeCommandList2 * This,
8825 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
8826 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
8827
8828 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
8829 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
8830 ID3D12VideoEncodeCommandList2 * This,
8831 UINT Count,
8832 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
8833 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
8834
8835 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
8836 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
8837 ID3D12VideoEncodeCommandList2 * This,
8838 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
8839
8840 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
8841 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
8842 ID3D12VideoEncodeCommandList2 * This,
8843 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8844 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
8845 SIZE_T InitializationParametersSizeInBytes);
8846
8847 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
8848 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
8849 ID3D12VideoEncodeCommandList2 * This,
8850 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
8851 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
8852 SIZE_T ExecutionParametersSizeInBytes);
8853
8854 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
8855 void ( STDMETHODCALLTYPE *EncodeFrame )(
8856 ID3D12VideoEncodeCommandList2 * This,
8857 _In_ ID3D12VideoEncoder *pEncoder,
8858 _In_ ID3D12VideoEncoderHeap *pHeap,
8859 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
8860 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
8861
8862 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
8863 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
8864 ID3D12VideoEncodeCommandList2 * This,
8865 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
8866 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
8867
8868 END_INTERFACE
8869 } ID3D12VideoEncodeCommandList2Vtbl;
8870
8871 interface ID3D12VideoEncodeCommandList2
8872 {
8873 CONST_VTBL struct ID3D12VideoEncodeCommandList2Vtbl *lpVtbl;
8874 };
8875
8876
8877
8878#ifdef COBJMACROS
8879
8880
8881#define ID3D12VideoEncodeCommandList2_QueryInterface(This,riid,ppvObject) \
8882 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
8883
8884#define ID3D12VideoEncodeCommandList2_AddRef(This) \
8885 ( (This)->lpVtbl -> AddRef(This) )
8886
8887#define ID3D12VideoEncodeCommandList2_Release(This) \
8888 ( (This)->lpVtbl -> Release(This) )
8889
8890
8891#define ID3D12VideoEncodeCommandList2_GetPrivateData(This,guid,pDataSize,pData) \
8892 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
8893
8894#define ID3D12VideoEncodeCommandList2_SetPrivateData(This,guid,DataSize,pData) \
8895 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
8896
8897#define ID3D12VideoEncodeCommandList2_SetPrivateDataInterface(This,guid,pData) \
8898 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
8899
8900#define ID3D12VideoEncodeCommandList2_SetName(This,Name) \
8901 ( (This)->lpVtbl -> SetName(This,Name) )
8902
8903
8904#define ID3D12VideoEncodeCommandList2_GetDevice(This,riid,ppvDevice) \
8905 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
8906
8907
8908#define ID3D12VideoEncodeCommandList2_GetType(This) \
8909 ( (This)->lpVtbl -> GetType(This) )
8910
8911
8912#define ID3D12VideoEncodeCommandList2_Close(This) \
8913 ( (This)->lpVtbl -> Close(This) )
8914
8915#define ID3D12VideoEncodeCommandList2_Reset(This,pAllocator) \
8916 ( (This)->lpVtbl -> Reset(This,pAllocator) )
8917
8918#define ID3D12VideoEncodeCommandList2_ClearState(This) \
8919 ( (This)->lpVtbl -> ClearState(This) )
8920
8921#define ID3D12VideoEncodeCommandList2_ResourceBarrier(This,NumBarriers,pBarriers) \
8922 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
8923
8924#define ID3D12VideoEncodeCommandList2_DiscardResource(This,pResource,pRegion) \
8925 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
8926
8927#define ID3D12VideoEncodeCommandList2_BeginQuery(This,pQueryHeap,Type,Index) \
8928 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
8929
8930#define ID3D12VideoEncodeCommandList2_EndQuery(This,pQueryHeap,Type,Index) \
8931 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
8932
8933#define ID3D12VideoEncodeCommandList2_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
8934 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
8935
8936#define ID3D12VideoEncodeCommandList2_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
8937 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
8938
8939#define ID3D12VideoEncodeCommandList2_SetMarker(This,Metadata,pData,Size) \
8940 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
8941
8942#define ID3D12VideoEncodeCommandList2_BeginEvent(This,Metadata,pData,Size) \
8943 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
8944
8945#define ID3D12VideoEncodeCommandList2_EndEvent(This) \
8946 ( (This)->lpVtbl -> EndEvent(This) )
8947
8948#define ID3D12VideoEncodeCommandList2_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
8949 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
8950
8951#define ID3D12VideoEncodeCommandList2_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
8952 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
8953
8954#define ID3D12VideoEncodeCommandList2_WriteBufferImmediate(This,Count,pParams,pModes) \
8955 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
8956
8957#define ID3D12VideoEncodeCommandList2_SetProtectedResourceSession(This,pProtectedResourceSession) \
8958 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
8959
8960
8961#define ID3D12VideoEncodeCommandList2_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
8962 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
8963
8964#define ID3D12VideoEncodeCommandList2_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
8965 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
8966
8967
8968#define ID3D12VideoEncodeCommandList2_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
8969 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
8970
8971#define ID3D12VideoEncodeCommandList2_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
8972 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
8973
8974#endif /* COBJMACROS */
8975
8976
8977#endif /* C style interface */
8978
8979
8980
8981
8982#endif /* __ID3D12VideoEncodeCommandList2_INTERFACE_DEFINED__ */
8983
8984
8985#ifndef __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8986#define __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__
8987
8988/* interface ID3D12VideoEncodeCommandList3 */
8989/* [unique][local][object][uuid] */
8990
8991
8992EXTERN_C const IID IID_ID3D12VideoEncodeCommandList3;
8993
8994#if defined(__cplusplus) && !defined(CINTERFACE)
8995
8996 MIDL_INTERFACE("7f027b22-1515-4e85-aa0d-026486580576")
8997 ID3D12VideoEncodeCommandList3 : public ID3D12VideoEncodeCommandList2
8998 {
8999 public:
9000 virtual void STDMETHODCALLTYPE Barrier(
9001 UINT32 NumBarrierGroups,
9002 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups) = 0;
9003
9004 };
9005
9006
9007#else /* C style interface */
9008
9009 typedef struct ID3D12VideoEncodeCommandList3Vtbl
9010 {
9011 BEGIN_INTERFACE
9012
9013 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9014 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9015 ID3D12VideoEncodeCommandList3 * This,
9016 REFIID riid,
9017 _COM_Outptr_ void **ppvObject);
9018
9019 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9020 ULONG ( STDMETHODCALLTYPE *AddRef )(
9021 ID3D12VideoEncodeCommandList3 * This);
9022
9023 DECLSPEC_XFGVIRT(IUnknown, Release)
9024 ULONG ( STDMETHODCALLTYPE *Release )(
9025 ID3D12VideoEncodeCommandList3 * This);
9026
9027 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9028 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9029 ID3D12VideoEncodeCommandList3 * This,
9030 _In_ REFGUID guid,
9031 _Inout_ UINT *pDataSize,
9032 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9033
9034 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9035 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9036 ID3D12VideoEncodeCommandList3 * This,
9037 _In_ REFGUID guid,
9038 _In_ UINT DataSize,
9039 _In_reads_bytes_opt_( DataSize ) const void *pData);
9040
9041 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9042 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9043 ID3D12VideoEncodeCommandList3 * This,
9044 _In_ REFGUID guid,
9045 _In_opt_ const IUnknown *pData);
9046
9047 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9048 HRESULT ( STDMETHODCALLTYPE *SetName )(
9049 ID3D12VideoEncodeCommandList3 * This,
9050 _In_z_ LPCWSTR Name);
9051
9052 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9053 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9054 ID3D12VideoEncodeCommandList3 * This,
9055 REFIID riid,
9056 _COM_Outptr_opt_ void **ppvDevice);
9057
9058 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
9059 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
9060 ID3D12VideoEncodeCommandList3 * This);
9061
9062 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
9063 HRESULT ( STDMETHODCALLTYPE *Close )(
9064 ID3D12VideoEncodeCommandList3 * This);
9065
9066 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
9067 HRESULT ( STDMETHODCALLTYPE *Reset )(
9068 ID3D12VideoEncodeCommandList3 * This,
9069 _In_ ID3D12CommandAllocator *pAllocator);
9070
9071 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
9072 void ( STDMETHODCALLTYPE *ClearState )(
9073 ID3D12VideoEncodeCommandList3 * This);
9074
9075 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
9076 void ( STDMETHODCALLTYPE *ResourceBarrier )(
9077 ID3D12VideoEncodeCommandList3 * This,
9078 _In_ UINT NumBarriers,
9079 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
9080
9081 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
9082 void ( STDMETHODCALLTYPE *DiscardResource )(
9083 ID3D12VideoEncodeCommandList3 * This,
9084 _In_ ID3D12Resource *pResource,
9085 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
9086
9087 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
9088 void ( STDMETHODCALLTYPE *BeginQuery )(
9089 ID3D12VideoEncodeCommandList3 * This,
9090 _In_ ID3D12QueryHeap *pQueryHeap,
9091 _In_ D3D12_QUERY_TYPE Type,
9092 _In_ UINT Index);
9093
9094 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
9095 void ( STDMETHODCALLTYPE *EndQuery )(
9096 ID3D12VideoEncodeCommandList3 * This,
9097 _In_ ID3D12QueryHeap *pQueryHeap,
9098 _In_ D3D12_QUERY_TYPE Type,
9099 _In_ UINT Index);
9100
9101 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
9102 void ( STDMETHODCALLTYPE *ResolveQueryData )(
9103 ID3D12VideoEncodeCommandList3 * This,
9104 _In_ ID3D12QueryHeap *pQueryHeap,
9105 _In_ D3D12_QUERY_TYPE Type,
9106 _In_ UINT StartIndex,
9107 _In_ UINT NumQueries,
9108 _In_ ID3D12Resource *pDestinationBuffer,
9109 _In_ UINT64 AlignedDestinationBufferOffset);
9110
9111 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
9112 void ( STDMETHODCALLTYPE *SetPredication )(
9113 ID3D12VideoEncodeCommandList3 * This,
9114 _In_opt_ ID3D12Resource *pBuffer,
9115 _In_ UINT64 AlignedBufferOffset,
9116 _In_ D3D12_PREDICATION_OP Operation);
9117
9118 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
9119 void ( STDMETHODCALLTYPE *SetMarker )(
9120 ID3D12VideoEncodeCommandList3 * This,
9121 UINT Metadata,
9122 _In_reads_bytes_opt_(Size) const void *pData,
9123 UINT Size);
9124
9125 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
9126 void ( STDMETHODCALLTYPE *BeginEvent )(
9127 ID3D12VideoEncodeCommandList3 * This,
9128 UINT Metadata,
9129 _In_reads_bytes_opt_(Size) const void *pData,
9130 UINT Size);
9131
9132 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
9133 void ( STDMETHODCALLTYPE *EndEvent )(
9134 ID3D12VideoEncodeCommandList3 * This);
9135
9136 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
9137 void ( STDMETHODCALLTYPE *EstimateMotion )(
9138 ID3D12VideoEncodeCommandList3 * This,
9139 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
9140 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
9141 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
9142
9143 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
9144 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
9145 ID3D12VideoEncodeCommandList3 * This,
9146 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
9147 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
9148
9149 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
9150 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
9151 ID3D12VideoEncodeCommandList3 * This,
9152 UINT Count,
9153 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
9154 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
9155
9156 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
9157 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
9158 ID3D12VideoEncodeCommandList3 * This,
9159 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
9160
9161 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
9162 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
9163 ID3D12VideoEncodeCommandList3 * This,
9164 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9165 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
9166 SIZE_T InitializationParametersSizeInBytes);
9167
9168 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
9169 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9170 ID3D12VideoEncodeCommandList3 * This,
9171 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9172 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9173 SIZE_T ExecutionParametersSizeInBytes);
9174
9175 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
9176 void ( STDMETHODCALLTYPE *EncodeFrame )(
9177 ID3D12VideoEncodeCommandList3 * This,
9178 _In_ ID3D12VideoEncoder *pEncoder,
9179 _In_ ID3D12VideoEncoderHeap *pHeap,
9180 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
9181 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
9182
9183 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
9184 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
9185 ID3D12VideoEncodeCommandList3 * This,
9186 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
9187 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
9188
9189 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
9190 void ( STDMETHODCALLTYPE *Barrier )(
9191 ID3D12VideoEncodeCommandList3 * This,
9192 UINT32 NumBarrierGroups,
9193 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
9194
9195 END_INTERFACE
9196 } ID3D12VideoEncodeCommandList3Vtbl;
9197
9198 interface ID3D12VideoEncodeCommandList3
9199 {
9200 CONST_VTBL struct ID3D12VideoEncodeCommandList3Vtbl *lpVtbl;
9201 };
9202
9203
9204
9205#ifdef COBJMACROS
9206
9207
9208#define ID3D12VideoEncodeCommandList3_QueryInterface(This,riid,ppvObject) \
9209 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9210
9211#define ID3D12VideoEncodeCommandList3_AddRef(This) \
9212 ( (This)->lpVtbl -> AddRef(This) )
9213
9214#define ID3D12VideoEncodeCommandList3_Release(This) \
9215 ( (This)->lpVtbl -> Release(This) )
9216
9217
9218#define ID3D12VideoEncodeCommandList3_GetPrivateData(This,guid,pDataSize,pData) \
9219 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9220
9221#define ID3D12VideoEncodeCommandList3_SetPrivateData(This,guid,DataSize,pData) \
9222 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9223
9224#define ID3D12VideoEncodeCommandList3_SetPrivateDataInterface(This,guid,pData) \
9225 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9226
9227#define ID3D12VideoEncodeCommandList3_SetName(This,Name) \
9228 ( (This)->lpVtbl -> SetName(This,Name) )
9229
9230
9231#define ID3D12VideoEncodeCommandList3_GetDevice(This,riid,ppvDevice) \
9232 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9233
9234
9235#define ID3D12VideoEncodeCommandList3_GetType(This) \
9236 ( (This)->lpVtbl -> GetType(This) )
9237
9238
9239#define ID3D12VideoEncodeCommandList3_Close(This) \
9240 ( (This)->lpVtbl -> Close(This) )
9241
9242#define ID3D12VideoEncodeCommandList3_Reset(This,pAllocator) \
9243 ( (This)->lpVtbl -> Reset(This,pAllocator) )
9244
9245#define ID3D12VideoEncodeCommandList3_ClearState(This) \
9246 ( (This)->lpVtbl -> ClearState(This) )
9247
9248#define ID3D12VideoEncodeCommandList3_ResourceBarrier(This,NumBarriers,pBarriers) \
9249 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
9250
9251#define ID3D12VideoEncodeCommandList3_DiscardResource(This,pResource,pRegion) \
9252 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
9253
9254#define ID3D12VideoEncodeCommandList3_BeginQuery(This,pQueryHeap,Type,Index) \
9255 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
9256
9257#define ID3D12VideoEncodeCommandList3_EndQuery(This,pQueryHeap,Type,Index) \
9258 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
9259
9260#define ID3D12VideoEncodeCommandList3_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
9261 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
9262
9263#define ID3D12VideoEncodeCommandList3_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
9264 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
9265
9266#define ID3D12VideoEncodeCommandList3_SetMarker(This,Metadata,pData,Size) \
9267 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
9268
9269#define ID3D12VideoEncodeCommandList3_BeginEvent(This,Metadata,pData,Size) \
9270 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
9271
9272#define ID3D12VideoEncodeCommandList3_EndEvent(This) \
9273 ( (This)->lpVtbl -> EndEvent(This) )
9274
9275#define ID3D12VideoEncodeCommandList3_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
9276 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
9277
9278#define ID3D12VideoEncodeCommandList3_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
9279 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
9280
9281#define ID3D12VideoEncodeCommandList3_WriteBufferImmediate(This,Count,pParams,pModes) \
9282 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
9283
9284#define ID3D12VideoEncodeCommandList3_SetProtectedResourceSession(This,pProtectedResourceSession) \
9285 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
9286
9287
9288#define ID3D12VideoEncodeCommandList3_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
9289 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
9290
9291#define ID3D12VideoEncodeCommandList3_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
9292 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
9293
9294
9295#define ID3D12VideoEncodeCommandList3_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
9296 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
9297
9298#define ID3D12VideoEncodeCommandList3_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
9299 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
9300
9301
9302#define ID3D12VideoEncodeCommandList3_Barrier(This,NumBarrierGroups,pBarrierGroups) \
9303 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
9304
9305#endif /* COBJMACROS */
9306
9307
9308#endif /* C style interface */
9309
9310
9311
9312
9313#endif /* __ID3D12VideoEncodeCommandList3_INTERFACE_DEFINED__ */
9314
9315
9316/* interface __MIDL_itf_d3d12video_0000_0027 */
9317/* [local] */
9318
9319typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
9320 {
9321 UINT NodeMask;
9322 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
9323 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
9324 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
9325 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
9326 UINT ResolutionsListCount;
9327 _Field_size_full_(ResolutionsListCount) const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
9328 UINT Pow2DownscaleFactor;
9329 } D3D12_VIDEO_ENCODER_HEAP_DESC1;
9330
9331
9332
9333extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_c_ifspec;
9334extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0027_v0_0_s_ifspec;
9335
9336#ifndef __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9337#define __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__
9338
9339/* interface ID3D12VideoEncoderHeap1 */
9340/* [unique][local][object][uuid] */
9341
9342
9343EXTERN_C const IID IID_ID3D12VideoEncoderHeap1;
9344
9345#if defined(__cplusplus) && !defined(CINTERFACE)
9346
9347 MIDL_INTERFACE("ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9")
9348 ID3D12VideoEncoderHeap1 : public ID3D12VideoEncoderHeap
9349 {
9350 public:
9351 virtual UINT STDMETHODCALLTYPE GetPow2DownscaleFactor( void) = 0;
9352
9353 };
9354
9355
9356#else /* C style interface */
9357
9358 typedef struct ID3D12VideoEncoderHeap1Vtbl
9359 {
9360 BEGIN_INTERFACE
9361
9362 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9363 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9364 ID3D12VideoEncoderHeap1 * This,
9365 REFIID riid,
9366 _COM_Outptr_ void **ppvObject);
9367
9368 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9369 ULONG ( STDMETHODCALLTYPE *AddRef )(
9370 ID3D12VideoEncoderHeap1 * This);
9371
9372 DECLSPEC_XFGVIRT(IUnknown, Release)
9373 ULONG ( STDMETHODCALLTYPE *Release )(
9374 ID3D12VideoEncoderHeap1 * This);
9375
9376 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
9377 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
9378 ID3D12VideoEncoderHeap1 * This,
9379 _In_ REFGUID guid,
9380 _Inout_ UINT *pDataSize,
9381 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
9382
9383 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
9384 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
9385 ID3D12VideoEncoderHeap1 * This,
9386 _In_ REFGUID guid,
9387 _In_ UINT DataSize,
9388 _In_reads_bytes_opt_( DataSize ) const void *pData);
9389
9390 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
9391 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
9392 ID3D12VideoEncoderHeap1 * This,
9393 _In_ REFGUID guid,
9394 _In_opt_ const IUnknown *pData);
9395
9396 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
9397 HRESULT ( STDMETHODCALLTYPE *SetName )(
9398 ID3D12VideoEncoderHeap1 * This,
9399 _In_z_ LPCWSTR Name);
9400
9401 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
9402 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
9403 ID3D12VideoEncoderHeap1 * This,
9404 REFIID riid,
9405 _COM_Outptr_opt_ void **ppvDevice);
9406
9407 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetNodeMask)
9408 UINT ( STDMETHODCALLTYPE *GetNodeMask )(
9409 ID3D12VideoEncoderHeap1 * This);
9410
9411 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetEncoderHeapFlags)
9412 D3D12_VIDEO_ENCODER_HEAP_FLAGS ( STDMETHODCALLTYPE *GetEncoderHeapFlags )(
9413 ID3D12VideoEncoderHeap1 * This);
9414
9415 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodec)
9416 D3D12_VIDEO_ENCODER_CODEC ( STDMETHODCALLTYPE *GetCodec )(
9417 ID3D12VideoEncoderHeap1 * This);
9418
9419 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecProfile)
9420 HRESULT ( STDMETHODCALLTYPE *GetCodecProfile )(
9421 ID3D12VideoEncoderHeap1 * This,
9422 _Inout_ D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
9423
9424 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetCodecLevel)
9425 HRESULT ( STDMETHODCALLTYPE *GetCodecLevel )(
9426 ID3D12VideoEncoderHeap1 * This,
9427 _Inout_ D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
9428
9429 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionListCount)
9430 UINT ( STDMETHODCALLTYPE *GetResolutionListCount )(
9431 ID3D12VideoEncoderHeap1 * This);
9432
9433 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap, GetResolutionList)
9434 HRESULT ( STDMETHODCALLTYPE *GetResolutionList )(
9435 ID3D12VideoEncoderHeap1 * This,
9436 const UINT ResolutionsListCount,
9437 _Out_writes_(ResolutionsListCount) D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList);
9438
9439 DECLSPEC_XFGVIRT(ID3D12VideoEncoderHeap1, GetPow2DownscaleFactor)
9440 UINT ( STDMETHODCALLTYPE *GetPow2DownscaleFactor )(
9441 ID3D12VideoEncoderHeap1 * This);
9442
9443 END_INTERFACE
9444 } ID3D12VideoEncoderHeap1Vtbl;
9445
9446 interface ID3D12VideoEncoderHeap1
9447 {
9448 CONST_VTBL struct ID3D12VideoEncoderHeap1Vtbl *lpVtbl;
9449 };
9450
9451
9452
9453#ifdef COBJMACROS
9454
9455
9456#define ID3D12VideoEncoderHeap1_QueryInterface(This,riid,ppvObject) \
9457 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9458
9459#define ID3D12VideoEncoderHeap1_AddRef(This) \
9460 ( (This)->lpVtbl -> AddRef(This) )
9461
9462#define ID3D12VideoEncoderHeap1_Release(This) \
9463 ( (This)->lpVtbl -> Release(This) )
9464
9465
9466#define ID3D12VideoEncoderHeap1_GetPrivateData(This,guid,pDataSize,pData) \
9467 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
9468
9469#define ID3D12VideoEncoderHeap1_SetPrivateData(This,guid,DataSize,pData) \
9470 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
9471
9472#define ID3D12VideoEncoderHeap1_SetPrivateDataInterface(This,guid,pData) \
9473 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
9474
9475#define ID3D12VideoEncoderHeap1_SetName(This,Name) \
9476 ( (This)->lpVtbl -> SetName(This,Name) )
9477
9478
9479#define ID3D12VideoEncoderHeap1_GetDevice(This,riid,ppvDevice) \
9480 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
9481
9482
9483
9484#define ID3D12VideoEncoderHeap1_GetNodeMask(This) \
9485 ( (This)->lpVtbl -> GetNodeMask(This) )
9486
9487#define ID3D12VideoEncoderHeap1_GetEncoderHeapFlags(This) \
9488 ( (This)->lpVtbl -> GetEncoderHeapFlags(This) )
9489
9490#define ID3D12VideoEncoderHeap1_GetCodec(This) \
9491 ( (This)->lpVtbl -> GetCodec(This) )
9492
9493#define ID3D12VideoEncoderHeap1_GetCodecProfile(This,dstProfile) \
9494 ( (This)->lpVtbl -> GetCodecProfile(This,dstProfile) )
9495
9496#define ID3D12VideoEncoderHeap1_GetCodecLevel(This,dstLevel) \
9497 ( (This)->lpVtbl -> GetCodecLevel(This,dstLevel) )
9498
9499#define ID3D12VideoEncoderHeap1_GetResolutionListCount(This) \
9500 ( (This)->lpVtbl -> GetResolutionListCount(This) )
9501
9502#define ID3D12VideoEncoderHeap1_GetResolutionList(This,ResolutionsListCount,pResolutionList) \
9503 ( (This)->lpVtbl -> GetResolutionList(This,ResolutionsListCount,pResolutionList) )
9504
9505
9506#define ID3D12VideoEncoderHeap1_GetPow2DownscaleFactor(This) \
9507 ( (This)->lpVtbl -> GetPow2DownscaleFactor(This) )
9508
9509#endif /* COBJMACROS */
9510
9511
9512#endif /* C style interface */
9513
9514
9515
9516
9517#endif /* __ID3D12VideoEncoderHeap1_INTERFACE_DEFINED__ */
9518
9519
9520#ifndef __ID3D12VideoDevice4_INTERFACE_DEFINED__
9521#define __ID3D12VideoDevice4_INTERFACE_DEFINED__
9522
9523/* interface ID3D12VideoDevice4 */
9524/* [unique][local][object][uuid] */
9525
9526
9527EXTERN_C const IID IID_ID3D12VideoDevice4;
9528
9529#if defined(__cplusplus) && !defined(CINTERFACE)
9530
9531 MIDL_INTERFACE("e59ad09e-f1ae-42bb-8983-9f6e5586c4eb")
9532 ID3D12VideoDevice4 : public ID3D12VideoDevice3
9533 {
9534 public:
9535 virtual HRESULT STDMETHODCALLTYPE CreateVideoEncoderHeap1(
9536 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9537 _In_ REFIID riid,
9538 _COM_Outptr_ void **ppVideoEncoderHeap) = 0;
9539
9540 };
9541
9542
9543#else /* C style interface */
9544
9545 typedef struct ID3D12VideoDevice4Vtbl
9546 {
9547 BEGIN_INTERFACE
9548
9549 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
9550 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
9551 ID3D12VideoDevice4 * This,
9552 REFIID riid,
9553 _COM_Outptr_ void **ppvObject);
9554
9555 DECLSPEC_XFGVIRT(IUnknown, AddRef)
9556 ULONG ( STDMETHODCALLTYPE *AddRef )(
9557 ID3D12VideoDevice4 * This);
9558
9559 DECLSPEC_XFGVIRT(IUnknown, Release)
9560 ULONG ( STDMETHODCALLTYPE *Release )(
9561 ID3D12VideoDevice4 * This);
9562
9563 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CheckFeatureSupport)
9564 HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
9565 ID3D12VideoDevice4 * This,
9566 D3D12_FEATURE_VIDEO FeatureVideo,
9567 _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
9568 UINT FeatureSupportDataSize);
9569
9570 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoder)
9571 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder )(
9572 ID3D12VideoDevice4 * This,
9573 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9574 _In_ REFIID riid,
9575 _COM_Outptr_ void **ppVideoDecoder);
9576
9577 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoDecoderHeap)
9578 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap )(
9579 ID3D12VideoDevice4 * This,
9580 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9581 _In_ REFIID riid,
9582 _COM_Outptr_ void **ppVideoDecoderHeap);
9583
9584 DECLSPEC_XFGVIRT(ID3D12VideoDevice, CreateVideoProcessor)
9585 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor )(
9586 ID3D12VideoDevice4 * This,
9587 UINT NodeMask,
9588 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9589 UINT NumInputStreamDescs,
9590 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9591 _In_ REFIID riid,
9592 _COM_Outptr_ void **ppVideoProcessor);
9593
9594 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionEstimator)
9595 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionEstimator )(
9596 ID3D12VideoDevice4 * This,
9597 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_DESC *pDesc,
9598 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9599 _In_ REFIID riid,
9600 _COM_Outptr_ void **ppVideoMotionEstimator);
9601
9602 DECLSPEC_XFGVIRT(ID3D12VideoDevice1, CreateVideoMotionVectorHeap)
9603 HRESULT ( STDMETHODCALLTYPE *CreateVideoMotionVectorHeap )(
9604 ID3D12VideoDevice4 * This,
9605 _In_ const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC *pDesc,
9606 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9607 _In_ REFIID riid,
9608 _COM_Outptr_ void **ppVideoMotionVectorHeap);
9609
9610 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoder1)
9611 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoder1 )(
9612 ID3D12VideoDevice4 * This,
9613 _In_ const D3D12_VIDEO_DECODER_DESC *pDesc,
9614 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9615 _In_ REFIID riid,
9616 _COM_Outptr_ void **ppVideoDecoder);
9617
9618 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoDecoderHeap1)
9619 HRESULT ( STDMETHODCALLTYPE *CreateVideoDecoderHeap1 )(
9620 ID3D12VideoDevice4 * This,
9621 _In_ const D3D12_VIDEO_DECODER_HEAP_DESC *pVideoDecoderHeapDesc,
9622 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9623 _In_ REFIID riid,
9624 _COM_Outptr_ void **ppVideoDecoderHeap);
9625
9626 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoProcessor1)
9627 HRESULT ( STDMETHODCALLTYPE *CreateVideoProcessor1 )(
9628 ID3D12VideoDevice4 * This,
9629 UINT NodeMask,
9630 _In_ const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC *pOutputStreamDesc,
9631 UINT NumInputStreamDescs,
9632 _In_reads_(NumInputStreamDescs) const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
9633 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9634 _In_ REFIID riid,
9635 _COM_Outptr_ void **ppVideoProcessor);
9636
9637 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, CreateVideoExtensionCommand)
9638 HRESULT ( STDMETHODCALLTYPE *CreateVideoExtensionCommand )(
9639 ID3D12VideoDevice4 * This,
9640 _In_ const D3D12_VIDEO_EXTENSION_COMMAND_DESC *pDesc,
9641 _In_reads_bytes_(CreationParametersDataSizeInBytes) const void *pCreationParameters,
9642 SIZE_T CreationParametersDataSizeInBytes,
9643 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession,
9644 _In_ REFIID riid,
9645 _COM_Outptr_ void **ppVideoExtensionCommand);
9646
9647 DECLSPEC_XFGVIRT(ID3D12VideoDevice2, ExecuteExtensionCommand)
9648 HRESULT ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
9649 ID3D12VideoDevice4 * This,
9650 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
9651 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
9652 SIZE_T ExecutionParametersSizeInBytes,
9653 _Out_writes_bytes_(OutputDataSizeInBytes) void *pOutputData,
9654 SIZE_T OutputDataSizeInBytes);
9655
9656 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoder)
9657 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoder )(
9658 ID3D12VideoDevice4 * This,
9659 _In_ const D3D12_VIDEO_ENCODER_DESC *pDesc,
9660 _In_ REFIID riid,
9661 _COM_Outptr_ void **ppVideoEncoder);
9662
9663 DECLSPEC_XFGVIRT(ID3D12VideoDevice3, CreateVideoEncoderHeap)
9664 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap )(
9665 ID3D12VideoDevice4 * This,
9666 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC *pDesc,
9667 _In_ REFIID riid,
9668 _COM_Outptr_ void **ppVideoEncoderHeap);
9669
9670 DECLSPEC_XFGVIRT(ID3D12VideoDevice4, CreateVideoEncoderHeap1)
9671 HRESULT ( STDMETHODCALLTYPE *CreateVideoEncoderHeap1 )(
9672 ID3D12VideoDevice4 * This,
9673 _In_ const D3D12_VIDEO_ENCODER_HEAP_DESC1 *pDesc,
9674 _In_ REFIID riid,
9675 _COM_Outptr_ void **ppVideoEncoderHeap);
9676
9677 END_INTERFACE
9678 } ID3D12VideoDevice4Vtbl;
9679
9680 interface ID3D12VideoDevice4
9681 {
9682 CONST_VTBL struct ID3D12VideoDevice4Vtbl *lpVtbl;
9683 };
9684
9685
9686
9687#ifdef COBJMACROS
9688
9689
9690#define ID3D12VideoDevice4_QueryInterface(This,riid,ppvObject) \
9691 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
9692
9693#define ID3D12VideoDevice4_AddRef(This) \
9694 ( (This)->lpVtbl -> AddRef(This) )
9695
9696#define ID3D12VideoDevice4_Release(This) \
9697 ( (This)->lpVtbl -> Release(This) )
9698
9699
9700#define ID3D12VideoDevice4_CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) \
9701 ( (This)->lpVtbl -> CheckFeatureSupport(This,FeatureVideo,pFeatureSupportData,FeatureSupportDataSize) )
9702
9703#define ID3D12VideoDevice4_CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) \
9704 ( (This)->lpVtbl -> CreateVideoDecoder(This,pDesc,riid,ppVideoDecoder) )
9705
9706#define ID3D12VideoDevice4_CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) \
9707 ( (This)->lpVtbl -> CreateVideoDecoderHeap(This,pVideoDecoderHeapDesc,riid,ppVideoDecoderHeap) )
9708
9709#define ID3D12VideoDevice4_CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) \
9710 ( (This)->lpVtbl -> CreateVideoProcessor(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,riid,ppVideoProcessor) )
9711
9712
9713#define ID3D12VideoDevice4_CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) \
9714 ( (This)->lpVtbl -> CreateVideoMotionEstimator(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionEstimator) )
9715
9716#define ID3D12VideoDevice4_CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) \
9717 ( (This)->lpVtbl -> CreateVideoMotionVectorHeap(This,pDesc,pProtectedResourceSession,riid,ppVideoMotionVectorHeap) )
9718
9719
9720#define ID3D12VideoDevice4_CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) \
9721 ( (This)->lpVtbl -> CreateVideoDecoder1(This,pDesc,pProtectedResourceSession,riid,ppVideoDecoder) )
9722
9723#define ID3D12VideoDevice4_CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) \
9724 ( (This)->lpVtbl -> CreateVideoDecoderHeap1(This,pVideoDecoderHeapDesc,pProtectedResourceSession,riid,ppVideoDecoderHeap) )
9725
9726#define ID3D12VideoDevice4_CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) \
9727 ( (This)->lpVtbl -> CreateVideoProcessor1(This,NodeMask,pOutputStreamDesc,NumInputStreamDescs,pInputStreamDescs,pProtectedResourceSession,riid,ppVideoProcessor) )
9728
9729#define ID3D12VideoDevice4_CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) \
9730 ( (This)->lpVtbl -> CreateVideoExtensionCommand(This,pDesc,pCreationParameters,CreationParametersDataSizeInBytes,pProtectedResourceSession,riid,ppVideoExtensionCommand) )
9731
9732#define ID3D12VideoDevice4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) \
9733 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes,pOutputData,OutputDataSizeInBytes) )
9734
9735
9736#define ID3D12VideoDevice4_CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) \
9737 ( (This)->lpVtbl -> CreateVideoEncoder(This,pDesc,riid,ppVideoEncoder) )
9738
9739#define ID3D12VideoDevice4_CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) \
9740 ( (This)->lpVtbl -> CreateVideoEncoderHeap(This,pDesc,riid,ppVideoEncoderHeap) )
9741
9742
9743#define ID3D12VideoDevice4_CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) \
9744 ( (This)->lpVtbl -> CreateVideoEncoderHeap1(This,pDesc,riid,ppVideoEncoderHeap) )
9745
9746#endif /* COBJMACROS */
9747
9748
9749#endif /* C style interface */
9750
9751
9752
9753
9754#endif /* __ID3D12VideoDevice4_INTERFACE_DEFINED__ */
9755
9756
9757/* interface __MIDL_itf_d3d12video_0000_0029 */
9758/* [local] */
9759
9760typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1
9761 {
9762 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc;
9763 BOOL IsSupported;
9764 UINT64 MemoryPoolL0Size;
9765 UINT64 MemoryPoolL1Size;
9766 } D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
9767
9768typedef
9769enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
9770 {
9771 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0,
9772 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
9773 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
9774 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
9775 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
9776 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10
9777 } D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
9778
9779DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )
9780typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
9781 {
9782 UINT NodeIndex;
9783 D3D12_VIDEO_ENCODER_CODEC Codec;
9784 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9785 DXGI_FORMAT InputFormat;
9786 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
9787 BOOL IsSupported;
9788 UINT CompressedBitstreamBufferAccessAlignment;
9789 UINT EncoderMetadataBufferAccessAlignment;
9790 UINT MaxEncoderOutputMetadataBufferSize;
9791 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
9792 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9793 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions;
9794 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions;
9795 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions;
9796 UINT EncoderOutputMetadataFramePSNRComponentsNumber;
9797 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber;
9798 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize;
9799 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
9800
9801typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
9802 {
9803 float PSNRY;
9804 float PSNRU;
9805 float PSNRV;
9806 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
9807
9808typedef
9809enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
9810 {
9811 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
9812 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1
9813 } D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
9814
9815typedef
9816enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
9817 {
9818 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
9819 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1
9820 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
9821
9822typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
9823 {
9824 D3D12_VIDEO_ENCODER_CODEC Codec;
9825 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9826 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9827 DXGI_FORMAT InputFormat;
9828 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9829 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9830 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9831 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9832 } D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
9833
9834typedef
9835enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
9836 {
9837 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
9838 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
9839 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2
9840 } D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
9841
9842typedef
9843enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
9844 {
9845 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
9846 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
9847 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2
9848 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
9849
9850typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
9851 {
9852 UINT NodeIndex;
9853 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9854 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9855 BOOL IsSupported;
9856 UINT MapSourcePreferenceRanking;
9857 UINT BlockSize;
9858 } D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
9859
9860typedef
9861enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
9862 {
9863 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0,
9864 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
9865 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
9866 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4
9867 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
9868
9869DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )
9870typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
9871 {
9872 UINT NodeIndex;
9873 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9874 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9875 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9876 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
9877 UINT MapSourcePreferenceRanking;
9878 } D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
9879
9880typedef
9881enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
9882 {
9883 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
9884 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
9885 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2
9886 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
9887
9888typedef
9889enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS
9890 {
9891 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0,
9892 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL ) ,
9893 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL ) ,
9894 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = ( 1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL )
9895 } D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
9896
9897DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )
9898typedef
9899enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
9900 {
9901 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0,
9902 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
9903 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
9904 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4
9905 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
9906
9907DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )
9908typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
9909 {
9910 UINT NodeIndex;
9911 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9912 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9913 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9914 BOOL BidirectionalRefFrameEnabled;
9915 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9916 UINT MaxMotionHints;
9917 UINT MinDeviation;
9918 UINT MaxDeviation;
9919 UINT MapSourcePreferenceRanking;
9920 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
9921 } D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
9922
9923typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
9924 {
9925 UINT NodeIndex;
9926 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
9927 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
9928 BOOL IsSupported;
9929 UINT64 MaxResolvedBufferAllocationSize;
9930 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
9931
9932typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
9933 {
9934 BOOL Enabled;
9935 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9936 } D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
9937
9938typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
9939 {
9940 UINT MapSourcePreferenceRanking;
9941 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
9942
9943typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
9944 {
9945 BOOL Enabled;
9946 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9947 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
9948 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
9949
9950typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
9951 {
9952 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
9953 UINT MapSourcePreferenceRanking;
9954 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
9955
9956typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
9957 {
9958 BOOL Enabled;
9959 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
9960 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
9961 BOOL BidirectionalRefFrameEnabled;
9962 } D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
9963
9964typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
9965 {
9966 UINT MaxMotionHints;
9967 UINT MinDeviation;
9968 UINT MaxDeviation;
9969 UINT MapSourcePreferenceRanking;
9970 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
9971 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
9972 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
9973
9974typedef
9975enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
9976 {
9977 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0,
9978 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
9979 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
9980 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
9981 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
9982 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
9983 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
9984 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED = ( ( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED ) | D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED )
9985 } D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
9986
9987DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )
9988typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
9989 {
9990 UINT NodeIndex;
9991 D3D12_VIDEO_ENCODER_CODEC Codec;
9992 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
9993 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
9994 DXGI_FORMAT InputFormat;
9995 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
9996 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
9997 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
9998 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
9999 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10000 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10001 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10002 UINT Pow2DownscaleFactor;
10003 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10004 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
10005
10006typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
10007 {
10008 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
10009 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
10010
10011typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
10012 {
10013 UINT MaxSubregionsNumber;
10014 UINT MaxIntraRefreshFrameDuration;
10015 UINT SubregionBlockPixelsSize;
10016 UINT QPMapRegionPixelsSize;
10017 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
10018 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
10019 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
10020 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
10021 } D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
10022
10023typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
10024 {
10025 BOOL Enabled;
10026 UINT Pow2DownscaleFactor;
10027 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
10028
10029typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
10030 {
10031 UINT NodeIndex;
10032 D3D12_VIDEO_ENCODER_CODEC Codec;
10033 DXGI_FORMAT InputFormat;
10034 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10035 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
10036 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
10037 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
10038 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
10039 UINT ResolutionsListCount;
10040 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC *pResolutionList;
10041 UINT MaxReferenceFramesInDPB;
10042 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
10043 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
10044 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
10045 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
10046 _Field_size_full_(ResolutionsListCount) D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 *pResolutionDependentSupport;
10047 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
10048 UINT MaxQualityVsSpeed;
10049 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
10050 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
10051 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
10052 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
10053 } D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
10054
10055typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
10056 {
10057 BOOL FullFrameIdentical;
10058 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10059 UINT NumDirtyRects;
10060 _Field_size_full_(NumDirtyRects) RECT *pDirtyRects;
10061 UINT SourceDPBFrameReference;
10062 } D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
10063
10064typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
10065 {
10066 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10067 union
10068 {
10069 ID3D12Resource *pOpaqueLayoutBuffer;
10070 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO *pCPUBuffer;
10071 } ;
10072 } D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
10073
10074typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
10075 {
10076 ID3D12Resource *pOpaqueQuantizationMap;
10077 } D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
10078
10079typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
10080 {
10081 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
10082 UINT SearchDeviationLimit;
10083 } D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
10084
10085typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
10086 {
10087 POINT SourcePoint;
10088 RECT DestRect;
10089 } D3D12_VIDEO_ENCODER_MOVE_RECT;
10090
10091typedef
10092enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
10093 {
10094 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0,
10095 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1
10096 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
10097
10098typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
10099 {
10100 UINT NumMoveRegions;
10101 _Field_size_full_(NumMoveRegions) D3D12_VIDEO_ENCODER_MOVE_RECT *pMoveRegions;
10102 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10103 UINT SourceDPBFrameReference;
10104 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10105 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
10106 } D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
10107
10108typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
10109 {
10110 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
10111 union
10112 {
10113 ID3D12Resource *pOpaqueLayoutBuffer;
10114 D3D12_VIDEO_ENCODER_MOVEREGION_INFO *pCPUBuffer;
10115 } ;
10116 } D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
10117
10118typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
10119 {
10120 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
10121 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
10122 UINT slice_pic_parameter_set_id;
10123 UINT PictureOrderCountNumber;
10124 UINT TemporalLayerIndex;
10125 UINT List0ReferenceFramesCount;
10126 _Field_size_full_(List0ReferenceFramesCount) UINT *pList0ReferenceFrames;
10127 UINT List1ReferenceFramesCount;
10128 _Field_size_full_(List1ReferenceFramesCount) UINT *pList1ReferenceFrames;
10129 UINT ReferenceFramesReconPictureDescriptorsCount;
10130 _Field_size_full_(ReferenceFramesReconPictureDescriptorsCount) D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC *pReferenceFramesReconPictureDescriptors;
10131 UINT List0RefPicModificationsCount;
10132 _Field_size_full_(List0RefPicModificationsCount) UINT *pList0RefPicModifications;
10133 UINT List1RefPicModificationsCount;
10134 _Field_size_full_(List1RefPicModificationsCount) UINT *pList1RefPicModifications;
10135 UINT QPMapValuesCount;
10136 _Field_size_full_(QPMapValuesCount) INT8 *pRateControlQPMap;
10137 UCHAR diff_cu_chroma_qp_offset_depth;
10138 UCHAR log2_sao_offset_scale_luma;
10139 UCHAR log2_sao_offset_scale_chroma;
10140 UCHAR log2_max_transform_skip_block_size_minus2;
10141 UCHAR chroma_qp_offset_list_len_minus1;
10142 CHAR cb_qp_offset_list[ 6 ];
10143 CHAR cr_qp_offset_list[ 6 ];
10144 UINT num_ref_idx_l0_active_minus1;
10145 UINT num_ref_idx_l1_active_minus1;
10146 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
10147
10148typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
10149 {
10150 UINT DataSize;
10151 union
10152 {
10153 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 *pH264PicData;
10154 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2 *pHEVCPicData;
10155 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA *pAV1PicData;
10156 } ;
10157 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
10158
10159typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
10160 {
10161 ID3D12Resource *pDownscaledFrame;
10162 UINT64 Subresource;
10163 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
10164 } D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
10165
10166typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
10167 {
10168 UINT IntraRefreshFrameIndex;
10169 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
10170 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
10171 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
10172 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
10173 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
10174 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
10175 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
10176 } D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
10177
10178typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
10179 {
10180 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
10181 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
10182 ID3D12Resource *pInputFrame;
10183 UINT InputFrameSubresource;
10184 UINT CurrentFrameBitstreamMetadataSize;
10185 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10186 } D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
10187
10188typedef
10189enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
10190 {
10191 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
10192 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1
10193 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
10194
10195typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
10196 {
10197 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
10198 UINT ExpectedSubregionCount;
10199 UINT64 *pSubregionBitstreamsBaseOffsets;
10200 ID3D12Resource **ppSubregionBitstreams;
10201 ID3D12Resource **ppSubregionSizes;
10202 ID3D12Resource **ppSubregionOffsets;
10203 ID3D12Fence **ppSubregionFences;
10204 UINT64 *pSubregionFenceValues;
10205 } D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
10206
10207typedef
10208enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
10209 {
10210 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
10211 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1
10212 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
10213
10214typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
10215 {
10216 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
10217 union
10218 {
10219 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
10220 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
10221 } ;
10222 } D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
10223
10224typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
10225 {
10226 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
10227 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
10228 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
10229 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
10230 } D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
10231
10232typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
10233 {
10234 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
10235 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
10236 DXGI_FORMAT EncoderInputFormat;
10237 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
10238 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
10239 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
10240 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
10241 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
10242
10243typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
10244 {
10245 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
10246 ID3D12Resource *pOutputQPMap;
10247 ID3D12Resource *pOutputSATDMap;
10248 ID3D12Resource *pOutputBitAllocationMap;
10249 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
10250 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
10251 } D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
10252
10253typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
10254 {
10255 ID3D12Resource *pQuantizationMap;
10256 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
10257
10258typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
10259 {
10260 BOOL FullFrameIdentical;
10261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
10262 ID3D12Resource *pDirtyRegionsMap;
10263 UINT SourceDPBFrameReference;
10264 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
10265
10266typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
10267 {
10268 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
10269 UINT NumHintsPerPixel;
10270 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMaps;
10271 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsSubresources;
10272 _Field_size_full_(NumHintsPerPixel) ID3D12Resource **ppMotionVectorMapsMetadata;
10273 _Field_size_full_(NumHintsPerPixel) UINT *pMotionVectorMapsMetadataSubresources;
10274 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
10275 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
10276 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
10277
10278typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
10279 {
10280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
10281 union
10282 {
10283 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
10284 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
10285 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
10286 } ;
10287 } D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
10288
10289typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
10290 {
10291 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
10292 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
10293 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
10294
10295typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
10296 {
10297 ID3D12Resource *pOpaqueLayoutBuffer;
10298 } D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
10299
10300
10301
10302extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_c_ifspec;
10303extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0029_v0_0_s_ifspec;
10304
10305#ifndef __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10306#define __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__
10307
10308/* interface ID3D12VideoEncodeCommandList4 */
10309/* [unique][local][object][uuid] */
10310
10311
10312EXTERN_C const IID IID_ID3D12VideoEncodeCommandList4;
10313
10314#if defined(__cplusplus) && !defined(CINTERFACE)
10315
10316 MIDL_INTERFACE("69aeb5b7-55f2-4012-8b73-3a88d65a204c")
10317 ID3D12VideoEncodeCommandList4 : public ID3D12VideoEncodeCommandList3
10318 {
10319 public:
10320 virtual void STDMETHODCALLTYPE EncodeFrame1(
10321 _In_ ID3D12VideoEncoder *pEncoder,
10322 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10323 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10324 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10325
10326 virtual void STDMETHODCALLTYPE ResolveEncoderOutputMetadata1(
10327 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10328 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments) = 0;
10329
10330 virtual void STDMETHODCALLTYPE ResolveInputParamLayout(
10331 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10332 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments) = 0;
10333
10334 };
10335
10336
10337#else /* C style interface */
10338
10339 typedef struct ID3D12VideoEncodeCommandList4Vtbl
10340 {
10341 BEGIN_INTERFACE
10342
10343 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
10344 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
10345 ID3D12VideoEncodeCommandList4 * This,
10346 REFIID riid,
10347 _COM_Outptr_ void **ppvObject);
10348
10349 DECLSPEC_XFGVIRT(IUnknown, AddRef)
10350 ULONG ( STDMETHODCALLTYPE *AddRef )(
10351 ID3D12VideoEncodeCommandList4 * This);
10352
10353 DECLSPEC_XFGVIRT(IUnknown, Release)
10354 ULONG ( STDMETHODCALLTYPE *Release )(
10355 ID3D12VideoEncodeCommandList4 * This);
10356
10357 DECLSPEC_XFGVIRT(ID3D12Object, GetPrivateData)
10358 HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
10359 ID3D12VideoEncodeCommandList4 * This,
10360 _In_ REFGUID guid,
10361 _Inout_ UINT *pDataSize,
10362 _Out_writes_bytes_opt_( *pDataSize ) void *pData);
10363
10364 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateData)
10365 HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
10366 ID3D12VideoEncodeCommandList4 * This,
10367 _In_ REFGUID guid,
10368 _In_ UINT DataSize,
10369 _In_reads_bytes_opt_( DataSize ) const void *pData);
10370
10371 DECLSPEC_XFGVIRT(ID3D12Object, SetPrivateDataInterface)
10372 HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
10373 ID3D12VideoEncodeCommandList4 * This,
10374 _In_ REFGUID guid,
10375 _In_opt_ const IUnknown *pData);
10376
10377 DECLSPEC_XFGVIRT(ID3D12Object, SetName)
10378 HRESULT ( STDMETHODCALLTYPE *SetName )(
10379 ID3D12VideoEncodeCommandList4 * This,
10380 _In_z_ LPCWSTR Name);
10381
10382 DECLSPEC_XFGVIRT(ID3D12DeviceChild, GetDevice)
10383 HRESULT ( STDMETHODCALLTYPE *GetDevice )(
10384 ID3D12VideoEncodeCommandList4 * This,
10385 REFIID riid,
10386 _COM_Outptr_opt_ void **ppvDevice);
10387
10388 DECLSPEC_XFGVIRT(ID3D12CommandList, GetType)
10389 D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
10390 ID3D12VideoEncodeCommandList4 * This);
10391
10392 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Close)
10393 HRESULT ( STDMETHODCALLTYPE *Close )(
10394 ID3D12VideoEncodeCommandList4 * This);
10395
10396 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, Reset)
10397 HRESULT ( STDMETHODCALLTYPE *Reset )(
10398 ID3D12VideoEncodeCommandList4 * This,
10399 _In_ ID3D12CommandAllocator *pAllocator);
10400
10401 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ClearState)
10402 void ( STDMETHODCALLTYPE *ClearState )(
10403 ID3D12VideoEncodeCommandList4 * This);
10404
10405 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResourceBarrier)
10406 void ( STDMETHODCALLTYPE *ResourceBarrier )(
10407 ID3D12VideoEncodeCommandList4 * This,
10408 _In_ UINT NumBarriers,
10409 _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
10410
10411 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, DiscardResource)
10412 void ( STDMETHODCALLTYPE *DiscardResource )(
10413 ID3D12VideoEncodeCommandList4 * This,
10414 _In_ ID3D12Resource *pResource,
10415 _In_opt_ const D3D12_DISCARD_REGION *pRegion);
10416
10417 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginQuery)
10418 void ( STDMETHODCALLTYPE *BeginQuery )(
10419 ID3D12VideoEncodeCommandList4 * This,
10420 _In_ ID3D12QueryHeap *pQueryHeap,
10421 _In_ D3D12_QUERY_TYPE Type,
10422 _In_ UINT Index);
10423
10424 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndQuery)
10425 void ( STDMETHODCALLTYPE *EndQuery )(
10426 ID3D12VideoEncodeCommandList4 * This,
10427 _In_ ID3D12QueryHeap *pQueryHeap,
10428 _In_ D3D12_QUERY_TYPE Type,
10429 _In_ UINT Index);
10430
10431 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveQueryData)
10432 void ( STDMETHODCALLTYPE *ResolveQueryData )(
10433 ID3D12VideoEncodeCommandList4 * This,
10434 _In_ ID3D12QueryHeap *pQueryHeap,
10435 _In_ D3D12_QUERY_TYPE Type,
10436 _In_ UINT StartIndex,
10437 _In_ UINT NumQueries,
10438 _In_ ID3D12Resource *pDestinationBuffer,
10439 _In_ UINT64 AlignedDestinationBufferOffset);
10440
10441 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetPredication)
10442 void ( STDMETHODCALLTYPE *SetPredication )(
10443 ID3D12VideoEncodeCommandList4 * This,
10444 _In_opt_ ID3D12Resource *pBuffer,
10445 _In_ UINT64 AlignedBufferOffset,
10446 _In_ D3D12_PREDICATION_OP Operation);
10447
10448 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetMarker)
10449 void ( STDMETHODCALLTYPE *SetMarker )(
10450 ID3D12VideoEncodeCommandList4 * This,
10451 UINT Metadata,
10452 _In_reads_bytes_opt_(Size) const void *pData,
10453 UINT Size);
10454
10455 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, BeginEvent)
10456 void ( STDMETHODCALLTYPE *BeginEvent )(
10457 ID3D12VideoEncodeCommandList4 * This,
10458 UINT Metadata,
10459 _In_reads_bytes_opt_(Size) const void *pData,
10460 UINT Size);
10461
10462 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EndEvent)
10463 void ( STDMETHODCALLTYPE *EndEvent )(
10464 ID3D12VideoEncodeCommandList4 * This);
10465
10466 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, EstimateMotion)
10467 void ( STDMETHODCALLTYPE *EstimateMotion )(
10468 ID3D12VideoEncodeCommandList4 * This,
10469 _In_ ID3D12VideoMotionEstimator *pMotionEstimator,
10470 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT *pOutputArguments,
10471 _In_ const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT *pInputArguments);
10472
10473 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, ResolveMotionVectorHeap)
10474 void ( STDMETHODCALLTYPE *ResolveMotionVectorHeap )(
10475 ID3D12VideoEncodeCommandList4 * This,
10476 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT *pOutputArguments,
10477 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT *pInputArguments);
10478
10479 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, WriteBufferImmediate)
10480 void ( STDMETHODCALLTYPE *WriteBufferImmediate )(
10481 ID3D12VideoEncodeCommandList4 * This,
10482 UINT Count,
10483 _In_reads_(Count) const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
10484 _In_reads_opt_(Count) const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes);
10485
10486 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList, SetProtectedResourceSession)
10487 void ( STDMETHODCALLTYPE *SetProtectedResourceSession )(
10488 ID3D12VideoEncodeCommandList4 * This,
10489 _In_opt_ ID3D12ProtectedResourceSession *pProtectedResourceSession);
10490
10491 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, InitializeExtensionCommand)
10492 void ( STDMETHODCALLTYPE *InitializeExtensionCommand )(
10493 ID3D12VideoEncodeCommandList4 * This,
10494 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10495 _In_reads_bytes_(InitializationParametersSizeInBytes) const void *pInitializationParameters,
10496 SIZE_T InitializationParametersSizeInBytes);
10497
10498 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList1, ExecuteExtensionCommand)
10499 void ( STDMETHODCALLTYPE *ExecuteExtensionCommand )(
10500 ID3D12VideoEncodeCommandList4 * This,
10501 _In_ ID3D12VideoExtensionCommand *pExtensionCommand,
10502 _In_reads_bytes_(ExecutionParametersSizeInBytes) const void *pExecutionParameters,
10503 SIZE_T ExecutionParametersSizeInBytes);
10504
10505 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, EncodeFrame)
10506 void ( STDMETHODCALLTYPE *EncodeFrame )(
10507 ID3D12VideoEncodeCommandList4 * This,
10508 _In_ ID3D12VideoEncoder *pEncoder,
10509 _In_ ID3D12VideoEncoderHeap *pHeap,
10510 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
10511 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
10512
10513 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList2, ResolveEncoderOutputMetadata)
10514 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata )(
10515 ID3D12VideoEncodeCommandList4 * This,
10516 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS *pInputArguments,
10517 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS *pOutputArguments);
10518
10519 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList3, Barrier)
10520 void ( STDMETHODCALLTYPE *Barrier )(
10521 ID3D12VideoEncodeCommandList4 * This,
10522 UINT32 NumBarrierGroups,
10523 _In_reads_(NumBarrierGroups) const D3D12_BARRIER_GROUP *pBarrierGroups);
10524
10525 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, EncodeFrame1)
10526 void ( STDMETHODCALLTYPE *EncodeFrame1 )(
10527 ID3D12VideoEncodeCommandList4 * This,
10528 _In_ ID3D12VideoEncoder *pEncoder,
10529 _In_ ID3D12VideoEncoderHeap1 *pHeap,
10530 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1 *pInputArguments,
10531 _In_ const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1 *pOutputArguments);
10532
10533 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveEncoderOutputMetadata1)
10534 void ( STDMETHODCALLTYPE *ResolveEncoderOutputMetadata1 )(
10535 ID3D12VideoEncodeCommandList4 * This,
10536 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1 *pInputArguments,
10537 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1 *pOutputArguments);
10538
10539 DECLSPEC_XFGVIRT(ID3D12VideoEncodeCommandList4, ResolveInputParamLayout)
10540 void ( STDMETHODCALLTYPE *ResolveInputParamLayout )(
10541 ID3D12VideoEncodeCommandList4 * This,
10542 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS *pInputArguments,
10543 _In_ const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS *pOutputArguments);
10544
10545 END_INTERFACE
10546 } ID3D12VideoEncodeCommandList4Vtbl;
10547
10548 interface ID3D12VideoEncodeCommandList4
10549 {
10550 CONST_VTBL struct ID3D12VideoEncodeCommandList4Vtbl *lpVtbl;
10551 };
10552
10553
10554
10555#ifdef COBJMACROS
10556
10557
10558#define ID3D12VideoEncodeCommandList4_QueryInterface(This,riid,ppvObject) \
10559 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
10560
10561#define ID3D12VideoEncodeCommandList4_AddRef(This) \
10562 ( (This)->lpVtbl -> AddRef(This) )
10563
10564#define ID3D12VideoEncodeCommandList4_Release(This) \
10565 ( (This)->lpVtbl -> Release(This) )
10566
10567
10568#define ID3D12VideoEncodeCommandList4_GetPrivateData(This,guid,pDataSize,pData) \
10569 ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
10570
10571#define ID3D12VideoEncodeCommandList4_SetPrivateData(This,guid,DataSize,pData) \
10572 ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
10573
10574#define ID3D12VideoEncodeCommandList4_SetPrivateDataInterface(This,guid,pData) \
10575 ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
10576
10577#define ID3D12VideoEncodeCommandList4_SetName(This,Name) \
10578 ( (This)->lpVtbl -> SetName(This,Name) )
10579
10580
10581#define ID3D12VideoEncodeCommandList4_GetDevice(This,riid,ppvDevice) \
10582 ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
10583
10584
10585#define ID3D12VideoEncodeCommandList4_GetType(This) \
10586 ( (This)->lpVtbl -> GetType(This) )
10587
10588
10589#define ID3D12VideoEncodeCommandList4_Close(This) \
10590 ( (This)->lpVtbl -> Close(This) )
10591
10592#define ID3D12VideoEncodeCommandList4_Reset(This,pAllocator) \
10593 ( (This)->lpVtbl -> Reset(This,pAllocator) )
10594
10595#define ID3D12VideoEncodeCommandList4_ClearState(This) \
10596 ( (This)->lpVtbl -> ClearState(This) )
10597
10598#define ID3D12VideoEncodeCommandList4_ResourceBarrier(This,NumBarriers,pBarriers) \
10599 ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
10600
10601#define ID3D12VideoEncodeCommandList4_DiscardResource(This,pResource,pRegion) \
10602 ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
10603
10604#define ID3D12VideoEncodeCommandList4_BeginQuery(This,pQueryHeap,Type,Index) \
10605 ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
10606
10607#define ID3D12VideoEncodeCommandList4_EndQuery(This,pQueryHeap,Type,Index) \
10608 ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
10609
10610#define ID3D12VideoEncodeCommandList4_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
10611 ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
10612
10613#define ID3D12VideoEncodeCommandList4_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
10614 ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
10615
10616#define ID3D12VideoEncodeCommandList4_SetMarker(This,Metadata,pData,Size) \
10617 ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
10618
10619#define ID3D12VideoEncodeCommandList4_BeginEvent(This,Metadata,pData,Size) \
10620 ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
10621
10622#define ID3D12VideoEncodeCommandList4_EndEvent(This) \
10623 ( (This)->lpVtbl -> EndEvent(This) )
10624
10625#define ID3D12VideoEncodeCommandList4_EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) \
10626 ( (This)->lpVtbl -> EstimateMotion(This,pMotionEstimator,pOutputArguments,pInputArguments) )
10627
10628#define ID3D12VideoEncodeCommandList4_ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) \
10629 ( (This)->lpVtbl -> ResolveMotionVectorHeap(This,pOutputArguments,pInputArguments) )
10630
10631#define ID3D12VideoEncodeCommandList4_WriteBufferImmediate(This,Count,pParams,pModes) \
10632 ( (This)->lpVtbl -> WriteBufferImmediate(This,Count,pParams,pModes) )
10633
10634#define ID3D12VideoEncodeCommandList4_SetProtectedResourceSession(This,pProtectedResourceSession) \
10635 ( (This)->lpVtbl -> SetProtectedResourceSession(This,pProtectedResourceSession) )
10636
10637
10638#define ID3D12VideoEncodeCommandList4_InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) \
10639 ( (This)->lpVtbl -> InitializeExtensionCommand(This,pExtensionCommand,pInitializationParameters,InitializationParametersSizeInBytes) )
10640
10641#define ID3D12VideoEncodeCommandList4_ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) \
10642 ( (This)->lpVtbl -> ExecuteExtensionCommand(This,pExtensionCommand,pExecutionParameters,ExecutionParametersSizeInBytes) )
10643
10644
10645#define ID3D12VideoEncodeCommandList4_EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10646 ( (This)->lpVtbl -> EncodeFrame(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10647
10648#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) \
10649 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata(This,pInputArguments,pOutputArguments) )
10650
10651
10652#define ID3D12VideoEncodeCommandList4_Barrier(This,NumBarrierGroups,pBarrierGroups) \
10653 ( (This)->lpVtbl -> Barrier(This,NumBarrierGroups,pBarrierGroups) )
10654
10655
10656#define ID3D12VideoEncodeCommandList4_EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) \
10657 ( (This)->lpVtbl -> EncodeFrame1(This,pEncoder,pHeap,pInputArguments,pOutputArguments) )
10658
10659#define ID3D12VideoEncodeCommandList4_ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) \
10660 ( (This)->lpVtbl -> ResolveEncoderOutputMetadata1(This,pInputArguments,pOutputArguments) )
10661
10662#define ID3D12VideoEncodeCommandList4_ResolveInputParamLayout(This,pInputArguments,pOutputArguments) \
10663 ( (This)->lpVtbl -> ResolveInputParamLayout(This,pInputArguments,pOutputArguments) )
10664
10665#endif /* COBJMACROS */
10666
10667
10668#endif /* C style interface */
10669
10670
10671
10672
10673#endif /* __ID3D12VideoEncodeCommandList4_INTERFACE_DEFINED__ */
10674
10675
10676/* interface __MIDL_itf_d3d12video_0000_0030 */
10677/* [local] */
10678
10679#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
10680#pragma endregion
10681DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
10682DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
10683DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
10684DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
10685DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
10686DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
10687DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
10688DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
10689DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
10690DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
10691DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
10692DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
10693DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
10694DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
10695DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
10696DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
10697DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
10698DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
10699DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
10700DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
10701DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
10702DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
10703DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
10704DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
10705DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
10706DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
10707DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
10708DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
10709DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
10710DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
10711
10712
10713extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_c_ifspec;
10714extern RPC_IF_HANDLE __MIDL_itf_d3d12video_0000_0030_v0_0_s_ifspec;
10715
10716/* Additional Prototypes for ALL interfaces */
10717
10718/* end of Additional Prototypes */
10719
10720#ifdef __cplusplus
10721}
10722#endif
10723
10724#endif
10725
10726
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl
new file mode 100644
index 0000000..b2c930b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3d12video.idl
@@ -0,0 +1,3818 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10import "dxgicommon.idl";
11import "d3d12.idl";
12
13cpp_quote("#include <winapifamily.h>")
14
15#pragma region App Family
16cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
17
18typedef enum D3D12_VIDEO_FIELD_TYPE
19{
20 D3D12_VIDEO_FIELD_TYPE_NONE = 0,
21 D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
22 D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
23} D3D12_VIDEO_FIELD_TYPE;
24
25typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
26{
27 D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
28 D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
29 D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
30 D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
31 D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
32} D3D12_VIDEO_FRAME_STEREO_FORMAT;
33
34typedef struct D3D12_VIDEO_FORMAT
35{
36 DXGI_FORMAT Format;
37 DXGI_COLOR_SPACE_TYPE ColorSpace;
38} D3D12_VIDEO_FORMAT;
39
40typedef struct D3D12_VIDEO_SAMPLE
41{
42 UINT Width;
43 UINT Height;
44 D3D12_VIDEO_FORMAT Format;
45} D3D12_VIDEO_SAMPLE;
46
47typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
48{
49 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
50 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
51} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
52
53typedef enum D3D12_FEATURE_VIDEO
54{
55 D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
56 D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
57 D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
58 D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
59 D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
60 D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
61 D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
62 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
63 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
64 D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
65 D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
66 D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
67 D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,
68 D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,
69 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20,
70 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
71 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22,
72 D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23,
73 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
74 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25,
75 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26,
76 D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27,
77 D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
78 D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
79 D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
80 D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
81 D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
82 D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
83 D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
84 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
85 D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
86 D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
87 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
88 D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
89 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
90 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
91 D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
92 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
93 D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
94 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
95 D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
96 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
97 D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1 = 48,
98 D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT = 49,
99 D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT = 50,
100 D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS = 51,
101 D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH = 52,
102 D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2 = 55,
103 D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE1 = 56,
104 D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS = 57,
105
106} D3D12_FEATURE_VIDEO;
107
108typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
109{
110 D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
111} D3D12_BITSTREAM_ENCRYPTION_TYPE;
112
113typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
114{
115 GUID DecodeProfile;
116 D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
117 D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
118} D3D12_VIDEO_DECODE_CONFIGURATION;
119
120typedef struct D3D12_VIDEO_DECODER_DESC
121{
122 UINT NodeMask;
123 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
124} D3D12_VIDEO_DECODER_DESC;
125
126typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
127{
128 UINT NodeMask;
129 D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
130 UINT DecodeWidth;
131 UINT DecodeHeight;
132 DXGI_FORMAT Format;
133 DXGI_RATIONAL FrameRate;
134 UINT BitRate;
135 UINT MaxDecodePictureBufferCount;
136} D3D12_VIDEO_DECODER_HEAP_DESC;
137
138typedef struct D3D12_VIDEO_SIZE_RANGE
139{
140 UINT MaxWidth;
141 UINT MaxHeight;
142 UINT MinWidth;
143 UINT MinHeight;
144} D3D12_VIDEO_SIZE_RANGE;
145
146typedef enum D3D12_VIDEO_PROCESS_FILTER
147{
148 D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
149 D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
150 D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
151 D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
152 D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
153 D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
154 D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
155 D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
156} D3D12_VIDEO_PROCESS_FILTER;
157
158typedef enum D3D12_VIDEO_PROCESS_FILTER_FLAGS
159{
160 D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
161 D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
162 D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
163 D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
164 D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
165 D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
166 D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
167 D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
168 D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
169
170} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
171cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )")
172
173typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
174{
175 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
176 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
177 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
178
179} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
180cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )")
181
182typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
183{
184 BOOL Enable;
185 FLOAT Alpha;
186} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
187
188typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
189{
190 BOOL Enable;
191 FLOAT Lower;
192 FLOAT Upper;
193} D3D12_VIDEO_PROCESS_LUMA_KEY;
194
195typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
196{
197 DXGI_FORMAT Format;
198 DXGI_COLOR_SPACE_TYPE ColorSpace;
199 DXGI_RATIONAL SourceAspectRatio;
200 DXGI_RATIONAL DestinationAspectRatio;
201 DXGI_RATIONAL FrameRate;
202 D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
203 D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
204 BOOL EnableOrientation;
205 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
206 D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
207 D3D12_VIDEO_FIELD_TYPE FieldType;
208 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
209 BOOL EnableAlphaBlending;
210 D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
211 UINT NumPastFrames;
212 UINT NumFutureFrames;
213 BOOL EnableAutoProcessing;
214} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
215
216typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
217{
218 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
219 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
220 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
221 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
222} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
223
224typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
225{
226 DXGI_FORMAT Format;
227 DXGI_COLOR_SPACE_TYPE ColorSpace;
228 D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
229 UINT AlphaFillModeSourceStreamIndex;
230 FLOAT BackgroundColor[4];
231 DXGI_RATIONAL FrameRate;
232 BOOL EnableStereo;
233} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
234
235[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
236interface ID3D12VideoDecoderHeap
237 : ID3D12Pageable
238{
239 D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
240}
241
242[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
243interface ID3D12VideoDevice
244 : IUnknown
245{
246 HRESULT CheckFeatureSupport(
247 D3D12_FEATURE_VIDEO FeatureVideo,
248 [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
249 UINT FeatureSupportDataSize
250 );
251
252 HRESULT CreateVideoDecoder(
253 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
254 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder,
255 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
256 );
257
258 HRESULT CreateVideoDecoderHeap(
259 [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
260 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap,
261 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
262 );
263
264 HRESULT CreateVideoProcessor(
265 UINT NodeMask,
266 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
267 UINT NumInputStreamDescs,
268 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
269 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor,
270 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
271 );
272}
273
274[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
275interface ID3D12VideoDecoder
276 : ID3D12Pageable
277{
278 D3D12_VIDEO_DECODER_DESC GetDesc();
279}
280
281typedef enum D3D12_VIDEO_DECODE_TIER
282{
283 D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
284 D3D12_VIDEO_DECODE_TIER_1 = 1,
285 D3D12_VIDEO_DECODE_TIER_2 = 2,
286 D3D12_VIDEO_DECODE_TIER_3 = 3,
287} D3D12_VIDEO_DECODE_TIER;
288
289typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
290{
291 D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
292 D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
293
294} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
295cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )")
296
297typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
298{
299 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE = 0x0,
300 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED = 0x1,
301 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED = 0x2,
302 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED = 0x4,
303 D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME = 0x8,
304
305} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
306cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )")
307
308typedef enum D3D12_VIDEO_DECODE_STATUS
309{
310 D3D12_VIDEO_DECODE_STATUS_OK = 0,
311 D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
312 D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
313 D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
314 D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
315} D3D12_VIDEO_DECODE_STATUS;
316
317typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
318{
319 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
320 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
321 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
322 D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3,
323} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
324
325typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
326{
327 UINT NodeIndex; // input
328 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
329 UINT Width; // input
330 UINT Height; // input
331 DXGI_FORMAT DecodeFormat; // input
332 DXGI_RATIONAL FrameRate; // input
333 UINT BitRate; // input
334 D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags; // output
335 D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
336 D3D12_VIDEO_DECODE_TIER DecodeTier; // output
337} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
338
339typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
340{
341 UINT NodeIndex; // input
342 UINT ProfileCount; // output
343} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
344
345typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
346{
347 UINT NodeIndex; // input
348 UINT ProfileCount; // input
349 [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles; // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
350} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
351
352typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
353{
354 UINT NodeIndex; // input
355 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
356 UINT FormatCount; // output
357} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
358
359typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
360{
361 UINT NodeIndex; // input
362 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
363 UINT FormatCount; // input
364 [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats; // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
365} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
366
367typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
368{
369 BOOL IOCoherent;
370} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
371
372typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
373{
374 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
375 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1,
376 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
377
378 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
379 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1,
380 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
381
382 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
383} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT;
384
385typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
386{
387 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
388
389 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
390 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U),
391 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
392
393 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
394 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G),
395 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
396
397 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
398} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS;
399cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )")
400
401typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
402{
403 UINT NodeIndex; // in
404 GUID DecodeProfile; // in
405 UINT Width; // in
406 UINT Height; // in
407 DXGI_FORMAT DecodeFormat; // in
408 D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components; // out
409 UINT BinCount; // out
410 UINT CounterBitDepth; // out
411} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
412
413typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
414{
415 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
416 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
417
418} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
419cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )")
420
421typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
422{
423 D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
424 D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
425 D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
426 D3D12_VIDEO_SCALE_SUPPORT_FLAG_DPB_ENCODER_RESOURCES = 0x4,
427
428} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
429cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )")
430
431typedef struct D3D12_VIDEO_SCALE_SUPPORT
432{
433 D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
434 D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
435} D3D12_VIDEO_SCALE_SUPPORT;
436
437typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
438{
439 UINT NodeIndex; // input
440 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
441 D3D12_VIDEO_SAMPLE DecodeSample; // input
442 D3D12_VIDEO_FORMAT OutputFormat; // input
443 DXGI_RATIONAL FrameRate; // input
444 UINT BitRate; // input
445 D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags; // output
446 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
447} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
448
449typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
450{
451 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
452 UINT64 MemoryPoolL0Size; // output
453 UINT64 MemoryPoolL1Size; // output
454} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
455
456typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
457{
458 UINT NodeMask;
459 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
460 UINT NumInputStreamDescs; // input
461 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
462 UINT64 MemoryPoolL0Size; // output
463 UINT64 MemoryPoolL1Size; // output
464} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
465
466typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
467{
468 UINT64 Status; // see D3D12_VIDEO_DECODE_STATUS
469 UINT64 NumMacroblocksAffected;
470 DXGI_RATIONAL FrameRate;
471 UINT BitRate;
472} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
473
474typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
475{
476 D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
477 UINT Size;
478 [annotation("_Field_size_bytes_full_(Size)")] void *pData;
479} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
480
481typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
482{
483 UINT NumTexture2Ds;
484 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
485 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
486 [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
487} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
488
489typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
490{
491 ID3D12Resource* pBuffer;
492 UINT64 Offset;
493 UINT64 Size;
494} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
495
496typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
497{
498 BOOL Enable;
499 ID3D12Resource* pReferenceTexture2D;
500 UINT ReferenceSubresource;
501 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
502 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
503} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
504
505typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
506{
507 UINT NumFrameArguments;
508 D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
509 D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
510 D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
511 ID3D12VideoDecoderHeap *pHeap;
512} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
513
514typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
515{
516 ID3D12Resource* pOutputTexture2D;
517 UINT OutputSubresource;
518 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
519} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
520
521[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
522interface ID3D12VideoProcessor
523 : ID3D12Pageable
524{
525 UINT GetNodeMask();
526 UINT GetNumInputStreamDescs();
527 HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
528 D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
529}
530
531typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
532{
533 D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
534 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
535 D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
536 D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
537 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
538 D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
539 D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
540 D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
541
542} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
543cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )")
544
545typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
546{
547 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
548 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
549 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
550 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
551 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
552 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
553 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
554 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
555 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
556 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
557
558} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
559cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )")
560
561typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
562{
563 D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
564 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
565 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
566 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
567 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
568 D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
569 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
570 D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
571} D3D12_VIDEO_PROCESS_ORIENTATION;
572
573typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
574{
575 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
576 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
577 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
578
579} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
580cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )")
581
582typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
583{
584 INT Minimum;
585 INT Maximum;
586 INT Default;
587 FLOAT Multiplier;
588} D3D12_VIDEO_PROCESS_FILTER_RANGE;
589
590typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
591{
592 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
593 D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
594
595} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
596cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )")
597
598typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
599{
600 UINT NodeIndex; // input
601 D3D12_VIDEO_SAMPLE InputSample; // input
602 D3D12_VIDEO_FIELD_TYPE InputFieldType; // input
603 D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat; // input
604 DXGI_RATIONAL InputFrameRate; // input
605 D3D12_VIDEO_FORMAT OutputFormat; // input
606 D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat; // input
607 DXGI_RATIONAL OutputFrameRate; // input
608 D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags; // output
609 D3D12_VIDEO_SCALE_SUPPORT ScaleSupport; // output
610 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // output
611 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport; // output
612 D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport; // output
613 D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport; // output
614 D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS]; // output
615} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
616
617typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
618{
619 UINT NodeIndex; // input
620 UINT MaxInputStreams; // output
621} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
622
623typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
624{
625 UINT NodeIndex; // input
626 D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode; // input
627 D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters; // input
628 D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport; // input
629 DXGI_RATIONAL InputFrameRate; // input
630 DXGI_RATIONAL OutputFrameRate; // input
631 BOOL EnableAutoProcessing; // input
632 UINT PastFrames; // output
633 UINT FutureFrames; // output
634} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
635
636typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
637{
638 UINT NumPastFrames;
639 ID3D12Resource **ppPastFrames;
640 UINT *pPastSubresources;
641 UINT NumFutureFrames;
642 ID3D12Resource **ppFutureFrames;
643 UINT *pFutureSubresources;
644} D3D12_VIDEO_PROCESS_REFERENCE_SET;
645
646typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
647{
648 D3D12_RECT SourceRectangle;
649 D3D12_RECT DestinationRectangle;
650 D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
651} D3D12_VIDEO_PROCESS_TRANSFORM;
652
653typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
654{
655 UINT OutputIndex;
656 UINT InputFrameOrField;
657} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
658
659typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
660{
661 ID3D12Resource *pTexture2D;
662 UINT Subresource;
663 D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
664} D3D12_VIDEO_PROCESS_INPUT_STREAM;
665
666typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
667{
668 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
669 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
670 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
671 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
672 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
673 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
674} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
675
676typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
677{
678 ID3D12Resource* pTexture2D;
679 UINT Subresource;
680} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
681
682typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
683{
684 D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
685 D3D12_RECT TargetRectangle;
686} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
687
688[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
689interface ID3D12VideoDecodeCommandList
690 : ID3D12CommandList
691{
692 HRESULT Close();
693
694 HRESULT Reset(
695 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
696 );
697
698 void ClearState();
699
700 void ResourceBarrier(
701 [annotation("_In_")] UINT NumBarriers,
702 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
703 );
704
705 void DiscardResource(
706 [annotation("_In_")] ID3D12Resource* pResource,
707 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
708 );
709
710 void BeginQuery(
711 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
712 [annotation("_In_")] D3D12_QUERY_TYPE Type,
713 [annotation("_In_")] UINT Index
714 );
715
716 void EndQuery(
717 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
718 [annotation("_In_")] D3D12_QUERY_TYPE Type,
719 [annotation("_In_")] UINT Index
720 );
721
722 void ResolveQueryData(
723 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
724 [annotation("_In_")] D3D12_QUERY_TYPE Type,
725 [annotation("_In_")] UINT StartIndex,
726 [annotation("_In_")] UINT NumQueries,
727 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
728 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
729 );
730
731 void SetPredication(
732 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
733 [annotation("_In_")] UINT64 AlignedBufferOffset,
734 [annotation("_In_")] D3D12_PREDICATION_OP Operation
735 );
736
737 void SetMarker(
738 UINT Metadata,
739 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
740 UINT Size);
741
742 void BeginEvent(
743 UINT Metadata,
744 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
745 UINT Size);
746
747 void EndEvent();
748
749 void DecodeFrame(
750 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
751 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
752 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
753 );
754
755 void WriteBufferImmediate(
756 UINT Count,
757 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
758 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
759 );
760}
761
762[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
763interface ID3D12VideoProcessCommandList
764 : ID3D12CommandList
765{
766 HRESULT Close();
767
768 HRESULT Reset(
769 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
770 );
771
772 void ClearState();
773
774 void ResourceBarrier(
775 [annotation("_In_")] UINT NumBarriers,
776 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
777 );
778
779 void DiscardResource(
780 [annotation("_In_")] ID3D12Resource* pResource,
781 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
782 );
783
784 void BeginQuery(
785 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
786 [annotation("_In_")] D3D12_QUERY_TYPE Type,
787 [annotation("_In_")] UINT Index
788 );
789
790 void EndQuery(
791 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
792 [annotation("_In_")] D3D12_QUERY_TYPE Type,
793 [annotation("_In_")] UINT Index
794 );
795
796 void ResolveQueryData(
797 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
798 [annotation("_In_")] D3D12_QUERY_TYPE Type,
799 [annotation("_In_")] UINT StartIndex,
800 [annotation("_In_")] UINT NumQueries,
801 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
802 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
803 );
804
805 void SetPredication(
806 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
807 [annotation("_In_")] UINT64 AlignedBufferOffset,
808 [annotation("_In_")] D3D12_PREDICATION_OP Operation
809 );
810
811 void SetMarker(
812 UINT Metadata,
813 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
814 UINT Size);
815
816 void BeginEvent(
817 UINT Metadata,
818 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
819 UINT Size);
820
821 void EndEvent();
822
823 void ProcessFrames(
824 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
825 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
826 UINT NumInputStreams,
827 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
828 );
829
830 void WriteBufferImmediate(
831 UINT Count,
832 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
833 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
834 );
835}
836
837typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
838{
839 UINT64 Offset;
840 ID3D12Resource* pBuffer;
841} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
842
843typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
844{
845 BOOL Enable;
846 ID3D12Resource* pReferenceTexture2D;
847 UINT ReferenceSubresource;
848 DXGI_COLOR_SPACE_TYPE OutputColorSpace;
849 DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
850 UINT OutputWidth;
851 UINT OutputHeight;
852} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
853
854typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
855{
856 ID3D12Resource* pOutputTexture2D;
857 UINT OutputSubresource;
858 D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
859 D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
860} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
861
862[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
863interface ID3D12VideoDecodeCommandList1
864 : ID3D12VideoDecodeCommandList
865{
866 void DecodeFrame1(
867 [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
868 [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
869 [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
870 );
871}
872
873typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
874{
875 D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
876 D3D12_VIDEO_PROCESS_TRANSFORM Transform;
877 D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
878 D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
879 INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
880 D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
881 D3D12_VIDEO_FIELD_TYPE FieldType;
882} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
883
884[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
885interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
886{
887 void ProcessFrames1(
888 [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
889 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
890 UINT NumInputStreams,
891 [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
892 );
893}
894
895typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
896{
897 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8 = 0,
898 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16 = 1,
899} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
900
901typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
902{
903 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE = 0,
904 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
905 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16 = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
906
907} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
908cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )" )
909
910typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
911{
912 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL = 0,
913} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
914
915typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
916{
917 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE = 0,
918 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
919
920} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
921cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )" )
922
923// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
924typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
925{
926 UINT NodeIndex; // input
927 BOOL VideoDecodeSupport; // output
928 BOOL VideoProcessSupport; // output
929 BOOL VideoEncodeSupport; // output
930} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
931
932// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
933typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
934{
935 UINT NodeIndex; // input
936 DXGI_FORMAT InputFormat; // input
937 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags; // output
938 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags; // output
939 D3D12_VIDEO_SIZE_RANGE SizeRange; // output
940} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
941
942// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
943typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
944{
945 UINT NodeIndex; // input
946 DXGI_FORMAT InputFormat; // input
947 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize; // input
948 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision; // input
949 D3D12_VIDEO_SIZE_RANGE SizeRange; // input
950 BOOL Protected; // input
951 UINT64 MotionVectorHeapMemoryPoolL0Size; // output
952 UINT64 MotionVectorHeapMemoryPoolL1Size; // output
953 UINT64 MotionEstimatorMemoryPoolL0Size; // output
954 UINT64 MotionEstimatorMemoryPoolL1Size; // output
955} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
956
957typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
958{
959 UINT NodeMask;
960 DXGI_FORMAT InputFormat;
961 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
962 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
963 D3D12_VIDEO_SIZE_RANGE SizeRange;
964
965} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
966
967[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
968interface ID3D12VideoMotionEstimator
969 : ID3D12Pageable
970{
971 D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
972
973 HRESULT GetProtectedResourceSession(
974 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
975 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
976}
977
978typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
979{
980 UINT NodeMask;
981 DXGI_FORMAT InputFormat;
982 D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
983 D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
984 D3D12_VIDEO_SIZE_RANGE SizeRange;
985
986} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
987
988[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
989interface ID3D12VideoMotionVectorHeap
990 : ID3D12Pageable
991{
992 D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
993
994 HRESULT GetProtectedResourceSession(
995 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
996 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
997}
998
999[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
1000interface ID3D12VideoDevice1
1001 : ID3D12VideoDevice
1002{
1003 HRESULT CreateVideoMotionEstimator(
1004 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
1005 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1006 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator,
1007 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
1008 );
1009
1010 HRESULT CreateVideoMotionVectorHeap(
1011 [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
1012 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1013 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap,
1014 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
1015 );
1016}
1017
1018typedef struct D3D12_RESOURCE_COORDINATE
1019{
1020 // Coordinate values below index pixels.
1021 UINT64 X; // Used for buffer, 1D, 2D, 3D
1022 UINT Y; // Used for 2D, 3D
1023 UINT Z; // Used for 3D
1024 UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
1025} D3D12_RESOURCE_COORDINATE;
1026
1027typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
1028{
1029 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1030} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
1031
1032typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
1033{
1034 ID3D12Resource* pInputTexture2D;
1035 UINT InputSubresourceIndex;
1036 ID3D12Resource* pReferenceTexture2D;
1037 UINT ReferenceSubresourceIndex;
1038 ID3D12VideoMotionVectorHeap* pHintMotionVectorHeap;
1039} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
1040
1041typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
1042{
1043 ID3D12Resource* pMotionVectorTexture2D;
1044 D3D12_RESOURCE_COORDINATE MotionVectorCoordinate;
1045} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
1046
1047typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
1048{
1049 ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
1050 UINT PixelWidth;
1051 UINT PixelHeight;
1052} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
1053
1054[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
1055interface ID3D12VideoEncodeCommandList
1056 : ID3D12CommandList
1057{
1058 HRESULT Close();
1059
1060 HRESULT Reset(
1061 [annotation("_In_")] ID3D12CommandAllocator* pAllocator
1062 );
1063
1064 void ClearState();
1065
1066 void ResourceBarrier(
1067 [annotation("_In_")] UINT NumBarriers,
1068 [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
1069 );
1070
1071 void DiscardResource(
1072 [annotation("_In_")] ID3D12Resource* pResource,
1073 [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
1074 );
1075
1076 void BeginQuery(
1077 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1078 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1079 [annotation("_In_")] UINT Index
1080 );
1081
1082 void EndQuery(
1083 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1084 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1085 [annotation("_In_")] UINT Index
1086 );
1087
1088 void ResolveQueryData(
1089 [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
1090 [annotation("_In_")] D3D12_QUERY_TYPE Type,
1091 [annotation("_In_")] UINT StartIndex,
1092 [annotation("_In_")] UINT NumQueries,
1093 [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
1094 [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
1095 );
1096
1097 void SetPredication(
1098 [annotation("_In_opt_")] ID3D12Resource* pBuffer,
1099 [annotation("_In_")] UINT64 AlignedBufferOffset,
1100 [annotation("_In_")] D3D12_PREDICATION_OP Operation
1101 );
1102
1103 void SetMarker(
1104 UINT Metadata,
1105 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1106 UINT Size);
1107
1108 void BeginEvent(
1109 UINT Metadata,
1110 [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
1111 UINT Size);
1112
1113 void EndEvent();
1114
1115 void EstimateMotion(
1116 [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
1117 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
1118 [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
1119 );
1120
1121 void ResolveMotionVectorHeap(
1122 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
1123 const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
1124 );
1125
1126 void WriteBufferImmediate(
1127 UINT Count,
1128 [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
1129 [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
1130 );
1131
1132 void SetProtectedResourceSession(
1133 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1134 );
1135}
1136
1137typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
1138{
1139 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE = 0x0,
1140 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED = 0x1,
1141
1142} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
1143cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )")
1144
1145// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
1146typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
1147{
1148 UINT NodeIndex; // input
1149 D3D12_VIDEO_DECODE_CONFIGURATION Configuration; // input
1150 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1151} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
1152
1153// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
1154typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
1155{
1156 UINT NodeIndex; // input
1157 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1158} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
1159
1160// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1161typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
1162{
1163 UINT NodeIndex; // input
1164 D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags; // output
1165} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
1166
1167//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
1168typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
1169{
1170 D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc; // input
1171 BOOL Protected; // input
1172 UINT64 MemoryPoolL0Size; // output
1173 UINT64 MemoryPoolL1Size; // output
1174} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
1175
1176// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
1177typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
1178{
1179 UINT NodeMask;
1180 const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc; // input
1181 UINT NumInputStreamDescs; // input
1182 const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs; // input
1183 BOOL Protected; // input
1184 UINT64 MemoryPoolL0Size; // output
1185 UINT64 MemoryPoolL1Size; // output
1186} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
1187
1188typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
1189{
1190 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
1191 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
1192 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
1193 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
1194 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
1195 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
1196 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
1197} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
1198
1199typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
1200{
1201 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0,
1202 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
1203 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
1204 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3,
1205 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4,
1206 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
1207 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
1208 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
1209 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
1210 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
1211 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
1212} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
1213
1214typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
1215{
1216 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
1217 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
1218 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
1219} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
1220
1221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )")
1222
1223typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
1224{
1225 UINT NodeIndex; // in
1226 UINT CommandCount; // out
1227} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
1228
1229typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
1230{
1231 GUID CommandId;
1232 LPCWSTR Name;
1233 D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
1234} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
1235
1236typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
1237{
1238 UINT NodeIndex;
1239 UINT CommandCount;
1240 [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
1241} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
1242
1243typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
1244{
1245 GUID CommandId; // in
1246 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1247 UINT ParameterCount; // out
1248 UINT ParameterPacking; // out
1249} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
1250
1251typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
1252{
1253 LPCWSTR Name;
1254 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
1255 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
1256} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
1257
1258typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
1259{
1260 GUID CommandId; // in
1261 D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage; // in
1262 UINT ParameterCount; // in
1263 [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
1264} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
1265
1266typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
1267{
1268 UINT NodeIndex;
1269 GUID CommandId;
1270 [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
1271 SIZE_T InputDataSizeInBytes;
1272 [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
1273 SIZE_T OutputDataSizeInBytes;
1274} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
1275
1276typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
1277{
1278 UINT NodeIndex;
1279 GUID CommandId;
1280 [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
1281 SIZE_T CreationParametersSizeInBytes;
1282 UINT64 MemoryPoolL0Size; // output
1283 UINT64 MemoryPoolL1Size; // output
1284} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
1285
1286typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
1287{
1288 UINT NodeMask;
1289 GUID CommandId;
1290} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
1291
1292[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
1293interface ID3D12VideoDecoder1
1294 : ID3D12VideoDecoder
1295{
1296 HRESULT GetProtectedResourceSession(
1297 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1298 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1299}
1300
1301[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
1302interface ID3D12VideoDecoderHeap1
1303 : ID3D12VideoDecoderHeap
1304{
1305 HRESULT GetProtectedResourceSession(
1306 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1307 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1308}
1309
1310[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
1311interface ID3D12VideoProcessor1
1312 : ID3D12VideoProcessor
1313{
1314 HRESULT GetProtectedResourceSession(
1315 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1316 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1317}
1318
1319[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
1320interface ID3D12VideoExtensionCommand
1321 : ID3D12Pageable
1322{
1323 D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
1324
1325 HRESULT GetProtectedResourceSession(
1326 [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
1327 [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
1328}
1329
1330[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
1331interface ID3D12VideoDevice2
1332 : ID3D12VideoDevice1
1333{
1334 HRESULT CreateVideoDecoder1(
1335 [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
1336 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1337 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1,
1338 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
1339 );
1340
1341 HRESULT CreateVideoDecoderHeap1(
1342 [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
1343 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1344 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1,
1345 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
1346 );
1347
1348 HRESULT CreateVideoProcessor1(
1349 UINT NodeMask,
1350 [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
1351 UINT NumInputStreamDescs,
1352 [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
1353 [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
1354 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1,
1355 [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
1356 );
1357
1358 HRESULT CreateVideoExtensionCommand(
1359 [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,
1360 [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters,
1361 SIZE_T CreationParametersDataSizeInBytes,
1362 [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
1363 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand,
1364 [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
1365
1366 HRESULT ExecuteExtensionCommand(
1367 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1368 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1369 SIZE_T ExecutionParametersSizeInBytes,
1370 [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
1371 SIZE_T OutputDataSizeInBytes
1372 );
1373}
1374
1375[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
1376interface ID3D12VideoDecodeCommandList2
1377 : ID3D12VideoDecodeCommandList1
1378{
1379 void SetProtectedResourceSession(
1380 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1381 );
1382
1383 void InitializeExtensionCommand(
1384 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1385 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1386 SIZE_T InitializationParametersSizeInBytes);
1387
1388 void ExecuteExtensionCommand(
1389 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1390 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1391 SIZE_T ExecutionParametersSizeInBytes);
1392}
1393
1394[uuid(2aee8c37-9562-42da-8abf-61efeb2e4513), object, local, pointer_default(unique)]
1395interface ID3D12VideoDecodeCommandList3
1396 : ID3D12VideoDecodeCommandList2
1397{
1398 void Barrier(
1399 UINT32 NumBarrierGroups,
1400 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1401 );
1402}
1403
1404
1405
1406[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
1407interface ID3D12VideoProcessCommandList2
1408 : ID3D12VideoProcessCommandList1
1409{
1410
1411 void SetProtectedResourceSession(
1412 [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
1413 );
1414
1415 void InitializeExtensionCommand(
1416 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1417 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1418 SIZE_T InitializationParametersSizeInBytes);
1419
1420 void ExecuteExtensionCommand(
1421 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1422 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1423 SIZE_T ExecutionParametersSizeInBytes);
1424}
1425
1426[uuid(1a0a4ca4-9f08-40ce-9558-b411fd2666ff), object, local, pointer_default(unique)]
1427interface ID3D12VideoProcessCommandList3
1428 : ID3D12VideoProcessCommandList2
1429{
1430 void Barrier(
1431 UINT32 NumBarrierGroups,
1432 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
1433 );
1434}
1435
1436
1437
1438[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
1439interface ID3D12VideoEncodeCommandList1
1440 : ID3D12VideoEncodeCommandList
1441{
1442 void InitializeExtensionCommand(
1443 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1444 [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters,
1445 SIZE_T InitializationParametersSizeInBytes);
1446
1447 void ExecuteExtensionCommand(
1448 [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
1449 [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters,
1450 SIZE_T ExecutionParametersSizeInBytes);
1451}
1452
1453cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
1454cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
1455cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1456cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
1457cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
1458cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
1459cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1460cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
1461cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
1462cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
1463cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
1464cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
1465cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);")
1466cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);")
1467cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);")
1468cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);")
1469cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);")
1470cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);")
1471cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);")
1472cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);")
1473cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);")
1474cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);")
1475cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
1476cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
1477cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
1478cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
1479cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
1480cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
1481cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
1482cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
1483cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4); ")
1484cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); ")
1485cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); ")
1486cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); ")
1487cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); ")
1488cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); ")
1489cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);")
1490
1491///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1492// Video Encoder
1493///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1494
1495typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE
1496{
1497 D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
1498 D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
1499 D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2,
1500} D3D12_VIDEO_ENCODER_AV1_PROFILE;
1501
1502typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS
1503{ // These values are defined according to the AV1 codec standard spec
1504 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
1505 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
1506 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
1507 D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
1508 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
1509 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
1510 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
1511 D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
1512 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
1513 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
1514 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
1515 D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
1516 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
1517 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
1518 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
1519 D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
1520 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
1521 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
1522 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
1523 D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
1524 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
1525 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
1526 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
1527 D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23,
1528} D3D12_VIDEO_ENCODER_AV1_LEVELS;
1529
1530typedef enum D3D12_VIDEO_ENCODER_AV1_TIER
1531{
1532 D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
1533 D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1,
1534} D3D12_VIDEO_ENCODER_AV1_TIER;
1535
1536typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
1537{
1538 D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
1539 D3D12_VIDEO_ENCODER_AV1_TIER Tier;
1540} D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
1541
1542typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
1543{
1544 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0,
1545 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
1546 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
1547 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
1548 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
1549 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
1550 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
1551 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
1552 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
1553 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
1554 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
1555 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
1556 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
1557 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
1558 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
1559 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
1560 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
1561 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
1562 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
1563 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
1564 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
1565 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
1566 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
1567 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
1568 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
1569 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
1570 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000,
1571} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
1572cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)")
1573
1574typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE {
1575 D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
1576 D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
1577 D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2,
1578} D3D12_VIDEO_ENCODER_AV1_TX_MODE;
1579
1580typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS {
1581 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0,
1582 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4),
1583 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST),
1584 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT),
1585} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
1586cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)")
1587
1588typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS {
1589 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
1590 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
1591 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
1592 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
1593 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4,
1594} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
1595
1596typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS {
1597 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0,
1598 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP),
1599 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH),
1600 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP),
1601 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR),
1602 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE),
1603} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
1604cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)")
1605
1606typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE {
1607 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
1608 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
1609 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
1610 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
1611 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4,
1612} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
1613
1614typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE {
1615 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
1616 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
1617 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
1618 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
1619 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
1620 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
1621 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
1622 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
1623 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8,
1624} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
1625
1626typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS {
1627 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
1628 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED),
1629 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q),
1630 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V),
1631 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H),
1632 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U),
1633 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V),
1634 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME),
1635 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP),
1636 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV),
1637} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
1638cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)")
1639
1640typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE {
1641 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
1642 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
1643 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
1644 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3,
1645} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
1646
1647typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE {
1648 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
1649 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
1650 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
1651 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
1652 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4,
1653} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
1654
1655typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS {
1656 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0,
1657 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
1658 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
1659 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
1660 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8,
1661} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
1662cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)")
1663
1664typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
1665{
1666 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
1667 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
1668 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
1669 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3,
1670} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
1671
1672typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS {
1673 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0, // None is supported, reference warp motion arguments are ignored and is_global syntax is false for all references
1674 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY),
1675 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION),
1676 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM),
1677 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE),
1678} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
1679cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)")
1680
1681typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS {
1682 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
1683 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
1684 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
1685 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
1686 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
1687 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
1688 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
1689 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
1690 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
1691 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100,
1692} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
1693cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)")
1694
1695typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
1696 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
1697 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
1698 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
1699 D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3];
1700 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
1701 D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4]; // Different for D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE types
1702 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
1703 D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
1704 UINT MaxTemporalLayers;
1705 UINT MaxSpatialLayers;
1706} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
1707
1708typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
1709{
1710 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
1711 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
1712 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
1713 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3,
1714} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
1715
1716typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS {
1717 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0,
1718 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME),
1719 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME),
1720 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME),
1721 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME),
1722} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
1723cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)")
1724
1725typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1726{
1727 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
1728 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1,
1729} D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
1730
1731typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT {
1732 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
1733 UINT MaxUniqueReferencesPerFrame;
1734 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
1735 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
1736} D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
1737
1738typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION {
1739 D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
1740 UINT OrderHintBitsMinus1;
1741} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
1742
1743typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
1744{
1745 UINT IntraDistance;
1746 UINT InterFramePeriod;
1747} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
1748
1749typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
1750{
1751 D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
1752 INT TransformationMatrix[8];
1753 BOOL InvalidAffineSet; // Valid or invalid on affine set
1754} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
1755
1756typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
1757{
1758 UINT ReconstructedPictureResourceIndex;
1759 UINT TemporalLayerIndexPlus1;
1760 UINT SpatialLayerIndexPlus1;
1761 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1762 // Only used if supported in D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS, ignored by driver otherwise
1763 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
1764 UINT OrderHint;
1765 UINT PictureIndex;
1766} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
1767
1768typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
1769{
1770 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0,
1771 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
1772 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
1773 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
1774 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
1775 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
1776 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
1777 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
1778 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
1779 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
1780 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
1781 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
1782 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
1783 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
1784 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
1785 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000,
1786
1787} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
1788cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)")
1789
1790typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
1791 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
1792 D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
1793} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
1794
1795typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
1796 UINT64 EnabledFeatures; // D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
1797 // For the enabled features in EnabledFeatures, the array below
1798 // is indexed by D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE - 1
1799 INT64 FeatureValue[8];
1800} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
1801
1802typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
1803 UINT64 UpdateMap;
1804 UINT64 TemporalUpdate;
1805 UINT64 UpdateData;
1806 UINT64 NumSegments;
1807 D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
1808} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
1809
1810typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
1811 UINT SegmentsMapByteSize;
1812 UINT8* pSegmentsMap;
1813} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
1814
1815typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
1816 UINT64 LoopFilterLevel[2];
1817 UINT64 LoopFilterLevelU;
1818 UINT64 LoopFilterLevelV;
1819 UINT64 LoopFilterSharpnessLevel;
1820 UINT64 LoopFilterDeltaEnabled;
1821 // loop_filter_delta_update = UpdateRefDelta || UpdateModeDelta
1822 UINT64 UpdateRefDelta;
1823 INT64 RefDeltas[8];
1824 UINT64 UpdateModeDelta;
1825 INT64 ModeDeltas[2];
1826} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
1827
1828typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
1829 UINT64 DeltaLFPresent;
1830 UINT64 DeltaLFMulti;
1831 UINT64 DeltaLFRes;
1832} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
1833
1834typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
1835 UINT64 BaseQIndex;
1836 INT64 YDCDeltaQ;
1837 INT64 UDCDeltaQ;
1838 INT64 UACDeltaQ;
1839 INT64 VDCDeltaQ;
1840 INT64 VACDeltaQ;
1841 UINT64 UsingQMatrix;
1842 UINT64 QMY;
1843 UINT64 QMU;
1844 UINT64 QMV;
1845} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
1846
1847typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
1848 UINT64 DeltaQPresent;
1849 UINT64 DeltaQRes;
1850} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
1851
1852typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
1853 UINT64 CdefBits;
1854 UINT64 CdefDampingMinus3;
1855 UINT64 CdefYPriStrength[8];
1856 UINT64 CdefUVPriStrength[8];
1857 UINT64 CdefYSecStrength[8];
1858 UINT64 CdefUVSecStrength[8];
1859} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
1860
1861typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
1862{
1863 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
1864 D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
1865 D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
1866 D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
1867 D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
1868 D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
1869 UINT SuperResDenominator;
1870 UINT OrderHint;
1871 UINT PictureIndex;
1872 UINT TemporalLayerIndexPlus1;
1873 UINT SpatialLayerIndexPlus1;
1874 D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
1875 UINT ReferenceIndices[7];
1876 UINT PrimaryRefFrame;
1877 UINT RefreshFrameFlags;
1878 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1879 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1880 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1881 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1882 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1883 UINT QPMapValuesCount;
1884 [annotation("_Field_size_full_(QPMapValuesCount)")] INT16* pRateControlQPMap;
1885 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
1886 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
1887} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
1888
1889typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
1890{
1891 UINT64 RowCount;
1892 UINT64 ColCount;
1893 UINT64 RowHeights[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS];
1894 UINT64 ColWidths[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS];
1895 UINT64 ContextUpdateTileId;
1896} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
1897
1898typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
1899{
1900 UINT64 CompoundPredictionType; // D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
1901 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
1902 D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
1903 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
1904 D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
1905 D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
1906 D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
1907 UINT64 PrimaryRefFrame; // Aligned to 64 for use of post encode metadata with predication
1908 UINT64 ReferenceIndices[7]; // Aligned to 64 for use of post encode metadata with predication
1909} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
1910
1911//
1912// Rate control API
1913//
1914
1915typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
1916{
1917 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
1918 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP = 1,
1919 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR = 2,
1920 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR = 3,
1921 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4,
1922} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
1923
1924typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
1925{
1926 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
1927 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
1928 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
1929 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
1930 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
1931 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
1932 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
1933 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
1934 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
1935 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_SPATIAL_ADAPTIVE_QP = 0x100,
1936} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
1937cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)")
1938
1939typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
1940 UINT ConstantQP_FullIntracodedFrame;
1941 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1942 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1943} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
1944
1945typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 {
1946 UINT ConstantQP_FullIntracodedFrame;
1947 UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
1948 UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
1949 UINT QualityVsSpeed;
1950} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
1951
1952typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
1953 UINT InitialQP;
1954 UINT MinQP;
1955 UINT MaxQP;
1956 UINT64 MaxFrameBitSize;
1957 UINT64 TargetBitRate;
1958 UINT64 VBVCapacity;
1959 UINT64 InitialVBVFullness;
1960} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
1961
1962typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 {
1963 UINT InitialQP;
1964 UINT MinQP;
1965 UINT MaxQP;
1966 UINT64 MaxFrameBitSize;
1967 UINT64 TargetBitRate;
1968 UINT64 VBVCapacity;
1969 UINT64 InitialVBVFullness;
1970 UINT QualityVsSpeed;
1971} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
1972
1973typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
1974 UINT InitialQP;
1975 UINT MinQP;
1976 UINT MaxQP;
1977 UINT64 MaxFrameBitSize;
1978 UINT64 TargetAvgBitRate;
1979 UINT64 PeakBitRate;
1980 UINT64 VBVCapacity;
1981 UINT64 InitialVBVFullness;
1982} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
1983
1984typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 {
1985 UINT InitialQP;
1986 UINT MinQP;
1987 UINT MaxQP;
1988 UINT64 MaxFrameBitSize;
1989 UINT64 TargetAvgBitRate;
1990 UINT64 PeakBitRate;
1991 UINT64 VBVCapacity;
1992 UINT64 InitialVBVFullness;
1993 UINT QualityVsSpeed;
1994} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
1995
1996typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
1997 UINT InitialQP;
1998 UINT MinQP;
1999 UINT MaxQP;
2000 UINT64 MaxFrameBitSize;
2001 UINT64 TargetAvgBitRate;
2002 UINT64 PeakBitRate;
2003 UINT ConstantQualityTarget;
2004} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
2005
2006typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
2007{
2008 UINT InitialQP;
2009 UINT MinQP;
2010 UINT MaxQP;
2011 UINT64 MaxFrameBitSize;
2012 UINT64 TargetAvgBitRate;
2013 UINT64 PeakBitRate;
2014 UINT ConstantQualityTarget;
2015 UINT64 VBVCapacity;
2016 UINT64 InitialVBVFullness;
2017 UINT QualityVsSpeed;
2018} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
2019
2020typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP {
2021 UINT QualityVsSpeed;
2022} D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
2023
2024typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
2025{
2026 UINT DataSize;
2027 union
2028 {
2029 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP* pConfiguration_CQP;
2030 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR* pConfiguration_CBR;
2031 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR* pConfiguration_VBR;
2032 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR* pConfiguration_QVBR;
2033 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1* pConfiguration_CQP1;
2034 const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1* pConfiguration_CBR1;
2035 const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1* pConfiguration_VBR1;
2036 const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1* pConfiguration_QVBR1;
2037 const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP* pConfiguration_AbsoluteQPMap;
2038 };
2039} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
2040
2041typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
2042 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
2043 D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
2044 D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
2045 DXGI_RATIONAL TargetFrameRate;
2046} D3D12_VIDEO_ENCODER_RATE_CONTROL;
2047
2048//
2049// Video Encoder support API
2050//
2051
2052typedef enum D3D12_VIDEO_ENCODER_CODEC
2053{
2054 D3D12_VIDEO_ENCODER_CODEC_H264 = 0,
2055 D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
2056 D3D12_VIDEO_ENCODER_CODEC_AV1 = 2,
2057} D3D12_VIDEO_ENCODER_CODEC;
2058
2059typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
2060{
2061 UINT NodeIndex; // input
2062 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2063 BOOL IsSupported; // output
2064} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC;
2065
2066typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264
2067{
2068 D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
2069 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
2070 D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2,
2071} D3D12_VIDEO_ENCODER_PROFILE_H264;
2072
2073typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
2074{
2075 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
2076 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
2077 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
2078 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
2079 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
2080 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
2081 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
2082 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
2083 D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8,
2084} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
2085
2086typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
2087{
2088 UINT DataSize;
2089 union
2090 {
2091 D3D12_VIDEO_ENCODER_PROFILE_H264* pH264Profile;
2092 D3D12_VIDEO_ENCODER_PROFILE_HEVC* pHEVCProfile;
2093 D3D12_VIDEO_ENCODER_AV1_PROFILE* pAV1Profile;
2094 };
2095} D3D12_VIDEO_ENCODER_PROFILE_DESC;
2096
2097typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264
2098{
2099 D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
2100 D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
2101 D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
2102 D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
2103 D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
2104 D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
2105 D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
2106 D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
2107 D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
2108 D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
2109 D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
2110 D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
2111 D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
2112 D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
2113 D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
2114 D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
2115 D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
2116 D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
2117 D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
2118 D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19,
2119} D3D12_VIDEO_ENCODER_LEVELS_H264;
2120
2121typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC
2122{
2123 D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
2124 D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1,
2125} D3D12_VIDEO_ENCODER_TIER_HEVC;
2126
2127typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
2128{
2129 D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
2130 D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
2131 D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
2132 D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
2133 D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
2134 D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
2135 D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
2136 D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
2137 D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
2138 D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
2139 D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
2140 D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
2141 D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12,
2142} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
2143
2144typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
2145{
2146 D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
2147 D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
2148} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
2149
2150typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
2151{
2152 UINT DataSize;
2153 union
2154 {
2155 D3D12_VIDEO_ENCODER_LEVELS_H264* pH264LevelSetting;
2156 D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC* pHEVCLevelSetting;
2157 D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS* pAV1LevelSetting;
2158 };
2159} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
2160
2161typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
2162{
2163 UINT NodeIndex; // input
2164 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2165 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2166 BOOL IsSupported; // output
2167 D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel; // output
2168 D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel; // output
2169} D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
2170
2171typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
2172{
2173 UINT Width;
2174 UINT Height;
2175} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
2176
2177typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
2178{
2179 UINT WidthRatio;
2180 UINT HeightRatio;
2181} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
2182
2183typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
2184{
2185 UINT NodeIndex; // input
2186 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2187 UINT ResolutionRatiosCount; // output
2188} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
2189
2190typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
2191{
2192 UINT NodeIndex; // input
2193 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2194 UINT ResolutionRatiosCount; // input
2195 BOOL IsSupported; // output
2196 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported; // output
2197 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported; // output
2198 UINT ResolutionWidthMultipleRequirement; // output
2199 UINT ResolutionHeightMultipleRequirement; // output
2200 [annotation("_Field_size_full_(ResolutionRatiosCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC* pResolutionRatios;
2201} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
2202
2203typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
2204{
2205 UINT NodeIndex; // input
2206 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2207 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2208 DXGI_FORMAT Format; // input
2209 BOOL IsSupported; // output
2210} D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
2211
2212typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
2213{
2214 UINT NodeIndex; // input
2215 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2216 D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode; // input
2217 BOOL IsSupported; // output
2218} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
2219
2220typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
2221{
2222 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
2223 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1,
2224} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2225
2226typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE {
2227 UINT NodeIndex; // input
2228 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2229 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2230 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2231 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode; // input
2232 BOOL IsSupported; // output
2233} D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
2234
2235typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2236{
2237 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
2238 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
2239 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED = 2,
2240 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,
2241 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
2242 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
2243 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
2244 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_AUTO = 7,
2245} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2246
2247typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
2248{
2249 UINT NodeIndex; // input
2250 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2251 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2252 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2253 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2254 BOOL IsSupported; // output
2255} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
2256
2257typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
2258{
2259 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0x0,
2260 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
2261 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
2262 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
2263 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
2264 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
2265 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
2266 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
2267 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80,
2268
2269} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
2270cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)")
2271
2272typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
2273{
2274 BOOL Use128SuperBlocks;
2275 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
2276 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
2277 UINT MinTileRows;
2278 UINT MaxTileRows;
2279 UINT MinTileCols;
2280 UINT MaxTileCols;
2281 UINT MinTileWidth;
2282 UINT MaxTileWidth;
2283 UINT MinTileArea;
2284 UINT MaxTileArea;
2285 UINT TileSizeBytesMinus1;
2286} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2287
2288typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT {
2289 UINT DataSize;
2290 union
2291 {
2292 D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT* pAV1Support;
2293 };
2294} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
2295
2296typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
2297{
2298 UINT NodeIndex; // input
2299 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2300 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2301 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level; // input
2302 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
2303 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution; // input
2304 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport; // input/output
2305 BOOL IsSupported; // output
2306} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
2307
2308typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
2309{
2310 D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0,
2311 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS = 0x1,
2312 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_SUBREGION_NOTIFICATION_SINGLE_BUFFER = 0x2,
2313 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_DIRTY_REGIONS = 0x4,
2314 D3D12_VIDEO_ENCODER_HEAP_FLAG_ALLOW_RATE_CONTROL_FRAME_ANALYSIS = 0x8,
2315} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
2316cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)")
2317
2318typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
2319{
2320 UINT NodeMask;
2321 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
2322 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2323 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2324 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
2325 UINT ResolutionsListCount;
2326 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2327} D3D12_VIDEO_ENCODER_HEAP_DESC;
2328
2329typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE {
2330 D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc; // input
2331 BOOL IsSupported; // output
2332 UINT64 MemoryPoolL0Size; // output
2333 UINT64 MemoryPoolL1Size; // output
2334} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
2335
2336typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
2337{
2338 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
2339 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
2340 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2341 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
2342 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
2343 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
2344 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
2345 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
2346 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80,
2347} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
2348cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)")
2349
2350typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
2351 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
2352 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
2353 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
2354 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
2355 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
2356 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
2357 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6,
2358} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
2359
2360typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
2361 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
2362 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED),
2363 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES),
2364 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS),
2365 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING),
2366 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES),
2367 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES),
2368 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING),
2369} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
2370cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)")
2371
2372typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
2373 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
2374 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
2375} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
2376
2377typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
2378{
2379 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
2380 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
2381 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
2382 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
2383 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
2384 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
2385 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
2386 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
2387 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
2388 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES = 0x100,
2389 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
2390 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
2391 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
2392 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
2393 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
2394 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
2395 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
2396 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
2397 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
2398 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
2399 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
2400 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
2401 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
2402 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
2403 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
2404 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
2405 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
2406 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
2407 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
2408 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
2409 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
2410 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
2411 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000, // 2^31 - 32 bit integer enum type
2412
2413} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
2414cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)")
2415
2416typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
2417 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
2418 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
2419 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
2420 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3,
2421} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
2422
2423typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
2424 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
2425 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
2426 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
2427 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3,
2428} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
2429
2430typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
2431 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2432 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2433 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2434 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2435 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2436 UCHAR max_transform_hierarchy_depth_inter;
2437 UCHAR max_transform_hierarchy_depth_intra;
2438} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
2439
2440
2441typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
2442{
2443 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0,
2444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
2445 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2,
2446} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
2447cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)")
2448
2449typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
2450 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
2451 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2452 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2453 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2454 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2455 UCHAR max_transform_hierarchy_depth_inter;
2456 UCHAR max_transform_hierarchy_depth_intra;
2457 UINT allowed_diff_cu_chroma_qp_offset_depth_values;
2458 UINT allowed_log2_sao_offset_scale_luma_values;
2459 UINT allowed_log2_sao_offset_scale_chroma_values;
2460 UINT allowed_log2_max_transform_skip_block_size_minus2_values;
2461 UINT allowed_chroma_qp_offset_list_len_minus1_values;
2462 UINT allowed_cb_qp_offset_list_values[6];
2463 UINT allowed_cr_qp_offset_list_values[6];
2464 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
2465} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
2466
2467typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2468 UINT DataSize;
2469 union
2470 {
2471 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264* pH264Support;
2472 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC* pHEVCSupport;
2473 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1* pHEVCSupport1;
2474 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT* pAV1Support;
2475 };
2476} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2477
2478typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
2479 UINT NodeIndex; // input
2480 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2481 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2482 BOOL IsSupported; // output
2483 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits; // input/output
2484} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
2485
2486typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
2487 UINT MaxL0ReferencesForP;
2488 UINT MaxL0ReferencesForB;
2489 UINT MaxL1ReferencesForB;
2490 UINT MaxLongTermReferences;
2491 UINT MaxDPBCapacity;
2492} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
2493
2494typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
2495 UINT MaxL0ReferencesForP;
2496 UINT MaxL0ReferencesForB;
2497 UINT MaxL1ReferencesForB;
2498 UINT MaxLongTermReferences;
2499 UINT MaxDPBCapacity;
2500} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
2501
2502typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2503 UINT DataSize;
2504 union
2505 {
2506 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264* pH264Support;
2507 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC* pHEVCSupport;
2508 D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT* pAV1Support;
2509 };
2510} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2511
2512typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
2513 UINT NodeIndex; // input
2514 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2515 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2516 BOOL IsSupported; // output
2517 D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport; // output
2518} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
2519
2520typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
2521{
2522 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
2523 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
2524 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
2525 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
2526 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
2527 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
2528 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
2529 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
2530 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
2531 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
2532 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
2533 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
2534 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
2535 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
2536 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
2537 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
2538 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
2539 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_QP_MAP_METADATA_AVAILABLE = 0x10000,
2540 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_SATD_MAP_METADATA_AVAILABLE = 0x20000,
2541 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_PER_BLOCK_RC_BIT_ALLOCATION_MAP_METADATA_AVAILABLE = 0x40000,
2542 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_ARRAY_OF_BUFFERS_AVAILABLE = 0x80000,
2543 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_NOTIFICATION_SINGLE_BUFFER_AVAILABLE = 0x100000,
2544 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_FRAME_PSNR_METADATA_AVAILABLE = 0x200000,
2545 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGIONS_PSNR_METADATA_AVAILABLE = 0x400000,
2546 D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_SPATIAL_ADAPTIVE_QP_AVAILABLE = 0x800000,
2547} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
2548cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)")
2549
2550typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
2551{
2552 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,
2553 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
2554 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
2555 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,
2556 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8,
2557} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
2558cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)")
2559
2560typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
2561 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
2562 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
2563 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2,
2564} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
2565
2566typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264
2567{
2568 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;
2569 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;
2570 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
2571} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
2572
2573typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
2574{
2575 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
2576 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
2577 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
2578 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
2579 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
2580 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
2581 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
2582 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
2583 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
2584 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
2585 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
2586 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
2587 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
2588 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
2589 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
2590 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
2591 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
2592 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000,
2593} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
2594cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)")
2595
2596typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
2597 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
2598 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
2599 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
2600 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
2601 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
2602 UCHAR max_transform_hierarchy_depth_inter;
2603 UCHAR max_transform_hierarchy_depth_intra;
2604} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
2605
2606typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
2607{
2608 UINT DataSize;
2609 union
2610 {
2611 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264* pH264Config;
2612 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC* pHEVCConfig;
2613 D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION* pAV1Config;
2614 };
2615} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
2616
2617typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
2618{
2619 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
2620 UINT IntraRefreshDuration;
2621} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
2622
2623
2624typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
2625{
2626 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
2627 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
2628 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
2629 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
2630 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4,
2631} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
2632
2633typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
2634{
2635 UINT MaxSubregionsNumber;
2636 UINT MaxIntraRefreshFrameDuration;
2637 UINT SubregionBlockPixelsSize;
2638 UINT QPMapRegionPixelsSize;
2639} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
2640
2641typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
2642{
2643 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
2644 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
2645 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
2646 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
2647 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
2648 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
2649 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
2650 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
2651 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
2652 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
2653 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
2654 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
2655 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
2656 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
2657 D3D12_VIDEO_ENCODER_VALIDATION_FLAG_FRAME_ANALYSIS_NOT_SUPPORTED = 0x10000,
2658} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
2659cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)")
2660
2661typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
2662{
2663 UINT GOPLength;
2664 UINT PPicturePeriod;
2665 UCHAR pic_order_cnt_type;
2666 UCHAR log2_max_frame_num_minus4;
2667 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2668} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
2669
2670typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
2671{
2672 UINT GOPLength;
2673 UINT PPicturePeriod;
2674 UCHAR log2_max_pic_order_cnt_lsb_minus4;
2675} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
2676
2677typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
2678{
2679 UINT DataSize;
2680 union
2681 {
2682 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264* pH264GroupOfPictures;
2683 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC* pHEVCGroupOfPictures;
2684 D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE* pAV1SequenceStructure;
2685 };
2686} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
2687
2688typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
2689{
2690 // input
2691 UINT NodeIndex;
2692 D3D12_VIDEO_ENCODER_CODEC Codec;
2693 DXGI_FORMAT InputFormat;
2694 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2695 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2696 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2697 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2698 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2699 UINT ResolutionsListCount;
2700 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2701 UINT MaxReferenceFramesInDPB;
2702
2703 // single value output
2704 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2705 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2706 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2707 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; // assuming max resolution from input list
2708
2709 // resolution dependent output
2710 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2711} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
2712
2713typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
2714{
2715 // Mutually exclusive options according to selected mode
2716 union
2717 {
2718 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION
2719 UINT MaxBytesPerSlice;
2720
2721 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED
2722 UINT NumberOfCodingUnitsPerSlice;
2723
2724 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION
2725 UINT NumberOfRowsPerSlice;
2726
2727 // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME
2728 UINT NumberOfSlicesPerFrame;
2729 };
2730} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
2731
2732typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
2733{
2734 UINT DataSize;
2735 union
2736 {
2737 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_H264;
2738 const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_HEVC;
2739 const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES* pTilesPartition_AV1;
2740 };
2741
2742} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
2743
2744typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
2745{
2746 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT */
2747 UINT NodeIndex;
2748 D3D12_VIDEO_ENCODER_CODEC Codec;
2749 DXGI_FORMAT InputFormat;
2750 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2751 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
2752 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
2753 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
2754 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
2755 UINT ResolutionsListCount;
2756 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
2757 UINT MaxReferenceFramesInDPB;
2758 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
2759 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
2760 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
2761 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
2762 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
2763
2764 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 */
2765 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; // input
2766 UINT MaxQualityVsSpeed;
2767} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
2768
2769typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
2770{
2771 UINT NodeIndex; // input
2772 D3D12_VIDEO_ENCODER_CODEC Codec; // input
2773 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
2774 DXGI_FORMAT InputFormat; // input
2775 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
2776
2777 BOOL IsSupported; // output
2778 UINT CompressedBitstreamBufferAccessAlignment; // output
2779 UINT EncoderMetadataBufferAccessAlignment; // output
2780 UINT MaxEncoderOutputMetadataBufferSize; // output
2781} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
2782
2783//
2784// Video Encoder creation API
2785//
2786
2787typedef enum D3D12_VIDEO_ENCODER_FLAGS
2788{
2789 D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0,
2790} D3D12_VIDEO_ENCODER_FLAGS;
2791cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)")
2792
2793typedef struct D3D12_VIDEO_ENCODER_DESC
2794{
2795 UINT NodeMask;
2796 D3D12_VIDEO_ENCODER_FLAGS Flags;
2797 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
2798 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
2799 DXGI_FORMAT InputFormat;
2800 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
2801 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
2802} D3D12_VIDEO_ENCODER_DESC;
2803
2804[uuid(2E0D212D-8DF9-44A6-A770-BB289B182737), object, local, pointer_default(unique)]
2805interface ID3D12VideoEncoder
2806 : ID3D12Pageable
2807{
2808 UINT GetNodeMask();
2809 D3D12_VIDEO_ENCODER_FLAGS GetEncoderFlags();
2810 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2811 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2812 HRESULT GetCodecConfiguration([annotation("_Inout_")] D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
2813 DXGI_FORMAT GetInputFormat();
2814 D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE GetMaxMotionEstimationPrecision();
2815}
2816
2817[uuid(22B35D96-876A-44C0-B25E-FB8C9C7F1C4A), object, local, pointer_default(unique)]
2818interface ID3D12VideoEncoderHeap
2819 : ID3D12Pageable
2820{
2821 UINT GetNodeMask();
2822 D3D12_VIDEO_ENCODER_HEAP_FLAGS GetEncoderHeapFlags();
2823 D3D12_VIDEO_ENCODER_CODEC GetCodec();
2824 HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
2825 HRESULT GetCodecLevel([annotation("_Inout_")] D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel);
2826 UINT GetResolutionListCount();
2827 HRESULT GetResolutionList(
2828 const UINT ResolutionsListCount,
2829 [annotation("_Out_writes_(ResolutionsListCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList);
2830}
2831
2832[uuid(4243ADB4-3A32-4666-973C-0CCC5625DC44), object, local, pointer_default(unique)]
2833interface ID3D12VideoDevice3
2834 : ID3D12VideoDevice2
2835{
2836
2837 HRESULT CreateVideoEncoder(
2838 [annotation("_In_")] const D3D12_VIDEO_ENCODER_DESC* pDesc,
2839 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoder,
2840 [annotation("_COM_Outptr_")] void** ppVideoEncoder);
2841
2842 HRESULT CreateVideoEncoderHeap(
2843 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC* pDesc,
2844 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap,
2845 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
2846
2847}
2848
2849//
2850// Video Encoder operation API
2851//
2852
2853
2854typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
2855{
2856 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
2857 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
2858 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
2859 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3,
2860} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
2861
2862
2863typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
2864{
2865 UINT ReconstructedPictureResourceIndex;
2866 BOOL IsLongTermReference;
2867 UINT LongTermPictureIdx;
2868 UINT PictureOrderCountNumber;
2869 UINT FrameDecodingOrderNumber;
2870 UINT TemporalLayerIndex;
2871} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
2872
2873typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
2874{
2875 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
2876 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2877 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2878} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
2879cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)")
2880
2881typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
2882{
2883 UCHAR memory_management_control_operation;
2884 UINT difference_of_pic_nums_minus1;
2885 UINT long_term_pic_num;
2886 UINT long_term_frame_idx;
2887 UINT max_long_term_frame_idx_plus1;
2888} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
2889
2890typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
2891{
2892 UCHAR modification_of_pic_nums_idc;
2893 UINT abs_diff_pic_num_minus1;
2894 UINT long_term_pic_num;
2895} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
2896
2897typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
2898{
2899 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
2900 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
2901 UINT pic_parameter_set_id;
2902 UINT idr_pic_id;
2903 UINT PictureOrderCountNumber;
2904 UINT FrameDecodingOrderNumber;
2905 UINT TemporalLayerIndex;
2906 UINT List0ReferenceFramesCount;
2907 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2908 UINT List1ReferenceFramesCount;
2909 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2910 UINT ReferenceFramesReconPictureDescriptorsCount;
2911 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors;
2912 UCHAR adaptive_ref_pic_marking_mode_flag;
2913 UINT RefPicMarkingOperationsCommandsCount;
2914 [annotation("_Field_size_full_(RefPicMarkingOperationsCommandsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands;
2915 UINT List0RefPicModificationsCount;
2916 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications;
2917 UINT List1RefPicModificationsCount;
2918 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications;
2919 UINT QPMapValuesCount;
2920 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2921} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
2922
2923typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
2924{
2925 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
2926 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
2927 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
2928 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3,
2929} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
2930
2931typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
2932{
2933 UINT ReconstructedPictureResourceIndex;
2934 BOOL IsRefUsedByCurrentPic;
2935 BOOL IsLongTermReference;
2936 UINT PictureOrderCountNumber;
2937 UINT TemporalLayerIndex;
2938} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
2939
2940typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
2941{
2942 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
2943 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
2944 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
2945 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
2946 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8,
2947} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
2948cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)")
2949
2950typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
2951{
2952 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2953 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2954 UINT slice_pic_parameter_set_id;
2955 UINT PictureOrderCountNumber;
2956 UINT TemporalLayerIndex;
2957 UINT List0ReferenceFramesCount;
2958 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2959 UINT List1ReferenceFramesCount;
2960 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2961 UINT ReferenceFramesReconPictureDescriptorsCount;
2962 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2963 UINT List0RefPicModificationsCount;
2964 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2965 UINT List1RefPicModificationsCount;
2966 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2967 UINT QPMapValuesCount;
2968 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
2969} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
2970
2971typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
2972{
2973 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
2974 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
2975 UINT slice_pic_parameter_set_id;
2976 UINT PictureOrderCountNumber;
2977 UINT TemporalLayerIndex;
2978 UINT List0ReferenceFramesCount;
2979 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
2980 UINT List1ReferenceFramesCount;
2981 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
2982 UINT ReferenceFramesReconPictureDescriptorsCount;
2983 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
2984 UINT List0RefPicModificationsCount;
2985 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
2986 UINT List1RefPicModificationsCount;
2987 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
2988 UINT QPMapValuesCount;
2989 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
2990 UCHAR diff_cu_chroma_qp_offset_depth;
2991 UCHAR log2_sao_offset_scale_luma;
2992 UCHAR log2_sao_offset_scale_chroma;
2993 UCHAR log2_max_transform_skip_block_size_minus2;
2994 UCHAR chroma_qp_offset_list_len_minus1;
2995 CHAR cb_qp_offset_list[6];
2996 CHAR cr_qp_offset_list[6];
2997} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
2998
2999typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
3000{
3001 UINT DataSize;
3002 union
3003 {
3004 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3005 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC* pHEVCPicData;
3006 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1* pHEVCPicData1;
3007 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3008 };
3009} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
3010
3011typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
3012{
3013 UINT NumTexture2Ds;
3014 [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
3015 [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
3016} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
3017
3018typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
3019{
3020 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,
3021 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
3022 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_QUANTIZATION_MATRIX_INPUT = 0x2,
3023 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_DIRTY_REGIONS_INPUT = 0x4,
3024 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_ENABLE_MOTION_VECTORS_INPUT = 0x8,
3025} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
3026cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)")
3027
3028typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
3029{
3030 UINT IntraRefreshFrameIndex;
3031 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3032 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;
3033 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3034} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
3035
3036typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
3037{
3038 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
3039 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
3040 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
3041 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
3042 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
3043 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10,
3044} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
3045cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)")
3046
3047typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
3048{
3049 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
3050 D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
3051 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3052 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
3053 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
3054 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
3055 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3056} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
3057
3058//
3059// Video Encoder operation commands API
3060//
3061
3062typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
3063{
3064 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3065 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
3066 ID3D12Resource *pInputFrame;
3067 UINT InputFrameSubresource;
3068 UINT CurrentFrameBitstreamMetadataSize;
3069} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
3070
3071typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
3072{
3073 ID3D12Resource* pBuffer;
3074 UINT64 FrameStartOffset;
3075} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
3076
3077typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
3078{
3079 ID3D12Resource *pReconstructedPicture;
3080 UINT ReconstructedPictureSubresource;
3081} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
3082
3083typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
3084{
3085 UINT64 bSize;
3086 UINT64 bStartOffset;
3087 UINT64 bHeaderSize;
3088} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
3089
3090typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3091{
3092 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,
3093 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
3094 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,
3095 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,
3096 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,
3097 D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10,
3098} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
3099cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)")
3100
3101typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
3102{
3103 UINT64 AverageQP;
3104 UINT64 IntraCodingUnitsCount;
3105 UINT64 InterCodingUnitsCount;
3106 UINT64 SkipCodingUnitsCount;
3107 UINT64 AverageMotionEstimationXDirection;
3108 UINT64 AverageMotionEstimationYDirection;
3109} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
3110
3111typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
3112{
3113 UINT64 EncodeErrorFlags; // D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
3114 D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;
3115 UINT64 EncodedBitstreamWrittenBytesCount;
3116 UINT64 WrittenSubregionsCount;
3117} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
3118
3119typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
3120{
3121 ID3D12Resource* pBuffer;
3122 UINT64 Offset;
3123} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
3124
3125typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
3126{
3127 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3128 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3129 DXGI_FORMAT EncoderInputFormat;
3130 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3131 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3132} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
3133
3134typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
3135{
3136 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3137} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
3138
3139typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
3140{
3141 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
3142 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3143 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3144} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
3145
3146[uuid(895491e2-e701-46a9-9a1f-8d3480ed867a), object, local, pointer_default(unique)]
3147interface ID3D12VideoEncodeCommandList2
3148 : ID3D12VideoEncodeCommandList1
3149{
3150 void EncodeFrame(
3151 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3152 [annotation("_In_")] ID3D12VideoEncoderHeap *pHeap,
3153 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
3154 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
3155
3156 void ResolveEncoderOutputMetadata(
3157 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS* pInputArguments,
3158 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS* pOutputArguments);
3159}
3160
3161
3162[uuid(7f027b22-1515-4e85-aa0d-026486580576), object, local, pointer_default(unique)]
3163interface ID3D12VideoEncodeCommandList3
3164 : ID3D12VideoEncodeCommandList2
3165{
3166
3167 void Barrier(
3168 UINT32 NumBarrierGroups,
3169 [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
3170 );
3171}
3172
3173
3174
3175typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC1
3176{
3177 UINT NodeMask;
3178 D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
3179 D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
3180 D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
3181 D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
3182 UINT ResolutionsListCount;
3183 [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3184 UINT Pow2DownscaleFactor;
3185} D3D12_VIDEO_ENCODER_HEAP_DESC1;
3186
3187[uuid(ea8f1968-4aa0-43a4-9d30-ba86ec84d4f9), object, local, pointer_default(unique)]
3188interface ID3D12VideoEncoderHeap1
3189 : ID3D12VideoEncoderHeap
3190{
3191 UINT GetPow2DownscaleFactor();
3192}
3193
3194[uuid(e59ad09e-f1ae-42bb-8983-9f6e5586c4eb), object, local, pointer_default(unique)]
3195interface ID3D12VideoDevice4
3196 : ID3D12VideoDevice3
3197{
3198 HRESULT CreateVideoEncoderHeap1(
3199 [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC1* pDesc,
3200 [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap1,
3201 [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
3202
3203}
3204
3205typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1 {
3206 D3D12_VIDEO_ENCODER_HEAP_DESC1 HeapDesc; // input
3207 BOOL IsSupported; // output
3208 UINT64 MemoryPoolL0Size; // output
3209 UINT64 MemoryPoolL1Size; // output
3210} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE1;
3211
3212typedef enum D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS
3213{
3214 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_NONE = 0x0,
3215 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_QP_MAP = 0x1,
3216 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SATD_MAP = 0x2,
3217 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_RC_BIT_ALLOCATION_MAP = 0x4,
3218 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_FRAME_PSNR = 0x8,
3219 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAG_SUBREGIONS_PSNR = 0x10,
3220} D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS;
3221cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS )")
3222
3223// Binary back-compat with D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
3224typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1
3225{
3226 UINT NodeIndex; // input
3227 D3D12_VIDEO_ENCODER_CODEC Codec; // input
3228 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile; // input
3229 DXGI_FORMAT InputFormat; // input
3230 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
3231
3232 BOOL IsSupported; // output
3233 UINT CompressedBitstreamBufferAccessAlignment; // output
3234 UINT EncoderMetadataBufferAccessAlignment; // output
3235 UINT MaxEncoderOutputMetadataBufferSize; // output
3236 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata; // input
3237 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration; // input
3238 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataQPMapTextureDimensions; // output
3239 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataSATDMapTextureDimensions; // output
3240 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncoderOutputMetadataBitAllocationMapTextureDimensions; // output
3241 UINT EncoderOutputMetadataFramePSNRComponentsNumber; // output
3242 UINT EncoderOutputMetadataSubregionsPSNRComponentsNumber; // output
3243 UINT EncoderOutputMetadataSubregionsPSNRResolvedMetadataBufferSize; // output
3244} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS1;
3245
3246typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT
3247{
3248 float PSNRY;
3249 float PSNRU;
3250 float PSNRV;
3251} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_PSNR_RESOLVED_LAYOUT;
3252
3253typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE
3254{
3255 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER = 0,
3256 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE = 1,
3257} D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE;
3258
3259typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE
3260{
3261 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_DIRTY = 0,
3262 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE_SKIP = 1,
3263} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE;
3264
3265typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
3266{
3267 D3D12_VIDEO_ENCODER_CODEC Codec;
3268 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3269 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3270 DXGI_FORMAT InputFormat;
3271 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3272 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3273 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3274 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3275} D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
3276
3277typedef enum D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE
3278{
3279 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX = 0,
3280 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS = 1,
3281 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS = 2,
3282} D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE;
3283
3284typedef enum D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE
3285{
3286 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_FULL_SEARCH = 0,
3287 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT = 1,
3288 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_START_HINT_LIMITED_DISTANCE = 2,
3289} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE;
3290
3291// D3D12_FEATURE_VIDEO_ENCODER_QPMAP_INPUT
3292typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT
3293{
3294 UINT NodeIndex;
3295 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3296 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3297 BOOL IsSupported;
3298 UINT MapSourcePreferenceRanking;
3299 UINT BlockSize;
3300} D3D12_FEATURE_DATA_VIDEO_ENCODER_QPMAP_INPUT;
3301
3302typedef enum D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS
3303{
3304 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_NONE = 0x0,
3305 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_REPEAT_FRAME = 0x1,
3306 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS = 0x2,
3307 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAG_DIRTY_REGIONS_REQUIRE_FULL_ROW = 0x4,
3308} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS;
3309cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS )")
3310
3311// D3D12_FEATURE_VIDEO_ENCODER_DIRTY_REGIONS
3312typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS
3313{
3314 UINT NodeIndex;
3315 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3316 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3317 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3318 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS SupportFlags;
3319 UINT MapSourcePreferenceRanking;
3320} D3D12_FEATURE_DATA_VIDEO_ENCODER_DIRTY_REGIONS;
3321
3322typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION
3323{
3324 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL = 0,
3325 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL = 1,
3326 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL = 2,
3327} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION;
3328
3329typedef enum D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS {
3330 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_NONE = 0x0,
3331 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_FULL_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_FULL_PIXEL), // 0x1
3332 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_HALF_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_HALF_PIXEL), // 0x2
3333 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAG_QUARTER_PIXEL = (1 << D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_QUARTER_PIXEL), // 0x4
3334} D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS;
3335cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS )")
3336
3337typedef enum D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS
3338{
3339 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_NONE = 0x0,
3340 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_SUPPORTED = 0x1,
3341 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_MULTIPLE_HINTS = 0x2,
3342 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAG_GPU_TEXTURE_MULTIPLE_REFERENCES = 0x4,
3343
3344
3345} D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS;
3346cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS )")
3347
3348// D3D12_FEATURE_VIDEO_ENCODER_MOTION_SEARCH
3349typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
3350{
3351 UINT NodeIndex;
3352 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3353 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3354 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3355 BOOL BidirectionalRefFrameEnabled;
3356 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3357 UINT MaxMotionHints;
3358 UINT MinDeviation;
3359 UINT MaxDeviation;
3360 UINT MapSourcePreferenceRanking;
3361 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
3362} D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;
3363
3364// D3D12_FEATURE_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3365typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT
3366{
3367 UINT NodeIndex;
3368 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3369 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3370 BOOL IsSupported;
3371 UINT64 MaxResolvedBufferAllocationSize;
3372} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT;
3373
3374typedef struct D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION
3375{
3376 BOOL Enabled;
3377 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3378} D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION;
3379
3380typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP
3381{
3382 // Reuse existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1.QPMapRegionPixelsSize for BlockSize
3383 UINT MapSourcePreferenceRanking;
3384} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP;
3385
3386typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION
3387{
3388 BOOL Enabled;
3389 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3390 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3391} D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION;
3392
3393typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS
3394{
3395 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_SUPPORT_FLAGS DirtyRegionsSupportFlags;
3396 UINT MapSourcePreferenceRanking;
3397} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS;
3398
3399typedef struct D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION
3400{
3401 BOOL Enabled;
3402 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3403 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3404 BOOL BidirectionalRefFrameEnabled;
3405} D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION;
3406
3407typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH
3408{
3409 UINT MaxMotionHints;
3410 UINT MinDeviation;
3411 UINT MaxDeviation;
3412 UINT MapSourcePreferenceRanking;
3413 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupportFlags;
3414 D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
3415} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH;
3416
3417typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS
3418{
3419 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_NONE = 0x0,
3420 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED = 0x1,
3421 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED = 0x2,
3422 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED = 0x4,
3423 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_EXTERNAL_DPB_DOWNSCALING = 0x8,
3424 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_1ST_PASS_SKIP = 0x10,
3425 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_DYNAMIC_DOWNSCALE_FACTOR_CHANGE_KEY_FRAME = 0x20,
3426
3427 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_SUPPORTED =
3428 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_INTRACODED_FRAME_SUPPORTED |
3429 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_UNIDIR_INTER_FRAME_SUPPORTED |
3430 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAG_BIDIR_INTER_FRAME_SUPPORTED,
3431
3432} D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS;
3433cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS )")
3434
3435// D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3436typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS
3437{
3438 UINT NodeIndex;
3439 D3D12_VIDEO_ENCODER_CODEC Codec;
3440 D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
3441 D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
3442 DXGI_FORMAT InputFormat;
3443 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
3444 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3445 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3446 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3447 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3448 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3449 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3450 UINT Pow2DownscaleFactor;
3451 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3452} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS;
3453
3454typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS
3455{
3456 D3D12_VIDEO_ENCODER_RATE_CONTROL_FRAME_ANALYSIS_SUPPORT_FLAGS SupportFlags;
3457} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS;
3458
3459typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3460{
3461 /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS */
3462 UINT MaxSubregionsNumber;
3463 UINT MaxIntraRefreshFrameDuration;
3464 UINT SubregionBlockPixelsSize;
3465 UINT QPMapRegionPixelsSize;
3466
3467 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1 */
3468 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_QPMAP QPMap;
3469 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_DIRTY_REGIONS DirtyRegions;
3470 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_MOTION_SEARCH MotionSearch;
3471 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_FRAME_ANALYSIS FrameAnalysis;
3472} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1;
3473
3474typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION
3475{
3476 BOOL Enabled;
3477 UINT Pow2DownscaleFactor;
3478} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION;
3479
3480// D3D12_FEATURE_VIDEO_ENCODER_SUPPORT2
3481typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2
3482{
3483 /*
3484 * Below params match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 binary size
3485 * please note pResolutionDependentSupport type changes from D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS to D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1
3486 */
3487
3488 UINT NodeIndex;
3489 D3D12_VIDEO_ENCODER_CODEC Codec;
3490 DXGI_FORMAT InputFormat;
3491 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3492 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
3493 D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
3494 D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
3495 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
3496 UINT ResolutionsListCount;
3497 const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
3498 UINT MaxReferenceFramesInDPB;
3499 D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
3500 D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
3501 D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
3502 D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
3503 [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS1* pResolutionDependentSupport;
3504 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
3505 UINT MaxQualityVsSpeed;
3506
3507 /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2 */
3508 D3D12_VIDEO_ENCODER_QPMAP_CONFIGURATION QPMap;
3509 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_CONFIGURATION DirtyRegions;
3510 D3D12_VIDEO_ENCODER_MOTION_SEARCH_CONFIGURATION MotionSearch;
3511 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS_CONFIGURATION FrameAnalysis;
3512} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT2;
3513
3514typedef struct D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO
3515{
3516 BOOL FullFrameIdentical;
3517 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3518 UINT NumDirtyRects;
3519 [annotation("_Field_size_full_(NumDirtyRects)")] RECT* pDirtyRects;
3520 UINT SourceDPBFrameReference;
3521} D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO;
3522
3523typedef struct D3D12_VIDEO_ENCODER_DIRTY_REGIONS
3524{
3525 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3526 union
3527 {
3528 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3529 ID3D12Resource* pOpaqueLayoutBuffer;
3530 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3531 D3D12_VIDEO_ENCODER_DIRTY_RECT_INFO* pCPUBuffer;
3532 };
3533} D3D12_VIDEO_ENCODER_DIRTY_REGIONS;
3534
3535typedef struct D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP
3536{
3537 ID3D12Resource* pOpaqueQuantizationMap;
3538} D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP;
3539
3540typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG
3541{
3542 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
3543 UINT SearchDeviationLimit;
3544} D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG;
3545
3546typedef struct D3D12_VIDEO_ENCODER_MOVE_RECT
3547{
3548 POINT SourcePoint;
3549 RECT DestRect;
3550} D3D12_VIDEO_ENCODER_MOVE_RECT;
3551
3552typedef enum D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS
3553{
3554 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_NONE = 0x0,
3555 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAG_MULTIPLE_HINTS = 0x1,
3556} D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS;
3557
3558typedef struct D3D12_VIDEO_ENCODER_MOVEREGION_INFO
3559{
3560 UINT NumMoveRegions;
3561 [annotation("_Field_size_full_(NumMoveRegions)")] D3D12_VIDEO_ENCODER_MOVE_RECT* pMoveRegions;
3562 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3563 UINT SourceDPBFrameReference;
3564 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3565 D3D12_VIDEO_ENCODER_MOVEREGION_INFO_FLAGS Flags;
3566} D3D12_VIDEO_ENCODER_MOVEREGION_INFO;
3567
3568typedef struct D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS
3569{
3570 D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
3571 union
3572 {
3573 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_GPU_TEXTURE
3574 ID3D12Resource* pOpaqueLayoutBuffer;
3575 // Use with: D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE_CPU_BUFFER
3576 D3D12_VIDEO_ENCODER_MOVEREGION_INFO* pCPUBuffer;
3577 };
3578} D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS;
3579
3580typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2
3581{
3582 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
3583 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
3584 UINT slice_pic_parameter_set_id;
3585 UINT PictureOrderCountNumber;
3586 UINT TemporalLayerIndex;
3587 UINT List0ReferenceFramesCount;
3588 [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
3589 UINT List1ReferenceFramesCount;
3590 [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
3591 UINT ReferenceFramesReconPictureDescriptorsCount;
3592 [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
3593 UINT List0RefPicModificationsCount;
3594 [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
3595 UINT List1RefPicModificationsCount;
3596 [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
3597 UINT QPMapValuesCount;
3598 [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
3599 UCHAR diff_cu_chroma_qp_offset_depth;
3600 UCHAR log2_sao_offset_scale_luma;
3601 UCHAR log2_sao_offset_scale_chroma;
3602 UCHAR log2_max_transform_skip_block_size_minus2;
3603 UCHAR chroma_qp_offset_list_len_minus1;
3604 CHAR cb_qp_offset_list[6];
3605 CHAR cr_qp_offset_list[6];
3606 UINT num_ref_idx_l0_active_minus1;
3607 UINT num_ref_idx_l1_active_minus1;
3608} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2;
3609
3610typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1
3611{
3612 UINT DataSize;
3613 union
3614 {
3615 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
3616 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC2* pHEVCPicData;
3617 D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
3618 };
3619} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1;
3620
3621typedef struct D3D12_VIDEO_ENCODER_FRAME_ANALYSIS
3622{
3623 ID3D12Resource* pDownscaledFrame;
3624 UINT64 Subresource;
3625 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES DownscaledReferences;
3626} D3D12_VIDEO_ENCODER_FRAME_ANALYSIS;
3627
3628typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1
3629{
3630 UINT IntraRefreshFrameIndex;
3631 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
3632 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlCodecData;
3633 D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
3634 D3D12_VIDEO_ENCODER_FRAME_MOTION_VECTORS MotionVectors;
3635 D3D12_VIDEO_ENCODER_DIRTY_REGIONS DirtyRects;
3636 D3D12_VIDEO_ENCODER_QUANTIZATION_OPAQUE_MAP QuantizationTextureMap;
3637 D3D12_VIDEO_ENCODER_FRAME_ANALYSIS FrameAnalysis;
3638} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1;
3639
3640typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1
3641{
3642 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
3643 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC1 PictureControlDesc;
3644 ID3D12Resource* pInputFrame;
3645 UINT InputFrameSubresource;
3646 UINT CurrentFrameBitstreamMetadataSize;
3647 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3648} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1;
3649
3650typedef enum D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE
3651{
3652 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_ARRAY_OF_BUFFERS = 0,
3653 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE_SINGLE_BUFFER = 1,
3654} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE;
3655
3656typedef struct D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM
3657{
3658 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM_BUFFER_MODE BufferMode;
3659 UINT ExpectedSubregionCount;
3660 UINT64* pSubregionBitstreamsBaseOffsets;
3661 ID3D12Resource** ppSubregionBitstreams;
3662 ID3D12Resource** ppSubregionSizes;
3663 ID3D12Resource** ppSubregionOffsets;
3664 ID3D12Fence** ppSubregionFences;
3665 UINT64* pSubregionFenceValues;
3666} D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM;
3667
3668typedef enum D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE
3669{
3670 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_FULL_FRAME = 0,
3671 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE_SUBREGIONS = 1,
3672} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE;
3673
3674typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1
3675{
3676 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM_NOTIFICATION_MODE NotificationMode;
3677 union
3678 {
3679 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM FrameOutputBuffer;
3680 D3D12_VIDEO_ENCODER_SUBREGION_COMPRESSED_BITSTREAM SubregionOutputBuffers;
3681 };
3682} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1;
3683
3684typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1
3685{
3686 D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM1 Bitstream;
3687 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
3688 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
3689 D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE FrameAnalysisReconstructedPicture;
3690} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1;
3691
3692typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1
3693{
3694 D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
3695 D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
3696 DXGI_FORMAT EncoderInputFormat;
3697 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
3698 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
3699 D3D12_VIDEO_ENCODER_OPTIONAL_METADATA_ENABLE_FLAGS OptionalMetadata;
3700 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
3701} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1;
3702
3703typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1
3704{
3705 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
3706 ID3D12Resource* pOutputQPMap;
3707 ID3D12Resource* pOutputSATDMap;
3708 ID3D12Resource* pOutputBitAllocationMap;
3709 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedFramePSNRData;
3710 D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedSubregionsPSNRData;
3711} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1;
3712
3713typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX
3714{
3715 ID3D12Resource* pQuantizationMap;
3716} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX;
3717
3718typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS
3719{
3720 BOOL FullFrameIdentical;
3721 D3D12_VIDEO_ENCODER_DIRTY_REGIONS_MAP_VALUES_MODE MapValuesType;
3722 ID3D12Resource* pDirtyRegionsMap;
3723 UINT SourceDPBFrameReference;
3724} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS;
3725
3726typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS
3727{
3728 D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE_CONFIG MotionSearchModeConfiguration;
3729 UINT NumHintsPerPixel;
3730 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMaps;
3731 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsSubresources;
3732 [annotation("_Field_size_full_(NumHintsPerPixel)")] ID3D12Resource** ppMotionVectorMapsMetadata;
3733 [annotation("_Field_size_full_(NumHintsPerPixel)")] UINT* pMotionVectorMapsMetadataSubresources;
3734 D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION MotionUnitPrecision;
3735 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA1 PictureControlConfiguration;
3736} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS;
3737
3738typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_DATA
3739{
3740 D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE MapType;
3741 union
3742 {
3743 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_QUANTIZATION_MATRIX
3744 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_QUANTIZATION_MATRIX Quantization;
3745 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_DIRTY_REGIONS
3746 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_DIRTY_REGIONS DirtyRegions;
3747 // For MapType: D3D12_VIDEO_ENCODER_INPUT_MAP_TYPE_MOTION_VECTORS
3748 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA_MOTION_VECTORS MotionVectors;
3749 };
3750} D3D12_VIDEO_ENCODER_INPUT_MAP_DATA;
3751
3752typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS
3753{
3754 D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
3755 D3D12_VIDEO_ENCODER_INPUT_MAP_DATA InputData;
3756} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS;
3757
3758typedef struct D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS
3759{
3760 ID3D12Resource* pOpaqueLayoutBuffer;
3761} D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS;
3762
3763// Change this interface UUID when changing the base class in the inheritance
3764[uuid(69aeb5b7-55f2-4012-8b73-3a88d65a204c), object, local, pointer_default(unique)]
3765interface ID3D12VideoEncodeCommandList4
3766 : ID3D12VideoEncodeCommandList3
3767{
3768 void EncodeFrame1(
3769 [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
3770 [annotation("_In_")] ID3D12VideoEncoderHeap1* pHeap,
3771 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS1* pInputArguments,
3772 [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS1* pOutputArguments);
3773
3774 void ResolveEncoderOutputMetadata1(
3775 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS1* pInputArguments,
3776 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS1* pOutputArguments);
3777
3778 void ResolveInputParamLayout(
3779 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_INPUT_ARGUMENTS* pInputArguments,
3780 [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_INPUT_PARAM_LAYOUT_OUTPUT_ARGUMENTS* pOutputArguments);
3781}
3782
3783
3784
3785cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
3786#pragma endregion
3787
3788
3789cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
3790cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
3791cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
3792cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
3793cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
3794cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
3795cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
3796cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
3797cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
3798cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
3799cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
3800cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
3801cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
3802cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
3803cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
3804cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
3805cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
3806cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
3807cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);" )
3808cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
3809cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);" )
3810cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
3811cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);" )
3812cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);" )
3813cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);" )
3814cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);" )
3815cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);" )
3816cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);" )
3817cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);" )
3818cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h
new file mode 100644
index 0000000..2e2418d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.h
@@ -0,0 +1,1133 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13/* @@MIDL_FILE_HEADING( ) */
14
15
16
17/* verify that the <rpcndr.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCNDR_H_VERSION__
19#define __REQUIRED_RPCNDR_H_VERSION__ 500
20#endif
21
22/* verify that the <rpcsal.h> version is high enough to compile this file*/
23#ifndef __REQUIRED_RPCSAL_H_VERSION__
24#define __REQUIRED_RPCSAL_H_VERSION__ 100
25#endif
26
27#include "rpc.h"
28#include "rpcndr.h"
29
30#ifndef __RPCNDR_H_VERSION__
31#error this stub requires an updated version of <rpcndr.h>
32#endif /* __RPCNDR_H_VERSION__ */
33
34#ifndef COM_NO_WINDOWS_H
35#include "windows.h"
36#include "ole2.h"
37#endif /*COM_NO_WINDOWS_H*/
38
39#ifndef __d3dcommon_h__
40#define __d3dcommon_h__
41
42#if defined(_MSC_VER) && (_MSC_VER >= 1020)
43#pragma once
44#endif
45
46#ifndef DECLSPEC_XFGVIRT
47#if defined(_CONTROL_FLOW_GUARD_XFG)
48#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
49#else
50#define DECLSPEC_XFGVIRT(base, func)
51#endif
52#endif
53
54/* Forward Declarations */
55
56#ifndef __ID3D10Blob_FWD_DEFINED__
57#define __ID3D10Blob_FWD_DEFINED__
58typedef interface ID3D10Blob ID3D10Blob;
59
60#endif /* __ID3D10Blob_FWD_DEFINED__ */
61
62
63#ifndef __ID3DDestructionNotifier_FWD_DEFINED__
64#define __ID3DDestructionNotifier_FWD_DEFINED__
65typedef interface ID3DDestructionNotifier ID3DDestructionNotifier;
66
67#endif /* __ID3DDestructionNotifier_FWD_DEFINED__ */
68
69
70/* header files for imported files */
71#include "oaidl.h"
72#include "ocidl.h"
73
74#ifdef __cplusplus
75extern "C"{
76#endif
77
78
79/* interface __MIDL_itf_d3dcommon_0000_0000 */
80/* [local] */
81
82typedef
83enum D3D_DRIVER_TYPE
84 {
85 D3D_DRIVER_TYPE_UNKNOWN = 0,
86 D3D_DRIVER_TYPE_HARDWARE = ( D3D_DRIVER_TYPE_UNKNOWN + 1 ) ,
87 D3D_DRIVER_TYPE_REFERENCE = ( D3D_DRIVER_TYPE_HARDWARE + 1 ) ,
88 D3D_DRIVER_TYPE_NULL = ( D3D_DRIVER_TYPE_REFERENCE + 1 ) ,
89 D3D_DRIVER_TYPE_SOFTWARE = ( D3D_DRIVER_TYPE_NULL + 1 ) ,
90 D3D_DRIVER_TYPE_WARP = ( D3D_DRIVER_TYPE_SOFTWARE + 1 )
91 } D3D_DRIVER_TYPE;
92
93typedef
94enum D3D_FEATURE_LEVEL
95 {
96 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
97 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
98 D3D_FEATURE_LEVEL_9_1 = 0x9100,
99 D3D_FEATURE_LEVEL_9_2 = 0x9200,
100 D3D_FEATURE_LEVEL_9_3 = 0x9300,
101 D3D_FEATURE_LEVEL_10_0 = 0xa000,
102 D3D_FEATURE_LEVEL_10_1 = 0xa100,
103 D3D_FEATURE_LEVEL_11_0 = 0xb000,
104 D3D_FEATURE_LEVEL_11_1 = 0xb100,
105 D3D_FEATURE_LEVEL_12_0 = 0xc000,
106 D3D_FEATURE_LEVEL_12_1 = 0xc100,
107 D3D_FEATURE_LEVEL_12_2 = 0xc200
108 } D3D_FEATURE_LEVEL;
109
110#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048
111#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096
112#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048
113#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096
114#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512
115#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096
116#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256
117#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2
118#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535
119#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575
120#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1
121#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4
122#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128
123#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048
124#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192
125typedef
126enum D3D_PRIMITIVE_TOPOLOGY
127 {
128 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
129 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
130 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
131 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
132 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
133 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
134 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
135 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
136 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
137 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
138 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
139 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
140 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
141 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
142 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
143 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
144 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
145 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
146 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
147 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
148 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
149 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
150 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
151 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
152 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
153 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
154 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
155 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
156 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
157 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
158 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
159 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
160 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
161 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
162 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
163 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
164 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
165 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
166 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
167 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
168 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
169 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
170 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
171 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
172 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
173 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
174 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
175 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
176 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
177 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
178 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
179 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
180 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
181 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
182 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
183 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
184 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
185 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
186 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
187 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
188 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
189 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
190 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
191 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
192 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
193 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
194 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
195 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
196 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
197 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
198 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
199 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
200 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
201 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
202 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
203 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
204 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
205 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
206 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
207 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
208 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
209 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
210 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
211 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
212 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
213 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
214 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
215 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
216 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
217 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
218 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
219 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
220 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
221 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
222 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
223 } D3D_PRIMITIVE_TOPOLOGY;
224
225typedef
226enum D3D_PRIMITIVE
227 {
228 D3D_PRIMITIVE_UNDEFINED = 0,
229 D3D_PRIMITIVE_POINT = 1,
230 D3D_PRIMITIVE_LINE = 2,
231 D3D_PRIMITIVE_TRIANGLE = 3,
232 D3D_PRIMITIVE_LINE_ADJ = 6,
233 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
234 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
235 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
236 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
237 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
238 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
239 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
240 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
241 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
242 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
243 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
244 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
245 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
246 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
247 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
248 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
249 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
250 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
251 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
252 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
253 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
254 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
255 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
256 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
257 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
258 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
259 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
260 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
261 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
262 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
263 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
264 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
265 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
266 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
267 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
268 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
269 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
270 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
271 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
272 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
273 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
274 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
275 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
276 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
277 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
278 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
279 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
280 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
281 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
282 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
283 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
284 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
285 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
286 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
287 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
288 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
289 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
290 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
291 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
292 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
293 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
294 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
295 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
296 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
297 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
298 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
299 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
300 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
301 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
302 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
303 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
304 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
305 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
306 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
307 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
308 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
309 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH
310 } D3D_PRIMITIVE;
311
312typedef
313enum D3D_SRV_DIMENSION
314 {
315 D3D_SRV_DIMENSION_UNKNOWN = 0,
316 D3D_SRV_DIMENSION_BUFFER = 1,
317 D3D_SRV_DIMENSION_TEXTURE1D = 2,
318 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
319 D3D_SRV_DIMENSION_TEXTURE2D = 4,
320 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
321 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
322 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
323 D3D_SRV_DIMENSION_TEXTURE3D = 8,
324 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
325 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
326 D3D_SRV_DIMENSION_BUFFEREX = 11,
327 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
328 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
329 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
330 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
331 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
332 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
333 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
334 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
335 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
336 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
337 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
338 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
339 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
340 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
341 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
342 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
343 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
344 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
345 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
346 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
347 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
348 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
349 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
350 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
351 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
352 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
353 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
354 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
355 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
356 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
357 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
358 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
359 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX
360 } D3D_SRV_DIMENSION;
361
362#define D3D_SHADER_FEATURE_DOUBLES 0x00001
363#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002
364#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004
365#define D3D_SHADER_FEATURE_64_UAVS 0x00008
366#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010
367#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020
368#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040
369#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080
370#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100
371#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200
372#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400
373#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800
374#define D3D_SHADER_FEATURE_ROVS 0x01000
375#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000
376#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000
377#define D3D_SHADER_FEATURE_INT64_OPS 0x08000
378#define D3D_SHADER_FEATURE_VIEW_ID 0x10000
379#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000
380#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000
381#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000
382#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000
383#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000
384#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000
385#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000
386#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000
387#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000
388#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000
389#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000
390#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000
391#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000
392#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000
393#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000
394#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull
395#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull
396#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull
397typedef struct _D3D_SHADER_MACRO
398 {
399 LPCSTR Name;
400 LPCSTR Definition;
401 } D3D_SHADER_MACRO;
402
403typedef struct _D3D_SHADER_MACRO *LPD3D_SHADER_MACRO;
404
405DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);
406
407
408extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_c_ifspec;
409extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0000_v0_0_s_ifspec;
410
411#ifndef __ID3D10Blob_INTERFACE_DEFINED__
412#define __ID3D10Blob_INTERFACE_DEFINED__
413
414/* interface ID3D10Blob */
415/* [unique][local][object][uuid] */
416
417
418EXTERN_C const IID IID_ID3D10Blob;
419
420#if defined(__cplusplus) && !defined(CINTERFACE)
421
422 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
423 ID3D10Blob : public IUnknown
424 {
425 public:
426 virtual LPVOID STDMETHODCALLTYPE GetBufferPointer( void) = 0;
427
428 virtual SIZE_T STDMETHODCALLTYPE GetBufferSize( void) = 0;
429
430 };
431
432
433#else /* C style interface */
434
435 typedef struct ID3D10BlobVtbl
436 {
437 BEGIN_INTERFACE
438
439 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
440 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
441 ID3D10Blob * This,
442 /* [in] */ REFIID riid,
443 /* [annotation][iid_is][out] */
444 _COM_Outptr_ void **ppvObject);
445
446 DECLSPEC_XFGVIRT(IUnknown, AddRef)
447 ULONG ( STDMETHODCALLTYPE *AddRef )(
448 ID3D10Blob * This);
449
450 DECLSPEC_XFGVIRT(IUnknown, Release)
451 ULONG ( STDMETHODCALLTYPE *Release )(
452 ID3D10Blob * This);
453
454 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferPointer)
455 LPVOID ( STDMETHODCALLTYPE *GetBufferPointer )(
456 ID3D10Blob * This);
457
458 DECLSPEC_XFGVIRT(ID3D10Blob, GetBufferSize)
459 SIZE_T ( STDMETHODCALLTYPE *GetBufferSize )(
460 ID3D10Blob * This);
461
462 END_INTERFACE
463 } ID3D10BlobVtbl;
464
465 interface ID3D10Blob
466 {
467 CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
468 };
469
470
471
472#ifdef COBJMACROS
473
474
475#define ID3D10Blob_QueryInterface(This,riid,ppvObject) \
476 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
477
478#define ID3D10Blob_AddRef(This) \
479 ( (This)->lpVtbl -> AddRef(This) )
480
481#define ID3D10Blob_Release(This) \
482 ( (This)->lpVtbl -> Release(This) )
483
484
485#define ID3D10Blob_GetBufferPointer(This) \
486 ( (This)->lpVtbl -> GetBufferPointer(This) )
487
488#define ID3D10Blob_GetBufferSize(This) \
489 ( (This)->lpVtbl -> GetBufferSize(This) )
490
491#endif /* COBJMACROS */
492
493
494#endif /* C style interface */
495
496
497
498
499#endif /* __ID3D10Blob_INTERFACE_DEFINED__ */
500
501
502/* interface __MIDL_itf_d3dcommon_0000_0001 */
503/* [local] */
504
505typedef interface ID3D10Blob* LPD3D10BLOB;
506typedef ID3D10Blob ID3DBlob;
507
508typedef ID3DBlob* LPD3DBLOB;
509#define IID_ID3DBlob IID_ID3D10Blob
510typedef void ( __stdcall *PFN_DESTRUCTION_CALLBACK )(
511 void *pData);
512
513
514
515extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_c_ifspec;
516extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0001_v0_0_s_ifspec;
517
518#ifndef __ID3DDestructionNotifier_INTERFACE_DEFINED__
519#define __ID3DDestructionNotifier_INTERFACE_DEFINED__
520
521/* interface ID3DDestructionNotifier */
522/* [unique][local][object][uuid] */
523
524
525EXTERN_C const IID IID_ID3DDestructionNotifier;
526
527#if defined(__cplusplus) && !defined(CINTERFACE)
528
529 MIDL_INTERFACE("a06eb39a-50da-425b-8c31-4eecd6c270f3")
530 ID3DDestructionNotifier : public IUnknown
531 {
532 public:
533 virtual HRESULT STDMETHODCALLTYPE RegisterDestructionCallback(
534 /* [annotation] */
535 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
536 /* [annotation] */
537 _In_ void *pData,
538 /* [annotation] */
539 _Out_ UINT *pCallbackID) = 0;
540
541 virtual HRESULT STDMETHODCALLTYPE UnregisterDestructionCallback(
542 /* [annotation] */
543 _In_ UINT callbackID) = 0;
544
545 };
546
547
548#else /* C style interface */
549
550 typedef struct ID3DDestructionNotifierVtbl
551 {
552 BEGIN_INTERFACE
553
554 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
555 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
556 ID3DDestructionNotifier * This,
557 /* [in] */ REFIID riid,
558 /* [annotation][iid_is][out] */
559 _COM_Outptr_ void **ppvObject);
560
561 DECLSPEC_XFGVIRT(IUnknown, AddRef)
562 ULONG ( STDMETHODCALLTYPE *AddRef )(
563 ID3DDestructionNotifier * This);
564
565 DECLSPEC_XFGVIRT(IUnknown, Release)
566 ULONG ( STDMETHODCALLTYPE *Release )(
567 ID3DDestructionNotifier * This);
568
569 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, RegisterDestructionCallback)
570 HRESULT ( STDMETHODCALLTYPE *RegisterDestructionCallback )(
571 ID3DDestructionNotifier * This,
572 /* [annotation] */
573 _In_ PFN_DESTRUCTION_CALLBACK callbackFn,
574 /* [annotation] */
575 _In_ void *pData,
576 /* [annotation] */
577 _Out_ UINT *pCallbackID);
578
579 DECLSPEC_XFGVIRT(ID3DDestructionNotifier, UnregisterDestructionCallback)
580 HRESULT ( STDMETHODCALLTYPE *UnregisterDestructionCallback )(
581 ID3DDestructionNotifier * This,
582 /* [annotation] */
583 _In_ UINT callbackID);
584
585 END_INTERFACE
586 } ID3DDestructionNotifierVtbl;
587
588 interface ID3DDestructionNotifier
589 {
590 CONST_VTBL struct ID3DDestructionNotifierVtbl *lpVtbl;
591 };
592
593
594
595#ifdef COBJMACROS
596
597
598#define ID3DDestructionNotifier_QueryInterface(This,riid,ppvObject) \
599 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
600
601#define ID3DDestructionNotifier_AddRef(This) \
602 ( (This)->lpVtbl -> AddRef(This) )
603
604#define ID3DDestructionNotifier_Release(This) \
605 ( (This)->lpVtbl -> Release(This) )
606
607
608#define ID3DDestructionNotifier_RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) \
609 ( (This)->lpVtbl -> RegisterDestructionCallback(This,callbackFn,pData,pCallbackID) )
610
611#define ID3DDestructionNotifier_UnregisterDestructionCallback(This,callbackID) \
612 ( (This)->lpVtbl -> UnregisterDestructionCallback(This,callbackID) )
613
614#endif /* COBJMACROS */
615
616
617#endif /* C style interface */
618
619
620
621
622#endif /* __ID3DDestructionNotifier_INTERFACE_DEFINED__ */
623
624
625/* interface __MIDL_itf_d3dcommon_0000_0002 */
626/* [local] */
627
628typedef
629enum _D3D_INCLUDE_TYPE
630 {
631 D3D_INCLUDE_LOCAL = 0,
632 D3D_INCLUDE_SYSTEM = ( D3D_INCLUDE_LOCAL + 1 ) ,
633 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
634 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
635 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
636 } D3D_INCLUDE_TYPE;
637
638typedef interface ID3DInclude ID3DInclude;
639#undef INTERFACE
640#define INTERFACE ID3DInclude
641DECLARE_INTERFACE(ID3DInclude)
642{
643 STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
644 STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
645};
646typedef ID3DInclude* LPD3DINCLUDE;
647typedef
648enum _D3D_SHADER_VARIABLE_CLASS
649 {
650 D3D_SVC_SCALAR = 0,
651 D3D_SVC_VECTOR = ( D3D_SVC_SCALAR + 1 ) ,
652 D3D_SVC_MATRIX_ROWS = ( D3D_SVC_VECTOR + 1 ) ,
653 D3D_SVC_MATRIX_COLUMNS = ( D3D_SVC_MATRIX_ROWS + 1 ) ,
654 D3D_SVC_OBJECT = ( D3D_SVC_MATRIX_COLUMNS + 1 ) ,
655 D3D_SVC_STRUCT = ( D3D_SVC_OBJECT + 1 ) ,
656 D3D_SVC_INTERFACE_CLASS = ( D3D_SVC_STRUCT + 1 ) ,
657 D3D_SVC_INTERFACE_POINTER = ( D3D_SVC_INTERFACE_CLASS + 1 ) ,
658 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
659 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
660 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
661 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
662 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
663 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
664 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
665 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
666 D3D_SVC_FORCE_DWORD = 0x7fffffff
667 } D3D_SHADER_VARIABLE_CLASS;
668
669typedef
670enum _D3D_SHADER_VARIABLE_FLAGS
671 {
672 D3D_SVF_USERPACKED = 1,
673 D3D_SVF_USED = 2,
674 D3D_SVF_INTERFACE_POINTER = 4,
675 D3D_SVF_INTERFACE_PARAMETER = 8,
676 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
677 D3D10_SVF_USED = D3D_SVF_USED,
678 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
679 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
680 D3D_SVF_FORCE_DWORD = 0x7fffffff
681 } D3D_SHADER_VARIABLE_FLAGS;
682
683typedef
684enum _D3D_SHADER_VARIABLE_TYPE
685 {
686 D3D_SVT_VOID = 0,
687 D3D_SVT_BOOL = 1,
688 D3D_SVT_INT = 2,
689 D3D_SVT_FLOAT = 3,
690 D3D_SVT_STRING = 4,
691 D3D_SVT_TEXTURE = 5,
692 D3D_SVT_TEXTURE1D = 6,
693 D3D_SVT_TEXTURE2D = 7,
694 D3D_SVT_TEXTURE3D = 8,
695 D3D_SVT_TEXTURECUBE = 9,
696 D3D_SVT_SAMPLER = 10,
697 D3D_SVT_SAMPLER1D = 11,
698 D3D_SVT_SAMPLER2D = 12,
699 D3D_SVT_SAMPLER3D = 13,
700 D3D_SVT_SAMPLERCUBE = 14,
701 D3D_SVT_PIXELSHADER = 15,
702 D3D_SVT_VERTEXSHADER = 16,
703 D3D_SVT_PIXELFRAGMENT = 17,
704 D3D_SVT_VERTEXFRAGMENT = 18,
705 D3D_SVT_UINT = 19,
706 D3D_SVT_UINT8 = 20,
707 D3D_SVT_GEOMETRYSHADER = 21,
708 D3D_SVT_RASTERIZER = 22,
709 D3D_SVT_DEPTHSTENCIL = 23,
710 D3D_SVT_BLEND = 24,
711 D3D_SVT_BUFFER = 25,
712 D3D_SVT_CBUFFER = 26,
713 D3D_SVT_TBUFFER = 27,
714 D3D_SVT_TEXTURE1DARRAY = 28,
715 D3D_SVT_TEXTURE2DARRAY = 29,
716 D3D_SVT_RENDERTARGETVIEW = 30,
717 D3D_SVT_DEPTHSTENCILVIEW = 31,
718 D3D_SVT_TEXTURE2DMS = 32,
719 D3D_SVT_TEXTURE2DMSARRAY = 33,
720 D3D_SVT_TEXTURECUBEARRAY = 34,
721 D3D_SVT_HULLSHADER = 35,
722 D3D_SVT_DOMAINSHADER = 36,
723 D3D_SVT_INTERFACE_POINTER = 37,
724 D3D_SVT_COMPUTESHADER = 38,
725 D3D_SVT_DOUBLE = 39,
726 D3D_SVT_RWTEXTURE1D = 40,
727 D3D_SVT_RWTEXTURE1DARRAY = 41,
728 D3D_SVT_RWTEXTURE2D = 42,
729 D3D_SVT_RWTEXTURE2DARRAY = 43,
730 D3D_SVT_RWTEXTURE3D = 44,
731 D3D_SVT_RWBUFFER = 45,
732 D3D_SVT_BYTEADDRESS_BUFFER = 46,
733 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
734 D3D_SVT_STRUCTURED_BUFFER = 48,
735 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
736 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
737 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
738 D3D_SVT_MIN8FLOAT = 52,
739 D3D_SVT_MIN10FLOAT = 53,
740 D3D_SVT_MIN16FLOAT = 54,
741 D3D_SVT_MIN12INT = 55,
742 D3D_SVT_MIN16INT = 56,
743 D3D_SVT_MIN16UINT = 57,
744 D3D_SVT_INT16 = 58,
745 D3D_SVT_UINT16 = 59,
746 D3D_SVT_FLOAT16 = 60,
747 D3D_SVT_INT64 = 61,
748 D3D_SVT_UINT64 = 62,
749 D3D10_SVT_VOID = D3D_SVT_VOID,
750 D3D10_SVT_BOOL = D3D_SVT_BOOL,
751 D3D10_SVT_INT = D3D_SVT_INT,
752 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
753 D3D10_SVT_STRING = D3D_SVT_STRING,
754 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
755 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
756 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
757 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
758 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
759 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
760 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
761 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
762 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
763 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
764 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
765 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
766 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
767 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
768 D3D10_SVT_UINT = D3D_SVT_UINT,
769 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
770 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
771 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
772 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
773 D3D10_SVT_BLEND = D3D_SVT_BLEND,
774 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
775 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
776 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
777 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
778 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
779 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
780 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
781 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
782 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
783 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
784 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
785 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
786 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
787 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
788 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
789 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
790 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
791 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
792 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
793 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
794 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
795 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
796 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
797 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
798 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
799 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
800 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
801 D3D_SVT_FORCE_DWORD = 0x7fffffff
802 } D3D_SHADER_VARIABLE_TYPE;
803
804typedef
805enum _D3D_SHADER_INPUT_FLAGS
806 {
807 D3D_SIF_USERPACKED = 0x1,
808 D3D_SIF_COMPARISON_SAMPLER = 0x2,
809 D3D_SIF_TEXTURE_COMPONENT_0 = 0x4,
810 D3D_SIF_TEXTURE_COMPONENT_1 = 0x8,
811 D3D_SIF_TEXTURE_COMPONENTS = 0xc,
812 D3D_SIF_UNUSED = 0x10,
813 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
814 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
815 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
816 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
817 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
818 D3D_SIF_FORCE_DWORD = 0x7fffffff
819 } D3D_SHADER_INPUT_FLAGS;
820
821typedef
822enum _D3D_SHADER_INPUT_TYPE
823 {
824 D3D_SIT_CBUFFER = 0,
825 D3D_SIT_TBUFFER = ( D3D_SIT_CBUFFER + 1 ) ,
826 D3D_SIT_TEXTURE = ( D3D_SIT_TBUFFER + 1 ) ,
827 D3D_SIT_SAMPLER = ( D3D_SIT_TEXTURE + 1 ) ,
828 D3D_SIT_UAV_RWTYPED = ( D3D_SIT_SAMPLER + 1 ) ,
829 D3D_SIT_STRUCTURED = ( D3D_SIT_UAV_RWTYPED + 1 ) ,
830 D3D_SIT_UAV_RWSTRUCTURED = ( D3D_SIT_STRUCTURED + 1 ) ,
831 D3D_SIT_BYTEADDRESS = ( D3D_SIT_UAV_RWSTRUCTURED + 1 ) ,
832 D3D_SIT_UAV_RWBYTEADDRESS = ( D3D_SIT_BYTEADDRESS + 1 ) ,
833 D3D_SIT_UAV_APPEND_STRUCTURED = ( D3D_SIT_UAV_RWBYTEADDRESS + 1 ) ,
834 D3D_SIT_UAV_CONSUME_STRUCTURED = ( D3D_SIT_UAV_APPEND_STRUCTURED + 1 ) ,
835 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = ( D3D_SIT_UAV_CONSUME_STRUCTURED + 1 ) ,
836 D3D_SIT_RTACCELERATIONSTRUCTURE = ( D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1 ) ,
837 D3D_SIT_UAV_FEEDBACKTEXTURE = ( D3D_SIT_RTACCELERATIONSTRUCTURE + 1 ) ,
838 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
839 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
840 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
841 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
842 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
843 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
844 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
845 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
846 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
847 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
848 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
849 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER
850 } D3D_SHADER_INPUT_TYPE;
851
852typedef
853enum _D3D_SHADER_CBUFFER_FLAGS
854 {
855 D3D_CBF_USERPACKED = 1,
856 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
857 D3D_CBF_FORCE_DWORD = 0x7fffffff
858 } D3D_SHADER_CBUFFER_FLAGS;
859
860typedef
861enum _D3D_CBUFFER_TYPE
862 {
863 D3D_CT_CBUFFER = 0,
864 D3D_CT_TBUFFER = ( D3D_CT_CBUFFER + 1 ) ,
865 D3D_CT_INTERFACE_POINTERS = ( D3D_CT_TBUFFER + 1 ) ,
866 D3D_CT_RESOURCE_BIND_INFO = ( D3D_CT_INTERFACE_POINTERS + 1 ) ,
867 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
868 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
869 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
870 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
871 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
872 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO
873 } D3D_CBUFFER_TYPE;
874
875typedef
876enum D3D_NAME
877 {
878 D3D_NAME_UNDEFINED = 0,
879 D3D_NAME_POSITION = 1,
880 D3D_NAME_CLIP_DISTANCE = 2,
881 D3D_NAME_CULL_DISTANCE = 3,
882 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
883 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
884 D3D_NAME_VERTEX_ID = 6,
885 D3D_NAME_PRIMITIVE_ID = 7,
886 D3D_NAME_INSTANCE_ID = 8,
887 D3D_NAME_IS_FRONT_FACE = 9,
888 D3D_NAME_SAMPLE_INDEX = 10,
889 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
890 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
891 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
892 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
893 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
894 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
895 D3D_NAME_BARYCENTRICS = 23,
896 D3D_NAME_SHADINGRATE = 24,
897 D3D_NAME_CULLPRIMITIVE = 25,
898 D3D_NAME_TARGET = 64,
899 D3D_NAME_DEPTH = 65,
900 D3D_NAME_COVERAGE = 66,
901 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
902 D3D_NAME_DEPTH_LESS_EQUAL = 68,
903 D3D_NAME_STENCIL_REF = 69,
904 D3D_NAME_INNER_COVERAGE = 70,
905 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
906 D3D10_NAME_POSITION = D3D_NAME_POSITION,
907 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
908 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
909 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
910 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
911 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
912 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
913 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
914 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
915 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
916 D3D10_NAME_TARGET = D3D_NAME_TARGET,
917 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
918 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
919 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
920 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
921 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
922 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
923 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
924 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
925 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
926 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
927 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
928 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
929 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
930 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
931 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE
932 } D3D_NAME;
933
934typedef
935enum D3D_RESOURCE_RETURN_TYPE
936 {
937 D3D_RETURN_TYPE_UNORM = 1,
938 D3D_RETURN_TYPE_SNORM = 2,
939 D3D_RETURN_TYPE_SINT = 3,
940 D3D_RETURN_TYPE_UINT = 4,
941 D3D_RETURN_TYPE_FLOAT = 5,
942 D3D_RETURN_TYPE_MIXED = 6,
943 D3D_RETURN_TYPE_DOUBLE = 7,
944 D3D_RETURN_TYPE_CONTINUED = 8,
945 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
946 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
947 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
948 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
949 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
950 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
951 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
952 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
953 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
954 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
955 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
956 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
957 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
958 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED
959 } D3D_RESOURCE_RETURN_TYPE;
960
961typedef
962enum D3D_REGISTER_COMPONENT_TYPE
963 {
964 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
965 D3D_REGISTER_COMPONENT_UINT32 = 1,
966 D3D_REGISTER_COMPONENT_SINT32 = 2,
967 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
968 D3D_REGISTER_COMPONENT_UINT16 = 4,
969 D3D_REGISTER_COMPONENT_SINT16 = 5,
970 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
971 D3D_REGISTER_COMPONENT_UINT64 = 7,
972 D3D_REGISTER_COMPONENT_SINT64 = 8,
973 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
974 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
975 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
976 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
977 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
978 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
979 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
980 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
981 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
982 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
983 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64
984 } D3D_REGISTER_COMPONENT_TYPE;
985
986typedef
987enum D3D_TESSELLATOR_DOMAIN
988 {
989 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
990 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
991 D3D_TESSELLATOR_DOMAIN_TRI = 2,
992 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
993 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
994 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
995 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
996 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD
997 } D3D_TESSELLATOR_DOMAIN;
998
999typedef
1000enum D3D_TESSELLATOR_PARTITIONING
1001 {
1002 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
1003 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
1004 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
1005 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
1006 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
1007 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
1008 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
1009 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
1010 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
1011 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN
1012 } D3D_TESSELLATOR_PARTITIONING;
1013
1014typedef
1015enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
1016 {
1017 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
1018 D3D_TESSELLATOR_OUTPUT_POINT = 1,
1019 D3D_TESSELLATOR_OUTPUT_LINE = 2,
1020 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
1021 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
1022 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
1023 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
1024 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
1025 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
1026 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW
1027 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
1028
1029typedef
1030enum D3D_MIN_PRECISION
1031 {
1032 D3D_MIN_PRECISION_DEFAULT = 0,
1033 D3D_MIN_PRECISION_FLOAT_16 = 1,
1034 D3D_MIN_PRECISION_FLOAT_2_8 = 2,
1035 D3D_MIN_PRECISION_RESERVED = 3,
1036 D3D_MIN_PRECISION_SINT_16 = 4,
1037 D3D_MIN_PRECISION_UINT_16 = 5,
1038 D3D_MIN_PRECISION_ANY_16 = 0xf0,
1039 D3D_MIN_PRECISION_ANY_10 = 0xf1
1040 } D3D_MIN_PRECISION;
1041
1042typedef
1043enum D3D_INTERPOLATION_MODE
1044 {
1045 D3D_INTERPOLATION_UNDEFINED = 0,
1046 D3D_INTERPOLATION_CONSTANT = 1,
1047 D3D_INTERPOLATION_LINEAR = 2,
1048 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
1049 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
1050 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
1051 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
1052 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7
1053 } D3D_INTERPOLATION_MODE;
1054
1055typedef
1056enum _D3D_PARAMETER_FLAGS
1057 {
1058 D3D_PF_NONE = 0,
1059 D3D_PF_IN = 0x1,
1060 D3D_PF_OUT = 0x2,
1061 D3D_PF_FORCE_DWORD = 0x7fffffff
1062 } D3D_PARAMETER_FLAGS;
1063
1064typedef
1065enum D3D_FORMAT_LAYOUT
1066 {
1067 D3DFL_STANDARD = 0,
1068 D3DFL_CUSTOM = -1
1069 } D3D_FORMAT_LAYOUT;
1070
1071typedef
1072enum D3D_FORMAT_TYPE_LEVEL
1073 {
1074 D3DFTL_NO_TYPE = 0,
1075 D3DFTL_PARTIAL_TYPE = -2,
1076 D3DFTL_FULL_TYPE = -1
1077 } D3D_FORMAT_TYPE_LEVEL;
1078
1079typedef
1080enum D3D_FORMAT_COMPONENT_NAME
1081 {
1082 D3DFCN_R = -4,
1083 D3DFCN_G = -3,
1084 D3DFCN_B = -2,
1085 D3DFCN_A = -1,
1086 D3DFCN_D = 0,
1087 D3DFCN_S = 1,
1088 D3DFCN_X = 2
1089 } D3D_FORMAT_COMPONENT_NAME;
1090
1091typedef
1092enum D3D_FORMAT_COMPONENT_INTERPRETATION
1093 {
1094 D3DFCI_TYPELESS = 0,
1095 D3DFCI_FLOAT = -4,
1096 D3DFCI_SNORM = -3,
1097 D3DFCI_UNORM = -2,
1098 D3DFCI_SINT = -1,
1099 D3DFCI_UINT = 1,
1100 D3DFCI_UNORM_SRGB = 2,
1101 D3DFCI_BIASED_FIXED_2_8 = 3
1102 } D3D_FORMAT_COMPONENT_INTERPRETATION;
1103
1104DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);
1105DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);
1106DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);
1107DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);
1108#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)
1109#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)
1110#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)
1111#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)
1112#define D3D_COMPONENT_MASK_X 1
1113#define D3D_COMPONENT_MASK_Y 2
1114#define D3D_COMPONENT_MASK_Z 4
1115#define D3D_COMPONENT_MASK_W 8
1116DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);
1117DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);
1118
1119
1120extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_c_ifspec;
1121extern RPC_IF_HANDLE __MIDL_itf_d3dcommon_0000_0002_v0_0_s_ifspec;
1122
1123/* Additional Prototypes for ALL interfaces */
1124
1125/* end of Additional Prototypes */
1126
1127#ifdef __cplusplus
1128}
1129#endif
1130
1131#endif
1132
1133
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl
new file mode 100644
index 0000000..bfa375d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dcommon.idl
@@ -0,0 +1,991 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7import "oaidl.idl";
8import "ocidl.idl";
9
10//----------------------------------------------------------------------------
11//
12// D3D-version-neutral runtime information.
13//
14//----------------------------------------------------------------------------
15
16typedef enum D3D_DRIVER_TYPE
17{
18 D3D_DRIVER_TYPE_UNKNOWN,
19 D3D_DRIVER_TYPE_HARDWARE,
20 D3D_DRIVER_TYPE_REFERENCE,
21 D3D_DRIVER_TYPE_NULL,
22 D3D_DRIVER_TYPE_SOFTWARE,
23 D3D_DRIVER_TYPE_WARP,
24} D3D_DRIVER_TYPE;
25
26typedef enum D3D_FEATURE_LEVEL
27{
28 D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
29 D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
30 D3D_FEATURE_LEVEL_9_1 = 0x9100,
31 D3D_FEATURE_LEVEL_9_2 = 0x9200,
32 D3D_FEATURE_LEVEL_9_3 = 0x9300,
33 D3D_FEATURE_LEVEL_10_0 = 0xa000,
34 D3D_FEATURE_LEVEL_10_1 = 0xa100,
35 D3D_FEATURE_LEVEL_11_0 = 0xb000,
36 D3D_FEATURE_LEVEL_11_1 = 0xb100,
37 D3D_FEATURE_LEVEL_12_0 = 0xc000,
38 D3D_FEATURE_LEVEL_12_1 = 0xc100,
39 D3D_FEATURE_LEVEL_12_2 = 0xc200
40} D3D_FEATURE_LEVEL;
41
42cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION 2048")
43cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION 4096")
44cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION 2048")
45cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION 4096")
46cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION 512")
47cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION 4096")
48cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 256")
49cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY 2")
50cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT 65535")
51cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT 1048575")
52cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT 1")
53cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT 4")
54cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT 128")
55cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT 2048")
56cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT 8192")
57
58typedef enum D3D_PRIMITIVE_TOPOLOGY
59{
60 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
61 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
62 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
63 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
64 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
65 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
66 D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
67 // Adjacency values should be equal to (0x8 & non-adjacency):
68 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
69 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
70 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
71 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
72 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
73 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
74 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
75 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
76 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
77 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
78 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
79 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
80 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
81 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
82 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
83 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
84 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
85 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
86 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
87 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
88 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
89 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
90 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
91 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
92 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
93 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
94 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
95 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
96 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
97 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
98 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
99 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
100 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
101 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
102 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
103 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
104
105 D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
106 D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
107 D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
108 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
109 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
110 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
111 D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
112 D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
113 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
114 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
115
116 D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
117 D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
118 D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
119 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
120 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
121 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
122 D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
123 D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
124 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
125 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
126 D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
127 D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
128 D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
129 D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
130 D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
131 D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
132 D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
133 D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
134 D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
135 D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
136 D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
137 D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
138 D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
139 D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
140 D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
141 D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
142 D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
143 D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
144 D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
145 D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
146 D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
147 D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
148 D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
149 D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
150 D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
151 D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
152 D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
153 D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
154 D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
155 D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
156 D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
157 D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
158} D3D_PRIMITIVE_TOPOLOGY;
159
160typedef enum D3D_PRIMITIVE
161{
162 D3D_PRIMITIVE_UNDEFINED = 0,
163 D3D_PRIMITIVE_POINT = 1,
164 D3D_PRIMITIVE_LINE = 2,
165 D3D_PRIMITIVE_TRIANGLE = 3,
166 // Adjacency values should be equal to (0x4 & non-adjacency):
167 D3D_PRIMITIVE_LINE_ADJ = 6,
168 D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
169 D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
170 D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
171 D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
172 D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
173 D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
174 D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
175 D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
176 D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
177 D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
178 D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
179 D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
180 D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
181 D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
182 D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
183 D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
184 D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
185 D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
186 D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
187 D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
188 D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
189 D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
190 D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
191 D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
192 D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
193 D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
194 D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
195 D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
196 D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
197 D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
198 D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
199 D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
200 D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
201
202 D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
203 D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
204 D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
205 D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
206 D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
207 D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
208
209 D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
210 D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
211 D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
212 D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
213 D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
214 D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
215 D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
216 D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
217 D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
218 D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
219 D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
220 D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
221 D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
222 D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
223 D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
224 D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
225 D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
226 D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
227 D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
228 D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
229 D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
230 D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
231 D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
232 D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
233 D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
234 D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
235 D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
236 D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
237 D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
238 D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
239 D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
240 D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
241 D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
242 D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
243 D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
244 D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
245 D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
246 D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
247} D3D_PRIMITIVE;
248
249typedef enum D3D_SRV_DIMENSION
250{
251 D3D_SRV_DIMENSION_UNKNOWN = 0,
252 D3D_SRV_DIMENSION_BUFFER = 1,
253 D3D_SRV_DIMENSION_TEXTURE1D = 2,
254 D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
255 D3D_SRV_DIMENSION_TEXTURE2D = 4,
256 D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
257 D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
258 D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
259 D3D_SRV_DIMENSION_TEXTURE3D = 8,
260 D3D_SRV_DIMENSION_TEXTURECUBE = 9,
261 D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
262 D3D_SRV_DIMENSION_BUFFEREX = 11,
263
264 D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
265 D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
266 D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
267 D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
268 D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
269 D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
270 D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
271 D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
272 D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
273 D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
274
275 D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
276 D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
277 D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
278 D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
279 D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
280 D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
281 D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
282 D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
283 D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
284 D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
285 D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
286
287 D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
288 D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
289 D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
290 D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
291 D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
292 D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
293 D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
294 D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
295 D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
296 D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
297 D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
298 D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
299} D3D_SRV_DIMENSION;
300
301// Bits in shaders indicating features they use which the runtime checks against current device support:
302cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES 0x00001")
303cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
304cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE 0x00004")
305cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS 0x00008")
306cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION 0x00010")
307cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS 0x00020")
308cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS 0x00040")
309cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING 0x00080")
310cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES 0x00100")
311cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF 0x00200")
312cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE 0x00400")
313cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS 0x00800")
314cpp_quote("#define D3D_SHADER_FEATURE_ROVS 0x01000")
315cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
316cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS 0x04000")
317cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS 0x08000")
318cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID 0x10000")
319cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS 0x20000")
320cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS 0x40000")
321cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE 0x80000")
322cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1 0x100000")
323cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK 0x200000")
324cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE 0x400000")
325cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED 0x800000")
326cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 0x1000000")
327cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 0x2000000")
328cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 0x4000000")
329cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA 0x8000000")
330cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 0x10000000")
331cpp_quote("#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS 0x20000000")
332cpp_quote("#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES 0x40000000")
333cpp_quote("#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS 0x80000000")
334cpp_quote("#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO 0x100000000ull")
335
336// This section is for flags that do not directly indicate a required feature,
337// but are used to indicate something about the shader.
338
339// Flag for any derivative use. This allows call-graph validation
340// in the runtime to detect misuse of derivatives for an entry point that cannot
341// support it, or to determine when the flag
342// D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS is required.
343cpp_quote("#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES 0x0000010000000000ull")
344
345cpp_quote("#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP 0x0000020000000000ull")
346
347
348// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
349// When adding entries here, make sure they don't conflict with what's there.
350
351//----------------------------------------------------------------------------
352//
353// Shader compilation information.
354//
355//----------------------------------------------------------------------------
356
357//----------------------------------------------------------------------------
358// D3D_SHADER_MACRO:
359// ----------
360// Preprocessor macro definition. The application pass in a NULL-terminated
361// array of this structure to various D3D APIs. This enables the application
362// to #define tokens at runtime, before the file is parsed.
363//----------------------------------------------------------------------------
364
365typedef struct _D3D_SHADER_MACRO
366{
367 LPCSTR Name;
368 LPCSTR Definition;
369} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
370
371//----------------------------------------------------------------------------
372// ID3DBlob:
373// ------------
374// The buffer object is used by D3D to return arbitrary size data.
375// For compatibility with D3D10 this interface is also called ID3D10Blob,
376// but the version-neutral form is preferred.
377//
378// GetBufferPointer -
379// Returns a pointer to the beginning of the buffer.
380//
381// GetBufferSize -
382// Returns the size of the buffer, in bytes.
383//----------------------------------------------------------------------------
384
385// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
386cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
387
388[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
389interface ID3D10Blob : IUnknown
390{
391 LPVOID GetBufferPointer();
392 SIZE_T GetBufferSize();
393};
394
395cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
396
397typedef ID3D10Blob ID3DBlob;
398cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
399cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
400
401// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
402typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
403
404[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
405interface ID3DDestructionNotifier
406 : IUnknown
407{
408 HRESULT RegisterDestructionCallback(
409 [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
410 [annotation("_In_")] void* pData,
411 [annotation("_Out_")] UINT* pCallbackID
412 );
413 HRESULT UnregisterDestructionCallback(
414 [annotation("_In_")] UINT callbackID
415 );
416};
417
418typedef enum _D3D_INCLUDE_TYPE
419{
420 D3D_INCLUDE_LOCAL,
421 D3D_INCLUDE_SYSTEM,
422
423 D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
424 D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
425
426 // force 32-bit size enum
427 D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
428} D3D_INCLUDE_TYPE;
429
430//----------------------------------------------------------------------------
431// ID3DInclude:
432// -------------
433// This interface is intended to be implemented by the application, and can
434// be used by various D3D APIs. This enables application-specific handling
435// of #include directives in source files.
436//
437// Open()
438// Opens an include file. If successful, it should fill in ppData and
439// pBytes. The data pointer returned must remain valid until Close is
440// subsequently called. The name of the file is encoded in UTF-8 format.
441// Close()
442// Closes an include file. If Open was successful, Close is guaranteed
443// to be called before the API using this interface returns.
444//----------------------------------------------------------------------------
445
446cpp_quote("typedef interface ID3DInclude ID3DInclude;")
447
448cpp_quote("#undef INTERFACE")
449cpp_quote("#define INTERFACE ID3DInclude")
450
451cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
452cpp_quote("{")
453cpp_quote(" STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
454cpp_quote(" STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
455cpp_quote("};")
456
457cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
458
459//----------------------------------------------------------------------------
460//
461// Shader reflection information.
462//
463//----------------------------------------------------------------------------
464
465typedef enum _D3D_SHADER_VARIABLE_CLASS
466{
467 D3D_SVC_SCALAR,
468 D3D_SVC_VECTOR,
469 D3D_SVC_MATRIX_ROWS,
470 D3D_SVC_MATRIX_COLUMNS,
471 D3D_SVC_OBJECT,
472 D3D_SVC_STRUCT,
473 D3D_SVC_INTERFACE_CLASS,
474 D3D_SVC_INTERFACE_POINTER,
475
476 D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
477 D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
478 D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
479 D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
480 D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
481 D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
482
483 D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
484 D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
485
486 // force 32-bit size enum
487 D3D_SVC_FORCE_DWORD = 0x7fffffff
488} D3D_SHADER_VARIABLE_CLASS;
489
490typedef enum _D3D_SHADER_VARIABLE_FLAGS
491{
492 D3D_SVF_USERPACKED = 1,
493 D3D_SVF_USED = 2,
494
495 D3D_SVF_INTERFACE_POINTER = 4,
496 D3D_SVF_INTERFACE_PARAMETER = 8,
497
498 D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
499 D3D10_SVF_USED = D3D_SVF_USED,
500
501 D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
502 D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
503
504 // force 32-bit size enum
505 D3D_SVF_FORCE_DWORD = 0x7fffffff
506} D3D_SHADER_VARIABLE_FLAGS;
507
508typedef enum _D3D_SHADER_VARIABLE_TYPE
509{
510 D3D_SVT_VOID = 0,
511 D3D_SVT_BOOL = 1,
512 D3D_SVT_INT = 2,
513 D3D_SVT_FLOAT = 3,
514 D3D_SVT_STRING = 4,
515 D3D_SVT_TEXTURE = 5,
516 D3D_SVT_TEXTURE1D = 6,
517 D3D_SVT_TEXTURE2D = 7,
518 D3D_SVT_TEXTURE3D = 8,
519 D3D_SVT_TEXTURECUBE = 9,
520 D3D_SVT_SAMPLER = 10,
521 D3D_SVT_SAMPLER1D = 11,
522 D3D_SVT_SAMPLER2D = 12,
523 D3D_SVT_SAMPLER3D = 13,
524 D3D_SVT_SAMPLERCUBE = 14,
525 D3D_SVT_PIXELSHADER = 15,
526 D3D_SVT_VERTEXSHADER = 16,
527 D3D_SVT_PIXELFRAGMENT = 17,
528 D3D_SVT_VERTEXFRAGMENT = 18,
529 D3D_SVT_UINT = 19,
530 D3D_SVT_UINT8 = 20,
531 D3D_SVT_GEOMETRYSHADER = 21,
532 D3D_SVT_RASTERIZER = 22,
533 D3D_SVT_DEPTHSTENCIL = 23,
534 D3D_SVT_BLEND = 24,
535 D3D_SVT_BUFFER = 25,
536 D3D_SVT_CBUFFER = 26,
537 D3D_SVT_TBUFFER = 27,
538 D3D_SVT_TEXTURE1DARRAY = 28,
539 D3D_SVT_TEXTURE2DARRAY = 29,
540 D3D_SVT_RENDERTARGETVIEW = 30,
541 D3D_SVT_DEPTHSTENCILVIEW = 31,
542
543 D3D_SVT_TEXTURE2DMS = 32,
544 D3D_SVT_TEXTURE2DMSARRAY = 33,
545
546 D3D_SVT_TEXTURECUBEARRAY = 34,
547
548 D3D_SVT_HULLSHADER = 35,
549 D3D_SVT_DOMAINSHADER = 36,
550
551 D3D_SVT_INTERFACE_POINTER = 37,
552 D3D_SVT_COMPUTESHADER = 38,
553
554 D3D_SVT_DOUBLE = 39,
555
556 D3D_SVT_RWTEXTURE1D = 40,
557 D3D_SVT_RWTEXTURE1DARRAY = 41,
558 D3D_SVT_RWTEXTURE2D = 42,
559 D3D_SVT_RWTEXTURE2DARRAY = 43,
560 D3D_SVT_RWTEXTURE3D = 44,
561 D3D_SVT_RWBUFFER = 45,
562
563 D3D_SVT_BYTEADDRESS_BUFFER = 46,
564 D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
565 D3D_SVT_STRUCTURED_BUFFER = 48,
566 D3D_SVT_RWSTRUCTURED_BUFFER = 49,
567 D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
568 D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
569
570 D3D_SVT_MIN8FLOAT = 52,
571 D3D_SVT_MIN10FLOAT = 53,
572 D3D_SVT_MIN16FLOAT = 54,
573 D3D_SVT_MIN12INT = 55,
574 D3D_SVT_MIN16INT = 56,
575 D3D_SVT_MIN16UINT = 57,
576
577 D3D_SVT_INT16 = 58,
578 D3D_SVT_UINT16 = 59,
579 D3D_SVT_FLOAT16 = 60,
580 D3D_SVT_INT64 = 61,
581 D3D_SVT_UINT64 = 62,
582
583 D3D10_SVT_VOID = D3D_SVT_VOID,
584 D3D10_SVT_BOOL = D3D_SVT_BOOL,
585 D3D10_SVT_INT = D3D_SVT_INT,
586 D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
587 D3D10_SVT_STRING = D3D_SVT_STRING,
588 D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
589 D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
590 D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
591 D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
592 D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
593 D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
594 D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
595 D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
596 D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
597 D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
598 D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
599 D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
600 D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
601 D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
602 D3D10_SVT_UINT = D3D_SVT_UINT,
603 D3D10_SVT_UINT8 = D3D_SVT_UINT8,
604 D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
605 D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
606 D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
607 D3D10_SVT_BLEND = D3D_SVT_BLEND,
608 D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
609 D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
610 D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
611 D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
612 D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
613 D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
614 D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
615
616 D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
617 D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
618
619 D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
620
621 D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
622 D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
623
624 D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
625 D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
626
627 D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
628
629 D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
630 D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
631 D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
632 D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
633 D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
634 D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
635
636 D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
637 D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
638 D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
639 D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
640 D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
641 D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
642
643 // force 32-bit size enum
644 D3D_SVT_FORCE_DWORD = 0x7fffffff
645} D3D_SHADER_VARIABLE_TYPE;
646
647typedef enum _D3D_SHADER_INPUT_FLAGS
648{
649 D3D_SIF_USERPACKED = 0x01,
650 D3D_SIF_COMPARISON_SAMPLER = 0x02, // is this a comparison sampler?
651 D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
652 D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
653 D3D_SIF_TEXTURE_COMPONENTS = 0x0c,
654 D3D_SIF_UNUSED = 0x10,
655
656 D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
657 D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
658 D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
659 D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
660 D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
661
662 // force 32-bit size enum
663 D3D_SIF_FORCE_DWORD = 0x7fffffff
664} D3D_SHADER_INPUT_FLAGS;
665
666typedef enum _D3D_SHADER_INPUT_TYPE
667{
668 D3D_SIT_CBUFFER,
669 D3D_SIT_TBUFFER,
670 D3D_SIT_TEXTURE,
671 D3D_SIT_SAMPLER,
672 D3D_SIT_UAV_RWTYPED,
673 D3D_SIT_STRUCTURED,
674 D3D_SIT_UAV_RWSTRUCTURED,
675 D3D_SIT_BYTEADDRESS,
676 D3D_SIT_UAV_RWBYTEADDRESS,
677 D3D_SIT_UAV_APPEND_STRUCTURED,
678 D3D_SIT_UAV_CONSUME_STRUCTURED,
679 D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
680 D3D_SIT_RTACCELERATIONSTRUCTURE,
681 D3D_SIT_UAV_FEEDBACKTEXTURE,
682
683 D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
684 D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
685 D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
686 D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
687
688 D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
689 D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
690 D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
691 D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
692 D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
693 D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
694 D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
695 D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
696} D3D_SHADER_INPUT_TYPE;
697
698typedef enum _D3D_SHADER_CBUFFER_FLAGS
699{
700 D3D_CBF_USERPACKED = 1,
701
702 D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
703
704 // force 32-bit size enum
705 D3D_CBF_FORCE_DWORD = 0x7fffffff
706} D3D_SHADER_CBUFFER_FLAGS;
707
708typedef enum _D3D_CBUFFER_TYPE
709{
710 D3D_CT_CBUFFER,
711 D3D_CT_TBUFFER,
712 D3D_CT_INTERFACE_POINTERS,
713 D3D_CT_RESOURCE_BIND_INFO,
714
715 D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
716 D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
717
718 D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
719 D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
720 D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
721 D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
722} D3D_CBUFFER_TYPE;
723
724typedef enum D3D_NAME
725{
726 D3D_NAME_UNDEFINED = 0,
727
728 // Names meaningful to both HLSL and hardware
729 D3D_NAME_POSITION = 1,
730 D3D_NAME_CLIP_DISTANCE = 2,
731 D3D_NAME_CULL_DISTANCE = 3,
732 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
733 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
734 D3D_NAME_VERTEX_ID = 6,
735 D3D_NAME_PRIMITIVE_ID = 7,
736 D3D_NAME_INSTANCE_ID = 8,
737 D3D_NAME_IS_FRONT_FACE = 9,
738 D3D_NAME_SAMPLE_INDEX = 10,
739 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
740 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
741 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
742 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
743 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
744 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
745 D3D_NAME_BARYCENTRICS = 23,
746 D3D_NAME_SHADINGRATE = 24,
747 D3D_NAME_CULLPRIMITIVE = 25,
748
749 // Names meaningful to HLSL only
750 D3D_NAME_TARGET = 64,
751 D3D_NAME_DEPTH = 65,
752 D3D_NAME_COVERAGE = 66,
753 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
754 D3D_NAME_DEPTH_LESS_EQUAL = 68,
755 D3D_NAME_STENCIL_REF = 69,
756 D3D_NAME_INNER_COVERAGE = 70,
757
758 D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
759 D3D10_NAME_POSITION = D3D_NAME_POSITION,
760 D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
761 D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
762 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
763 D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
764 D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
765 D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
766 D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
767 D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
768 D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
769 D3D10_NAME_TARGET = D3D_NAME_TARGET,
770 D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
771 D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
772
773 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
774 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
775 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR,
776 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
777 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
778 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
779 D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
780 D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
781
782 D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
783 D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
784
785 D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
786 D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
787 D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
788} D3D_NAME;
789
790typedef enum D3D_RESOURCE_RETURN_TYPE
791{
792 D3D_RETURN_TYPE_UNORM = 1,
793 D3D_RETURN_TYPE_SNORM = 2,
794 D3D_RETURN_TYPE_SINT = 3,
795 D3D_RETURN_TYPE_UINT = 4,
796 D3D_RETURN_TYPE_FLOAT = 5,
797 D3D_RETURN_TYPE_MIXED = 6,
798 D3D_RETURN_TYPE_DOUBLE = 7,
799 D3D_RETURN_TYPE_CONTINUED = 8,
800
801 D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
802 D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
803 D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
804 D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
805 D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
806 D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
807
808 D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
809 D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
810 D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
811 D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
812 D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
813 D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
814 D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
815 D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
816} D3D_RESOURCE_RETURN_TYPE;
817
818typedef enum D3D_REGISTER_COMPONENT_TYPE
819{
820 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
821 D3D_REGISTER_COMPONENT_UINT32 = 1,
822 D3D_REGISTER_COMPONENT_SINT32 = 2,
823 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
824 D3D_REGISTER_COMPONENT_UINT16 = 4,
825 D3D_REGISTER_COMPONENT_SINT16 = 5,
826 D3D_REGISTER_COMPONENT_FLOAT16 = 6,
827 D3D_REGISTER_COMPONENT_UINT64 = 7,
828 D3D_REGISTER_COMPONENT_SINT64 = 8,
829 D3D_REGISTER_COMPONENT_FLOAT64 = 9,
830
831 D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
832 D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
833 D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
834 D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
835 D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
836 D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
837 D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
838 D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
839 D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
840 D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64,
841} D3D_REGISTER_COMPONENT_TYPE;
842
843typedef enum D3D_TESSELLATOR_DOMAIN
844{
845 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
846 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
847 D3D_TESSELLATOR_DOMAIN_TRI = 2,
848 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
849
850 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
851 D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
852 D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
853 D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
854} D3D_TESSELLATOR_DOMAIN;
855
856typedef enum D3D_TESSELLATOR_PARTITIONING
857{
858 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
859 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
860 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
861 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
862 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
863
864 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
865 D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
866 D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
867 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
868 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
869} D3D_TESSELLATOR_PARTITIONING;
870
871typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
872{
873 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
874 D3D_TESSELLATOR_OUTPUT_POINT = 1,
875 D3D_TESSELLATOR_OUTPUT_LINE = 2,
876 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
877 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
878
879 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
880 D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
881 D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
882 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
883 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
884} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
885
886typedef enum D3D_MIN_PRECISION
887{
888 D3D_MIN_PRECISION_DEFAULT = 0, // Default precision for the shader model
889 D3D_MIN_PRECISION_FLOAT_16 = 1, // Min 16 bit/component float
890 D3D_MIN_PRECISION_FLOAT_2_8 = 2, // Min 10(2.8)bit/comp. float
891 D3D_MIN_PRECISION_RESERVED = 3, // Reserved for future use
892 D3D_MIN_PRECISION_SINT_16 = 4, // Min 16 bit/comp. signed integer
893 D3D_MIN_PRECISION_UINT_16 = 5, // Min 16 bit/comp. unsigned integer
894
895 // These values are abstractions of width only for use in situations
896 // where a general width is needed instead of specific types. They
897 // will never be used in shader operands.
898 D3D_MIN_PRECISION_ANY_16 = 0xf0,
899 D3D_MIN_PRECISION_ANY_10 = 0xf1,
900} D3D_MIN_PRECISION;
901
902typedef enum D3D_INTERPOLATION_MODE
903{
904 D3D_INTERPOLATION_UNDEFINED = 0,
905 D3D_INTERPOLATION_CONSTANT = 1,
906 D3D_INTERPOLATION_LINEAR = 2,
907 D3D_INTERPOLATION_LINEAR_CENTROID = 3,
908 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
909 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
910 D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
911 D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
912} D3D_INTERPOLATION_MODE;
913
914// Parameter flags.
915typedef enum _D3D_PARAMETER_FLAGS
916{
917 D3D_PF_NONE = 0x00000000,
918 D3D_PF_IN = 0x00000001,
919 D3D_PF_OUT = 0x00000002,
920 D3D_PF_FORCE_DWORD = 0x7fffffff
921} D3D_PARAMETER_FLAGS;
922
923// Format Layout Properties
924typedef enum D3D_FORMAT_LAYOUT
925{
926 D3DFL_STANDARD = 0, // standard layout
927 D3DFL_CUSTOM = -1 // custom layout
928 // Note, 1 bit allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
929 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
930} D3D_FORMAT_LAYOUT;
931
932typedef enum D3D_FORMAT_TYPE_LEVEL
933{
934 D3DFTL_NO_TYPE = 0,
935 D3DFTL_PARTIAL_TYPE = -2,
936 D3DFTL_FULL_TYPE = -1,
937 // Note, 2 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
938 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
939} D3D_FORMAT_TYPE_LEVEL;
940
941typedef enum D3D_FORMAT_COMPONENT_NAME
942{
943 D3DFCN_R = -4,
944 D3DFCN_G = -3,
945 D3DFCN_B = -2,
946 D3DFCN_A = -1,
947 D3DFCN_D = 0,
948 D3DFCN_S = 1,
949 D3DFCN_X = 2,
950 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
951 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
952} D3D_FORMAT_COMPONENT_NAME;
953
954typedef enum D3D_FORMAT_COMPONENT_INTERPRETATION
955{
956 D3DFCI_TYPELESS = 0,
957 D3DFCI_FLOAT = -4,
958 D3DFCI_SNORM = -3,
959 D3DFCI_UNORM = -2,
960 D3DFCI_SINT = -1,
961 D3DFCI_UINT = 1,
962 D3DFCI_UNORM_SRGB = 2,
963 D3DFCI_BIASED_FIXED_2_8 = 3,
964 // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
965 // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
966} D3D_FORMAT_COMPONENT_INTERPRETATION;
967
968// Well-Known Private Data IDs (WKPDID_*):
969
970// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
971//
972// const char c_szName[] = "texture.jpg";
973// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
974cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
975cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
976cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
977cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
978
979cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
980cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
981cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
982cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
983
984cpp_quote("#define D3D_COMPONENT_MASK_X 1")
985cpp_quote("#define D3D_COMPONENT_MASK_Y 2")
986cpp_quote("#define D3D_COMPONENT_MASK_Z 4")
987cpp_quote("#define D3D_COMPONENT_MASK_W 8")
988
989cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
990cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
991
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h
new file mode 100644
index 0000000..671866a
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.h
@@ -0,0 +1,998 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8
9/* this ALWAYS GENERATED file contains the definitions for the interfaces */
10
11
12 /* File created by MIDL compiler version 8.01.0628 */
13
14
15
16/* verify that the <rpcndr.h> version is high enough to compile this file*/
17#ifndef __REQUIRED_RPCNDR_H_VERSION__
18#define __REQUIRED_RPCNDR_H_VERSION__ 500
19#endif
20
21/* verify that the <rpcsal.h> version is high enough to compile this file*/
22#ifndef __REQUIRED_RPCSAL_H_VERSION__
23#define __REQUIRED_RPCSAL_H_VERSION__ 100
24#endif
25
26#include "rpc.h"
27#include "rpcndr.h"
28
29#ifndef __RPCNDR_H_VERSION__
30#error this stub requires an updated version of <rpcndr.h>
31#endif /* __RPCNDR_H_VERSION__ */
32
33#ifndef COM_NO_WINDOWS_H
34#include "windows.h"
35#include "ole2.h"
36#endif /*COM_NO_WINDOWS_H*/
37
38#ifndef __d3dshadercacheregistration_h__
39#define __d3dshadercacheregistration_h__
40
41#if defined(_MSC_VER) && (_MSC_VER >= 1020)
42#pragma once
43#endif
44
45#ifndef DECLSPEC_XFGVIRT
46#if defined(_CONTROL_FLOW_GUARD_XFG)
47#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func))
48#else
49#define DECLSPEC_XFGVIRT(base, func)
50#endif
51#endif
52
53/* Forward Declarations */
54
55#ifndef __ID3DShaderCacheInstallerClient_FWD_DEFINED__
56#define __ID3DShaderCacheInstallerClient_FWD_DEFINED__
57typedef interface ID3DShaderCacheInstallerClient ID3DShaderCacheInstallerClient;
58
59#endif /* __ID3DShaderCacheInstallerClient_FWD_DEFINED__ */
60
61
62#ifndef __ID3DShaderCacheComponent_FWD_DEFINED__
63#define __ID3DShaderCacheComponent_FWD_DEFINED__
64typedef interface ID3DShaderCacheComponent ID3DShaderCacheComponent;
65
66#endif /* __ID3DShaderCacheComponent_FWD_DEFINED__ */
67
68
69#ifndef __ID3DShaderCacheApplication_FWD_DEFINED__
70#define __ID3DShaderCacheApplication_FWD_DEFINED__
71typedef interface ID3DShaderCacheApplication ID3DShaderCacheApplication;
72
73#endif /* __ID3DShaderCacheApplication_FWD_DEFINED__ */
74
75
76#ifndef __ID3DShaderCacheInstaller_FWD_DEFINED__
77#define __ID3DShaderCacheInstaller_FWD_DEFINED__
78typedef interface ID3DShaderCacheInstaller ID3DShaderCacheInstaller;
79
80#endif /* __ID3DShaderCacheInstaller_FWD_DEFINED__ */
81
82
83#ifndef __ID3DShaderCacheExplorer_FWD_DEFINED__
84#define __ID3DShaderCacheExplorer_FWD_DEFINED__
85typedef interface ID3DShaderCacheExplorer ID3DShaderCacheExplorer;
86
87#endif /* __ID3DShaderCacheExplorer_FWD_DEFINED__ */
88
89
90#ifndef __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
91#define __ID3DShaderCacheInstallerFactory_FWD_DEFINED__
92typedef interface ID3DShaderCacheInstallerFactory ID3DShaderCacheInstallerFactory;
93
94#endif /* __ID3DShaderCacheInstallerFactory_FWD_DEFINED__ */
95
96
97/* header files for imported files */
98#include "oaidl.h"
99#include "ocidl.h"
100
101#ifdef __cplusplus
102extern "C"{
103#endif
104
105
106/* interface __MIDL_itf_d3dshadercacheregistration_0000_0000 */
107/* [local] */
108
109#pragma once
110DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);
111typedef
112enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
113 {
114 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER = 0,
115 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM = ( D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER + 1 )
116 } D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
117
118
119
120
121extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_c_ifspec;
122extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0000_v0_0_s_ifspec;
123
124#ifndef __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
125#define __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__
126
127/* interface ID3DShaderCacheInstallerClient */
128/* [unique][local][object][uuid] */
129
130
131EXTERN_C const IID IID_ID3DShaderCacheInstallerClient;
132
133#if defined(__cplusplus) && !defined(CINTERFACE)
134
135 MIDL_INTERFACE("a16ee930-d9f6-4222-a514-244473e5d266")
136 ID3DShaderCacheInstallerClient
137 {
138 public:
139 BEGIN_INTERFACE
140 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
141 _Inout_ SIZE_T *pNameLength,
142 _Out_writes_opt_(*pNameLength) wchar_t *pName) = 0;
143
144 virtual D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE STDMETHODCALLTYPE GetInstallerScope( void) = 0;
145
146 virtual HRESULT STDMETHODCALLTYPE HandleDriverUpdate(
147 _In_ ID3DShaderCacheInstaller *pInstaller) = 0;
148
149 END_INTERFACE
150 };
151
152
153#else /* C style interface */
154
155 typedef struct ID3DShaderCacheInstallerClientVtbl
156 {
157 BEGIN_INTERFACE
158
159 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerName)
160 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
161 ID3DShaderCacheInstallerClient * This,
162 _Inout_ SIZE_T *pNameLength,
163 _Out_writes_opt_(*pNameLength) wchar_t *pName);
164
165 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, GetInstallerScope)
166 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE ( STDMETHODCALLTYPE *GetInstallerScope )(
167 ID3DShaderCacheInstallerClient * This);
168
169 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerClient, HandleDriverUpdate)
170 HRESULT ( STDMETHODCALLTYPE *HandleDriverUpdate )(
171 ID3DShaderCacheInstallerClient * This,
172 _In_ ID3DShaderCacheInstaller *pInstaller);
173
174 END_INTERFACE
175 } ID3DShaderCacheInstallerClientVtbl;
176
177 interface ID3DShaderCacheInstallerClient
178 {
179 CONST_VTBL struct ID3DShaderCacheInstallerClientVtbl *lpVtbl;
180 };
181
182
183
184#ifdef COBJMACROS
185
186
187#define ID3DShaderCacheInstallerClient_GetInstallerName(This,pNameLength,pName) \
188 ( (This)->lpVtbl -> GetInstallerName(This,pNameLength,pName) )
189
190#define ID3DShaderCacheInstallerClient_GetInstallerScope(This) \
191 ( (This)->lpVtbl -> GetInstallerScope(This) )
192
193#define ID3DShaderCacheInstallerClient_HandleDriverUpdate(This,pInstaller) \
194 ( (This)->lpVtbl -> HandleDriverUpdate(This,pInstaller) )
195
196#endif /* COBJMACROS */
197
198
199#endif /* C style interface */
200
201
202
203
204#endif /* __ID3DShaderCacheInstallerClient_INTERFACE_DEFINED__ */
205
206
207/* interface __MIDL_itf_d3dshadercacheregistration_0000_0001 */
208/* [local] */
209
210typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
211 {
212 const wchar_t *pAdapterFamily;
213 const wchar_t *pPsdbPath;
214 } D3D_SHADER_CACHE_PSDB_PROPERTIES;
215
216
217
218extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_c_ifspec;
219extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0001_v0_0_s_ifspec;
220
221#ifndef __ID3DShaderCacheComponent_INTERFACE_DEFINED__
222#define __ID3DShaderCacheComponent_INTERFACE_DEFINED__
223
224/* interface ID3DShaderCacheComponent */
225/* [unique][local][object][uuid] */
226
227
228EXTERN_C const IID IID_ID3DShaderCacheComponent;
229
230#if defined(__cplusplus) && !defined(CINTERFACE)
231
232 MIDL_INTERFACE("eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828")
233 ID3DShaderCacheComponent : public IUnknown
234 {
235 public:
236 virtual HRESULT STDMETHODCALLTYPE GetComponentName(
237 _Out_ const wchar_t **pName) = 0;
238
239 virtual HRESULT STDMETHODCALLTYPE GetStateObjectDatabasePath(
240 _Out_ const wchar_t **pPath) = 0;
241
242 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledCachePath(
243 _In_ const wchar_t *pAdapterFamily,
244 _Inout_ const wchar_t **pPath) = 0;
245
246 virtual UINT STDMETHODCALLTYPE GetPrecompiledShaderDatabaseCount( void) = 0;
247
248 virtual HRESULT STDMETHODCALLTYPE GetPrecompiledShaderDatabases(
249 UINT ArraySize,
250 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs) = 0;
251
252 };
253
254
255#else /* C style interface */
256
257 typedef struct ID3DShaderCacheComponentVtbl
258 {
259 BEGIN_INTERFACE
260
261 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
262 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
263 ID3DShaderCacheComponent * This,
264 REFIID riid,
265 _COM_Outptr_ void **ppvObject);
266
267 DECLSPEC_XFGVIRT(IUnknown, AddRef)
268 ULONG ( STDMETHODCALLTYPE *AddRef )(
269 ID3DShaderCacheComponent * This);
270
271 DECLSPEC_XFGVIRT(IUnknown, Release)
272 ULONG ( STDMETHODCALLTYPE *Release )(
273 ID3DShaderCacheComponent * This);
274
275 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetComponentName)
276 HRESULT ( STDMETHODCALLTYPE *GetComponentName )(
277 ID3DShaderCacheComponent * This,
278 _Out_ const wchar_t **pName);
279
280 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetStateObjectDatabasePath)
281 HRESULT ( STDMETHODCALLTYPE *GetStateObjectDatabasePath )(
282 ID3DShaderCacheComponent * This,
283 _Out_ const wchar_t **pPath);
284
285 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledCachePath)
286 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledCachePath )(
287 ID3DShaderCacheComponent * This,
288 _In_ const wchar_t *pAdapterFamily,
289 _Inout_ const wchar_t **pPath);
290
291 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabaseCount)
292 UINT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabaseCount )(
293 ID3DShaderCacheComponent * This);
294
295 DECLSPEC_XFGVIRT(ID3DShaderCacheComponent, GetPrecompiledShaderDatabases)
296 HRESULT ( STDMETHODCALLTYPE *GetPrecompiledShaderDatabases )(
297 ID3DShaderCacheComponent * This,
298 UINT ArraySize,
299 _Out_writes_(ArraySize) D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs);
300
301 END_INTERFACE
302 } ID3DShaderCacheComponentVtbl;
303
304 interface ID3DShaderCacheComponent
305 {
306 CONST_VTBL struct ID3DShaderCacheComponentVtbl *lpVtbl;
307 };
308
309
310
311#ifdef COBJMACROS
312
313
314#define ID3DShaderCacheComponent_QueryInterface(This,riid,ppvObject) \
315 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
316
317#define ID3DShaderCacheComponent_AddRef(This) \
318 ( (This)->lpVtbl -> AddRef(This) )
319
320#define ID3DShaderCacheComponent_Release(This) \
321 ( (This)->lpVtbl -> Release(This) )
322
323
324#define ID3DShaderCacheComponent_GetComponentName(This,pName) \
325 ( (This)->lpVtbl -> GetComponentName(This,pName) )
326
327#define ID3DShaderCacheComponent_GetStateObjectDatabasePath(This,pPath) \
328 ( (This)->lpVtbl -> GetStateObjectDatabasePath(This,pPath) )
329
330#define ID3DShaderCacheComponent_GetPrecompiledCachePath(This,pAdapterFamily,pPath) \
331 ( (This)->lpVtbl -> GetPrecompiledCachePath(This,pAdapterFamily,pPath) )
332
333#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabaseCount(This) \
334 ( (This)->lpVtbl -> GetPrecompiledShaderDatabaseCount(This) )
335
336#define ID3DShaderCacheComponent_GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) \
337 ( (This)->lpVtbl -> GetPrecompiledShaderDatabases(This,ArraySize,pPSDBs) )
338
339#endif /* COBJMACROS */
340
341
342#endif /* C style interface */
343
344
345
346
347#endif /* __ID3DShaderCacheComponent_INTERFACE_DEFINED__ */
348
349
350/* interface __MIDL_itf_d3dshadercacheregistration_0000_0002 */
351/* [local] */
352
353typedef
354enum D3D_SHADER_CACHE_TARGET_FLAGS
355 {
356 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0
357 } D3D_SHADER_CACHE_TARGET_FLAGS;
358
359DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )
360typedef union D3D_VERSION_NUMBER
361 {
362 UINT64 Version;
363 UINT16 VersionParts[ 4 ];
364 } D3D_VERSION_NUMBER;
365
366typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
367 {
368 wchar_t szAdapterFamily[ 128 ];
369 UINT64 MinimumABISupportVersion;
370 UINT64 MaximumABISupportVersion;
371 D3D_VERSION_NUMBER CompilerVersion;
372 D3D_VERSION_NUMBER ApplicationProfileVersion;
373 } D3D_SHADER_CACHE_COMPILER_PROPERTIES;
374
375typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
376 {
377 const wchar_t *pExeFilename;
378 const wchar_t *pName;
379 D3D_VERSION_NUMBER Version;
380 const wchar_t *pEngineName;
381 D3D_VERSION_NUMBER EngineVersion;
382 } D3D_SHADER_CACHE_APPLICATION_DESC;
383
384
385
386extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_c_ifspec;
387extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0002_v0_0_s_ifspec;
388
389#ifndef __ID3DShaderCacheApplication_INTERFACE_DEFINED__
390#define __ID3DShaderCacheApplication_INTERFACE_DEFINED__
391
392/* interface ID3DShaderCacheApplication */
393/* [unique][local][object][uuid] */
394
395
396EXTERN_C const IID IID_ID3DShaderCacheApplication;
397
398#if defined(__cplusplus) && !defined(CINTERFACE)
399
400 MIDL_INTERFACE("fc688ee2-1b35-4913-93be-1ca3fa7df39e")
401 ID3DShaderCacheApplication : public IUnknown
402 {
403 public:
404 virtual HRESULT STDMETHODCALLTYPE GetExePath(
405 _Out_ const wchar_t **pExePath) = 0;
406
407 virtual HRESULT STDMETHODCALLTYPE GetDesc(
408 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc) = 0;
409
410 virtual HRESULT STDMETHODCALLTYPE RegisterComponent(
411 _In_ const wchar_t *pName,
412 _In_ const wchar_t *pStateObjectDBPath,
413 _In_ UINT NumPSDB,
414 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
415 REFIID riid,
416 _COM_Outptr_ void **ppvComponent) = 0;
417
418 virtual HRESULT STDMETHODCALLTYPE RemoveComponent(
419 _In_ ID3DShaderCacheComponent *pComponent) = 0;
420
421 virtual UINT STDMETHODCALLTYPE GetComponentCount( void) = 0;
422
423 virtual HRESULT STDMETHODCALLTYPE GetComponent(
424 _In_ UINT index,
425 REFIID riid,
426 _COM_Outptr_ void **ppvComponent) = 0;
427
428 virtual UINT STDMETHODCALLTYPE GetPrecompileTargetCount(
429 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
430
431 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
432 _In_ UINT ArraySize,
433 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
434 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
435
436 virtual HRESULT STDMETHODCALLTYPE GetInstallerName(
437 _Out_ const wchar_t **pInstallerName) = 0;
438
439 };
440
441
442#else /* C style interface */
443
444 typedef struct ID3DShaderCacheApplicationVtbl
445 {
446 BEGIN_INTERFACE
447
448 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
449 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
450 ID3DShaderCacheApplication * This,
451 REFIID riid,
452 _COM_Outptr_ void **ppvObject);
453
454 DECLSPEC_XFGVIRT(IUnknown, AddRef)
455 ULONG ( STDMETHODCALLTYPE *AddRef )(
456 ID3DShaderCacheApplication * This);
457
458 DECLSPEC_XFGVIRT(IUnknown, Release)
459 ULONG ( STDMETHODCALLTYPE *Release )(
460 ID3DShaderCacheApplication * This);
461
462 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetExePath)
463 HRESULT ( STDMETHODCALLTYPE *GetExePath )(
464 ID3DShaderCacheApplication * This,
465 _Out_ const wchar_t **pExePath);
466
467 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetDesc)
468 HRESULT ( STDMETHODCALLTYPE *GetDesc )(
469 ID3DShaderCacheApplication * This,
470 _Out_ D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc);
471
472 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RegisterComponent)
473 HRESULT ( STDMETHODCALLTYPE *RegisterComponent )(
474 ID3DShaderCacheApplication * This,
475 _In_ const wchar_t *pName,
476 _In_ const wchar_t *pStateObjectDBPath,
477 _In_ UINT NumPSDB,
478 _In_reads_(NumPSDB) const D3D_SHADER_CACHE_PSDB_PROPERTIES *pPSDBs,
479 REFIID riid,
480 _COM_Outptr_ void **ppvComponent);
481
482 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, RemoveComponent)
483 HRESULT ( STDMETHODCALLTYPE *RemoveComponent )(
484 ID3DShaderCacheApplication * This,
485 _In_ ID3DShaderCacheComponent *pComponent);
486
487 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponentCount)
488 UINT ( STDMETHODCALLTYPE *GetComponentCount )(
489 ID3DShaderCacheApplication * This);
490
491 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetComponent)
492 HRESULT ( STDMETHODCALLTYPE *GetComponent )(
493 ID3DShaderCacheApplication * This,
494 _In_ UINT index,
495 REFIID riid,
496 _COM_Outptr_ void **ppvComponent);
497
498 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargetCount)
499 UINT ( STDMETHODCALLTYPE *GetPrecompileTargetCount )(
500 ID3DShaderCacheApplication * This,
501 D3D_SHADER_CACHE_TARGET_FLAGS flags);
502
503 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetPrecompileTargets)
504 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
505 ID3DShaderCacheApplication * This,
506 _In_ UINT ArraySize,
507 _In_reads_(ArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
508 D3D_SHADER_CACHE_TARGET_FLAGS flags);
509
510 DECLSPEC_XFGVIRT(ID3DShaderCacheApplication, GetInstallerName)
511 HRESULT ( STDMETHODCALLTYPE *GetInstallerName )(
512 ID3DShaderCacheApplication * This,
513 _Out_ const wchar_t **pInstallerName);
514
515 END_INTERFACE
516 } ID3DShaderCacheApplicationVtbl;
517
518 interface ID3DShaderCacheApplication
519 {
520 CONST_VTBL struct ID3DShaderCacheApplicationVtbl *lpVtbl;
521 };
522
523
524
525#ifdef COBJMACROS
526
527
528#define ID3DShaderCacheApplication_QueryInterface(This,riid,ppvObject) \
529 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
530
531#define ID3DShaderCacheApplication_AddRef(This) \
532 ( (This)->lpVtbl -> AddRef(This) )
533
534#define ID3DShaderCacheApplication_Release(This) \
535 ( (This)->lpVtbl -> Release(This) )
536
537
538#define ID3DShaderCacheApplication_GetExePath(This,pExePath) \
539 ( (This)->lpVtbl -> GetExePath(This,pExePath) )
540
541#define ID3DShaderCacheApplication_GetDesc(This,pApplicationDesc) \
542 ( (This)->lpVtbl -> GetDesc(This,pApplicationDesc) )
543
544#define ID3DShaderCacheApplication_RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) \
545 ( (This)->lpVtbl -> RegisterComponent(This,pName,pStateObjectDBPath,NumPSDB,pPSDBs,riid,ppvComponent) )
546
547#define ID3DShaderCacheApplication_RemoveComponent(This,pComponent) \
548 ( (This)->lpVtbl -> RemoveComponent(This,pComponent) )
549
550#define ID3DShaderCacheApplication_GetComponentCount(This) \
551 ( (This)->lpVtbl -> GetComponentCount(This) )
552
553#define ID3DShaderCacheApplication_GetComponent(This,index,riid,ppvComponent) \
554 ( (This)->lpVtbl -> GetComponent(This,index,riid,ppvComponent) )
555
556#define ID3DShaderCacheApplication_GetPrecompileTargetCount(This,flags) \
557 ( (This)->lpVtbl -> GetPrecompileTargetCount(This,flags) )
558
559#define ID3DShaderCacheApplication_GetPrecompileTargets(This,ArraySize,pArray,flags) \
560 ( (This)->lpVtbl -> GetPrecompileTargets(This,ArraySize,pArray,flags) )
561
562#define ID3DShaderCacheApplication_GetInstallerName(This,pInstallerName) \
563 ( (This)->lpVtbl -> GetInstallerName(This,pInstallerName) )
564
565#endif /* COBJMACROS */
566
567
568#endif /* C style interface */
569
570
571
572
573#endif /* __ID3DShaderCacheApplication_INTERFACE_DEFINED__ */
574
575
576/* interface __MIDL_itf_d3dshadercacheregistration_0000_0003 */
577/* [local] */
578
579typedef struct SC_HANDLE__ *SC_HANDLE;
580
581
582
583extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_c_ifspec;
584extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0003_v0_0_s_ifspec;
585
586#ifndef __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
587#define __ID3DShaderCacheInstaller_INTERFACE_DEFINED__
588
589/* interface ID3DShaderCacheInstaller */
590/* [unique][local][object][uuid] */
591
592
593EXTERN_C const IID IID_ID3DShaderCacheInstaller;
594
595#if defined(__cplusplus) && !defined(CINTERFACE)
596
597 MIDL_INTERFACE("bbe30de1-6318-4526-ae17-776693191bb4")
598 ID3DShaderCacheInstaller : public IUnknown
599 {
600 public:
601 virtual HRESULT STDMETHODCALLTYPE RegisterDriverUpdateListener( void) = 0;
602
603 virtual HRESULT STDMETHODCALLTYPE UnregisterDriverUpdateListener( void) = 0;
604
605 virtual HRESULT STDMETHODCALLTYPE RegisterServiceDriverUpdateTrigger(
606 SC_HANDLE hServiceHandle) = 0;
607
608 virtual HRESULT STDMETHODCALLTYPE UnregisterServiceDriverUpdateTrigger(
609 SC_HANDLE hServiceHandle) = 0;
610
611 virtual HRESULT STDMETHODCALLTYPE RegisterApplication(
612 _In_ const wchar_t *pExePath,
613 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
614 REFIID riid,
615 _COM_Outptr_ void **ppvApp) = 0;
616
617 virtual HRESULT STDMETHODCALLTYPE RemoveApplication(
618 _In_ ID3DShaderCacheApplication *pApplication) = 0;
619
620 virtual UINT STDMETHODCALLTYPE GetApplicationCount( void) = 0;
621
622 virtual HRESULT STDMETHODCALLTYPE GetApplication(
623 _In_ UINT index,
624 REFIID riid,
625 _COM_Outptr_ void **ppvApp) = 0;
626
627 virtual HRESULT STDMETHODCALLTYPE ClearAllState( void) = 0;
628
629 virtual UINT STDMETHODCALLTYPE GetMaxPrecompileTargetCount( void) = 0;
630
631 virtual HRESULT STDMETHODCALLTYPE GetPrecompileTargets(
632 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
633 _Inout_ UINT *pArraySize,
634 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
635 D3D_SHADER_CACHE_TARGET_FLAGS flags) = 0;
636
637 };
638
639
640#else /* C style interface */
641
642 typedef struct ID3DShaderCacheInstallerVtbl
643 {
644 BEGIN_INTERFACE
645
646 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
647 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
648 ID3DShaderCacheInstaller * This,
649 REFIID riid,
650 _COM_Outptr_ void **ppvObject);
651
652 DECLSPEC_XFGVIRT(IUnknown, AddRef)
653 ULONG ( STDMETHODCALLTYPE *AddRef )(
654 ID3DShaderCacheInstaller * This);
655
656 DECLSPEC_XFGVIRT(IUnknown, Release)
657 ULONG ( STDMETHODCALLTYPE *Release )(
658 ID3DShaderCacheInstaller * This);
659
660 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterDriverUpdateListener)
661 HRESULT ( STDMETHODCALLTYPE *RegisterDriverUpdateListener )(
662 ID3DShaderCacheInstaller * This);
663
664 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterDriverUpdateListener)
665 HRESULT ( STDMETHODCALLTYPE *UnregisterDriverUpdateListener )(
666 ID3DShaderCacheInstaller * This);
667
668 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterServiceDriverUpdateTrigger)
669 HRESULT ( STDMETHODCALLTYPE *RegisterServiceDriverUpdateTrigger )(
670 ID3DShaderCacheInstaller * This,
671 SC_HANDLE hServiceHandle);
672
673 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, UnregisterServiceDriverUpdateTrigger)
674 HRESULT ( STDMETHODCALLTYPE *UnregisterServiceDriverUpdateTrigger )(
675 ID3DShaderCacheInstaller * This,
676 SC_HANDLE hServiceHandle);
677
678 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RegisterApplication)
679 HRESULT ( STDMETHODCALLTYPE *RegisterApplication )(
680 ID3DShaderCacheInstaller * This,
681 _In_ const wchar_t *pExePath,
682 _In_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
683 REFIID riid,
684 _COM_Outptr_ void **ppvApp);
685
686 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, RemoveApplication)
687 HRESULT ( STDMETHODCALLTYPE *RemoveApplication )(
688 ID3DShaderCacheInstaller * This,
689 _In_ ID3DShaderCacheApplication *pApplication);
690
691 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplicationCount)
692 UINT ( STDMETHODCALLTYPE *GetApplicationCount )(
693 ID3DShaderCacheInstaller * This);
694
695 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetApplication)
696 HRESULT ( STDMETHODCALLTYPE *GetApplication )(
697 ID3DShaderCacheInstaller * This,
698 _In_ UINT index,
699 REFIID riid,
700 _COM_Outptr_ void **ppvApp);
701
702 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, ClearAllState)
703 HRESULT ( STDMETHODCALLTYPE *ClearAllState )(
704 ID3DShaderCacheInstaller * This);
705
706 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetMaxPrecompileTargetCount)
707 UINT ( STDMETHODCALLTYPE *GetMaxPrecompileTargetCount )(
708 ID3DShaderCacheInstaller * This);
709
710 DECLSPEC_XFGVIRT(ID3DShaderCacheInstaller, GetPrecompileTargets)
711 HRESULT ( STDMETHODCALLTYPE *GetPrecompileTargets )(
712 ID3DShaderCacheInstaller * This,
713 _In_opt_ const D3D_SHADER_CACHE_APPLICATION_DESC *pApplicationDesc,
714 _Inout_ UINT *pArraySize,
715 _Out_writes_(*pArraySize) D3D_SHADER_CACHE_COMPILER_PROPERTIES *pArray,
716 D3D_SHADER_CACHE_TARGET_FLAGS flags);
717
718 END_INTERFACE
719 } ID3DShaderCacheInstallerVtbl;
720
721 interface ID3DShaderCacheInstaller
722 {
723 CONST_VTBL struct ID3DShaderCacheInstallerVtbl *lpVtbl;
724 };
725
726
727
728#ifdef COBJMACROS
729
730
731#define ID3DShaderCacheInstaller_QueryInterface(This,riid,ppvObject) \
732 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
733
734#define ID3DShaderCacheInstaller_AddRef(This) \
735 ( (This)->lpVtbl -> AddRef(This) )
736
737#define ID3DShaderCacheInstaller_Release(This) \
738 ( (This)->lpVtbl -> Release(This) )
739
740
741#define ID3DShaderCacheInstaller_RegisterDriverUpdateListener(This) \
742 ( (This)->lpVtbl -> RegisterDriverUpdateListener(This) )
743
744#define ID3DShaderCacheInstaller_UnregisterDriverUpdateListener(This) \
745 ( (This)->lpVtbl -> UnregisterDriverUpdateListener(This) )
746
747#define ID3DShaderCacheInstaller_RegisterServiceDriverUpdateTrigger(This,hServiceHandle) \
748 ( (This)->lpVtbl -> RegisterServiceDriverUpdateTrigger(This,hServiceHandle) )
749
750#define ID3DShaderCacheInstaller_UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) \
751 ( (This)->lpVtbl -> UnregisterServiceDriverUpdateTrigger(This,hServiceHandle) )
752
753#define ID3DShaderCacheInstaller_RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) \
754 ( (This)->lpVtbl -> RegisterApplication(This,pExePath,pApplicationDesc,riid,ppvApp) )
755
756#define ID3DShaderCacheInstaller_RemoveApplication(This,pApplication) \
757 ( (This)->lpVtbl -> RemoveApplication(This,pApplication) )
758
759#define ID3DShaderCacheInstaller_GetApplicationCount(This) \
760 ( (This)->lpVtbl -> GetApplicationCount(This) )
761
762#define ID3DShaderCacheInstaller_GetApplication(This,index,riid,ppvApp) \
763 ( (This)->lpVtbl -> GetApplication(This,index,riid,ppvApp) )
764
765#define ID3DShaderCacheInstaller_ClearAllState(This) \
766 ( (This)->lpVtbl -> ClearAllState(This) )
767
768#define ID3DShaderCacheInstaller_GetMaxPrecompileTargetCount(This) \
769 ( (This)->lpVtbl -> GetMaxPrecompileTargetCount(This) )
770
771#define ID3DShaderCacheInstaller_GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) \
772 ( (This)->lpVtbl -> GetPrecompileTargets(This,pApplicationDesc,pArraySize,pArray,flags) )
773
774#endif /* COBJMACROS */
775
776
777#endif /* C style interface */
778
779
780
781
782#endif /* __ID3DShaderCacheInstaller_INTERFACE_DEFINED__ */
783
784
785#ifndef __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
786#define __ID3DShaderCacheExplorer_INTERFACE_DEFINED__
787
788/* interface ID3DShaderCacheExplorer */
789/* [unique][local][object][uuid] */
790
791
792EXTERN_C const IID IID_ID3DShaderCacheExplorer;
793
794#if defined(__cplusplus) && !defined(CINTERFACE)
795
796 MIDL_INTERFACE("90432322-32f5-487f-9264-e9390fa58b2a")
797 ID3DShaderCacheExplorer : public IUnknown
798 {
799 public:
800 virtual HRESULT STDMETHODCALLTYPE GetApplicationFromExePath(
801 _In_ const wchar_t *pFullExePath,
802 REFIID riid,
803 _COM_Outptr_ void **ppvApp) = 0;
804
805 };
806
807
808#else /* C style interface */
809
810 typedef struct ID3DShaderCacheExplorerVtbl
811 {
812 BEGIN_INTERFACE
813
814 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
815 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
816 ID3DShaderCacheExplorer * This,
817 REFIID riid,
818 _COM_Outptr_ void **ppvObject);
819
820 DECLSPEC_XFGVIRT(IUnknown, AddRef)
821 ULONG ( STDMETHODCALLTYPE *AddRef )(
822 ID3DShaderCacheExplorer * This);
823
824 DECLSPEC_XFGVIRT(IUnknown, Release)
825 ULONG ( STDMETHODCALLTYPE *Release )(
826 ID3DShaderCacheExplorer * This);
827
828 DECLSPEC_XFGVIRT(ID3DShaderCacheExplorer, GetApplicationFromExePath)
829 HRESULT ( STDMETHODCALLTYPE *GetApplicationFromExePath )(
830 ID3DShaderCacheExplorer * This,
831 _In_ const wchar_t *pFullExePath,
832 REFIID riid,
833 _COM_Outptr_ void **ppvApp);
834
835 END_INTERFACE
836 } ID3DShaderCacheExplorerVtbl;
837
838 interface ID3DShaderCacheExplorer
839 {
840 CONST_VTBL struct ID3DShaderCacheExplorerVtbl *lpVtbl;
841 };
842
843
844
845#ifdef COBJMACROS
846
847
848#define ID3DShaderCacheExplorer_QueryInterface(This,riid,ppvObject) \
849 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
850
851#define ID3DShaderCacheExplorer_AddRef(This) \
852 ( (This)->lpVtbl -> AddRef(This) )
853
854#define ID3DShaderCacheExplorer_Release(This) \
855 ( (This)->lpVtbl -> Release(This) )
856
857
858#define ID3DShaderCacheExplorer_GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) \
859 ( (This)->lpVtbl -> GetApplicationFromExePath(This,pFullExePath,riid,ppvApp) )
860
861#endif /* COBJMACROS */
862
863
864#endif /* C style interface */
865
866
867
868
869#endif /* __ID3DShaderCacheExplorer_INTERFACE_DEFINED__ */
870
871
872#ifndef __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
873#define __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__
874
875/* interface ID3DShaderCacheInstallerFactory */
876/* [unique][local][object][uuid] */
877
878
879EXTERN_C const IID IID_ID3DShaderCacheInstallerFactory;
880
881#if defined(__cplusplus) && !defined(CINTERFACE)
882
883 MIDL_INTERFACE("09b2dfe4-840f-401a-804c-0dd8aadc9e9f")
884 ID3DShaderCacheInstallerFactory : public IUnknown
885 {
886 public:
887 virtual HRESULT STDMETHODCALLTYPE CreateInstaller(
888 _In_ ID3DShaderCacheInstallerClient *pClient,
889 REFIID riid,
890 _COM_Outptr_ void **ppvInstaller) = 0;
891
892 virtual HRESULT STDMETHODCALLTYPE CreateExplorer(
893 IUnknown *pUnknown,
894 REFIID riid,
895 _COM_Outptr_ void **ppvExplorer) = 0;
896
897 };
898
899
900#else /* C style interface */
901
902 typedef struct ID3DShaderCacheInstallerFactoryVtbl
903 {
904 BEGIN_INTERFACE
905
906 DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
907 HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
908 ID3DShaderCacheInstallerFactory * This,
909 REFIID riid,
910 _COM_Outptr_ void **ppvObject);
911
912 DECLSPEC_XFGVIRT(IUnknown, AddRef)
913 ULONG ( STDMETHODCALLTYPE *AddRef )(
914 ID3DShaderCacheInstallerFactory * This);
915
916 DECLSPEC_XFGVIRT(IUnknown, Release)
917 ULONG ( STDMETHODCALLTYPE *Release )(
918 ID3DShaderCacheInstallerFactory * This);
919
920 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateInstaller)
921 HRESULT ( STDMETHODCALLTYPE *CreateInstaller )(
922 ID3DShaderCacheInstallerFactory * This,
923 _In_ ID3DShaderCacheInstallerClient *pClient,
924 REFIID riid,
925 _COM_Outptr_ void **ppvInstaller);
926
927 DECLSPEC_XFGVIRT(ID3DShaderCacheInstallerFactory, CreateExplorer)
928 HRESULT ( STDMETHODCALLTYPE *CreateExplorer )(
929 ID3DShaderCacheInstallerFactory * This,
930 IUnknown *pUnknown,
931 REFIID riid,
932 _COM_Outptr_ void **ppvExplorer);
933
934 END_INTERFACE
935 } ID3DShaderCacheInstallerFactoryVtbl;
936
937 interface ID3DShaderCacheInstallerFactory
938 {
939 CONST_VTBL struct ID3DShaderCacheInstallerFactoryVtbl *lpVtbl;
940 };
941
942
943
944#ifdef COBJMACROS
945
946
947#define ID3DShaderCacheInstallerFactory_QueryInterface(This,riid,ppvObject) \
948 ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
949
950#define ID3DShaderCacheInstallerFactory_AddRef(This) \
951 ( (This)->lpVtbl -> AddRef(This) )
952
953#define ID3DShaderCacheInstallerFactory_Release(This) \
954 ( (This)->lpVtbl -> Release(This) )
955
956
957#define ID3DShaderCacheInstallerFactory_CreateInstaller(This,pClient,riid,ppvInstaller) \
958 ( (This)->lpVtbl -> CreateInstaller(This,pClient,riid,ppvInstaller) )
959
960#define ID3DShaderCacheInstallerFactory_CreateExplorer(This,pUnknown,riid,ppvExplorer) \
961 ( (This)->lpVtbl -> CreateExplorer(This,pUnknown,riid,ppvExplorer) )
962
963#endif /* COBJMACROS */
964
965
966#endif /* C style interface */
967
968
969
970
971#endif /* __ID3DShaderCacheInstallerFactory_INTERFACE_DEFINED__ */
972
973
974/* interface __MIDL_itf_d3dshadercacheregistration_0000_0006 */
975/* [local] */
976
977DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);
978DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);
979DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);
980DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);
981DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);
982DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);
983
984
985extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_c_ifspec;
986extern RPC_IF_HANDLE __MIDL_itf_d3dshadercacheregistration_0000_0006_v0_0_s_ifspec;
987
988/* Additional Prototypes for ALL interfaces */
989
990/* end of Additional Prototypes */
991
992#ifdef __cplusplus
993}
994#endif
995
996#endif
997
998
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl
new file mode 100644
index 0000000..7dcc53d
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dshadercacheregistration.idl
@@ -0,0 +1,195 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7#pragma once
8import "oaidl.idl";
9import "ocidl.idl";
10
11cpp_quote("DEFINE_GUID(CLSID_D3DShaderCacheInstallerFactory, 0x16195a0b, 0x607c, 0x41f1, 0xbf, 0x03, 0xc7, 0x69, 0x4d, 0x60, 0xa8, 0xd4);")
12
13typedef enum D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE
14{
15 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_USER,
16 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE_SYSTEM
17} D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE;
18
19interface ID3DShaderCacheInstaller;
20
21// This interface is implemented by the game installer
22[uuid(a16ee930-d9f6-4222-a514-244473e5d266), object, local, pointer_default(unique)]
23interface ID3DShaderCacheInstallerClient
24{
25 HRESULT GetInstallerName(
26 [annotation("_Inout_")] SIZE_T* pNameLength,
27 [annotation("_Out_writes_opt_(*pNameLength)")] wchar_t* pName);
28
29 D3D_SHADER_CACHE_APP_REGISTRATION_SCOPE GetInstallerScope();
30
31 HRESULT HandleDriverUpdate(
32 [annotation("_In_")] ID3DShaderCacheInstaller* pInstaller);
33};
34
35typedef struct D3D_SHADER_CACHE_PSDB_PROPERTIES
36{
37 const wchar_t* pAdapterFamily;
38 const wchar_t* pPsdbPath;
39} D3D_SHADER_CACHE_PSDB_PROPERTIES;
40
41[uuid(eed1bf00-f5c7-4cf7-885c-d0f9c0cb4828), object, local, pointer_default(unique)]
42interface ID3DShaderCacheComponent : IUnknown
43{
44 HRESULT GetComponentName(
45 [annotation("_Out_")] const wchar_t** pName);
46
47 HRESULT GetStateObjectDatabasePath(
48 [annotation("_Out_")] const wchar_t** pPath);
49
50 HRESULT GetPrecompiledCachePath(
51 [annotation("_In_")] const wchar_t* pAdapterFamily,
52 [annotation("_Inout_")] const wchar_t** pPath);
53
54 UINT GetPrecompiledShaderDatabaseCount();
55
56 HRESULT GetPrecompiledShaderDatabases(
57 UINT ArraySize,
58 [annotation("_Out_writes_(ArraySize)")] D3D_SHADER_CACHE_PSDB_PROPERTIES * pPSDBs);
59};
60
61typedef enum D3D_SHADER_CACHE_TARGET_FLAGS
62{
63 D3D_SHADER_CACHE_TARGET_FLAG_NONE = 0,
64}D3D_SHADER_CACHE_TARGET_FLAGS;
65cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D_SHADER_CACHE_TARGET_FLAGS )")
66
67typedef union D3D_VERSION_NUMBER
68{
69 UINT64 Version;
70 UINT16 VersionParts[4];
71} D3D_VERSION_NUMBER;
72
73typedef struct D3D_SHADER_CACHE_COMPILER_PROPERTIES
74{
75 wchar_t szAdapterFamily[128];
76 UINT64 MinimumABISupportVersion;
77 UINT64 MaximumABISupportVersion;
78 D3D_VERSION_NUMBER CompilerVersion;
79 D3D_VERSION_NUMBER ApplicationProfileVersion;
80} D3D_SHADER_CACHE_COMPILER_PROPERTIES;
81
82typedef struct D3D_SHADER_CACHE_APPLICATION_DESC
83{
84 const wchar_t* pExeFilename;
85 const wchar_t* pName;
86 D3D_VERSION_NUMBER Version;
87 const wchar_t* pEngineName;
88 D3D_VERSION_NUMBER EngineVersion;
89} D3D_SHADER_CACHE_APPLICATION_DESC;
90
91[uuid(fc688ee2-1b35-4913-93be-1ca3fa7df39e), object, local, pointer_default(unique)]
92interface ID3DShaderCacheApplication : IUnknown
93{
94 HRESULT GetExePath(
95 [annotation("_Out_")] const wchar_t** pExePath);
96
97 HRESULT GetDesc(
98 [annotation("_Out_")] D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc);
99
100 HRESULT RegisterComponent(
101 [annotation("_In_")] const wchar_t* pName,
102 [annotation("_In_")] const wchar_t* pStateObjectDBPath,
103 [annotation("_In_")] UINT NumPSDB,
104 [annotation("_In_reads_(NumPSDB)")] const D3D_SHADER_CACHE_PSDB_PROPERTIES* pPSDBs,
105 [in] REFIID riid,
106 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
107
108 HRESULT RemoveComponent(
109 [annotation("_In_")] ID3DShaderCacheComponent* pComponent);
110
111 UINT GetComponentCount();
112
113 HRESULT GetComponent(
114 [annotation("_In_")] UINT index,
115 [in] REFIID riid,
116 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvComponent);
117
118 UINT GetPrecompileTargetCount(D3D_SHADER_CACHE_TARGET_FLAGS flags);
119
120 HRESULT GetPrecompileTargets(
121 [annotation("_In_")] UINT ArraySize,
122 [annotation("_In_reads_(ArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
123 D3D_SHADER_CACHE_TARGET_FLAGS flags);
124
125 HRESULT GetInstallerName(
126 [annotation("_Out_")] const wchar_t** pInstallerName);
127};
128
129typedef struct SC_HANDLE__ *SC_HANDLE;
130[uuid(bbe30de1-6318-4526-ae17-776693191bb4), object, local, pointer_default(unique)]
131interface ID3DShaderCacheInstaller : IUnknown
132{
133 HRESULT RegisterDriverUpdateListener();
134 HRESULT UnregisterDriverUpdateListener();
135
136 HRESULT RegisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
137 HRESULT UnregisterServiceDriverUpdateTrigger(SC_HANDLE hServiceHandle);
138
139 HRESULT RegisterApplication(
140 [annotation("_In_")] const wchar_t* pExePath,
141 [annotation("_In_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
142 [in] REFIID riid,
143 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
144
145 HRESULT RemoveApplication(
146 [annotation("_In_")] ID3DShaderCacheApplication* pApplication); // Expected: ID3DShaderCacheApplication
147
148 UINT GetApplicationCount();
149
150 HRESULT GetApplication(
151 [annotation("_In_")] UINT index,
152 [in] REFIID riid,
153 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
154
155 HRESULT ClearAllState();
156
157 UINT GetMaxPrecompileTargetCount();
158
159 HRESULT GetPrecompileTargets(
160 [annotation("_In_opt_")] const D3D_SHADER_CACHE_APPLICATION_DESC* pApplicationDesc,
161 [annotation("_Inout_")] UINT* pArraySize,
162 [annotation("_Out_writes_(*pArraySize)")] D3D_SHADER_CACHE_COMPILER_PROPERTIES* pArray,
163 D3D_SHADER_CACHE_TARGET_FLAGS flags);
164};
165
166[uuid(90432322-32f5-487f-9264-e9390fa58b2a), object, local, pointer_default(unique)]
167interface ID3DShaderCacheExplorer : IUnknown
168{
169 HRESULT GetApplicationFromExePath(
170 [annotation("_In_")] const wchar_t* pFullExePath,
171 [in] REFIID riid,
172 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvApp); // Expected: ID3DShaderCacheApplication
173};
174
175[uuid(09b2dfe4-840f-401a-804c-0dd8aadc9e9f), object, local, pointer_default(unique)]
176interface ID3DShaderCacheInstallerFactory : IUnknown
177{
178 HRESULT CreateInstaller(
179 [annotation("_In_")] ID3DShaderCacheInstallerClient* pClient,
180 [in] REFIID riid,
181 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvInstaller);
182
183 HRESULT CreateExplorer(
184 [in] IUnknown* pUnknown, // Expected: ID3D12Device, IDXCoreAdapter, IDXGIAdapter
185 [in] REFIID riid,
186 [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvExplorer); // Expected: ID3DShaderCacheExplorer
187};
188
189
190cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerClient,0xa16ee930,0xd9f6,0x4222,0xa5,0x14,0x24,0x44,0x73,0xe5,0xd2,0x66);" )
191cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheComponent,0xeed1bf00,0xf5c7,0x4cf7,0x88,0x5c,0xd0,0xf9,0xc0,0xcb,0x48,0x28);" )
192cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheApplication,0xfc688ee2,0x1b35,0x4913,0x93,0xbe,0x1c,0xa3,0xfa,0x7d,0xf3,0x9e);" )
193cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstaller,0xbbe30de1,0x6318,0x4526,0xae,0x17,0x77,0x66,0x93,0x19,0x1b,0xb4);" )
194cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheExplorer,0x90432322,0x32f5,0x487f,0x92,0x64,0xe9,0x39,0x0f,0xa5,0x8b,0x2a);" )
195cpp_quote( "DEFINE_GUID(IID_ID3DShaderCacheInstallerFactory,0x09b2dfe4,0x840f,0x401a,0x80,0x4c,0x0d,0xd8,0xaa,0xdc,0x9e,0x9f);" )
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h
new file mode 100644
index 0000000..e8ec24e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12.h
@@ -0,0 +1,36 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_H__
9#define __D3DX12_H__
10
11#include "d3d12.h"
12
13#if defined( __cplusplus )
14
15#include "d3dx12_barriers.h"
16#include "d3dx12_core.h"
17#include "d3dx12_default.h"
18#include "d3dx12_pipeline_state_stream.h"
19#include "d3dx12_render_pass.h"
20#include "d3dx12_resource_helpers.h"
21#include "d3dx12_root_signature.h"
22#include "d3dx12_property_format_table.h"
23
24#ifndef D3DX12_NO_STATE_OBJECT_HELPERS
25#include "d3dx12_state_object.h"
26#endif // !D3DX12_NO_STATE_OBJECT_HELPERS
27
28#ifndef D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
29#include "d3dx12_check_feature_support.h"
30#endif // !D3DX12_NO_CHECK_FEATURE_SUPPORT_CLASS
31
32#endif // defined( __cplusplus )
33
34#endif //__D3DX12_H__
35
36
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h
new file mode 100644
index 0000000..1bd7a74
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_barriers.h
@@ -0,0 +1,193 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#ifndef __D3DX12_BARRIERS_H__
9#define __D3DX12_BARRIERS_H__
10
11#if defined( __cplusplus )
12
13#include "d3d12.h"
14
15//------------------------------------------------------------------------------------------------
16struct CD3DX12_RESOURCE_BARRIER : public D3D12_RESOURCE_BARRIER
17{
18 CD3DX12_RESOURCE_BARRIER() = default;
19 explicit CD3DX12_RESOURCE_BARRIER(const D3D12_RESOURCE_BARRIER &o) noexcept :
20 D3D12_RESOURCE_BARRIER(o)
21 {}
22 static inline CD3DX12_RESOURCE_BARRIER Transition(
23 _In_ ID3D12Resource* pResource,
24 D3D12_RESOURCE_STATES stateBefore,
25 D3D12_RESOURCE_STATES stateAfter,
26 UINT subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES,
27 D3D12_RESOURCE_BARRIER_FLAGS flags = D3D12_RESOURCE_BARRIER_FLAG_NONE) noexcept
28 {
29 CD3DX12_RESOURCE_BARRIER result = {};
30 D3D12_RESOURCE_BARRIER &barrier = result;
31 result.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
32 result.Flags = flags;
33 barrier.Transition.pResource = pResource;
34 barrier.Transition.StateBefore = stateBefore;
35 barrier.Transition.StateAfter = stateAfter;
36 barrier.Transition.Subresource = subresource;
37 return result;
38 }
39 static inline CD3DX12_RESOURCE_BARRIER Aliasing(
40 _In_opt_ ID3D12Resource* pResourceBefore,
41 _In_opt_ ID3D12Resource* pResourceAfter) noexcept
42 {
43 CD3DX12_RESOURCE_BARRIER result = {};
44 D3D12_RESOURCE_BARRIER &barrier = result;
45 result.Type = D3D12_RESOURCE_BARRIER_TYPE_ALIASING;
46 barrier.Aliasing.pResourceBefore = pResourceBefore;
47 barrier.Aliasing.pResourceAfter = pResourceAfter;
48 return result;
49 }
50 static inline CD3DX12_RESOURCE_BARRIER UAV(
51 _In_opt_ ID3D12Resource* pResource) noexcept
52 {
53 CD3DX12_RESOURCE_BARRIER result = {};
54 D3D12_RESOURCE_BARRIER &barrier = result;
55 result.Type = D3D12_RESOURCE_BARRIER_TYPE_UAV;
56 barrier.UAV.pResource = pResource;
57 return result;
58 }
59};
60
61#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
62
63//================================================================================================
64// D3DX12 Enhanced Barrier Helpers
65//================================================================================================
66
67class CD3DX12_BARRIER_SUBRESOURCE_RANGE : public D3D12_BARRIER_SUBRESOURCE_RANGE
68{
69public:
70 CD3DX12_BARRIER_SUBRESOURCE_RANGE() = default;
71 CD3DX12_BARRIER_SUBRESOURCE_RANGE(const D3D12_BARRIER_SUBRESOURCE_RANGE &o) noexcept :
72 D3D12_BARRIER_SUBRESOURCE_RANGE(o)
73 {}
74 explicit CD3DX12_BARRIER_SUBRESOURCE_RANGE(UINT Subresource) noexcept :
75 D3D12_BARRIER_SUBRESOURCE_RANGE{ Subresource, 0, 0, 0, 0, 0 }
76 {}
77 CD3DX12_BARRIER_SUBRESOURCE_RANGE(
78 UINT firstMipLevel,
79 UINT numMips,
80 UINT firstArraySlice,
81 UINT numArraySlices,
82 UINT firstPlane = 0,
83 UINT numPlanes = 1) noexcept :
84 D3D12_BARRIER_SUBRESOURCE_RANGE
85 {
86 firstMipLevel,
87 numMips,
88 firstArraySlice,
89 numArraySlices,
90 firstPlane,
91 numPlanes
92 }
93 {}
94};
95
96class CD3DX12_GLOBAL_BARRIER : public D3D12_GLOBAL_BARRIER
97{
98public:
99 CD3DX12_GLOBAL_BARRIER() = default;
100 CD3DX12_GLOBAL_BARRIER(const D3D12_GLOBAL_BARRIER &o) noexcept : D3D12_GLOBAL_BARRIER(o){}
101 CD3DX12_GLOBAL_BARRIER(
102 D3D12_BARRIER_SYNC syncBefore,
103 D3D12_BARRIER_SYNC syncAfter,
104 D3D12_BARRIER_ACCESS accessBefore,
105 D3D12_BARRIER_ACCESS accessAfter) noexcept : D3D12_GLOBAL_BARRIER {
106 syncBefore,
107 syncAfter,
108 accessBefore,
109 accessAfter
110 }
111 {}
112};
113
114class CD3DX12_BUFFER_BARRIER : public D3D12_BUFFER_BARRIER
115{
116public:
117 CD3DX12_BUFFER_BARRIER() = default;
118 CD3DX12_BUFFER_BARRIER(const D3D12_BUFFER_BARRIER &o) noexcept : D3D12_BUFFER_BARRIER(o){}
119 CD3DX12_BUFFER_BARRIER(
120 D3D12_BARRIER_SYNC syncBefore,
121 D3D12_BARRIER_SYNC syncAfter,
122 D3D12_BARRIER_ACCESS accessBefore,
123 D3D12_BARRIER_ACCESS accessAfter,
124 ID3D12Resource *pRes) noexcept : D3D12_BUFFER_BARRIER {
125 syncBefore,
126 syncAfter,
127 accessBefore,
128 accessAfter,
129 pRes,
130 0, ULLONG_MAX
131 }
132 {}
133};
134
135class CD3DX12_TEXTURE_BARRIER : public D3D12_TEXTURE_BARRIER
136{
137public:
138 CD3DX12_TEXTURE_BARRIER() = default;
139 CD3DX12_TEXTURE_BARRIER(const D3D12_TEXTURE_BARRIER &o) noexcept : D3D12_TEXTURE_BARRIER(o){}
140 CD3DX12_TEXTURE_BARRIER(
141 D3D12_BARRIER_SYNC syncBefore,
142 D3D12_BARRIER_SYNC syncAfter,
143 D3D12_BARRIER_ACCESS accessBefore,
144 D3D12_BARRIER_ACCESS accessAfter,
145 D3D12_BARRIER_LAYOUT layoutBefore,
146 D3D12_BARRIER_LAYOUT layoutAfter,
147 ID3D12Resource *pRes,
148 const D3D12_BARRIER_SUBRESOURCE_RANGE &subresources,
149 D3D12_TEXTURE_BARRIER_FLAGS flag = D3D12_TEXTURE_BARRIER_FLAG_NONE) noexcept : D3D12_TEXTURE_BARRIER {
150 syncBefore,
151 syncAfter,
152 accessBefore,
153 accessAfter,
154 layoutBefore,
155 layoutAfter,
156 pRes,
157 subresources,
158 flag
159 }
160 {}
161};
162
163class CD3DX12_BARRIER_GROUP : public D3D12_BARRIER_GROUP
164{
165public:
166 CD3DX12_BARRIER_GROUP() = default;
167 CD3DX12_BARRIER_GROUP(const D3D12_BARRIER_GROUP &o) noexcept : D3D12_BARRIER_GROUP(o){}
168 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_BUFFER_BARRIER *pBarriers) noexcept
169 {
170 Type = D3D12_BARRIER_TYPE_BUFFER;
171 NumBarriers = numBarriers;
172 pBufferBarriers = pBarriers;
173 }
174 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_TEXTURE_BARRIER *pBarriers) noexcept
175 {
176 Type = D3D12_BARRIER_TYPE_TEXTURE;
177 NumBarriers = numBarriers;
178 pTextureBarriers = pBarriers;
179 }
180 CD3DX12_BARRIER_GROUP(UINT32 numBarriers, const D3D12_GLOBAL_BARRIER *pBarriers) noexcept
181 {
182 Type = D3D12_BARRIER_TYPE_GLOBAL;
183 NumBarriers = numBarriers;
184 pGlobalBarriers = pBarriers;
185 }
186};
187#endif // D3D12_SDK_VERSION >= 608
188
189
190#endif // defined( __cplusplus )
191
192#endif // __D3DX12_BARRIERS_H__
193
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h
new file mode 100644
index 0000000..725fb7f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_check_feature_support.h
@@ -0,0 +1,1162 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15
16//================================================================================================
17// D3DX12 Check Feature Support
18//================================================================================================
19
20#include <vector>
21
22class CD3DX12FeatureSupport
23{
24public: // Function declaration
25 // Default constructor that creates an empty object
26 CD3DX12FeatureSupport() noexcept;
27
28 // Initialize data from the given device
29 HRESULT Init(ID3D12Device* pDevice);
30
31 // Retreives the status of the object. If an error occurred in the initialization process, the function returns the error code.
32 HRESULT GetStatus() const noexcept { return m_hStatus; }
33
34 // Getter functions for each feature class
35 // D3D12_OPTIONS
36 BOOL DoublePrecisionFloatShaderOps() const noexcept;
37 BOOL OutputMergerLogicOp() const noexcept;
38 D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport() const noexcept;
39 D3D12_TILED_RESOURCES_TIER TiledResourcesTier() const noexcept;
40 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier() const noexcept;
41 BOOL PSSpecifiedStencilRefSupported() const noexcept;
42 BOOL TypedUAVLoadAdditionalFormats() const noexcept;
43 BOOL ROVsSupported() const noexcept;
44 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier() const noexcept;
45 BOOL StandardSwizzle64KBSupported() const noexcept;
46 BOOL CrossAdapterRowMajorTextureSupported() const noexcept;
47 BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation() const noexcept;
48 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier() const noexcept;
49 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier() const noexcept;
50 UINT MaxGPUVirtualAddressBitsPerResource() const noexcept;
51
52 // FEATURE_LEVELS
53 D3D_FEATURE_LEVEL MaxSupportedFeatureLevel() const noexcept;
54
55 // FORMAT_SUPPORT
56 HRESULT FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const;
57
58 // MUTLTISAMPLE_QUALITY_LEVELS
59 HRESULT MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const;
60
61 // FORMAT_INFO
62 HRESULT FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const;
63
64 // GPU_VIRTUAL_ADDRESS_SUPPORT
65 UINT MaxGPUVirtualAddressBitsPerProcess() const noexcept;
66
67 // SHADER_MODEL
68 D3D_SHADER_MODEL HighestShaderModel() const noexcept;
69
70 // D3D12_OPTIONS1
71 BOOL WaveOps() const noexcept;
72 UINT WaveLaneCountMin() const noexcept;
73 UINT WaveLaneCountMax() const noexcept;
74 UINT TotalLaneCount() const noexcept;
75 BOOL ExpandedComputeResourceStates() const noexcept;
76 BOOL Int64ShaderOps() const noexcept;
77
78 // PROTECTED_RESOURCE_SESSION_SUPPORT
79 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ProtectedResourceSessionSupport(UINT NodeIndex = 0) const;
80
81 // ROOT_SIGNATURE
82 D3D_ROOT_SIGNATURE_VERSION HighestRootSignatureVersion() const noexcept;
83
84 // ARCHITECTURE1
85 BOOL TileBasedRenderer(UINT NodeIndex = 0) const;
86 BOOL UMA(UINT NodeIndex = 0) const;
87 BOOL CacheCoherentUMA(UINT NodeIndex = 0) const;
88 BOOL IsolatedMMU(UINT NodeIndex = 0) const;
89
90 // D3D12_OPTIONS2
91 BOOL DepthBoundsTestSupported() const noexcept;
92 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier() const noexcept;
93
94 // SHADER_CACHE
95 D3D12_SHADER_CACHE_SUPPORT_FLAGS ShaderCacheSupportFlags() const noexcept;
96
97 // COMMAND_QUEUE_PRIORITY
98 BOOL CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority);
99
100 // D3D12_OPTIONS3
101 BOOL CopyQueueTimestampQueriesSupported() const noexcept;
102 BOOL CastingFullyTypedFormatSupported() const noexcept;
103 D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags() const noexcept;
104 D3D12_VIEW_INSTANCING_TIER ViewInstancingTier() const noexcept;
105 BOOL BarycentricsSupported() const noexcept;
106
107 // EXISTING_HEAPS
108 BOOL ExistingHeapsSupported() const noexcept;
109
110 // D3D12_OPTIONS4
111 BOOL MSAA64KBAlignedTextureSupported() const noexcept;
112 D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier() const noexcept;
113 BOOL Native16BitShaderOpsSupported() const noexcept;
114
115 // SERIALIZATION
116 D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier(UINT NodeIndex = 0) const;
117
118 // CROSS_NODE
119 // CrossNodeSharingTier handled in D3D12Options
120 BOOL CrossNodeAtomicShaderInstructions() const noexcept;
121
122 // D3D12_OPTIONS5
123 BOOL SRVOnlyTiledResourceTier3() const noexcept;
124 D3D12_RENDER_PASS_TIER RenderPassesTier() const noexcept;
125 D3D12_RAYTRACING_TIER RaytracingTier() const noexcept;
126
127#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
128 // DISPLAYABLE
129 BOOL DisplayableTexture() const noexcept;
130 // SharedResourceCompatibilityTier handled in D3D12Options4
131#endif
132
133 // D3D12_OPTIONS6
134 BOOL AdditionalShadingRatesSupported() const noexcept;
135 BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing() const noexcept;
136 D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier() const noexcept;
137 UINT ShadingRateImageTileSize() const noexcept;
138 BOOL BackgroundProcessingSupported() const noexcept;
139
140 // QUERY_META_COMMAND
141 HRESULT QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const;
142
143 // D3D12_OPTIONS7
144 D3D12_MESH_SHADER_TIER MeshShaderTier() const noexcept;
145 D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier() const noexcept;
146
147 // PROTECTED_RESOURCE_SESSION_TYPE_COUNT
148 UINT ProtectedResourceSessionTypeCount(UINT NodeIndex = 0) const;
149
150 // PROTECTED_RESOURCE_SESSION_TYPES
151 std::vector<GUID> ProtectedResourceSessionTypes(UINT NodeIndex = 0) const;
152
153#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
154 // D3D12_OPTIONS8
155 BOOL UnalignedBlockTexturesSupported() const noexcept;
156
157 // D3D12_OPTIONS9
158 BOOL MeshShaderPipelineStatsSupported() const noexcept;
159 BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex() const noexcept;
160 BOOL AtomicInt64OnTypedResourceSupported() const noexcept;
161 BOOL AtomicInt64OnGroupSharedSupported() const noexcept;
162 BOOL DerivativesInMeshAndAmplificationShadersSupported() const noexcept;
163 D3D12_WAVE_MMA_TIER WaveMMATier() const noexcept;
164#endif
165
166#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
167 // D3D12_OPTIONS10
168 BOOL VariableRateShadingSumCombinerSupported() const noexcept;
169 BOOL MeshShaderPerPrimitiveShadingRateSupported() const noexcept;
170
171 // D3D12_OPTIONS11
172 BOOL AtomicInt64OnDescriptorHeapResourceSupported() const noexcept;
173#endif
174
175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
176 // D3D12_OPTIONS12
177 D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives() const noexcept;
178 BOOL EnhancedBarriersSupported() const noexcept;
179 BOOL RelaxedFormatCastingSupported() const noexcept;
180#endif
181
182#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
183 // D3D12_OPTIONS13
184 BOOL UnrestrictedBufferTextureCopyPitchSupported() const noexcept;
185 BOOL UnrestrictedVertexElementAlignmentSupported() const noexcept;
186 BOOL InvertedViewportHeightFlipsYSupported() const noexcept;
187 BOOL InvertedViewportDepthFlipsZSupported() const noexcept;
188 BOOL TextureCopyBetweenDimensionsSupported() const noexcept;
189 BOOL AlphaBlendFactorSupported() const noexcept;
190#endif
191
192#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
193 // D3D12_OPTIONS14
194 BOOL AdvancedTextureOpsSupported() const noexcept;
195 BOOL WriteableMSAATexturesSupported() const noexcept;
196 BOOL IndependentFrontAndBackStencilRefMaskSupported() const noexcept;
197
198 // D3D12_OPTIONS15
199 BOOL TriangleFanSupported() const noexcept;
200 BOOL DynamicIndexBufferStripCutSupported() const noexcept;
201#endif
202
203#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
204 // D3D12_OPTIONS16
205 BOOL DynamicDepthBiasSupported() const noexcept;
206#endif
207#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
208 BOOL GPUUploadHeapSupported() const noexcept;
209
210 // D3D12_OPTIONS17
211 BOOL NonNormalizedCoordinateSamplersSupported() const noexcept;
212 BOOL ManualWriteTrackingResourceSupported() const noexcept;
213
214 // D3D12_OPTIONS18
215 BOOL RenderPassesValid() const noexcept;
216#endif
217
218#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
219 BOOL MismatchingOutputDimensionsSupported() const noexcept;
220 UINT SupportedSampleCountsWithNoOutputs() const noexcept;
221 BOOL PointSamplingAddressesNeverRoundUp() const noexcept;
222 BOOL RasterizerDesc2Supported() const noexcept;
223 BOOL NarrowQuadrilateralLinesSupported() const noexcept;
224 BOOL AnisoFilterWithPointMipSupported() const noexcept;
225 UINT MaxSamplerDescriptorHeapSize() const noexcept;
226 UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers() const noexcept;
227 UINT MaxViewDescriptorHeapSize() const noexcept;
228#endif
229
230#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
231 BOOL ComputeOnlyWriteWatchSupported() const noexcept;
232#endif
233
234#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
235 D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier() const noexcept;
236 D3D12_WORK_GRAPHS_TIER WorkGraphsTier() const noexcept;
237#endif
238
239#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
240 D3D12_TIGHT_ALIGNMENT_TIER TightAlignmentSupportTier() const noexcept;
241#endif
242
243private: // Private structs and helpers declaration
244 struct ProtectedResourceSessionTypesLocal : D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
245 {
246 std::vector<GUID> TypeVec;
247 };
248
249 // Helper function to decide the highest shader model supported by the system
250 // Stores the result in m_dShaderModel
251 // Must be updated whenever a new shader model is added to the d3d12.h header
252 HRESULT QueryHighestShaderModel();
253
254 // Helper function to decide the highest root signature supported
255 // Must be updated whenever a new root signature version is added to the d3d12.h header
256 HRESULT QueryHighestRootSignatureVersion();
257
258 // Helper funcion to decide the highest feature level
259 HRESULT QueryHighestFeatureLevel();
260
261 // Helper function to initialize local protected resource session types structs
262 HRESULT QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count);
263
264private: // Member data
265 // Pointer to the underlying device
266 ID3D12Device* m_pDevice;
267
268 // Stores the error code from initialization
269 HRESULT m_hStatus;
270
271 // Feature support data structs
272 D3D12_FEATURE_DATA_D3D12_OPTIONS m_dOptions;
273 D3D_FEATURE_LEVEL m_eMaxFeatureLevel;
274 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT m_dGPUVASupport;
275 D3D12_FEATURE_DATA_SHADER_MODEL m_dShaderModel;
276 D3D12_FEATURE_DATA_D3D12_OPTIONS1 m_dOptions1;
277 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT> m_dProtectedResourceSessionSupport;
278 D3D12_FEATURE_DATA_ROOT_SIGNATURE m_dRootSignature;
279 std::vector<D3D12_FEATURE_DATA_ARCHITECTURE1> m_dArchitecture1;
280 D3D12_FEATURE_DATA_D3D12_OPTIONS2 m_dOptions2;
281 D3D12_FEATURE_DATA_SHADER_CACHE m_dShaderCache;
282 D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY m_dCommandQueuePriority;
283 D3D12_FEATURE_DATA_D3D12_OPTIONS3 m_dOptions3;
284 D3D12_FEATURE_DATA_EXISTING_HEAPS m_dExistingHeaps;
285 D3D12_FEATURE_DATA_D3D12_OPTIONS4 m_dOptions4;
286 std::vector<D3D12_FEATURE_DATA_SERIALIZATION> m_dSerialization; // Cat2 NodeIndex
287 D3D12_FEATURE_DATA_CROSS_NODE m_dCrossNode;
288 D3D12_FEATURE_DATA_D3D12_OPTIONS5 m_dOptions5;
289#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
290 D3D12_FEATURE_DATA_DISPLAYABLE m_dDisplayable;
291#endif
292 D3D12_FEATURE_DATA_D3D12_OPTIONS6 m_dOptions6;
293 D3D12_FEATURE_DATA_D3D12_OPTIONS7 m_dOptions7;
294 std::vector<D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT> m_dProtectedResourceSessionTypeCount; // Cat2 NodeIndex
295 std::vector<ProtectedResourceSessionTypesLocal> m_dProtectedResourceSessionTypes; // Cat3
296#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
297 D3D12_FEATURE_DATA_D3D12_OPTIONS8 m_dOptions8;
298 D3D12_FEATURE_DATA_D3D12_OPTIONS9 m_dOptions9;
299#endif
300#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
301 D3D12_FEATURE_DATA_D3D12_OPTIONS10 m_dOptions10;
302 D3D12_FEATURE_DATA_D3D12_OPTIONS11 m_dOptions11;
303#endif
304#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
305 D3D12_FEATURE_DATA_D3D12_OPTIONS12 m_dOptions12;
306#endif
307#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
308 D3D12_FEATURE_DATA_D3D12_OPTIONS13 m_dOptions13;
309#endif
310#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
311 D3D12_FEATURE_DATA_D3D12_OPTIONS14 m_dOptions14;
312 D3D12_FEATURE_DATA_D3D12_OPTIONS15 m_dOptions15;
313#endif
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
315 D3D12_FEATURE_DATA_D3D12_OPTIONS16 m_dOptions16;
316#endif
317#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
318 D3D12_FEATURE_DATA_D3D12_OPTIONS17 m_dOptions17;
319#endif
320#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
321 D3D12_FEATURE_DATA_D3D12_OPTIONS18 m_dOptions18;
322#endif
323#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
324 D3D12_FEATURE_DATA_D3D12_OPTIONS19 m_dOptions19;
325#endif
326#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
327 D3D12_FEATURE_DATA_D3D12_OPTIONS20 m_dOptions20;
328#endif
329#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
330 D3D12_FEATURE_DATA_D3D12_OPTIONS21 m_dOptions21;
331#endif
332#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
333 D3D12_FEATURE_DATA_TIGHT_ALIGNMENT m_dTightAlignment;
334#endif
335};
336
337// Implementations for CD3DX12FeatureSupport functions
338
339// Macro to set up a getter function for each entry in feature support data
340// The getter function will have the same name as the feature option name
341#define FEATURE_SUPPORT_GET(RETTYPE,FEATURE,OPTION) \
342inline RETTYPE CD3DX12FeatureSupport::OPTION() const noexcept \
343{ \
344 return FEATURE.OPTION; \
345}
346
347// Macro to set up a getter function for each entry in feature support data
348// Also specifies the name for the function which can be different from the feature name
349#define FEATURE_SUPPORT_GET_NAME(RETTYPE,FEATURE,OPTION,NAME) \
350inline RETTYPE CD3DX12FeatureSupport::NAME() const noexcept \
351{\
352 return FEATURE.OPTION; \
353}
354
355// Macro to set up a getter function for feature data indexed by the graphics node ID
356// The default parameter is 0, or the first availabe graphics device node
357#define FEATURE_SUPPORT_GET_NODE_INDEXED(RETTYPE,FEATURE,OPTION) \
358inline RETTYPE CD3DX12FeatureSupport::OPTION(UINT NodeIndex) const \
359{\
360 return FEATURE[NodeIndex].OPTION; \
361}
362
363// Macro to set up a getter function for feature data indexed by NodeIndex
364// Allows a custom name for the getter function
365#define FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(RETTYPE,FEATURE,OPTION,NAME) \
366inline RETTYPE CD3DX12FeatureSupport::NAME(UINT NodeIndex) const \
367{\
368 return FEATURE[NodeIndex].OPTION; \
369}
370
371inline CD3DX12FeatureSupport::CD3DX12FeatureSupport() noexcept
372: m_pDevice(nullptr)
373, m_hStatus(E_INVALIDARG)
374, m_dOptions{}
375, m_eMaxFeatureLevel{}
376, m_dGPUVASupport{}
377, m_dShaderModel{}
378, m_dOptions1{}
379, m_dRootSignature{}
380, m_dOptions2{}
381, m_dShaderCache{}
382, m_dCommandQueuePriority{}
383, m_dOptions3{}
384, m_dExistingHeaps{}
385, m_dOptions4{}
386, m_dCrossNode{}
387, m_dOptions5{}
388#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
389, m_dDisplayable{}
390#endif
391, m_dOptions6{}
392, m_dOptions7{}
393#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
394, m_dOptions8{}
395, m_dOptions9{}
396#endif
397#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
398, m_dOptions10{}
399, m_dOptions11{}
400#endif
401#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
402, m_dOptions12{}
403#endif
404#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
405, m_dOptions13{}
406#endif
407#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
408, m_dOptions14{}
409, m_dOptions15{}
410#endif
411#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
412, m_dOptions16{}
413#endif
414#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
415, m_dOptions17{}
416#endif
417#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
418, m_dOptions18{}
419#endif
420#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
421, m_dOptions19{}
422#endif
423#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
424, m_dOptions20{}
425#endif
426#if defined (D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
427, m_dOptions21{}
428#endif
429#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
430, m_dTightAlignment{}
431#endif
432{}
433
434inline HRESULT CD3DX12FeatureSupport::Init(ID3D12Device* pDevice)
435{
436 if (!pDevice)
437 {
438 m_hStatus = E_INVALIDARG;
439 return m_hStatus;
440 }
441
442 m_pDevice = pDevice;
443
444 // Initialize static feature support data structures
445 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS, &m_dOptions, sizeof(m_dOptions))))
446 {
447 m_dOptions = {};
448 }
449
450 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT, &m_dGPUVASupport, sizeof(m_dGPUVASupport))))
451 {
452 m_dGPUVASupport = {};
453 }
454
455 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS1, &m_dOptions1, sizeof(m_dOptions1))))
456 {
457 m_dOptions1 = {};
458 }
459
460 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS2, &m_dOptions2, sizeof(m_dOptions2))))
461 {
462 m_dOptions2 = {};
463 }
464
465 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_CACHE, &m_dShaderCache, sizeof(m_dShaderCache))))
466 {
467 m_dShaderCache = {};
468 }
469
470 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &m_dOptions3, sizeof(m_dOptions3))))
471 {
472 m_dOptions3 = {};
473 }
474
475 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_EXISTING_HEAPS, &m_dExistingHeaps, sizeof(m_dExistingHeaps))))
476 {
477 m_dExistingHeaps = {};
478 }
479
480 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS4, &m_dOptions4, sizeof(m_dOptions4))))
481 {
482 m_dOptions4 = {};
483 }
484
485 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_CROSS_NODE, &m_dCrossNode, sizeof(m_dCrossNode))))
486 {
487 m_dCrossNode = {};
488 }
489
490 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS5, &m_dOptions5, sizeof(m_dOptions5))))
491 {
492 m_dOptions5 = {};
493 }
494
495#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
496 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_DISPLAYABLE, &m_dDisplayable, sizeof(m_dDisplayable))))
497 {
498 m_dDisplayable = {};
499 }
500#endif
501
502 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS6, &m_dOptions6, sizeof(m_dOptions6))))
503 {
504 m_dOptions6 = {};
505 }
506
507 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &m_dOptions7, sizeof(m_dOptions7))))
508 {
509 m_dOptions7 = {};
510 }
511
512#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
513 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS8, &m_dOptions8, sizeof(m_dOptions8))))
514 {
515 m_dOptions8 = {};
516 }
517
518 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS9, &m_dOptions9, sizeof(m_dOptions9))))
519 {
520 m_dOptions9 = {};
521 }
522#endif
523
524#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
525 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS10, &m_dOptions10, sizeof(m_dOptions10))))
526 {
527 m_dOptions10 = {};
528 }
529
530 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS11, &m_dOptions11, sizeof(m_dOptions11))))
531 {
532 m_dOptions11 = {};
533 }
534#endif
535
536#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
537 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS12, &m_dOptions12, sizeof(m_dOptions12))))
538 {
539 m_dOptions12 = {};
540 m_dOptions12.MSPrimitivesPipelineStatisticIncludesCulledPrimitives = D3D12_TRI_STATE::D3D12_TRI_STATE_UNKNOWN;
541 }
542#endif
543
544#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
545 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS13, &m_dOptions13, sizeof(m_dOptions13))))
546 {
547 m_dOptions13 = {};
548 }
549#endif
550
551#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
552 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS14, &m_dOptions14, sizeof(m_dOptions14))))
553 {
554 m_dOptions14 = {};
555 }
556
557 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS15, &m_dOptions15, sizeof(m_dOptions15))))
558 {
559 m_dOptions15 = {};
560 }
561#endif
562
563#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
564 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS16, &m_dOptions16, sizeof(m_dOptions16))))
565 {
566 m_dOptions16 = {};
567 }
568#endif
569
570#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
571 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS17, &m_dOptions17, sizeof(m_dOptions17))))
572 {
573 m_dOptions17 = {};
574 }
575
576 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS18, &m_dOptions18, sizeof(m_dOptions18))))
577 {
578 m_dOptions18.RenderPassesValid = false;
579 }
580#endif
581
582#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
583 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS19, &m_dOptions19, sizeof(m_dOptions19))))
584 {
585 m_dOptions19 = {};
586 m_dOptions19.SupportedSampleCountsWithNoOutputs = 1;
587 m_dOptions19.MaxSamplerDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
588 m_dOptions19.MaxSamplerDescriptorHeapSizeWithStaticSamplers = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE;
589 m_dOptions19.MaxViewDescriptorHeapSize = D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1;
590 }
591#endif
592
593#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
594 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS20, &m_dOptions20, sizeof(m_dOptions20))))
595 {
596 m_dOptions20 = {};
597 }
598#endif
599
600#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
601 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS21, &m_dOptions21, sizeof(m_dOptions21))))
602 {
603 m_dOptions21 = {};
604 }
605#endif
606
607#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
608 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_TIGHT_ALIGNMENT, &m_dTightAlignment, sizeof(m_dTightAlignment))))
609 {
610 m_dTightAlignment = {};
611 }
612#endif
613
614 // Initialize per-node feature support data structures
615 const UINT uNodeCount = m_pDevice->GetNodeCount();
616 m_dProtectedResourceSessionSupport.resize(uNodeCount);
617 m_dArchitecture1.resize(uNodeCount);
618 m_dSerialization.resize(uNodeCount);
619 m_dProtectedResourceSessionTypeCount.resize(uNodeCount);
620 m_dProtectedResourceSessionTypes.resize(uNodeCount);
621 for (UINT NodeIndex = 0; NodeIndex < uNodeCount; NodeIndex++)
622 {
623 m_dProtectedResourceSessionSupport[NodeIndex].NodeIndex = NodeIndex;
624 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT, &m_dProtectedResourceSessionSupport[NodeIndex], sizeof(m_dProtectedResourceSessionSupport[NodeIndex]))))
625 {
626 m_dProtectedResourceSessionSupport[NodeIndex].Support = D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE;
627 }
628
629 m_dArchitecture1[NodeIndex].NodeIndex = NodeIndex;
630 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE1, &m_dArchitecture1[NodeIndex], sizeof(m_dArchitecture1[NodeIndex]))))
631 {
632 D3D12_FEATURE_DATA_ARCHITECTURE dArchLocal = {};
633 dArchLocal.NodeIndex = NodeIndex;
634 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ARCHITECTURE, &dArchLocal, sizeof(dArchLocal))))
635 {
636 dArchLocal.TileBasedRenderer = false;
637 dArchLocal.UMA = false;
638 dArchLocal.CacheCoherentUMA = false;
639 }
640
641 m_dArchitecture1[NodeIndex].TileBasedRenderer = dArchLocal.TileBasedRenderer;
642 m_dArchitecture1[NodeIndex].UMA = dArchLocal.UMA;
643 m_dArchitecture1[NodeIndex].CacheCoherentUMA = dArchLocal.CacheCoherentUMA;
644 m_dArchitecture1[NodeIndex].IsolatedMMU = false;
645 }
646
647 m_dSerialization[NodeIndex].NodeIndex = NodeIndex;
648 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SERIALIZATION, &m_dSerialization[NodeIndex], sizeof(m_dSerialization[NodeIndex]))))
649 {
650 m_dSerialization[NodeIndex].HeapSerializationTier = D3D12_HEAP_SERIALIZATION_TIER_0;
651 }
652
653 m_dProtectedResourceSessionTypeCount[NodeIndex].NodeIndex = NodeIndex;
654 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT, &m_dProtectedResourceSessionTypeCount[NodeIndex], sizeof(m_dProtectedResourceSessionTypeCount[NodeIndex]))))
655 {
656 m_dProtectedResourceSessionTypeCount[NodeIndex].Count = 0;
657 }
658
659 // Special procedure to initialize local protected resource session types structs
660 // Must wait until session type count initialized
661 QueryProtectedResourceSessionTypes(NodeIndex, m_dProtectedResourceSessionTypeCount[NodeIndex].Count);
662 }
663
664 // Initialize features that requires highest version check
665 if (FAILED(m_hStatus = QueryHighestShaderModel()))
666 {
667 return m_hStatus;
668 }
669
670 if (FAILED(m_hStatus = QueryHighestRootSignatureVersion()))
671 {
672 return m_hStatus;
673 }
674
675 // Initialize Feature Levels data
676 if (FAILED(m_hStatus = QueryHighestFeatureLevel()))
677 {
678 return m_hStatus;
679 }
680
681 return m_hStatus;
682}
683
684// 0: D3D12_OPTIONS
685FEATURE_SUPPORT_GET(BOOL, m_dOptions, DoublePrecisionFloatShaderOps);
686FEATURE_SUPPORT_GET(BOOL, m_dOptions, OutputMergerLogicOp);
687FEATURE_SUPPORT_GET(D3D12_SHADER_MIN_PRECISION_SUPPORT, m_dOptions, MinPrecisionSupport);
688FEATURE_SUPPORT_GET(D3D12_TILED_RESOURCES_TIER, m_dOptions, TiledResourcesTier);
689FEATURE_SUPPORT_GET(D3D12_RESOURCE_BINDING_TIER, m_dOptions, ResourceBindingTier);
690FEATURE_SUPPORT_GET(BOOL, m_dOptions, PSSpecifiedStencilRefSupported);
691FEATURE_SUPPORT_GET(BOOL, m_dOptions, TypedUAVLoadAdditionalFormats);
692FEATURE_SUPPORT_GET(BOOL, m_dOptions, ROVsSupported);
693FEATURE_SUPPORT_GET(D3D12_CONSERVATIVE_RASTERIZATION_TIER, m_dOptions, ConservativeRasterizationTier);
694FEATURE_SUPPORT_GET(BOOL, m_dOptions, StandardSwizzle64KBSupported);
695FEATURE_SUPPORT_GET(BOOL, m_dOptions, CrossAdapterRowMajorTextureSupported);
696FEATURE_SUPPORT_GET(BOOL, m_dOptions, VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation);
697FEATURE_SUPPORT_GET(D3D12_RESOURCE_HEAP_TIER, m_dOptions, ResourceHeapTier);
698
699// Special procedure for handling caps that is also part of other features
700inline D3D12_CROSS_NODE_SHARING_TIER CD3DX12FeatureSupport::CrossNodeSharingTier() const noexcept
701{
702 if (m_dCrossNode.SharingTier > D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED)
703 {
704 return m_dCrossNode.SharingTier;
705 }
706 else
707 {
708 return m_dOptions.CrossNodeSharingTier;
709 }
710}
711
712inline UINT CD3DX12FeatureSupport::MaxGPUVirtualAddressBitsPerResource() const noexcept
713{
714 if (m_dOptions.MaxGPUVirtualAddressBitsPerResource > 0)
715 {
716 return m_dOptions.MaxGPUVirtualAddressBitsPerResource;
717 }
718 else
719 {
720 return m_dGPUVASupport.MaxGPUVirtualAddressBitsPerResource;
721 }
722}
723
724// 1: Architecture
725// Combined with Architecture1
726
727// 2: Feature Levels
728// Simply returns the highest supported feature level
729inline D3D_FEATURE_LEVEL CD3DX12FeatureSupport::MaxSupportedFeatureLevel() const noexcept
730{
731 return m_eMaxFeatureLevel;
732}
733
734// 3: Feature Format Support
735inline HRESULT CD3DX12FeatureSupport::FormatSupport(DXGI_FORMAT Format, D3D12_FORMAT_SUPPORT1& Support1, D3D12_FORMAT_SUPPORT2& Support2) const
736{
737 D3D12_FEATURE_DATA_FORMAT_SUPPORT dFormatSupport;
738 dFormatSupport.Format = Format;
739
740 // It is possible that the function call returns an error
741 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_SUPPORT, &dFormatSupport, sizeof(D3D12_FEATURE_DATA_FORMAT_SUPPORT));
742
743 Support1 = dFormatSupport.Support1;
744 Support2 = dFormatSupport.Support2; // Two outputs. Probably better just to take in the struct as an argument?
745
746 return result;
747}
748
749// 4: Multisample Quality Levels
750inline HRESULT CD3DX12FeatureSupport::MultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags, UINT& NumQualityLevels) const
751{
752 D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS dMultisampleQualityLevels;
753 dMultisampleQualityLevels.Format = Format;
754 dMultisampleQualityLevels.SampleCount = SampleCount;
755 dMultisampleQualityLevels.Flags = Flags;
756
757 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS, &dMultisampleQualityLevels, sizeof(D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS));
758
759 if (SUCCEEDED(result))
760 {
761 NumQualityLevels = dMultisampleQualityLevels.NumQualityLevels;
762 }
763 else
764 {
765 NumQualityLevels = 0;
766 }
767
768 return result;
769}
770
771// 5: Format Info
772inline HRESULT CD3DX12FeatureSupport::FormatInfo(DXGI_FORMAT Format, UINT8& PlaneCount) const
773{
774 D3D12_FEATURE_DATA_FORMAT_INFO dFormatInfo;
775 dFormatInfo.Format = Format;
776
777 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &dFormatInfo, sizeof(D3D12_FEATURE_DATA_FORMAT_INFO));
778 if (FAILED(result))
779 {
780 PlaneCount = 0;
781 }
782 else
783 {
784 PlaneCount = dFormatInfo.PlaneCount;
785 }
786 return result;
787}
788
789// 6: GPU Virtual Address Support
790// MaxGPUVirtualAddressBitsPerResource handled in D3D12Options
791FEATURE_SUPPORT_GET(UINT, m_dGPUVASupport, MaxGPUVirtualAddressBitsPerProcess);
792
793// 7: Shader Model
794inline D3D_SHADER_MODEL CD3DX12FeatureSupport::HighestShaderModel() const noexcept
795{
796 return m_dShaderModel.HighestShaderModel;
797}
798
799// 8: D3D12 Options1
800FEATURE_SUPPORT_GET(BOOL, m_dOptions1, WaveOps);
801FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMin);
802FEATURE_SUPPORT_GET(UINT, m_dOptions1, WaveLaneCountMax);
803FEATURE_SUPPORT_GET(UINT, m_dOptions1, TotalLaneCount);
804FEATURE_SUPPORT_GET(BOOL, m_dOptions1, ExpandedComputeResourceStates);
805FEATURE_SUPPORT_GET(BOOL, m_dOptions1, Int64ShaderOps);
806
807// 10: Protected Resource Session Support
808inline D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS CD3DX12FeatureSupport::ProtectedResourceSessionSupport(UINT NodeIndex) const
809{
810 return m_dProtectedResourceSessionSupport[NodeIndex].Support;
811}
812
813// 12: Root Signature
814inline D3D_ROOT_SIGNATURE_VERSION CD3DX12FeatureSupport::HighestRootSignatureVersion() const noexcept
815{
816 return m_dRootSignature.HighestVersion;
817}
818
819// 16: Architecture1
820// Same data fields can be queried from m_dArchitecture
821FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, TileBasedRenderer);
822FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, UMA);
823FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, CacheCoherentUMA);
824FEATURE_SUPPORT_GET_NODE_INDEXED(BOOL, m_dArchitecture1, IsolatedMMU);
825
826// 18: D3D12 Options2
827FEATURE_SUPPORT_GET(BOOL, m_dOptions2, DepthBoundsTestSupported);
828FEATURE_SUPPORT_GET(D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER, m_dOptions2, ProgrammableSamplePositionsTier);
829
830// 19: Shader Cache
831FEATURE_SUPPORT_GET_NAME(D3D12_SHADER_CACHE_SUPPORT_FLAGS, m_dShaderCache, SupportFlags, ShaderCacheSupportFlags);
832
833// 20: Command Queue Priority
834inline BOOL CD3DX12FeatureSupport::CommandQueuePrioritySupported(D3D12_COMMAND_LIST_TYPE CommandListType, UINT Priority)
835{
836 m_dCommandQueuePriority.CommandListType = CommandListType;
837 m_dCommandQueuePriority.Priority = Priority;
838
839 if (FAILED(m_pDevice->CheckFeatureSupport(D3D12_FEATURE_COMMAND_QUEUE_PRIORITY, &m_dCommandQueuePriority, sizeof(D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY))))
840 {
841 return false;
842 }
843
844 return m_dCommandQueuePriority.PriorityForTypeIsSupported;
845}
846
847// 21: D3D12 Options3
848FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CopyQueueTimestampQueriesSupported);
849FEATURE_SUPPORT_GET(BOOL, m_dOptions3, CastingFullyTypedFormatSupported);
850FEATURE_SUPPORT_GET(D3D12_COMMAND_LIST_SUPPORT_FLAGS, m_dOptions3, WriteBufferImmediateSupportFlags);
851FEATURE_SUPPORT_GET(D3D12_VIEW_INSTANCING_TIER, m_dOptions3, ViewInstancingTier);
852FEATURE_SUPPORT_GET(BOOL, m_dOptions3, BarycentricsSupported);
853
854// 22: Existing Heaps
855FEATURE_SUPPORT_GET_NAME(BOOL, m_dExistingHeaps, Supported, ExistingHeapsSupported);
856
857// 23: D3D12 Options4
858FEATURE_SUPPORT_GET(BOOL, m_dOptions4, MSAA64KBAlignedTextureSupported);
859FEATURE_SUPPORT_GET(D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER, m_dOptions4, SharedResourceCompatibilityTier);
860FEATURE_SUPPORT_GET(BOOL, m_dOptions4, Native16BitShaderOpsSupported);
861
862// 24: Serialization
863FEATURE_SUPPORT_GET_NODE_INDEXED(D3D12_HEAP_SERIALIZATION_TIER, m_dSerialization, HeapSerializationTier);
864
865// 25: Cross Node
866// CrossNodeSharingTier handled in D3D12Options
867FEATURE_SUPPORT_GET_NAME(BOOL, m_dCrossNode, AtomicShaderInstructions, CrossNodeAtomicShaderInstructions);
868
869// 27: D3D12 Options5
870FEATURE_SUPPORT_GET(BOOL, m_dOptions5, SRVOnlyTiledResourceTier3);
871FEATURE_SUPPORT_GET(D3D12_RENDER_PASS_TIER, m_dOptions5, RenderPassesTier);
872FEATURE_SUPPORT_GET(D3D12_RAYTRACING_TIER, m_dOptions5, RaytracingTier);
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
875// 28: Displayable
876FEATURE_SUPPORT_GET(BOOL, m_dDisplayable, DisplayableTexture);
877// SharedResourceCompatibilityTier handled in D3D12Options4
878#endif
879
880// 30: D3D12 Options6
881FEATURE_SUPPORT_GET(BOOL, m_dOptions6, AdditionalShadingRatesSupported);
882FEATURE_SUPPORT_GET(BOOL, m_dOptions6, PerPrimitiveShadingRateSupportedWithViewportIndexing);
883FEATURE_SUPPORT_GET(D3D12_VARIABLE_SHADING_RATE_TIER, m_dOptions6, VariableShadingRateTier);
884FEATURE_SUPPORT_GET(UINT, m_dOptions6, ShadingRateImageTileSize);
885FEATURE_SUPPORT_GET(BOOL, m_dOptions6, BackgroundProcessingSupported);
886
887// 31: Query Meta Command
888// Keep the original call routine
889inline HRESULT CD3DX12FeatureSupport::QueryMetaCommand(D3D12_FEATURE_DATA_QUERY_META_COMMAND& dQueryMetaCommand) const
890{
891 return m_pDevice->CheckFeatureSupport(D3D12_FEATURE_QUERY_META_COMMAND, &dQueryMetaCommand, sizeof(D3D12_FEATURE_DATA_QUERY_META_COMMAND));
892}
893
894// 32: D3D12 Options7
895FEATURE_SUPPORT_GET(D3D12_MESH_SHADER_TIER, m_dOptions7, MeshShaderTier);
896FEATURE_SUPPORT_GET(D3D12_SAMPLER_FEEDBACK_TIER, m_dOptions7, SamplerFeedbackTier);
897
898// 33: Protected Resource Session Type Count
899FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(UINT, m_dProtectedResourceSessionTypeCount, Count, ProtectedResourceSessionTypeCount);
900
901// 34: Protected Resource Session Types
902FEATURE_SUPPORT_GET_NODE_INDEXED_NAME(std::vector<GUID>, m_dProtectedResourceSessionTypes, TypeVec, ProtectedResourceSessionTypes);
903
904#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
905// 36: Options8
906FEATURE_SUPPORT_GET(BOOL, m_dOptions8, UnalignedBlockTexturesSupported);
907
908// 37: Options9
909FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderPipelineStatsSupported);
910FEATURE_SUPPORT_GET(BOOL, m_dOptions9, MeshShaderSupportsFullRangeRenderTargetArrayIndex);
911FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnTypedResourceSupported);
912FEATURE_SUPPORT_GET(BOOL, m_dOptions9, AtomicInt64OnGroupSharedSupported);
913FEATURE_SUPPORT_GET(BOOL, m_dOptions9, DerivativesInMeshAndAmplificationShadersSupported);
914FEATURE_SUPPORT_GET(D3D12_WAVE_MMA_TIER, m_dOptions9, WaveMMATier);
915#endif
916
917#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 4)
918// 39: Options10
919FEATURE_SUPPORT_GET(BOOL, m_dOptions10, VariableRateShadingSumCombinerSupported);
920FEATURE_SUPPORT_GET(BOOL, m_dOptions10, MeshShaderPerPrimitiveShadingRateSupported);
921
922// 40: Options11
923FEATURE_SUPPORT_GET(BOOL, m_dOptions11, AtomicInt64OnDescriptorHeapResourceSupported);
924#endif
925
926#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 600)
927// 41: Options12
928FEATURE_SUPPORT_GET(D3D12_TRI_STATE, m_dOptions12, MSPrimitivesPipelineStatisticIncludesCulledPrimitives);
929FEATURE_SUPPORT_GET(BOOL, m_dOptions12, EnhancedBarriersSupported);
930FEATURE_SUPPORT_GET(BOOL, m_dOptions12, RelaxedFormatCastingSupported);
931#endif
932
933#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 602)
934// 42: Options13
935FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedBufferTextureCopyPitchSupported);
936FEATURE_SUPPORT_GET(BOOL, m_dOptions13, UnrestrictedVertexElementAlignmentSupported);
937FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportHeightFlipsYSupported);
938FEATURE_SUPPORT_GET(BOOL, m_dOptions13, InvertedViewportDepthFlipsZSupported);
939FEATURE_SUPPORT_GET(BOOL, m_dOptions13, TextureCopyBetweenDimensionsSupported);
940FEATURE_SUPPORT_GET(BOOL, m_dOptions13, AlphaBlendFactorSupported);
941#endif
942
943#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
944// 43: Options14
945FEATURE_SUPPORT_GET(BOOL, m_dOptions14, AdvancedTextureOpsSupported);
946FEATURE_SUPPORT_GET(BOOL, m_dOptions14, WriteableMSAATexturesSupported);
947FEATURE_SUPPORT_GET(BOOL, m_dOptions14, IndependentFrontAndBackStencilRefMaskSupported);
948
949// 44: Options15
950FEATURE_SUPPORT_GET(BOOL, m_dOptions15, TriangleFanSupported);
951FEATURE_SUPPORT_GET(BOOL, m_dOptions15, DynamicIndexBufferStripCutSupported);
952#endif
953
954#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
955// 45: Options16
956FEATURE_SUPPORT_GET(BOOL, m_dOptions16, DynamicDepthBiasSupported);
957#endif
958#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
959FEATURE_SUPPORT_GET(BOOL, m_dOptions16, GPUUploadHeapSupported);
960
961// 46: Options17
962FEATURE_SUPPORT_GET(BOOL, m_dOptions17, NonNormalizedCoordinateSamplersSupported);
963FEATURE_SUPPORT_GET(BOOL, m_dOptions17, ManualWriteTrackingResourceSupported);
964
965// 47: Option18
966FEATURE_SUPPORT_GET(BOOL, m_dOptions18, RenderPassesValid);
967#endif
968
969#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
970FEATURE_SUPPORT_GET(BOOL, m_dOptions19, MismatchingOutputDimensionsSupported);
971FEATURE_SUPPORT_GET(UINT, m_dOptions19, SupportedSampleCountsWithNoOutputs);
972FEATURE_SUPPORT_GET(BOOL, m_dOptions19, PointSamplingAddressesNeverRoundUp);
973FEATURE_SUPPORT_GET(BOOL, m_dOptions19, RasterizerDesc2Supported);
974FEATURE_SUPPORT_GET(BOOL, m_dOptions19, NarrowQuadrilateralLinesSupported);
975FEATURE_SUPPORT_GET(BOOL, m_dOptions19, AnisoFilterWithPointMipSupported);
976FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSize);
977FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxSamplerDescriptorHeapSizeWithStaticSamplers);
978FEATURE_SUPPORT_GET(UINT, m_dOptions19, MaxViewDescriptorHeapSize);
979#endif
980
981#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
982// 49: Options20
983FEATURE_SUPPORT_GET(BOOL, m_dOptions20, ComputeOnlyWriteWatchSupported);
984#endif
985
986#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
987// 50: Options21
988FEATURE_SUPPORT_GET(D3D12_EXECUTE_INDIRECT_TIER, m_dOptions21, ExecuteIndirectTier);
989FEATURE_SUPPORT_GET(D3D12_WORK_GRAPHS_TIER, m_dOptions21, WorkGraphsTier);
990#endif
991
992#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 617)
993// 51: TightAlignment
994FEATURE_SUPPORT_GET_NAME(D3D12_TIGHT_ALIGNMENT_TIER, m_dTightAlignment, SupportTier, TightAlignmentSupportTier);
995#endif
996
997// Helper function to decide the highest shader model supported by the system
998// Stores the result in m_dShaderModel
999// Must be updated whenever a new shader model is added to the d3d12.h header
1000inline HRESULT CD3DX12FeatureSupport::QueryHighestShaderModel()
1001{
1002 // Check support in descending order
1003 HRESULT result;
1004
1005 const D3D_SHADER_MODEL allModelVersions[] =
1006 {
1007#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1008 D3D_SHADER_MODEL_6_9,
1009#endif
1010#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1011 D3D_SHADER_MODEL_6_8,
1012#endif
1013#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1014 D3D_SHADER_MODEL_6_7,
1015#endif
1016 D3D_SHADER_MODEL_6_6,
1017 D3D_SHADER_MODEL_6_5,
1018 D3D_SHADER_MODEL_6_4,
1019 D3D_SHADER_MODEL_6_3,
1020 D3D_SHADER_MODEL_6_2,
1021 D3D_SHADER_MODEL_6_1,
1022 D3D_SHADER_MODEL_6_0,
1023 D3D_SHADER_MODEL_5_1
1024 };
1025 constexpr size_t numModelVersions = sizeof(allModelVersions) / sizeof(D3D_SHADER_MODEL);
1026
1027 for (size_t i = 0; i < numModelVersions; i++)
1028 {
1029 m_dShaderModel.HighestShaderModel = allModelVersions[i];
1030 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &m_dShaderModel, sizeof(D3D12_FEATURE_DATA_SHADER_MODEL));
1031 if (result != E_INVALIDARG)
1032 {
1033 // Indicates that the version is recognizable by the runtime and stored in the struct
1034 // Also terminate on unexpected error code
1035 if (FAILED(result))
1036 {
1037 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1038 }
1039 return result;
1040 }
1041 }
1042
1043 // Shader model may not be supported. Continue the rest initializations
1044 m_dShaderModel.HighestShaderModel = static_cast<D3D_SHADER_MODEL>(0);
1045 return S_OK;
1046}
1047
1048// Helper function to decide the highest root signature supported
1049// Must be updated whenever a new root signature version is added to the d3d12.h header
1050inline HRESULT CD3DX12FeatureSupport::QueryHighestRootSignatureVersion()
1051{
1052 HRESULT result;
1053
1054 const D3D_ROOT_SIGNATURE_VERSION allRootSignatureVersions[] =
1055 {
1056#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1057 D3D_ROOT_SIGNATURE_VERSION_1_2,
1058#endif
1059 D3D_ROOT_SIGNATURE_VERSION_1_1,
1060 D3D_ROOT_SIGNATURE_VERSION_1_0,
1061 D3D_ROOT_SIGNATURE_VERSION_1,
1062 };
1063 constexpr size_t numRootSignatureVersions = sizeof(allRootSignatureVersions) / sizeof(D3D_ROOT_SIGNATURE_VERSION);
1064
1065 for (size_t i = 0; i < numRootSignatureVersions; i++)
1066 {
1067 m_dRootSignature.HighestVersion = allRootSignatureVersions[i];
1068 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_ROOT_SIGNATURE, &m_dRootSignature, sizeof(D3D12_FEATURE_DATA_ROOT_SIGNATURE));
1069 if (result != E_INVALIDARG)
1070 {
1071 if (FAILED(result))
1072 {
1073 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1074 }
1075 // If succeeded, the highest version is already written into the member struct
1076 return result;
1077 }
1078 }
1079
1080 // No version left. Set to invalid value and continue.
1081 m_dRootSignature.HighestVersion = static_cast<D3D_ROOT_SIGNATURE_VERSION>(0);
1082 return S_OK;
1083}
1084
1085// Helper funcion to decide the highest feature level
1086inline HRESULT CD3DX12FeatureSupport::QueryHighestFeatureLevel()
1087{
1088 HRESULT result;
1089
1090 // Check against a list of all feature levels present in d3dcommon.h
1091 // Needs to be updated for future feature levels
1092 const D3D_FEATURE_LEVEL allLevels[] =
1093 {
1094#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 3)
1095 D3D_FEATURE_LEVEL_12_2,
1096#endif
1097 D3D_FEATURE_LEVEL_12_1,
1098 D3D_FEATURE_LEVEL_12_0,
1099 D3D_FEATURE_LEVEL_11_1,
1100 D3D_FEATURE_LEVEL_11_0,
1101 D3D_FEATURE_LEVEL_10_1,
1102 D3D_FEATURE_LEVEL_10_0,
1103 D3D_FEATURE_LEVEL_9_3,
1104 D3D_FEATURE_LEVEL_9_2,
1105 D3D_FEATURE_LEVEL_9_1,
1106#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 5)
1107 D3D_FEATURE_LEVEL_1_0_CORE,
1108#endif
1109#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 611)
1110 D3D_FEATURE_LEVEL_1_0_GENERIC
1111#endif
1112 };
1113
1114 D3D12_FEATURE_DATA_FEATURE_LEVELS dFeatureLevel;
1115 dFeatureLevel.NumFeatureLevels = static_cast<UINT>(sizeof(allLevels) / sizeof(D3D_FEATURE_LEVEL));
1116 dFeatureLevel.pFeatureLevelsRequested = allLevels;
1117
1118 result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_FEATURE_LEVELS, &dFeatureLevel, sizeof(D3D12_FEATURE_DATA_FEATURE_LEVELS));
1119 if (SUCCEEDED(result))
1120 {
1121 m_eMaxFeatureLevel = dFeatureLevel.MaxSupportedFeatureLevel;
1122 }
1123 else
1124 {
1125 m_eMaxFeatureLevel = static_cast<D3D_FEATURE_LEVEL>(0);
1126
1127 if (result == DXGI_ERROR_UNSUPPORTED)
1128 {
1129 // Indicates that none supported. Continue initialization
1130 result = S_OK;
1131 }
1132 }
1133 return result;
1134}
1135
1136// Helper function to initialize local protected resource session types structs
1137inline HRESULT CD3DX12FeatureSupport::QueryProtectedResourceSessionTypes(UINT NodeIndex, UINT Count)
1138{
1139 auto& CurrentPRSTypes = m_dProtectedResourceSessionTypes[NodeIndex];
1140 CurrentPRSTypes.NodeIndex = NodeIndex;
1141 CurrentPRSTypes.Count = Count;
1142 CurrentPRSTypes.TypeVec.resize(CurrentPRSTypes.Count);
1143 CurrentPRSTypes.pTypes = CurrentPRSTypes.TypeVec.data();
1144
1145 HRESULT result = m_pDevice->CheckFeatureSupport(D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES, &m_dProtectedResourceSessionTypes[NodeIndex], sizeof(D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES));
1146 if (FAILED(result))
1147 {
1148 // Resize TypeVec to empty
1149 CurrentPRSTypes.TypeVec.clear();
1150 }
1151
1152 return result;
1153}
1154
1155#undef FEATURE_SUPPORT_GET
1156#undef FEATURE_SUPPORT_GET_NAME
1157#undef FEATURE_SUPPORT_GET_NODE_INDEXED
1158#undef FEATURE_SUPPORT_GET_NODE_INDEXED_NAME
1159
1160// end CD3DX12FeatureSupport
1161
1162
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h
new file mode 100644
index 0000000..092a039
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_core.h
@@ -0,0 +1,2072 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include <string.h>
15#include "d3d12.h"
16#include "d3dx12_default.h"
17
18//------------------------------------------------------------------------------------------------
19#ifndef D3DX12_ASSERT
20 #ifdef assert
21 #define D3DX12_ASSERT(x) assert(x)
22 #else
23 #define D3DX12_ASSERT(x)
24 #endif
25#endif
26
27//------------------------------------------------------------------------------------------------
28template <typename t_CommandListType>
29inline ID3D12CommandList * const * CommandListCast(t_CommandListType * const * pp) noexcept
30{
31 // This cast is useful for passing strongly typed command list pointers into
32 // ExecuteCommandLists.
33 // This cast is valid as long as the const-ness is respected. D3D12 APIs do
34 // respect the const-ness of their arguments.
35 return reinterpret_cast<ID3D12CommandList * const *>(pp);
36}
37
38#ifdef D3DX12_USE_ARRAY_COM_PTR
39#include <vector>
40//------------------------------------------------------------------------------------------------
41// CArrayComPtr - Useful RAII container of raw IUnknown pointers.
42template<typename _T>
43class CArrayComPtr
44{
45 std::vector<_T *> m_array;
46
47public:
48 class CProxyPtr
49 {
50 _T *&pObj;
51
52 CProxyPtr(_T *&obj) :
53 pObj(obj) {}
54
55 public:
56 operator _T*() { return pObj; }
57 _T **operator&() { return &pObj; }
58 CProxyPtr &operator=(_T*&obj)
59 {
60 if(pObj)
61 pObj->Release();
62
63 pObj = obj;
64
65 if(pObj)
66 pObj->AddRef();
67 }
68
69 friend class CArrayComPtr<_T>;
70 };
71
72public:
73 CArrayComPtr() = default;
74
75 CArrayComPtr(size_t size) :
76 m_array(size) {
77 }
78
79 CArrayComPtr(const CArrayComPtr &o)
80 {
81 m_array = o.m_array;
82 for (size_t i = 0; i < m_array.size(); ++i)
83 {
84 m_array[i]->AddRef();
85 }
86 }
87
88 CArrayComPtr(CArrayComPtr &&o) = default;
89
90 ~CArrayComPtr()
91 {
92 for (auto ptr : m_array)
93 {
94 if (ptr)
95 {
96 ptr->Release();
97 }
98 }
99 }
100
101 _T *const *Get() { return m_array.data(); }
102
103 void Assign(size_t index, _T *ptr)
104 {
105 if (index >= m_array.size())
106 {
107 Resize(index + 1);
108 }
109
110 // Release the old pointer if it exists
111 if (m_array[index])
112 {
113 m_array[index]->Release();
114 }
115
116 // Assign the new pointer and AddRef it if not null
117 m_array[index] = ptr;
118 if (ptr)
119 {
120 ptr->AddRef();
121 }
122 }
123
124 void Resize(size_t size)
125 {
126 // If shrinking, release any pointers that will be discarded
127 if (size < m_array.size())
128 {
129 for (size_t i = size; i < m_array.size(); ++i)
130 {
131 if (m_array[i])
132 {
133 m_array[i]->Release();
134 }
135 }
136 }
137
138 // Resize the vector, initializing new elements to nullptr
139 m_array.resize(size, nullptr);
140 }
141
142 void PushBack(_T *ptr)
143 {
144 // AddRef if not null
145 if (ptr)
146 {
147 ptr->AddRef();
148 }
149 m_array.push_back(ptr);
150 }
151
152 CProxyPtr operator[](size_t index)
153 {
154 return CProxyPtr(m_array[index]);
155 }
156};
157#endif
158//------------------------------------------------------------------------------------------------
159inline bool operator==( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
160{
161 return l.TopLeftX == r.TopLeftX && l.TopLeftY == r.TopLeftY && l.Width == r.Width &&
162 l.Height == r.Height && l.MinDepth == r.MinDepth && l.MaxDepth == r.MaxDepth;
163}
164
165//------------------------------------------------------------------------------------------------
166inline bool operator!=( const D3D12_VIEWPORT& l, const D3D12_VIEWPORT& r ) noexcept
167{ return !( l == r ); }
168
169//------------------------------------------------------------------------------------------------
170struct CD3DX12_RECT : public D3D12_RECT
171{
172 CD3DX12_RECT() = default;
173 explicit CD3DX12_RECT( const D3D12_RECT& o ) noexcept :
174 D3D12_RECT( o )
175 {}
176 explicit CD3DX12_RECT(
177 LONG Left,
178 LONG Top,
179 LONG Right,
180 LONG Bottom ) noexcept
181 {
182 left = Left;
183 top = Top;
184 right = Right;
185 bottom = Bottom;
186 }
187};
188
189//------------------------------------------------------------------------------------------------
190struct CD3DX12_VIEWPORT : public D3D12_VIEWPORT
191{
192 CD3DX12_VIEWPORT() = default;
193 explicit CD3DX12_VIEWPORT( const D3D12_VIEWPORT& o ) noexcept :
194 D3D12_VIEWPORT( o )
195 {}
196 explicit CD3DX12_VIEWPORT(
197 FLOAT topLeftX,
198 FLOAT topLeftY,
199 FLOAT width,
200 FLOAT height,
201 FLOAT minDepth = D3D12_MIN_DEPTH,
202 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
203 {
204 TopLeftX = topLeftX;
205 TopLeftY = topLeftY;
206 Width = width;
207 Height = height;
208 MinDepth = minDepth;
209 MaxDepth = maxDepth;
210 }
211 explicit CD3DX12_VIEWPORT(
212 _In_ ID3D12Resource* pResource,
213 UINT mipSlice = 0,
214 FLOAT topLeftX = 0.0f,
215 FLOAT topLeftY = 0.0f,
216 FLOAT minDepth = D3D12_MIN_DEPTH,
217 FLOAT maxDepth = D3D12_MAX_DEPTH ) noexcept
218 {
219#if defined(_MSC_VER) || !defined(_WIN32)
220 const auto Desc = pResource->GetDesc();
221#else
222 D3D12_RESOURCE_DESC tmpDesc;
223 const auto& Desc = *pResource->GetDesc(&tmpDesc);
224#endif
225 const UINT64 SubresourceWidth = Desc.Width >> mipSlice;
226 const UINT64 SubresourceHeight = Desc.Height >> mipSlice;
227 switch (Desc.Dimension)
228 {
229 case D3D12_RESOURCE_DIMENSION_BUFFER:
230 TopLeftX = topLeftX;
231 TopLeftY = 0.0f;
232 Width = float(Desc.Width) - topLeftX;
233 Height = 1.0f;
234 break;
235 case D3D12_RESOURCE_DIMENSION_TEXTURE1D:
236 TopLeftX = topLeftX;
237 TopLeftY = 0.0f;
238 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
239 Height = 1.0f;
240 break;
241 case D3D12_RESOURCE_DIMENSION_TEXTURE2D:
242 case D3D12_RESOURCE_DIMENSION_TEXTURE3D:
243 TopLeftX = topLeftX;
244 TopLeftY = topLeftY;
245 Width = (SubresourceWidth ? float(SubresourceWidth) : 1.0f) - topLeftX;
246 Height = (SubresourceHeight ? float(SubresourceHeight) : 1.0f) - topLeftY;
247 break;
248 default: break;
249 }
250
251 MinDepth = minDepth;
252 MaxDepth = maxDepth;
253 }
254};
255
256//------------------------------------------------------------------------------------------------
257struct CD3DX12_BOX : public D3D12_BOX
258{
259 CD3DX12_BOX() = default;
260 explicit CD3DX12_BOX( const D3D12_BOX& o ) noexcept :
261 D3D12_BOX( o )
262 {}
263 explicit CD3DX12_BOX(
264 LONG Left,
265 LONG Right ) noexcept
266 {
267 left = static_cast<UINT>(Left);
268 top = 0;
269 front = 0;
270 right = static_cast<UINT>(Right);
271 bottom = 1;
272 back = 1;
273 }
274 explicit CD3DX12_BOX(
275 LONG Left,
276 LONG Top,
277 LONG Right,
278 LONG Bottom ) noexcept
279 {
280 left = static_cast<UINT>(Left);
281 top = static_cast<UINT>(Top);
282 front = 0;
283 right = static_cast<UINT>(Right);
284 bottom = static_cast<UINT>(Bottom);
285 back = 1;
286 }
287 explicit CD3DX12_BOX(
288 LONG Left,
289 LONG Top,
290 LONG Front,
291 LONG Right,
292 LONG Bottom,
293 LONG Back ) noexcept
294 {
295 left = static_cast<UINT>(Left);
296 top = static_cast<UINT>(Top);
297 front = static_cast<UINT>(Front);
298 right = static_cast<UINT>(Right);
299 bottom = static_cast<UINT>(Bottom);
300 back = static_cast<UINT>(Back);
301 }
302};
303inline bool operator==( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
304{
305 return l.left == r.left && l.top == r.top && l.front == r.front &&
306 l.right == r.right && l.bottom == r.bottom && l.back == r.back;
307}
308inline bool operator!=( const D3D12_BOX& l, const D3D12_BOX& r ) noexcept
309{ return !( l == r ); }
310
311//------------------------------------------------------------------------------------------------
312struct CD3DX12_DEPTH_STENCIL_DESC : public D3D12_DEPTH_STENCIL_DESC
313{
314 CD3DX12_DEPTH_STENCIL_DESC() = default;
315 explicit CD3DX12_DEPTH_STENCIL_DESC( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept :
316 D3D12_DEPTH_STENCIL_DESC( o )
317 {}
318 explicit CD3DX12_DEPTH_STENCIL_DESC( CD3DX12_DEFAULT ) noexcept
319 {
320 DepthEnable = TRUE;
321 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
322 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
323 StencilEnable = FALSE;
324 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
325 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
326 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
327 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
328 FrontFace = defaultStencilOp;
329 BackFace = defaultStencilOp;
330 }
331 explicit CD3DX12_DEPTH_STENCIL_DESC(
332 BOOL depthEnable,
333 D3D12_DEPTH_WRITE_MASK depthWriteMask,
334 D3D12_COMPARISON_FUNC depthFunc,
335 BOOL stencilEnable,
336 UINT8 stencilReadMask,
337 UINT8 stencilWriteMask,
338 D3D12_STENCIL_OP frontStencilFailOp,
339 D3D12_STENCIL_OP frontStencilDepthFailOp,
340 D3D12_STENCIL_OP frontStencilPassOp,
341 D3D12_COMPARISON_FUNC frontStencilFunc,
342 D3D12_STENCIL_OP backStencilFailOp,
343 D3D12_STENCIL_OP backStencilDepthFailOp,
344 D3D12_STENCIL_OP backStencilPassOp,
345 D3D12_COMPARISON_FUNC backStencilFunc ) noexcept
346 {
347 DepthEnable = depthEnable;
348 DepthWriteMask = depthWriteMask;
349 DepthFunc = depthFunc;
350 StencilEnable = stencilEnable;
351 StencilReadMask = stencilReadMask;
352 StencilWriteMask = stencilWriteMask;
353 FrontFace.StencilFailOp = frontStencilFailOp;
354 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
355 FrontFace.StencilPassOp = frontStencilPassOp;
356 FrontFace.StencilFunc = frontStencilFunc;
357 BackFace.StencilFailOp = backStencilFailOp;
358 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
359 BackFace.StencilPassOp = backStencilPassOp;
360 BackFace.StencilFunc = backStencilFunc;
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365struct CD3DX12_DEPTH_STENCIL_DESC1 : public D3D12_DEPTH_STENCIL_DESC1
366{
367 CD3DX12_DEPTH_STENCIL_DESC1() = default;
368 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept :
369 D3D12_DEPTH_STENCIL_DESC1( o )
370 {}
371 explicit CD3DX12_DEPTH_STENCIL_DESC1( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
372 {
373 DepthEnable = o.DepthEnable;
374 DepthWriteMask = o.DepthWriteMask;
375 DepthFunc = o.DepthFunc;
376 StencilEnable = o.StencilEnable;
377 StencilReadMask = o.StencilReadMask;
378 StencilWriteMask = o.StencilWriteMask;
379 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
380 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
381 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
382 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
383 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
384 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
385 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
386 BackFace.StencilFunc = o.BackFace.StencilFunc;
387 DepthBoundsTestEnable = FALSE;
388 }
389 explicit CD3DX12_DEPTH_STENCIL_DESC1( CD3DX12_DEFAULT ) noexcept
390 {
391 DepthEnable = TRUE;
392 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
393 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
394 StencilEnable = FALSE;
395 StencilReadMask = D3D12_DEFAULT_STENCIL_READ_MASK;
396 StencilWriteMask = D3D12_DEFAULT_STENCIL_WRITE_MASK;
397 const D3D12_DEPTH_STENCILOP_DESC defaultStencilOp =
398 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS };
399 FrontFace = defaultStencilOp;
400 BackFace = defaultStencilOp;
401 DepthBoundsTestEnable = FALSE;
402 }
403 explicit CD3DX12_DEPTH_STENCIL_DESC1(
404 BOOL depthEnable,
405 D3D12_DEPTH_WRITE_MASK depthWriteMask,
406 D3D12_COMPARISON_FUNC depthFunc,
407 BOOL stencilEnable,
408 UINT8 stencilReadMask,
409 UINT8 stencilWriteMask,
410 D3D12_STENCIL_OP frontStencilFailOp,
411 D3D12_STENCIL_OP frontStencilDepthFailOp,
412 D3D12_STENCIL_OP frontStencilPassOp,
413 D3D12_COMPARISON_FUNC frontStencilFunc,
414 D3D12_STENCIL_OP backStencilFailOp,
415 D3D12_STENCIL_OP backStencilDepthFailOp,
416 D3D12_STENCIL_OP backStencilPassOp,
417 D3D12_COMPARISON_FUNC backStencilFunc,
418 BOOL depthBoundsTestEnable ) noexcept
419 {
420 DepthEnable = depthEnable;
421 DepthWriteMask = depthWriteMask;
422 DepthFunc = depthFunc;
423 StencilEnable = stencilEnable;
424 StencilReadMask = stencilReadMask;
425 StencilWriteMask = stencilWriteMask;
426 FrontFace.StencilFailOp = frontStencilFailOp;
427 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
428 FrontFace.StencilPassOp = frontStencilPassOp;
429 FrontFace.StencilFunc = frontStencilFunc;
430 BackFace.StencilFailOp = backStencilFailOp;
431 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
432 BackFace.StencilPassOp = backStencilPassOp;
433 BackFace.StencilFunc = backStencilFunc;
434 DepthBoundsTestEnable = depthBoundsTestEnable;
435 }
436 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
437 {
438 D3D12_DEPTH_STENCIL_DESC D;
439 D.DepthEnable = DepthEnable;
440 D.DepthWriteMask = DepthWriteMask;
441 D.DepthFunc = DepthFunc;
442 D.StencilEnable = StencilEnable;
443 D.StencilReadMask = StencilReadMask;
444 D.StencilWriteMask = StencilWriteMask;
445 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
446 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
447 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
448 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
449 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
450 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
451 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
452 D.BackFace.StencilFunc = BackFace.StencilFunc;
453 return D;
454 }
455};
456
457//------------------------------------------------------------------------------------------------
458#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
459struct CD3DX12_DEPTH_STENCIL_DESC2 : public D3D12_DEPTH_STENCIL_DESC2
460{
461 CD3DX12_DEPTH_STENCIL_DESC2() = default;
462 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC2& o ) noexcept :
463 D3D12_DEPTH_STENCIL_DESC2( o )
464 {}
465 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC1& o ) noexcept
466 {
467 DepthEnable = o.DepthEnable;
468 DepthWriteMask = o.DepthWriteMask;
469 DepthFunc = o.DepthFunc;
470 StencilEnable = o.StencilEnable;
471 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
472 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
473 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
474 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
475 FrontFace.StencilReadMask = o.StencilReadMask;
476 FrontFace.StencilWriteMask = o.StencilWriteMask;
477
478 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
479 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
480 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
481 BackFace.StencilFunc = o.BackFace.StencilFunc;
482 BackFace.StencilReadMask = o.StencilReadMask;
483 BackFace.StencilWriteMask = o.StencilWriteMask;
484 DepthBoundsTestEnable = o.DepthBoundsTestEnable;
485 }
486 explicit CD3DX12_DEPTH_STENCIL_DESC2( const D3D12_DEPTH_STENCIL_DESC& o ) noexcept
487 {
488 DepthEnable = o.DepthEnable;
489 DepthWriteMask = o.DepthWriteMask;
490 DepthFunc = o.DepthFunc;
491 StencilEnable = o.StencilEnable;
492
493 FrontFace.StencilFailOp = o.FrontFace.StencilFailOp;
494 FrontFace.StencilDepthFailOp = o.FrontFace.StencilDepthFailOp;
495 FrontFace.StencilPassOp = o.FrontFace.StencilPassOp;
496 FrontFace.StencilFunc = o.FrontFace.StencilFunc;
497 FrontFace.StencilReadMask = o.StencilReadMask;
498 FrontFace.StencilWriteMask = o.StencilWriteMask;
499
500 BackFace.StencilFailOp = o.BackFace.StencilFailOp;
501 BackFace.StencilDepthFailOp = o.BackFace.StencilDepthFailOp;
502 BackFace.StencilPassOp = o.BackFace.StencilPassOp;
503 BackFace.StencilFunc = o.BackFace.StencilFunc;
504 BackFace.StencilReadMask = o.StencilReadMask;
505 BackFace.StencilWriteMask = o.StencilWriteMask;
506
507 DepthBoundsTestEnable = FALSE;
508 }
509 explicit CD3DX12_DEPTH_STENCIL_DESC2( CD3DX12_DEFAULT ) noexcept
510 {
511 DepthEnable = TRUE;
512 DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL;
513 DepthFunc = D3D12_COMPARISON_FUNC_LESS;
514 StencilEnable = FALSE;
515 const D3D12_DEPTH_STENCILOP_DESC1 defaultStencilOp =
516 { D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_STENCIL_OP_KEEP, D3D12_COMPARISON_FUNC_ALWAYS, D3D12_DEFAULT_STENCIL_READ_MASK, D3D12_DEFAULT_STENCIL_WRITE_MASK };
517 FrontFace = defaultStencilOp;
518 BackFace = defaultStencilOp;
519 DepthBoundsTestEnable = FALSE;
520 }
521 explicit CD3DX12_DEPTH_STENCIL_DESC2(
522 BOOL depthEnable,
523 D3D12_DEPTH_WRITE_MASK depthWriteMask,
524 D3D12_COMPARISON_FUNC depthFunc,
525 BOOL stencilEnable,
526 D3D12_STENCIL_OP frontStencilFailOp,
527 D3D12_STENCIL_OP frontStencilDepthFailOp,
528 D3D12_STENCIL_OP frontStencilPassOp,
529 D3D12_COMPARISON_FUNC frontStencilFunc,
530 UINT8 frontStencilReadMask,
531 UINT8 frontStencilWriteMask,
532 D3D12_STENCIL_OP backStencilFailOp,
533 D3D12_STENCIL_OP backStencilDepthFailOp,
534 D3D12_STENCIL_OP backStencilPassOp,
535 D3D12_COMPARISON_FUNC backStencilFunc,
536 UINT8 backStencilReadMask,
537 UINT8 backStencilWriteMask,
538 BOOL depthBoundsTestEnable ) noexcept
539 {
540 DepthEnable = depthEnable;
541 DepthWriteMask = depthWriteMask;
542 DepthFunc = depthFunc;
543 StencilEnable = stencilEnable;
544
545 FrontFace.StencilFailOp = frontStencilFailOp;
546 FrontFace.StencilDepthFailOp = frontStencilDepthFailOp;
547 FrontFace.StencilPassOp = frontStencilPassOp;
548 FrontFace.StencilFunc = frontStencilFunc;
549 FrontFace.StencilReadMask = frontStencilReadMask;
550 FrontFace.StencilWriteMask = frontStencilWriteMask;
551
552 BackFace.StencilFailOp = backStencilFailOp;
553 BackFace.StencilDepthFailOp = backStencilDepthFailOp;
554 BackFace.StencilPassOp = backStencilPassOp;
555 BackFace.StencilFunc = backStencilFunc;
556 BackFace.StencilReadMask = backStencilReadMask;
557 BackFace.StencilWriteMask = backStencilWriteMask;
558
559 DepthBoundsTestEnable = depthBoundsTestEnable;
560 }
561
562 operator D3D12_DEPTH_STENCIL_DESC() const noexcept
563 {
564 D3D12_DEPTH_STENCIL_DESC D;
565 D.DepthEnable = DepthEnable;
566 D.DepthWriteMask = DepthWriteMask;
567 D.DepthFunc = DepthFunc;
568 D.StencilEnable = StencilEnable;
569 D.StencilReadMask = FrontFace.StencilReadMask;
570 D.StencilWriteMask = FrontFace.StencilWriteMask;
571 D.FrontFace.StencilFailOp = FrontFace.StencilFailOp;
572 D.FrontFace.StencilDepthFailOp = FrontFace.StencilDepthFailOp;
573 D.FrontFace.StencilPassOp = FrontFace.StencilPassOp;
574 D.FrontFace.StencilFunc = FrontFace.StencilFunc;
575 D.BackFace.StencilFailOp = BackFace.StencilFailOp;
576 D.BackFace.StencilDepthFailOp = BackFace.StencilDepthFailOp;
577 D.BackFace.StencilPassOp = BackFace.StencilPassOp;
578 D.BackFace.StencilFunc = BackFace.StencilFunc;
579 return D;
580 }
581};
582#endif // D3D12_SDK_VERSION >= 606
583
584//------------------------------------------------------------------------------------------------
585struct CD3DX12_BLEND_DESC : public D3D12_BLEND_DESC
586{
587 CD3DX12_BLEND_DESC() = default;
588 explicit CD3DX12_BLEND_DESC( const D3D12_BLEND_DESC& o ) noexcept :
589 D3D12_BLEND_DESC( o )
590 {}
591 explicit CD3DX12_BLEND_DESC( CD3DX12_DEFAULT ) noexcept
592 {
593 AlphaToCoverageEnable = FALSE;
594 IndependentBlendEnable = FALSE;
595 const D3D12_RENDER_TARGET_BLEND_DESC defaultRenderTargetBlendDesc =
596 {
597 FALSE,FALSE,
598 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
599 D3D12_BLEND_ONE, D3D12_BLEND_ZERO, D3D12_BLEND_OP_ADD,
600 D3D12_LOGIC_OP_NOOP,
601 D3D12_COLOR_WRITE_ENABLE_ALL,
602 };
603 for (UINT i = 0; i < D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT; ++i)
604 RenderTarget[ i ] = defaultRenderTargetBlendDesc;
605 }
606};
607
608//------------------------------------------------------------------------------------------------
609struct CD3DX12_RASTERIZER_DESC : public D3D12_RASTERIZER_DESC
610{
611 CD3DX12_RASTERIZER_DESC() = default;
612 explicit CD3DX12_RASTERIZER_DESC( const D3D12_RASTERIZER_DESC& o ) noexcept :
613 D3D12_RASTERIZER_DESC( o )
614 {}
615 explicit CD3DX12_RASTERIZER_DESC( CD3DX12_DEFAULT ) noexcept
616 {
617 FillMode = D3D12_FILL_MODE_SOLID;
618 CullMode = D3D12_CULL_MODE_BACK;
619 FrontCounterClockwise = FALSE;
620 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
621 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
622 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
623 DepthClipEnable = TRUE;
624 MultisampleEnable = FALSE;
625 AntialiasedLineEnable = FALSE;
626 ForcedSampleCount = 0;
627 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
628 }
629 explicit CD3DX12_RASTERIZER_DESC(
630 D3D12_FILL_MODE fillMode,
631 D3D12_CULL_MODE cullMode,
632 BOOL frontCounterClockwise,
633 INT depthBias,
634 FLOAT depthBiasClamp,
635 FLOAT slopeScaledDepthBias,
636 BOOL depthClipEnable,
637 BOOL multisampleEnable,
638 BOOL antialiasedLineEnable,
639 UINT forcedSampleCount,
640 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
641 {
642 FillMode = fillMode;
643 CullMode = cullMode;
644 FrontCounterClockwise = frontCounterClockwise;
645 DepthBias = depthBias;
646 DepthBiasClamp = depthBiasClamp;
647 SlopeScaledDepthBias = slopeScaledDepthBias;
648 DepthClipEnable = depthClipEnable;
649 MultisampleEnable = multisampleEnable;
650 AntialiasedLineEnable = antialiasedLineEnable;
651 ForcedSampleCount = forcedSampleCount;
652 ConservativeRaster = conservativeRaster;
653 }
654};
655
656
657//------------------------------------------------------------------------------------------------
658#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
659struct CD3DX12_RASTERIZER_DESC1 : public D3D12_RASTERIZER_DESC1
660{
661 CD3DX12_RASTERIZER_DESC1() = default;
662 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC1& o) noexcept :
663 D3D12_RASTERIZER_DESC1(o)
664
665 {
666 }
667 explicit CD3DX12_RASTERIZER_DESC1(const D3D12_RASTERIZER_DESC& o) noexcept
668 {
669 FillMode = o.FillMode;
670 CullMode = o.CullMode;
671 FrontCounterClockwise = o.FrontCounterClockwise;
672 DepthBias = static_cast<FLOAT>(o.DepthBias);
673 DepthBiasClamp = o.DepthBiasClamp;
674 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
675 DepthClipEnable = o.DepthClipEnable;
676 MultisampleEnable = o.MultisampleEnable;
677 AntialiasedLineEnable = o.AntialiasedLineEnable;
678 ForcedSampleCount = o.ForcedSampleCount;
679 ConservativeRaster = o.ConservativeRaster;
680 }
681 explicit CD3DX12_RASTERIZER_DESC1(CD3DX12_DEFAULT) noexcept
682 {
683 FillMode = D3D12_FILL_MODE_SOLID;
684 CullMode = D3D12_CULL_MODE_BACK;
685 FrontCounterClockwise = FALSE;
686 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
687 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
688 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
689 DepthClipEnable = TRUE;
690 MultisampleEnable = FALSE;
691 AntialiasedLineEnable = FALSE;
692 ForcedSampleCount = 0;
693 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
694 }
695 explicit CD3DX12_RASTERIZER_DESC1(
696 D3D12_FILL_MODE fillMode,
697 D3D12_CULL_MODE cullMode,
698 BOOL frontCounterClockwise,
699 FLOAT depthBias,
700 FLOAT depthBiasClamp,
701 FLOAT slopeScaledDepthBias,
702 BOOL depthClipEnable,
703 BOOL multisampleEnable,
704 BOOL antialiasedLineEnable,
705 UINT forcedSampleCount,
706 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
707 {
708 FillMode = fillMode;
709 CullMode = cullMode;
710 FrontCounterClockwise = frontCounterClockwise;
711 DepthBias = depthBias;
712 DepthBiasClamp = depthBiasClamp;
713 SlopeScaledDepthBias = slopeScaledDepthBias;
714 DepthClipEnable = depthClipEnable;
715 MultisampleEnable = multisampleEnable;
716 AntialiasedLineEnable = antialiasedLineEnable;
717 ForcedSampleCount = forcedSampleCount;
718 ConservativeRaster = conservativeRaster;
719 }
720
721
722 operator D3D12_RASTERIZER_DESC() const noexcept
723 {
724 D3D12_RASTERIZER_DESC o;
725
726 o.FillMode = FillMode;
727 o.CullMode = CullMode;
728 o.FrontCounterClockwise = FrontCounterClockwise;
729 o.DepthBias = static_cast<INT>(DepthBias);
730 o.DepthBiasClamp = DepthBiasClamp;
731 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
732 o.DepthClipEnable = DepthClipEnable;
733 o.MultisampleEnable = MultisampleEnable;
734 o.AntialiasedLineEnable = AntialiasedLineEnable;
735 o.ForcedSampleCount = ForcedSampleCount;
736 o.ConservativeRaster = ConservativeRaster;
737
738 return o;
739 }
740};
741#endif // D3D12_SDK_VERSION >= 608
742
743//------------------------------------------------------------------------------------------------
744#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
745struct CD3DX12_RASTERIZER_DESC2 : public D3D12_RASTERIZER_DESC2
746{
747 CD3DX12_RASTERIZER_DESC2() = default;
748 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC2& o) noexcept :
749 D3D12_RASTERIZER_DESC2(o)
750
751 {
752 }
753 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC1& o) noexcept
754 {
755 FillMode = o.FillMode;
756 CullMode = o.CullMode;
757 FrontCounterClockwise = o.FrontCounterClockwise;
758 DepthBias = o.DepthBias;
759 DepthBiasClamp = o.DepthBiasClamp;
760 SlopeScaledDepthBias = o.SlopeScaledDepthBias;
761 DepthClipEnable = o.DepthClipEnable;
762 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
763 if (o.MultisampleEnable)
764 {
765 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE;
766 }
767 else if (o.AntialiasedLineEnable)
768 {
769 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED;
770 }
771 ForcedSampleCount = o.ForcedSampleCount;
772 ConservativeRaster = o.ConservativeRaster;
773 }
774 explicit CD3DX12_RASTERIZER_DESC2(const D3D12_RASTERIZER_DESC& o) noexcept
775 : CD3DX12_RASTERIZER_DESC2(CD3DX12_RASTERIZER_DESC1(o))
776 {
777 }
778 explicit CD3DX12_RASTERIZER_DESC2(CD3DX12_DEFAULT) noexcept
779 {
780 FillMode = D3D12_FILL_MODE_SOLID;
781 CullMode = D3D12_CULL_MODE_BACK;
782 FrontCounterClockwise = FALSE;
783 DepthBias = D3D12_DEFAULT_DEPTH_BIAS;
784 DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP;
785 SlopeScaledDepthBias = D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS;
786 DepthClipEnable = TRUE;
787 LineRasterizationMode = D3D12_LINE_RASTERIZATION_MODE_ALIASED;
788 ForcedSampleCount = 0;
789 ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
790 }
791 explicit CD3DX12_RASTERIZER_DESC2(
792 D3D12_FILL_MODE fillMode,
793 D3D12_CULL_MODE cullMode,
794 BOOL frontCounterClockwise,
795 FLOAT depthBias,
796 FLOAT depthBiasClamp,
797 FLOAT slopeScaledDepthBias,
798 BOOL depthClipEnable,
799 D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode,
800 UINT forcedSampleCount,
801 D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster) noexcept
802 {
803 FillMode = fillMode;
804 CullMode = cullMode;
805 FrontCounterClockwise = frontCounterClockwise;
806 DepthBias = depthBias;
807 DepthBiasClamp = depthBiasClamp;
808 SlopeScaledDepthBias = slopeScaledDepthBias;
809 DepthClipEnable = depthClipEnable;
810 LineRasterizationMode = lineRasterizationMode;
811 ForcedSampleCount = forcedSampleCount;
812 ConservativeRaster = conservativeRaster;
813 }
814
815
816 operator D3D12_RASTERIZER_DESC1() const noexcept
817 {
818 D3D12_RASTERIZER_DESC1 o;
819
820 o.FillMode = FillMode;
821 o.CullMode = CullMode;
822 o.FrontCounterClockwise = FrontCounterClockwise;
823 o.DepthBias = DepthBias;
824 o.DepthBiasClamp = DepthBiasClamp;
825 o.SlopeScaledDepthBias = SlopeScaledDepthBias;
826 o.DepthClipEnable = DepthClipEnable;
827 o.MultisampleEnable = FALSE;
828 o.AntialiasedLineEnable = FALSE;
829 if (LineRasterizationMode == D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED)
830 {
831 o.AntialiasedLineEnable = TRUE;
832 }
833 else if (LineRasterizationMode != D3D12_LINE_RASTERIZATION_MODE_ALIASED)
834 {
835 o.MultisampleEnable = TRUE;
836 }
837 o.ForcedSampleCount = ForcedSampleCount;
838 o.ConservativeRaster = ConservativeRaster;
839
840 return o;
841 }
842 operator D3D12_RASTERIZER_DESC() const noexcept
843 {
844 return static_cast<D3D12_RASTERIZER_DESC>(CD3DX12_RASTERIZER_DESC1(static_cast<D3D12_RASTERIZER_DESC1>(*this)));
845 }
846};
847#endif // D3D12_SDK_VERSION >= 610
848
849//------------------------------------------------------------------------------------------------
850struct CD3DX12_RESOURCE_ALLOCATION_INFO : public D3D12_RESOURCE_ALLOCATION_INFO
851{
852 CD3DX12_RESOURCE_ALLOCATION_INFO() = default;
853 explicit CD3DX12_RESOURCE_ALLOCATION_INFO( const D3D12_RESOURCE_ALLOCATION_INFO& o ) noexcept :
854 D3D12_RESOURCE_ALLOCATION_INFO( o )
855 {}
856 CD3DX12_RESOURCE_ALLOCATION_INFO(
857 UINT64 size,
858 UINT64 alignment ) noexcept
859 {
860 SizeInBytes = size;
861 Alignment = alignment;
862 }
863};
864
865//------------------------------------------------------------------------------------------------
866struct CD3DX12_HEAP_PROPERTIES : public D3D12_HEAP_PROPERTIES
867{
868 CD3DX12_HEAP_PROPERTIES() = default;
869 explicit CD3DX12_HEAP_PROPERTIES(const D3D12_HEAP_PROPERTIES &o) noexcept :
870 D3D12_HEAP_PROPERTIES(o)
871 {}
872 CD3DX12_HEAP_PROPERTIES(
873 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
874 D3D12_MEMORY_POOL memoryPoolPreference,
875 UINT creationNodeMask = 1,
876 UINT nodeMask = 1 ) noexcept
877 {
878 Type = D3D12_HEAP_TYPE_CUSTOM;
879 CPUPageProperty = cpuPageProperty;
880 MemoryPoolPreference = memoryPoolPreference;
881 CreationNodeMask = creationNodeMask;
882 VisibleNodeMask = nodeMask;
883 }
884 explicit CD3DX12_HEAP_PROPERTIES(
885 D3D12_HEAP_TYPE type,
886 UINT creationNodeMask = 1,
887 UINT nodeMask = 1 ) noexcept
888 {
889 Type = type;
890 CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
891 MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
892 CreationNodeMask = creationNodeMask;
893 VisibleNodeMask = nodeMask;
894 }
895 bool IsCPUAccessible() const noexcept
896 {
897 return Type == D3D12_HEAP_TYPE_UPLOAD || Type == D3D12_HEAP_TYPE_READBACK
898#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
899 || Type == D3D12_HEAP_TYPE_GPU_UPLOAD
900#endif
901 || (Type == D3D12_HEAP_TYPE_CUSTOM &&
902 (CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE || CPUPageProperty == D3D12_CPU_PAGE_PROPERTY_WRITE_BACK));
903 }
904};
905inline bool operator==( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
906{
907 return l.Type == r.Type && l.CPUPageProperty == r.CPUPageProperty &&
908 l.MemoryPoolPreference == r.MemoryPoolPreference &&
909 l.CreationNodeMask == r.CreationNodeMask &&
910 l.VisibleNodeMask == r.VisibleNodeMask;
911}
912inline bool operator!=( const D3D12_HEAP_PROPERTIES& l, const D3D12_HEAP_PROPERTIES& r ) noexcept
913{ return !( l == r ); }
914
915//------------------------------------------------------------------------------------------------
916struct CD3DX12_HEAP_DESC : public D3D12_HEAP_DESC
917{
918 CD3DX12_HEAP_DESC() = default;
919 explicit CD3DX12_HEAP_DESC(const D3D12_HEAP_DESC &o) noexcept :
920 D3D12_HEAP_DESC(o)
921 {}
922 CD3DX12_HEAP_DESC(
923 UINT64 size,
924 D3D12_HEAP_PROPERTIES properties,
925 UINT64 alignment = 0,
926 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
927 {
928 SizeInBytes = size;
929 Properties = properties;
930 Alignment = alignment;
931 Flags = flags;
932 }
933 CD3DX12_HEAP_DESC(
934 UINT64 size,
935 D3D12_HEAP_TYPE type,
936 UINT64 alignment = 0,
937 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
938 {
939 SizeInBytes = size;
940 Properties = CD3DX12_HEAP_PROPERTIES( type );
941 Alignment = alignment;
942 Flags = flags;
943 }
944 CD3DX12_HEAP_DESC(
945 UINT64 size,
946 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
947 D3D12_MEMORY_POOL memoryPoolPreference,
948 UINT64 alignment = 0,
949 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
950 {
951 SizeInBytes = size;
952 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
953 Alignment = alignment;
954 Flags = flags;
955 }
956 CD3DX12_HEAP_DESC(
957 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
958 D3D12_HEAP_PROPERTIES properties,
959 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
960 {
961 SizeInBytes = resAllocInfo.SizeInBytes;
962 Properties = properties;
963 Alignment = resAllocInfo.Alignment;
964 Flags = flags;
965 }
966 CD3DX12_HEAP_DESC(
967 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
968 D3D12_HEAP_TYPE type,
969 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
970 {
971 SizeInBytes = resAllocInfo.SizeInBytes;
972 Properties = CD3DX12_HEAP_PROPERTIES( type );
973 Alignment = resAllocInfo.Alignment;
974 Flags = flags;
975 }
976 CD3DX12_HEAP_DESC(
977 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
978 D3D12_CPU_PAGE_PROPERTY cpuPageProperty,
979 D3D12_MEMORY_POOL memoryPoolPreference,
980 D3D12_HEAP_FLAGS flags = D3D12_HEAP_FLAG_NONE ) noexcept
981 {
982 SizeInBytes = resAllocInfo.SizeInBytes;
983 Properties = CD3DX12_HEAP_PROPERTIES( cpuPageProperty, memoryPoolPreference );
984 Alignment = resAllocInfo.Alignment;
985 Flags = flags;
986 }
987 bool IsCPUAccessible() const noexcept
988 { return static_cast< const CD3DX12_HEAP_PROPERTIES* >( &Properties )->IsCPUAccessible(); }
989};
990inline bool operator==( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
991{
992 return l.SizeInBytes == r.SizeInBytes &&
993 l.Properties == r.Properties &&
994 l.Alignment == r.Alignment &&
995 l.Flags == r.Flags;
996}
997inline bool operator!=( const D3D12_HEAP_DESC& l, const D3D12_HEAP_DESC& r ) noexcept
998{ return !( l == r ); }
999
1000//------------------------------------------------------------------------------------------------
1001struct CD3DX12_CLEAR_VALUE : public D3D12_CLEAR_VALUE
1002{
1003 CD3DX12_CLEAR_VALUE() = default;
1004 explicit CD3DX12_CLEAR_VALUE(const D3D12_CLEAR_VALUE &o) noexcept :
1005 D3D12_CLEAR_VALUE(o)
1006 {}
1007 CD3DX12_CLEAR_VALUE(
1008 DXGI_FORMAT format,
1009 const FLOAT color[4] ) noexcept
1010 {
1011 Format = format;
1012 memcpy( Color, color, sizeof( Color ) );
1013 }
1014 CD3DX12_CLEAR_VALUE(
1015 DXGI_FORMAT format,
1016 FLOAT depth,
1017 UINT8 stencil ) noexcept
1018 {
1019 Format = format;
1020 memset( &Color, 0, sizeof( Color ) );
1021 /* Use memcpy to preserve NAN values */
1022 memcpy( &DepthStencil.Depth, &depth, sizeof( depth ) );
1023 DepthStencil.Stencil = stencil;
1024 }
1025};
1026
1027//------------------------------------------------------------------------------------------------
1028inline bool operator==( const D3D12_CLEAR_VALUE &a, const D3D12_CLEAR_VALUE &b) noexcept
1029{
1030 if (a.Format != b.Format) return false;
1031 if (a.Format == DXGI_FORMAT_D24_UNORM_S8_UINT
1032 || a.Format == DXGI_FORMAT_D16_UNORM
1033 || a.Format == DXGI_FORMAT_D32_FLOAT
1034 || a.Format == DXGI_FORMAT_D32_FLOAT_S8X24_UINT)
1035 {
1036 return (a.DepthStencil.Depth == b.DepthStencil.Depth) &&
1037 (a.DepthStencil.Stencil == b.DepthStencil.Stencil);
1038 } else {
1039 return (a.Color[0] == b.Color[0]) &&
1040 (a.Color[1] == b.Color[1]) &&
1041 (a.Color[2] == b.Color[2]) &&
1042 (a.Color[3] == b.Color[3]);
1043 }
1044}
1045
1046//------------------------------------------------------------------------------------------------
1047struct CD3DX12_RANGE : public D3D12_RANGE
1048{
1049 CD3DX12_RANGE() = default;
1050 explicit CD3DX12_RANGE(const D3D12_RANGE &o) noexcept :
1051 D3D12_RANGE(o)
1052 {}
1053 CD3DX12_RANGE(
1054 SIZE_T begin,
1055 SIZE_T end ) noexcept
1056 {
1057 Begin = begin;
1058 End = end;
1059 }
1060};
1061
1062//------------------------------------------------------------------------------------------------
1063struct CD3DX12_RANGE_UINT64 : public D3D12_RANGE_UINT64
1064{
1065 CD3DX12_RANGE_UINT64() = default;
1066 explicit CD3DX12_RANGE_UINT64(const D3D12_RANGE_UINT64 &o) noexcept :
1067 D3D12_RANGE_UINT64(o)
1068 {}
1069 CD3DX12_RANGE_UINT64(
1070 UINT64 begin,
1071 UINT64 end ) noexcept
1072 {
1073 Begin = begin;
1074 End = end;
1075 }
1076};
1077
1078//------------------------------------------------------------------------------------------------
1079struct CD3DX12_SUBRESOURCE_RANGE_UINT64 : public D3D12_SUBRESOURCE_RANGE_UINT64
1080{
1081 CD3DX12_SUBRESOURCE_RANGE_UINT64() = default;
1082 explicit CD3DX12_SUBRESOURCE_RANGE_UINT64(const D3D12_SUBRESOURCE_RANGE_UINT64 &o) noexcept :
1083 D3D12_SUBRESOURCE_RANGE_UINT64(o)
1084 {}
1085 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1086 UINT subresource,
1087 const D3D12_RANGE_UINT64& range ) noexcept
1088 {
1089 Subresource = subresource;
1090 Range = range;
1091 }
1092 CD3DX12_SUBRESOURCE_RANGE_UINT64(
1093 UINT subresource,
1094 UINT64 begin,
1095 UINT64 end ) noexcept
1096 {
1097 Subresource = subresource;
1098 Range.Begin = begin;
1099 Range.End = end;
1100 }
1101};
1102
1103//------------------------------------------------------------------------------------------------
1104struct CD3DX12_SHADER_BYTECODE : public D3D12_SHADER_BYTECODE
1105{
1106 CD3DX12_SHADER_BYTECODE() = default;
1107 explicit CD3DX12_SHADER_BYTECODE(const D3D12_SHADER_BYTECODE &o) noexcept :
1108 D3D12_SHADER_BYTECODE(o)
1109 {}
1110 CD3DX12_SHADER_BYTECODE(
1111 _In_ ID3DBlob* pShaderBlob ) noexcept
1112 {
1113 pShaderBytecode = pShaderBlob->GetBufferPointer();
1114 BytecodeLength = pShaderBlob->GetBufferSize();
1115 }
1116 CD3DX12_SHADER_BYTECODE(
1117 const void* _pShaderBytecode,
1118 SIZE_T bytecodeLength ) noexcept
1119 {
1120 pShaderBytecode = _pShaderBytecode;
1121 BytecodeLength = bytecodeLength;
1122 }
1123};
1124
1125//------------------------------------------------------------------------------------------------
1126struct CD3DX12_TILED_RESOURCE_COORDINATE : public D3D12_TILED_RESOURCE_COORDINATE
1127{
1128 CD3DX12_TILED_RESOURCE_COORDINATE() = default;
1129 explicit CD3DX12_TILED_RESOURCE_COORDINATE(const D3D12_TILED_RESOURCE_COORDINATE &o) noexcept :
1130 D3D12_TILED_RESOURCE_COORDINATE(o)
1131 {}
1132 CD3DX12_TILED_RESOURCE_COORDINATE(
1133 UINT x,
1134 UINT y,
1135 UINT z,
1136 UINT subresource ) noexcept
1137 {
1138 X = x;
1139 Y = y;
1140 Z = z;
1141 Subresource = subresource;
1142 }
1143};
1144
1145//------------------------------------------------------------------------------------------------
1146struct CD3DX12_TILE_REGION_SIZE : public D3D12_TILE_REGION_SIZE
1147{
1148 CD3DX12_TILE_REGION_SIZE() = default;
1149 explicit CD3DX12_TILE_REGION_SIZE(const D3D12_TILE_REGION_SIZE &o) noexcept :
1150 D3D12_TILE_REGION_SIZE(o)
1151 {}
1152 CD3DX12_TILE_REGION_SIZE(
1153 UINT numTiles,
1154 BOOL useBox,
1155 UINT width,
1156 UINT16 height,
1157 UINT16 depth ) noexcept
1158 {
1159 NumTiles = numTiles;
1160 UseBox = useBox;
1161 Width = width;
1162 Height = height;
1163 Depth = depth;
1164 }
1165};
1166
1167//------------------------------------------------------------------------------------------------
1168struct CD3DX12_SUBRESOURCE_TILING : public D3D12_SUBRESOURCE_TILING
1169{
1170 CD3DX12_SUBRESOURCE_TILING() = default;
1171 explicit CD3DX12_SUBRESOURCE_TILING(const D3D12_SUBRESOURCE_TILING &o) noexcept :
1172 D3D12_SUBRESOURCE_TILING(o)
1173 {}
1174 CD3DX12_SUBRESOURCE_TILING(
1175 UINT widthInTiles,
1176 UINT16 heightInTiles,
1177 UINT16 depthInTiles,
1178 UINT startTileIndexInOverallResource ) noexcept
1179 {
1180 WidthInTiles = widthInTiles;
1181 HeightInTiles = heightInTiles;
1182 DepthInTiles = depthInTiles;
1183 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1184 }
1185};
1186
1187//------------------------------------------------------------------------------------------------
1188struct CD3DX12_TILE_SHAPE : public D3D12_TILE_SHAPE
1189{
1190 CD3DX12_TILE_SHAPE() = default;
1191 explicit CD3DX12_TILE_SHAPE(const D3D12_TILE_SHAPE &o) noexcept :
1192 D3D12_TILE_SHAPE(o)
1193 {}
1194 CD3DX12_TILE_SHAPE(
1195 UINT widthInTexels,
1196 UINT heightInTexels,
1197 UINT depthInTexels ) noexcept
1198 {
1199 WidthInTexels = widthInTexels;
1200 HeightInTexels = heightInTexels;
1201 DepthInTexels = depthInTexels;
1202 }
1203};
1204
1205//------------------------------------------------------------------------------------------------
1206struct CD3DX12_PACKED_MIP_INFO : public D3D12_PACKED_MIP_INFO
1207{
1208 CD3DX12_PACKED_MIP_INFO() = default;
1209 explicit CD3DX12_PACKED_MIP_INFO(const D3D12_PACKED_MIP_INFO &o) noexcept :
1210 D3D12_PACKED_MIP_INFO(o)
1211 {}
1212 CD3DX12_PACKED_MIP_INFO(
1213 UINT8 numStandardMips,
1214 UINT8 numPackedMips,
1215 UINT numTilesForPackedMips,
1216 UINT startTileIndexInOverallResource ) noexcept
1217 {
1218 NumStandardMips = numStandardMips;
1219 NumPackedMips = numPackedMips;
1220 NumTilesForPackedMips = numTilesForPackedMips;
1221 StartTileIndexInOverallResource = startTileIndexInOverallResource;
1222 }
1223};
1224
1225//------------------------------------------------------------------------------------------------
1226struct CD3DX12_SUBRESOURCE_FOOTPRINT : public D3D12_SUBRESOURCE_FOOTPRINT
1227{
1228 CD3DX12_SUBRESOURCE_FOOTPRINT() = default;
1229 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(const D3D12_SUBRESOURCE_FOOTPRINT &o) noexcept :
1230 D3D12_SUBRESOURCE_FOOTPRINT(o)
1231 {}
1232 CD3DX12_SUBRESOURCE_FOOTPRINT(
1233 DXGI_FORMAT format,
1234 UINT width,
1235 UINT height,
1236 UINT depth,
1237 UINT rowPitch ) noexcept
1238 {
1239 Format = format;
1240 Width = width;
1241 Height = height;
1242 Depth = depth;
1243 RowPitch = rowPitch;
1244 }
1245 explicit CD3DX12_SUBRESOURCE_FOOTPRINT(
1246 const D3D12_RESOURCE_DESC& resDesc,
1247 UINT rowPitch ) noexcept
1248 {
1249 Format = resDesc.Format;
1250 Width = UINT( resDesc.Width );
1251 Height = resDesc.Height;
1252 Depth = (resDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? resDesc.DepthOrArraySize : 1u);
1253 RowPitch = rowPitch;
1254 }
1255};
1256
1257//------------------------------------------------------------------------------------------------
1258struct CD3DX12_TEXTURE_COPY_LOCATION : public D3D12_TEXTURE_COPY_LOCATION
1259{
1260 CD3DX12_TEXTURE_COPY_LOCATION() = default;
1261 explicit CD3DX12_TEXTURE_COPY_LOCATION(const D3D12_TEXTURE_COPY_LOCATION &o) noexcept :
1262 D3D12_TEXTURE_COPY_LOCATION(o)
1263 {}
1264 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes) noexcept
1265 {
1266 pResource = pRes;
1267 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1268 PlacedFootprint = {};
1269 }
1270 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, D3D12_PLACED_SUBRESOURCE_FOOTPRINT const& Footprint) noexcept
1271 {
1272 pResource = pRes;
1273 Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT;
1274 PlacedFootprint = Footprint;
1275 }
1276 CD3DX12_TEXTURE_COPY_LOCATION(_In_ ID3D12Resource* pRes, UINT Sub) noexcept
1277 {
1278 pResource = pRes;
1279 Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX;
1280 PlacedFootprint = {};
1281 SubresourceIndex = Sub;
1282 }
1283};
1284
1285//------------------------------------------------------------------------------------------------
1286constexpr UINT D3D12CalcSubresource( UINT MipSlice, UINT ArraySlice, UINT PlaneSlice, UINT MipLevels, UINT ArraySize ) noexcept
1287{
1288 return MipSlice + ArraySlice * MipLevels + PlaneSlice * MipLevels * ArraySize;
1289}
1290
1291//------------------------------------------------------------------------------------------------
1292inline UINT8 D3D12GetFormatPlaneCount(
1293 _In_ ID3D12Device* pDevice,
1294 DXGI_FORMAT Format
1295 ) noexcept
1296{
1297 D3D12_FEATURE_DATA_FORMAT_INFO formatInfo = { Format, 0 };
1298 if (FAILED(pDevice->CheckFeatureSupport(D3D12_FEATURE_FORMAT_INFO, &formatInfo, sizeof(formatInfo))))
1299 {
1300 return 0;
1301 }
1302 return formatInfo.PlaneCount;
1303}
1304
1305//------------------------------------------------------------------------------------------------
1306struct CD3DX12_RESOURCE_DESC : public D3D12_RESOURCE_DESC
1307{
1308 CD3DX12_RESOURCE_DESC() = default;
1309 explicit CD3DX12_RESOURCE_DESC( const D3D12_RESOURCE_DESC& o ) noexcept :
1310 D3D12_RESOURCE_DESC( o )
1311 {}
1312 CD3DX12_RESOURCE_DESC(
1313 D3D12_RESOURCE_DIMENSION dimension,
1314 UINT64 alignment,
1315 UINT64 width,
1316 UINT height,
1317 UINT16 depthOrArraySize,
1318 UINT16 mipLevels,
1319 DXGI_FORMAT format,
1320 UINT sampleCount,
1321 UINT sampleQuality,
1322 D3D12_TEXTURE_LAYOUT layout,
1323 D3D12_RESOURCE_FLAGS flags ) noexcept
1324 {
1325 Dimension = dimension;
1326 Alignment = alignment;
1327 Width = width;
1328 Height = height;
1329 DepthOrArraySize = depthOrArraySize;
1330 MipLevels = mipLevels;
1331 Format = format;
1332 SampleDesc.Count = sampleCount;
1333 SampleDesc.Quality = sampleQuality;
1334 Layout = layout;
1335 Flags = flags;
1336 }
1337 static inline CD3DX12_RESOURCE_DESC Buffer(
1338 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1339 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1340 {
1341 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1342 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1343 }
1344 static inline CD3DX12_RESOURCE_DESC Buffer(
1345 UINT64 width,
1346 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1347 UINT64 alignment = 0 ) noexcept
1348 {
1349 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1350 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags );
1351 }
1352 static inline CD3DX12_RESOURCE_DESC Tex1D(
1353 DXGI_FORMAT format,
1354 UINT64 width,
1355 UINT16 arraySize = 1,
1356 UINT16 mipLevels = 0,
1357 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1358 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1359 UINT64 alignment = 0 ) noexcept
1360 {
1361 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1362 mipLevels, format, 1, 0, layout, flags );
1363 }
1364 static inline CD3DX12_RESOURCE_DESC Tex2D(
1365 DXGI_FORMAT format,
1366 UINT64 width,
1367 UINT height,
1368 UINT16 arraySize = 1,
1369 UINT16 mipLevels = 0,
1370 UINT sampleCount = 1,
1371 UINT sampleQuality = 0,
1372 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1373 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1374 UINT64 alignment = 0 ) noexcept
1375 {
1376 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1377 mipLevels, format, sampleCount, sampleQuality, layout, flags );
1378 }
1379 static inline CD3DX12_RESOURCE_DESC Tex3D(
1380 DXGI_FORMAT format,
1381 UINT64 width,
1382 UINT height,
1383 UINT16 depth,
1384 UINT16 mipLevels = 0,
1385 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1386 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1387 UINT64 alignment = 0 ) noexcept
1388 {
1389 return CD3DX12_RESOURCE_DESC( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1390 mipLevels, format, 1, 0, layout, flags );
1391 }
1392 inline UINT16 Depth() const noexcept
1393 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1394 inline UINT16 ArraySize() const noexcept
1395 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1396 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1397 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1398 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1399 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1400 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1401 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1402};
1403inline bool operator==( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1404{
1405 return l.Dimension == r.Dimension &&
1406 l.Alignment == r.Alignment &&
1407 l.Width == r.Width &&
1408 l.Height == r.Height &&
1409 l.DepthOrArraySize == r.DepthOrArraySize &&
1410 l.MipLevels == r.MipLevels &&
1411 l.Format == r.Format &&
1412 l.SampleDesc.Count == r.SampleDesc.Count &&
1413 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1414 l.Layout == r.Layout &&
1415 l.Flags == r.Flags;
1416}
1417inline bool operator!=( const D3D12_RESOURCE_DESC& l, const D3D12_RESOURCE_DESC& r ) noexcept
1418{ return !( l == r ); }
1419
1420//------------------------------------------------------------------------------------------------
1421struct CD3DX12_RESOURCE_DESC1 : public D3D12_RESOURCE_DESC1
1422{
1423 CD3DX12_RESOURCE_DESC1() = default;
1424 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC1& o ) noexcept :
1425 D3D12_RESOURCE_DESC1( o )
1426 {}
1427 explicit CD3DX12_RESOURCE_DESC1( const D3D12_RESOURCE_DESC& o ) noexcept
1428 {
1429 Dimension = o.Dimension;
1430 Alignment = o.Alignment;
1431 Width = o.Width;
1432 Height = o.Height;
1433 DepthOrArraySize = o.DepthOrArraySize;
1434 MipLevels = o.MipLevels;
1435 Format = o.Format;
1436 SampleDesc = o.SampleDesc;
1437 Layout = o.Layout;
1438 Flags = o.Flags;
1439 SamplerFeedbackMipRegion = {};
1440 }
1441 CD3DX12_RESOURCE_DESC1(
1442 D3D12_RESOURCE_DIMENSION dimension,
1443 UINT64 alignment,
1444 UINT64 width,
1445 UINT height,
1446 UINT16 depthOrArraySize,
1447 UINT16 mipLevels,
1448 DXGI_FORMAT format,
1449 UINT sampleCount,
1450 UINT sampleQuality,
1451 D3D12_TEXTURE_LAYOUT layout,
1452 D3D12_RESOURCE_FLAGS flags,
1453 UINT samplerFeedbackMipRegionWidth = 0,
1454 UINT samplerFeedbackMipRegionHeight = 0,
1455 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1456 {
1457 Dimension = dimension;
1458 Alignment = alignment;
1459 Width = width;
1460 Height = height;
1461 DepthOrArraySize = depthOrArraySize;
1462 MipLevels = mipLevels;
1463 Format = format;
1464 SampleDesc.Count = sampleCount;
1465 SampleDesc.Quality = sampleQuality;
1466 Layout = layout;
1467 Flags = flags;
1468 SamplerFeedbackMipRegion.Width = samplerFeedbackMipRegionWidth;
1469 SamplerFeedbackMipRegion.Height = samplerFeedbackMipRegionHeight;
1470 SamplerFeedbackMipRegion.Depth = samplerFeedbackMipRegionDepth;
1471 }
1472
1473 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1474 const D3D12_RESOURCE_ALLOCATION_INFO& resAllocInfo,
1475 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE ) noexcept
1476 {
1477 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, resAllocInfo.Alignment, resAllocInfo.SizeInBytes,
1478 1, 1, 1, DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1479 }
1480 static inline CD3DX12_RESOURCE_DESC1 Buffer(
1481 UINT64 width,
1482 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1483 UINT64 alignment = 0 ) noexcept
1484 {
1485 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_BUFFER, alignment, width, 1, 1, 1,
1486 DXGI_FORMAT_UNKNOWN, 1, 0, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, flags, 0, 0, 0 );
1487 }
1488 static inline CD3DX12_RESOURCE_DESC1 Tex1D(
1489 DXGI_FORMAT format,
1490 UINT64 width,
1491 UINT16 arraySize = 1,
1492 UINT16 mipLevels = 0,
1493 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1494 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1495 UINT64 alignment = 0 ) noexcept
1496 {
1497 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE1D, alignment, width, 1, arraySize,
1498 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1499 }
1500 static inline CD3DX12_RESOURCE_DESC1 Tex2D(
1501 DXGI_FORMAT format,
1502 UINT64 width,
1503 UINT height,
1504 UINT16 arraySize = 1,
1505 UINT16 mipLevels = 0,
1506 UINT sampleCount = 1,
1507 UINT sampleQuality = 0,
1508 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1509 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1510 UINT64 alignment = 0,
1511 UINT samplerFeedbackMipRegionWidth = 0,
1512 UINT samplerFeedbackMipRegionHeight = 0,
1513 UINT samplerFeedbackMipRegionDepth = 0) noexcept
1514 {
1515 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE2D, alignment, width, height, arraySize,
1516 mipLevels, format, sampleCount, sampleQuality, layout, flags, samplerFeedbackMipRegionWidth,
1517 samplerFeedbackMipRegionHeight, samplerFeedbackMipRegionDepth );
1518 }
1519 static inline CD3DX12_RESOURCE_DESC1 Tex3D(
1520 DXGI_FORMAT format,
1521 UINT64 width,
1522 UINT height,
1523 UINT16 depth,
1524 UINT16 mipLevels = 0,
1525 D3D12_RESOURCE_FLAGS flags = D3D12_RESOURCE_FLAG_NONE,
1526 D3D12_TEXTURE_LAYOUT layout = D3D12_TEXTURE_LAYOUT_UNKNOWN,
1527 UINT64 alignment = 0 ) noexcept
1528 {
1529 return CD3DX12_RESOURCE_DESC1( D3D12_RESOURCE_DIMENSION_TEXTURE3D, alignment, width, height, depth,
1530 mipLevels, format, 1, 0, layout, flags, 0, 0, 0 );
1531 }
1532 inline UINT16 Depth() const noexcept
1533 { return (Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1534 inline UINT16 ArraySize() const noexcept
1535 { return (Dimension != D3D12_RESOURCE_DIMENSION_TEXTURE3D ? DepthOrArraySize : 1u); }
1536 inline UINT8 PlaneCount(_In_ ID3D12Device* pDevice) const noexcept
1537 { return D3D12GetFormatPlaneCount(pDevice, Format); }
1538 inline UINT Subresources(_In_ ID3D12Device* pDevice) const noexcept
1539 { return static_cast<UINT>(MipLevels) * ArraySize() * PlaneCount(pDevice); }
1540 inline UINT CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT PlaneSlice) noexcept
1541 { return D3D12CalcSubresource(MipSlice, ArraySlice, PlaneSlice, MipLevels, ArraySize()); }
1542};
1543inline bool operator==( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1544{
1545 return l.Dimension == r.Dimension &&
1546 l.Alignment == r.Alignment &&
1547 l.Width == r.Width &&
1548 l.Height == r.Height &&
1549 l.DepthOrArraySize == r.DepthOrArraySize &&
1550 l.MipLevels == r.MipLevels &&
1551 l.Format == r.Format &&
1552 l.SampleDesc.Count == r.SampleDesc.Count &&
1553 l.SampleDesc.Quality == r.SampleDesc.Quality &&
1554 l.Layout == r.Layout &&
1555 l.Flags == r.Flags &&
1556 l.SamplerFeedbackMipRegion.Width == r.SamplerFeedbackMipRegion.Width &&
1557 l.SamplerFeedbackMipRegion.Height == r.SamplerFeedbackMipRegion.Height &&
1558 l.SamplerFeedbackMipRegion.Depth == r.SamplerFeedbackMipRegion.Depth;
1559}
1560inline bool operator!=( const D3D12_RESOURCE_DESC1& l, const D3D12_RESOURCE_DESC1& r ) noexcept
1561{ return !( l == r ); }
1562
1563//------------------------------------------------------------------------------------------------
1564// Fills in the mipmap and alignment values of pDesc when either members are zero
1565// Used to replace an implicit field to an explicit (0 mip map = max mip map level)
1566// If expansion has occured, returns LclDesc, else returns the original pDesc
1567inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
1568 CD3DX12_RESOURCE_DESC1& LclDesc,
1569 const CD3DX12_RESOURCE_DESC1* pDesc,
1570 const bool tightAlignmentSupported = false,
1571 const bool alignAsCommitted = false)
1572{
1573 // Expand mip levels:
1574 if (pDesc->MipLevels == 0 || pDesc->Alignment == 0)
1575 {
1576 LclDesc = *pDesc;
1577 if (pDesc->MipLevels == 0)
1578 {
1579 auto MaxMipLevels = [](UINT64 uiMaxDimension) -> UINT16
1580 {
1581 UINT16 uiRet = 0;
1582 while (uiMaxDimension > 0)
1583 {
1584 uiRet++;
1585 uiMaxDimension >>= 1;
1586 }
1587 return uiRet;
1588 };
1589 auto Max = [](UINT64 const& a, UINT64 const& b)
1590 {
1591 return (a < b) ? b : a;
1592 };
1593
1594 LclDesc.MipLevels = MaxMipLevels(
1595 Max(LclDesc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE3D ? LclDesc.DepthOrArraySize : 1,
1596 Max(LclDesc.Width, LclDesc.Height)));
1597 }
1598 if (pDesc->Alignment == 0)
1599 {
1600 if (pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE
1601 || pDesc->Layout == D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE
1602 )
1603 {
1604 LclDesc.Alignment = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT;
1605 }
1606 else if (!(tightAlignmentSupported && (pDesc->Flags & D3D12_RESOURCE_FLAG_USE_TIGHT_ALIGNMENT))
1607 || (pDesc->Flags & D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER))
1608 {
1609 LclDesc.Alignment =
1610 (pDesc->SampleDesc.Count > 1 ? D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT : D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT);
1611 }
1612 else
1613 {
1614 // Tight alignment is supported and we aren't a cross adapter resource, now just need to set the alignment field to the minimum alignment for each type
1615 if(alignAsCommitted)
1616 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNMENT;
1617 else
1618 LclDesc.Alignment = D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNMENT;
1619 }
1620 }
1621 return &LclDesc;
1622 }
1623 else
1624 {
1625 return pDesc;
1626 }
1627}
1628
1629
1630//------------------------------------------------------------------------------------------------
1631struct CD3DX12_SHADER_RESOURCE_VIEW_DESC : public D3D12_SHADER_RESOURCE_VIEW_DESC
1632{
1633 CD3DX12_SHADER_RESOURCE_VIEW_DESC() = default;
1634 explicit CD3DX12_SHADER_RESOURCE_VIEW_DESC( const D3D12_SHADER_RESOURCE_VIEW_DESC& o ) noexcept :
1635 D3D12_SHADER_RESOURCE_VIEW_DESC(o)
1636 {}
1637
1638 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC StructuredBuffer(
1639 UINT NumElements,
1640 UINT StructureByteStride,
1641 UINT64 FirstElement = 0) noexcept
1642 {
1643 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1644 desc.Format = DXGI_FORMAT_UNKNOWN;
1645 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1646 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1647 desc.Buffer.FirstElement = FirstElement;
1648 desc.Buffer.NumElements = NumElements;
1649 desc.Buffer.StructureByteStride = StructureByteStride;
1650 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1651 return desc;
1652 }
1653
1654 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RawBuffer(
1655 UINT NumElements,
1656 UINT64 FirstElement = 0) noexcept
1657 {
1658 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1659 desc.Format = DXGI_FORMAT_R32_UINT;
1660 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1661 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1662 desc.Buffer.FirstElement = FirstElement;
1663 desc.Buffer.NumElements = NumElements;
1664 desc.Buffer.StructureByteStride = 0;
1665 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;
1666 return desc;
1667 }
1668
1669 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TypedBuffer(
1670 DXGI_FORMAT Format,
1671 UINT NumElements,
1672 UINT64 FirstElement = 0,
1673 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1674 {
1675 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1676 desc.Format = Format;
1677 desc.ViewDimension = D3D12_SRV_DIMENSION_BUFFER;
1678 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1679 desc.Buffer.FirstElement = FirstElement;
1680 desc.Buffer.NumElements = NumElements;
1681 desc.Buffer.StructureByteStride = 0;
1682 desc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_NONE;
1683 return desc;
1684 }
1685
1686 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1D(
1687 DXGI_FORMAT Format,
1688 UINT MipLevels = -1,
1689 UINT MostDetailedMip = 0,
1690 FLOAT ResourceMinLODClamp = 0.0f,
1691 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1692 {
1693 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1694 desc.Format = Format;
1695 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1D;
1696 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1697 desc.Texture1D.MostDetailedMip = MostDetailedMip;
1698 desc.Texture1D.MipLevels = MipLevels;
1699 desc.Texture1D.ResourceMinLODClamp = ResourceMinLODClamp;
1700 return desc;
1701 }
1702
1703 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex1DArray(
1704 DXGI_FORMAT Format,
1705 UINT ArraySize = -1,
1706 UINT MipLevels = -1,
1707 UINT FirstArraySlice = 0,
1708 UINT MostDetailedMip = 0,
1709 FLOAT ResourceMinLODClamp = 0.0f,
1710 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1711 {
1712 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1713 desc.Format = Format;
1714 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1DARRAY;
1715 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1716 desc.Texture1DArray.MostDetailedMip = MostDetailedMip;
1717 desc.Texture1DArray.MipLevels = MipLevels;
1718 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1719 desc.Texture1DArray.ArraySize = ArraySize;
1720 desc.Texture1DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1721 return desc;
1722 }
1723
1724 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2D(
1725 DXGI_FORMAT Format,
1726 UINT MipLevels = -1,
1727 UINT MostDetailedMip = 0,
1728 UINT PlaneSlice = 0,
1729 FLOAT ResourceMinLODClamp = 0.0f,
1730 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1731 {
1732 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1733 desc.Format = Format;
1734 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
1735 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1736 desc.Texture2D.MostDetailedMip = MostDetailedMip;
1737 desc.Texture2D.MipLevels = MipLevels;
1738 desc.Texture2D.PlaneSlice = PlaneSlice;
1739 desc.Texture2D.ResourceMinLODClamp = ResourceMinLODClamp;
1740 return desc;
1741 }
1742
1743 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DArray(
1744 DXGI_FORMAT Format,
1745 UINT ArraySize = -1,
1746 UINT MipLevels = -1,
1747 UINT FirstArraySlice = 0,
1748 UINT MostDetailedMip = 0,
1749 UINT PlaneSlice = 0,
1750 FLOAT ResourceMinLODClamp = 0.0f,
1751 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1752 {
1753 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1754 desc.Format = Format;
1755 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY;
1756 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1757 desc.Texture2DArray.MostDetailedMip = MostDetailedMip;
1758 desc.Texture2DArray.MipLevels = MipLevels;
1759 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1760 desc.Texture2DArray.ArraySize = ArraySize;
1761 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1762 desc.Texture2DArray.ResourceMinLODClamp = ResourceMinLODClamp;
1763 return desc;
1764 }
1765
1766 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMS(
1767 DXGI_FORMAT Format,
1768 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1769 {
1770 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1771 desc.Format = Format;
1772 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMS;
1773 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1774 // desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1775 return desc;
1776 }
1777
1778 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex2DMSArray(
1779 DXGI_FORMAT Format,
1780 UINT ArraySize,
1781 UINT FirstArraySlice = 0,
1782 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1783 {
1784 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1785 desc.Format = Format;
1786 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY;
1787 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1788 desc.Texture2DMSArray.ArraySize = ArraySize;
1789 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1790 return desc;
1791 }
1792
1793 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC Tex3D(
1794 DXGI_FORMAT Format,
1795 UINT MipLevels = -1,
1796 UINT MostDetailedMip = 0,
1797 FLOAT ResourceMinLODClamp = 0.0f,
1798 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1799 {
1800 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1801 desc.Format = Format;
1802 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE3D;
1803 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1804 desc.Texture3D.MostDetailedMip = MostDetailedMip;
1805 desc.Texture3D.MipLevels = MipLevels;
1806 desc.Texture3D.ResourceMinLODClamp = ResourceMinLODClamp;
1807 return desc;
1808 }
1809
1810 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCube(
1811 DXGI_FORMAT Format,
1812 UINT MipLevels = -1,
1813 UINT MostDetailedMip = 0,
1814 FLOAT ResourceMinLODClamp = 0.0f,
1815 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1816 {
1817 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1818 desc.Format = Format;
1819 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBE;
1820 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1821 desc.TextureCube.MostDetailedMip = MostDetailedMip;
1822 desc.TextureCube.MipLevels = MipLevels;
1823 desc.TextureCube.ResourceMinLODClamp = ResourceMinLODClamp;
1824 return desc;
1825 }
1826
1827 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC TexCubeArray(
1828 DXGI_FORMAT Format,
1829 UINT NumCubes,
1830 UINT MipLevels = -1,
1831 UINT First2DArrayFace = 0,
1832 UINT MostDetailedMip = 0,
1833 FLOAT ResourceMinLODClamp = 0.0f,
1834 UINT Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING) noexcept
1835 {
1836 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1837 desc.Format = Format;
1838 desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBEARRAY;
1839 desc.Shader4ComponentMapping = Shader4ComponentMapping;
1840 desc.TextureCubeArray.NumCubes = NumCubes;
1841 desc.TextureCubeArray.MostDetailedMip = MostDetailedMip;
1842 desc.TextureCubeArray.MipLevels = MipLevels;
1843 desc.TextureCubeArray.First2DArrayFace = First2DArrayFace;
1844 desc.TextureCubeArray.ResourceMinLODClamp = ResourceMinLODClamp;
1845 return desc;
1846 }
1847
1848 static inline CD3DX12_SHADER_RESOURCE_VIEW_DESC RaytracingAccelStruct(
1849 D3D12_GPU_VIRTUAL_ADDRESS Location) noexcept
1850 {
1851 CD3DX12_SHADER_RESOURCE_VIEW_DESC desc;
1852 desc.Format = DXGI_FORMAT_UNKNOWN;
1853 desc.ViewDimension = D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE;
1854 desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
1855 desc.RaytracingAccelerationStructure.Location = Location;
1856 return desc;
1857 }
1858};
1859
1860//------------------------------------------------------------------------------------------------
1861struct CD3DX12_UNORDERED_ACCESS_VIEW_DESC : public D3D12_UNORDERED_ACCESS_VIEW_DESC
1862{
1863 CD3DX12_UNORDERED_ACCESS_VIEW_DESC() = default;
1864 explicit CD3DX12_UNORDERED_ACCESS_VIEW_DESC( const D3D12_UNORDERED_ACCESS_VIEW_DESC& o ) noexcept :
1865 D3D12_UNORDERED_ACCESS_VIEW_DESC(o)
1866 {}
1867
1868 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC StructuredBuffer(
1869 UINT NumElements,
1870 UINT StructureByteStride,
1871 UINT64 FirstElement = 0,
1872 UINT64 CounterOffsetInBytes = 0) noexcept
1873 {
1874 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1875 desc.Format = DXGI_FORMAT_UNKNOWN;
1876 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1877 desc.Buffer.FirstElement = FirstElement;
1878 desc.Buffer.NumElements = NumElements;
1879 desc.Buffer.StructureByteStride = StructureByteStride;
1880 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1881 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1882 return desc;
1883 }
1884
1885 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC RawBuffer(
1886 UINT NumElements,
1887 UINT64 FirstElement = 0,
1888 UINT64 CounterOffsetInBytes = 0) noexcept
1889 {
1890 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1891 desc.Format = DXGI_FORMAT_R32_UINT;
1892 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1893 desc.Buffer.FirstElement = FirstElement;
1894 desc.Buffer.NumElements = NumElements;
1895 desc.Buffer.StructureByteStride = 0;
1896 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_RAW;
1897 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1898 return desc;
1899 }
1900
1901 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC TypedBuffer(
1902 DXGI_FORMAT Format,
1903 UINT NumElements,
1904 UINT64 FirstElement = 0,
1905 UINT64 CounterOffsetInBytes = 0) noexcept
1906 {
1907 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1908 desc.Format = Format;
1909 desc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
1910 desc.Buffer.FirstElement = FirstElement;
1911 desc.Buffer.NumElements = NumElements;
1912 desc.Buffer.StructureByteStride = 0;
1913 desc.Buffer.Flags = D3D12_BUFFER_UAV_FLAG_NONE;
1914 desc.Buffer.CounterOffsetInBytes = CounterOffsetInBytes;
1915 return desc;
1916 }
1917
1918 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1D(
1919 DXGI_FORMAT Format,
1920 UINT MipSlice = 0) noexcept
1921 {
1922 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1923 desc.Format = Format;
1924 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1D;
1925 desc.Texture1D.MipSlice = MipSlice;
1926 return desc;
1927 }
1928
1929 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex1DArray(
1930 DXGI_FORMAT Format,
1931 UINT ArraySize = -1,
1932 UINT FirstArraySlice = 0,
1933 UINT MipSlice = 0) noexcept
1934 {
1935 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1936 desc.Format = Format;
1937 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE1DARRAY;
1938 desc.Texture1DArray.MipSlice = MipSlice;
1939 desc.Texture1DArray.FirstArraySlice = FirstArraySlice;
1940 desc.Texture1DArray.ArraySize = ArraySize;
1941 return desc;
1942 }
1943
1944 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2D(
1945 DXGI_FORMAT Format,
1946 UINT MipSlice = 0,
1947 UINT PlaneSlice = 0) noexcept
1948 {
1949 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1950 desc.Format = Format;
1951 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2D;
1952 desc.Texture2D.MipSlice = MipSlice;
1953 desc.Texture2D.PlaneSlice = PlaneSlice;
1954 return desc;
1955 }
1956
1957 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DArray(
1958 DXGI_FORMAT Format,
1959 UINT ArraySize = -1,
1960 UINT FirstArraySlice = 0,
1961 UINT MipSlice = 0,
1962 UINT PlaneSlice = 0) noexcept
1963 {
1964 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1965 desc.Format = Format;
1966 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DARRAY;
1967 desc.Texture2DArray.MipSlice = MipSlice;
1968 desc.Texture2DArray.FirstArraySlice = FirstArraySlice;
1969 desc.Texture2DArray.ArraySize = ArraySize;
1970 desc.Texture2DArray.PlaneSlice = PlaneSlice;
1971 return desc;
1972 }
1973
1974 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMS(
1975 DXGI_FORMAT Format) noexcept
1976 {
1977 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1978 desc.Format = Format;
1979 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMS;
1980 //desc.Texture2DMS.UnusedField_NothingToDefine = 0;
1981 return desc;
1982 }
1983
1984 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex2DMSArray(
1985 DXGI_FORMAT Format,
1986 UINT ArraySize = -1,
1987 UINT FirstArraySlice = 0) noexcept
1988 {
1989 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
1990 desc.Format = Format;
1991 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY;
1992 desc.Texture2DMSArray.FirstArraySlice = FirstArraySlice;
1993 desc.Texture2DMSArray.ArraySize = ArraySize;
1994 return desc;
1995 }
1996
1997 static inline CD3DX12_UNORDERED_ACCESS_VIEW_DESC Tex3D(
1998 DXGI_FORMAT Format,
1999 UINT WSize = -1,
2000 UINT FirstWSlice = 0,
2001 UINT MipSlice = 0) noexcept
2002 {
2003 CD3DX12_UNORDERED_ACCESS_VIEW_DESC desc;
2004 desc.Format = Format;
2005 desc.ViewDimension = D3D12_UAV_DIMENSION_TEXTURE3D;
2006 desc.Texture3D.MipSlice = MipSlice;
2007 desc.Texture3D.FirstWSlice = FirstWSlice;
2008 desc.Texture3D.WSize = WSize;
2009 return desc;
2010 }
2011};
2012
2013//------------------------------------------------------------------------------------------------
2014struct CD3DX12_VIEW_INSTANCING_DESC : public D3D12_VIEW_INSTANCING_DESC
2015{
2016 CD3DX12_VIEW_INSTANCING_DESC() = default;
2017 explicit CD3DX12_VIEW_INSTANCING_DESC( const D3D12_VIEW_INSTANCING_DESC& o ) noexcept :
2018 D3D12_VIEW_INSTANCING_DESC( o )
2019 {}
2020 explicit CD3DX12_VIEW_INSTANCING_DESC( CD3DX12_DEFAULT ) noexcept
2021 {
2022 ViewInstanceCount = 0;
2023 pViewInstanceLocations = nullptr;
2024 Flags = D3D12_VIEW_INSTANCING_FLAG_NONE;
2025 }
2026 explicit CD3DX12_VIEW_INSTANCING_DESC(
2027 UINT InViewInstanceCount,
2028 const D3D12_VIEW_INSTANCE_LOCATION* InViewInstanceLocations,
2029 D3D12_VIEW_INSTANCING_FLAGS InFlags) noexcept
2030 {
2031 ViewInstanceCount = InViewInstanceCount;
2032 pViewInstanceLocations = InViewInstanceLocations;
2033 Flags = InFlags;
2034 }
2035};
2036
2037//------------------------------------------------------------------------------------------------
2038struct CD3DX12_RT_FORMAT_ARRAY : public D3D12_RT_FORMAT_ARRAY
2039{
2040 CD3DX12_RT_FORMAT_ARRAY() = default;
2041 explicit CD3DX12_RT_FORMAT_ARRAY(const D3D12_RT_FORMAT_ARRAY& o) noexcept
2042 : D3D12_RT_FORMAT_ARRAY(o)
2043 {}
2044 explicit CD3DX12_RT_FORMAT_ARRAY(_In_reads_(NumFormats) const DXGI_FORMAT* pFormats, UINT NumFormats) noexcept
2045 {
2046 NumRenderTargets = NumFormats;
2047 memcpy(RTFormats, pFormats, sizeof(RTFormats));
2048 // assumes ARRAY_SIZE(pFormats) == ARRAY_SIZE(RTFormats)
2049 }
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053struct CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC : public D3D12_SERIALIZED_ROOT_SIGNATURE_DESC
2054{
2055 CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC() = default;
2056 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& o) noexcept :
2057 D3D12_SERIALIZED_ROOT_SIGNATURE_DESC(o)
2058 {
2059 }
2060 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( CD3DX12_DEFAULT ) noexcept
2061 {
2062 pSerializedBlob = nullptr;
2063 SerializedBlobSizeInBytes = 0;
2064 }
2065 explicit CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC( const void* pData, SIZE_T size) noexcept
2066 {
2067 pSerializedBlob = pData;
2068 SerializedBlobSizeInBytes = size;
2069 }
2070};
2071
2072
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h
new file mode 100644
index 0000000..2b74d70
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_default.h
@@ -0,0 +1,12 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10struct CD3DX12_DEFAULT {};
11extern const DECLSPEC_SELECTANY CD3DX12_DEFAULT D3D12_DEFAULT;
12
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h
new file mode 100644
index 0000000..456583b
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_pipeline_state_stream.h
@@ -0,0 +1,1718 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//------------------------------------------------------------------------------------------------
19// Pipeline State Stream Helpers
20//------------------------------------------------------------------------------------------------
21
22//------------------------------------------------------------------------------------------------
23// Stream Subobjects, i.e. elements of a stream
24
25struct DefaultSampleMask { operator UINT() noexcept { return UINT_MAX; } };
26struct DefaultSampleDesc { operator DXGI_SAMPLE_DESC() noexcept { return DXGI_SAMPLE_DESC{1, 0}; } };
27
28#ifdef _MSC_VER
29#pragma warning(push)
30#pragma warning(disable : 4324)
31#endif
32template <typename InnerStructType, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type, typename DefaultArg = InnerStructType>
33class alignas(void*) CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT
34{
35private:
36 D3D12_PIPELINE_STATE_SUBOBJECT_TYPE pssType;
37 InnerStructType pssInner;
38public:
39 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT() noexcept : pssType(Type), pssInner(DefaultArg()) {}
40 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT(InnerStructType const& i) noexcept : pssType(Type), pssInner(i) {}
41 CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT& operator=(InnerStructType const& i) noexcept { pssType = Type; pssInner = i; return *this; }
42 operator InnerStructType const&() const noexcept { return pssInner; }
43 operator InnerStructType&() noexcept { return pssInner; }
44 InnerStructType* operator&() noexcept { return &pssInner; }
45 InnerStructType const* operator&() const noexcept { return &pssInner; }
46};
47#ifdef _MSC_VER
48#pragma warning(pop)
49#endif
50typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PIPELINE_STATE_FLAGS, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS> CD3DX12_PIPELINE_STATE_STREAM_FLAGS;
51typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK> CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK;
52typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< ID3D12RootSignature*, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE;
53typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INPUT_LAYOUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT> CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT;
54typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_INDEX_BUFFER_STRIP_CUT_VALUE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE> CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE;
55typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_PRIMITIVE_TOPOLOGY_TYPE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY> CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY;
56typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS> CD3DX12_PIPELINE_STATE_STREAM_VS;
57typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS> CD3DX12_PIPELINE_STATE_STREAM_GS;
58typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_STREAM_OUTPUT_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT> CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT;
59typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS> CD3DX12_PIPELINE_STATE_STREAM_HS;
60typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS> CD3DX12_PIPELINE_STATE_STREAM_DS;
61typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS> CD3DX12_PIPELINE_STATE_STREAM_PS;
62typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS> CD3DX12_PIPELINE_STATE_STREAM_AS;
63typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS> CD3DX12_PIPELINE_STATE_STREAM_MS;
64typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_SHADER_BYTECODE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS> CD3DX12_PIPELINE_STATE_STREAM_CS;
65typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_BLEND_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC;
66typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL;
67typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1;
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
69typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_DEPTH_STENCIL_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2;
70#endif
71typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_FORMAT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT> CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT;
72typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER;
73#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
74typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1;
75#endif
76#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
77typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_RASTERIZER_DESC2, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2;
78#endif
79typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_RT_FORMAT_ARRAY, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS> CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS;
80typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< DXGI_SAMPLE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, DefaultSampleDesc> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC;
81typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< UINT, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, DefaultSampleMask> CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK;
82typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< D3D12_CACHED_PIPELINE_STATE, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO> CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO;
83typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT< CD3DX12_VIEW_INSTANCING_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, CD3DX12_DEFAULT> CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING;
84#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
85typedef CD3DX12_PIPELINE_STATE_STREAM_SUBOBJECT<CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE> CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE;
86#endif
87
88//------------------------------------------------------------------------------------------------
89// Stream Parser Helpers
90
91struct ID3DX12PipelineParserCallbacks
92{
93 // Subobject Callbacks
94 virtual void FlagsCb(D3D12_PIPELINE_STATE_FLAGS) {}
95 virtual void NodeMaskCb(UINT) {}
96 virtual void RootSignatureCb(ID3D12RootSignature*) {}
97 virtual void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC&) {}
98 virtual void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE) {}
99 virtual void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE) {}
100 virtual void VSCb(const D3D12_SHADER_BYTECODE&) {}
101 virtual void GSCb(const D3D12_SHADER_BYTECODE&) {}
102 virtual void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC&) {}
103 virtual void HSCb(const D3D12_SHADER_BYTECODE&) {}
104 virtual void DSCb(const D3D12_SHADER_BYTECODE&) {}
105 virtual void PSCb(const D3D12_SHADER_BYTECODE&) {}
106 virtual void CSCb(const D3D12_SHADER_BYTECODE&) {}
107 virtual void ASCb(const D3D12_SHADER_BYTECODE&) {}
108 virtual void MSCb(const D3D12_SHADER_BYTECODE&) {}
109 virtual void BlendStateCb(const D3D12_BLEND_DESC&) {}
110 virtual void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC&) {}
111 virtual void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1&) {}
112#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
113 virtual void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2&) {}
114#endif
115 virtual void DSVFormatCb(DXGI_FORMAT) {}
116 virtual void RasterizerStateCb(const D3D12_RASTERIZER_DESC&) {}
117#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
118 virtual void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1&) {}
119#endif
120#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
121 virtual void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2&) {}
122#endif
123 virtual void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY&) {}
124 virtual void SampleDescCb(const DXGI_SAMPLE_DESC&) {}
125 virtual void SampleMaskCb(UINT) {}
126 virtual void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC&) {}
127 virtual void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE&) {}
128#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
129 virtual void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC&) {}
130#endif
131
132 // Error Callbacks
133 virtual void ErrorBadInputParameter(UINT /*ParameterIndex*/) {}
134 virtual void ErrorDuplicateSubobject(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE /*DuplicateType*/) {}
135 virtual void ErrorUnknownSubobject(UINT /*UnknownTypeValue*/) {}
136#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
137 virtual void FinalizeCb() {}
138#endif
139
140 virtual ~ID3DX12PipelineParserCallbacks() = default;
141};
142
143struct D3DX12_MESH_SHADER_PIPELINE_STATE_DESC
144{
145 ID3D12RootSignature* pRootSignature;
146 D3D12_SHADER_BYTECODE AS;
147 D3D12_SHADER_BYTECODE MS;
148 D3D12_SHADER_BYTECODE PS;
149 D3D12_BLEND_DESC BlendState;
150 UINT SampleMask;
151 D3D12_RASTERIZER_DESC RasterizerState;
152 D3D12_DEPTH_STENCIL_DESC DepthStencilState;
153 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
154 UINT NumRenderTargets;
155 DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
156 DXGI_FORMAT DSVFormat;
157 DXGI_SAMPLE_DESC SampleDesc;
158 UINT NodeMask;
159 D3D12_CACHED_PIPELINE_STATE CachedPSO;
160 D3D12_PIPELINE_STATE_FLAGS Flags;
161};
162
163#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
164struct CD3DX12_PIPELINE_STATE_STREAM6
165{
166 CD3DX12_PIPELINE_STATE_STREAM6() = default;
167 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
168 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
169 : Flags(Desc.Flags)
170 , NodeMask(Desc.NodeMask)
171 , pRootSignature(Desc.pRootSignature)
172 , InputLayout(Desc.InputLayout)
173 , IBStripCutValue(Desc.IBStripCutValue)
174 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
175 , VS(Desc.VS)
176 , GS(Desc.GS)
177 , StreamOutput(Desc.StreamOutput)
178 , HS(Desc.HS)
179 , DS(Desc.DS)
180 , PS(Desc.PS)
181 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
182 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
183 , DSVFormat(Desc.DSVFormat)
184 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
185 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
186 , SampleDesc(Desc.SampleDesc)
187 , SampleMask(Desc.SampleMask)
188 , CachedPSO(Desc.CachedPSO)
189 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
190 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
191 {
192 }
193 CD3DX12_PIPELINE_STATE_STREAM6(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
194 : Flags(Desc.Flags)
195 , NodeMask(Desc.NodeMask)
196 , pRootSignature(Desc.pRootSignature)
197 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
198 , PS(Desc.PS)
199 , AS(Desc.AS)
200 , MS(Desc.MS)
201 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
202 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
203 , DSVFormat(Desc.DSVFormat)
204 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
205 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
206 , SampleDesc(Desc.SampleDesc)
207 , SampleMask(Desc.SampleMask)
208 , CachedPSO(Desc.CachedPSO)
209 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
210 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
211 {
212 }
213 CD3DX12_PIPELINE_STATE_STREAM6(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
214 : Flags(Desc.Flags)
215 , NodeMask(Desc.NodeMask)
216 , pRootSignature(Desc.pRootSignature)
217 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
218 , CachedPSO(Desc.CachedPSO)
219 , SerializedRootSignature(CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT()))
220 {
221 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
222 }
223 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
224 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
225 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
226 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
227 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
228 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
229 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
230 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
231 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
232 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
233 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
234 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
235 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
236 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
237 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
238 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
239 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
240 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
241 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
242 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
243 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
244 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
245 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
246 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
247 CD3DX12_PIPELINE_STATE_STREAM_SERIALIZED_ROOT_SIGNATURE SerializedRootSignature;
248
249 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
250 {
251 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
252 D.Flags = this->Flags;
253 D.NodeMask = this->NodeMask;
254 D.pRootSignature = this->pRootSignature;
255 D.InputLayout = this->InputLayout;
256 D.IBStripCutValue = this->IBStripCutValue;
257 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
258 D.VS = this->VS;
259 D.GS = this->GS;
260 D.StreamOutput = this->StreamOutput;
261 D.HS = this->HS;
262 D.DS = this->DS;
263 D.PS = this->PS;
264 D.BlendState = this->BlendState;
265 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
266 D.DSVFormat = this->DSVFormat;
267 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
268 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
269 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
270 D.SampleDesc = this->SampleDesc;
271 D.SampleMask = this->SampleMask;
272 D.CachedPSO = this->CachedPSO;
273 return D;
274 }
275 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
276 {
277 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
278 D.Flags = this->Flags;
279 D.NodeMask = this->NodeMask;
280 D.pRootSignature = this->pRootSignature;
281 D.CS = this->CS;
282 D.CachedPSO = this->CachedPSO;
283 return D;
284 }
285};
286#endif
287
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
289// Use CD3DX12_PIPELINE_STATE_STREAM5 for D3D12_RASTERIZER_DESC2 when CheckFeatureSupport returns true for Options19::RasterizerDesc2Supported is true
290// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
291// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
292// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
293// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
294// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
295struct CD3DX12_PIPELINE_STATE_STREAM5
296{
297 CD3DX12_PIPELINE_STATE_STREAM5() = default;
298 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
299 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
300 : Flags(Desc.Flags)
301 , NodeMask(Desc.NodeMask)
302 , pRootSignature(Desc.pRootSignature)
303 , InputLayout(Desc.InputLayout)
304 , IBStripCutValue(Desc.IBStripCutValue)
305 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
306 , VS(Desc.VS)
307 , GS(Desc.GS)
308 , StreamOutput(Desc.StreamOutput)
309 , HS(Desc.HS)
310 , DS(Desc.DS)
311 , PS(Desc.PS)
312 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
313 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
314 , DSVFormat(Desc.DSVFormat)
315 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
316 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
317 , SampleDesc(Desc.SampleDesc)
318 , SampleMask(Desc.SampleMask)
319 , CachedPSO(Desc.CachedPSO)
320 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
321 {}
322 CD3DX12_PIPELINE_STATE_STREAM5(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
323 : Flags(Desc.Flags)
324 , NodeMask(Desc.NodeMask)
325 , pRootSignature(Desc.pRootSignature)
326 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
327 , PS(Desc.PS)
328 , AS(Desc.AS)
329 , MS(Desc.MS)
330 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
331 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
332 , DSVFormat(Desc.DSVFormat)
333 , RasterizerState(CD3DX12_RASTERIZER_DESC2(Desc.RasterizerState))
334 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
335 , SampleDesc(Desc.SampleDesc)
336 , SampleMask(Desc.SampleMask)
337 , CachedPSO(Desc.CachedPSO)
338 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
339 {}
340 CD3DX12_PIPELINE_STATE_STREAM5(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
341 : Flags(Desc.Flags)
342 , NodeMask(Desc.NodeMask)
343 , pRootSignature(Desc.pRootSignature)
344 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
345 , CachedPSO(Desc.CachedPSO)
346 {
347 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
348 }
349 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
350 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
351 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
352 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
353 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
354 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
355 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
356 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
357 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
358 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
359 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
360 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
361 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
362 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
363 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
364 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
365 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
366 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
367 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER2 RasterizerState;
368 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
369 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
370 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
371 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
372 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
373
374 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
375 {
376 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
377 D.Flags = this->Flags;
378 D.NodeMask = this->NodeMask;
379 D.pRootSignature = this->pRootSignature;
380 D.InputLayout = this->InputLayout;
381 D.IBStripCutValue = this->IBStripCutValue;
382 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
383 D.VS = this->VS;
384 D.GS = this->GS;
385 D.StreamOutput = this->StreamOutput;
386 D.HS = this->HS;
387 D.DS = this->DS;
388 D.PS = this->PS;
389 D.BlendState = this->BlendState;
390 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
391 D.DSVFormat = this->DSVFormat;
392 D.RasterizerState = CD3DX12_RASTERIZER_DESC2(D3D12_RASTERIZER_DESC2(this->RasterizerState));
393 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
394 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
395 D.SampleDesc = this->SampleDesc;
396 D.SampleMask = this->SampleMask;
397 D.CachedPSO = this->CachedPSO;
398 return D;
399 }
400 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
401 {
402 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
403 D.Flags = this->Flags;
404 D.NodeMask = this->NodeMask;
405 D.pRootSignature = this->pRootSignature;
406 D.CS = this->CS;
407 D.CachedPSO = this->CachedPSO;
408 return D;
409 }
410};
411#endif // D3D12_SDK_VERSION >= 610
412
413#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
414// Use CD3DX12_PIPELINE_STATE_STREAM4 for D3D12_RASTERIZER_DESC1 when CheckFeatureSupport returns true for Options16::DynamicDepthBiasSupported is true
415// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
416// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
417// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
418// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
419struct CD3DX12_PIPELINE_STATE_STREAM4
420{
421 CD3DX12_PIPELINE_STATE_STREAM4() = default;
422 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
423 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
424 : Flags(Desc.Flags)
425 , NodeMask(Desc.NodeMask)
426 , pRootSignature(Desc.pRootSignature)
427 , InputLayout(Desc.InputLayout)
428 , IBStripCutValue(Desc.IBStripCutValue)
429 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
430 , VS(Desc.VS)
431 , GS(Desc.GS)
432 , StreamOutput(Desc.StreamOutput)
433 , HS(Desc.HS)
434 , DS(Desc.DS)
435 , PS(Desc.PS)
436 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
437 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
438 , DSVFormat(Desc.DSVFormat)
439 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
440 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
441 , SampleDesc(Desc.SampleDesc)
442 , SampleMask(Desc.SampleMask)
443 , CachedPSO(Desc.CachedPSO)
444 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
445 {}
446 CD3DX12_PIPELINE_STATE_STREAM4(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
447 : Flags(Desc.Flags)
448 , NodeMask(Desc.NodeMask)
449 , pRootSignature(Desc.pRootSignature)
450 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
451 , PS(Desc.PS)
452 , AS(Desc.AS)
453 , MS(Desc.MS)
454 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
455 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
456 , DSVFormat(Desc.DSVFormat)
457 , RasterizerState(CD3DX12_RASTERIZER_DESC1(Desc.RasterizerState))
458 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
459 , SampleDesc(Desc.SampleDesc)
460 , SampleMask(Desc.SampleMask)
461 , CachedPSO(Desc.CachedPSO)
462 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
463 {}
464 CD3DX12_PIPELINE_STATE_STREAM4(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
465 : Flags(Desc.Flags)
466 , NodeMask(Desc.NodeMask)
467 , pRootSignature(Desc.pRootSignature)
468 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
469 , CachedPSO(Desc.CachedPSO)
470 {
471 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
472 }
473 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
474 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
475 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
476 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
477 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
478 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
479 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
480 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
481 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
482 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
483 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
484 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
485 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
486 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
487 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
488 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
489 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
490 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
491 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER1 RasterizerState;
492 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
493 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
494 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
495 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
496 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
497
498 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
499 {
500 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
501 D.Flags = this->Flags;
502 D.NodeMask = this->NodeMask;
503 D.pRootSignature = this->pRootSignature;
504 D.InputLayout = this->InputLayout;
505 D.IBStripCutValue = this->IBStripCutValue;
506 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
507 D.VS = this->VS;
508 D.GS = this->GS;
509 D.StreamOutput = this->StreamOutput;
510 D.HS = this->HS;
511 D.DS = this->DS;
512 D.PS = this->PS;
513 D.BlendState = this->BlendState;
514 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
515 D.DSVFormat = this->DSVFormat;
516 D.RasterizerState = CD3DX12_RASTERIZER_DESC1(D3D12_RASTERIZER_DESC1(this->RasterizerState));
517 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
518 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
519 D.SampleDesc = this->SampleDesc;
520 D.SampleMask = this->SampleMask;
521 D.CachedPSO = this->CachedPSO;
522 return D;
523 }
524 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
525 {
526 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
527 D.Flags = this->Flags;
528 D.NodeMask = this->NodeMask;
529 D.pRootSignature = this->pRootSignature;
530 D.CS = this->CS;
531 D.CachedPSO = this->CachedPSO;
532 return D;
533 }
534};
535#endif // D3D12_SDK_VERSION >= 608
536
537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
538// Use CD3DX12_PIPELINE_STATE_STREAM3 for D3D12_DEPTH_STENCIL_DESC2 when CheckFeatureSupport returns true for Options14::IndependentFrontAndBackStencilSupported is true
539// Use CD3DX12_PIPELINE_STATE_STREAM2 for OS Build 19041+ (where there is a new mesh shader pipeline).
540// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
541// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
542struct CD3DX12_PIPELINE_STATE_STREAM3
543{
544 CD3DX12_PIPELINE_STATE_STREAM3() = default;
545 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
546 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
547 : Flags(Desc.Flags)
548 , NodeMask(Desc.NodeMask)
549 , pRootSignature(Desc.pRootSignature)
550 , InputLayout(Desc.InputLayout)
551 , IBStripCutValue(Desc.IBStripCutValue)
552 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
553 , VS(Desc.VS)
554 , GS(Desc.GS)
555 , StreamOutput(Desc.StreamOutput)
556 , HS(Desc.HS)
557 , DS(Desc.DS)
558 , PS(Desc.PS)
559 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
560 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
561 , DSVFormat(Desc.DSVFormat)
562 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
563 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
564 , SampleDesc(Desc.SampleDesc)
565 , SampleMask(Desc.SampleMask)
566 , CachedPSO(Desc.CachedPSO)
567 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
568 {}
569 CD3DX12_PIPELINE_STATE_STREAM3(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
570 : Flags(Desc.Flags)
571 , NodeMask(Desc.NodeMask)
572 , pRootSignature(Desc.pRootSignature)
573 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
574 , PS(Desc.PS)
575 , AS(Desc.AS)
576 , MS(Desc.MS)
577 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
578 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC2(Desc.DepthStencilState))
579 , DSVFormat(Desc.DSVFormat)
580 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
581 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
582 , SampleDesc(Desc.SampleDesc)
583 , SampleMask(Desc.SampleMask)
584 , CachedPSO(Desc.CachedPSO)
585 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
586 {}
587 CD3DX12_PIPELINE_STATE_STREAM3(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
588 : Flags(Desc.Flags)
589 , NodeMask(Desc.NodeMask)
590 , pRootSignature(Desc.pRootSignature)
591 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
592 , CachedPSO(Desc.CachedPSO)
593 {
594 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(DepthStencilState).DepthEnable = false;
595 }
596 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
597 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
598 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
599 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
600 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
601 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
602 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
603 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
604 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
605 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
606 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
607 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
608 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
609 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
610 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
611 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
612 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL2 DepthStencilState;
613 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
614 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
615 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
616 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
617 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
618 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
619 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
620
621 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
622 {
623 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
624 D.Flags = this->Flags;
625 D.NodeMask = this->NodeMask;
626 D.pRootSignature = this->pRootSignature;
627 D.InputLayout = this->InputLayout;
628 D.IBStripCutValue = this->IBStripCutValue;
629 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
630 D.VS = this->VS;
631 D.GS = this->GS;
632 D.StreamOutput = this->StreamOutput;
633 D.HS = this->HS;
634 D.DS = this->DS;
635 D.PS = this->PS;
636 D.BlendState = this->BlendState;
637 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEPTH_STENCIL_DESC2(this->DepthStencilState));
638 D.DSVFormat = this->DSVFormat;
639 D.RasterizerState = this->RasterizerState;
640 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
641 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
642 D.SampleDesc = this->SampleDesc;
643 D.SampleMask = this->SampleMask;
644 D.CachedPSO = this->CachedPSO;
645 return D;
646 }
647 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
648 {
649 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
650 D.Flags = this->Flags;
651 D.NodeMask = this->NodeMask;
652 D.pRootSignature = this->pRootSignature;
653 D.CS = this->CS;
654 D.CachedPSO = this->CachedPSO;
655 return D;
656 }
657};
658#endif // D3D12_SDK_VERSION >= 606
659
660// CD3DX12_PIPELINE_STATE_STREAM2 Works on OS Build 19041+ (where there is a new mesh shader pipeline).
661// Use CD3DX12_PIPELINE_STATE_STREAM1 for OS Build 16299+ (where there is a new view instancing subobject).
662// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
663struct CD3DX12_PIPELINE_STATE_STREAM2
664{
665 CD3DX12_PIPELINE_STATE_STREAM2() = default;
666 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
667 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
668 : Flags(Desc.Flags)
669 , NodeMask(Desc.NodeMask)
670 , pRootSignature(Desc.pRootSignature)
671 , InputLayout(Desc.InputLayout)
672 , IBStripCutValue(Desc.IBStripCutValue)
673 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
674 , VS(Desc.VS)
675 , GS(Desc.GS)
676 , StreamOutput(Desc.StreamOutput)
677 , HS(Desc.HS)
678 , DS(Desc.DS)
679 , PS(Desc.PS)
680 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
681 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
682 , DSVFormat(Desc.DSVFormat)
683 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
684 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
685 , SampleDesc(Desc.SampleDesc)
686 , SampleMask(Desc.SampleMask)
687 , CachedPSO(Desc.CachedPSO)
688 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
689 {}
690 CD3DX12_PIPELINE_STATE_STREAM2(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
691 : Flags(Desc.Flags)
692 , NodeMask(Desc.NodeMask)
693 , pRootSignature(Desc.pRootSignature)
694 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
695 , PS(Desc.PS)
696 , AS(Desc.AS)
697 , MS(Desc.MS)
698 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
699 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
700 , DSVFormat(Desc.DSVFormat)
701 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
702 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
703 , SampleDesc(Desc.SampleDesc)
704 , SampleMask(Desc.SampleMask)
705 , CachedPSO(Desc.CachedPSO)
706 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
707 {}
708 CD3DX12_PIPELINE_STATE_STREAM2(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
709 : Flags(Desc.Flags)
710 , NodeMask(Desc.NodeMask)
711 , pRootSignature(Desc.pRootSignature)
712 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
713 , CachedPSO(Desc.CachedPSO)
714 {
715 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
716 }
717 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
718 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
719 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
720 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
721 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
722 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
723 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
724 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
725 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
726 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
727 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
728 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
729 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
730 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
731 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
732 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
733 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
734 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
735 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
736 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
737 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
738 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
739 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
740 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
741 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
742 {
743 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
744 D.Flags = this->Flags;
745 D.NodeMask = this->NodeMask;
746 D.pRootSignature = this->pRootSignature;
747 D.InputLayout = this->InputLayout;
748 D.IBStripCutValue = this->IBStripCutValue;
749 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
750 D.VS = this->VS;
751 D.GS = this->GS;
752 D.StreamOutput = this->StreamOutput;
753 D.HS = this->HS;
754 D.DS = this->DS;
755 D.PS = this->PS;
756 D.BlendState = this->BlendState;
757 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
758 D.DSVFormat = this->DSVFormat;
759 D.RasterizerState = this->RasterizerState;
760 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
761 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
762 D.SampleDesc = this->SampleDesc;
763 D.SampleMask = this->SampleMask;
764 D.CachedPSO = this->CachedPSO;
765 return D;
766 }
767 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
768 {
769 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
770 D.Flags = this->Flags;
771 D.NodeMask = this->NodeMask;
772 D.pRootSignature = this->pRootSignature;
773 D.CS = this->CS;
774 D.CachedPSO = this->CachedPSO;
775 return D;
776 }
777};
778
779// CD3DX12_PIPELINE_STATE_STREAM1 Works on OS Build 16299+ (where there is a new view instancing subobject).
780// Use CD3DX12_PIPELINE_STATE_STREAM for OS Build 15063+ support.
781struct CD3DX12_PIPELINE_STATE_STREAM1
782{
783 CD3DX12_PIPELINE_STATE_STREAM1() = default;
784 // Mesh and amplification shaders must be set manually, since they do not have representation in D3D12_GRAPHICS_PIPELINE_STATE_DESC
785 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
786 : Flags(Desc.Flags)
787 , NodeMask(Desc.NodeMask)
788 , pRootSignature(Desc.pRootSignature)
789 , InputLayout(Desc.InputLayout)
790 , IBStripCutValue(Desc.IBStripCutValue)
791 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
792 , VS(Desc.VS)
793 , GS(Desc.GS)
794 , StreamOutput(Desc.StreamOutput)
795 , HS(Desc.HS)
796 , DS(Desc.DS)
797 , PS(Desc.PS)
798 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
799 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
800 , DSVFormat(Desc.DSVFormat)
801 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
802 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
803 , SampleDesc(Desc.SampleDesc)
804 , SampleMask(Desc.SampleMask)
805 , CachedPSO(Desc.CachedPSO)
806 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
807 {}
808 CD3DX12_PIPELINE_STATE_STREAM1(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
809 : Flags(Desc.Flags)
810 , NodeMask(Desc.NodeMask)
811 , pRootSignature(Desc.pRootSignature)
812 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
813 , PS(Desc.PS)
814 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
815 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
816 , DSVFormat(Desc.DSVFormat)
817 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
818 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
819 , SampleDesc(Desc.SampleDesc)
820 , SampleMask(Desc.SampleMask)
821 , CachedPSO(Desc.CachedPSO)
822 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
823 {}
824 CD3DX12_PIPELINE_STATE_STREAM1(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
825 : Flags(Desc.Flags)
826 , NodeMask(Desc.NodeMask)
827 , pRootSignature(Desc.pRootSignature)
828 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
829 , CachedPSO(Desc.CachedPSO)
830 {
831 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(DepthStencilState).DepthEnable = false;
832 }
833 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
834 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
835 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
836 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
837 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
838 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
839 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
840 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
841 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
842 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
843 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
844 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
845 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
846 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
847 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
848 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
849 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
850 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
851 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
852 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
853 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
854 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
855 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
856 {
857 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
858 D.Flags = this->Flags;
859 D.NodeMask = this->NodeMask;
860 D.pRootSignature = this->pRootSignature;
861 D.InputLayout = this->InputLayout;
862 D.IBStripCutValue = this->IBStripCutValue;
863 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
864 D.VS = this->VS;
865 D.GS = this->GS;
866 D.StreamOutput = this->StreamOutput;
867 D.HS = this->HS;
868 D.DS = this->DS;
869 D.PS = this->PS;
870 D.BlendState = this->BlendState;
871 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
872 D.DSVFormat = this->DSVFormat;
873 D.RasterizerState = this->RasterizerState;
874 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
875 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
876 D.SampleDesc = this->SampleDesc;
877 D.SampleMask = this->SampleMask;
878 D.CachedPSO = this->CachedPSO;
879 return D;
880 }
881 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
882 {
883 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
884 D.Flags = this->Flags;
885 D.NodeMask = this->NodeMask;
886 D.pRootSignature = this->pRootSignature;
887 D.CS = this->CS;
888 D.CachedPSO = this->CachedPSO;
889 return D;
890 }
891};
892
893
894struct CD3DX12_PIPELINE_MESH_STATE_STREAM
895{
896 CD3DX12_PIPELINE_MESH_STATE_STREAM() = default;
897 CD3DX12_PIPELINE_MESH_STATE_STREAM(const D3DX12_MESH_SHADER_PIPELINE_STATE_DESC& Desc) noexcept
898 : Flags(Desc.Flags)
899 , NodeMask(Desc.NodeMask)
900 , pRootSignature(Desc.pRootSignature)
901 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
902 , PS(Desc.PS)
903 , AS(Desc.AS)
904 , MS(Desc.MS)
905 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
906 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
907 , DSVFormat(Desc.DSVFormat)
908 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
909 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
910 , SampleDesc(Desc.SampleDesc)
911 , SampleMask(Desc.SampleMask)
912 , CachedPSO(Desc.CachedPSO)
913 , ViewInstancingDesc(CD3DX12_VIEW_INSTANCING_DESC(CD3DX12_DEFAULT()))
914 {}
915 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
916 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
917 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
918 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
919 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
920 CD3DX12_PIPELINE_STATE_STREAM_AS AS;
921 CD3DX12_PIPELINE_STATE_STREAM_MS MS;
922 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
923 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
924 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
925 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
926 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
927 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
928 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
929 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
930 CD3DX12_PIPELINE_STATE_STREAM_VIEW_INSTANCING ViewInstancingDesc;
931 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC MeshShaderDescV0() const noexcept
932 {
933 D3DX12_MESH_SHADER_PIPELINE_STATE_DESC D;
934 D.Flags = this->Flags;
935 D.NodeMask = this->NodeMask;
936 D.pRootSignature = this->pRootSignature;
937 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
938 D.PS = this->PS;
939 D.AS = this->AS;
940 D.MS = this->MS;
941 D.BlendState = this->BlendState;
942 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
943 D.DSVFormat = this->DSVFormat;
944 D.RasterizerState = this->RasterizerState;
945 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
946 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
947 D.SampleDesc = this->SampleDesc;
948 D.SampleMask = this->SampleMask;
949 D.CachedPSO = this->CachedPSO;
950 return D;
951 }
952};
953
954// CD3DX12_PIPELINE_STATE_STREAM works on OS Build 15063+ but does not support new subobject(s) added in OS Build 16299+.
955// See CD3DX12_PIPELINE_STATE_STREAM1 for instance.
956struct CD3DX12_PIPELINE_STATE_STREAM
957{
958 CD3DX12_PIPELINE_STATE_STREAM() = default;
959 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_GRAPHICS_PIPELINE_STATE_DESC& Desc) noexcept
960 : Flags(Desc.Flags)
961 , NodeMask(Desc.NodeMask)
962 , pRootSignature(Desc.pRootSignature)
963 , InputLayout(Desc.InputLayout)
964 , IBStripCutValue(Desc.IBStripCutValue)
965 , PrimitiveTopologyType(Desc.PrimitiveTopologyType)
966 , VS(Desc.VS)
967 , GS(Desc.GS)
968 , StreamOutput(Desc.StreamOutput)
969 , HS(Desc.HS)
970 , DS(Desc.DS)
971 , PS(Desc.PS)
972 , BlendState(CD3DX12_BLEND_DESC(Desc.BlendState))
973 , DepthStencilState(CD3DX12_DEPTH_STENCIL_DESC1(Desc.DepthStencilState))
974 , DSVFormat(Desc.DSVFormat)
975 , RasterizerState(CD3DX12_RASTERIZER_DESC(Desc.RasterizerState))
976 , RTVFormats(CD3DX12_RT_FORMAT_ARRAY(Desc.RTVFormats, Desc.NumRenderTargets))
977 , SampleDesc(Desc.SampleDesc)
978 , SampleMask(Desc.SampleMask)
979 , CachedPSO(Desc.CachedPSO)
980 {}
981 CD3DX12_PIPELINE_STATE_STREAM(const D3D12_COMPUTE_PIPELINE_STATE_DESC& Desc) noexcept
982 : Flags(Desc.Flags)
983 , NodeMask(Desc.NodeMask)
984 , pRootSignature(Desc.pRootSignature)
985 , CS(CD3DX12_SHADER_BYTECODE(Desc.CS))
986 , CachedPSO(Desc.CachedPSO)
987 {}
988 CD3DX12_PIPELINE_STATE_STREAM_FLAGS Flags;
989 CD3DX12_PIPELINE_STATE_STREAM_NODE_MASK NodeMask;
990 CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
991 CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
992 CD3DX12_PIPELINE_STATE_STREAM_IB_STRIP_CUT_VALUE IBStripCutValue;
993 CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
994 CD3DX12_PIPELINE_STATE_STREAM_VS VS;
995 CD3DX12_PIPELINE_STATE_STREAM_GS GS;
996 CD3DX12_PIPELINE_STATE_STREAM_STREAM_OUTPUT StreamOutput;
997 CD3DX12_PIPELINE_STATE_STREAM_HS HS;
998 CD3DX12_PIPELINE_STATE_STREAM_DS DS;
999 CD3DX12_PIPELINE_STATE_STREAM_PS PS;
1000 CD3DX12_PIPELINE_STATE_STREAM_CS CS;
1001 CD3DX12_PIPELINE_STATE_STREAM_BLEND_DESC BlendState;
1002 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL1 DepthStencilState;
1003 CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
1004 CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER RasterizerState;
1005 CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
1006 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_DESC SampleDesc;
1007 CD3DX12_PIPELINE_STATE_STREAM_SAMPLE_MASK SampleMask;
1008 CD3DX12_PIPELINE_STATE_STREAM_CACHED_PSO CachedPSO;
1009 D3D12_GRAPHICS_PIPELINE_STATE_DESC GraphicsDescV0() const noexcept
1010 {
1011 D3D12_GRAPHICS_PIPELINE_STATE_DESC D;
1012 D.Flags = this->Flags;
1013 D.NodeMask = this->NodeMask;
1014 D.pRootSignature = this->pRootSignature;
1015 D.InputLayout = this->InputLayout;
1016 D.IBStripCutValue = this->IBStripCutValue;
1017 D.PrimitiveTopologyType = this->PrimitiveTopologyType;
1018 D.VS = this->VS;
1019 D.GS = this->GS;
1020 D.StreamOutput = this->StreamOutput;
1021 D.HS = this->HS;
1022 D.DS = this->DS;
1023 D.PS = this->PS;
1024 D.BlendState = this->BlendState;
1025 D.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEPTH_STENCIL_DESC1(this->DepthStencilState));
1026 D.DSVFormat = this->DSVFormat;
1027 D.RasterizerState = this->RasterizerState;
1028 D.NumRenderTargets = D3D12_RT_FORMAT_ARRAY(this->RTVFormats).NumRenderTargets;
1029 memcpy(D.RTVFormats, D3D12_RT_FORMAT_ARRAY(this->RTVFormats).RTFormats, sizeof(D.RTVFormats));
1030 D.SampleDesc = this->SampleDesc;
1031 D.SampleMask = this->SampleMask;
1032 D.CachedPSO = this->CachedPSO;
1033 return D;
1034 }
1035 D3D12_COMPUTE_PIPELINE_STATE_DESC ComputeDescV0() const noexcept
1036 {
1037 D3D12_COMPUTE_PIPELINE_STATE_DESC D;
1038 D.Flags = this->Flags;
1039 D.NodeMask = this->NodeMask;
1040 D.pRootSignature = this->pRootSignature;
1041 D.CS = this->CS;
1042 D.CachedPSO = this->CachedPSO;
1043 return D;
1044 }
1045};
1046
1047
1048struct CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1049{
1050 CD3DX12_PIPELINE_STATE_STREAM2 PipelineStream;
1051 CD3DX12_PIPELINE_STATE_STREAM2_PARSE_HELPER() noexcept
1052 : SeenDSS(false)
1053 {
1054 // Adjust defaults to account for absent members.
1055 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1056
1057 // Depth disabled if no DSV format specified.
1058 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1059 }
1060
1061 // ID3DX12PipelineParserCallbacks
1062 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1063 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1064 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1065 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1066 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1067 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1068 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1069 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1070 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1071 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1072 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1073 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1074 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1075 void ASCb(const D3D12_SHADER_BYTECODE& AS) override {PipelineStream.AS = AS;}
1076 void MSCb(const D3D12_SHADER_BYTECODE& MS) override {PipelineStream.MS = MS;}
1077 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1078 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1079 {
1080 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1081 SeenDSS = true;
1082 }
1083 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1084 {
1085 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1086 SeenDSS = true;
1087 }
1088 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1089 {
1090 PipelineStream.DSVFormat = DSVFormat;
1091 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1092 {
1093 // Re-enable depth for the default state.
1094 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1095 }
1096 }
1097 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1098 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1099 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1100 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1101 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1102 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1103
1104private:
1105 bool SeenDSS;
1106};
1107
1108#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1109struct CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1110{
1111 CD3DX12_PIPELINE_STATE_STREAM3 PipelineStream;
1112 CD3DX12_PIPELINE_STATE_STREAM3_PARSE_HELPER() noexcept
1113 : SeenDSS(false)
1114 {
1115 // Adjust defaults to account for absent members.
1116 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1117
1118 // Depth disabled if no DSV format specified.
1119 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1120 }
1121
1122 // ID3DX12PipelineParserCallbacks
1123 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1124 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1125 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1126 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1127 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1128 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1129 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1130 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1131 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1132 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1133 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1134 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1135 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1136 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1137 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1138 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1139 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1140 {
1141 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1142 SeenDSS = true;
1143 }
1144 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1145 {
1146 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1147 SeenDSS = true;
1148 }
1149 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1150 {
1151 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1152 SeenDSS = true;
1153 }
1154 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1155 {
1156 PipelineStream.DSVFormat = DSVFormat;
1157 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1158 {
1159 // Re-enable depth for the default state.
1160 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1161 }
1162 }
1163 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState); }
1164 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1165 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1166 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1167 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1168 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1169
1170private:
1171 bool SeenDSS;
1172};
1173#endif // D3D12_SDK_VERSION >= 606
1174
1175#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1176struct CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1177{
1178 CD3DX12_PIPELINE_STATE_STREAM4 PipelineStream;
1179 CD3DX12_PIPELINE_STATE_STREAM4_PARSE_HELPER() noexcept
1180 : SeenDSS(false)
1181 {
1182 // Adjust defaults to account for absent members.
1183 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1184
1185 // Depth disabled if no DSV format specified.
1186 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1187 }
1188
1189 // ID3DX12PipelineParserCallbacks
1190 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1191 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1192 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1193 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1194 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1195 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1196 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1197 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1198 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1199 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1200 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1201 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1202 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1203 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1204 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1205 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1206 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1207 {
1208 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1209 SeenDSS = true;
1210 }
1211 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1212 {
1213 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1214 SeenDSS = true;
1215 }
1216 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1217 {
1218 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1219 SeenDSS = true;
1220 }
1221 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1222 {
1223 PipelineStream.DSVFormat = DSVFormat;
1224 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1225 {
1226 // Re-enable depth for the default state.
1227 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1228 }
1229 }
1230 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1231 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC1(RasterizerState); }
1232 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1233 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1234 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1235 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1236 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1237
1238private:
1239 bool SeenDSS;
1240};
1241#endif // D3D12_SDK_VERSION >= 608
1242
1243#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1244// This SDK 613 version has better primitive topology default handling than the v610 equivalent below.
1245struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1246{
1247 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1248 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1249 : SeenDSS(false),
1250 SeenMS(false),
1251 SeenTopology(false)
1252 {
1253 // Adjust defaults to account for absent members.
1254 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1255
1256 // Depth disabled if no DSV format specified.
1257 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1258 }
1259
1260 // ID3DX12PipelineParserCallbacks
1261 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1262 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1263 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1264 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1265 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1266 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1267 {
1268 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1269 SeenTopology = true;
1270 }
1271 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1272 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1273 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1274 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1275 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1276 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1277 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1278 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1279 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1280 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1281 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1282 {
1283 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1284 SeenDSS = true;
1285 }
1286 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1287 {
1288 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1289 SeenDSS = true;
1290 }
1291 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1292 {
1293 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1294 SeenDSS = true;
1295 }
1296 void DSVFormatCb(DXGI_FORMAT DSVFormat) override {PipelineStream.DSVFormat = DSVFormat;}
1297 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1298 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1299 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1300 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1301 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1302 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1303 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1304 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1305 void FinalizeCb() override
1306 {
1307 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1308 {
1309 // Re-enable depth for the default state.
1310 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1311 }
1312 if (!SeenTopology && SeenMS)
1313 {
1314 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1315 }
1316 }
1317
1318private:
1319 bool SeenDSS;
1320 bool SeenMS;
1321 bool SeenTopology;
1322};
1323#elif defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1324struct CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1325{
1326 CD3DX12_PIPELINE_STATE_STREAM5 PipelineStream;
1327 CD3DX12_PIPELINE_STATE_STREAM5_PARSE_HELPER() noexcept
1328 : SeenDSS(false)
1329 {
1330 // Adjust defaults to account for absent members.
1331 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1332
1333 // Depth disabled if no DSV format specified.
1334 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1335 }
1336
1337 // ID3DX12PipelineParserCallbacks
1338 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1339 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1340 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1341 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1342 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1343 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override { PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType; }
1344 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1345 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1346 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1347 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1348 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1349 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1350 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1351 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1352 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; }
1353 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1354 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1355 {
1356 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1357 SeenDSS = true;
1358 }
1359 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1360 {
1361 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1362 SeenDSS = true;
1363 }
1364 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1365 {
1366 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1367 SeenDSS = true;
1368 }
1369 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1370 {
1371 PipelineStream.DSVFormat = DSVFormat;
1372 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1373 {
1374 // Re-enable depth for the default state.
1375 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1376 }
1377 }
1378 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1379 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1380 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1381 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1382 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1383 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1384 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1385 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1386
1387private:
1388 bool SeenDSS;
1389};
1390#endif // D3D12_SDK_VERSION >= 610
1391
1392#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1393struct CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1394{
1395 CD3DX12_PIPELINE_STATE_STREAM6 PipelineStream;
1396 CD3DX12_PIPELINE_STATE_STREAM6_PARSE_HELPER() noexcept
1397 : SeenDSS(false),
1398 SeenMS(false),
1399 SeenTopology(false)
1400 {
1401 // Adjust defaults to account for absent members.
1402 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1403
1404 // Depth disabled if no DSV format specified.
1405 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = false;
1406 }
1407
1408 // ID3DX12PipelineParserCallbacks
1409 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override { PipelineStream.Flags = Flags; }
1410 void NodeMaskCb(UINT NodeMask) override { PipelineStream.NodeMask = NodeMask; }
1411 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override { PipelineStream.pRootSignature = pRootSignature; }
1412 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override { PipelineStream.InputLayout = InputLayout; }
1413 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override { PipelineStream.IBStripCutValue = IBStripCutValue; }
1414 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override
1415 {
1416 PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;
1417 SeenTopology = true;
1418 }
1419 void VSCb(const D3D12_SHADER_BYTECODE& VS) override { PipelineStream.VS = VS; }
1420 void GSCb(const D3D12_SHADER_BYTECODE& GS) override { PipelineStream.GS = GS; }
1421 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override { PipelineStream.StreamOutput = StreamOutput; }
1422 void HSCb(const D3D12_SHADER_BYTECODE& HS) override { PipelineStream.HS = HS; }
1423 void DSCb(const D3D12_SHADER_BYTECODE& DS) override { PipelineStream.DS = DS; }
1424 void PSCb(const D3D12_SHADER_BYTECODE& PS) override { PipelineStream.PS = PS; }
1425 void CSCb(const D3D12_SHADER_BYTECODE& CS) override { PipelineStream.CS = CS; }
1426 void ASCb(const D3D12_SHADER_BYTECODE& AS) override { PipelineStream.AS = AS; }
1427 void MSCb(const D3D12_SHADER_BYTECODE& MS) override { PipelineStream.MS = MS; SeenMS = true; }
1428 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override { PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState); }
1429 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1430 {
1431 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1432 SeenDSS = true;
1433 }
1434 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1435 {
1436 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1437 SeenDSS = true;
1438 }
1439 void DepthStencilState2Cb(const D3D12_DEPTH_STENCIL_DESC2& DepthStencilState) override
1440 {
1441 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC2(DepthStencilState);
1442 SeenDSS = true;
1443 }
1444 void DSVFormatCb(DXGI_FORMAT DSVFormat) override { PipelineStream.DSVFormat = DSVFormat; }
1445 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1446 void RasterizerState1Cb(const D3D12_RASTERIZER_DESC1& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1447 void RasterizerState2Cb(const D3D12_RASTERIZER_DESC2& RasterizerState) override { PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC2(RasterizerState); }
1448 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override { PipelineStream.RTVFormats = RTVFormats; }
1449 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override { PipelineStream.SampleDesc = SampleDesc; }
1450 void SampleMaskCb(UINT SampleMask) override { PipelineStream.SampleMask = SampleMask; }
1451 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override { PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc); }
1452 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override { PipelineStream.CachedPSO = CachedPSO; }
1453 void FinalizeCb() override
1454 {
1455 if (!SeenDSS && PipelineStream.DSVFormat != DXGI_FORMAT_UNKNOWN)
1456 {
1457 // Re-enable depth for the default state.
1458 static_cast<D3D12_DEPTH_STENCIL_DESC2&>(PipelineStream.DepthStencilState).DepthEnable = true;
1459 }
1460 if (!SeenTopology && SeenMS)
1461 {
1462 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED;
1463 }
1464 }
1465 void SerializedRootSignatureCb(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC& SerializedRootSignature) override { PipelineStream.SerializedRootSignature = CD3DX12_SERIALIZED_ROOT_SIGNATURE_DESC(SerializedRootSignature); }
1466
1467private:
1468 bool SeenDSS;
1469 bool SeenMS;
1470 bool SeenTopology;
1471};
1472#endif // D3D12_SDK_VERSION >= 618
1473
1474struct CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER : public ID3DX12PipelineParserCallbacks
1475{
1476 CD3DX12_PIPELINE_STATE_STREAM1 PipelineStream;
1477 CD3DX12_PIPELINE_STATE_STREAM_PARSE_HELPER() noexcept
1478 : SeenDSS(false)
1479 {
1480 // Adjust defaults to account for absent members.
1481 PipelineStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
1482
1483 // Depth disabled if no DSV format specified.
1484 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = false;
1485 }
1486
1487 // ID3DX12PipelineParserCallbacks
1488 void FlagsCb(D3D12_PIPELINE_STATE_FLAGS Flags) override {PipelineStream.Flags = Flags;}
1489 void NodeMaskCb(UINT NodeMask) override {PipelineStream.NodeMask = NodeMask;}
1490 void RootSignatureCb(ID3D12RootSignature* pRootSignature) override {PipelineStream.pRootSignature = pRootSignature;}
1491 void InputLayoutCb(const D3D12_INPUT_LAYOUT_DESC& InputLayout) override {PipelineStream.InputLayout = InputLayout;}
1492 void IBStripCutValueCb(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue) override {PipelineStream.IBStripCutValue = IBStripCutValue;}
1493 void PrimitiveTopologyTypeCb(D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType) override {PipelineStream.PrimitiveTopologyType = PrimitiveTopologyType;}
1494 void VSCb(const D3D12_SHADER_BYTECODE& VS) override {PipelineStream.VS = VS;}
1495 void GSCb(const D3D12_SHADER_BYTECODE& GS) override {PipelineStream.GS = GS;}
1496 void StreamOutputCb(const D3D12_STREAM_OUTPUT_DESC& StreamOutput) override {PipelineStream.StreamOutput = StreamOutput;}
1497 void HSCb(const D3D12_SHADER_BYTECODE& HS) override {PipelineStream.HS = HS;}
1498 void DSCb(const D3D12_SHADER_BYTECODE& DS) override {PipelineStream.DS = DS;}
1499 void PSCb(const D3D12_SHADER_BYTECODE& PS) override {PipelineStream.PS = PS;}
1500 void CSCb(const D3D12_SHADER_BYTECODE& CS) override {PipelineStream.CS = CS;}
1501 void BlendStateCb(const D3D12_BLEND_DESC& BlendState) override {PipelineStream.BlendState = CD3DX12_BLEND_DESC(BlendState);}
1502 void DepthStencilStateCb(const D3D12_DEPTH_STENCIL_DESC& DepthStencilState) override
1503 {
1504 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1505 SeenDSS = true;
1506 }
1507 void DepthStencilState1Cb(const D3D12_DEPTH_STENCIL_DESC1& DepthStencilState) override
1508 {
1509 PipelineStream.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC1(DepthStencilState);
1510 SeenDSS = true;
1511 }
1512 void DSVFormatCb(DXGI_FORMAT DSVFormat) override
1513 {
1514 PipelineStream.DSVFormat = DSVFormat;
1515 if (!SeenDSS && DSVFormat != DXGI_FORMAT_UNKNOWN)
1516 {
1517 // Re-enable depth for the default state.
1518 static_cast<D3D12_DEPTH_STENCIL_DESC1&>(PipelineStream.DepthStencilState).DepthEnable = true;
1519 }
1520 }
1521 void RasterizerStateCb(const D3D12_RASTERIZER_DESC& RasterizerState) override {PipelineStream.RasterizerState = CD3DX12_RASTERIZER_DESC(RasterizerState);}
1522 void RTVFormatsCb(const D3D12_RT_FORMAT_ARRAY& RTVFormats) override {PipelineStream.RTVFormats = RTVFormats;}
1523 void SampleDescCb(const DXGI_SAMPLE_DESC& SampleDesc) override {PipelineStream.SampleDesc = SampleDesc;}
1524 void SampleMaskCb(UINT SampleMask) override {PipelineStream.SampleMask = SampleMask;}
1525 void ViewInstancingCb(const D3D12_VIEW_INSTANCING_DESC& ViewInstancingDesc) override {PipelineStream.ViewInstancingDesc = CD3DX12_VIEW_INSTANCING_DESC(ViewInstancingDesc);}
1526 void CachedPSOCb(const D3D12_CACHED_PIPELINE_STATE& CachedPSO) override {PipelineStream.CachedPSO = CachedPSO;}
1527
1528private:
1529 bool SeenDSS;
1530};
1531
1532
1533inline D3D12_PIPELINE_STATE_SUBOBJECT_TYPE D3DX12GetBaseSubobjectType(D3D12_PIPELINE_STATE_SUBOBJECT_TYPE SubobjectType) noexcept
1534{
1535 switch (SubobjectType)
1536 {
1537 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1538 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1539#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1540 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1541 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1542#endif
1543#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1544 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1545 return D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER;
1546#endif
1547 default:
1548 return SubobjectType;
1549 }
1550}
1551
1552inline HRESULT D3DX12ParsePipelineStream(const D3D12_PIPELINE_STATE_STREAM_DESC& Desc, ID3DX12PipelineParserCallbacks* pCallbacks)
1553{
1554 if (pCallbacks == nullptr)
1555 {
1556 return E_INVALIDARG;
1557 }
1558
1559 if (Desc.SizeInBytes == 0 || Desc.pPipelineStateSubobjectStream == nullptr)
1560 {
1561 pCallbacks->ErrorBadInputParameter(1); // first parameter issue
1562 return E_INVALIDARG;
1563 }
1564
1565 bool SubobjectSeen[D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID] = {};
1566 for (SIZE_T CurOffset = 0, SizeOfSubobject = 0; CurOffset < Desc.SizeInBytes; CurOffset += SizeOfSubobject)
1567 {
1568 BYTE* pStream = static_cast<BYTE*>(Desc.pPipelineStateSubobjectStream)+CurOffset;
1569 auto SubobjectType = *reinterpret_cast<D3D12_PIPELINE_STATE_SUBOBJECT_TYPE*>(pStream);
1570 if (SubobjectType < 0 || SubobjectType >= D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID)
1571 {
1572 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1573 return E_INVALIDARG;
1574 }
1575 if (SubobjectSeen[D3DX12GetBaseSubobjectType(SubobjectType)])
1576 {
1577 pCallbacks->ErrorDuplicateSubobject(SubobjectType);
1578 return E_INVALIDARG; // disallow subobject duplicates in a stream
1579 }
1580 SubobjectSeen[SubobjectType] = true;
1581 switch (SubobjectType)
1582 {
1583 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE:
1584 pCallbacks->RootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature)*>(pStream));
1585 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::pRootSignature);
1586 break;
1587 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS:
1588 pCallbacks->VSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::VS)*>(pStream));
1589 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::VS);
1590 break;
1591 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS:
1592 pCallbacks->PSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PS)*>(pStream));
1593 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PS);
1594 break;
1595 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS:
1596 pCallbacks->DSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DS)*>(pStream));
1597 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DS);
1598 break;
1599 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS:
1600 pCallbacks->HSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::HS)*>(pStream));
1601 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::HS);
1602 break;
1603 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS:
1604 pCallbacks->GSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::GS)*>(pStream));
1605 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::GS);
1606 break;
1607 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS:
1608 pCallbacks->CSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CS)*>(pStream));
1609 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CS);
1610 break;
1611 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS:
1612 pCallbacks->ASCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::AS)*>(pStream));
1613 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::AS);
1614 break;
1615 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS:
1616 pCallbacks->MSCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM2::MS)*>(pStream));
1617 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM2::MS);
1618 break;
1619 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT:
1620 pCallbacks->StreamOutputCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput)*>(pStream));
1621 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::StreamOutput);
1622 break;
1623 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND:
1624 pCallbacks->BlendStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::BlendState)*>(pStream));
1625 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::BlendState);
1626 break;
1627 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK:
1628 pCallbacks->SampleMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleMask)*>(pStream));
1629 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleMask);
1630 break;
1631 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER:
1632 pCallbacks->RasterizerStateCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState)*>(pStream));
1633 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RasterizerState);
1634 break;
1635#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 608)
1636 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1:
1637 pCallbacks->RasterizerState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState)*>(pStream));
1638 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM4::RasterizerState);
1639 break;
1640#endif
1641#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 610)
1642 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2:
1643 pCallbacks->RasterizerState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState)*>(pStream));
1644 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM5::RasterizerState);
1645 break;
1646#endif
1647 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL:
1648 pCallbacks->DepthStencilStateCb(*reinterpret_cast<CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL*>(pStream));
1649 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL);
1650 break;
1651 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1:
1652 pCallbacks->DepthStencilState1Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState)*>(pStream));
1653 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DepthStencilState);
1654 break;
1655#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
1656 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2:
1657 pCallbacks->DepthStencilState2Cb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState)*>(pStream));
1658 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM3::DepthStencilState);
1659 break;
1660#endif
1661 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT:
1662 pCallbacks->InputLayoutCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::InputLayout)*>(pStream));
1663 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::InputLayout);
1664 break;
1665 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE:
1666 pCallbacks->IBStripCutValueCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue)*>(pStream));
1667 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::IBStripCutValue);
1668 break;
1669 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY:
1670 pCallbacks->PrimitiveTopologyTypeCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType)*>(pStream));
1671 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::PrimitiveTopologyType);
1672 break;
1673 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS:
1674 pCallbacks->RTVFormatsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats)*>(pStream));
1675 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::RTVFormats);
1676 break;
1677 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT:
1678 pCallbacks->DSVFormatCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat)*>(pStream));
1679 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::DSVFormat);
1680 break;
1681 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC:
1682 pCallbacks->SampleDescCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc)*>(pStream));
1683 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::SampleDesc);
1684 break;
1685 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK:
1686 pCallbacks->NodeMaskCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::NodeMask)*>(pStream));
1687 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::NodeMask);
1688 break;
1689 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO:
1690 pCallbacks->CachedPSOCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO)*>(pStream));
1691 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::CachedPSO);
1692 break;
1693 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS:
1694 pCallbacks->FlagsCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM::Flags)*>(pStream));
1695 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM::Flags);
1696 break;
1697 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING:
1698 pCallbacks->ViewInstancingCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc)*>(pStream));
1699 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM1::ViewInstancingDesc);
1700 break;
1701#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1702 case D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SERIALIZED_ROOT_SIGNATURE:
1703 pCallbacks->SerializedRootSignatureCb(*reinterpret_cast<decltype(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature)*>(pStream));
1704 SizeOfSubobject = sizeof(CD3DX12_PIPELINE_STATE_STREAM6::SerializedRootSignature);
1705 break;
1706#endif
1707 default:
1708 pCallbacks->ErrorUnknownSubobject(SubobjectType);
1709 return E_INVALIDARG;
1710 }
1711 }
1712#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 613)
1713 pCallbacks->FinalizeCb();
1714#endif
1715
1716 return S_OK;
1717}
1718
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h
new file mode 100644
index 0000000..66c7600
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_property_format_table.h
@@ -0,0 +1,128 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7#ifndef __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
8#define __D3D12_PROPERTY_LAYOUT_FORMAT_TABLE_H__
9#include "d3d12.h"
10#define MAP_ALIGN_REQUIREMENT 16 // Map is required to return 16-byte aligned addresses
11
12struct D3D12_PROPERTY_LAYOUT_FORMAT_TABLE
13{
14public:
15 // ----------------------------------------------------------------------------
16 // Information describing everything about a D3D Resource Format
17 // ----------------------------------------------------------------------------
18 typedef struct FORMAT_DETAIL
19 {
20 DXGI_FORMAT DXGIFormat;
21 DXGI_FORMAT ParentFormat;
22 const DXGI_FORMAT* pDefaultFormatCastSet; // This is dependent on FL/driver version, but is here to save a lot of space
23 UINT8 BitsPerComponent[4]; // only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
24 UINT8 BitsPerUnit;
25 BYTE SRGBFormat : 1;
26 UINT WidthAlignment : 4; // number of texels to align to in a mip level.
27 UINT HeightAlignment : 4; // Top level dimensions must be a multiple of these
28 UINT DepthAlignment : 1; // values.
29 D3D_FORMAT_LAYOUT Layout : 1;
30 D3D_FORMAT_TYPE_LEVEL TypeLevel : 2;
31 D3D_FORMAT_COMPONENT_NAME ComponentName0 : 3; // RED ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
32 D3D_FORMAT_COMPONENT_NAME ComponentName1 : 3; // GREEN ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
33 D3D_FORMAT_COMPONENT_NAME ComponentName2 : 3; // BLUE ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
34 D3D_FORMAT_COMPONENT_NAME ComponentName3 : 3; // ALPHA ... only used for D3DFTL_PARTIAL_TYPE or FULL_TYPE
35 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation0 : 3; // only used for D3DFTL_FULL_TYPE
36 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation1 : 3; // only used for D3DFTL_FULL_TYPE
37 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation2 : 3; // only used for D3DFTL_FULL_TYPE
38 D3D_FORMAT_COMPONENT_INTERPRETATION ComponentInterpretation3 : 3; // only used for D3DFTL_FULL_TYPE
39 bool bDX9VertexOrIndexFormat : 1;
40 bool bDX9TextureFormat : 1;
41 bool bFloatNormFormat : 1;
42 bool bPlanar : 1;
43 bool bYUV : 1;
44 bool bDependantFormatCastSet : 1; // This indicates that the format cast set is dependent on FL/driver version
45 bool bInternal : 1;
46 } FORMAT_DETAIL;
47
48private:
49 static const FORMAT_DETAIL s_FormatDetail[];
50 static const UINT s_NumFormats;
51 static const LPCSTR s_FormatNames[]; // separate from above structure so it can be compiled out of runtime.
52public:
53 static UINT GetNumFormats();
54 static const FORMAT_DETAIL* GetFormatTable();
55 static D3D_FEATURE_LEVEL GetHighestDefinedFeatureLevel();
56
57 static DXGI_FORMAT GetFormat (SIZE_T Index);
58 static bool FormatExists (DXGI_FORMAT Format);
59 static bool FormatExistsInHeader (DXGI_FORMAT Format, bool bExternalHeader = true);
60 static UINT GetByteAlignment (DXGI_FORMAT Format);
61 static bool IsBlockCompressFormat (DXGI_FORMAT Format);
62 static LPCSTR GetName (DXGI_FORMAT Format, bool bHideInternalFormats = true);
63 static bool IsSRGBFormat (DXGI_FORMAT Format);
64 static UINT GetBitsPerStencil (DXGI_FORMAT Format);
65 static UINT GetBitsPerDepth (DXGI_FORMAT Format);
66 static void GetFormatReturnTypes (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
67 static UINT GetNumComponentsInFormat(DXGI_FORMAT Format);
68 static UINT GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
69
70 // Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
71 // the absolute component index (range 0 to 3).
72 static UINT Sequential2AbsoluteComponentIndex (DXGI_FORMAT Format, UINT SequentialComponentIndex);
73 static bool CanBeCastEvenFullyTyped (DXGI_FORMAT Format, D3D_FEATURE_LEVEL fl);
74 static UINT8 GetAddressingBitsPerAlignedSize (DXGI_FORMAT Format);
75 static DXGI_FORMAT GetParentFormat (DXGI_FORMAT Format);
76 static const DXGI_FORMAT* GetFormatCastSet (DXGI_FORMAT Format);
77 static D3D_FORMAT_LAYOUT GetLayout (DXGI_FORMAT Format);
78 static D3D_FORMAT_TYPE_LEVEL GetTypeLevel (DXGI_FORMAT Format);
79 static UINT GetBitsPerUnit (DXGI_FORMAT Format);
80 static UINT GetBitsPerUnitThrow (DXGI_FORMAT Format);
81 static UINT GetBitsPerElement (DXGI_FORMAT Format); // Legacy function used to support D3D10on9 only. Do not use.
82 static UINT GetWidthAlignment (DXGI_FORMAT Format);
83 static UINT GetHeightAlignment (DXGI_FORMAT Format);
84 static UINT GetDepthAlignment (DXGI_FORMAT Format);
85 static BOOL Planar (DXGI_FORMAT Format);
86 static BOOL NonOpaquePlanar (DXGI_FORMAT Format);
87 static BOOL YUV (DXGI_FORMAT Format);
88 static BOOL Opaque (DXGI_FORMAT Format);
89 static bool FamilySupportsStencil (DXGI_FORMAT Format);
90 static UINT NonOpaquePlaneCount (DXGI_FORMAT Format);
91 static BOOL DX9VertexOrIndexFormat (DXGI_FORMAT Format);
92 static BOOL DX9TextureFormat (DXGI_FORMAT Format);
93 static BOOL FloatNormTextureFormat (DXGI_FORMAT Format);
94 static bool DepthOnlyFormat (DXGI_FORMAT format);
95 static UINT8 GetPlaneCount (DXGI_FORMAT Format);
96 static bool MotionEstimatorAllowedInputFormat (DXGI_FORMAT Format);
97 static bool SupportsSamplerFeedback (DXGI_FORMAT Format);
98 static bool DecodeHistogramAllowedForOutputFormatSupport(DXGI_FORMAT Format);
99 static UINT8 GetPlaneSliceFromViewFormat (DXGI_FORMAT ResourceFormat, DXGI_FORMAT ViewFormat);
100 static bool FloatAndNotFloatFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
101 static bool SNORMAndUNORMFormats (DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
102 static bool ValidCastToR32UAV (DXGI_FORMAT from, DXGI_FORMAT to);
103 static bool IsSupportedTextureDisplayableFormat (DXGI_FORMAT, bool bMediaFormatOnly);
104 static D3D_FORMAT_COMPONENT_INTERPRETATION GetFormatComponentInterpretation (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
105 static UINT GetBitsPerComponent (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
106 static D3D_FORMAT_COMPONENT_NAME GetComponentName (DXGI_FORMAT Format, UINT AbsoluteComponentIndex);
107 static HRESULT CalculateExtraPlanarRows (DXGI_FORMAT format, UINT plane0Height, _Out_ UINT& totalHeight);
108 static HRESULT CalculateMinimumRowMajorRowPitch (DXGI_FORMAT Format, UINT Width, _Out_ UINT& RowPitch);
109 static HRESULT CalculateMinimumRowMajorSlicePitch (DXGI_FORMAT Format, UINT ContextBasedRowPitch, UINT Height, _Out_ UINT& SlicePitch);
110 static void GetYCbCrChromaSubsampling (DXGI_FORMAT Format, _Out_ UINT& HorizontalSubsampling, _Out_ UINT& VerticalSubsampling);
111
112 static HRESULT CalculateResourceSize (UINT width, UINT height, UINT depth, DXGI_FORMAT format, UINT mipLevels, UINT subresources, _Out_ SIZE_T& totalByteSize, _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST* pDst = nullptr);
113 static void GetTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
114 static void Get4KTileShape (D3D12_TILE_SHAPE* pTileShape, DXGI_FORMAT Format, D3D12_RESOURCE_DIMENSION Dimension, UINT SampleCount);
115 static void GetMipDimensions (UINT8 mipSlice, _Inout_ UINT64* pWidth, _Inout_opt_ UINT64* pHeight = nullptr, _Inout_opt_ UINT64* pDepth = nullptr);
116 static void GetPlaneSubsampledSizeAndFormatForCopyableLayout(UINT PlaneSlice, DXGI_FORMAT Format, UINT Width, UINT Height, _Out_ DXGI_FORMAT& PlaneFormat, _Out_ UINT& MinPlanePitchWidth, _Out_ UINT& PlaneWidth, _Out_ UINT& PlaneHeight);
117
118 static UINT GetDetailTableIndex (DXGI_FORMAT Format);
119 static UINT GetDetailTableIndexNoThrow (DXGI_FORMAT Format);
120 static UINT GetDetailTableIndexThrow (DXGI_FORMAT Format);
121 static bool SupportsDepth (DXGI_FORMAT Format);
122 static bool SupportsStencil (DXGI_FORMAT Format);
123private:
124 static const FORMAT_DETAIL* GetFormatDetail (DXGI_FORMAT Format);
125
126};
127
128#endif \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h
new file mode 100644
index 0000000..c88fbdf
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_render_pass.h
@@ -0,0 +1,105 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
16inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
17{
18 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
19}
20
21inline bool operator==(const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
22{
23 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
24}
25
26inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& a, const D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS& b) noexcept
27{
28 return ((a.AdditionalWidth == b.AdditionalWidth) && (a.AdditionalHeight == b.AdditionalHeight));
29}
30#endif
31
32inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS &b) noexcept
33{
34 return a.ClearValue == b.ClearValue;
35}
36
37inline bool operator==( const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &a, const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS &b) noexcept
38{
39 if (a.pSrcResource != b.pSrcResource) return false;
40 if (a.pDstResource != b.pDstResource) return false;
41 if (a.SubresourceCount != b.SubresourceCount) return false;
42 if (a.Format != b.Format) return false;
43 if (a.ResolveMode != b.ResolveMode) return false;
44 if (a.PreserveResolveSource != b.PreserveResolveSource) return false;
45 return true;
46}
47
48inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12_RENDER_PASS_BEGINNING_ACCESS &b) noexcept
49{
50 if (a.Type != b.Type) return false;
51 switch (a.Type)
52 {
53 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR:
54 if (!(a.Clear == b.Clear)) return false;
55 break;
56#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
57 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
58 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
59 case D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
60 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
61 break;
62#endif
63 default:
64 break;
65 }
66 return true;
67}
68
69inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS& a, const D3D12_RENDER_PASS_ENDING_ACCESS& b) noexcept
70{
71 if (a.Type != b.Type) return false;
72 switch (a.Type)
73 {
74 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE:
75 if (!(a.Resolve == b.Resolve)) return false;
76 break;
77#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
78 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER:
79 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV:
80 case D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV:
81 if (!(a.PreserveLocal == b.PreserveLocal)) return false;
82 break;
83#endif
84 default:
85 break;
86 }
87 return true;
88}
89
90inline bool operator==( const D3D12_RENDER_PASS_RENDER_TARGET_DESC &a, const D3D12_RENDER_PASS_RENDER_TARGET_DESC &b) noexcept
91{
92 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
93 if (!(a.BeginningAccess == b.BeginningAccess)) return false;
94 if (!(a.EndingAccess == b.EndingAccess)) return false;
95 return true;
96}
97inline bool operator==( const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &a, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC &b) noexcept
98{
99 if (a.cpuDescriptor.ptr != b.cpuDescriptor.ptr) return false;
100 if (!(a.DepthBeginningAccess == b.DepthBeginningAccess)) return false;
101 if (!(a.StencilBeginningAccess == b.StencilBeginningAccess)) return false;
102 if (!(a.DepthEndingAccess == b.DepthEndingAccess)) return false;
103 if (!(a.StencilEndingAccess == b.StencilEndingAccess)) return false;
104 return true;
105}
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h
new file mode 100644
index 0000000..5c1c980
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_resource_helpers.h
@@ -0,0 +1,612 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_property_format_table.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17//------------------------------------------------------------------------------------------------
18template <typename T, typename U, typename V>
19inline void D3D12DecomposeSubresource( UINT Subresource, UINT MipLevels, UINT ArraySize, _Out_ T& MipSlice, _Out_ U& ArraySlice, _Out_ V& PlaneSlice ) noexcept
20{
21 MipSlice = static_cast<T>(Subresource % MipLevels);
22 ArraySlice = static_cast<U>((Subresource / MipLevels) % ArraySize);
23 PlaneSlice = static_cast<V>(Subresource / (MipLevels * ArraySize));
24}
25
26//------------------------------------------------------------------------------------------------
27// Row-by-row memcpy
28inline void MemcpySubresource(
29 _In_ const D3D12_MEMCPY_DEST* pDest,
30 _In_ const D3D12_SUBRESOURCE_DATA* pSrc,
31 SIZE_T RowSizeInBytes,
32 UINT NumRows,
33 UINT NumSlices) noexcept
34{
35 for (UINT z = 0; z < NumSlices; ++z)
36 {
37 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
38 auto pSrcSlice = static_cast<const BYTE*>(pSrc->pData) + pSrc->SlicePitch * LONG_PTR(z);
39 for (UINT y = 0; y < NumRows; ++y)
40 {
41 memcpy(pDestSlice + pDest->RowPitch * y,
42 pSrcSlice + pSrc->RowPitch * LONG_PTR(y),
43 RowSizeInBytes);
44 }
45 }
46}
47
48//------------------------------------------------------------------------------------------------
49// Row-by-row memcpy
50inline void MemcpySubresource(
51 _In_ const D3D12_MEMCPY_DEST* pDest,
52 _In_ const void* pResourceData,
53 _In_ const D3D12_SUBRESOURCE_INFO* pSrc,
54 SIZE_T RowSizeInBytes,
55 UINT NumRows,
56 UINT NumSlices) noexcept
57{
58 for (UINT z = 0; z < NumSlices; ++z)
59 {
60 auto pDestSlice = static_cast<BYTE*>(pDest->pData) + pDest->SlicePitch * z;
61 auto pSrcSlice = (static_cast<const BYTE*>(pResourceData) + pSrc->Offset) + pSrc->DepthPitch * ULONG_PTR(z);
62 for (UINT y = 0; y < NumRows; ++y)
63 {
64 memcpy(pDestSlice + pDest->RowPitch * y,
65 pSrcSlice + pSrc->RowPitch * ULONG_PTR(y),
66 RowSizeInBytes);
67 }
68 }
69}
70
71//------------------------------------------------------------------------------------------------
72// Returns required size of a buffer to be used for data upload
73inline UINT64 GetRequiredIntermediateSize(
74 _In_ ID3D12Resource* pDestinationResource,
75 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
76 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources) noexcept
77{
78#if defined(_MSC_VER) || !defined(_WIN32)
79 const auto Desc = pDestinationResource->GetDesc();
80#else
81 D3D12_RESOURCE_DESC tmpDesc;
82 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
83#endif
84 UINT64 RequiredSize = 0;
85
86 ID3D12Device* pDevice = nullptr;
87 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
88 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
89 pDevice->Release();
90
91 return RequiredSize;
92}
93
94//------------------------------------------------------------------------------------------------
95// All arrays must be populated (e.g. by calling GetCopyableFootprints)
96inline UINT64 UpdateSubresources(
97 _In_ ID3D12GraphicsCommandList* pCmdList,
98 _In_ ID3D12Resource* pDestinationResource,
99 _In_ ID3D12Resource* pIntermediate,
100 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
101 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
102 UINT64 RequiredSize,
103 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
104 _In_reads_(NumSubresources) const UINT* pNumRows,
105 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
106 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
107{
108 // Minor validation
109#if defined(_MSC_VER) || !defined(_WIN32)
110 const auto IntermediateDesc = pIntermediate->GetDesc();
111 const auto DestinationDesc = pDestinationResource->GetDesc();
112#else
113 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
114 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
115 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
116#endif
117 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
118 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
119 RequiredSize > SIZE_T(-1) ||
120 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
121 (FirstSubresource != 0 || NumSubresources != 1)))
122 {
123 return 0;
124 }
125
126 BYTE* pData;
127 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
128 if (FAILED(hr))
129 {
130 return 0;
131 }
132
133 for (UINT i = 0; i < NumSubresources; ++i)
134 {
135 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
136 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
137 MemcpySubresource(&DestData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
138 }
139 pIntermediate->Unmap(0, nullptr);
140
141 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
142 {
143 pCmdList->CopyBufferRegion(
144 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
145 }
146 else
147 {
148 for (UINT i = 0; i < NumSubresources; ++i)
149 {
150 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
151 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
152 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
153 }
154 }
155 return RequiredSize;
156}
157
158//------------------------------------------------------------------------------------------------
159// All arrays must be populated (e.g. by calling GetCopyableFootprints)
160inline UINT64 UpdateSubresources(
161 _In_ ID3D12GraphicsCommandList* pCmdList,
162 _In_ ID3D12Resource* pDestinationResource,
163 _In_ ID3D12Resource* pIntermediate,
164 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
165 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
166 UINT64 RequiredSize,
167 _In_reads_(NumSubresources) const D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
168 _In_reads_(NumSubresources) const UINT* pNumRows,
169 _In_reads_(NumSubresources) const UINT64* pRowSizesInBytes,
170 _In_ const void* pResourceData,
171 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
172{
173 // Minor validation
174#if defined(_MSC_VER) || !defined(_WIN32)
175 const auto IntermediateDesc = pIntermediate->GetDesc();
176 const auto DestinationDesc = pDestinationResource->GetDesc();
177#else
178 D3D12_RESOURCE_DESC tmpDesc1, tmpDesc2;
179 const auto& IntermediateDesc = *pIntermediate->GetDesc(&tmpDesc1);
180 const auto& DestinationDesc = *pDestinationResource->GetDesc(&tmpDesc2);
181#endif
182 if (IntermediateDesc.Dimension != D3D12_RESOURCE_DIMENSION_BUFFER ||
183 IntermediateDesc.Width < RequiredSize + pLayouts[0].Offset ||
184 RequiredSize > SIZE_T(-1) ||
185 (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER &&
186 (FirstSubresource != 0 || NumSubresources != 1)))
187 {
188 return 0;
189 }
190
191 BYTE* pData;
192 HRESULT hr = pIntermediate->Map(0, nullptr, reinterpret_cast<void**>(&pData));
193 if (FAILED(hr))
194 {
195 return 0;
196 }
197
198 for (UINT i = 0; i < NumSubresources; ++i)
199 {
200 if (pRowSizesInBytes[i] > SIZE_T(-1)) return 0;
201 D3D12_MEMCPY_DEST DestData = { pData + pLayouts[i].Offset, pLayouts[i].Footprint.RowPitch, SIZE_T(pLayouts[i].Footprint.RowPitch) * SIZE_T(pNumRows[i]) };
202 MemcpySubresource(&DestData, pResourceData, &pSrcData[i], static_cast<SIZE_T>(pRowSizesInBytes[i]), pNumRows[i], pLayouts[i].Footprint.Depth);
203 }
204 pIntermediate->Unmap(0, nullptr);
205
206 if (DestinationDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER)
207 {
208 pCmdList->CopyBufferRegion(
209 pDestinationResource, 0, pIntermediate, pLayouts[0].Offset, pLayouts[0].Footprint.Width);
210 }
211 else
212 {
213 for (UINT i = 0; i < NumSubresources; ++i)
214 {
215 const CD3DX12_TEXTURE_COPY_LOCATION Dst(pDestinationResource, i + FirstSubresource);
216 const CD3DX12_TEXTURE_COPY_LOCATION Src(pIntermediate, pLayouts[i]);
217 pCmdList->CopyTextureRegion(&Dst, 0, 0, 0, &Src, nullptr);
218 }
219 }
220 return RequiredSize;
221}
222
223//------------------------------------------------------------------------------------------------
224// Heap-allocating UpdateSubresources implementation
225inline UINT64 UpdateSubresources(
226 _In_ ID3D12GraphicsCommandList* pCmdList,
227 _In_ ID3D12Resource* pDestinationResource,
228 _In_ ID3D12Resource* pIntermediate,
229 UINT64 IntermediateOffset,
230 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
231 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
232 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
233{
234 UINT64 RequiredSize = 0;
235 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
236 if (MemToAlloc > SIZE_MAX)
237 {
238 return 0;
239 }
240 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
241 if (pMem == nullptr)
242 {
243 return 0;
244 }
245 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
246 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
247 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
248
249#if defined(_MSC_VER) || !defined(_WIN32)
250 const auto Desc = pDestinationResource->GetDesc();
251#else
252 D3D12_RESOURCE_DESC tmpDesc;
253 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
254#endif
255 ID3D12Device* pDevice = nullptr;
256 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
257 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
258 pDevice->Release();
259
260 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pSrcData);
261 HeapFree(GetProcessHeap(), 0, pMem);
262 return Result;
263}
264
265//------------------------------------------------------------------------------------------------
266// Heap-allocating UpdateSubresources implementation
267inline UINT64 UpdateSubresources(
268 _In_ ID3D12GraphicsCommandList* pCmdList,
269 _In_ ID3D12Resource* pDestinationResource,
270 _In_ ID3D12Resource* pIntermediate,
271 UINT64 IntermediateOffset,
272 _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
273 _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
274 _In_ const void* pResourceData,
275 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
276{
277 UINT64 RequiredSize = 0;
278 const auto MemToAlloc = static_cast<UINT64>(sizeof(D3D12_PLACED_SUBRESOURCE_FOOTPRINT) + sizeof(UINT) + sizeof(UINT64)) * NumSubresources;
279 if (MemToAlloc > SIZE_MAX)
280 {
281 return 0;
282 }
283 void* pMem = HeapAlloc(GetProcessHeap(), 0, static_cast<SIZE_T>(MemToAlloc));
284 if (pMem == nullptr)
285 {
286 return 0;
287 }
288 auto pLayouts = static_cast<D3D12_PLACED_SUBRESOURCE_FOOTPRINT*>(pMem);
289 auto pRowSizesInBytes = reinterpret_cast<UINT64*>(pLayouts + NumSubresources);
290 auto pNumRows = reinterpret_cast<UINT*>(pRowSizesInBytes + NumSubresources);
291
292#if defined(_MSC_VER) || !defined(_WIN32)
293 const auto Desc = pDestinationResource->GetDesc();
294#else
295 D3D12_RESOURCE_DESC tmpDesc;
296 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
297#endif
298 ID3D12Device* pDevice = nullptr;
299 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
300 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, pLayouts, pNumRows, pRowSizesInBytes, &RequiredSize);
301 pDevice->Release();
302
303 const UINT64 Result = UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, pLayouts, pNumRows, pRowSizesInBytes, pResourceData, pSrcData);
304 HeapFree(GetProcessHeap(), 0, pMem);
305 return Result;
306}
307
308//------------------------------------------------------------------------------------------------
309// Stack-allocating UpdateSubresources implementation
310template <UINT MaxSubresources>
311inline UINT64 UpdateSubresources(
312 _In_ ID3D12GraphicsCommandList* pCmdList,
313 _In_ ID3D12Resource* pDestinationResource,
314 _In_ ID3D12Resource* pIntermediate,
315 UINT64 IntermediateOffset,
316 _In_range_(0,MaxSubresources) UINT FirstSubresource,
317 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
318 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_DATA* pSrcData) noexcept
319{
320 UINT64 RequiredSize = 0;
321 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
322 UINT NumRows[MaxSubresources];
323 UINT64 RowSizesInBytes[MaxSubresources];
324
325#if defined(_MSC_VER) || !defined(_WIN32)
326 const auto Desc = pDestinationResource->GetDesc();
327#else
328 D3D12_RESOURCE_DESC tmpDesc;
329 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
330#endif
331 ID3D12Device* pDevice = nullptr;
332 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
333 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
334 pDevice->Release();
335
336 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pSrcData);
337}
338
339//------------------------------------------------------------------------------------------------
340// Stack-allocating UpdateSubresources implementation
341template <UINT MaxSubresources>
342inline UINT64 UpdateSubresources(
343 _In_ ID3D12GraphicsCommandList* pCmdList,
344 _In_ ID3D12Resource* pDestinationResource,
345 _In_ ID3D12Resource* pIntermediate,
346 UINT64 IntermediateOffset,
347 _In_range_(0,MaxSubresources) UINT FirstSubresource,
348 _In_range_(1,MaxSubresources-FirstSubresource) UINT NumSubresources,
349 _In_ const void* pResourceData,
350 _In_reads_(NumSubresources) const D3D12_SUBRESOURCE_INFO* pSrcData) noexcept
351{
352 UINT64 RequiredSize = 0;
353 D3D12_PLACED_SUBRESOURCE_FOOTPRINT Layouts[MaxSubresources];
354 UINT NumRows[MaxSubresources];
355 UINT64 RowSizesInBytes[MaxSubresources];
356
357#if defined(_MSC_VER) || !defined(_WIN32)
358 const auto Desc = pDestinationResource->GetDesc();
359#else
360 D3D12_RESOURCE_DESC tmpDesc;
361 const auto& Desc = *pDestinationResource->GetDesc(&tmpDesc);
362#endif
363 ID3D12Device* pDevice = nullptr;
364 pDestinationResource->GetDevice(IID_ID3D12Device, reinterpret_cast<void**>(&pDevice));
365 pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, IntermediateOffset, Layouts, NumRows, RowSizesInBytes, &RequiredSize);
366 pDevice->Release();
367
368 return UpdateSubresources(pCmdList, pDestinationResource, pIntermediate, FirstSubresource, NumSubresources, RequiredSize, Layouts, NumRows, RowSizesInBytes, pResourceData, pSrcData);
369}
370
371//------------------------------------------------------------------------------------------------
372constexpr bool D3D12IsLayoutOpaque( D3D12_TEXTURE_LAYOUT Layout ) noexcept
373{ return Layout == D3D12_TEXTURE_LAYOUT_UNKNOWN || Layout == D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE; }
374
375//------------------------------------------------------------------------------------------------
376template< typename T >
377inline T D3DX12Align(T uValue, T uAlign)
378{
379 // Assert power of 2 alignment
380 D3DX12_ASSERT(0 == (uAlign & (uAlign - 1)));
381 T uMask = uAlign - 1;
382 T uResult = (uValue + uMask) & ~uMask;
383 D3DX12_ASSERT(uResult >= uValue);
384 D3DX12_ASSERT(0 == (uResult % uAlign));
385 return uResult;
386}
387
388//------------------------------------------------------------------------------------------------
389template< typename T >
390inline T D3DX12AlignAtLeast(T uValue, T uAlign)
391{
392 T aligned = D3DX12Align(uValue, uAlign);
393 return aligned > uAlign ? aligned : uAlign;
394}
395
396inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
397 D3D12_RESOURCE_DESC1& LclDesc,
398 const D3D12_RESOURCE_DESC1* pDesc,
399 const bool tightAlignmentSupported = false,
400 const bool alignAsCommitted = false)
401{
402 return D3DX12ConditionallyExpandAPIDesc(static_cast<CD3DX12_RESOURCE_DESC1&>(LclDesc), static_cast<const CD3DX12_RESOURCE_DESC1*>(pDesc), tightAlignmentSupported, alignAsCommitted);
403}
404
405#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
406//------------------------------------------------------------------------------------------------
407// The difference between D3DX12GetCopyableFootprints and ID3D12Device::GetCopyableFootprints
408// is that this one loses a lot of error checking by assuming the arguments are correct
409inline bool D3DX12GetCopyableFootprints(
410 _In_ const D3D12_RESOURCE_DESC1& ResourceDesc,
411 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
412 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
413 UINT64 BaseOffset,
414 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
415 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
416 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
417 _Out_opt_ UINT64* pTotalBytes)
418{
419 constexpr UINT64 uint64_max = ~0ull;
420 UINT64 TotalBytes = uint64_max;
421 UINT uSubRes = 0;
422
423 bool bResourceOverflow = false;
424 TotalBytes = 0;
425
426 const DXGI_FORMAT Format = ResourceDesc.Format;
427
428 CD3DX12_RESOURCE_DESC1 LresourceDesc;
429 const CD3DX12_RESOURCE_DESC1& resourceDesc = *D3DX12ConditionallyExpandAPIDesc(LresourceDesc, &ResourceDesc);
430
431 // Check if its a valid format
432 D3DX12_ASSERT(D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExists(Format));
433
434 // D3DX12GetCopyableFootprints does not support buffers with width larger than UINT_MAX.
435 if (ResourceDesc.Dimension == D3D12_RESOURCE_DIMENSION_BUFFER && ResourceDesc.Width >= UINT_MAX)
436 {
437 return false;
438 }
439
440 const UINT WidthAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetWidthAlignment( Format );
441 const UINT HeightAlignment = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetHeightAlignment( Format );
442 const UINT16 DepthAlignment = UINT16( D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDepthAlignment( Format ) );
443
444 for (; uSubRes < NumSubresources; ++uSubRes)
445 {
446 bool bOverflow = false;
447 UINT Subresource = FirstSubresource + uSubRes;
448
449 D3DX12_ASSERT(resourceDesc.MipLevels != 0);
450 UINT subresourceCount = resourceDesc.MipLevels * resourceDesc.ArraySize() * D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneCount(resourceDesc.Format);
451
452 if (Subresource > subresourceCount)
453 {
454 break;
455 }
456
457 TotalBytes = D3DX12Align< UINT64 >( TotalBytes, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT );
458
459 UINT MipLevel, ArraySlice, PlaneSlice;
460 D3D12DecomposeSubresource(Subresource, resourceDesc.MipLevels, resourceDesc.ArraySize(), /*_Out_*/MipLevel, /*_Out_*/ArraySlice, /*_Out_*/PlaneSlice);
461
462 const UINT64 Width = D3DX12AlignAtLeast<UINT64>(resourceDesc.Width >> MipLevel, WidthAlignment);
463 const UINT Height = D3DX12AlignAtLeast(resourceDesc.Height >> MipLevel, HeightAlignment);
464 const UINT16 Depth = D3DX12AlignAtLeast<UINT16>(resourceDesc.Depth() >> MipLevel, DepthAlignment);
465
466 // Adjust for the current PlaneSlice. Most formats have only one plane.
467 DXGI_FORMAT PlaneFormat;
468 UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
469 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ PlaneHeight);
470
471 D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement = {};
472 auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
473 Placement.Format = PlaneFormat;
474 Placement.Width = PlaneWidth;
475 Placement.Height = PlaneHeight;
476 Placement.Depth = Depth;
477
478 // Calculate row pitch
479 UINT MinPlaneRowPitch = 0;
480 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, MinPlanePitchWidth, MinPlaneRowPitch);
481
482 // Formats with more than one plane choose a larger pitch alignment to ensure that each plane begins on the row
483 // immediately following the previous plane while still adhering to subresource alignment restrictions.
484 static_assert( D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT >= D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
485 && ((D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT % D3D12_TEXTURE_DATA_PITCH_ALIGNMENT) == 0),
486 "D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT must be >= and evenly divisible by D3D12_TEXTURE_DATA_PITCH_ALIGNMENT." );
487
488 Placement.RowPitch = D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format)
489 ? D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT )
490 : D3DX12Align< UINT >( MinPlaneRowPitch, D3D12_TEXTURE_DATA_PITCH_ALIGNMENT );
491
492 if (pRowSizeInBytes)
493 {
494 UINT PlaneRowSize = 0;
495 D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateMinimumRowMajorRowPitch(PlaneFormat, PlaneWidth, PlaneRowSize);
496
497 pRowSizeInBytes[uSubRes] = PlaneRowSize;
498 }
499
500 // Number of rows (accounting for block compression and additional planes)
501 UINT NumRows = 0;
502 if (D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Planar(Format))
503 {
504 NumRows = PlaneHeight;
505 }
506 else
507 {
508 D3DX12_ASSERT(Height % HeightAlignment == 0);
509 NumRows = Height / HeightAlignment;
510 }
511
512 if (pNumRows)
513 {
514 pNumRows[uSubRes] = NumRows;
515 }
516
517 // Offsetting
518 if (pLayouts)
519 {
520 pLayouts[uSubRes].Offset = (bOverflow ? uint64_max : TotalBytes + BaseOffset);
521 }
522
523 const UINT16 NumSlices = Depth;
524 const UINT64 SubresourceSize = (NumRows * NumSlices - 1) * Placement.RowPitch + MinPlaneRowPitch;
525
526 // uint64 addition with overflow checking
527 TotalBytes = TotalBytes + SubresourceSize;
528 if(TotalBytes < SubresourceSize)
529 {
530 TotalBytes = uint64_max;
531 }
532 bResourceOverflow = bResourceOverflow || bOverflow;
533 }
534
535 // Overflow error
536 if (bResourceOverflow)
537 {
538 TotalBytes = uint64_max;
539 }
540
541
542 if (pLayouts)
543 {
544 memset( pLayouts + uSubRes, -1, sizeof( *pLayouts ) * (NumSubresources - uSubRes) );
545 }
546 if (pNumRows)
547 {
548 memset(pNumRows + uSubRes, -1, sizeof(*pNumRows) * (NumSubresources - uSubRes));
549 }
550 if (pRowSizeInBytes)
551 {
552 memset(pRowSizeInBytes + uSubRes, -1, sizeof(*pRowSizeInBytes) * (NumSubresources - uSubRes));
553 }
554 if (pTotalBytes)
555 {
556 *pTotalBytes = TotalBytes;
557 }
558 if(TotalBytes == uint64_max)
559 {
560 return false;
561 }
562 return true;
563}
564
565//------------------------------------------------------------------------------------------------
566inline D3D12_RESOURCE_DESC1 D3DX12ResourceDesc0ToDesc1(D3D12_RESOURCE_DESC const& desc0)
567{
568 D3D12_RESOURCE_DESC1 desc1;
569 desc1.Dimension = desc0.Dimension;
570 desc1.Alignment = desc0.Alignment;
571 desc1.Width = desc0.Width;
572 desc1.Height = desc0.Height;
573 desc1.DepthOrArraySize = desc0.DepthOrArraySize;
574 desc1.MipLevels = desc0.MipLevels;
575 desc1.Format = desc0.Format;
576 desc1.SampleDesc.Count = desc0.SampleDesc.Count;
577 desc1.SampleDesc.Quality = desc0.SampleDesc.Quality;
578 desc1.Layout = desc0.Layout;
579 desc1.Flags = desc0.Flags;
580 desc1.SamplerFeedbackMipRegion.Width = 0;
581 desc1.SamplerFeedbackMipRegion.Height = 0;
582 desc1.SamplerFeedbackMipRegion.Depth = 0;
583 return desc1;
584}
585
586//------------------------------------------------------------------------------------------------
587inline bool D3DX12GetCopyableFootprints(
588 _In_ const D3D12_RESOURCE_DESC& pResourceDesc,
589 _In_range_(0, D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
590 _In_range_(0, D3D12_REQ_SUBRESOURCES - FirstSubresource) UINT NumSubresources,
591 UINT64 BaseOffset,
592 _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
593 _Out_writes_opt_(NumSubresources) UINT* pNumRows,
594 _Out_writes_opt_(NumSubresources) UINT64* pRowSizeInBytes,
595 _Out_opt_ UINT64* pTotalBytes)
596{
597 // From D3D12_RESOURCE_DESC to D3D12_RESOURCE_DESC1
598 D3D12_RESOURCE_DESC1 desc = D3DX12ResourceDesc0ToDesc1(pResourceDesc);
599 return D3DX12GetCopyableFootprints(
600 *static_cast<CD3DX12_RESOURCE_DESC1*>(&desc),// From D3D12_RESOURCE_DESC1 to CD3DX12_RESOURCE_DESC1
601 FirstSubresource,
602 NumSubresources,
603 BaseOffset,
604 pLayouts,
605 pNumRows,
606 pRowSizeInBytes,
607 pTotalBytes);
608}
609
610#endif // D3D12_SDK_VERSION >= 606
611
612
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h
new file mode 100644
index 0000000..e194d30
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_root_signature.h
@@ -0,0 +1,1227 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3d12.h"
15#include "d3dx12_default.h"
16
17//------------------------------------------------------------------------------------------------
18struct CD3DX12_DESCRIPTOR_RANGE : public D3D12_DESCRIPTOR_RANGE
19{
20 CD3DX12_DESCRIPTOR_RANGE() = default;
21 explicit CD3DX12_DESCRIPTOR_RANGE(const D3D12_DESCRIPTOR_RANGE &o) noexcept :
22 D3D12_DESCRIPTOR_RANGE(o)
23 {}
24 CD3DX12_DESCRIPTOR_RANGE(
25 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
26 UINT numDescriptors,
27 UINT baseShaderRegister,
28 UINT registerSpace = 0,
29 UINT offsetInDescriptorsFromTableStart =
30 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
31 {
32 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
33 }
34
35 inline void Init(
36 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
37 UINT numDescriptors,
38 UINT baseShaderRegister,
39 UINT registerSpace = 0,
40 UINT offsetInDescriptorsFromTableStart =
41 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
42 {
43 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, offsetInDescriptorsFromTableStart);
44 }
45
46 static inline void Init(
47 _Out_ D3D12_DESCRIPTOR_RANGE &range,
48 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
49 UINT numDescriptors,
50 UINT baseShaderRegister,
51 UINT registerSpace = 0,
52 UINT offsetInDescriptorsFromTableStart =
53 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
54 {
55 range.RangeType = rangeType;
56 range.NumDescriptors = numDescriptors;
57 range.BaseShaderRegister = baseShaderRegister;
58 range.RegisterSpace = registerSpace;
59 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
60 }
61};
62
63//------------------------------------------------------------------------------------------------
64struct CD3DX12_ROOT_DESCRIPTOR_TABLE : public D3D12_ROOT_DESCRIPTOR_TABLE
65{
66 CD3DX12_ROOT_DESCRIPTOR_TABLE() = default;
67 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE(const D3D12_ROOT_DESCRIPTOR_TABLE &o) noexcept :
68 D3D12_ROOT_DESCRIPTOR_TABLE(o)
69 {}
70 CD3DX12_ROOT_DESCRIPTOR_TABLE(
71 UINT numDescriptorRanges,
72 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
73 {
74 Init(numDescriptorRanges, _pDescriptorRanges);
75 }
76
77 inline void Init(
78 UINT numDescriptorRanges,
79 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
80 {
81 Init(*this, numDescriptorRanges, _pDescriptorRanges);
82 }
83
84 static inline void Init(
85 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE &rootDescriptorTable,
86 UINT numDescriptorRanges,
87 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* _pDescriptorRanges) noexcept
88 {
89 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
90 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
91 }
92};
93
94//------------------------------------------------------------------------------------------------
95struct CD3DX12_ROOT_CONSTANTS : public D3D12_ROOT_CONSTANTS
96{
97 CD3DX12_ROOT_CONSTANTS() = default;
98 explicit CD3DX12_ROOT_CONSTANTS(const D3D12_ROOT_CONSTANTS &o) noexcept :
99 D3D12_ROOT_CONSTANTS(o)
100 {}
101 CD3DX12_ROOT_CONSTANTS(
102 UINT num32BitValues,
103 UINT shaderRegister,
104 UINT registerSpace = 0) noexcept
105 {
106 Init(num32BitValues, shaderRegister, registerSpace);
107 }
108
109 inline void Init(
110 UINT num32BitValues,
111 UINT shaderRegister,
112 UINT registerSpace = 0) noexcept
113 {
114 Init(*this, num32BitValues, shaderRegister, registerSpace);
115 }
116
117 static inline void Init(
118 _Out_ D3D12_ROOT_CONSTANTS &rootConstants,
119 UINT num32BitValues,
120 UINT shaderRegister,
121 UINT registerSpace = 0) noexcept
122 {
123 rootConstants.Num32BitValues = num32BitValues;
124 rootConstants.ShaderRegister = shaderRegister;
125 rootConstants.RegisterSpace = registerSpace;
126 }
127};
128
129//------------------------------------------------------------------------------------------------
130struct CD3DX12_ROOT_DESCRIPTOR : public D3D12_ROOT_DESCRIPTOR
131{
132 CD3DX12_ROOT_DESCRIPTOR() = default;
133 explicit CD3DX12_ROOT_DESCRIPTOR(const D3D12_ROOT_DESCRIPTOR &o) noexcept :
134 D3D12_ROOT_DESCRIPTOR(o)
135 {}
136 CD3DX12_ROOT_DESCRIPTOR(
137 UINT shaderRegister,
138 UINT registerSpace = 0) noexcept
139 {
140 Init(shaderRegister, registerSpace);
141 }
142
143 inline void Init(
144 UINT shaderRegister,
145 UINT registerSpace = 0) noexcept
146 {
147 Init(*this, shaderRegister, registerSpace);
148 }
149
150 static inline void Init(_Out_ D3D12_ROOT_DESCRIPTOR &table, UINT shaderRegister, UINT registerSpace = 0) noexcept
151 {
152 table.ShaderRegister = shaderRegister;
153 table.RegisterSpace = registerSpace;
154 }
155};
156
157//------------------------------------------------------------------------------------------------
158struct CD3DX12_ROOT_PARAMETER : public D3D12_ROOT_PARAMETER
159{
160 CD3DX12_ROOT_PARAMETER() = default;
161 explicit CD3DX12_ROOT_PARAMETER(const D3D12_ROOT_PARAMETER &o) noexcept :
162 D3D12_ROOT_PARAMETER(o)
163 {}
164
165 static inline void InitAsDescriptorTable(
166 _Out_ D3D12_ROOT_PARAMETER &rootParam,
167 UINT numDescriptorRanges,
168 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
169 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
170 {
171 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
172 rootParam.ShaderVisibility = visibility;
173 CD3DX12_ROOT_DESCRIPTOR_TABLE::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
174 }
175
176 static inline void InitAsConstants(
177 _Out_ D3D12_ROOT_PARAMETER &rootParam,
178 UINT num32BitValues,
179 UINT shaderRegister,
180 UINT registerSpace = 0,
181 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
182 {
183 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
184 rootParam.ShaderVisibility = visibility;
185 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
186 }
187
188 static inline void InitAsConstantBufferView(
189 _Out_ D3D12_ROOT_PARAMETER &rootParam,
190 UINT shaderRegister,
191 UINT registerSpace = 0,
192 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
193 {
194 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
195 rootParam.ShaderVisibility = visibility;
196 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
197 }
198
199 static inline void InitAsShaderResourceView(
200 _Out_ D3D12_ROOT_PARAMETER &rootParam,
201 UINT shaderRegister,
202 UINT registerSpace = 0,
203 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
204 {
205 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
206 rootParam.ShaderVisibility = visibility;
207 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
208 }
209
210 static inline void InitAsUnorderedAccessView(
211 _Out_ D3D12_ROOT_PARAMETER &rootParam,
212 UINT shaderRegister,
213 UINT registerSpace = 0,
214 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
215 {
216 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
217 rootParam.ShaderVisibility = visibility;
218 CD3DX12_ROOT_DESCRIPTOR::Init(rootParam.Descriptor, shaderRegister, registerSpace);
219 }
220
221 inline void InitAsDescriptorTable(
222 UINT numDescriptorRanges,
223 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges,
224 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
225 {
226 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
227 }
228
229 inline void InitAsConstants(
230 UINT num32BitValues,
231 UINT shaderRegister,
232 UINT registerSpace = 0,
233 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
234 {
235 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
236 }
237
238 inline void InitAsConstantBufferView(
239 UINT shaderRegister,
240 UINT registerSpace = 0,
241 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
242 {
243 InitAsConstantBufferView(*this, shaderRegister, registerSpace, visibility);
244 }
245
246 inline void InitAsShaderResourceView(
247 UINT shaderRegister,
248 UINT registerSpace = 0,
249 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
250 {
251 InitAsShaderResourceView(*this, shaderRegister, registerSpace, visibility);
252 }
253
254 inline void InitAsUnorderedAccessView(
255 UINT shaderRegister,
256 UINT registerSpace = 0,
257 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
258 {
259 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, visibility);
260 }
261};
262
263//------------------------------------------------------------------------------------------------
264struct CD3DX12_STATIC_SAMPLER_DESC : public D3D12_STATIC_SAMPLER_DESC
265{
266 CD3DX12_STATIC_SAMPLER_DESC() = default;
267 explicit CD3DX12_STATIC_SAMPLER_DESC(const D3D12_STATIC_SAMPLER_DESC &o) noexcept :
268 D3D12_STATIC_SAMPLER_DESC(o)
269 {}
270 CD3DX12_STATIC_SAMPLER_DESC(
271 UINT shaderRegister,
272 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
273 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
274 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
275 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
276 FLOAT mipLODBias = 0,
277 UINT maxAnisotropy = 16,
278 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
279 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
280 FLOAT minLOD = 0.f,
281 FLOAT maxLOD = D3D12_FLOAT32_MAX,
282 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
283 UINT registerSpace = 0) noexcept
284 {
285 Init(
286 shaderRegister,
287 filter,
288 addressU,
289 addressV,
290 addressW,
291 mipLODBias,
292 maxAnisotropy,
293 comparisonFunc,
294 borderColor,
295 minLOD,
296 maxLOD,
297 shaderVisibility,
298 registerSpace);
299 }
300
301 static inline void Init(
302 _Out_ D3D12_STATIC_SAMPLER_DESC &samplerDesc,
303 UINT shaderRegister,
304 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
305 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
306 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
307 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
308 FLOAT mipLODBias = 0,
309 UINT maxAnisotropy = 16,
310 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
311 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
312 FLOAT minLOD = 0.f,
313 FLOAT maxLOD = D3D12_FLOAT32_MAX,
314 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
315 UINT registerSpace = 0) noexcept
316 {
317 samplerDesc.ShaderRegister = shaderRegister;
318 samplerDesc.Filter = filter;
319 samplerDesc.AddressU = addressU;
320 samplerDesc.AddressV = addressV;
321 samplerDesc.AddressW = addressW;
322 samplerDesc.MipLODBias = mipLODBias;
323 samplerDesc.MaxAnisotropy = maxAnisotropy;
324 samplerDesc.ComparisonFunc = comparisonFunc;
325 samplerDesc.BorderColor = borderColor;
326 samplerDesc.MinLOD = minLOD;
327 samplerDesc.MaxLOD = maxLOD;
328 samplerDesc.ShaderVisibility = shaderVisibility;
329 samplerDesc.RegisterSpace = registerSpace;
330 }
331 inline void Init(
332 UINT shaderRegister,
333 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
334 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
335 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
336 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
337 FLOAT mipLODBias = 0,
338 UINT maxAnisotropy = 16,
339 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
340 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
341 FLOAT minLOD = 0.f,
342 FLOAT maxLOD = D3D12_FLOAT32_MAX,
343 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
344 UINT registerSpace = 0) noexcept
345 {
346 Init(
347 *this,
348 shaderRegister,
349 filter,
350 addressU,
351 addressV,
352 addressW,
353 mipLODBias,
354 maxAnisotropy,
355 comparisonFunc,
356 borderColor,
357 minLOD,
358 maxLOD,
359 shaderVisibility,
360 registerSpace);
361 }
362};
363
364//------------------------------------------------------------------------------------------------
365#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
366struct CD3DX12_STATIC_SAMPLER_DESC1 : public D3D12_STATIC_SAMPLER_DESC1
367{
368 CD3DX12_STATIC_SAMPLER_DESC1() = default;
369 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC &o) noexcept
370 {
371 memcpy(this, &o, sizeof(D3D12_STATIC_SAMPLER_DESC));
372 Flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE;
373 }
374 explicit CD3DX12_STATIC_SAMPLER_DESC1(const D3D12_STATIC_SAMPLER_DESC1 & o) noexcept :
375 D3D12_STATIC_SAMPLER_DESC1(o)
376 {}
377 CD3DX12_STATIC_SAMPLER_DESC1(
378 UINT shaderRegister,
379 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
380 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
381 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
382 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
383 FLOAT mipLODBias = 0,
384 UINT maxAnisotropy = 16,
385 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
386 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
387 FLOAT minLOD = 0.f,
388 FLOAT maxLOD = D3D12_FLOAT32_MAX,
389 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
390 UINT registerSpace = 0,
391 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
392 {
393 Init(
394 shaderRegister,
395 filter,
396 addressU,
397 addressV,
398 addressW,
399 mipLODBias,
400 maxAnisotropy,
401 comparisonFunc,
402 borderColor,
403 minLOD,
404 maxLOD,
405 shaderVisibility,
406 registerSpace,
407 flags);
408 }
409
410 static inline void Init(
411 _Out_ D3D12_STATIC_SAMPLER_DESC1 &samplerDesc,
412 UINT shaderRegister,
413 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
414 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
415 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
416 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
417 FLOAT mipLODBias = 0,
418 UINT maxAnisotropy = 16,
419 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
420 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
421 FLOAT minLOD = 0.f,
422 FLOAT maxLOD = D3D12_FLOAT32_MAX,
423 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
424 UINT registerSpace = 0,
425 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
426 {
427 samplerDesc.ShaderRegister = shaderRegister;
428 samplerDesc.Filter = filter;
429 samplerDesc.AddressU = addressU;
430 samplerDesc.AddressV = addressV;
431 samplerDesc.AddressW = addressW;
432 samplerDesc.MipLODBias = mipLODBias;
433 samplerDesc.MaxAnisotropy = maxAnisotropy;
434 samplerDesc.ComparisonFunc = comparisonFunc;
435 samplerDesc.BorderColor = borderColor;
436 samplerDesc.MinLOD = minLOD;
437 samplerDesc.MaxLOD = maxLOD;
438 samplerDesc.ShaderVisibility = shaderVisibility;
439 samplerDesc.RegisterSpace = registerSpace;
440 samplerDesc.Flags = flags;
441 }
442 inline void Init(
443 UINT shaderRegister,
444 D3D12_FILTER filter = D3D12_FILTER_ANISOTROPIC,
445 D3D12_TEXTURE_ADDRESS_MODE addressU = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
446 D3D12_TEXTURE_ADDRESS_MODE addressV = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
447 D3D12_TEXTURE_ADDRESS_MODE addressW = D3D12_TEXTURE_ADDRESS_MODE_WRAP,
448 FLOAT mipLODBias = 0,
449 UINT maxAnisotropy = 16,
450 D3D12_COMPARISON_FUNC comparisonFunc = D3D12_COMPARISON_FUNC_LESS_EQUAL,
451 D3D12_STATIC_BORDER_COLOR borderColor = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE,
452 FLOAT minLOD = 0.f,
453 FLOAT maxLOD = D3D12_FLOAT32_MAX,
454 D3D12_SHADER_VISIBILITY shaderVisibility = D3D12_SHADER_VISIBILITY_ALL,
455 UINT registerSpace = 0,
456 D3D12_SAMPLER_FLAGS flags = D3D12_SAMPLER_FLAGS::D3D12_SAMPLER_FLAG_NONE) noexcept
457 {
458 Init(
459 *this,
460 shaderRegister,
461 filter,
462 addressU,
463 addressV,
464 addressW,
465 mipLODBias,
466 maxAnisotropy,
467 comparisonFunc,
468 borderColor,
469 minLOD,
470 maxLOD,
471 shaderVisibility,
472 registerSpace,
473 flags);
474 }
475};
476#endif // D3D12_SDK_VERSION >= 609
477
478//------------------------------------------------------------------------------------------------
479struct CD3DX12_ROOT_SIGNATURE_DESC : public D3D12_ROOT_SIGNATURE_DESC
480{
481 CD3DX12_ROOT_SIGNATURE_DESC() = default;
482 explicit CD3DX12_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept :
483 D3D12_ROOT_SIGNATURE_DESC(o)
484 {}
485 CD3DX12_ROOT_SIGNATURE_DESC(
486 UINT numParameters,
487 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
488 UINT numStaticSamplers = 0,
489 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
490 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
491 {
492 Init(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
493 }
494 CD3DX12_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
495 {
496 Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
497 }
498
499 inline void Init(
500 UINT numParameters,
501 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
502 UINT numStaticSamplers = 0,
503 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
504 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
505 {
506 Init(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
507 }
508
509 static inline void Init(
510 _Out_ D3D12_ROOT_SIGNATURE_DESC &desc,
511 UINT numParameters,
512 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
513 UINT numStaticSamplers = 0,
514 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
515 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
516 {
517 desc.NumParameters = numParameters;
518 desc.pParameters = _pParameters;
519 desc.NumStaticSamplers = numStaticSamplers;
520 desc.pStaticSamplers = _pStaticSamplers;
521 desc.Flags = flags;
522 }
523};
524
525//------------------------------------------------------------------------------------------------
526struct CD3DX12_DESCRIPTOR_RANGE1 : public D3D12_DESCRIPTOR_RANGE1
527{
528 CD3DX12_DESCRIPTOR_RANGE1() = default;
529 explicit CD3DX12_DESCRIPTOR_RANGE1(const D3D12_DESCRIPTOR_RANGE1 &o) noexcept :
530 D3D12_DESCRIPTOR_RANGE1(o)
531 {}
532 CD3DX12_DESCRIPTOR_RANGE1(
533 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
534 UINT numDescriptors,
535 UINT baseShaderRegister,
536 UINT registerSpace = 0,
537 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
538 UINT offsetInDescriptorsFromTableStart =
539 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
540 {
541 Init(rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
542 }
543
544 inline void Init(
545 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
546 UINT numDescriptors,
547 UINT baseShaderRegister,
548 UINT registerSpace = 0,
549 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
550 UINT offsetInDescriptorsFromTableStart =
551 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
552 {
553 Init(*this, rangeType, numDescriptors, baseShaderRegister, registerSpace, flags, offsetInDescriptorsFromTableStart);
554 }
555
556 static inline void Init(
557 _Out_ D3D12_DESCRIPTOR_RANGE1 &range,
558 D3D12_DESCRIPTOR_RANGE_TYPE rangeType,
559 UINT numDescriptors,
560 UINT baseShaderRegister,
561 UINT registerSpace = 0,
562 D3D12_DESCRIPTOR_RANGE_FLAGS flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE,
563 UINT offsetInDescriptorsFromTableStart =
564 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND) noexcept
565 {
566 range.RangeType = rangeType;
567 range.NumDescriptors = numDescriptors;
568 range.BaseShaderRegister = baseShaderRegister;
569 range.RegisterSpace = registerSpace;
570 range.Flags = flags;
571 range.OffsetInDescriptorsFromTableStart = offsetInDescriptorsFromTableStart;
572 }
573};
574
575//------------------------------------------------------------------------------------------------
576struct CD3DX12_ROOT_DESCRIPTOR_TABLE1 : public D3D12_ROOT_DESCRIPTOR_TABLE1
577{
578 CD3DX12_ROOT_DESCRIPTOR_TABLE1() = default;
579 explicit CD3DX12_ROOT_DESCRIPTOR_TABLE1(const D3D12_ROOT_DESCRIPTOR_TABLE1 &o) noexcept :
580 D3D12_ROOT_DESCRIPTOR_TABLE1(o)
581 {}
582 CD3DX12_ROOT_DESCRIPTOR_TABLE1(
583 UINT numDescriptorRanges,
584 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
585 {
586 Init(numDescriptorRanges, _pDescriptorRanges);
587 }
588
589 inline void Init(
590 UINT numDescriptorRanges,
591 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
592 {
593 Init(*this, numDescriptorRanges, _pDescriptorRanges);
594 }
595
596 static inline void Init(
597 _Out_ D3D12_ROOT_DESCRIPTOR_TABLE1 &rootDescriptorTable,
598 UINT numDescriptorRanges,
599 _In_reads_opt_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* _pDescriptorRanges) noexcept
600 {
601 rootDescriptorTable.NumDescriptorRanges = numDescriptorRanges;
602 rootDescriptorTable.pDescriptorRanges = _pDescriptorRanges;
603 }
604};
605
606//------------------------------------------------------------------------------------------------
607struct CD3DX12_ROOT_DESCRIPTOR1 : public D3D12_ROOT_DESCRIPTOR1
608{
609 CD3DX12_ROOT_DESCRIPTOR1() = default;
610 explicit CD3DX12_ROOT_DESCRIPTOR1(const D3D12_ROOT_DESCRIPTOR1 &o) noexcept :
611 D3D12_ROOT_DESCRIPTOR1(o)
612 {}
613 CD3DX12_ROOT_DESCRIPTOR1(
614 UINT shaderRegister,
615 UINT registerSpace = 0,
616 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
617 {
618 Init(shaderRegister, registerSpace, flags);
619 }
620
621 inline void Init(
622 UINT shaderRegister,
623 UINT registerSpace = 0,
624 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
625 {
626 Init(*this, shaderRegister, registerSpace, flags);
627 }
628
629 static inline void Init(
630 _Out_ D3D12_ROOT_DESCRIPTOR1 &table,
631 UINT shaderRegister,
632 UINT registerSpace = 0,
633 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE) noexcept
634 {
635 table.ShaderRegister = shaderRegister;
636 table.RegisterSpace = registerSpace;
637 table.Flags = flags;
638 }
639};
640
641//------------------------------------------------------------------------------------------------
642struct CD3DX12_ROOT_PARAMETER1 : public D3D12_ROOT_PARAMETER1
643{
644 CD3DX12_ROOT_PARAMETER1() = default;
645 explicit CD3DX12_ROOT_PARAMETER1(const D3D12_ROOT_PARAMETER1 &o) noexcept :
646 D3D12_ROOT_PARAMETER1(o)
647 {}
648
649 static inline void InitAsDescriptorTable(
650 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
651 UINT numDescriptorRanges,
652 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
653 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
654 {
655 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
656 rootParam.ShaderVisibility = visibility;
657 CD3DX12_ROOT_DESCRIPTOR_TABLE1::Init(rootParam.DescriptorTable, numDescriptorRanges, pDescriptorRanges);
658 }
659
660 static inline void InitAsConstants(
661 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
662 UINT num32BitValues,
663 UINT shaderRegister,
664 UINT registerSpace = 0,
665 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
666 {
667 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS;
668 rootParam.ShaderVisibility = visibility;
669 CD3DX12_ROOT_CONSTANTS::Init(rootParam.Constants, num32BitValues, shaderRegister, registerSpace);
670 }
671
672 static inline void InitAsConstantBufferView(
673 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
674 UINT shaderRegister,
675 UINT registerSpace = 0,
676 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
677 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
678 {
679 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
680 rootParam.ShaderVisibility = visibility;
681 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
682 }
683
684 static inline void InitAsShaderResourceView(
685 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
686 UINT shaderRegister,
687 UINT registerSpace = 0,
688 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
689 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
690 {
691 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_SRV;
692 rootParam.ShaderVisibility = visibility;
693 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
694 }
695
696 static inline void InitAsUnorderedAccessView(
697 _Out_ D3D12_ROOT_PARAMETER1 &rootParam,
698 UINT shaderRegister,
699 UINT registerSpace = 0,
700 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
701 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
702 {
703 rootParam.ParameterType = D3D12_ROOT_PARAMETER_TYPE_UAV;
704 rootParam.ShaderVisibility = visibility;
705 CD3DX12_ROOT_DESCRIPTOR1::Init(rootParam.Descriptor, shaderRegister, registerSpace, flags);
706 }
707
708 inline void InitAsDescriptorTable(
709 UINT numDescriptorRanges,
710 _In_reads_(numDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges,
711 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
712 {
713 InitAsDescriptorTable(*this, numDescriptorRanges, pDescriptorRanges, visibility);
714 }
715
716 inline void InitAsConstants(
717 UINT num32BitValues,
718 UINT shaderRegister,
719 UINT registerSpace = 0,
720 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
721 {
722 InitAsConstants(*this, num32BitValues, shaderRegister, registerSpace, visibility);
723 }
724
725 inline void InitAsConstantBufferView(
726 UINT shaderRegister,
727 UINT registerSpace = 0,
728 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
729 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
730 {
731 InitAsConstantBufferView(*this, shaderRegister, registerSpace, flags, visibility);
732 }
733
734 inline void InitAsShaderResourceView(
735 UINT shaderRegister,
736 UINT registerSpace = 0,
737 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
738 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
739 {
740 InitAsShaderResourceView(*this, shaderRegister, registerSpace, flags, visibility);
741 }
742
743 inline void InitAsUnorderedAccessView(
744 UINT shaderRegister,
745 UINT registerSpace = 0,
746 D3D12_ROOT_DESCRIPTOR_FLAGS flags = D3D12_ROOT_DESCRIPTOR_FLAG_NONE,
747 D3D12_SHADER_VISIBILITY visibility = D3D12_SHADER_VISIBILITY_ALL) noexcept
748 {
749 InitAsUnorderedAccessView(*this, shaderRegister, registerSpace, flags, visibility);
750 }
751};
752
753//------------------------------------------------------------------------------------------------
754struct CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC : public D3D12_VERSIONED_ROOT_SIGNATURE_DESC
755{
756 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC() = default;
757 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC &o) noexcept :
758 D3D12_VERSIONED_ROOT_SIGNATURE_DESC(o)
759 {}
760 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC &o) noexcept
761 {
762 Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
763 Desc_1_0 = o;
764 }
765 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC1 &o) noexcept
766 {
767 Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
768 Desc_1_1 = o;
769 }
770#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
771 explicit CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(const D3D12_ROOT_SIGNATURE_DESC2& o) noexcept
772 {
773 Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
774 Desc_1_2 = o;
775 }
776#endif
777 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
778 UINT numParameters,
779 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
780 UINT numStaticSamplers = 0,
781 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
782 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
783 {
784 Init_1_0(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
785 }
786 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(
787 UINT numParameters,
788 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
789 UINT numStaticSamplers = 0,
790 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
791 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
792 {
793 Init_1_1(numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
794 }
795 CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC(CD3DX12_DEFAULT) noexcept
796 {
797 Init_1_1(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_NONE);
798 }
799
800 inline void Init_1_0(
801 UINT numParameters,
802 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
803 UINT numStaticSamplers = 0,
804 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
805 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
806 {
807 Init_1_0(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
808 }
809
810 static inline void Init_1_0(
811 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
812 UINT numParameters,
813 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER* _pParameters,
814 UINT numStaticSamplers = 0,
815 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
816 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
817 {
818 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_0;
819 desc.Desc_1_0.NumParameters = numParameters;
820 desc.Desc_1_0.pParameters = _pParameters;
821 desc.Desc_1_0.NumStaticSamplers = numStaticSamplers;
822 desc.Desc_1_0.pStaticSamplers = _pStaticSamplers;
823 desc.Desc_1_0.Flags = flags;
824 }
825
826 inline void Init_1_1(
827 UINT numParameters,
828 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
829 UINT numStaticSamplers = 0,
830 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
831 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
832 {
833 Init_1_1(*this, numParameters, _pParameters, numStaticSamplers, _pStaticSamplers, flags);
834 }
835
836 static inline void Init_1_1(
837 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC &desc,
838 UINT numParameters,
839 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
840 UINT numStaticSamplers = 0,
841 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC* _pStaticSamplers = nullptr,
842 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
843 {
844 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
845 desc.Desc_1_1.NumParameters = numParameters;
846 desc.Desc_1_1.pParameters = _pParameters;
847 desc.Desc_1_1.NumStaticSamplers = numStaticSamplers;
848 desc.Desc_1_1.pStaticSamplers = _pStaticSamplers;
849 desc.Desc_1_1.Flags = flags;
850 }
851
852#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
853 static inline void Init_1_2(
854 _Out_ D3D12_VERSIONED_ROOT_SIGNATURE_DESC& desc,
855 UINT numParameters,
856 _In_reads_opt_(numParameters) const D3D12_ROOT_PARAMETER1* _pParameters,
857 UINT numStaticSamplers = 0,
858 _In_reads_opt_(numStaticSamplers) const D3D12_STATIC_SAMPLER_DESC1* _pStaticSamplers = nullptr,
859 D3D12_ROOT_SIGNATURE_FLAGS flags = D3D12_ROOT_SIGNATURE_FLAG_NONE) noexcept
860 {
861 desc.Version = D3D_ROOT_SIGNATURE_VERSION_1_2;
862 desc.Desc_1_2.NumParameters = numParameters;
863 desc.Desc_1_2.pParameters = _pParameters;
864 desc.Desc_1_2.NumStaticSamplers = numStaticSamplers;
865 desc.Desc_1_2.pStaticSamplers = _pStaticSamplers;
866 desc.Desc_1_2.Flags = flags;
867 }
868#endif
869};
870
871//------------------------------------------------------------------------------------------------
872struct CD3DX12_CPU_DESCRIPTOR_HANDLE : public D3D12_CPU_DESCRIPTOR_HANDLE
873{
874 CD3DX12_CPU_DESCRIPTOR_HANDLE() = default;
875 explicit CD3DX12_CPU_DESCRIPTOR_HANDLE(const D3D12_CPU_DESCRIPTOR_HANDLE &o) noexcept :
876 D3D12_CPU_DESCRIPTOR_HANDLE(o)
877 {}
878 CD3DX12_CPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
879 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
880 {
881 InitOffsetted(other, offsetScaledByIncrementSize);
882 }
883 CD3DX12_CPU_DESCRIPTOR_HANDLE(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
884 {
885 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
886 }
887 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
888 {
889 ptr = SIZE_T(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
890 return *this;
891 }
892 CD3DX12_CPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
893 {
894 ptr = SIZE_T(INT64(ptr) + INT64(offsetScaledByIncrementSize));
895 return *this;
896 }
897 bool operator==(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
898 {
899 return (ptr == other.ptr);
900 }
901 bool operator!=(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE& other) const noexcept
902 {
903 return (ptr != other.ptr);
904 }
905 CD3DX12_CPU_DESCRIPTOR_HANDLE &operator=(const D3D12_CPU_DESCRIPTOR_HANDLE &other) noexcept
906 {
907 ptr = other.ptr;
908 return *this;
909 }
910
911 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
912 {
913 InitOffsetted(*this, base, offsetScaledByIncrementSize);
914 }
915
916 inline void InitOffsetted(_In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
917 {
918 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
919 }
920
921 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
922 {
923 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
924 }
925
926 static inline void InitOffsetted(_Out_ D3D12_CPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_CPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
927 {
928 handle.ptr = SIZE_T(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
929 }
930};
931
932//------------------------------------------------------------------------------------------------
933struct CD3DX12_GPU_DESCRIPTOR_HANDLE : public D3D12_GPU_DESCRIPTOR_HANDLE
934{
935 CD3DX12_GPU_DESCRIPTOR_HANDLE() = default;
936 explicit CD3DX12_GPU_DESCRIPTOR_HANDLE(const D3D12_GPU_DESCRIPTOR_HANDLE &o) noexcept :
937 D3D12_GPU_DESCRIPTOR_HANDLE(o)
938 {}
939 CD3DX12_GPU_DESCRIPTOR_HANDLE(CD3DX12_DEFAULT) noexcept { ptr = 0; }
940 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetScaledByIncrementSize) noexcept
941 {
942 InitOffsetted(other, offsetScaledByIncrementSize);
943 }
944 CD3DX12_GPU_DESCRIPTOR_HANDLE(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &other, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
945 {
946 InitOffsetted(other, offsetInDescriptors, descriptorIncrementSize);
947 }
948 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
949 {
950 ptr = UINT64(INT64(ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
951 return *this;
952 }
953 CD3DX12_GPU_DESCRIPTOR_HANDLE& Offset(INT offsetScaledByIncrementSize) noexcept
954 {
955 ptr = UINT64(INT64(ptr) + INT64(offsetScaledByIncrementSize));
956 return *this;
957 }
958 inline bool operator==(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
959 {
960 return (ptr == other.ptr);
961 }
962 inline bool operator!=(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE& other) const noexcept
963 {
964 return (ptr != other.ptr);
965 }
966 CD3DX12_GPU_DESCRIPTOR_HANDLE &operator=(const D3D12_GPU_DESCRIPTOR_HANDLE &other) noexcept
967 {
968 ptr = other.ptr;
969 return *this;
970 }
971
972 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
973 {
974 InitOffsetted(*this, base, offsetScaledByIncrementSize);
975 }
976
977 inline void InitOffsetted(_In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
978 {
979 InitOffsetted(*this, base, offsetInDescriptors, descriptorIncrementSize);
980 }
981
982 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetScaledByIncrementSize) noexcept
983 {
984 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetScaledByIncrementSize));
985 }
986
987 static inline void InitOffsetted(_Out_ D3D12_GPU_DESCRIPTOR_HANDLE &handle, _In_ const D3D12_GPU_DESCRIPTOR_HANDLE &base, INT offsetInDescriptors, UINT descriptorIncrementSize) noexcept
988 {
989 handle.ptr = UINT64(INT64(base.ptr) + INT64(offsetInDescriptors) * INT64(descriptorIncrementSize));
990 }
991};
992
993//------------------------------------------------------------------------------------------------
994// D3D12 exports a new method for serializing root signatures in the Windows 10 Anniversary Update.
995// To help enable root signature 1.1 features when they are available and not require maintaining
996// two code paths for building root signatures, this helper method reconstructs a 1.0 signature when
997// 1.1 is not supported.
998#ifdef __clang__
999#pragma clang diagnostic push
1000#pragma clang diagnostic ignored "-Wcovered-switch-default"
1001#endif
1002
1003inline HRESULT D3DX12SerializeVersionedRootSignature(
1004 _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignatureDesc,
1005 D3D_ROOT_SIGNATURE_VERSION MaxVersion,
1006 _Outptr_ ID3DBlob** ppBlob,
1007 _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob) noexcept
1008{
1009 if (ppErrorBlob != nullptr)
1010 {
1011 *ppErrorBlob = nullptr;
1012 }
1013
1014 switch (MaxVersion)
1015 {
1016 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1017 switch (pRootSignatureDesc->Version)
1018 {
1019 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1020 return D3D12SerializeRootSignature(&pRootSignatureDesc->Desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1021
1022 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1023#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1024 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1025#endif
1026 {
1027 HRESULT hr = S_OK;
1028 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1029
1030 const SIZE_T ParametersSize = sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters;
1031 void* pParameters = (ParametersSize > 0) ? HeapAlloc(GetProcessHeap(), 0, ParametersSize) : nullptr;
1032 if (ParametersSize > 0 && pParameters == nullptr)
1033 {
1034 hr = E_OUTOFMEMORY;
1035 }
1036 auto pParameters_1_0 = static_cast<D3D12_ROOT_PARAMETER*>(pParameters);
1037
1038 if (SUCCEEDED(hr))
1039 {
1040 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1041 {
1042 __analysis_assume(ParametersSize == sizeof(D3D12_ROOT_PARAMETER) * desc_1_1.NumParameters);
1043 pParameters_1_0[n].ParameterType = desc_1_1.pParameters[n].ParameterType;
1044 pParameters_1_0[n].ShaderVisibility = desc_1_1.pParameters[n].ShaderVisibility;
1045
1046 switch (desc_1_1.pParameters[n].ParameterType)
1047 {
1048 case D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS:
1049 pParameters_1_0[n].Constants.Num32BitValues = desc_1_1.pParameters[n].Constants.Num32BitValues;
1050 pParameters_1_0[n].Constants.RegisterSpace = desc_1_1.pParameters[n].Constants.RegisterSpace;
1051 pParameters_1_0[n].Constants.ShaderRegister = desc_1_1.pParameters[n].Constants.ShaderRegister;
1052 break;
1053
1054 case D3D12_ROOT_PARAMETER_TYPE_CBV:
1055 case D3D12_ROOT_PARAMETER_TYPE_SRV:
1056 case D3D12_ROOT_PARAMETER_TYPE_UAV:
1057 pParameters_1_0[n].Descriptor.RegisterSpace = desc_1_1.pParameters[n].Descriptor.RegisterSpace;
1058 pParameters_1_0[n].Descriptor.ShaderRegister = desc_1_1.pParameters[n].Descriptor.ShaderRegister;
1059 break;
1060
1061 case D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE:
1062 {
1063 const D3D12_ROOT_DESCRIPTOR_TABLE1& table_1_1 = desc_1_1.pParameters[n].DescriptorTable;
1064
1065 const SIZE_T DescriptorRangesSize = sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges;
1066 void* pDescriptorRanges = (DescriptorRangesSize > 0 && SUCCEEDED(hr)) ? HeapAlloc(GetProcessHeap(), 0, DescriptorRangesSize) : nullptr;
1067 if (DescriptorRangesSize > 0 && pDescriptorRanges == nullptr)
1068 {
1069 hr = E_OUTOFMEMORY;
1070 }
1071 auto pDescriptorRanges_1_0 = static_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges);
1072
1073 if (SUCCEEDED(hr))
1074 {
1075 for (UINT x = 0; x < table_1_1.NumDescriptorRanges; x++)
1076 {
1077 __analysis_assume(DescriptorRangesSize == sizeof(D3D12_DESCRIPTOR_RANGE) * table_1_1.NumDescriptorRanges);
1078 pDescriptorRanges_1_0[x].BaseShaderRegister = table_1_1.pDescriptorRanges[x].BaseShaderRegister;
1079 pDescriptorRanges_1_0[x].NumDescriptors = table_1_1.pDescriptorRanges[x].NumDescriptors;
1080 pDescriptorRanges_1_0[x].OffsetInDescriptorsFromTableStart = table_1_1.pDescriptorRanges[x].OffsetInDescriptorsFromTableStart;
1081 pDescriptorRanges_1_0[x].RangeType = table_1_1.pDescriptorRanges[x].RangeType;
1082 pDescriptorRanges_1_0[x].RegisterSpace = table_1_1.pDescriptorRanges[x].RegisterSpace;
1083 }
1084 }
1085
1086 D3D12_ROOT_DESCRIPTOR_TABLE& table_1_0 = pParameters_1_0[n].DescriptorTable;
1087 table_1_0.NumDescriptorRanges = table_1_1.NumDescriptorRanges;
1088 table_1_0.pDescriptorRanges = pDescriptorRanges_1_0;
1089 }
1090 break;
1091
1092 default:
1093 break;
1094 }
1095 }
1096 }
1097
1098 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1099#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1100 if (desc_1_1.NumStaticSamplers > 0 && pRootSignatureDesc->Version == D3D_ROOT_SIGNATURE_VERSION_1_2)
1101 {
1102 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1103 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1104
1105 if (pStaticSamplers == nullptr)
1106 {
1107 hr = E_OUTOFMEMORY;
1108 }
1109 else
1110 {
1111 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1112 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1113 {
1114 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1115 {
1116 hr = E_INVALIDARG;
1117 break;
1118 }
1119 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1120 }
1121 }
1122 }
1123#endif
1124
1125 if (SUCCEEDED(hr))
1126 {
1127 const CD3DX12_ROOT_SIGNATURE_DESC desc_1_0(desc_1_1.NumParameters, pParameters_1_0, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
1128 hr = D3D12SerializeRootSignature(&desc_1_0, D3D_ROOT_SIGNATURE_VERSION_1, ppBlob, ppErrorBlob);
1129 }
1130
1131 if (pParameters)
1132 {
1133 for (UINT n = 0; n < desc_1_1.NumParameters; n++)
1134 {
1135 if (desc_1_1.pParameters[n].ParameterType == D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE)
1136 {
1137 auto pDescriptorRanges_1_0 = pParameters_1_0[n].DescriptorTable.pDescriptorRanges;
1138 HeapFree(GetProcessHeap(), 0, reinterpret_cast<void*>(const_cast<D3D12_DESCRIPTOR_RANGE*>(pDescriptorRanges_1_0)));
1139 }
1140 }
1141 HeapFree(GetProcessHeap(), 0, pParameters);
1142 }
1143
1144 if (pStaticSamplers)
1145 {
1146 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1147 }
1148
1149 return hr;
1150 }
1151
1152 default:
1153 break;
1154 }
1155 break;
1156
1157 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1158 switch (pRootSignatureDesc->Version)
1159 {
1160 case D3D_ROOT_SIGNATURE_VERSION_1_0:
1161 case D3D_ROOT_SIGNATURE_VERSION_1_1:
1162 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1163
1164#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1165 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1166 {
1167 HRESULT hr = S_OK;
1168 const D3D12_ROOT_SIGNATURE_DESC1& desc_1_1 = pRootSignatureDesc->Desc_1_1;
1169
1170 D3D12_STATIC_SAMPLER_DESC* pStaticSamplers = nullptr;
1171 if (desc_1_1.NumStaticSamplers > 0)
1172 {
1173 const SIZE_T SamplersSize = sizeof(D3D12_STATIC_SAMPLER_DESC) * desc_1_1.NumStaticSamplers;
1174 pStaticSamplers = static_cast<D3D12_STATIC_SAMPLER_DESC*>(HeapAlloc(GetProcessHeap(), 0, SamplersSize));
1175
1176 if (pStaticSamplers == nullptr)
1177 {
1178 hr = E_OUTOFMEMORY;
1179 }
1180 else
1181 {
1182 const D3D12_ROOT_SIGNATURE_DESC2& desc_1_2 = pRootSignatureDesc->Desc_1_2;
1183 for (UINT n = 0; n < desc_1_1.NumStaticSamplers; ++n)
1184 {
1185 if ((desc_1_2.pStaticSamplers[n].Flags & ~D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR) != 0)
1186 {
1187 hr = E_INVALIDARG;
1188 break;
1189 }
1190 memcpy(pStaticSamplers + n, desc_1_2.pStaticSamplers + n, sizeof(D3D12_STATIC_SAMPLER_DESC));
1191 }
1192 }
1193 }
1194
1195 if (SUCCEEDED(hr))
1196 {
1197 const CD3DX12_VERSIONED_ROOT_SIGNATURE_DESC desc(desc_1_1.NumParameters, desc_1_1.pParameters, desc_1_1.NumStaticSamplers, pStaticSamplers == nullptr ? desc_1_1.pStaticSamplers : pStaticSamplers, desc_1_1.Flags);
1198 hr = D3D12SerializeVersionedRootSignature(&desc, ppBlob, ppErrorBlob);
1199 }
1200
1201 if (pStaticSamplers)
1202 {
1203 HeapFree(GetProcessHeap(), 0, pStaticSamplers);
1204 }
1205
1206 return hr;
1207 }
1208#endif
1209
1210 default:
1211 break;
1212 }
1213 break;
1214
1215#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 609)
1216 case D3D_ROOT_SIGNATURE_VERSION_1_2:
1217#endif
1218 default:
1219 return D3D12SerializeVersionedRootSignature(pRootSignatureDesc, ppBlob, ppErrorBlob);
1220 }
1221
1222 return E_INVALIDARG;
1223}
1224
1225#ifdef __clang__
1226#pragma clang diagnostic pop
1227#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h
new file mode 100644
index 0000000..579ecc8
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/d3dx12_state_object.h
@@ -0,0 +1,2570 @@
1//*********************************************************
2//
3// Copyright (c) Microsoft Corporation.
4// Licensed under the MIT License (MIT).
5//
6//*********************************************************
7
8#pragma once
9
10#ifndef __cplusplus
11#error D3DX12 requires C++
12#endif
13
14#include "d3dx12_default.h"
15#include "d3d12.h"
16#include "d3dx12_core.h"
17
18//================================================================================================
19// D3DX12 State Object Creation Helpers
20//
21// Helper classes for creating new style state objects out of an arbitrary set of subobjects.
22// Uses STL
23//
24// Start by instantiating CD3DX12_STATE_OBJECT_DESC (see its public methods).
25// One of its methods is CreateSubobject(), which has a comment showing a couple of options for
26// defining subobjects using the helper classes for each subobject (CD3DX12_DXIL_LIBRARY_SUBOBJECT
27// etc.). The subobject helpers each have methods specific to the subobject for configuring its
28// contents.
29//
30//================================================================================================
31#include <list>
32#include <forward_list>
33#include <vector>
34#include <memory>
35#include <string>
36#include <vector>
37#ifndef D3DX12_USE_ATL
38#include <wrl/client.h>
39#define D3DX12_COM_PTR Microsoft::WRL::ComPtr
40#define D3DX12_COM_PTR_GET(x) x.Get()
41#define D3DX12_COM_PTR_ADDRESSOF(x) x.GetAddressOf()
42#else
43#include <atlbase.h>
44#define D3DX12_COM_PTR ATL::CComPtr
45#define D3DX12_COM_PTR_GET(x) x.p
46#define D3DX12_COM_PTR_ADDRESSOF(x) &x.p
47#endif
48
49//------------------------------------------------------------------------------------------------
50class CD3DX12_STATE_OBJECT_DESC
51{
52public:
53 CD3DX12_STATE_OBJECT_DESC() noexcept
54 {
55 Init(D3D12_STATE_OBJECT_TYPE_COLLECTION);
56 }
57 CD3DX12_STATE_OBJECT_DESC(D3D12_STATE_OBJECT_TYPE Type) noexcept
58 {
59 Init(Type);
60 }
61 void SetStateObjectType(D3D12_STATE_OBJECT_TYPE Type) noexcept { m_Desc.Type = Type; }
62 CD3DX12_STATE_OBJECT_DESC(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
63 CD3DX12_STATE_OBJECT_DESC& operator=(const CD3DX12_STATE_OBJECT_DESC& other) = delete;
64 CD3DX12_STATE_OBJECT_DESC(CD3DX12_STATE_OBJECT_DESC&& other) = default;
65 CD3DX12_STATE_OBJECT_DESC& operator=(CD3DX12_STATE_OBJECT_DESC&& other) = default;
66 operator const D3D12_STATE_OBJECT_DESC& ()
67 {
68#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
69 m_RepointedSubobjectVectors.clear();
70 m_RepointedPrograms.clear();
71#endif
72 m_RepointedAssociations.clear();
73 m_SubobjectArray.clear();
74 m_SubobjectArray.reserve(m_Desc.NumSubobjects);
75 // Flatten subobjects into an array (each flattened subobject still has a
76 // member that's a pointer to its desc that's not flattened)
77 for (auto Iter = m_SubobjectList.begin();
78 Iter != m_SubobjectList.end(); Iter++)
79 {
80 m_SubobjectArray.push_back(*Iter);
81 // Store new location in array so we can redirect pointers contained in subobjects
82 Iter->pSubobjectArrayLocation = &m_SubobjectArray.back();
83 }
84 // For subobjects with pointer fields, create a new copy of those subobject definitions
85 // with fixed pointers
86 for (UINT i = 0; i < m_Desc.NumSubobjects; i++)
87 {
88 if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION)
89 {
90 auto pOriginalSubobjectAssociation =
91 static_cast<const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION*>(m_SubobjectArray[i].pDesc);
92 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION Repointed = *pOriginalSubobjectAssociation;
93 auto pWrapper =
94 static_cast<const SUBOBJECT_WRAPPER*>(pOriginalSubobjectAssociation->pSubobjectToAssociate);
95 Repointed.pSubobjectToAssociate = pWrapper->pSubobjectArrayLocation;
96 m_RepointedAssociations.push_back(Repointed);
97 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
98 }
99#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
100 else if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM)
101 {
102 auto originalGenericProgramDesc =
103 static_cast<const D3D12_GENERIC_PROGRAM_DESC*>(m_SubobjectArray[i].pDesc);
104 D3D12_GENERIC_PROGRAM_DESC Repointed = *originalGenericProgramDesc;
105 if (originalGenericProgramDesc->NumSubobjects > 0)
106 {
107 m_RepointedSubobjectVectors.emplace_back(std::vector<const D3D12_STATE_SUBOBJECT*>());
108 std::vector<D3D12_STATE_SUBOBJECT const*>& repointedGenericProgramSubobjects = m_RepointedSubobjectVectors.back();
109 repointedGenericProgramSubobjects.resize(originalGenericProgramDesc->NumSubobjects);
110 for (UINT s = 0; s < originalGenericProgramDesc->NumSubobjects; s++)
111 {
112 auto pWrapper =
113 static_cast<const SUBOBJECT_WRAPPER*>(originalGenericProgramDesc->ppSubobjects[s]);
114 repointedGenericProgramSubobjects[s] = pWrapper->pSubobjectArrayLocation;
115 }
116 // Below: using ugly way to get pointer in case .data() is not defined
117 Repointed.ppSubobjects = &repointedGenericProgramSubobjects[0];
118 }
119 m_RepointedPrograms.push_back(Repointed);
120 m_SubobjectArray[i].pDesc = &m_RepointedPrograms.back();
121 }
122#endif
123 }
124 // Below: using ugly way to get pointer in case .data() is not defined
125 m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
126 return m_Desc;
127 }
128 operator const D3D12_STATE_OBJECT_DESC* ()
129 {
130 // Cast calls the above final preparation work
131 return &static_cast<const D3D12_STATE_OBJECT_DESC&>(*this);
132 }
133
134 // CreateSubobject creates a sububject helper (e.g. CD3DX12_HIT_GROUP_SUBOBJECT)
135 // whose lifetime is owned by this class.
136 // e.g.
137 //
138 // CD3DX12_STATE_OBJECT_DESC Collection1(D3D12_STATE_OBJECT_TYPE_COLLECTION);
139 // auto Lib0 = Collection1.CreateSubobject<CD3DX12_DXIL_LIBRARY_SUBOBJECT>();
140 // Lib0->SetDXILLibrary(&pMyAppDxilLibs[0]);
141 // Lib0->DefineExport(L"rayGenShader0"); // in practice these export listings might be
142 // // data/engine driven
143 // etc.
144 //
145 // Alternatively, users can instantiate sububject helpers explicitly, such as via local
146 // variables instead, passing the state object desc that should point to it into the helper
147 // constructor (or call mySubobjectHelper.AddToStateObject(Collection1)).
148 // In this alternative scenario, the user must keep the subobject alive as long as the state
149 // object it is associated with is alive, else its pointer references will be stale.
150 // e.g.
151 //
152 // CD3DX12_STATE_OBJECT_DESC RaytracingState2(D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE);
153 // CD3DX12_DXIL_LIBRARY_SUBOBJECT LibA(RaytracingState2);
154 // LibA.SetDXILLibrary(&pMyAppDxilLibs[4]); // not manually specifying exports
155 // // - meaning all exports in the libraries
156 // // are exported
157 // etc.
158
159 template<typename T>
160 T* CreateSubobject()
161 {
162 T* pSubobject = new T(*this);
163 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
164 return pSubobject;
165 }
166
167 template<typename T, typename U>
168 T* CreateSubobject(U&& arg)
169 {
170 T* pSubobject = new T(std::forward<U>(arg), *this);
171 m_OwnedSubobjectHelpers.emplace_back(pSubobject);
172 return pSubobject;
173 }
174
175private:
176 D3D12_STATE_SUBOBJECT* TrackSubobject(D3D12_STATE_SUBOBJECT_TYPE Type, void* pDesc)
177 {
178 SUBOBJECT_WRAPPER Subobject;
179 Subobject.pSubobjectArrayLocation = nullptr;
180 Subobject.Type = Type;
181 Subobject.pDesc = pDesc;
182 m_SubobjectList.push_back(Subobject);
183 m_Desc.NumSubobjects++;
184 return &m_SubobjectList.back();
185 }
186 void Init(D3D12_STATE_OBJECT_TYPE Type) noexcept
187 {
188 SetStateObjectType(Type);
189 m_Desc.pSubobjects = nullptr;
190 m_Desc.NumSubobjects = 0;
191 m_SubobjectList.clear();
192 m_SubobjectArray.clear();
193 m_RepointedAssociations.clear();
194#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
195 m_RepointedSubobjectVectors.clear();
196 m_RepointedPrograms.clear();
197#endif
198 }
199 typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
200 {
201 D3D12_STATE_SUBOBJECT* pSubobjectArrayLocation; // new location when flattened into array
202 // for repointing pointers in subobjects
203 } SUBOBJECT_WRAPPER;
204 D3D12_STATE_OBJECT_DESC m_Desc;
205 std::list<SUBOBJECT_WRAPPER> m_SubobjectList; // Pointers to list nodes handed out so
206 // these can be edited live
207 std::vector<D3D12_STATE_SUBOBJECT> m_SubobjectArray; // Built at the end, copying list contents
208
209 std::list<D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION>
210 m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
211 // repointed to flattened array
212
213#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
214 std::list<std::vector<D3D12_STATE_SUBOBJECT const*>>
215 m_RepointedSubobjectVectors;
216 std::list<D3D12_GENERIC_PROGRAM_DESC>
217 m_RepointedPrograms;
218#endif
219
220 template<typename CStr, typename StdStr>
221 class StringContainer
222 {
223 public:
224 CStr LocalCopy(CStr string, bool bSingleString = false)
225 {
226 if (string)
227 {
228 if (bSingleString)
229 {
230 m_Strings.clear();
231 m_Strings.push_back(string);
232 }
233 else
234 {
235 m_Strings.push_back(string);
236 }
237 return m_Strings.back().c_str();
238 }
239 else
240 {
241 return nullptr;
242 }
243 }
244 void clear() noexcept { m_Strings.clear(); }
245 private:
246 std::list<StdStr> m_Strings;
247 };
248
249public:
250 class SUBOBJECT_HELPER_BASE
251 {
252 public:
253 SUBOBJECT_HELPER_BASE() noexcept { Init(); }
254 virtual ~SUBOBJECT_HELPER_BASE() = default;
255 virtual D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept = 0;
256 SUBOBJECT_HELPER_BASE(const SUBOBJECT_HELPER_BASE& other) = delete;
257 SUBOBJECT_HELPER_BASE& operator=(const SUBOBJECT_HELPER_BASE& other) = delete;
258 SUBOBJECT_HELPER_BASE(SUBOBJECT_HELPER_BASE&& other) = default;
259 SUBOBJECT_HELPER_BASE& operator=(SUBOBJECT_HELPER_BASE&& other) = default;
260 void AddToStateObject(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
261 {
262 m_pSubobject = ContainingStateObject.TrackSubobject(Type(), Data());
263 }
264 operator const D3D12_STATE_SUBOBJECT& () const noexcept { return *m_pSubobject; }
265 protected:
266 virtual void* Data() noexcept = 0;
267 void Init() noexcept { m_pSubobject = nullptr; }
268 D3D12_STATE_SUBOBJECT* m_pSubobject;
269 };
270
271private:
272 std::list<std::unique_ptr<SUBOBJECT_HELPER_BASE>> m_OwnedSubobjectHelpers;
273
274 friend class CD3DX12_DXIL_LIBRARY_SUBOBJECT;
275 friend class CD3DX12_EXISTING_COLLECTION_SUBOBJECT;
276 friend class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT;
277 friend class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
278 friend class CD3DX12_HIT_GROUP_SUBOBJECT;
279 friend class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT;
280 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT;
281 friend class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT;
282 friend class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT;
283 friend class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT;
284 friend class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT;
285 friend class CD3DX12_NODE_MASK_SUBOBJECT;
286 //TODO: SDK Version check should include all the newly added subobject type for the public release.
287 // The SDK version check will be changed based on when we release state objects.
288#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
289 friend class CD3DX12_GENERIC_PROGRAM_SUBOBJECT;
290 friend class CD3DX12_WORK_GRAPH_SUBOBJECT;
291 friend class CD3DX12_STREAM_OUTPUT_SUBOBJECT;
292 friend class CD3DX12_BLEND_SUBOBJECT;
293 friend class CD3DX12_RASTERIZER_SUBOBJECT;
294 friend class CD3DX12_DEPTH_STENCIL2_SUBOBJECT;
295 friend class CD3DX12_INPUT_LAYOUT_SUBOBJECT;
296 friend class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT;
297 friend class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT;
298 friend class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT;
299 friend class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT;
300 friend class CD3DX12_SAMPLE_DESC_SUBOBJECT;
301 friend class CD3DX12_FLAGS_SUBOBJECT;
302 friend class CD3DX12_VIEW_INSTANCING_SUBOBJECT;
303 friend class CD3DX12_DEPTH_STENCIL_SUBOBJECT;
304 friend class CD3DX12_DEPTH_STENCIL1_SUBOBJECT;
305 friend class CD3DX12_SAMPLE_MASK_SUBOBJECT;
306 friend class CD3DX12_NODE_OUTPUT_OVERRIDES;
307 friend class CD3DX12_NODE_HELPER_BASE;
308 friend class CD3DX12_SHADER_NODE;
309 friend class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES;
310 friend class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES;
311 friend class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES;
312 friend class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES;
313#endif // D3D12_SDK_VERSION >= 612
314#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
315 friend class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
316 friend class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT;
317 friend class CD3DX12_COMPILER_EXISTING_COLLECTION_SUBOBJECT;
318 friend class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT;
319#endif
320};
321
322//------------------------------------------------------------------------------------------------
323class CD3DX12_DXIL_LIBRARY_SUBOBJECT
324 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
325{
326public:
327 CD3DX12_DXIL_LIBRARY_SUBOBJECT() noexcept
328 {
329 Init();
330 }
331 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
332 {
333 Init();
334 AddToStateObject(ContainingStateObject);
335 }
336 CD3DX12_DXIL_LIBRARY_SUBOBJECT(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
337 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
338 CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
339 CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
340 void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
341 {
342 static const D3D12_SHADER_BYTECODE Default = {};
343 m_Desc.DXILLibrary = pCode ? *pCode : Default;
344 }
345 void DefineExport(
346 LPCWSTR Name,
347 LPCWSTR ExportToRename = nullptr,
348 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
349 {
350 D3D12_EXPORT_DESC Export;
351 Export.Name = m_Strings.LocalCopy(Name);
352 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
353 Export.Flags = Flags;
354 m_Exports.push_back(Export);
355 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
356 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
357 }
358 template<size_t N>
359 void DefineExports(LPCWSTR(&Exports)[N])
360 {
361 for (UINT i = 0; i < N; i++)
362 {
363 DefineExport(Exports[i]);
364 }
365 }
366 void DefineExports(const LPCWSTR* Exports, UINT N)
367 {
368 for (UINT i = 0; i < N; i++)
369 {
370 DefineExport(Exports[i]);
371 }
372 }
373 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
374 {
375 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY;
376 }
377 operator const D3D12_DXIL_LIBRARY_DESC&() const noexcept { return m_Desc; }
378private:
379 void Init() noexcept
380 {
381 SUBOBJECT_HELPER_BASE::Init();
382 m_Desc = {};
383 m_Strings.clear();
384 m_Exports.clear();
385 }
386 void* Data() noexcept override { return &m_Desc; }
387 D3D12_DXIL_LIBRARY_DESC m_Desc;
388 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
389 std::vector<D3D12_EXPORT_DESC> m_Exports;
390};
391
392//------------------------------------------------------------------------------------------------
393class CD3DX12_EXISTING_COLLECTION_SUBOBJECT
394 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
395{
396public:
397 CD3DX12_EXISTING_COLLECTION_SUBOBJECT() noexcept
398 {
399 Init();
400 }
401 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
402 {
403 Init();
404 AddToStateObject(ContainingStateObject);
405 }
406 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
407 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
408 CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
409 CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
410 void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
411 {
412 m_Desc.pExistingCollection = pExistingCollection;
413 m_CollectionRef = pExistingCollection;
414 }
415 void DefineExport(
416 LPCWSTR Name,
417 LPCWSTR ExportToRename = nullptr,
418 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
419 {
420 D3D12_EXPORT_DESC Export;
421 Export.Name = m_Strings.LocalCopy(Name);
422 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
423 Export.Flags = Flags;
424 m_Exports.push_back(Export);
425 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
426 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
427 }
428 template<size_t N>
429 void DefineExports(LPCWSTR(&Exports)[N])
430 {
431 for (UINT i = 0; i < N; i++)
432 {
433 DefineExport(Exports[i]);
434 }
435 }
436 void DefineExports(const LPCWSTR* Exports, UINT N)
437 {
438 for (UINT i = 0; i < N; i++)
439 {
440 DefineExport(Exports[i]);
441 }
442 }
443 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
444 {
445 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION;
446 }
447 operator const D3D12_EXISTING_COLLECTION_DESC&() const noexcept { return m_Desc; }
448private:
449 void Init() noexcept
450 {
451 SUBOBJECT_HELPER_BASE::Init();
452 m_Desc = {};
453 m_CollectionRef = nullptr;
454 m_Strings.clear();
455 m_Exports.clear();
456 }
457 void* Data() noexcept override { return &m_Desc; }
458 D3D12_EXISTING_COLLECTION_DESC m_Desc;
459 D3DX12_COM_PTR<ID3D12StateObject> m_CollectionRef;
460 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
461 std::vector<D3D12_EXPORT_DESC> m_Exports;
462};
463
464//------------------------------------------------------------------------------------------------
465class CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT
466 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
467{
468public:
469 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT() noexcept
470 {
471 Init();
472 }
473 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
474 {
475 Init();
476 AddToStateObject(ContainingStateObject);
477 }
478 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
479 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
480 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
481 CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
482 void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
483 {
484 m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
485 }
486 void AddExport(LPCWSTR Export)
487 {
488 m_Desc.NumExports++;
489 m_Exports.push_back(m_Strings.LocalCopy(Export));
490 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
491 }
492 template<size_t N>
493 void AddExports(LPCWSTR (&Exports)[N])
494 {
495 for (UINT i = 0; i < N; i++)
496 {
497 AddExport(Exports[i]);
498 }
499 }
500 void AddExports(const LPCWSTR* Exports, UINT N)
501 {
502 for (UINT i = 0; i < N; i++)
503 {
504 AddExport(Exports[i]);
505 }
506 }
507 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
508 {
509 return D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
510 }
511 operator const D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
512private:
513 void Init() noexcept
514 {
515 SUBOBJECT_HELPER_BASE::Init();
516 m_Desc = {};
517 m_Strings.clear();
518 m_Exports.clear();
519 }
520 void* Data() noexcept override { return &m_Desc; }
521 D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
522 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
523 std::vector<LPCWSTR> m_Exports;
524};
525
526//------------------------------------------------------------------------------------------------
527class CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
528 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
529{
530public:
531 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION() noexcept
532 {
533 Init();
534 }
535 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
536 {
537 Init();
538 AddToStateObject(ContainingStateObject);
539 }
540 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
541 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
542 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
543 CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
544 void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
545 {
546 m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
547 }
548 void AddExport(LPCWSTR Export)
549 {
550 m_Desc.NumExports++;
551 m_Exports.push_back(m_Strings.LocalCopy(Export));
552 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
553 }
554 template<size_t N>
555 void AddExports(LPCWSTR (&Exports)[N])
556 {
557 for (UINT i = 0; i < N; i++)
558 {
559 AddExport(Exports[i]);
560 }
561 }
562 void AddExports(const LPCWSTR* Exports, UINT N)
563 {
564 for (UINT i = 0; i < N; i++)
565 {
566 AddExport(Exports[i]);
567 }
568 }
569 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
570 {
571 return D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
572 }
573 operator const D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&() const noexcept { return m_Desc; }
574private:
575 void Init() noexcept
576 {
577 SUBOBJECT_HELPER_BASE::Init();
578 m_Desc = {};
579 m_Strings.clear();
580 m_SubobjectName.clear();
581 m_Exports.clear();
582 }
583 void* Data() noexcept override { return &m_Desc; }
584 D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION m_Desc;
585 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
586 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_SubobjectName;
587 std::vector<LPCWSTR> m_Exports;
588};
589
590//------------------------------------------------------------------------------------------------
591class CD3DX12_HIT_GROUP_SUBOBJECT
592 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
593{
594public:
595 CD3DX12_HIT_GROUP_SUBOBJECT() noexcept
596 {
597 Init();
598 }
599 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
600 {
601 Init();
602 AddToStateObject(ContainingStateObject);
603 }
604 CD3DX12_HIT_GROUP_SUBOBJECT(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
605 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
606 CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
607 CD3DX12_HIT_GROUP_SUBOBJECT& operator=(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
608 void SetHitGroupExport(LPCWSTR exportName)
609 {
610 m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
611 }
612 void SetHitGroupType(D3D12_HIT_GROUP_TYPE Type) noexcept { m_Desc.Type = Type; }
613 void SetAnyHitShaderImport(LPCWSTR importName)
614 {
615 m_Desc.AnyHitShaderImport = m_Strings[1].LocalCopy(importName, true);
616 }
617 void SetClosestHitShaderImport(LPCWSTR importName)
618 {
619 m_Desc.ClosestHitShaderImport = m_Strings[2].LocalCopy(importName, true);
620 }
621 void SetIntersectionShaderImport(LPCWSTR importName)
622 {
623 m_Desc.IntersectionShaderImport = m_Strings[3].LocalCopy(importName, true);
624 }
625 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
626 {
627 return D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP;
628 }
629 operator const D3D12_HIT_GROUP_DESC&() const noexcept { return m_Desc; }
630private:
631 void Init() noexcept
632 {
633 SUBOBJECT_HELPER_BASE::Init();
634 m_Desc = {};
635 for (UINT i = 0; i < m_NumStrings; i++)
636 {
637 m_Strings[i].clear();
638 }
639 }
640 void* Data() noexcept override { return &m_Desc; }
641 D3D12_HIT_GROUP_DESC m_Desc;
642 static constexpr UINT m_NumStrings = 4;
643 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring>
644 m_Strings[m_NumStrings]; // one string for every entrypoint name
645};
646
647//------------------------------------------------------------------------------------------------
648class CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT
649 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
650{
651public:
652 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT() noexcept
653 : m_Desc({})
654 {
655 Init();
656 }
657 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
658 : m_Desc({})
659 {
660 Init();
661 AddToStateObject(ContainingStateObject);
662 }
663 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc)
664 : m_Desc(desc)
665 {
666 Init();
667 }
668 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_SHADER_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
669 : m_Desc(desc)
670 {
671 Init();
672 AddToStateObject(ContainingStateObject);
673 }
674 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
675 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
676 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
677 CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
678 void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
679 {
680 m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
681 m_Desc.MaxAttributeSizeInBytes = MaxAttributeSizeInBytes;
682 }
683 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
684 {
685 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG;
686 }
687 operator const D3D12_RAYTRACING_SHADER_CONFIG&() const noexcept { return m_Desc; }
688 operator D3D12_RAYTRACING_SHADER_CONFIG&() noexcept { return m_Desc; }
689private:
690 void Init() noexcept
691 {
692 SUBOBJECT_HELPER_BASE::Init();
693 }
694 void* Data() noexcept override { return &m_Desc; }
695 D3D12_RAYTRACING_SHADER_CONFIG m_Desc;
696};
697
698//------------------------------------------------------------------------------------------------
699class CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT
700 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
701{
702public:
703 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT() noexcept
704 : m_Desc({})
705 {
706 Init();
707 }
708 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
709 : m_Desc({})
710 {
711 Init();
712 AddToStateObject(ContainingStateObject);
713 }
714 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc)
715 : m_Desc(desc)
716 {
717 Init();
718 }
719 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
720 : m_Desc(desc)
721 {
722 Init();
723 AddToStateObject(ContainingStateObject);
724 }
725 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
726 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
727 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
728 CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
729 void Config(UINT MaxTraceRecursionDepth) noexcept
730 {
731 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
732 }
733 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
734 {
735 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG;
736 }
737 operator const D3D12_RAYTRACING_PIPELINE_CONFIG&() const noexcept { return m_Desc; }
738 operator D3D12_RAYTRACING_PIPELINE_CONFIG&() noexcept { return m_Desc; }
739private:
740 void Init() noexcept
741 {
742 SUBOBJECT_HELPER_BASE::Init();
743 }
744 void* Data() noexcept override { return &m_Desc; }
745 D3D12_RAYTRACING_PIPELINE_CONFIG m_Desc;
746};
747
748//------------------------------------------------------------------------------------------------
749class CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT
750 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
751{
752public:
753 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT() noexcept
754 : m_Desc({})
755 {
756 Init();
757 }
758 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
759 : m_Desc({})
760 {
761 Init();
762 AddToStateObject(ContainingStateObject);
763 }
764 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc)
765 : m_Desc(desc)
766 {
767 Init();
768 }
769 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const D3D12_RAYTRACING_PIPELINE_CONFIG1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
770 : m_Desc(desc)
771 {
772 Init();
773 AddToStateObject(ContainingStateObject);
774 }
775 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
776 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
777 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
778 CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
779 void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
780 {
781 m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
782 m_Desc.Flags = Flags;
783 }
784 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
785 {
786 return D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1;
787 }
788 operator const D3D12_RAYTRACING_PIPELINE_CONFIG1&() const noexcept { return m_Desc; }
789 operator D3D12_RAYTRACING_PIPELINE_CONFIG1&() noexcept { return m_Desc; }
790private:
791 void Init() noexcept
792 {
793 SUBOBJECT_HELPER_BASE::Init();
794 }
795 void* Data() noexcept override { return &m_Desc; }
796 D3D12_RAYTRACING_PIPELINE_CONFIG1 m_Desc;
797};
798
799//------------------------------------------------------------------------------------------------
800class CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT
801 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
802{
803public:
804 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
805 {
806 Init();
807 }
808 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
809 {
810 Init();
811 AddToStateObject(ContainingStateObject);
812 }
813 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
814 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
815 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
816 CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
817 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
818 {
819 m_pRootSig = pRootSig;
820 }
821 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
822 {
823 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE;
824 }
825 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
826private:
827 void Init() noexcept
828 {
829 SUBOBJECT_HELPER_BASE::Init();
830 m_pRootSig = nullptr;
831 }
832 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
833 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
834};
835
836
837//------------------------------------------------------------------------------------------------
838class CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT
839 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
840{
841public:
842 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT() noexcept
843 {
844 Init();
845 }
846 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
847 {
848 Init();
849 AddToStateObject(ContainingStateObject);
850 }
851 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
852 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
853 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
854 CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
855 void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
856 {
857 m_pRootSig = pRootSig;
858 }
859 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
860 {
861 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE;
862 }
863 operator ID3D12RootSignature*() const noexcept { return D3DX12_COM_PTR_GET(m_pRootSig); }
864private:
865 void Init() noexcept
866 {
867 SUBOBJECT_HELPER_BASE::Init();
868 m_pRootSig = nullptr;
869 }
870 void* Data() noexcept override { return D3DX12_COM_PTR_ADDRESSOF(m_pRootSig); }
871 D3DX12_COM_PTR<ID3D12RootSignature> m_pRootSig;
872};
873
874#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
875//------------------------------------------------------------------------------------------------
876class CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
877 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
878{
879public:
880 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
881 : m_Desc({})
882 {
883 Init();
884 }
885 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
886 : m_Desc({})
887 {
888 Init();
889 AddToStateObject(ContainingStateObject);
890 }
891 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
892 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
893 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
894 CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
895 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
896 {
897 if (pDesc)
898 {
899 m_Desc.Desc = {};
900 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
901 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
902 }
903 }
904 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
905 {
906 return D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_SERIALIZED_ROOT_SIGNATURE;
907 }
908 operator const D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
909 operator D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
910private:
911 void Init() noexcept
912 {
913 SUBOBJECT_HELPER_BASE::Init();
914 m_Desc = {};
915 }
916 void* Data() noexcept override { return &m_Desc; }
917 D3D12_GLOBAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
918};
919
920//------------------------------------------------------------------------------------------------
921class CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT
922 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
923{
924public:
925 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT() noexcept
926 : m_Desc({})
927 {
928 Init();
929 }
930 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
931 : m_Desc({})
932 {
933 Init();
934 AddToStateObject(ContainingStateObject);
935 }
936 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
937 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
938 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
939 CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_SERIALIZED_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
940 void SetRootSignature(const D3D12_SERIALIZED_ROOT_SIGNATURE_DESC* pDesc) noexcept
941 {
942 if (pDesc)
943 {
944 m_Desc.Desc = {};
945 m_Desc.Desc.pSerializedBlob = pDesc->pSerializedBlob;
946 m_Desc.Desc.SerializedBlobSizeInBytes = pDesc->SerializedBlobSizeInBytes;
947 }
948 }
949 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
950 {
951 return D3D12_STATE_SUBOBJECT_TYPE_LOCAL_SERIALIZED_ROOT_SIGNATURE;
952 }
953 operator const D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() const noexcept { return m_Desc; }
954 operator D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE&() noexcept { return m_Desc; }
955private:
956 void Init() noexcept
957 {
958 SUBOBJECT_HELPER_BASE::Init();
959 m_Desc = {};
960 }
961 void* Data() noexcept override { return &m_Desc; }
962 D3D12_LOCAL_SERIALIZED_ROOT_SIGNATURE m_Desc;
963};
964
965
966//------------------------------------------------------------------------------------------------
967class CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT
968 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
969{
970public:
971 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT() noexcept
972 {
973 Init();
974 }
975 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
976 {
977 Init();
978 AddToStateObject(ContainingStateObject);
979 }
980 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
981 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& other) = delete;
982 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
983 CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_BY_KEY_SUBOBJECT&& other) = default;
984 void SetExistingCollection(const void* pKey, UINT KeySize) noexcept
985 {
986 const unsigned char* pKeyBytes = static_cast<const unsigned char *>(pKey);
987 m_Key.clear();
988 m_Key.insert(m_Key.begin(), pKeyBytes, pKeyBytes + KeySize);
989 m_Desc.pKey = m_Key.data();
990 m_Desc.KeySize = KeySize;
991 }
992 void DefineExport(
993 LPCWSTR Name,
994 LPCWSTR ExportToRename = nullptr,
995 D3D12_EXPORT_FLAGS Flags = D3D12_EXPORT_FLAG_NONE)
996 {
997 D3D12_EXPORT_DESC Export;
998 Export.Name = m_Strings.LocalCopy(Name);
999 Export.ExportToRename = m_Strings.LocalCopy(ExportToRename);
1000 Export.Flags = Flags;
1001 m_Exports.push_back(Export);
1002 m_Desc.pExports = &m_Exports[0]; // using ugly way to get pointer in case .data() is not defined
1003 m_Desc.NumExports = static_cast<UINT>(m_Exports.size());
1004 }
1005 template<size_t N>
1006 void DefineExports(LPCWSTR(&Exports)[N])
1007 {
1008 for (UINT i = 0; i < N; i++)
1009 {
1010 DefineExport(Exports[i]);
1011 }
1012 }
1013 void DefineExports(const LPCWSTR* Exports, UINT N)
1014 {
1015 for (UINT i = 0; i < N; i++)
1016 {
1017 DefineExport(Exports[i]);
1018 }
1019 }
1020 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1021 {
1022 return D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION_BY_KEY;
1023 }
1024 operator const D3D12_EXISTING_COLLECTION_BY_KEY_DESC&() const noexcept { return m_Desc; }
1025private:
1026 void Init() noexcept
1027 {
1028 SUBOBJECT_HELPER_BASE::Init();
1029 m_Desc = {};
1030 m_Strings.clear();
1031 m_Exports.clear();
1032 }
1033 void* Data() noexcept override { return &m_Desc; }
1034 D3D12_EXISTING_COLLECTION_BY_KEY_DESC m_Desc;
1035 std::vector<unsigned char> m_Key;
1036 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
1037 std::vector<D3D12_EXPORT_DESC> m_Exports;
1038};
1039
1040#endif // defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 618)
1041
1042//------------------------------------------------------------------------------------------------
1043class CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT
1044 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1045{
1046public:
1047 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT() noexcept
1048 : m_Desc({})
1049 {
1050 Init();
1051 }
1052 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1053 : m_Desc({})
1054 {
1055 Init();
1056 AddToStateObject(ContainingStateObject);
1057 }
1058 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc) noexcept
1059 : m_Desc(desc)
1060 {
1061 Init();
1062 }
1063 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const D3D12_STATE_OBJECT_CONFIG &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1064 : m_Desc(desc)
1065 {
1066 Init();
1067 AddToStateObject(ContainingStateObject);
1068 }
1069 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1070 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
1071 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1072 CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
1073 void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
1074 {
1075 m_Desc.Flags = Flags;
1076 }
1077 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1078 {
1079 return D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG;
1080 }
1081 operator const D3D12_STATE_OBJECT_CONFIG&() const noexcept { return m_Desc; }
1082 operator D3D12_STATE_OBJECT_CONFIG&() noexcept { return m_Desc; }
1083private:
1084 void Init() noexcept
1085 {
1086 SUBOBJECT_HELPER_BASE::Init();
1087 }
1088 void* Data() noexcept override { return &m_Desc; }
1089 D3D12_STATE_OBJECT_CONFIG m_Desc;
1090};
1091
1092//------------------------------------------------------------------------------------------------
1093class CD3DX12_NODE_MASK_SUBOBJECT
1094 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1095{
1096public:
1097 CD3DX12_NODE_MASK_SUBOBJECT() noexcept
1098 : m_Desc({})
1099 {
1100 Init();
1101 }
1102 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1103 : m_Desc({})
1104 {
1105 Init();
1106 AddToStateObject(ContainingStateObject);
1107 }
1108 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc) noexcept
1109 : m_Desc(desc)
1110 {
1111 Init();
1112 }
1113 CD3DX12_NODE_MASK_SUBOBJECT(const D3D12_NODE_MASK &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1114 : m_Desc(desc)
1115 {
1116 Init();
1117 AddToStateObject(ContainingStateObject);
1118 }
1119 CD3DX12_NODE_MASK_SUBOBJECT(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1120 CD3DX12_NODE_MASK_SUBOBJECT& operator=(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
1121 CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1122 CD3DX12_NODE_MASK_SUBOBJECT& operator=(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
1123 void SetNodeMask(UINT NodeMask) noexcept
1124 {
1125 m_Desc.NodeMask = NodeMask;
1126 }
1127 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1128 {
1129 return D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK;
1130 }
1131 operator const D3D12_NODE_MASK&() const noexcept { return m_Desc; }
1132 operator D3D12_NODE_MASK&() noexcept { return m_Desc; }
1133private:
1134 void Init() noexcept
1135 {
1136 SUBOBJECT_HELPER_BASE::Init();
1137 }
1138 void* Data() noexcept override { return &m_Desc; }
1139 D3D12_NODE_MASK m_Desc;
1140};
1141
1142#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
1143//------------------------------------------------------------------------------------------------
1144class CD3DX12_STREAM_OUTPUT_SUBOBJECT
1145 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1146{
1147public:
1148 CD3DX12_STREAM_OUTPUT_SUBOBJECT()
1149 {
1150 Init();
1151 }
1152 CD3DX12_STREAM_OUTPUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1153 {
1154 Init();
1155 AddToStateObject(ContainingStateObject);
1156 }
1157 void AddSODeclEntry(const D3D12_SO_DECLARATION_ENTRY &entry)
1158 {
1159 m_soDecalEntries.emplace_back(D3D12_SO_DECLARATION_ENTRY{
1160 entry.Stream,
1161 m_Strings.LocalCopy(entry.SemanticName),
1162 entry.SemanticIndex,
1163 entry.StartComponent,
1164 entry.ComponentCount,
1165 entry.OutputSlot
1166 });
1167 m_Desc.NumEntries++;
1168 // Below: using ugly way to get pointer in case .data() is not defined
1169 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1170 }
1171 void SetSODeclEntries(const D3D12_SO_DECLARATION_ENTRY* soDeclEntries, UINT numEntries)
1172 {
1173 m_soDecalEntries.resize(numEntries);
1174 for (UINT i = 0; i < numEntries; i++)
1175 {
1176 m_soDecalEntries[i] = D3D12_SO_DECLARATION_ENTRY{
1177 soDeclEntries[i].Stream,
1178 m_Strings.LocalCopy(soDeclEntries[i].SemanticName),
1179 soDeclEntries[i].SemanticIndex,
1180 soDeclEntries[i].StartComponent,
1181 soDeclEntries[i].ComponentCount,
1182 soDeclEntries[i].OutputSlot
1183 };
1184 }
1185 m_Desc.NumEntries = numEntries;
1186 // Below: using ugly way to get pointer in case .data() is not defined
1187 if (numEntries > 0)
1188 {
1189 m_Desc.pSODeclaration = &m_soDecalEntries[0];
1190 }
1191 }
1192 void SetBufferStrides(const UINT* bufferStrides, UINT numStrides)
1193 {
1194 for (UINT i = 0; i < numStrides; ++i)
1195 {
1196 m_Strides[i] = bufferStrides[i];
1197 }
1198 m_Desc.pBufferStrides = m_Strides;
1199 m_Desc.NumStrides = numStrides;
1200 }
1201 void SetRasterizedStream(UINT rasterizedStream)
1202 {
1203 m_Desc.RasterizedStream = rasterizedStream;
1204 }
1205 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1206 {
1207 return D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT;
1208 }
1209 operator const D3D12_STREAM_OUTPUT_DESC& () const noexcept { return m_Desc; }
1210
1211private:
1212 void Init()
1213 {
1214 SUBOBJECT_HELPER_BASE::Init();
1215 m_Desc = {};
1216 }
1217 void* Data() noexcept override { return &m_Desc; }
1218 D3D12_STREAM_OUTPUT_DESC m_Desc;
1219 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1220 std::vector<D3D12_SO_DECLARATION_ENTRY> m_soDecalEntries;
1221 UINT m_Strides[D3D12_SO_STREAM_COUNT];
1222};
1223
1224//------------------------------------------------------------------------------------------------
1225class CD3DX12_BLEND_SUBOBJECT
1226 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1227{
1228public:
1229 CD3DX12_BLEND_SUBOBJECT()
1230 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1231 {
1232 Init();
1233 }
1234 CD3DX12_BLEND_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1235 : m_Desc(CD3DX12_BLEND_DESC(D3D12_DEFAULT))
1236 {
1237 Init();
1238 AddToStateObject(ContainingStateObject);
1239 }
1240 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc)
1241 : m_Desc(desc)
1242 {
1243 Init();
1244 }
1245 CD3DX12_BLEND_SUBOBJECT(const D3D12_BLEND_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1246 : m_Desc(desc)
1247 {
1248 Init();
1249 AddToStateObject(ContainingStateObject);
1250 }
1251 void SetAlphaToCoverageEnable(bool alphaToCoverageEnable)
1252 {
1253 m_Desc.AlphaToCoverageEnable = alphaToCoverageEnable;
1254 }
1255 void SetIndependentBlendEnable(bool independentBlendEnable)
1256 {
1257 m_Desc.IndependentBlendEnable = independentBlendEnable;
1258 }
1259 void SetRenderTarget(UINT renderTargetIndex, const D3D12_RENDER_TARGET_BLEND_DESC& renderTargetBlendDesc)
1260 {
1261 m_Desc.RenderTarget[renderTargetIndex].BlendEnable = renderTargetBlendDesc.BlendEnable;
1262 m_Desc.RenderTarget[renderTargetIndex].BlendOp = renderTargetBlendDesc.BlendOp;
1263 m_Desc.RenderTarget[renderTargetIndex].BlendOpAlpha = renderTargetBlendDesc.BlendOpAlpha;
1264 m_Desc.RenderTarget[renderTargetIndex].DestBlend = renderTargetBlendDesc.DestBlend;
1265 m_Desc.RenderTarget[renderTargetIndex].DestBlendAlpha = renderTargetBlendDesc.DestBlendAlpha;
1266 m_Desc.RenderTarget[renderTargetIndex].LogicOp = renderTargetBlendDesc.LogicOp;
1267 m_Desc.RenderTarget[renderTargetIndex].LogicOpEnable = renderTargetBlendDesc.LogicOpEnable;
1268 m_Desc.RenderTarget[renderTargetIndex].RenderTargetWriteMask = renderTargetBlendDesc.RenderTargetWriteMask;
1269 m_Desc.RenderTarget[renderTargetIndex].SrcBlend = renderTargetBlendDesc.SrcBlend;
1270 m_Desc.RenderTarget[renderTargetIndex].SrcBlendAlpha = renderTargetBlendDesc.SrcBlendAlpha;
1271 }
1272 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1273 {
1274 return D3D12_STATE_SUBOBJECT_TYPE_BLEND;
1275 }
1276 operator const D3D12_BLEND_DESC& () const noexcept { return m_Desc; }
1277 operator D3D12_BLEND_DESC& () noexcept { return m_Desc; }
1278private:
1279 void Init() noexcept
1280 {
1281 SUBOBJECT_HELPER_BASE::Init();
1282 }
1283 void* Data() noexcept override { return &m_Desc; }
1284 CD3DX12_BLEND_DESC m_Desc;
1285};
1286
1287//------------------------------------------------------------------------------------------------
1288class CD3DX12_RASTERIZER_SUBOBJECT
1289 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1290{
1291public:
1292 CD3DX12_RASTERIZER_SUBOBJECT()
1293 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1294 {
1295 Init();
1296 }
1297 CD3DX12_RASTERIZER_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1298 : m_Desc(CD3DX12_RASTERIZER_DESC2(D3D12_DEFAULT))
1299 {
1300 Init();
1301 AddToStateObject(ContainingStateObject);
1302 }
1303 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc)
1304 : m_Desc(desc)
1305 {
1306 Init();
1307 }
1308 CD3DX12_RASTERIZER_SUBOBJECT(const D3D12_RASTERIZER_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1309 : m_Desc(desc)
1310 {
1311 Init();
1312 AddToStateObject(ContainingStateObject);
1313 }
1314 void SetFillMode(D3D12_FILL_MODE fillMode)
1315 {
1316 m_Desc.FillMode = fillMode;
1317 }
1318 void SetCullMode(D3D12_CULL_MODE cullMode)
1319 {
1320 m_Desc.CullMode = cullMode;
1321 }
1322 void SetFrontCounterClockwise(BOOL frontCounterClockwise)
1323 {
1324 m_Desc.FrontCounterClockwise = frontCounterClockwise;
1325 }
1326 void SetDepthBias(FLOAT depthBias)
1327 {
1328 m_Desc.DepthBias = depthBias;
1329 }
1330 void SetDepthBiasClamp(FLOAT depthBiasClamp)
1331 {
1332 m_Desc.DepthBiasClamp = depthBiasClamp;
1333 }
1334 void SetSlopeScaledDepthBias(FLOAT slopeScaledDepthBias)
1335 {
1336 m_Desc.SlopeScaledDepthBias = slopeScaledDepthBias;
1337 }
1338 void SetDepthClipEnable(BOOL depthClipEnable)
1339 {
1340 m_Desc.DepthClipEnable = depthClipEnable;
1341 }
1342 void SetLineRasterizationMode(D3D12_LINE_RASTERIZATION_MODE lineRasterizationMode)
1343 {
1344 m_Desc.LineRasterizationMode = lineRasterizationMode;
1345 }
1346 void SetForcedSampleCount(UINT forcedSampleCount)
1347 {
1348 m_Desc.ForcedSampleCount = forcedSampleCount;
1349 }
1350 void SetConservativeRaster(D3D12_CONSERVATIVE_RASTERIZATION_MODE conservativeRaster)
1351 {
1352 m_Desc.ConservativeRaster = conservativeRaster;
1353 }
1354 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1355 {
1356 return D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER;
1357 }
1358 operator const D3D12_RASTERIZER_DESC2& () const noexcept { return m_Desc; }
1359 operator D3D12_RASTERIZER_DESC2& () noexcept { return m_Desc; }
1360private:
1361 void Init() noexcept
1362 {
1363 SUBOBJECT_HELPER_BASE::Init();
1364 }
1365 void* Data() noexcept override { return &m_Desc; }
1366 CD3DX12_RASTERIZER_DESC2 m_Desc;
1367};
1368
1369//------------------------------------------------------------------------------------------------
1370class CD3DX12_DEPTH_STENCIL2_SUBOBJECT
1371 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1372{
1373public:
1374 CD3DX12_DEPTH_STENCIL2_SUBOBJECT()
1375 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1376 {
1377 Init();
1378 }
1379 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1380 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC2(D3D12_DEFAULT))
1381 {
1382 Init();
1383 AddToStateObject(ContainingStateObject);
1384 }
1385 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc)
1386 : m_Desc(desc)
1387 {
1388 Init();
1389 }
1390 CD3DX12_DEPTH_STENCIL2_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC2 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1391 : m_Desc(desc)
1392 {
1393 Init();
1394 AddToStateObject(ContainingStateObject);
1395 }
1396 void SetDepthEnable(BOOL depthEnable)
1397 {
1398 m_Desc.DepthEnable = depthEnable;
1399 }
1400 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1401 {
1402 m_Desc.DepthWriteMask = depthWriteMask;
1403 }
1404 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1405 {
1406 m_Desc.DepthFunc = depthFunc;
1407 }
1408 void SetStencilEnable(BOOL stencilEnable)
1409 {
1410 m_Desc.StencilEnable = stencilEnable;
1411 }
1412 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC1 frontFace)
1413 {
1414 m_Desc.FrontFace = {
1415 frontFace.StencilFailOp,
1416 frontFace.StencilDepthFailOp,
1417 frontFace.StencilPassOp,
1418 frontFace.StencilFunc,
1419 frontFace.StencilReadMask,
1420 frontFace.StencilWriteMask
1421 };
1422 }
1423 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC1 backFace)
1424 {
1425 m_Desc.BackFace = {
1426 backFace.StencilFailOp,
1427 backFace.StencilDepthFailOp,
1428 backFace.StencilPassOp,
1429 backFace.StencilFunc,
1430 backFace.StencilReadMask,
1431 backFace.StencilWriteMask
1432 };
1433 }
1434 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1435 {
1436 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1437 }
1438 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1439 {
1440 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2;
1441 }
1442 operator const D3D12_DEPTH_STENCIL_DESC2& () const noexcept { return m_Desc; }
1443 operator D3D12_DEPTH_STENCIL_DESC2& () noexcept { return m_Desc; }
1444private:
1445 void Init() noexcept
1446 {
1447 SUBOBJECT_HELPER_BASE::Init();
1448 }
1449 void* Data() noexcept override { return &m_Desc; }
1450 CD3DX12_DEPTH_STENCIL_DESC2 m_Desc;
1451};
1452
1453//------------------------------------------------------------------------------------------------
1454class CD3DX12_INPUT_LAYOUT_SUBOBJECT
1455 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1456{
1457public:
1458 CD3DX12_INPUT_LAYOUT_SUBOBJECT()
1459 {
1460 Init();
1461 }
1462 CD3DX12_INPUT_LAYOUT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1463 {
1464 Init();
1465 AddToStateObject(ContainingStateObject);
1466 }
1467 void AddInputLayoutElementDesc(D3D12_INPUT_ELEMENT_DESC inputLayoutElementDesc)
1468 {
1469 m_inputLayoutElements.emplace_back(
1470 D3D12_INPUT_ELEMENT_DESC{
1471 m_Strings.LocalCopy(inputLayoutElementDesc.SemanticName),
1472 inputLayoutElementDesc.SemanticIndex,
1473 inputLayoutElementDesc.Format,
1474 inputLayoutElementDesc.InputSlot,
1475 inputLayoutElementDesc.AlignedByteOffset,
1476 inputLayoutElementDesc.InputSlotClass,
1477 inputLayoutElementDesc.InstanceDataStepRate
1478 });
1479 ++m_Desc.NumElements;
1480 // Below: using ugly way to get pointer in case .data() is not defined
1481 m_Desc.pInputElementDescs = &m_inputLayoutElements[0];
1482 }
1483 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1484 {
1485 return D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT;
1486 }
1487 operator const D3D12_INPUT_LAYOUT_DESC& () const noexcept { return m_Desc; }
1488private:
1489 void Init() noexcept
1490 {
1491 SUBOBJECT_HELPER_BASE::Init();
1492 m_Desc = {};
1493 m_inputLayoutElements.clear();
1494 }
1495 void* Data() noexcept override { return &m_Desc; }
1496 D3D12_INPUT_LAYOUT_DESC m_Desc;
1497 std::vector<D3D12_INPUT_ELEMENT_DESC> m_inputLayoutElements;
1498 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCSTR, std::string> m_Strings;
1499};
1500
1501//------------------------------------------------------------------------------------------------
1502class CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT
1503 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1504{
1505public:
1506 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT()
1507 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1508 {
1509 Init();
1510 }
1511 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1512 : m_Desc(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED)
1513 {
1514 Init();
1515 AddToStateObject(ContainingStateObject);
1516 }
1517 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc)
1518 : m_Desc(desc)
1519 {
1520 Init();
1521 }
1522 CD3DX12_IB_STRIP_CUT_VALUE_SUBOBJECT(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1523 : m_Desc(desc)
1524 {
1525 Init();
1526 AddToStateObject(ContainingStateObject);
1527 }
1528 void SetIBStripCutValue(D3D12_INDEX_BUFFER_STRIP_CUT_VALUE ibStripCutValue)
1529 {
1530 m_Desc = ibStripCutValue;
1531 }
1532 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1533 {
1534 return D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE;
1535 }
1536 operator const D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () const noexcept { return m_Desc; }
1537 operator D3D12_INDEX_BUFFER_STRIP_CUT_VALUE& () noexcept { return m_Desc; }
1538private:
1539 void Init() noexcept
1540 {
1541 SUBOBJECT_HELPER_BASE::Init();
1542 }
1543 void* Data() noexcept override { return &m_Desc; }
1544 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE m_Desc;
1545};
1546
1547//------------------------------------------------------------------------------------------------
1548class CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT
1549 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1550{
1551public:
1552 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT()
1553 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1554 {
1555 Init();
1556 }
1557 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1558 : m_Desc(D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED)
1559 {
1560 Init();
1561 AddToStateObject(ContainingStateObject);
1562 }
1563 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc)
1564 : m_Desc(desc)
1565 {
1566 Init();
1567 }
1568 CD3DX12_PRIMITIVE_TOPOLOGY_SUBOBJECT(D3D12_PRIMITIVE_TOPOLOGY_TYPE desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1569 : m_Desc(desc)
1570 {
1571 Init();
1572 AddToStateObject(ContainingStateObject);
1573 }
1574 void SetPrimitiveTopologyType(D3D12_PRIMITIVE_TOPOLOGY_TYPE primitiveTopologytype)
1575 {
1576 m_Desc = primitiveTopologytype;
1577 }
1578 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1579 {
1580 return D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY;
1581 }
1582 operator const D3D12_PRIMITIVE_TOPOLOGY_TYPE& () const noexcept { return m_Desc; }
1583 operator D3D12_PRIMITIVE_TOPOLOGY_TYPE& () noexcept { return m_Desc; }
1584private:
1585 void Init() noexcept
1586 {
1587 SUBOBJECT_HELPER_BASE::Init();
1588 }
1589 void* Data() noexcept override { return &m_Desc; }
1590 D3D12_PRIMITIVE_TOPOLOGY_TYPE m_Desc;
1591};
1592
1593//------------------------------------------------------------------------------------------------
1594class CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT
1595 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1596{
1597public:
1598 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT()
1599 : m_Desc({})
1600 {
1601 Init();
1602 }
1603 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1604 : m_Desc({})
1605 {
1606 Init();
1607 AddToStateObject(ContainingStateObject);
1608 }
1609 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc)
1610 : m_Desc(desc)
1611 {
1612 Init();
1613 }
1614 CD3DX12_RENDER_TARGET_FORMATS_SUBOBJECT(const D3D12_RT_FORMAT_ARRAY &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1615 : m_Desc(desc)
1616 {
1617 Init();
1618 AddToStateObject(ContainingStateObject);
1619 }
1620 void SetNumRenderTargets(UINT numRenderTargets)
1621 {
1622 m_Desc.NumRenderTargets = numRenderTargets;
1623 }
1624 void SetRenderTargetFormat(UINT renderTarget, DXGI_FORMAT renderTargetFormat)
1625 {
1626 m_Desc.RTFormats[renderTarget] = renderTargetFormat;
1627 }
1628 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1629 {
1630 return D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS;
1631 }
1632 operator const D3D12_RT_FORMAT_ARRAY& () const noexcept { return m_Desc; }
1633 operator D3D12_RT_FORMAT_ARRAY& () noexcept { return m_Desc; }
1634private:
1635 void Init() noexcept
1636 {
1637 SUBOBJECT_HELPER_BASE::Init();
1638 }
1639 void* Data() noexcept override { return &m_Desc; }
1640 D3D12_RT_FORMAT_ARRAY m_Desc;
1641};
1642
1643//------------------------------------------------------------------------------------------------
1644class CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT
1645 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1646{
1647public:
1648 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT()
1649 : m_Desc(DXGI_FORMAT_UNKNOWN)
1650 {
1651 Init();
1652 }
1653 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1654 : m_Desc(DXGI_FORMAT_UNKNOWN)
1655 {
1656 Init();
1657 AddToStateObject(ContainingStateObject);
1658 }
1659 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc)
1660 : m_Desc(desc)
1661 {
1662 Init();
1663 }
1664 CD3DX12_DEPTH_STENCIL_FORMAT_SUBOBJECT(DXGI_FORMAT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1665 : m_Desc(desc)
1666 {
1667 Init();
1668 AddToStateObject(ContainingStateObject);
1669 }
1670 void SetDepthStencilFormat(DXGI_FORMAT depthStencilFormat)
1671 {
1672 m_Desc = depthStencilFormat;
1673 }
1674 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1675 {
1676 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT;
1677 }
1678 operator const DXGI_FORMAT& () const noexcept { return m_Desc; }
1679 operator DXGI_FORMAT& () noexcept { return m_Desc; }
1680private:
1681 void Init() noexcept
1682 {
1683 SUBOBJECT_HELPER_BASE::Init();
1684 }
1685 void* Data() noexcept override { return &m_Desc; }
1686 DXGI_FORMAT m_Desc;
1687};
1688
1689//------------------------------------------------------------------------------------------------
1690class CD3DX12_SAMPLE_DESC_SUBOBJECT
1691 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1692{
1693public:
1694 CD3DX12_SAMPLE_DESC_SUBOBJECT()
1695 : m_Desc({1, 0})
1696 {
1697 Init();
1698 }
1699 CD3DX12_SAMPLE_DESC_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1700 : m_Desc({1, 0})
1701 {
1702 Init();
1703 AddToStateObject(ContainingStateObject);
1704 }
1705 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc)
1706 : m_Desc(desc)
1707 {
1708 Init();
1709 }
1710 CD3DX12_SAMPLE_DESC_SUBOBJECT(const DXGI_SAMPLE_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1711 : m_Desc(desc)
1712 {
1713 Init();
1714 AddToStateObject(ContainingStateObject);
1715 }
1716 void SetCount(UINT count)
1717 {
1718 m_Desc.Count = count;
1719 }
1720 void SetQuality(UINT quality)
1721 {
1722 m_Desc.Quality = quality;
1723 }
1724 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1725 {
1726 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC;
1727 }
1728 operator const DXGI_SAMPLE_DESC& () const noexcept { return m_Desc; }
1729 operator DXGI_SAMPLE_DESC& () noexcept { return m_Desc; }
1730private:
1731 void Init() noexcept
1732 {
1733 SUBOBJECT_HELPER_BASE::Init();
1734 m_Desc = {};
1735 }
1736 void* Data() noexcept override { return &m_Desc; }
1737 DXGI_SAMPLE_DESC m_Desc;
1738};
1739
1740//------------------------------------------------------------------------------------------------
1741class CD3DX12_FLAGS_SUBOBJECT
1742 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1743{
1744public:
1745 CD3DX12_FLAGS_SUBOBJECT()
1746 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1747 {
1748 Init();
1749 }
1750 CD3DX12_FLAGS_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1751 : m_Desc(D3D12_PIPELINE_STATE_FLAG_NONE)
1752 {
1753 Init();
1754 AddToStateObject(ContainingStateObject);
1755 }
1756 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc)
1757 : m_Desc(desc)
1758 {
1759 Init();
1760 }
1761 CD3DX12_FLAGS_SUBOBJECT(D3D12_PIPELINE_STATE_FLAGS desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1762 : m_Desc(desc)
1763 {
1764 Init();
1765 AddToStateObject(ContainingStateObject);
1766 }
1767 void SetFlags(D3D12_PIPELINE_STATE_FLAGS flags)
1768 {
1769 m_Desc = flags;
1770 }
1771 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1772 {
1773 return D3D12_STATE_SUBOBJECT_TYPE_FLAGS;
1774 }
1775 operator const D3D12_PIPELINE_STATE_FLAGS& () const noexcept { return m_Desc; }
1776 operator D3D12_PIPELINE_STATE_FLAGS& () noexcept { return m_Desc; }
1777private:
1778 void Init() noexcept
1779 {
1780 SUBOBJECT_HELPER_BASE::Init();
1781 }
1782 void* Data() noexcept override { return &m_Desc; }
1783 D3D12_PIPELINE_STATE_FLAGS m_Desc;
1784};
1785
1786//------------------------------------------------------------------------------------------------
1787class CD3DX12_VIEW_INSTANCING_SUBOBJECT
1788 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1789{
1790public:
1791 CD3DX12_VIEW_INSTANCING_SUBOBJECT()
1792 {
1793 Init();
1794 }
1795 CD3DX12_VIEW_INSTANCING_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1796 {
1797 Init();
1798 AddToStateObject(ContainingStateObject);
1799 }
1800 void AddViewInstanceLocation(D3D12_VIEW_INSTANCE_LOCATION viewInstanceLocation)
1801 {
1802 m_Desc.ViewInstanceCount++;
1803 m_viewInstanceLocations.emplace_back(
1804 D3D12_VIEW_INSTANCE_LOCATION
1805 {
1806 viewInstanceLocation.ViewportArrayIndex,
1807 viewInstanceLocation.RenderTargetArrayIndex
1808 }
1809 );
1810 // Below: using ugly way to get pointer in case .data() is not defined
1811 m_Desc.pViewInstanceLocations = &m_viewInstanceLocations[0];
1812 }
1813 void SetFlags(D3D12_VIEW_INSTANCING_FLAGS flags)
1814 {
1815 m_Desc.Flags = flags;
1816 }
1817 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1818 {
1819 return D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING;
1820 }
1821 operator const D3D12_VIEW_INSTANCING_DESC& () const noexcept { return m_Desc; }
1822private:
1823 void Init() noexcept
1824 {
1825 SUBOBJECT_HELPER_BASE::Init();
1826 m_Desc = CD3DX12_VIEW_INSTANCING_DESC(D3D12_DEFAULT);
1827 m_viewInstanceLocations.clear();
1828 }
1829 void* Data() noexcept override { return &m_Desc; }
1830 CD3DX12_VIEW_INSTANCING_DESC m_Desc;
1831 std::vector<D3D12_VIEW_INSTANCE_LOCATION> m_viewInstanceLocations;
1832};
1833
1834//------------------------------------------------------------------------------------------------
1835class CD3DX12_DEPTH_STENCIL_SUBOBJECT
1836 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1837{
1838public:
1839 CD3DX12_DEPTH_STENCIL_SUBOBJECT()
1840 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1841 {
1842 Init();
1843 }
1844 CD3DX12_DEPTH_STENCIL_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1845 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT))
1846 {
1847 Init();
1848 AddToStateObject(ContainingStateObject);
1849 }
1850 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc)
1851 : m_Desc(desc)
1852 {
1853 Init();
1854 }
1855 CD3DX12_DEPTH_STENCIL_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1856 : m_Desc(desc)
1857 {
1858 Init();
1859 AddToStateObject(ContainingStateObject);
1860 }
1861 void SetDepthEnable(BOOL depthEnable)
1862 {
1863 m_Desc.DepthEnable = depthEnable;
1864 }
1865 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1866 {
1867 m_Desc.DepthWriteMask = depthWriteMask;
1868 }
1869 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1870 {
1871 m_Desc.DepthFunc = depthFunc;
1872 }
1873 void SetStencilEnable(BOOL stencilEnable)
1874 {
1875 m_Desc.StencilEnable = stencilEnable;
1876 }
1877 void SetStencilReadMask(UINT8 stencilReadMask)
1878 {
1879 m_Desc.StencilReadMask = stencilReadMask;
1880 }
1881 void SetStencilWriteMask(UINT8 stencilWriteMask)
1882 {
1883 m_Desc.StencilWriteMask = stencilWriteMask;
1884 }
1885 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1886 {
1887 m_Desc.FrontFace = {
1888 frontFace.StencilFailOp,
1889 frontFace.StencilDepthFailOp,
1890 frontFace.StencilPassOp,
1891 frontFace.StencilFunc
1892 };
1893 }
1894 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1895 {
1896 m_Desc.BackFace = {
1897 backFace.StencilFailOp,
1898 backFace.StencilDepthFailOp,
1899 backFace.StencilPassOp,
1900 backFace.StencilFunc
1901 };
1902 }
1903 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1904 {
1905 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL;
1906 }
1907 operator const D3D12_DEPTH_STENCIL_DESC& () const noexcept { return m_Desc; }
1908 operator D3D12_DEPTH_STENCIL_DESC& () noexcept { return m_Desc; }
1909private:
1910 void Init() noexcept
1911 {
1912 SUBOBJECT_HELPER_BASE::Init();
1913 }
1914 void* Data() noexcept override { return &m_Desc; }
1915 CD3DX12_DEPTH_STENCIL_DESC m_Desc;
1916};
1917
1918//------------------------------------------------------------------------------------------------
1919class CD3DX12_DEPTH_STENCIL1_SUBOBJECT
1920 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
1921{
1922public:
1923 CD3DX12_DEPTH_STENCIL1_SUBOBJECT()
1924 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1925 {
1926 Init();
1927 }
1928 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1929 : m_Desc(CD3DX12_DEPTH_STENCIL_DESC1(D3D12_DEFAULT))
1930 {
1931 Init();
1932 AddToStateObject(ContainingStateObject);
1933 }
1934 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc)
1935 : m_Desc(desc)
1936 {
1937 Init();
1938 }
1939 CD3DX12_DEPTH_STENCIL1_SUBOBJECT(const D3D12_DEPTH_STENCIL_DESC1 &desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
1940 : m_Desc(desc)
1941 {
1942 Init();
1943 AddToStateObject(ContainingStateObject);
1944 }
1945 void SetDepthEnable(BOOL depthEnable)
1946 {
1947 m_Desc.DepthEnable = depthEnable;
1948 }
1949 void SetDepthWriteMask(D3D12_DEPTH_WRITE_MASK depthWriteMask)
1950 {
1951 m_Desc.DepthWriteMask = depthWriteMask;
1952 }
1953 void SetDepthFunc(D3D12_COMPARISON_FUNC depthFunc)
1954 {
1955 m_Desc.DepthFunc = depthFunc;
1956 }
1957 void SetStencilEnable(BOOL stencilEnable)
1958 {
1959 m_Desc.StencilEnable = stencilEnable;
1960 }
1961 void SetStencilReadMask(UINT8 stencilReadMask)
1962 {
1963 m_Desc.StencilReadMask = stencilReadMask;
1964 }
1965 void SetStencilWriteMask(UINT8 stencilWriteMask)
1966 {
1967 m_Desc.StencilWriteMask = stencilWriteMask;
1968 }
1969 void SetFrontFace(D3D12_DEPTH_STENCILOP_DESC frontFace)
1970 {
1971 m_Desc.FrontFace = {
1972 frontFace.StencilFailOp,
1973 frontFace.StencilDepthFailOp,
1974 frontFace.StencilPassOp,
1975 frontFace.StencilFunc
1976 };
1977 }
1978 void SetBackFace(D3D12_DEPTH_STENCILOP_DESC backFace)
1979 {
1980 m_Desc.BackFace = {
1981 backFace.StencilFailOp,
1982 backFace.StencilDepthFailOp,
1983 backFace.StencilPassOp,
1984 backFace.StencilFunc
1985 };
1986 }
1987 void SetDepthBoundsTestEnable(BOOL depthBoundsTestEnable)
1988 {
1989 m_Desc.DepthBoundsTestEnable = depthBoundsTestEnable;
1990 }
1991 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
1992 {
1993 return D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1;
1994 }
1995 operator const D3D12_DEPTH_STENCIL_DESC1& () const noexcept { return m_Desc; }
1996 operator D3D12_DEPTH_STENCIL_DESC1& () noexcept { return m_Desc; }
1997private:
1998 void Init() noexcept
1999 {
2000 SUBOBJECT_HELPER_BASE::Init();
2001 }
2002 void* Data() noexcept override { return &m_Desc; }
2003 CD3DX12_DEPTH_STENCIL_DESC1 m_Desc;
2004};
2005
2006//------------------------------------------------------------------------------------------------
2007class CD3DX12_SAMPLE_MASK_SUBOBJECT
2008 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2009{
2010public:
2011 CD3DX12_SAMPLE_MASK_SUBOBJECT()
2012 : m_Desc(0xffffffffu)
2013 {
2014 Init();
2015 }
2016 CD3DX12_SAMPLE_MASK_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2017 : m_Desc(0xffffffffu)
2018 {
2019 Init();
2020 AddToStateObject(ContainingStateObject);
2021 }
2022 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc)
2023 : m_Desc(desc)
2024 {
2025 Init();
2026 }
2027 CD3DX12_SAMPLE_MASK_SUBOBJECT(UINT desc, CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2028 : m_Desc(desc)
2029 {
2030 Init();
2031 AddToStateObject(ContainingStateObject);
2032 }
2033 void SetSampleMask(UINT sampleMask)
2034 {
2035 m_Desc = sampleMask;
2036 }
2037 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2038 {
2039 return D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK;
2040 }
2041 operator const UINT& () const noexcept { return m_Desc; }
2042 operator UINT& () noexcept { return m_Desc; }
2043private:
2044 void Init() noexcept
2045 {
2046 SUBOBJECT_HELPER_BASE::Init();
2047 }
2048 void* Data() noexcept override { return &m_Desc; }
2049 UINT m_Desc;
2050};
2051
2052//------------------------------------------------------------------------------------------------
2053class CD3DX12_GENERIC_PROGRAM_SUBOBJECT
2054 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2055{
2056public:
2057 CD3DX12_GENERIC_PROGRAM_SUBOBJECT()
2058 {
2059 Init();
2060 }
2061 CD3DX12_GENERIC_PROGRAM_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2062 {
2063 Init();
2064 AddToStateObject(ContainingStateObject);
2065 }
2066 void SetProgramName(LPCWSTR ProgramName)
2067 {
2068 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2069 }
2070 void AddExport(LPCWSTR exportName)
2071 {
2072 m_Exports.emplace_back(m_Strings.LocalCopy(exportName));
2073 m_Desc.NumExports++;
2074 // Below: using ugly way to get pointer in case .data() is not defined
2075 m_Desc.pExports = &m_Exports[0];
2076 }
2077 void AddSubobject(const D3D12_STATE_SUBOBJECT& subobject)
2078 {
2079 m_Subobjects.emplace_back(&subobject);
2080 m_Desc.NumSubobjects++;
2081 // Below: using ugly way to get pointer in case .data() is not defined
2082 m_Desc.ppSubobjects = &m_Subobjects[0];
2083 }
2084 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2085 {
2086 return D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM;
2087 }
2088 operator const D3D12_GENERIC_PROGRAM_DESC& () const noexcept { return m_Desc; }
2089private:
2090 void Init() noexcept
2091 {
2092 SUBOBJECT_HELPER_BASE::Init();
2093 m_Desc = {};
2094 }
2095 void* Data() noexcept override { return &m_Desc; }
2096 D3D12_GENERIC_PROGRAM_DESC m_Desc;
2097 std::vector<LPCWSTR> m_Exports;
2098 std::vector<D3D12_STATE_SUBOBJECT const*> m_Subobjects;
2099 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2100};
2101
2102//------------------------------------------------------------------------------------------------
2103class CD3DX12_NODE_OUTPUT_OVERRIDES
2104{
2105public:
2106 CD3DX12_NODE_OUTPUT_OVERRIDES(const D3D12_NODE_OUTPUT_OVERRIDES** ppOwner, UINT* pNumOutputOverrides) noexcept
2107 {
2108 m_Desc.clear();
2109 m_ppOwner = ppOwner;
2110 *m_ppOwner = nullptr;
2111 m_pNumOutputOverrides = pNumOutputOverrides;
2112 *m_pNumOutputOverrides = 0;
2113 }
2114 void NewOutputOverride()
2115 {
2116 m_Desc.emplace_back(D3D12_NODE_OUTPUT_OVERRIDES{});
2117 *m_ppOwner = m_Desc.data();
2118 (*m_pNumOutputOverrides)++;
2119 }
2120 void OutputIndex(UINT index)
2121 {
2122 m_Desc.back().OutputIndex = index;
2123 }
2124 void NewName(LPCWSTR Name, UINT ArrayIndex = 0)
2125 {
2126 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(Name),ArrayIndex });
2127 m_Desc.back().pNewName = &m_NodeIDs.front();
2128 }
2129 void AllowSparseNodes(BOOL bAllow)
2130 {
2131 m_UINTs.emplace_front((UINT)bAllow);
2132 m_Desc.back().pAllowSparseNodes = (BOOL*)&m_UINTs.front();
2133 }
2134 void MaxOutputRecords(UINT maxOutputRecords) noexcept
2135 {
2136 m_UINTs.emplace_front(maxOutputRecords);
2137 m_Desc.back().pMaxRecords = &m_UINTs.front();
2138 }
2139 void MaxOutputRecordsSharedWith(UINT outputIndex) noexcept
2140 {
2141 m_UINTs.emplace_front(outputIndex);
2142 m_Desc.back().pMaxRecordsSharedWithOutputIndex = &m_UINTs.front();
2143 }
2144private:
2145 std::vector<D3D12_NODE_OUTPUT_OVERRIDES> m_Desc;
2146 // Cached parameters
2147 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2148 std::forward_list<UINT> m_UINTs;
2149 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2150 const D3D12_NODE_OUTPUT_OVERRIDES** m_ppOwner;
2151 UINT* m_pNumOutputOverrides;
2152};
2153
2154//------------------------------------------------------------------------------------------------
2155class CD3DX12_WORK_GRAPH_SUBOBJECT;
2156
2157//------------------------------------------------------------------------------------------------
2158class CD3DX12_NODE_HELPER_BASE
2159{
2160protected:
2161 struct Backreference
2162 {
2163 CD3DX12_WORK_GRAPH_SUBOBJECT *m_pGraph;
2164 UINT m_NodeIndex;
2165 };
2166public:
2167 CD3DX12_NODE_HELPER_BASE(const Backreference &BackRef)
2168 : m_BackRef(BackRef)
2169 {
2170 }
2171 virtual ~CD3DX12_NODE_HELPER_BASE() = default;
2172protected:
2173 D3D12_NODE *GetNode() const;
2174 const Backreference m_BackRef;
2175 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2176};
2177
2178//------------------------------------------------------------------------------------------------
2179class CD3DX12_SHADER_NODE // Not specifying launch mode.
2180 // Don't need to distinguish if no parameter overriding is happening
2181 : public CD3DX12_NODE_HELPER_BASE
2182{
2183public:
2184 CD3DX12_SHADER_NODE(
2185 const Backreference &BackRef,
2186 LPCWSTR _Shader = nullptr)
2187 : CD3DX12_NODE_HELPER_BASE(BackRef)
2188 {
2189 GetNode()->NodeType = D3D12_NODE_TYPE_SHADER;
2190 Shader(_Shader);
2191 }
2192 void Shader(LPCWSTR _Shader)
2193 {
2194 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2195 }
2196 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2197};
2198
2199#endif // D3D12_SDK_VERSION >= 612
2200
2201
2202#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2203
2204//------------------------------------------------------------------------------------------------
2205// Use this class when defining a broadcasting launch node where configuration parameters
2206// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2207class CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES
2208 : public CD3DX12_NODE_HELPER_BASE
2209{
2210public:
2211 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES(
2212 const Backreference &BackRef,
2213 LPCWSTR _Shader = nullptr) :
2214 CD3DX12_NODE_HELPER_BASE(BackRef),
2215 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2216 {
2217 Overrides = {};
2218 D3D12_NODE *pNode = GetNode();
2219 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2220 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH;
2221 pNode->Shader.pBroadcastingLaunchOverrides = &Overrides;
2222 Shader(_Shader);
2223 }
2224 void Shader(LPCWSTR _Shader)
2225 {
2226 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2227 }
2228 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2229 void LocalRootArgumentsTableIndex(UINT index)
2230 {
2231 m_UINTs.emplace_front(index);
2232 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2233 }
2234 void ProgramEntry(BOOL bIsProgramEntry)
2235 {
2236 m_UINTs.emplace_front(bIsProgramEntry);
2237 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2238 }
2239 void NewName(D3D12_NODE_ID NodeID)
2240 {
2241 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2242 Overrides.pNewName = &m_NodeIDs.front();
2243 }
2244 void ShareInputOf(D3D12_NODE_ID NodeID)
2245 {
2246 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2247 Overrides.pShareInputOf = &m_NodeIDs.front();
2248 }
2249 void DispatchGrid(UINT x, UINT y, UINT z)
2250 {
2251 m_UINT3s.emplace_front(UINT3{ x,y,z });
2252 Overrides.pDispatchGrid = (UINT*)&m_UINT3s.front();
2253 }
2254 void MaxDispatchGrid(UINT x, UINT y, UINT z)
2255 {
2256 m_UINT3s.emplace_front(UINT3{x,y,z});
2257 Overrides.pMaxDispatchGrid = (UINT*)&m_UINT3s.front();
2258 }
2259 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2260 {
2261 return m_NodeOutputOverrides;
2262 }
2263 D3D12_BROADCASTING_LAUNCH_OVERRIDES Overrides;
2264private:
2265 // Cached parameters
2266 std::forward_list<UINT> m_UINTs;
2267 struct UINT3
2268 {
2269 UINT x;
2270 UINT y;
2271 UINT z;
2272 };
2273 std::forward_list<UINT3> m_UINT3s;
2274 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2275 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2276};
2277
2278//------------------------------------------------------------------------------------------------
2279// Use this class when defining a coalescing launch node where configuration parameters
2280// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2281class CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES
2282 : public CD3DX12_NODE_HELPER_BASE
2283{
2284public:
2285 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES(
2286 const Backreference &BackRef,
2287 LPCWSTR _Shader = nullptr) :
2288 CD3DX12_NODE_HELPER_BASE(BackRef),
2289 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2290 {
2291 Overrides = {};
2292 D3D12_NODE *pNode = GetNode();
2293 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2294 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH;
2295 pNode->Shader.pCoalescingLaunchOverrides = &Overrides;
2296 Shader(_Shader);
2297 }
2298 void Shader(LPCWSTR _Shader)
2299 {
2300 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2301 }
2302 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2303 void LocalRootArgumentsTableIndex(UINT index)
2304 {
2305 m_UINTs.emplace_front(index);
2306 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2307 }
2308 void ProgramEntry(BOOL bIsProgramEntry)
2309 {
2310 m_UINTs.emplace_front(bIsProgramEntry);
2311 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2312 }
2313 void NewName(D3D12_NODE_ID NodeID)
2314 {
2315 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2316 Overrides.pNewName = &m_NodeIDs.front();
2317 }
2318 void ShareInputOf(D3D12_NODE_ID NodeID)
2319 {
2320 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2321 Overrides.pShareInputOf = &m_NodeIDs.front();
2322 }
2323 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2324 {
2325 return m_NodeOutputOverrides;
2326 }
2327 D3D12_COALESCING_LAUNCH_OVERRIDES Overrides;
2328private:
2329 // Cached parameters
2330 std::forward_list<UINT> m_UINTs;
2331 struct UINT3
2332 {
2333 UINT x;
2334 UINT y;
2335 UINT z;
2336 };
2337 std::forward_list<UINT3> m_UINT3s;
2338 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2339 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2340};
2341
2342//------------------------------------------------------------------------------------------------
2343// Use this class when defining a thread launch node where configuration parameters
2344// need to be overridden. If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2345class CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES
2346 : public CD3DX12_NODE_HELPER_BASE
2347{
2348public:
2349 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES(
2350 const Backreference &BackRef,
2351 LPCWSTR _Shader = nullptr) :
2352 CD3DX12_NODE_HELPER_BASE(BackRef),
2353 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2354 {
2355 Overrides = {};
2356 D3D12_NODE *pNode = GetNode();
2357 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2358 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH;
2359 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2360 Shader(_Shader);
2361 }
2362 void Shader(LPCWSTR _Shader)
2363 {
2364 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2365 }
2366 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2367 void LocalRootArgumentsTableIndex(UINT index)
2368 {
2369 m_UINTs.emplace_front(index);
2370 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2371 }
2372 void ProgramEntry(BOOL bIsProgramEntry)
2373 {
2374 m_UINTs.emplace_front(bIsProgramEntry);
2375 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2376 }
2377 void NewName(D3D12_NODE_ID NodeID)
2378 {
2379 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2380 Overrides.pNewName = &m_NodeIDs.front();
2381 }
2382 void ShareInputOf(D3D12_NODE_ID NodeID)
2383 {
2384 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2385 Overrides.pShareInputOf = &m_NodeIDs.front();
2386 }
2387 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2388 {
2389 return m_NodeOutputOverrides;
2390 }
2391 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2392private:
2393 // Cached parameters
2394 std::forward_list<UINT> m_UINTs;
2395 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2396 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2397};
2398
2399//------------------------------------------------------------------------------------------------
2400// Use this class when defining a node where configuration parameters
2401// need to be overridden for parameters that are common to all launch node types.
2402// This option is a convenience if you don't want to determine what the launch mode is
2403// and just want to override a setting that isn't specific to launch mode.
2404// If overrides are not needed, just use CD3DX12_COMPUTE_SHADER_NODE
2405class CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES
2406 : public CD3DX12_NODE_HELPER_BASE
2407{
2408public:
2409 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES(
2410 const Backreference &BackRef,
2411 LPCWSTR _Shader = nullptr) :
2412 CD3DX12_NODE_HELPER_BASE(BackRef),
2413 m_NodeOutputOverrides(&Overrides.pOutputOverrides, &Overrides.NumOutputOverrides)
2414 {
2415 Overrides = {};
2416 D3D12_NODE *pNode = GetNode();
2417 pNode->NodeType = D3D12_NODE_TYPE_SHADER;
2418 pNode->Shader.OverridesType = D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE;
2419 pNode->Shader.pThreadLaunchOverrides = &Overrides;
2420 Shader(_Shader);
2421 }
2422 void Shader(LPCWSTR _Shader)
2423 {
2424 GetNode()->Shader.Shader = m_Strings.LocalCopy(_Shader);
2425 }
2426 LPCWSTR GetShaderName() const { return GetNode()->Shader.Shader; }
2427 void LocalRootArgumentsTableIndex(UINT index)
2428 {
2429 m_UINTs.emplace_front(index);
2430 Overrides.pLocalRootArgumentsTableIndex = &m_UINTs.front();
2431 }
2432 void ProgramEntry(BOOL bIsProgramEntry)
2433 {
2434 m_UINTs.emplace_front(bIsProgramEntry);
2435 Overrides.pProgramEntry = (BOOL*)&m_UINTs.front();
2436 }
2437 void NewName(D3D12_NODE_ID NodeID)
2438 {
2439 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2440 Overrides.pNewName = &m_NodeIDs.front();
2441 }
2442 void ShareInputOf(D3D12_NODE_ID NodeID)
2443 {
2444 m_NodeIDs.emplace_front(D3D12_NODE_ID{ m_Strings.LocalCopy(NodeID.Name),NodeID.ArrayIndex });
2445 Overrides.pShareInputOf = &m_NodeIDs.front();
2446 }
2447 CD3DX12_NODE_OUTPUT_OVERRIDES& NodeOutputOverrides()
2448 {
2449 return m_NodeOutputOverrides;
2450 }
2451 D3D12_THREAD_LAUNCH_OVERRIDES Overrides;
2452private:
2453 // Cached parameters
2454 std::forward_list<UINT> m_UINTs;
2455 std::forward_list<D3D12_NODE_ID> m_NodeIDs;
2456 CD3DX12_NODE_OUTPUT_OVERRIDES m_NodeOutputOverrides;
2457};
2458
2459//------------------------------------------------------------------------------------------------
2460class CD3DX12_WORK_GRAPH_SUBOBJECT
2461 : public CD3DX12_STATE_OBJECT_DESC::SUBOBJECT_HELPER_BASE
2462{
2463public:
2464 CD3DX12_WORK_GRAPH_SUBOBJECT() noexcept
2465 {
2466 Init();
2467 }
2468 CD3DX12_WORK_GRAPH_SUBOBJECT(CD3DX12_STATE_OBJECT_DESC& ContainingStateObject)
2469 {
2470 Init();
2471 AddToStateObject(ContainingStateObject);
2472 }
2473 D3D12_STATE_SUBOBJECT_TYPE Type() const noexcept override
2474 {
2475 return D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH;
2476 }
2477 void IncludeAllAvailableNodes()
2478 {
2479 m_Desc.Flags |= D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES;
2480 }
2481
2482
2483 void SetProgramName(LPCWSTR ProgramName)
2484 {
2485 m_Desc.ProgramName = m_Strings.LocalCopy(ProgramName);
2486 }
2487 void AddEntrypoint(D3D12_NODE_ID Entrypoint)
2488 {
2489 m_Entrypoints.emplace_back(D3D12_NODE_ID{ m_Strings.LocalCopy(Entrypoint.Name),Entrypoint.ArrayIndex });
2490 m_Desc.NumEntrypoints++;
2491 m_Desc.pEntrypoints = m_Entrypoints.data();
2492 }
2493
2494 template<typename T>
2495 T* CreateNode()
2496 {
2497 m_NodeDescs.push_back({});
2498 m_Desc.NumExplicitlyDefinedNodes++;
2499 m_Desc.pExplicitlyDefinedNodes = m_NodeDescs.data();
2500 T* pNodeHelper = new T({this, (UINT)m_NodeDescs.size() - 1});
2501 m_OwnedNodeHelpers.emplace_back(pNodeHelper);
2502 return pNodeHelper;
2503 }
2504 CD3DX12_SHADER_NODE* CreateShaderNode(LPCWSTR Shader = nullptr)
2505 {
2506 auto pNode = CreateNode<CD3DX12_SHADER_NODE>();
2507 pNode->Shader(Shader);
2508 return pNode;
2509 }
2510 CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES* CreateBroadcastingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2511 {
2512 auto pNode = CreateNode<CD3DX12_BROADCASTING_LAUNCH_NODE_OVERRIDES>();
2513 pNode->Shader(Shader);
2514 return pNode;
2515 }
2516 CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES* CreateCoalescingLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2517 {
2518 auto pNode = CreateNode<CD3DX12_COALESCING_LAUNCH_NODE_OVERRIDES>();
2519 pNode->Shader(Shader);
2520 return pNode;
2521 }
2522 CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES* CreateThreadLaunchNodeOverrides(LPCWSTR Shader = nullptr)
2523 {
2524 auto pNode = CreateNode<CD3DX12_THREAD_LAUNCH_NODE_OVERRIDES>();
2525 pNode->Shader(Shader);
2526 return pNode;
2527 }
2528 CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES* CreateCommonComputeNodeOverrides(LPCWSTR Shader = nullptr)
2529 {
2530 auto pNode = CreateNode<CD3DX12_COMMON_COMPUTE_NODE_OVERRIDES>();
2531 pNode->Shader(Shader);
2532 return pNode;
2533 }
2534#endif // D3D12_SDK_VERSION >= 612
2535
2536
2537#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
2538
2539 operator const D3D12_WORK_GRAPH_DESC& () noexcept
2540 {
2541 return m_Desc;
2542 }
2543private:
2544 void Init() noexcept
2545 {
2546 SUBOBJECT_HELPER_BASE::Init();
2547 m_Desc = {};
2548 m_Entrypoints.clear();
2549 m_NodeDescs.clear();
2550 }
2551 void* Data() noexcept override { return &m_Desc; }
2552 D3D12_WORK_GRAPH_DESC m_Desc;
2553 std::vector<D3D12_NODE_ID> m_Entrypoints;
2554 std::vector<D3D12_NODE> m_NodeDescs;
2555 CD3DX12_STATE_OBJECT_DESC::StringContainer<LPCWSTR, std::wstring> m_Strings;
2556 std::vector<std::unique_ptr<const CD3DX12_NODE_HELPER_BASE>> m_OwnedNodeHelpers;
2557 friend class CD3DX12_NODE_HELPER_BASE;
2558};
2559
2560inline D3D12_NODE * CD3DX12_NODE_HELPER_BASE::GetNode() const
2561{
2562 return &m_BackRef.m_pGraph->m_NodeDescs[m_BackRef.m_NodeIndex];
2563}
2564#endif // D3D12_SDK_VERSION >= 612
2565
2566#undef D3DX12_COM_PTR
2567#undef D3DX12_COM_PTR_GET
2568#undef D3DX12_COM_PTR_ADDRESSOF
2569
2570
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxcore.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxcore.h
new file mode 100644
index 0000000..4244eaa
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxcore.h
@@ -0,0 +1,41 @@
1/************************************************************
2* *
3* Copyright (c) Microsoft Corporation. *
4* Licensed under the MIT license. *
5* *
6************************************************************/
7
8#ifndef _DXCOREEXTMODULE_H_
9#define _DXCOREEXTMODULE_H_
10
11#include <winapifamily.h>
12#include "dxcore_interface.h"
13
14#pragma region Application Family or OneCore Family
15#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
16
17#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
18
19STDAPI
20DXCoreCreateAdapterFactory(
21 REFIID riid,
22 _COM_Outptr_ void** ppvFactory
23);
24
25template <class T>
26HRESULT
27DXCoreCreateAdapterFactory(
28 _COM_Outptr_ T** ppvFactory
29)
30{
31 return DXCoreCreateAdapterFactory(IID_PPV_ARGS(ppvFactory));
32}
33
34#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
35
36#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
37#pragma endregion
38
39#endif // _DXCOREEXTMODULE_H_
40
41
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxcore_interface.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxcore_interface.h
new file mode 100644
index 0000000..318208e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxcore_interface.h
@@ -0,0 +1,497 @@
1//
2// DXCore Interface
3// Copyright (C) Microsoft Corporation.
4// Licensed under the MIT license.
5//
6
7#ifndef __dxcore_interface_h__
8#define __dxcore_interface_h__
9
10#ifndef COM_NO_WINDOWS_H
11#include "windows.h"
12#include "ole2.h"
13#endif /*COM_NO_WINDOWS_H*/
14
15#include <stdint.h>
16
17#ifdef __cplusplus
18
19#define _FACDXCORE 0x880
20#define MAKE_DXCORE_HRESULT( code ) MAKE_HRESULT( 1, _FACDXCORE, code )
21
22enum class DXCoreAdapterProperty : uint32_t
23{
24 InstanceLuid = 0,
25 DriverVersion = 1,
26 DriverDescription = 2,
27 HardwareID = 3, // Use HardwareIDParts instead, if available.
28 KmdModelVersion = 4,
29 ComputePreemptionGranularity = 5,
30 GraphicsPreemptionGranularity = 6,
31 DedicatedAdapterMemory = 7,
32 DedicatedSystemMemory = 8,
33 SharedSystemMemory = 9,
34 AcgCompatible = 10,
35 IsHardware = 11,
36 IsIntegrated = 12,
37 IsDetachable = 13,
38 HardwareIDParts = 14,
39 PhysicalAdapterCount = 15,
40 AdapterEngineCount = 16,
41 AdapterEngineName = 17,
42};
43
44enum class DXCoreAdapterState : uint32_t
45{
46 IsDriverUpdateInProgress = 0,
47 AdapterMemoryBudget = 1,
48 AdapterMemoryUsageBytes = 2,
49 AdapterMemoryUsageByProcessBytes = 3,
50 AdapterEngineRunningTimeMicroseconds = 4,
51 AdapterEngineRunningTimeByProcessMicroseconds = 5,
52 AdapterTemperatureCelsius = 6,
53 AdapterInUseProcessCount = 7,
54 AdapterInUseProcessSet = 8,
55 AdapterEngineFrequencyHertz = 9,
56 AdapterMemoryFrequencyHertz = 10
57};
58
59enum class DXCoreSegmentGroup : uint32_t
60{
61 Local = 0,
62 NonLocal = 1
63};
64
65enum class DXCoreNotificationType : uint32_t
66{
67 AdapterListStale = 0,
68 AdapterNoLongerValid = 1,
69 AdapterBudgetChange = 2,
70 AdapterHardwareContentProtectionTeardown = 3
71};
72
73enum class DXCoreAdapterPreference : uint32_t
74{
75 Hardware = 0,
76 MinimumPower = 1,
77 HighPerformance = 2
78};
79
80enum class DXCoreWorkload : uint32_t
81{
82 Graphics = 0,
83 Compute = 1,
84 Media = 2,
85 MachineLearning = 3,
86};
87
88enum class DXCoreRuntimeFilterFlags : uint32_t
89{
90 None = 0x0,
91 D3D11 = 0x1,
92 D3D12 = 0x2
93};
94
95DEFINE_ENUM_FLAG_OPERATORS(DXCoreRuntimeFilterFlags)
96
97enum class DXCoreHardwareTypeFilterFlags : uint32_t
98{
99 None = 0x0,
100 GPU = 0x1,
101 ComputeAccelerator = 0x2,
102 NPU = 0x4,
103 MediaAccelerator = 0x8
104};
105
106DEFINE_ENUM_FLAG_OPERATORS(DXCoreHardwareTypeFilterFlags)
107
108struct DXCoreHardwareID
109{
110 uint32_t vendorID;
111 uint32_t deviceID;
112 uint32_t subSysID;
113 uint32_t revision;
114};
115
116struct DXCoreHardwareIDParts
117{
118 uint32_t vendorID;
119 uint32_t deviceID;
120 uint32_t subSystemID;
121 uint32_t subVendorID;
122 uint32_t revisionID;
123};
124
125struct DXCoreAdapterMemoryBudgetNodeSegmentGroup
126{
127 uint32_t nodeIndex;
128 DXCoreSegmentGroup segmentGroup;
129};
130
131struct DXCoreAdapterMemoryBudget
132{
133 uint64_t budget;
134 uint64_t currentUsage;
135 uint64_t availableForReservation;
136 uint64_t currentReservation;
137};
138
139struct DXCoreAdapterEngineIndex
140{
141 uint32_t physicalAdapterIndex;
142 uint32_t engineIndex;
143};
144
145struct DXCoreEngineQueryInput
146{
147 DXCoreAdapterEngineIndex adapterEngineIndex;
148 uint32_t processId;
149};
150
151struct DXCoreEngineQueryOutput
152{
153 uint64_t runningTime;
154 bool processQuerySucceeded;
155};
156
157enum class DXCoreMemoryType : uint32_t
158{
159 Dedicated = 0,
160 Shared = 1
161};
162
163struct DXCoreMemoryUsage
164{
165 uint64_t committed;
166 uint64_t resident;
167};
168
169struct DXCoreMemoryQueryInput
170{
171 uint32_t physicalAdapterIndex;
172 DXCoreMemoryType memoryType;
173};
174
175struct DXCoreProcessMemoryQueryInput
176{
177 uint32_t physicalAdapterIndex;
178 DXCoreMemoryType memoryType;
179 uint32_t processId;
180};
181
182struct DXCoreProcessMemoryQueryOutput
183{
184 DXCoreMemoryUsage memoryUsage;
185 bool processQuerySucceeded;
186};
187
188struct DXCoreAdapterProcessSetQueryInput
189{
190 uint32_t arraySize;
191 _Field_size_(arraySize) uint32_t* processIds;
192};
193
194struct DXCoreAdapterProcessSetQueryOutput
195{
196 uint32_t processesWritten;
197 uint32_t processesTotal;
198};
199
200struct DXCoreEngineNamePropertyInput
201{
202 DXCoreAdapterEngineIndex adapterEngineIndex;
203 uint32_t engineNameLength;
204 _Field_size_(engineNameLength) wchar_t *engineName;
205};
206
207struct DXCoreEngineNamePropertyOutput
208{
209 uint32_t engineNameLength;
210};
211
212struct DXCoreFrequencyQueryOutput
213{
214 uint64_t frequency;
215 uint64_t maxFrequency;
216 uint64_t maxOverclockedFrequency;
217};
218
219typedef void (STDMETHODCALLTYPE *PFN_DXCORE_NOTIFICATION_CALLBACK)(
220 DXCoreNotificationType notificationType,
221 _In_ IUnknown *object,
222 _In_opt_ void *context);
223
224static_assert(sizeof(bool) == 1, "bool assumed as one byte");
225
226DEFINE_GUID(IID_IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
227DEFINE_GUID(IID_IDXCoreAdapterFactory1, 0xd5682e19, 0x6d21, 0x401c, 0x82, 0x7a, 0x9a, 0x51, 0xa4, 0xea, 0x35, 0xd7);
228DEFINE_GUID(IID_IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
229DEFINE_GUID(IID_IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
230DEFINE_GUID(IID_IDXCoreAdapter1, 0xa0783366, 0xcfa3, 0x43be, 0x9d, 0x79, 0x55, 0xb2, 0xda, 0x97, 0xc6, 0x3c);
231
232DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D11_GRAPHICS, 0x8c47866b, 0x7583, 0x450d, 0xf0, 0xf0, 0x6b, 0xad, 0xa8, 0x95, 0xaf, 0x4b);
233DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GRAPHICS, 0x0c9ece4d, 0x2f6e, 0x4f01, 0x8c, 0x96, 0xe8, 0x9e, 0x33, 0x1b, 0x47, 0xb1);
234DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, 0x248e2800, 0xa793, 0x4724, 0xab, 0xaa, 0x23, 0xa6, 0xde, 0x1b, 0xe0, 0x90);
235DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GENERIC_ML, 0xb71b0d41, 0x1088, 0x422f, 0xa2, 0x7c, 0x2, 0x50, 0xb7, 0xd3, 0xa9, 0x88);
236DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GENERIC_MEDIA, 0x8eb2c848, 0x82f6, 0x4b49, 0xaa, 0x87, 0xae, 0xcf, 0xcf, 0x1, 0x74, 0xc6);
237
238DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_GPU, 0xb69eb219, 0x3ded, 0x4464, 0x97, 0x9f, 0xa0, 0xb, 0xd4, 0x68, 0x70, 0x6);
239DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_COMPUTE_ACCELERATOR, 0xe0b195da, 0x58ef, 0x4a22, 0x90, 0xf1, 0x1f, 0x28, 0x16, 0x9c, 0xab, 0x8d);
240DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_NPU, 0xd46140c4, 0xadd7, 0x451b, 0x9e, 0x56, 0x6, 0xfe, 0x8c, 0x3b, 0x58, 0xed);
241DEFINE_GUID(DXCORE_HARDWARE_TYPE_ATTRIBUTE_MEDIA_ACCELERATOR, 0x66bdb96a, 0x50b, 0x44c7, 0xa4, 0xfd, 0xd1, 0x44, 0xce, 0xa, 0xb4, 0x43);
242
243/* interface IDXCoreAdapter */
244MIDL_INTERFACE("f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e")
245IDXCoreAdapter : public IUnknown
246{
247public:
248 virtual bool STDMETHODCALLTYPE IsValid() = 0;
249
250 virtual bool STDMETHODCALLTYPE IsAttributeSupported(
251 REFGUID attributeGUID) = 0;
252
253 virtual bool STDMETHODCALLTYPE IsPropertySupported(
254 DXCoreAdapterProperty property) = 0;
255
256 virtual HRESULT STDMETHODCALLTYPE GetProperty(
257 DXCoreAdapterProperty property,
258 size_t bufferSize,
259 _Out_writes_bytes_(bufferSize) void *propertyData) = 0;
260
261 template <class T>
262 HRESULT GetProperty(
263 DXCoreAdapterProperty property,
264 _Out_writes_bytes_(sizeof(T)) T *propertyData)
265 {
266 return GetProperty(property,
267 sizeof(T),
268 (void*)propertyData);
269 }
270
271 virtual HRESULT STDMETHODCALLTYPE GetPropertySize(
272 DXCoreAdapterProperty property,
273 _Out_ size_t *bufferSize) = 0;
274
275 virtual bool STDMETHODCALLTYPE IsQueryStateSupported(
276 DXCoreAdapterState property) = 0;
277
278 virtual HRESULT STDMETHODCALLTYPE QueryState(
279 DXCoreAdapterState state,
280 size_t inputStateDetailsSize,
281 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
282 size_t outputBufferSize,
283 _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
284
285 template <class T1, class T2>
286 HRESULT QueryState(
287 DXCoreAdapterState state,
288 _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputStateDetails,
289 _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
290 {
291 return QueryState(state,
292 sizeof(T1),
293 (const void*)inputStateDetails,
294 sizeof(T2),
295 (void*)outputBuffer);
296 }
297
298 template <class T>
299 HRESULT QueryState(
300 DXCoreAdapterState state,
301 _Out_writes_bytes_(sizeof(T)) T *outputBuffer)
302 {
303 return QueryState(state,
304 0,
305 nullptr,
306 sizeof(T),
307 (void*)outputBuffer);
308 }
309
310 virtual bool STDMETHODCALLTYPE IsSetStateSupported(
311 DXCoreAdapterState property) = 0;
312
313 virtual HRESULT STDMETHODCALLTYPE SetState(
314 DXCoreAdapterState state,
315 size_t inputStateDetailsSize,
316 _In_reads_bytes_opt_(inputStateDetailsSize) const void *inputStateDetails,
317 size_t inputDataSize,
318 _In_reads_bytes_(inputDataSize) const void *inputData) = 0;
319
320 template <class T1, class T2>
321 HRESULT SetState(
322 DXCoreAdapterState state,
323 const T1 *inputStateDetails,
324 const T2 *inputData)
325 {
326 return SetState(state,
327 sizeof(T1),
328 (const void*)inputStateDetails,
329 sizeof(T2),
330 (const void*)inputData);
331 }
332
333 virtual HRESULT STDMETHODCALLTYPE GetFactory(
334 REFIID riid,
335 _COM_Outptr_ void** ppvFactory
336 ) = 0;
337
338 template <class T>
339 HRESULT GetFactory(
340 _COM_Outptr_ T** ppvFactory
341 )
342 {
343 return GetFactory(IID_PPV_ARGS(ppvFactory));
344 }
345};
346
347/* interface IDXCoreAdapter1 */
348MIDL_INTERFACE("a0783366-cfa3-43be-9d79-55b2da97c63c")
349IDXCoreAdapter1 : public IDXCoreAdapter
350{
351public:
352 virtual HRESULT STDMETHODCALLTYPE GetPropertyWithInput(
353 DXCoreAdapterProperty property,
354 size_t inputPropertyDetailsSize,
355 _In_reads_bytes_opt_(inputPropertyDetailsSize) const void *inputPropertyDetails,
356 size_t outputBufferSize,
357 _Out_writes_bytes_(outputBufferSize) void *outputBuffer) = 0;
358
359 template <class T1, class T2>
360 HRESULT GetPropertyWithInput(
361 DXCoreAdapterProperty property,
362 _In_reads_bytes_opt_(sizeof(T1)) const T1 *inputPropertyDetails,
363 _Out_writes_bytes_(sizeof(T2)) T2 *outputBuffer)
364 {
365 return GetPropertyWithInput(property,
366 sizeof(T1),
367 (const void*)inputPropertyDetails,
368 sizeof(T2),
369 (void*)outputBuffer);
370 }
371};
372
373/* interface IDXCoreAdapterList */
374MIDL_INTERFACE("526c7776-40e9-459b-b711-f32ad76dfc28")
375IDXCoreAdapterList : public IUnknown
376{
377public:
378 virtual HRESULT STDMETHODCALLTYPE GetAdapter(
379 uint32_t index,
380 REFIID riid,
381 _COM_Outptr_ void **ppvAdapter) = 0;
382
383 template<class T>
384 HRESULT STDMETHODCALLTYPE GetAdapter(
385 uint32_t index,
386 _COM_Outptr_ T **ppvAdapter)
387 {
388 return GetAdapter(index,
389 IID_PPV_ARGS(ppvAdapter));
390 }
391
392 virtual uint32_t STDMETHODCALLTYPE GetAdapterCount() = 0;
393
394 virtual bool STDMETHODCALLTYPE IsStale() = 0;
395
396 virtual HRESULT STDMETHODCALLTYPE GetFactory(
397 REFIID riid,
398 _COM_Outptr_ void** ppvFactory
399 ) = 0;
400
401 template <class T>
402 HRESULT GetFactory(
403 _COM_Outptr_ T** ppvFactory
404 )
405 {
406 return GetFactory(IID_PPV_ARGS(ppvFactory));
407 }
408
409 virtual HRESULT STDMETHODCALLTYPE Sort(
410 uint32_t numPreferences,
411 _In_reads_(numPreferences) const DXCoreAdapterPreference* preferences) = 0;
412
413 virtual bool STDMETHODCALLTYPE IsAdapterPreferenceSupported(
414 DXCoreAdapterPreference preference) = 0;
415};
416
417/* interface IDXCoreAdapterFactory */
418MIDL_INTERFACE("78ee5945-c36e-4b13-a669-005dd11c0f06")
419IDXCoreAdapterFactory : public IUnknown
420{
421public:
422
423 virtual HRESULT STDMETHODCALLTYPE CreateAdapterList(
424 uint32_t numAttributes,
425 _In_reads_(numAttributes) const GUID *filterAttributes,
426 REFIID riid,
427 _COM_Outptr_ void **ppvAdapterList) = 0;
428
429 template<class T>
430 HRESULT STDMETHODCALLTYPE CreateAdapterList(
431 uint32_t numAttributes,
432 _In_reads_(numAttributes) const GUID *filterAttributes,
433 _COM_Outptr_ T **ppvAdapterList)
434 {
435 return CreateAdapterList(numAttributes,
436 filterAttributes,
437 IID_PPV_ARGS(ppvAdapterList));
438 }
439
440 virtual HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
441 const LUID &adapterLUID,
442 REFIID riid,
443 _COM_Outptr_ void **ppvAdapter) = 0;
444
445 template<class T>
446 HRESULT STDMETHODCALLTYPE GetAdapterByLuid(
447 const LUID &adapterLUID,
448 _COM_Outptr_ T **ppvAdapter)
449 {
450 return GetAdapterByLuid(adapterLUID,
451 IID_PPV_ARGS(ppvAdapter));
452 }
453
454 virtual bool STDMETHODCALLTYPE IsNotificationTypeSupported(
455 DXCoreNotificationType notificationType) = 0;
456
457 virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
458 _In_ IUnknown *dxCoreObject,
459 DXCoreNotificationType notificationType,
460 _In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
461 _In_opt_ void *callbackContext,
462 _Out_ uint32_t *eventCookie) = 0;
463
464 virtual HRESULT STDMETHODCALLTYPE UnregisterEventNotification(
465 uint32_t eventCookie) = 0;
466};
467
468/* interface IDXCoreAdapterFactory1 */
469MIDL_INTERFACE("d5682e19-6d21-401c-827a-9a51a4ea35d7")
470IDXCoreAdapterFactory1 : public IDXCoreAdapterFactory
471{
472public:
473 virtual HRESULT STDMETHODCALLTYPE CreateAdapterListByWorkload(
474 DXCoreWorkload workload,
475 DXCoreRuntimeFilterFlags runtimeFilter,
476 DXCoreHardwareTypeFilterFlags hardwareTypeFilter,
477 REFIID riid,
478 _COM_Outptr_ void **ppvAdapterList) = 0;
479
480 template<class T>
481 HRESULT STDMETHODCALLTYPE CreateAdapterListByWorkload(
482 DXCoreWorkload workload,
483 DXCoreRuntimeFilterFlags runtimeFilter,
484 DXCoreHardwareTypeFilterFlags hardwareTypeFilter,
485 _COM_Outptr_ T **ppvAdapterList)
486 {
487 return CreateAdapterListByWorkload(workload,
488 runtimeFilter,
489 hardwareTypeFilter,
490 IID_PPV_ARGS(ppvAdapterList));
491 }
492};
493
494#endif // __cplusplus
495
496#endif // __dxcore_interface_h__
497
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.h
new file mode 100644
index 0000000..f83aa01
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.h
@@ -0,0 +1,57 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgicommon_h__
7#define __dxgicommon_h__
8
9
10typedef struct DXGI_RATIONAL
11{
12 UINT Numerator;
13 UINT Denominator;
14} DXGI_RATIONAL;
15
16// The following values are used with DXGI_SAMPLE_DESC::Quality:
17#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
18#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
19
20typedef struct DXGI_SAMPLE_DESC
21{
22 UINT Count;
23 UINT Quality;
24} DXGI_SAMPLE_DESC;
25
26typedef enum DXGI_COLOR_SPACE_TYPE
27{
28 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
29 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
30 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
31 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
32 DXGI_COLOR_SPACE_RESERVED = 4,
33 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
34 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
35 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
36 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
37 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
38 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
39 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
40 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
42 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
43 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
44 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
45 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
46 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
47 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
48 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
49 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
50 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
51 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
52 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
53 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
54} DXGI_COLOR_SPACE_TYPE;
55
56#endif // __dxgicommon_h__
57
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.idl b/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.idl
new file mode 100644
index 0000000..4e13486
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxgicommon.idl
@@ -0,0 +1,53 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6import "ocidl.idl";
7
8typedef struct DXGI_RATIONAL
9{
10 UINT Numerator;
11 UINT Denominator;
12} DXGI_RATIONAL;
13
14// The following values are used with DXGI_SAMPLE_DESC::Quality:
15#define DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN 0xffffffff
16#define DXGI_CENTER_MULTISAMPLE_QUALITY_PATTERN 0xfffffffe
17
18typedef struct DXGI_SAMPLE_DESC
19{
20 UINT Count;
21 UINT Quality;
22} DXGI_SAMPLE_DESC;
23
24typedef enum DXGI_COLOR_SPACE_TYPE
25{
26 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 = 0,
27 DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709 = 1,
28 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709 = 2,
29 DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020 = 3,
30 DXGI_COLOR_SPACE_RESERVED = 4,
31 DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601 = 5,
32 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601 = 6,
33 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601 = 7,
34 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709 = 8,
35 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709 = 9,
36 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020 = 10,
37 DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020 = 11,
38 DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 = 12,
39 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020 = 13,
40 DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020 = 14,
41 DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020 = 15,
42 DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020 = 16,
43 DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020 = 17,
44 DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020 = 18,
45 DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 = 19,
46 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709 = 20,
47 DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020 = 21,
48 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709 = 22,
49 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020 = 23,
50 DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020 = 24,
51 DXGI_COLOR_SPACE_CUSTOM = 0xFFFFFFFF
52} DXGI_COLOR_SPACE_TYPE;
53
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h
new file mode 100644
index 0000000..83e6c07
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.h
@@ -0,0 +1,144 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6#ifndef __dxgiformat_h__
7#define __dxgiformat_h__
8
9#define DXGI_FORMAT_DEFINED 1
10
11typedef enum DXGI_FORMAT
12{
13 DXGI_FORMAT_UNKNOWN = 0,
14 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
15 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
16 DXGI_FORMAT_R32G32B32A32_UINT = 3,
17 DXGI_FORMAT_R32G32B32A32_SINT = 4,
18 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
19 DXGI_FORMAT_R32G32B32_FLOAT = 6,
20 DXGI_FORMAT_R32G32B32_UINT = 7,
21 DXGI_FORMAT_R32G32B32_SINT = 8,
22 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
23 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
24 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
25 DXGI_FORMAT_R16G16B16A16_UINT = 12,
26 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
27 DXGI_FORMAT_R16G16B16A16_SINT = 14,
28 DXGI_FORMAT_R32G32_TYPELESS = 15,
29 DXGI_FORMAT_R32G32_FLOAT = 16,
30 DXGI_FORMAT_R32G32_UINT = 17,
31 DXGI_FORMAT_R32G32_SINT = 18,
32 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
33 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
34 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
35 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
36 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
37 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
38 DXGI_FORMAT_R10G10B10A2_UINT = 25,
39 DXGI_FORMAT_R11G11B10_FLOAT = 26,
40 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
41 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
42 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
43 DXGI_FORMAT_R8G8B8A8_UINT = 30,
44 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
45 DXGI_FORMAT_R8G8B8A8_SINT = 32,
46 DXGI_FORMAT_R16G16_TYPELESS = 33,
47 DXGI_FORMAT_R16G16_FLOAT = 34,
48 DXGI_FORMAT_R16G16_UNORM = 35,
49 DXGI_FORMAT_R16G16_UINT = 36,
50 DXGI_FORMAT_R16G16_SNORM = 37,
51 DXGI_FORMAT_R16G16_SINT = 38,
52 DXGI_FORMAT_R32_TYPELESS = 39,
53 DXGI_FORMAT_D32_FLOAT = 40,
54 DXGI_FORMAT_R32_FLOAT = 41,
55 DXGI_FORMAT_R32_UINT = 42,
56 DXGI_FORMAT_R32_SINT = 43,
57 DXGI_FORMAT_R24G8_TYPELESS = 44,
58 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
59 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
60 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
61 DXGI_FORMAT_R8G8_TYPELESS = 48,
62 DXGI_FORMAT_R8G8_UNORM = 49,
63 DXGI_FORMAT_R8G8_UINT = 50,
64 DXGI_FORMAT_R8G8_SNORM = 51,
65 DXGI_FORMAT_R8G8_SINT = 52,
66 DXGI_FORMAT_R16_TYPELESS = 53,
67 DXGI_FORMAT_R16_FLOAT = 54,
68 DXGI_FORMAT_D16_UNORM = 55,
69 DXGI_FORMAT_R16_UNORM = 56,
70 DXGI_FORMAT_R16_UINT = 57,
71 DXGI_FORMAT_R16_SNORM = 58,
72 DXGI_FORMAT_R16_SINT = 59,
73 DXGI_FORMAT_R8_TYPELESS = 60,
74 DXGI_FORMAT_R8_UNORM = 61,
75 DXGI_FORMAT_R8_UINT = 62,
76 DXGI_FORMAT_R8_SNORM = 63,
77 DXGI_FORMAT_R8_SINT = 64,
78 DXGI_FORMAT_A8_UNORM = 65,
79 DXGI_FORMAT_R1_UNORM = 66,
80 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
81 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
82 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
83 DXGI_FORMAT_BC1_TYPELESS = 70,
84 DXGI_FORMAT_BC1_UNORM = 71,
85 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
86 DXGI_FORMAT_BC2_TYPELESS = 73,
87 DXGI_FORMAT_BC2_UNORM = 74,
88 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
89 DXGI_FORMAT_BC3_TYPELESS = 76,
90 DXGI_FORMAT_BC3_UNORM = 77,
91 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
92 DXGI_FORMAT_BC4_TYPELESS = 79,
93 DXGI_FORMAT_BC4_UNORM = 80,
94 DXGI_FORMAT_BC4_SNORM = 81,
95 DXGI_FORMAT_BC5_TYPELESS = 82,
96 DXGI_FORMAT_BC5_UNORM = 83,
97 DXGI_FORMAT_BC5_SNORM = 84,
98 DXGI_FORMAT_B5G6R5_UNORM = 85,
99 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
100 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
101 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
102 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
103 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
104 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
105 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
106 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
107 DXGI_FORMAT_BC6H_TYPELESS = 94,
108 DXGI_FORMAT_BC6H_UF16 = 95,
109 DXGI_FORMAT_BC6H_SF16 = 96,
110 DXGI_FORMAT_BC7_TYPELESS = 97,
111 DXGI_FORMAT_BC7_UNORM = 98,
112 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
113 DXGI_FORMAT_AYUV = 100,
114 DXGI_FORMAT_Y410 = 101,
115 DXGI_FORMAT_Y416 = 102,
116 DXGI_FORMAT_NV12 = 103,
117 DXGI_FORMAT_P010 = 104,
118 DXGI_FORMAT_P016 = 105,
119 DXGI_FORMAT_420_OPAQUE = 106,
120 DXGI_FORMAT_YUY2 = 107,
121 DXGI_FORMAT_Y210 = 108,
122 DXGI_FORMAT_Y216 = 109,
123 DXGI_FORMAT_NV11 = 110,
124 DXGI_FORMAT_AI44 = 111,
125 DXGI_FORMAT_IA44 = 112,
126 DXGI_FORMAT_P8 = 113,
127 DXGI_FORMAT_A8P8 = 114,
128 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
129
130 DXGI_FORMAT_P208 = 130,
131 DXGI_FORMAT_V208 = 131,
132 DXGI_FORMAT_V408 = 132,
133
134
135 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
136 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
137
138 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
139
140
141 DXGI_FORMAT_FORCE_UINT = 0xffffffff
142} DXGI_FORMAT;
143
144#endif // __dxgiformat_h__
diff --git a/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl
new file mode 100644
index 0000000..34cc883
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/directx/dxgiformat.idl
@@ -0,0 +1,139 @@
1//
2// Copyright (C) Microsoft Corporation.
3// Licensed under the MIT license
4//
5
6
7typedef enum DXGI_FORMAT
8{
9 DXGI_FORMAT_UNKNOWN = 0,
10 DXGI_FORMAT_R32G32B32A32_TYPELESS = 1,
11 DXGI_FORMAT_R32G32B32A32_FLOAT = 2,
12 DXGI_FORMAT_R32G32B32A32_UINT = 3,
13 DXGI_FORMAT_R32G32B32A32_SINT = 4,
14 DXGI_FORMAT_R32G32B32_TYPELESS = 5,
15 DXGI_FORMAT_R32G32B32_FLOAT = 6,
16 DXGI_FORMAT_R32G32B32_UINT = 7,
17 DXGI_FORMAT_R32G32B32_SINT = 8,
18 DXGI_FORMAT_R16G16B16A16_TYPELESS = 9,
19 DXGI_FORMAT_R16G16B16A16_FLOAT = 10,
20 DXGI_FORMAT_R16G16B16A16_UNORM = 11,
21 DXGI_FORMAT_R16G16B16A16_UINT = 12,
22 DXGI_FORMAT_R16G16B16A16_SNORM = 13,
23 DXGI_FORMAT_R16G16B16A16_SINT = 14,
24 DXGI_FORMAT_R32G32_TYPELESS = 15,
25 DXGI_FORMAT_R32G32_FLOAT = 16,
26 DXGI_FORMAT_R32G32_UINT = 17,
27 DXGI_FORMAT_R32G32_SINT = 18,
28 DXGI_FORMAT_R32G8X24_TYPELESS = 19,
29 DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20,
30 DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21,
31 DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22,
32 DXGI_FORMAT_R10G10B10A2_TYPELESS = 23,
33 DXGI_FORMAT_R10G10B10A2_UNORM = 24,
34 DXGI_FORMAT_R10G10B10A2_UINT = 25,
35 DXGI_FORMAT_R11G11B10_FLOAT = 26,
36 DXGI_FORMAT_R8G8B8A8_TYPELESS = 27,
37 DXGI_FORMAT_R8G8B8A8_UNORM = 28,
38 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29,
39 DXGI_FORMAT_R8G8B8A8_UINT = 30,
40 DXGI_FORMAT_R8G8B8A8_SNORM = 31,
41 DXGI_FORMAT_R8G8B8A8_SINT = 32,
42 DXGI_FORMAT_R16G16_TYPELESS = 33,
43 DXGI_FORMAT_R16G16_FLOAT = 34,
44 DXGI_FORMAT_R16G16_UNORM = 35,
45 DXGI_FORMAT_R16G16_UINT = 36,
46 DXGI_FORMAT_R16G16_SNORM = 37,
47 DXGI_FORMAT_R16G16_SINT = 38,
48 DXGI_FORMAT_R32_TYPELESS = 39,
49 DXGI_FORMAT_D32_FLOAT = 40,
50 DXGI_FORMAT_R32_FLOAT = 41,
51 DXGI_FORMAT_R32_UINT = 42,
52 DXGI_FORMAT_R32_SINT = 43,
53 DXGI_FORMAT_R24G8_TYPELESS = 44,
54 DXGI_FORMAT_D24_UNORM_S8_UINT = 45,
55 DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46,
56 DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47,
57 DXGI_FORMAT_R8G8_TYPELESS = 48,
58 DXGI_FORMAT_R8G8_UNORM = 49,
59 DXGI_FORMAT_R8G8_UINT = 50,
60 DXGI_FORMAT_R8G8_SNORM = 51,
61 DXGI_FORMAT_R8G8_SINT = 52,
62 DXGI_FORMAT_R16_TYPELESS = 53,
63 DXGI_FORMAT_R16_FLOAT = 54,
64 DXGI_FORMAT_D16_UNORM = 55,
65 DXGI_FORMAT_R16_UNORM = 56,
66 DXGI_FORMAT_R16_UINT = 57,
67 DXGI_FORMAT_R16_SNORM = 58,
68 DXGI_FORMAT_R16_SINT = 59,
69 DXGI_FORMAT_R8_TYPELESS = 60,
70 DXGI_FORMAT_R8_UNORM = 61,
71 DXGI_FORMAT_R8_UINT = 62,
72 DXGI_FORMAT_R8_SNORM = 63,
73 DXGI_FORMAT_R8_SINT = 64,
74 DXGI_FORMAT_A8_UNORM = 65,
75 DXGI_FORMAT_R1_UNORM = 66,
76 DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67,
77 DXGI_FORMAT_R8G8_B8G8_UNORM = 68,
78 DXGI_FORMAT_G8R8_G8B8_UNORM = 69,
79 DXGI_FORMAT_BC1_TYPELESS = 70,
80 DXGI_FORMAT_BC1_UNORM = 71,
81 DXGI_FORMAT_BC1_UNORM_SRGB = 72,
82 DXGI_FORMAT_BC2_TYPELESS = 73,
83 DXGI_FORMAT_BC2_UNORM = 74,
84 DXGI_FORMAT_BC2_UNORM_SRGB = 75,
85 DXGI_FORMAT_BC3_TYPELESS = 76,
86 DXGI_FORMAT_BC3_UNORM = 77,
87 DXGI_FORMAT_BC3_UNORM_SRGB = 78,
88 DXGI_FORMAT_BC4_TYPELESS = 79,
89 DXGI_FORMAT_BC4_UNORM = 80,
90 DXGI_FORMAT_BC4_SNORM = 81,
91 DXGI_FORMAT_BC5_TYPELESS = 82,
92 DXGI_FORMAT_BC5_UNORM = 83,
93 DXGI_FORMAT_BC5_SNORM = 84,
94 DXGI_FORMAT_B5G6R5_UNORM = 85,
95 DXGI_FORMAT_B5G5R5A1_UNORM = 86,
96 DXGI_FORMAT_B8G8R8A8_UNORM = 87,
97 DXGI_FORMAT_B8G8R8X8_UNORM = 88,
98 DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89,
99 DXGI_FORMAT_B8G8R8A8_TYPELESS = 90,
100 DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91,
101 DXGI_FORMAT_B8G8R8X8_TYPELESS = 92,
102 DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93,
103 DXGI_FORMAT_BC6H_TYPELESS = 94,
104 DXGI_FORMAT_BC6H_UF16 = 95,
105 DXGI_FORMAT_BC6H_SF16 = 96,
106 DXGI_FORMAT_BC7_TYPELESS = 97,
107 DXGI_FORMAT_BC7_UNORM = 98,
108 DXGI_FORMAT_BC7_UNORM_SRGB = 99,
109 DXGI_FORMAT_AYUV = 100,
110 DXGI_FORMAT_Y410 = 101,
111 DXGI_FORMAT_Y416 = 102,
112 DXGI_FORMAT_NV12 = 103,
113 DXGI_FORMAT_P010 = 104,
114 DXGI_FORMAT_P016 = 105,
115 DXGI_FORMAT_420_OPAQUE = 106,
116 DXGI_FORMAT_YUY2 = 107,
117 DXGI_FORMAT_Y210 = 108,
118 DXGI_FORMAT_Y216 = 109,
119 DXGI_FORMAT_NV11 = 110,
120 DXGI_FORMAT_AI44 = 111,
121 DXGI_FORMAT_IA44 = 112,
122 DXGI_FORMAT_P8 = 113,
123 DXGI_FORMAT_A8P8 = 114,
124 DXGI_FORMAT_B4G4R4A4_UNORM = 115,
125
126 DXGI_FORMAT_P208 = 130,
127 DXGI_FORMAT_V208 = 131,
128 DXGI_FORMAT_V408 = 132,
129
130
131 DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 189,
132 DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
133
134 DXGI_FORMAT_A4B4G4R4_UNORM = 191,
135
136
137 DXGI_FORMAT_FORCE_UINT = 0xffffffff
138} DXGI_FORMAT;
139
diff --git a/contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h b/contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h
new file mode 100644
index 0000000..7615570
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/dxguids/dxguids.h
@@ -0,0 +1,201 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#ifndef __cplusplus
7#error "This header requires C++"
8#endif
9
10constexpr inline bool ConstexprIsEqualGUID(REFGUID a, REFGUID b)
11{
12 return a.Data1 == b.Data1 &&
13 a.Data2 == b.Data2 &&
14 a.Data3 == b.Data3 &&
15 a.Data4[0] == b.Data4[0] &&
16 a.Data4[1] == b.Data4[1] &&
17 a.Data4[2] == b.Data4[2] &&
18 a.Data4[3] == b.Data4[3] &&
19 a.Data4[4] == b.Data4[4] &&
20 a.Data4[5] == b.Data4[5] &&
21 a.Data4[6] == b.Data4[6] &&
22 a.Data4[7] == b.Data4[7];
23}
24
25template <typename T> GUID uuidof() = delete;
26template <typename T> GUID uuidof(T*) { return uuidof<T>(); }
27template <typename T> GUID uuidof(T**) { return uuidof<T>(); }
28template <typename T> GUID uuidof(T&) { return uuidof<T>(); }
29
30// Each COM interface (e.g. ID3D12Device) has a unique interface ID (IID) associated with it. With MSVC, the IID is defined
31// along with the interface declaration using compiler intrinsics (__declspec(uuid(...)); the IID can then be retrieved
32// using __uuidof. These intrinsics are not supported with all toolchains, so these helpers redefine IID values that can be
33// used with the various adapter COM helpers (ComPtr, IID_PPV_ARGS, etc.) for Linux. IIDs are stable and cannot change, but as
34// a precaution we statically assert the values are as expected when compiling for Windows.
35#if defined(_MSC_VER)
36#define _DXGUIDS_SUPPORT_STATIC_ASSERT_IID
37#elif defined(__CRT_UUID_DECL)
38/* match _mingw.h */
39#if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
40#define _DXGUIDS_SUPPORT_STATIC_ASSERT_IID
41#endif /* __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L */
42#endif /* _MSC_VER */
43
44#ifdef _DXGUIDS_SUPPORT_STATIC_ASSERT_IID
45#define _WINADAPTER_ASSERT_IID(InterfaceName) \
46static_assert(ConstexprIsEqualGUID(uuidof<InterfaceName>(), __uuidof(InterfaceName)), "GUID definition mismatch: "#InterfaceName);
47#else
48#define _WINADAPTER_ASSERT_IID(InterfaceName)
49#endif
50
51#ifdef __CRT_UUID_DECL
52#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
53template <> constexpr GUID uuidof<InterfaceName>() \
54{ \
55 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
56} \
57__CRT_UUID_DECL(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
58_WINADAPTER_ASSERT_IID(InterfaceName)
59#else
60#define WINADAPTER_IID(InterfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
61template <> constexpr GUID uuidof<InterfaceName>() \
62{ \
63 return { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
64} \
65_WINADAPTER_ASSERT_IID(InterfaceName)
66#endif /* defined(_WIN32) && defined(__MINGW32__) */
67
68// Direct3D
69#ifdef __d3d12_h__
70WINADAPTER_IID(ID3D12Object, 0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8);
71WINADAPTER_IID(ID3D12DeviceChild, 0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57);
72WINADAPTER_IID(ID3D12RootSignature, 0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14);
73WINADAPTER_IID(ID3D12RootSignatureDeserializer, 0x34AB647B, 0x3CC8, 0x46AC, 0x84, 0x1B, 0xC0, 0x96, 0x56, 0x45, 0xC0, 0x46);
74WINADAPTER_IID(ID3D12VersionedRootSignatureDeserializer, 0x7F91CE67, 0x090C, 0x4BB7, 0xB7, 0x8E, 0xED, 0x8F, 0xF2, 0xE3, 0x1D, 0xA0);
75WINADAPTER_IID(ID3D12Pageable, 0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6);
76WINADAPTER_IID(ID3D12Heap, 0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3);
77WINADAPTER_IID(ID3D12Resource, 0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad);
78WINADAPTER_IID(ID3D12CommandAllocator, 0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24);
79WINADAPTER_IID(ID3D12Fence, 0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76);
80WINADAPTER_IID(ID3D12Fence1, 0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a);
81WINADAPTER_IID(ID3D12PipelineState, 0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45);
82WINADAPTER_IID(ID3D12DescriptorHeap, 0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51);
83WINADAPTER_IID(ID3D12QueryHeap, 0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4);
84WINADAPTER_IID(ID3D12CommandSignature, 0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1);
85WINADAPTER_IID(ID3D12CommandList, 0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5);
86WINADAPTER_IID(ID3D12GraphicsCommandList, 0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55);
87WINADAPTER_IID(ID3D12GraphicsCommandList1, 0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7);
88WINADAPTER_IID(ID3D12GraphicsCommandList2, 0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28);
89WINADAPTER_IID(ID3D12CommandQueue, 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed);
90WINADAPTER_IID(ID3D12CommandQueue1, 0x3a3c3165, 0x0ee7, 0x4b8e, 0xa0, 0xaf, 0x63, 0x56, 0xb4, 0xc3, 0xbb, 0xb9);
91WINADAPTER_IID(ID3D12Device, 0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7);
92WINADAPTER_IID(ID3D12PipelineLibrary, 0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f);
93WINADAPTER_IID(ID3D12PipelineLibrary1, 0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3);
94WINADAPTER_IID(ID3D12Device1, 0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e);
95WINADAPTER_IID(ID3D12Device2, 0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28);
96WINADAPTER_IID(ID3D12Device3, 0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98);
97WINADAPTER_IID(ID3D12ProtectedSession, 0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B);
98WINADAPTER_IID(ID3D12ProtectedResourceSession, 0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0x0A, 0x09, 0x9C, 0x3D);
99WINADAPTER_IID(ID3D12Device4, 0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5);
100WINADAPTER_IID(ID3D12LifetimeOwner, 0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8);
101WINADAPTER_IID(ID3D12SwapChainAssistant, 0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f);
102WINADAPTER_IID(ID3D12LifetimeTracker, 0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13);
103WINADAPTER_IID(ID3D12StateObject, 0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d);
104WINADAPTER_IID(ID3D12StateObjectProperties, 0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60);
105WINADAPTER_IID(ID3D12Device5, 0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d);
106WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings, 0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63);
107WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings1, 0xDBD5AE51, 0x3317, 0x4F0A, 0xAD, 0xF9, 0x1D, 0x7C, 0xED, 0xCA, 0xAE, 0x0B);
108WINADAPTER_IID(ID3D12DeviceRemovedExtendedDataSettings2, 0x61552388, 0x01ab, 0x4008, 0xa4, 0x36, 0x83, 0xdb, 0x18, 0x95, 0x66, 0xea);
109WINADAPTER_IID(ID3D12DeviceRemovedExtendedData, 0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71);
110WINADAPTER_IID(ID3D12DeviceRemovedExtendedData1, 0x9727A022, 0xCF1D, 0x4DDA, 0x9E, 0xBA, 0xEF, 0xFA, 0x65, 0x3F, 0xC5, 0x06);
111WINADAPTER_IID(ID3D12DeviceRemovedExtendedData2, 0x67FC5816, 0xE4CA, 0x4915, 0xBF, 0x18, 0x42, 0x54, 0x12, 0x72, 0xDA, 0x54);
112WINADAPTER_IID(ID3D12Device6, 0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc);
113WINADAPTER_IID(ID3D12ProtectedResourceSession1, 0xD6F12DD6, 0x76FB, 0x406E, 0x89, 0x61, 0x42, 0x96, 0xEE, 0xFC, 0x04, 0x09);
114WINADAPTER_IID(ID3D12Device7, 0x5c014b53, 0x68a1, 0x4b9b, 0x8b, 0xd1, 0xdd, 0x60, 0x46, 0xb9, 0x35, 0x8b);
115WINADAPTER_IID(ID3D12Device8, 0x9218E6BB, 0xF944, 0x4F7E, 0xA7, 0x5C, 0xB1, 0xB2, 0xC7, 0xB7, 0x01, 0xF3);
116WINADAPTER_IID(ID3D12Resource1, 0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19);
117WINADAPTER_IID(ID3D12Resource2, 0xBE36EC3B, 0xEA85, 0x4AEB, 0xA4, 0x5A, 0xE9, 0xD7, 0x64, 0x04, 0xA4, 0x95);
118WINADAPTER_IID(ID3D12Heap1, 0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D);
119WINADAPTER_IID(ID3D12GraphicsCommandList3, 0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D);
120WINADAPTER_IID(ID3D12MetaCommand, 0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70);
121WINADAPTER_IID(ID3D12GraphicsCommandList4, 0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74);
122WINADAPTER_IID(ID3D12ShaderCacheSession, 0x28e2495d, 0x0f64, 0x4ae4, 0xa6, 0xec, 0x12, 0x92, 0x55, 0xdc, 0x49, 0xa8);
123WINADAPTER_IID(ID3D12Device9, 0x4c80e962, 0xf032, 0x4f60, 0xbc, 0x9e, 0xeb, 0xc2, 0xcf, 0xa1, 0xd8, 0x3c);
124WINADAPTER_IID(ID3D12Device10, 0x517f8718, 0xaa66, 0x49f9, 0xb0, 0x2b, 0xa7, 0xab, 0x89, 0xc0, 0x60, 0x31);
125WINADAPTER_IID(ID3D12Device11, 0x5405c344, 0xd457, 0x444e, 0xb4, 0xdd, 0x23, 0x66, 0xe4, 0x5a, 0xee, 0x39);
126WINADAPTER_IID(ID3D12VirtualizationGuestDevice, 0xbc66d368, 0x7373, 0x4943, 0x87, 0x57, 0xfc, 0x87, 0xdc, 0x79, 0xe4, 0x76);
127WINADAPTER_IID(ID3D12Tools, 0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5);
128WINADAPTER_IID(ID3D12SDKConfiguration, 0xe9eb5314, 0x33aa, 0x42b2, 0xa7, 0x18, 0xd7, 0x7f, 0x58, 0xb1, 0xf1, 0xc7);
129WINADAPTER_IID(ID3D12SDKConfiguration1, 0x8aaf9303, 0xad25, 0x48b9, 0x9a, 0x57, 0xd9, 0xc3, 0x7e, 0x00, 0x9d, 0x9f);
130WINADAPTER_IID(ID3D12DeviceFactory, 0x61f307d3, 0xd34e, 0x4e7c, 0x83, 0x74, 0x3b, 0xa4, 0xde, 0x23, 0xcc, 0xcb);
131WINADAPTER_IID(ID3D12DeviceConfiguration, 0x78dbf87b, 0xf766, 0x422b, 0xa6, 0x1c, 0xc8, 0xc4, 0x46, 0xbd, 0xb9, 0xad);
132WINADAPTER_IID(ID3D12GraphicsCommandList5, 0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea);
133WINADAPTER_IID(ID3D12GraphicsCommandList6, 0xc3827890, 0xe548, 0x4cfa, 0x96, 0xcf, 0x56, 0x89, 0xa9, 0x37, 0x0f, 0x80);
134WINADAPTER_IID(ID3D12GraphicsCommandList7, 0xdd171223, 0x8b61, 0x4769, 0x90, 0xe3, 0x16, 0x0c, 0xcd, 0xe4, 0xe2, 0xc1);
135WINADAPTER_IID(ID3D12GraphicsCommandList8, 0xee936ef9, 0x599d, 0x4d28, 0x93, 0x8e, 0x23, 0xc4, 0xad, 0x05, 0xce, 0x51);
136#endif
137
138// Direct3D Video
139#ifdef __d3d12video_h__
140WINADAPTER_IID(ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);
141WINADAPTER_IID(ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);
142WINADAPTER_IID(ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);
143WINADAPTER_IID(ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);
144WINADAPTER_IID(ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);
145WINADAPTER_IID(ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);
146WINADAPTER_IID(ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);
147WINADAPTER_IID(ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);
148WINADAPTER_IID(ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);
149WINADAPTER_IID(ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);
150WINADAPTER_IID(ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);
151WINADAPTER_IID(ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);
152WINADAPTER_IID(ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);
153WINADAPTER_IID(ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);
154WINADAPTER_IID(ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);
155WINADAPTER_IID(ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);
156WINADAPTER_IID(ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);
157WINADAPTER_IID(ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);
158WINADAPTER_IID(ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);
159WINADAPTER_IID(ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);
160WINADAPTER_IID(ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);
161WINADAPTER_IID(ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);
162WINADAPTER_IID(ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);
163WINADAPTER_IID(ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);
164WINADAPTER_IID(ID3D12VideoEncoderHeap1,0xea8f1968,0x4aa0,0x43a4,0x9d,0x30,0xba,0x86,0xec,0x84,0xd4,0xf9);
165WINADAPTER_IID(ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);
166WINADAPTER_IID(ID3D12VideoDevice4,0xe59ad09e,0xf1ae,0x42bb,0x89,0x83,0x9f,0x6e,0x55,0x86,0xc4,0xeb);
167WINADAPTER_IID(ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);
168WINADAPTER_IID(ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);
169WINADAPTER_IID(ID3D12VideoEncodeCommandList4,0x69aeb5b7,0x55f2,0x4012,0x8b,0x73,0x3a,0x88,0xd6,0x5a,0x20,0x4c);
170#endif
171
172#ifdef __d3d12sdklayers_h__
173WINADAPTER_IID(ID3D12Debug, 0x344488b7, 0x6846, 0x474b, 0xb9, 0x89, 0xf0, 0x27, 0x44, 0x82, 0x45, 0xe0);
174WINADAPTER_IID(ID3D12Debug1, 0xaffaa4ca, 0x63fe, 0x4d8e, 0xb8, 0xad, 0x15, 0x90, 0x00, 0xaf, 0x43, 0x04);
175WINADAPTER_IID(ID3D12Debug2, 0x93a665c4, 0xa3b2, 0x4e5d, 0xb6, 0x92, 0xa2, 0x6a, 0xe1, 0x4e, 0x33, 0x74);
176WINADAPTER_IID(ID3D12Debug3, 0x5cf4e58f, 0xf671, 0x4ff1, 0xa5, 0x42, 0x36, 0x86, 0xe3, 0xd1, 0x53, 0xd1);
177WINADAPTER_IID(ID3D12Debug4, 0x014b816e, 0x9ec5, 0x4a2f, 0xa8, 0x45, 0xff, 0xbe, 0x44, 0x1c, 0xe1, 0x3a);
178WINADAPTER_IID(ID3D12Debug5, 0x548d6b12, 0x09fa, 0x40e0, 0x90, 0x69, 0x5d, 0xcd, 0x58, 0x9a, 0x52, 0xc9);
179WINADAPTER_IID(ID3D12Debug6, 0x82a816d6, 0x5d01, 0x4157, 0x97, 0xd0, 0x49, 0x75, 0x46, 0x3f, 0xd1, 0xed);
180WINADAPTER_IID(ID3D12DebugDevice1, 0xa9b71770, 0xd099, 0x4a65, 0xa6, 0x98, 0x3d, 0xee, 0x10, 0x02, 0x0f, 0x88);
181WINADAPTER_IID(ID3D12DebugDevice, 0x3febd6dd, 0x4973, 0x4787, 0x81, 0x94, 0xe4, 0x5f, 0x9e, 0x28, 0x92, 0x3e);
182WINADAPTER_IID(ID3D12DebugDevice2, 0x60eccbc1, 0x378d, 0x4df1, 0x89, 0x4c, 0xf8, 0xac, 0x5c, 0xe4, 0xd7, 0xdd);
183WINADAPTER_IID(ID3D12DebugCommandQueue, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3a);
184WINADAPTER_IID(ID3D12DebugCommandQueue1, 0x16be35a2, 0xbfd6, 0x49f2, 0xbc, 0xae, 0xea, 0xae, 0x4a, 0xff, 0x86, 0x2d);
185WINADAPTER_IID(ID3D12DebugCommandList1, 0x102ca951, 0x311b, 0x4b01, 0xb1, 0x1f, 0xec, 0xb8, 0x3e, 0x06, 0x1b, 0x37);
186WINADAPTER_IID(ID3D12DebugCommandList, 0x09e0bf36, 0x54ac, 0x484f, 0x88, 0x47, 0x4b, 0xae, 0xea, 0xb6, 0x05, 0x3f);
187WINADAPTER_IID(ID3D12DebugCommandList2, 0xaeb575cf, 0x4e06, 0x48be, 0xba, 0x3b, 0xc4, 0x50, 0xfc, 0x96, 0x65, 0x2e);
188WINADAPTER_IID(ID3D12DebugCommandList3, 0x197d5e15, 0x4d37, 0x4d34, 0xaf, 0x78, 0x72, 0x4c, 0xd7, 0x0f, 0xdb, 0x1f);
189WINADAPTER_IID(ID3D12SharingContract, 0x0adf7d52, 0x929c, 0x4e61, 0xad, 0xdb, 0xff, 0xed, 0x30, 0xde, 0x66, 0xef);
190WINADAPTER_IID(ID3D12InfoQueue, 0x0742a90b, 0xc387, 0x483f, 0xb9, 0x46, 0x30, 0xa7, 0xe4, 0xe6, 0x14, 0x58);
191WINADAPTER_IID(ID3D12InfoQueue1, 0x2852dd88, 0xb484, 0x4c0c, 0xb6, 0xb1, 0x67, 0x16, 0x85, 0x00, 0xe6, 0x00);
192#endif
193
194// DXCore
195#ifdef __dxcore_interface_h__
196WINADAPTER_IID(IDXCoreAdapterFactory, 0x78ee5945, 0xc36e, 0x4b13, 0xa6, 0x69, 0x00, 0x5d, 0xd1, 0x1c, 0x0f, 0x06);
197WINADAPTER_IID(IDXCoreAdapterFactory1, 0xd5682e19, 0x6d21, 0x401c, 0x82, 0x7a, 0x9a, 0x51, 0xa4, 0xea, 0x35, 0xd7);
198WINADAPTER_IID(IDXCoreAdapterList, 0x526c7776, 0x40e9, 0x459b, 0xb7, 0x11, 0xf3, 0x2a, 0xd7, 0x6d, 0xfc, 0x28);
199WINADAPTER_IID(IDXCoreAdapter, 0xf0db4c7f, 0xfe5a, 0x42a2, 0xbd, 0x62, 0xf2, 0xa6, 0xcf, 0x6f, 0xc8, 0x3e);
200WINADAPTER_IID(IDXCoreAdapter1, 0xa0783366, 0xcfa3, 0x43be, 0x9d, 0x79, 0x55, 0xb2, 0xda, 0x97, 0xc6, 0x3c);
201#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h
new file mode 100644
index 0000000..4c75ef2
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/basetsd.h
@@ -0,0 +1,406 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6// These #defines prevent the idl-generated headers from trying to include
7// Windows.h from the SDK rather than this one.
8#define RPC_NO_WINDOWS_H
9#define COM_NO_WINDOWS_H
10
11// Allcaps type definitions
12#include <stddef.h>
13#include <stdint.h>
14#include <string.h>
15#include <limits.h>
16
17// Note: using fixed-width here to match Windows widths
18// Specifically this is different for 'long' vs 'LONG'
19typedef uint8_t UINT8;
20typedef int8_t INT8;
21typedef uint16_t UINT16;
22typedef int16_t INT16;
23typedef uint32_t UINT32, UINT, ULONG, DWORD, BOOL, WINBOOL;
24typedef int32_t INT32, INT, LONG;
25typedef uint64_t UINT64, ULONG_PTR;
26typedef int64_t INT64, LONG_PTR;
27typedef void VOID, *HANDLE, *RPC_IF_HANDLE, *LPVOID;
28typedef const void *LPCVOID;
29typedef size_t SIZE_T;
30typedef float FLOAT;
31typedef double DOUBLE;
32typedef unsigned char BYTE;
33typedef int HWND;
34typedef int PALETTEENTRY;
35typedef int HDC;
36typedef uint16_t WORD;
37typedef void* PVOID;
38typedef char BOOLEAN;
39typedef uint64_t ULONGLONG;
40typedef uint16_t USHORT, *PUSHORT;
41typedef int64_t LONGLONG, *PLONGLONG;
42typedef int64_t LONG_PTR, *PLONG_PTR;
43typedef int64_t LONG64, *PLONG64;
44typedef uint64_t ULONG64, *PULONG64;
45typedef wchar_t WCHAR, *PWSTR;
46typedef uint8_t UCHAR, *PUCHAR;
47typedef uint64_t ULONG_PTR, *PULONG_PTR;
48typedef uint64_t UINT_PTR, *PUINT_PTR;
49typedef int64_t INT_PTR, *PINT_PTR;
50
51// Note: WCHAR is not the same between Windows and Linux, to enable
52// string manipulation APIs to work with resulting strings.
53// APIs to D3D/DXCore will work on Linux wchars, but beware with
54// interactions directly with the Windows kernel.
55typedef char CHAR, *PSTR, *LPSTR, TCHAR, *PTSTR;
56typedef const char *LPCSTR, *PCSTR, *LPCTSTR, *PCTSTR;
57typedef wchar_t WCHAR, *PWSTR, *LPWSTR, *PWCHAR;
58typedef const wchar_t *LPCWSTR, *PCWSTR;
59
60#undef LONG_MAX
61#define LONG_MAX INT_MAX
62#undef ULONG_MAX
63#define ULONG_MAX UINT_MAX
64
65// Misc defines
66#define MIDL_INTERFACE(x) interface
67#define __analysis_assume(x)
68#define TRUE 1u
69#define FALSE 0u
70#define DECLSPEC_UUID(x)
71#define DECLSPEC_NOVTABLE
72#define DECLSPEC_SELECTANY
73#ifdef __cplusplus
74#define EXTERN_C extern "C"
75#else
76#define EXTERN_C extern
77#endif
78#define APIENTRY
79#define OUT
80#define IN
81#define CONST const
82#define MAX_PATH 260
83#define GENERIC_ALL 0x10000000L
84#define C_ASSERT(expr) static_assert((expr))
85#define _countof(a) (sizeof(a) / sizeof(*(a)))
86
87typedef struct tagRECTL
88{
89 LONG left;
90 LONG top;
91 LONG right;
92 LONG bottom;
93} RECTL;
94
95typedef struct tagPOINT
96{
97 int x;
98 int y;
99} POINT;
100
101typedef struct _GUID {
102 uint32_t Data1;
103 uint16_t Data2;
104 uint16_t Data3;
105 uint8_t Data4[ 8 ];
106} GUID;
107
108#ifdef INITGUID
109#ifdef __cplusplus
110#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID DECLSPEC_SELECTANY name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
111#else
112#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID DECLSPEC_SELECTANY name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
113#endif
114#else
115#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
116#endif
117
118typedef GUID IID;
119typedef GUID UUID;
120typedef GUID CLSID;
121#ifdef __cplusplus
122#define REFGUID const GUID &
123#define REFIID const IID &
124#define REFCLSID const IID &
125
126__inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
127{
128 return (
129 ((uint32_t *)&rguid1)[0] == ((uint32_t *)&rguid2)[0] &&
130 ((uint32_t *)&rguid1)[1] == ((uint32_t *)&rguid2)[1] &&
131 ((uint32_t *)&rguid1)[2] == ((uint32_t *)&rguid2)[2] &&
132 ((uint32_t *)&rguid1)[3] == ((uint32_t *)&rguid2)[3]);
133}
134
135inline bool operator==(REFGUID guidOne, REFGUID guidOther)
136{
137 return !!InlineIsEqualGUID(guidOne, guidOther);
138}
139
140inline bool operator!=(REFGUID guidOne, REFGUID guidOther)
141{
142 return !(guidOne == guidOther);
143}
144
145#else
146#define REFGUID const GUID *
147#define REFIID const IID *
148#define REFCLSID const IID *
149#endif
150
151// SAL annotations
152#define _In_
153#define _In_z_
154#define _In_opt_
155#define _In_opt_z_
156#define _In_reads_(x)
157#define _In_reads_opt_(x)
158#define _In_reads_bytes_(x)
159#define _In_reads_bytes_opt_(x)
160#define _In_range_(x, y)
161#define _In_bytecount_(x)
162#define _Out_
163#define _Out_opt_
164#define _Outptr_
165#define _Outptr_opt_result_z_
166#define _Outptr_opt_result_bytebuffer_(x)
167#define _COM_Outptr_
168#define _COM_Outptr_result_maybenull_
169#define _COM_Outptr_opt_
170#define _COM_Outptr_opt_result_maybenull_
171#define _Out_writes_(x)
172#define _Out_writes_z_(x)
173#define _Out_writes_opt_(x)
174#define _Out_writes_all_(x)
175#define _Out_writes_all_opt_(x)
176#define _Out_writes_to_opt_(x, y)
177#define _Out_writes_bytes_(x)
178#define _Out_writes_bytes_all_(x)
179#define _Out_writes_bytes_all_opt_(x)
180#define _Out_writes_bytes_opt_(x)
181#define _Inout_
182#define _Inout_opt_
183#define _Inout_updates_(x)
184#define _Inout_updates_bytes_(x)
185#define _Field_size_(x)
186#define _Field_size_opt_(x)
187#define _Field_size_bytes_(x)
188#define _Field_size_full_(x)
189#define _Field_size_full_opt_(x)
190#define _Field_size_bytes_full_(x)
191#define _Field_size_bytes_full_opt_(x)
192#define _Field_size_bytes_part_(x, y)
193#define _Field_range_(x, y)
194#define _Field_z_
195#define _Check_return_
196#define _IRQL_requires_(x)
197#define _IRQL_requires_min_(x)
198#define _IRQL_requires_max_(x)
199#define _At_(x, y)
200#define _Always_(x)
201#define _Return_type_success_(x)
202#define _Translates_Win32_to_HRESULT_(x)
203#define _Maybenull_
204#define _Outptr_result_maybenull_
205#define _Outptr_result_nullonfailure_
206#define _Analysis_assume_(x)
207#define _Success_(x)
208#define _In_count_(x)
209#define _In_opt_count_(x)
210#define _Use_decl_annotations_
211#define _Null_terminated_
212
213// Calling conventions
214#define __cdecl
215#define __stdcall
216#define STDMETHODCALLTYPE
217#define STDAPICALLTYPE
218#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
219#define WINAPI
220
221#define interface struct
222#if defined (__cplusplus) && !defined (CINTERFACE)
223#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
224#define STDMETHOD_(type, method) virtual type STDMETHODCALLTYPE method
225#define PURE = 0
226#define THIS_
227#define THIS void
228#define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface
229#define DECLARE_INTERFACE_(iface, baseiface) interface DECLSPEC_NOVTABLE iface : public baseiface
230
231interface IUnknown;
232extern "C++"
233{
234 template<typename T> void** IID_PPV_ARGS_Helper(T** pp)
235 {
236 (void)static_cast<IUnknown*>(*pp);
237 return reinterpret_cast<void**>(pp);
238 }
239}
240#define IID_PPV_ARGS(ppType) __uuidof (**(ppType)), IID_PPV_ARGS_Helper (ppType)
241#else
242#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method)
243#define STDMETHOD_(type, method) type (STDMETHODCALLTYPE *method)
244#define PURE
245#define THIS_ INTERFACE *This,
246#define THIS INTERFACE *This
247#ifdef CONST_VTABLE
248#define DECLARE_INTERFACE(iface) typedef interface iface { const struct iface##Vtbl *lpVtbl; } iface; typedef const struct iface##Vtbl iface##Vtbl; const struct iface##Vtbl
249#else
250#define DECLARE_INTERFACE(iface) typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl
251#endif
252#define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE (iface)
253#endif
254
255#define IFACEMETHOD(method) /*override*/ STDMETHOD (method)
256#define IFACEMETHOD_(type, method) /*override*/ STDMETHOD_(type, method)
257#ifndef BEGIN_INTERFACE
258#define BEGIN_INTERFACE
259#define END_INTERFACE
260#endif
261
262// Error codes
263typedef LONG HRESULT;
264#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
265#define FAILED(hr) (((HRESULT)(hr)) < 0)
266#define S_OK ((HRESULT)0L)
267#define S_FALSE ((HRESULT)1L)
268#define E_NOTIMPL ((HRESULT)0x80004001L)
269#define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
270#define E_INVALIDARG ((HRESULT)0x80070057L)
271#define E_NOINTERFACE ((HRESULT)0x80004002L)
272#define E_POINTER ((HRESULT)0x80004003L)
273#define E_HANDLE ((HRESULT)0x80070006L)
274#define E_ABORT ((HRESULT)0x80004004L)
275#define E_FAIL ((HRESULT)0x80004005L)
276#define E_ACCESSDENIED ((HRESULT)0x80070005L)
277#define E_UNEXPECTED ((HRESULT)0x8000FFFFL)
278#define DXGI_ERROR_INVALID_CALL ((HRESULT)0x887A0001L)
279#define DXGI_ERROR_NOT_FOUND ((HRESULT)0x887A0002L)
280#define DXGI_ERROR_MORE_DATA ((HRESULT)0x887A0003L)
281#define DXGI_ERROR_UNSUPPORTED ((HRESULT)0x887A0004L)
282#define DXGI_ERROR_DEVICE_REMOVED ((HRESULT)0x887A0005L)
283#define DXGI_ERROR_DEVICE_HUNG ((HRESULT)0x887A0006L)
284#define DXGI_ERROR_DEVICE_RESET ((HRESULT)0x887A0007L)
285#define DXGI_ERROR_DRIVER_INTERNAL_ERROR ((HRESULT)0x887A0020L)
286#define DXGI_ERROR_SDK_COMPONENT_MISSING ((HRESULT)0x887A002DL)
287
288typedef struct _LUID
289{
290 ULONG LowPart;
291 LONG HighPart;
292} LUID;
293
294typedef struct _RECT
295{
296 int left;
297 int top;
298 int right;
299 int bottom;
300} RECT;
301
302typedef union _LARGE_INTEGER {
303 struct {
304 uint32_t LowPart;
305 uint32_t HighPart;
306 } u;
307 int64_t QuadPart;
308} LARGE_INTEGER;
309typedef LARGE_INTEGER *PLARGE_INTEGER;
310
311typedef union _ULARGE_INTEGER {
312 struct {
313 uint32_t LowPart;
314 uint32_t HighPart;
315 } u;
316 uint64_t QuadPart;
317} ULARGE_INTEGER;
318typedef ULARGE_INTEGER *PULARGE_INTEGER;
319
320#define DECLARE_HANDLE(name) \
321 struct name##__ { \
322 int unused; \
323 }; \
324 typedef struct name##__ *name
325
326typedef struct _SECURITY_ATTRIBUTES {
327 DWORD nLength;
328 LPVOID lpSecurityDescriptor;
329 WINBOOL bInheritHandle;
330} SECURITY_ATTRIBUTES;
331
332struct STATSTG;
333
334#ifdef __cplusplus
335// ENUM_FLAG_OPERATORS
336// Define operator overloads to enable bit operations on enum values that are
337// used to define flags. Use DEFINE_ENUM_FLAG_OPERATORS(YOUR_TYPE) to enable these
338// operators on YOUR_TYPE.
339extern "C++" {
340 template <size_t S>
341 struct _ENUM_FLAG_INTEGER_FOR_SIZE;
342
343 template <>
344 struct _ENUM_FLAG_INTEGER_FOR_SIZE<1>
345 {
346 typedef int8_t type;
347 };
348
349 template <>
350 struct _ENUM_FLAG_INTEGER_FOR_SIZE<2>
351 {
352 typedef int16_t type;
353 };
354
355 template <>
356 struct _ENUM_FLAG_INTEGER_FOR_SIZE<4>
357 {
358 typedef int32_t type;
359 };
360
361 template <>
362 struct _ENUM_FLAG_INTEGER_FOR_SIZE<8>
363 {
364 typedef int64_t type;
365 };
366
367 // used as an approximation of std::underlying_type<T>
368 template <class T>
369 struct _ENUM_FLAG_SIZED_INTEGER
370 {
371 typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type;
372 };
373
374}
375#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
376extern "C++" { \
377inline constexpr ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
378inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
379inline constexpr ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
380inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
381inline constexpr ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a)); } \
382inline constexpr ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
383inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); } \
384}
385#else
386#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) /* */
387#endif
388
389// D3DX12 uses these
390#include <stdlib.h>
391#define HeapAlloc(heap, flags, size) malloc(size)
392#define HeapFree(heap, flags, ptr) free(ptr)
393
394#if defined(lint)
395// Note: lint -e530 says don't complain about uninitialized variables for
396// this variable. Error 527 has to do with unreachable code.
397// -restore restores checking to the -save state
398#define UNREFERENCED_PARAMETER(P) \
399 /*lint -save -e527 -e530 */ \
400 { \
401 (P) = (P); \
402 } \
403 /*lint -restore */
404#else
405#define UNREFERENCED_PARAMETER(P) (P)
406#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/oaidl.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/oaidl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/oaidl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/ocidl.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/ocidl.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/ocidl.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpc.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpc.h
new file mode 100644
index 0000000..76f5b5f
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpc.h
@@ -0,0 +1,5 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpcndr.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpcndr.h
new file mode 100644
index 0000000..68aa390
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/rpcndr.h
@@ -0,0 +1,78 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include
5#pragma once
6
7#include "basetsd.h"
8
9#define __RPCNDR_H_VERSION__
10
11#ifdef CONST_VTABLE
12#define CONST_VTBL const
13#else
14#define CONST_VTBL
15#endif
16
17/* Macros for __uuidof template-based emulation */
18#if defined(__cplusplus)
19#if __cpp_constexpr >= 200704l && __cpp_inline_variables >= 201606L
20#define __wsl_stub_uuidof_use_constexpr 1
21#else
22#define __wsl_stub_uuidof_use_constexpr 0
23#endif
24#ifndef __GNUC__
25#error "Only support for compilers that support for `GNU C++ extension`"
26#endif
27extern "C++" {
28#if __wsl_stub_uuidof_use_constexpr
29 __extension__ template<typename T> struct __wsl_stub_uuidof_s;
30 __extension__ template<typename T> constexpr const GUID &__wsl_stub_uuidof();
31#else
32 __extension__ template<typename T> const GUID &__wsl_stub_uuidof();
33#endif
34}
35
36#if __wsl_stub_uuidof_use_constexpr
37#define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
38 extern "C++" \
39 { \
40 template <> \
41 struct __wsl_stub_uuidof_s<type> \
42 { \
43 static constexpr IID __uuid_inst = { \
44 l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}; \
45 }; \
46 template <> \
47 constexpr const GUID &__wsl_stub_uuidof<type>() \
48 { \
49 return __wsl_stub_uuidof_s<type>::__uuid_inst; \
50 } \
51 template <> \
52 constexpr const GUID &__wsl_stub_uuidof<type *>() \
53 { \
54 return __wsl_stub_uuidof_s<type>::__uuid_inst; \
55 } \
56 }
57#else
58#define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
59 extern "C++" \
60 { \
61 template <> \
62 inline const GUID &__wsl_stub_uuidof<type>() \
63 { \
64 static const IID __uuid_inst = { \
65 l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}; \
66 return __uuid_inst; \
67 } \
68 template <> \
69 inline const GUID &__wsl_stub_uuidof<type *>() \
70 { \
71 return __wsl_stub_uuidof<type>(); \
72 } \
73 }
74#endif
75#define __uuidof(type) __wsl_stub_uuidof<__typeof(type)>()
76#else
77#define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
78#endif
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h
new file mode 100644
index 0000000..e08ad1e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwn.h
@@ -0,0 +1,3 @@
1#pragma once
2
3#include "unknwnbase.h"
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h
new file mode 100644
index 0000000..7a54651
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/unknwnbase.h
@@ -0,0 +1,124 @@
1/*-------------------------------------------------------------------------------------
2 *
3 * Copyright (c) Microsoft Corporation
4 * Licensed under the MIT license
5 *
6 *-------------------------------------------------------------------------------------*/
7
8/* this ALWAYS GENERATED file contains the definitions for the interfaces */
9
10/* File created by MIDL compiler version 8.01.0627 */
11
12/* verify that the <rpcndr.h> version is high enough to compile this file*/
13#ifndef __REQUIRED_RPCNDR_H_VERSION__
14#define __REQUIRED_RPCNDR_H_VERSION__ 500
15#endif
16
17/* verify that the <rpcsal.h> version is high enough to compile this file*/
18#ifndef __REQUIRED_RPCSAL_H_VERSION__
19#define __REQUIRED_RPCSAL_H_VERSION__ 100
20#endif
21
22#include "rpc.h"
23#include "rpcndr.h"
24
25#ifndef __RPCNDR_H_VERSION__
26#error this stub requires an updated version of <rpcndr.h>
27#endif /* __RPCNDR_H_VERSION__ */
28
29#ifndef COM_NO_WINDOWS_H
30#include "windows.h"
31#include "ole2.h"
32#endif /*COM_NO_WINDOWS_H*/
33
34#ifndef __unknwnbase_h__
35#define __unknwnbase_h__
36
37#if defined(_MSC_VER) && (_MSC_VER >= 1020)
38#pragma once
39#endif
40
41/* Forward Declarations */
42
43#ifndef __IUnknown_FWD_DEFINED__
44#define __IUnknown_FWD_DEFINED__
45typedef interface IUnknown IUnknown;
46
47#endif /* __IUnknown_FWD_DEFINED__ */
48
49#ifndef __IUnknown_INTERFACE_DEFINED__
50#define __IUnknown_INTERFACE_DEFINED__
51
52/* interface IUnknown */
53/* [unique][uuid][object][local] */
54
55typedef /* [unique] */ IUnknown *LPUNKNOWN;
56
57EXTERN_C const IID IID_IUnknown;
58
59#if defined(__cplusplus) && !defined(CINTERFACE)
60extern "C++"
61{
62 MIDL_INTERFACE("00000000-0000-0000-c000-000000000046")
63 IUnknown
64 {
65 BEGIN_INTERFACE
66
67 virtual HRESULT STDMETHODCALLTYPE QueryInterface(
68 REFIID riid,
69 void **ppvObject) = 0;
70
71 virtual ULONG STDMETHODCALLTYPE AddRef() = 0;
72
73 virtual ULONG STDMETHODCALLTYPE Release() = 0;
74
75 template <class Q>
76 HRESULT
77 STDMETHODCALLTYPE
78 QueryInterface(_COM_Outptr_ Q * *pp)
79 {
80 return QueryInterface(__uuidof(Q), (void **)pp);
81 }
82 END_INTERFACE
83 };
84}
85#ifdef __CRT_UUID_DECL
86__CRT_UUID_DECL(IUnknown, 0x00000000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
87#endif
88#else
89typedef struct IUnknownVtbl {
90 BEGIN_INTERFACE
91
92 /*** IUnknown methods ***/
93 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
94 IUnknown *This,
95 REFIID riid,
96 void **ppvObject);
97
98 ULONG (STDMETHODCALLTYPE *AddRef)(
99 IUnknown *This);
100
101 ULONG (STDMETHODCALLTYPE *Release)(
102 IUnknown *This);
103
104 END_INTERFACE
105} IUnknownVtbl;
106
107interface IUnknown {
108 CONST_VTBL IUnknownVtbl* lpVtbl;
109};
110
111#ifdef COBJMACROS
112/*** IUnknown methods ***/
113#define IUnknown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
114#define IUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
115#define IUnknown_Release(This) (This)->lpVtbl->Release(This)
116#endif
117
118#endif
119
120#endif /* __IUnknown_INTERFACE_DEFINED__ */
121
122DEFINE_GUID(IID_IUnknown, 0x00000000, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
123
124#endif /* __unknwnbase_h__ */
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/winapifamily.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/winapifamily.h
new file mode 100644
index 0000000..064c4c2
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/winapifamily.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub header to satisfy d3d12.h include. Unconditionally light up all APIs.
5#pragma once
6#define WINAPI_FAMILY_PARTITION(Partitions) 1 \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/client.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/client.h
new file mode 100644
index 0000000..64293a7
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/client.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy d3dx12.h include
5#pragma once
6#include <wsl/wrladapter.h> \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/implements.h b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/implements.h
new file mode 100644
index 0000000..5a3979e
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/stubs/wrl/implements.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4// Stub to satisfy DML TF runtime includes
5#pragma once
6#include <wsl/wrladapter.h> \ No newline at end of file
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h b/contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h
new file mode 100644
index 0000000..ccb2b3c
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/winadapter.h
@@ -0,0 +1,6 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include <unknwn.h>
diff --git a/contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h b/contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h
new file mode 100644
index 0000000..fcfd894
--- /dev/null
+++ b/contrib/DirectX-Headers-1.618.2/include/wsl/wrladapter.h
@@ -0,0 +1,803 @@
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4#pragma once
5
6#include "winadapter.h"
7
8// defined by winadapter.h and needed by some windows headers, but conflicts
9// with some libc++ implementation headers
10#ifdef __in
11#undef __in
12#endif
13#ifdef __out
14#undef __out
15#endif
16
17#include <type_traits>
18#include <atomic>
19#include <memory>
20#include <new>
21#include <climits>
22#include <cassert>
23
24namespace Microsoft
25{
26namespace WRL
27{
28 namespace Details
29 {
30 struct BoolStruct { int Member; };
31 typedef int BoolStruct::* BoolType;
32
33 template <typename T> // T should be the ComPtr<T> or a derived type of it, not just the interface
34 class ComPtrRefBase
35 {
36 public:
37 typedef typename T::InterfaceType InterfaceType;
38
39 operator IUnknown**() const throw()
40 {
41 static_assert(__is_base_of(IUnknown, InterfaceType), "Invalid cast: InterfaceType does not derive from IUnknown");
42 return reinterpret_cast<IUnknown**>(ptr_->ReleaseAndGetAddressOf());
43 }
44
45 protected:
46 T* ptr_;
47 };
48
49 template <typename T>
50 class ComPtrRef : public Details::ComPtrRefBase<T> // T should be the ComPtr<T> or a derived type of it, not just the interface
51 {
52 using Super = Details::ComPtrRefBase<T>;
53 using InterfaceType = typename Super::InterfaceType;
54 public:
55 ComPtrRef(_In_opt_ T* ptr) throw()
56 {
57 this->ptr_ = ptr;
58 }
59
60 // Conversion operators
61 operator void**() const throw()
62 {
63 return reinterpret_cast<void**>(this->ptr_->ReleaseAndGetAddressOf());
64 }
65
66 // This is our operator ComPtr<U> (or the latest derived class from ComPtr (e.g. WeakRef))
67 operator T*() throw()
68 {
69 *this->ptr_ = nullptr;
70 return this->ptr_;
71 }
72
73 // We define operator InterfaceType**() here instead of on ComPtrRefBase<T>, since
74 // if InterfaceType is IUnknown or IInspectable, having it on the base will collide.
75 operator InterfaceType**() throw()
76 {
77 return this->ptr_->ReleaseAndGetAddressOf();
78 }
79
80 // This is used for IID_PPV_ARGS in order to do __uuidof(**(ppType)).
81 // It does not need to clear ptr_ at this point, it is done at IID_PPV_ARGS_Helper(ComPtrRef&) later in this file.
82 InterfaceType* operator *() throw()
83 {
84 return this->ptr_->Get();
85 }
86
87 // Explicit functions
88 InterfaceType* const * GetAddressOf() const throw()
89 {
90 return this->ptr_->GetAddressOf();
91 }
92
93 InterfaceType** ReleaseAndGetAddressOf() throw()
94 {
95 return this->ptr_->ReleaseAndGetAddressOf();
96 }
97 };
98 }
99
100 template <typename T>
101 class ComPtr
102 {
103 public:
104 typedef T InterfaceType;
105
106 protected:
107 InterfaceType *ptr_;
108 template<class U> friend class ComPtr;
109
110 void InternalAddRef() const throw()
111 {
112 if (ptr_ != nullptr)
113 {
114 ptr_->AddRef();
115 }
116 }
117
118 unsigned long InternalRelease() throw()
119 {
120 unsigned long ref = 0;
121 T* temp = ptr_;
122
123 if (temp != nullptr)
124 {
125 ptr_ = nullptr;
126 ref = temp->Release();
127 }
128
129 return ref;
130 }
131
132 public:
133 ComPtr() throw() : ptr_(nullptr)
134 {
135 }
136
137 ComPtr(decltype(nullptr)) throw() : ptr_(nullptr)
138 {
139 }
140
141 template<class U>
142 ComPtr(_In_opt_ U *other) throw() : ptr_(other)
143 {
144 InternalAddRef();
145 }
146
147 ComPtr(const ComPtr& other) throw() : ptr_(other.ptr_)
148 {
149 InternalAddRef();
150 }
151
152 // copy constructor that allows to instantiate class when U* is convertible to T*
153 template<class U>
154 ComPtr(const ComPtr<U> &other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
155 ptr_(other.ptr_)
156 {
157 InternalAddRef();
158 }
159
160 ComPtr(_Inout_ ComPtr &&other) throw() : ptr_(nullptr)
161 {
162 if (this != reinterpret_cast<ComPtr*>(&reinterpret_cast<unsigned char&>(other)))
163 {
164 Swap(other);
165 }
166 }
167
168 // Move constructor that allows instantiation of a class when U* is convertible to T*
169 template<class U>
170 ComPtr(_Inout_ ComPtr<U>&& other, typename std::enable_if<std::is_convertible<U*, T*>::value, void *>::type * = 0) throw() :
171 ptr_(other.ptr_)
172 {
173 other.ptr_ = nullptr;
174 }
175
176 ~ComPtr() throw()
177 {
178 InternalRelease();
179 }
180
181 ComPtr& operator=(decltype(nullptr)) throw()
182 {
183 InternalRelease();
184 return *this;
185 }
186
187 ComPtr& operator=(_In_opt_ T *other) throw()
188 {
189 if (ptr_ != other)
190 {
191 ComPtr(other).Swap(*this);
192 }
193 return *this;
194 }
195
196 template <typename U>
197 ComPtr& operator=(_In_opt_ U *other) throw()
198 {
199 ComPtr(other).Swap(*this);
200 return *this;
201 }
202
203 ComPtr& operator=(const ComPtr &other) throw()
204 {
205 if (ptr_ != other.ptr_)
206 {
207 ComPtr(other).Swap(*this);
208 }
209 return *this;
210 }
211
212 template<class U>
213 ComPtr& operator=(const ComPtr<U>& other) throw()
214 {
215 ComPtr(other).Swap(*this);
216 return *this;
217 }
218
219 ComPtr& operator=(_Inout_ ComPtr &&other) throw()
220 {
221 ComPtr(static_cast<ComPtr&&>(other)).Swap(*this);
222 return *this;
223 }
224
225 template<class U>
226 ComPtr& operator=(_Inout_ ComPtr<U>&& other) throw()
227 {
228 ComPtr(static_cast<ComPtr<U>&&>(other)).Swap(*this);
229 return *this;
230 }
231
232 void Swap(_Inout_ ComPtr&& r) throw()
233 {
234 T* tmp = ptr_;
235 ptr_ = r.ptr_;
236 r.ptr_ = tmp;
237 }
238
239 void Swap(_Inout_ ComPtr& r) throw()
240 {
241 T* tmp = ptr_;
242 ptr_ = r.ptr_;
243 r.ptr_ = tmp;
244 }
245
246 operator Details::BoolType() const throw()
247 {
248 return Get() != nullptr ? &Details::BoolStruct::Member : nullptr;
249 }
250
251 T* Get() const throw()
252 {
253 return ptr_;
254 }
255
256 InterfaceType* operator->() const throw()
257 {
258 return ptr_;
259 }
260
261 Details::ComPtrRef<ComPtr<T>> operator&() throw()
262 {
263 return Details::ComPtrRef<ComPtr<T>>(this);
264 }
265
266 const Details::ComPtrRef<const ComPtr<T>> operator&() const throw()
267 {
268 return Details::ComPtrRef<const ComPtr<T>>(this);
269 }
270
271 T* const* GetAddressOf() const throw()
272 {
273 return &ptr_;
274 }
275
276 T** GetAddressOf() throw()
277 {
278 return &ptr_;
279 }
280
281 T** ReleaseAndGetAddressOf() throw()
282 {
283 InternalRelease();
284 return &ptr_;
285 }
286
287 T* Detach() throw()
288 {
289 T* ptr = ptr_;
290 ptr_ = nullptr;
291 return ptr;
292 }
293
294 void Attach(_In_opt_ InterfaceType* other) throw()
295 {
296 if (ptr_ != nullptr)
297 {
298 auto ref = ptr_->Release();
299 // DBG_UNREFERENCED_LOCAL_VARIABLE(ref);
300 // Attaching to the same object only works if duplicate references are being coalesced. Otherwise
301 // re-attaching will cause the pointer to be released and may cause a crash on a subsequent dereference.
302 assert(ref != 0 || ptr_ != other);
303 }
304
305 ptr_ = other;
306 }
307
308 unsigned long Reset()
309 {
310 return InternalRelease();
311 }
312
313 // Previously, unsafe behavior could be triggered when 'this' is ComPtr<IInspectable> or ComPtr<IUnknown> and CopyTo is used to copy to another type U.
314 // The user will use operator& to convert the destination into a ComPtrRef, which can then implicit cast to IInspectable** and IUnknown**.
315 // If this overload of CopyTo is not present, it will implicitly cast to IInspectable or IUnknown and match CopyTo(InterfaceType**) instead.
316 // A valid polymoprhic downcast requires run-time type checking via QueryInterface, so CopyTo(InterfaceType**) will break type safety.
317 // This overload matches ComPtrRef before the implicit cast takes place, preventing the unsafe downcast.
318 template <typename U>
319 HRESULT CopyTo(Details::ComPtrRef<ComPtr<U>> ptr, typename std::enable_if<
320 (std::is_same<T, IUnknown>::value)
321 && !std::is_same<U*, T*>::value, void *>::type * = 0) const throw()
322 {
323 return ptr_->QueryInterface(__uuidof(U), ptr);
324 }
325
326 HRESULT CopyTo(_Outptr_result_maybenull_ InterfaceType** ptr) const throw()
327 {
328 InternalAddRef();
329 *ptr = ptr_;
330 return S_OK;
331 }
332
333 HRESULT CopyTo(REFIID riid, _Outptr_result_nullonfailure_ void** ptr) const throw()
334 {
335 return ptr_->QueryInterface(riid, ptr);
336 }
337
338 template<typename U>
339 HRESULT CopyTo(_Outptr_result_nullonfailure_ U** ptr) const throw()
340 {
341 return ptr_->QueryInterface(__uuidof(U), reinterpret_cast<void**>(ptr));
342 }
343
344 // query for U interface
345 template<typename U>
346 HRESULT As(_Inout_ Details::ComPtrRef<ComPtr<U>> p) const throw()
347 {
348 return ptr_->QueryInterface(__uuidof(U), p);
349 }
350
351 // query for U interface
352 template<typename U>
353 HRESULT As(_Out_ ComPtr<U>* p) const throw()
354 {
355 return ptr_->QueryInterface(__uuidof(U), reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
356 }
357
358 // query for riid interface and return as IUnknown
359 HRESULT AsIID(REFIID riid, _Out_ ComPtr<IUnknown>* p) const throw()
360 {
361 return ptr_->QueryInterface(riid, reinterpret_cast<void**>(p->ReleaseAndGetAddressOf()));
362 }
363
364 }; // ComPtr
365
366
367 namespace Details
368 {
369 // Empty struct used as default template parameter
370 class Nil
371 {
372 };
373
374 // Empty struct used for validating template parameter types in Implements
375 struct ImplementsBase
376 {
377 };
378
379 class RuntimeClassBase
380 {
381 protected:
382 template<typename T>
383 static HRESULT AsIID(_In_ T* implements, REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject) noexcept
384 {
385 *ppvObject = nullptr;
386 bool isRefDelegated = false;
387 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
388 if (InlineIsEqualGUID(riid, __uuidof(IUnknown)))
389 {
390 *ppvObject = implements->CastToUnknown();
391 static_cast<IUnknown*>(*ppvObject)->AddRef();
392 return S_OK;
393 }
394
395 HRESULT hr = implements->CanCastTo(riid, ppvObject, &isRefDelegated);
396 if (SUCCEEDED(hr) && !isRefDelegated)
397 {
398 static_cast<IUnknown*>(*ppvObject)->AddRef();
399 }
400
401#ifdef _MSC_VER
402#pragma warning(push)
403#pragma warning(disable: 6102) // '*ppvObject' is used but may not be initialized
404#endif
405 _Analysis_assume_(SUCCEEDED(hr) || (*ppvObject == nullptr));
406#ifdef _MSC_VER
407#pragma warning(pop)
408#endif
409 return hr;
410 }
411
412 public:
413 HRESULT RuntimeClassInitialize() noexcept
414 {
415 return S_OK;
416 }
417 };
418
419 // Interface traits provides casting and filling iids methods helpers
420 template<typename I0>
421 struct InterfaceTraits
422 {
423 typedef I0 Base;
424
425 template<typename T>
426 static Base* CastToBase(_In_ T* ptr) noexcept
427 {
428 return static_cast<Base*>(ptr);
429 }
430
431 template<typename T>
432 static IUnknown* CastToUnknown(_In_ T* ptr) noexcept
433 {
434 return static_cast<IUnknown*>(static_cast<Base*>(ptr));
435 }
436
437 template <typename T>
438 _Success_(return == true)
439 static bool CanCastTo(_In_ T* ptr, REFIID riid, _Outptr_ void **ppv) noexcept
440 {
441 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
442 if (InlineIsEqualGUID(riid, __uuidof(Base)))
443 {
444 *ppv = static_cast<Base*>(ptr);
445 return true;
446 }
447
448 return false;
449 }
450 };
451
452 // Specialization for Nil parameter
453 template<>
454 struct InterfaceTraits<Nil>
455 {
456 typedef Nil Base;
457
458 template <typename T>
459 _Success_(return == true)
460 static bool CanCastTo(_In_ T*, REFIID, _Outptr_ void **) noexcept
461 {
462 return false;
463 }
464 };
465
466 // ChainInterfaces - template allows specifying a derived COM interface along with its class hierarchy to allow QI for the base interfaces
467 template <typename I0, typename I1, typename I2 = Nil, typename I3 = Nil,
468 typename I4 = Nil, typename I5 = Nil, typename I6 = Nil,
469 typename I7 = Nil, typename I8 = Nil, typename I9 = Nil>
470 struct ChainInterfaces : I0
471 {
472 protected:
473 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) throw()
474 {
475 typename InterfaceTraits<I0>::Base* ptr = InterfaceTraits<I0>::CastToBase(this);
476
477 return (InterfaceTraits<I0>::CanCastTo(this, riid, ppv) ||
478 InterfaceTraits<I1>::CanCastTo(ptr, riid, ppv) ||
479 InterfaceTraits<I2>::CanCastTo(ptr, riid, ppv) ||
480 InterfaceTraits<I3>::CanCastTo(ptr, riid, ppv) ||
481 InterfaceTraits<I4>::CanCastTo(ptr, riid, ppv) ||
482 InterfaceTraits<I5>::CanCastTo(ptr, riid, ppv) ||
483 InterfaceTraits<I6>::CanCastTo(ptr, riid, ppv) ||
484 InterfaceTraits<I7>::CanCastTo(ptr, riid, ppv) ||
485 InterfaceTraits<I8>::CanCastTo(ptr, riid, ppv) ||
486 InterfaceTraits<I9>::CanCastTo(ptr, riid, ppv)) ? S_OK : E_NOINTERFACE;
487 }
488
489 IUnknown* CastToUnknown() throw()
490 {
491 return InterfaceTraits<I0>::CastToUnknown(this);
492 }
493 };
494
495 // Helper template used by Implements. This template traverses a list of interfaces and adds them as base class and information
496 // to enable QI.
497 template <typename ...TInterfaces>
498 struct ImplementsHelper;
499
500 template <typename T>
501 struct ImplementsMarker
502 {};
503
504 template <typename I0, bool isImplements>
505 struct MarkImplements;
506
507 template <typename I0>
508 struct MarkImplements<I0, false>
509 {
510 typedef I0 Type;
511 };
512
513 template <typename I0>
514 struct MarkImplements<I0, true>
515 {
516 typedef ImplementsMarker<I0> Type;
517 };
518
519 // AdjustImplements pre-processes the type list for more efficient builds.
520 template <typename ...Bases>
521 struct AdjustImplements;
522
523 template <typename I0, typename ...Bases>
524 struct AdjustImplements<I0, Bases...>
525 {
526 typedef ImplementsHelper<typename MarkImplements<I0, std::is_base_of<ImplementsBase, I0>::value>::Type, Bases...> Type;
527 };
528
529 // Use AdjustImplements to remove instances of "Nil" from the type list.
530 template <typename ...Bases>
531 struct AdjustImplements<Nil, Bases...>
532 {
533 typedef typename AdjustImplements<Bases...>::Type Type;
534 };
535
536 template <>
537 struct AdjustImplements<>
538 {
539 typedef ImplementsHelper<> Type;
540 };
541
542 // Specialization handles unadorned interfaces
543 template <typename I0, typename ...TInterfaces>
544 struct ImplementsHelper<I0, TInterfaces...> :
545 I0,
546 AdjustImplements<TInterfaces...>::Type
547 {
548 template <typename ...> friend struct ImplementsHelper;
549 friend class RuntimeClassBase;
550
551 protected:
552
553 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
554 {
555 // Prefer InlineIsEqualGUID over other forms since it's better perf on 4-byte aligned data, which is almost always the case.
556 if (InlineIsEqualGUID(riid, __uuidof(I0)))
557 {
558 *ppv = reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
559 return S_OK;
560 }
561 return AdjustImplements<TInterfaces...>::Type::CanCastTo(riid, ppv, pRefDelegated);
562 }
563
564 IUnknown* CastToUnknown() noexcept
565 {
566 return reinterpret_cast<I0*>(reinterpret_cast<void*>(this));
567 }
568 };
569
570
571 // Selector is used to "tag" base interfaces to be used in casting, since a runtime class may indirectly derive from
572 // the same interface or Implements<> template multiple times
573 template <typename base, typename disciminator>
574 struct Selector : public base
575 {
576 };
577
578 // Specialization handles types that derive from ImplementsHelper (e.g. nested Implements).
579 template <typename I0, typename ...TInterfaces>
580 struct ImplementsHelper<ImplementsMarker<I0>, TInterfaces...> :
581 Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>,
582 Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>>
583 {
584 template <typename ...> friend struct ImplementsHelper;
585 friend class RuntimeClassBase;
586
587 protected:
588 typedef Selector<I0, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> CurrentType;
589 typedef Selector<typename AdjustImplements<TInterfaces...>::Type, ImplementsHelper<ImplementsMarker<I0>, TInterfaces...>> BaseType;
590
591 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
592 {
593 HRESULT hr = CurrentType::CanCastTo(riid, ppv);
594 if (hr == E_NOINTERFACE)
595 {
596 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
597 }
598 return hr;
599 }
600
601 IUnknown* CastToUnknown() noexcept
602 {
603 // First in list wins.
604 return CurrentType::CastToUnknown();
605 }
606 };
607
608 // terminal case specialization.
609 template <>
610 struct ImplementsHelper<>
611 {
612 template <typename ...> friend struct ImplementsHelper;
613 friend class RuntimeClassBase;
614
615 protected:
616 HRESULT CanCastTo(_In_ REFIID /*riid*/, _Outptr_ void ** /*ppv*/, bool * /*pRefDelegated*/ = nullptr) noexcept
617 {
618 return E_NOINTERFACE;
619 }
620
621 // IUnknown* CastToUnknown() noexcept; // not defined for terminal case.
622 };
623
624 // Specialization handles chaining interfaces
625 template <typename C0, typename C1, typename C2, typename C3, typename C4, typename C5, typename C6, typename C7, typename C8, typename C9, typename ...TInterfaces>
626 struct ImplementsHelper<ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>, TInterfaces...> :
627 ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>,
628 AdjustImplements<TInterfaces...>::Type
629 {
630 template <typename ...> friend struct ImplementsHelper;
631 friend class RuntimeClassBase;
632
633 protected:
634 typedef typename AdjustImplements<TInterfaces...>::Type BaseType;
635
636 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv, bool *pRefDelegated = nullptr) noexcept
637 {
638 HRESULT hr = ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CanCastTo(riid, ppv);
639 if (FAILED(hr))
640 {
641 hr = BaseType::CanCastTo(riid, ppv, pRefDelegated);
642 }
643
644 return hr;
645 }
646
647 IUnknown* CastToUnknown() noexcept
648 {
649 return ChainInterfaces<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>::CastToUnknown();
650 }
651 };
652
653 // Implements - template implementing QI using the information provided through its template parameters
654 // Each template parameter has to be one of the following:
655 // * COM Interface
656 // * A class that implements one or more COM interfaces
657 // * ChainInterfaces template
658 template <typename I0, typename ...TInterfaces>
659 struct Implements :
660 AdjustImplements<I0, TInterfaces...>::Type,
661 ImplementsBase
662 {
663 public:
664 typedef I0 FirstInterface;
665 protected:
666 typedef typename AdjustImplements<I0, TInterfaces...>::Type BaseType;
667 template <typename ...> friend struct ImplementsHelper;
668 friend class RuntimeClassBase;
669
670 HRESULT CanCastTo(REFIID riid, _Outptr_ void **ppv) noexcept
671 {
672 return BaseType::CanCastTo(riid, ppv);
673 }
674
675 IUnknown* CastToUnknown() noexcept
676 {
677 return BaseType::CastToUnknown();
678 }
679 };
680
681 // Used on RuntimeClass to protect it from being constructed with new
682 class DontUseNewUseMake
683 {
684 private:
685 void* operator new(size_t) noexcept
686 {
687 assert(false);
688 return 0;
689 }
690
691 public:
692 void* operator new(size_t, _In_ void* placement) noexcept
693 {
694 return placement;
695 }
696 };
697
698 template <typename ...TInterfaces>
699 class RuntimeClassImpl :
700 public AdjustImplements<TInterfaces...>::Type,
701 public RuntimeClassBase,
702 public DontUseNewUseMake
703 {
704 public:
705 STDMETHOD(QueryInterface)(REFIID riid, _Outptr_result_nullonfailure_ void **ppvObject)
706 {
707 return Super::AsIID(this, riid, ppvObject);
708 }
709
710 STDMETHOD_(ULONG, AddRef)()
711 {
712 return InternalAddRef();
713 }
714
715 STDMETHOD_(ULONG, Release)()
716 {
717 ULONG ref = InternalRelease();
718 if (ref == 0)
719 {
720 this->~RuntimeClassImpl();
721 delete[] reinterpret_cast<char*>(this);
722 }
723
724 return ref;
725 }
726
727 protected:
728 using Super = RuntimeClassBase;
729 static const LONG c_lProtectDestruction = -(LONG_MAX / 2);
730
731 RuntimeClassImpl() noexcept = default;
732
733 virtual ~RuntimeClassImpl() noexcept
734 {
735 // Set refcount_ to -(LONG_MAX/2) to protect destruction and
736 // also catch mismatched Release in debug builds
737 refcount_ = static_cast<ULONG>(c_lProtectDestruction);
738 }
739
740 ULONG InternalAddRef() noexcept
741 {
742 return ++refcount_;
743 }
744
745 ULONG InternalRelease() noexcept
746 {
747 return --refcount_;
748 }
749
750 unsigned long GetRefCount() const noexcept
751 {
752 return refcount_;
753 }
754
755 std::atomic<ULONG> refcount_{1};
756 };
757 }
758
759 template <typename ...TInterfaces>
760 class Base : public Details::RuntimeClassImpl<TInterfaces...>
761 {
762 Base(const Base&) = delete;
763 Base& operator=(const Base&) = delete;
764
765 protected:
766 HRESULT CustomQueryInterface(REFIID /*riid*/, _Outptr_result_nullonfailure_ void** /*ppvObject*/, _Out_ bool *handled)
767 {
768 *handled = false;
769 return S_OK;
770 }
771
772 public:
773 Base() throw() = default;
774 typedef Base RuntimeClassT;
775 };
776
777 // Creates a Nano-COM object wrapped in a smart pointer.
778 template <typename T, typename ...TArgs>
779 ComPtr<T> Make(TArgs&&... args)
780 {
781 std::unique_ptr<char[]> buffer(new(std::nothrow) char[sizeof(T)]);
782 ComPtr<T> object;
783
784 if (buffer)
785 {
786 T* ptr = new (buffer.get())T(std::forward<TArgs>(args)...);
787 object.Attach(ptr);
788 buffer.release();
789 }
790
791 return object;
792 }
793
794 using Details::ChainInterfaces;
795}
796}
797
798// Overloaded global function to provide to IID_PPV_ARGS that support Details::ComPtrRef
799template<typename T>
800void** IID_PPV_ARGS_Helper(Microsoft::WRL::Details::ComPtrRef<T> pp) throw()
801{
802 return pp;
803}