oxidx/types/
enums.rs

1use std::ffi::CStr;
2
3use strum::FromRepr;
4use windows::Win32::Graphics::{Direct3D::*, Direct3D12::*};
5
6#[allow(unused_imports)]
7use super::*;
8
9/// Identifies a technique for resolving texture coordinates that are outside of the boundaries of a texture.
10///
11/// For more information: [`D3D12_TEXTURE_ADDRESS_MODE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_texture_address_mode)
12#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
13#[repr(i32)]
14pub enum AddressMode {
15    /// Tile the texture at every (u,v) integer junction.
16    #[default]
17    Wrap = D3D12_TEXTURE_ADDRESS_MODE_WRAP.0,
18
19    /// Flip the texture at every (u,v) integer junction.
20    Mirror = D3D12_TEXTURE_ADDRESS_MODE_MIRROR.0,
21
22    /// Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.
23    Clamp = D3D12_TEXTURE_ADDRESS_MODE_CLAMP.0,
24
25    /// Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in [`SamplerDesc`] or HLSL code.
26    Border = D3D12_TEXTURE_ADDRESS_MODE_BORDER.0,
27
28    /// Similar to [`AddressMode::Mirror`] and [`AddressMode::Clamp`]. Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.
29    MirrorOnce = D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE.0,
30}
31
32/// Identifies the alpha value, transparency behavior, of a surface.
33///
34/// For more information: [`DXGI_ALPHA_MODE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_2/ne-dxgi1_2-dxgi_alpha_mode)
35#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
36#[repr(i32)]
37pub enum AlphaMode {
38    /// Indicates that the transparency behavior is not specified.
39    #[default]
40    Unspecified = DXGI_ALPHA_MODE_UNSPECIFIED.0,
41
42    /// Indicates that the transparency behavior is premultiplied. Each color is first scaled by the alpha value.
43    /// The alpha value itself is the same in both straight and premultiplied alpha.
44    /// Typically, no color channel value is greater than the alpha channel value.
45    /// If a color channel value in a premultiplied format is greater than the alpha channel,
46    /// the standard source-over blending math results in an additive blend.
47    Premultiplied = DXGI_ALPHA_MODE_PREMULTIPLIED.0,
48
49    /// Indicates that the transparency behavior is not premultiplied. The alpha channel indicates the transparency of the color.
50    Straight = DXGI_ALPHA_MODE_STRAIGHT.0,
51
52    /// Indicates to ignore the transparency behavior.
53    Ignore = DXGI_ALPHA_MODE_IGNORE.0,
54}
55
56/// Specifies blend factors, which modulate values for the pixel shader and render target.
57///
58/// For more information: [`D3D12_BLEND enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_blend)
59#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
60#[repr(i32)]
61pub enum Blend {
62    /// The blend factor is (0, 0, 0, 0). No pre-blend operation.
63    #[default]
64    Zero = D3D12_BLEND_ZERO.0,
65
66    /// The blend factor is (1, 1, 1, 1). No pre-blend operation.
67    One = D3D12_BLEND_ONE.0,
68
69    /// The blend factor is (Rₛ, Gₛ, Bₛ, Aₛ), that is color data (RGB) from a pixel shader. No pre-blend operation.
70    SrcColor = D3D12_BLEND_SRC_COLOR.0,
71
72    /// The blend factor is (1 - Rₛ, 1 - Gₛ, 1 - Bₛ, 1 - Aₛ), that is color data (RGB) from a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB.
73    InvSrcColor = D3D12_BLEND_INV_SRC_COLOR.0,
74
75    /// The blend factor is (Aₛ, Aₛ, Aₛ, Aₛ), that is alpha data (A) from a pixel shader. No pre-blend operation.
76    SrcAlpha = D3D12_BLEND_SRC_ALPHA.0,
77
78    /// The blend factor is ( 1 - Aₛ, 1 - Aₛ, 1 - Aₛ, 1 - Aₛ), that is alpha data (A) from a pixel shader. The pre-blend operation inverts the data, generating 1 - A.
79    InvSrcAlpha = D3D12_BLEND_INV_SRC_ALPHA.0,
80
81    /// The blend factor is (Ad Ad Ad Ad), that is alpha data from a render target. No pre-blend operation.
82    DestAlpha = D3D12_BLEND_DEST_ALPHA.0,
83
84    /// The blend factor is (1 - Ad 1 - Ad 1 - Ad 1 - Ad), that is alpha data from a render target. The pre-blend operation inverts the data, generating 1 - A.
85    InvDestAlpha = D3D12_BLEND_INV_DEST_ALPHA.0,
86
87    /// The blend factor is (Rd, Gd, Bd, Ad), that is color data from a render target. No pre-blend operation.
88    DestColor = D3D12_BLEND_DEST_COLOR.0,
89
90    /// The blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad), that is color data from a render target. The pre-blend operation inverts the data, generating 1 - RGB.
91    InvDestColor = D3D12_BLEND_INV_DEST_COLOR.0,
92
93    /// The blend factor is (f, f, f, 1); where f = min(Aₛ, 1 - Ad). The pre-blend operation clamps the data to 1 or less.
94    SrcAlphaSat = D3D12_BLEND_SRC_ALPHA_SAT.0,
95
96    /// The blend factor is the blend factor set with [`IGraphicsCommandList::om_set_blend_factor`](crate::command_list::GraphicsCommandList::om_set_blend_factor). No pre-blend operation.
97    BlendFactor = D3D12_BLEND_BLEND_FACTOR.0,
98
99    /// The blend factor is the blend factor set with [`IGraphicsCommandList::om_set_blend_factor`](crate::command_list::GraphicsCommandList::om_set_blend_factor). The pre-blend operation inverts the blend factor, generating 1 - blend_factor.
100    InvBlendFactor = D3D12_BLEND_INV_BLEND_FACTOR.0,
101
102    /// The blend factor is data sources both as color data output by a pixel shader. There is no pre-blend operation. This blend factor supports dual-source color blending.
103    Src1Color = D3D12_BLEND_SRC1_COLOR.0,
104
105    /// The blend factor is data sources both as color data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB. This blend factor supports dual-source color blending.
106    InvSrc1Color = D3D12_BLEND_INV_SRC1_COLOR.0,
107
108    /// The blend factor is data sources as alpha data output by a pixel shader. There is no pre-blend operation. This blend factor supports dual-source color blending.
109    Src1Alpha = D3D12_BLEND_SRC1_ALPHA.0,
110
111    /// The blend factor is data sources as alpha data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - A. This blend factor supports dual-source color blending.
112    InvSrc1Alpha = D3D12_BLEND_INV_SRC1_ALPHA.0,
113
114    /// The blend factor is (A, A, A, A), where the constant, A, is taken from the blend factor set with [`GraphicsCommandList::om_set_blend_factor`](crate::command_list::GraphicsCommandList::om_set_blend_factor).
115    AlphaFactor = D3D12_BLEND_ALPHA_FACTOR.0,
116
117    /// The blend factor is (1 – A, 1 – A, 1 – A, 1 – A), where the constant, A, is taken from the blend factor set with [`GraphicsCommandList::om_set_blend_factor`](crate::command_list::GraphicsCommandList::om_set_blend_factor).
118    InvAlphaFactor = D3D12_BLEND_INV_ALPHA_FACTOR.0,
119}
120
121/// Specifies RGB or alpha blending operations.
122///
123/// For more information: [`D3D12_BLEND_OP enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_blend_op)
124#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
125#[repr(i32)]
126pub enum BlendOp {
127    /// Add source 1 and source 2.
128    #[default]
129    Add = D3D12_BLEND_OP_ADD.0,
130
131    /// Subtract source 1 from source 2.
132    Subtract = D3D12_BLEND_OP_SUBTRACT.0,
133
134    /// Subtract source 2 from source 1.
135    RevSubtract = D3D12_BLEND_OP_REV_SUBTRACT.0,
136
137    /// Find the minimum of source 1 and source 2.
138    Min = D3D12_BLEND_OP_MIN.0,
139
140    /// Find the maximum of source 1 and source 2.
141    Max = D3D12_BLEND_OP_MAX.0,
142}
143
144/// Specifies the border color for a static sampler.
145///
146/// For more information: [`D3D12_STATIC_BORDER_COLOR structure`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_static_border_color)
147#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
148#[repr(i32)]
149pub enum BorderColor {
150    /// Indicates black, with the alpha component as fully transparent.
151    #[default]
152    TransparentBlack = D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK.0,
153
154    /// Indicates black, with the alpha component as fully opaque.
155    OpaqueBlack = D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK.0,
156
157    /// Indicates white, with the alpha component as fully opaque.
158    OpaqueWhite = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE.0,
159
160    /// TBD
161    OpaqueBlackUint = D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT.0,
162
163    /// TBD
164    OpaqueWhiteUint = D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT.0,
165}
166
167/// Values that identify the intended use of constant-buffer data.
168///
169/// For more information: [`D3D_CBUFFER_TYPE  enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_cbuffer_type)
170#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
171#[repr(i32)]
172pub enum CbufferType {
173    Cbuffer = D3D_CT_CBUFFER.0,
174    Tbuffer = D3D_CT_TBUFFER.0,
175    InterfacePointers = D3D_CT_INTERFACE_POINTERS.0,
176    BindInfo = D3D_CT_RESOURCE_BIND_INFO.0,
177}
178
179/// Specifies the type of a command list.
180///
181/// For more information: [`D3D12_COMMAND_LIST_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_command_list_type)
182#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
183#[repr(i32)]
184pub enum CommandListType {
185    #[default]
186    /// Specifies a command buffer that the GPU can execute. A direct command list doesn't inherit any GPU state.
187    Direct = D3D12_COMMAND_LIST_TYPE_DIRECT.0,
188
189    /// Specifies a command buffer that can be executed only directly via a direct command list.
190    /// A bundle command list inherits all GPU state (except for the currently set pipeline state object and primitive topology).
191    Bundle = D3D12_COMMAND_LIST_TYPE_BUNDLE.0,
192
193    /// Specifies a command buffer for computing.
194    Compute = D3D12_COMMAND_LIST_TYPE_COMPUTE.0,
195
196    /// Specifies a command buffer for copying.
197    Copy = D3D12_COMMAND_LIST_TYPE_COPY.0,
198
199    /// Specifies a command buffer for video decoding.
200    VideoDecode = D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE.0,
201
202    /// Specifies a command buffer for video processing.
203    VideoProcess = D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS.0,
204
205    /// Specifies a command buffer for video encoding.
206    VideoEncode = D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE.0,
207}
208
209/// Defines priority levels for a command queue.
210///
211/// For more information: [`D3D12_COMMAND_QUEUE_PRIORITY enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_command_queue_priority)
212#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
213#[repr(i32)]
214pub enum CommandQueuePriority {
215    /// Normal priority.
216    #[default]
217    Normal = D3D12_COMMAND_QUEUE_PRIORITY_NORMAL.0,
218
219    /// High priority.
220    High = D3D12_COMMAND_QUEUE_PRIORITY_HIGH.0,
221
222    /// Global realtime priority.
223    GlobalRealtime = D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME.0,
224}
225
226/// Specifies comparison options.
227///
228/// For more information: [`D3D12_COMPARISON_FUNC enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_comparison_func)
229#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
230#[repr(i32)]
231pub enum ComparisonFunc {
232    /// None
233    #[default]
234    None = D3D12_COMPARISON_FUNC_NONE.0,
235
236    /// Never pass the comparison.
237    Never = D3D12_COMPARISON_FUNC_NEVER.0,
238
239    /// If the source data is less than the destination data, the comparison passes.
240    Less = D3D12_COMPARISON_FUNC_LESS.0,
241
242    /// If the source data is equal to the destination data, the comparison passes.
243    Equal = D3D12_COMPARISON_FUNC_EQUAL.0,
244
245    /// If the source data is less than or equal to the destination data, the comparison passes.
246    LessEqual = D3D12_COMPARISON_FUNC_LESS_EQUAL.0,
247
248    /// If the source data is greater than the destination data, the comparison passes.
249    Greater = D3D12_COMPARISON_FUNC_GREATER.0,
250
251    /// If the source data is not equal to the destination data, the comparison passes.
252    NotEqual = D3D12_COMPARISON_FUNC_NOT_EQUAL.0,
253
254    /// If the source data is greater than or equal to the destination data, the comparison passes.
255    GreaterEqual = D3D12_COMPARISON_FUNC_GREATER_EQUAL.0,
256
257    /// Always pass the comparison.
258    Always = D3D12_COMPARISON_FUNC_ALWAYS.0,
259}
260
261/// Identifies whether conservative rasterization is on or off.
262///
263/// For more information: [`D3D12_CONSERVATIVE_RASTERIZATION_MODE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_conservative_rasterization_mode)
264#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
265#[repr(i32)]
266pub enum ConservativeRaster {
267    /// Conservative rasterization is off.
268    #[default]
269    Off = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF.0,
270
271    /// Conservative rasterization is on.
272    On = D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON.0,
273}
274
275/// Specifies color space types.
276///
277/// For more information: [`DXGI_COLOR_SPACE_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/dxgicommon/ne-dxgicommon-dxgi_color_space_type)
278#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
279#[repr(i32)]
280pub enum ColorSpaceType {
281    /// This is the standard definition for sRGB.
282    RgbFullG22NoneP709 = DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709.0,
283
284    /// This is the standard definition for scRGB, and is usually used with 16 bit integer, 16 bit floating point, or 32 bit floating point color channels.
285    RgbFullG10NoneP709 = DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709.0,
286
287    /// This is the standard definition for ITU-R Recommendation BT.709. Note that due to the inclusion of a linear segment, the transfer curve looks similar to a pure exponential gamma of 1.9.
288    RgbStudioG22NoneP709 = DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P709.0,
289
290    /// This is usually used with 10 or 12 bit color channels.
291    RgbStudioG22NoneP2020 = DXGI_COLOR_SPACE_RGB_STUDIO_G22_NONE_P2020.0,
292
293    /// Reserved.
294    Reserved = DXGI_COLOR_SPACE_RESERVED.0,
295
296    /// This definition is commonly used for JPG, and is usually used with 8, 10, or 12 bit color channels.
297    YcbcrFullG22NoneP709X601 = DXGI_COLOR_SPACE_YCBCR_FULL_G22_NONE_P709_X601.0,
298
299    /// This definition is commonly used for MPEG2, and is usually used with 8, 10, or 12 bit color channels.
300    YcbcrStudioG22LeftP601 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P601.0,
301
302    /// This is sometimes used for H.264 camera capture, and is usually used with 8, 10, or 12 bit color channels.
303    YcbcrFullG22LeftP601 = DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P601.0,
304
305    /// This definition is commonly used for H.264 and HEVC, and is usually used with 8, 10, or 12 bit color channels.
306    YcbcrStudioG22LeftP709 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P709.0,
307
308    /// This is sometimes used for H.264 camera capture, and is usually used with 8, 10, or 12 bit color channels.
309    YcbcrFullG22LeftP709 = DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P709.0,
310
311    /// This definition may be used by HEVC, and is usually used with 10 or 12 bit color channels.
312    YcbcrStudioG22LeftP2020 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_LEFT_P2020.0,
313
314    /// This is usually used with 10 or 12 bit color channels.
315    YcbcrFullG22LeftP2020 = DXGI_COLOR_SPACE_YCBCR_FULL_G22_LEFT_P2020.0,
316
317    /// This is usually used with 10 or 12 bit color channels.
318    RgbFullG2084NoneP2020 = DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020.0,
319
320    /// This is usually used with 10 or 12 bit color channels.
321    YcbcrStudioG2084LeftP2020 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_LEFT_P2020.0,
322
323    /// This is usually used with 10 or 12 bit color channels.
324    RgbStudioG2084NoneP2020 = DXGI_COLOR_SPACE_RGB_STUDIO_G2084_NONE_P2020.0,
325
326    /// This is usually used with 10 or 12 bit color channels.
327    YcbcrStudioG22TopLeftP2020 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G22_TOPLEFT_P2020.0,
328
329    /// This is usually used with 10 or 12 bit color channels.
330    YcbcrStudioG2084TopLeftP2020 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G2084_TOPLEFT_P2020.0,
331
332    /// This is usually used with 10 or 12 bit color channels.
333    RgbFullG22NoneP2020 = DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P2020.0,
334
335    /// This is usually used with 10 or 12 bit color channels.
336    YcbcrStudioGhlgTopLeftP2020 = DXGI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020.0,
337
338    /// This is usually used with 10 or 12 bit color channels.
339    YcbcrFullGhlgTopLeftP2020 = DXGI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020.0,
340
341    /// This is usually used with 10 or 12 bit color channels.
342    RgbStudioG24NoneP709 = DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P709.0,
343
344    /// This is usually used with 10 or 12 bit color channels.
345    RgbStudioG24NoneP2020 = DXGI_COLOR_SPACE_RGB_STUDIO_G24_NONE_P2020.0,
346
347    /// This is usually used with 8, 10, or 12 bit color channels.
348    YcbcrStudioG24LeftP709 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P709.0,
349
350    /// This is usually used with 10, or 12 bit color channels.
351    YcbcrStudioG24LeftP2020 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_LEFT_P2020.0,
352
353    /// This is usually used with 10, or 12 bit color channels.
354    YcbcrStudioG24TopLeftP2020 = DXGI_COLOR_SPACE_YCBCR_STUDIO_G24_TOPLEFT_P2020.0,
355
356    /// A custom color definition is used.
357    Custom = DXGI_COLOR_SPACE_CUSTOM.0,
358}
359
360/// Identifies the tier level of conservative rasterization.
361///
362/// For more information: [`D3D12_CONSERVATIVE_RASTERIZATION_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_conservative_rasterization_tier)
363#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
364#[repr(i32)]
365pub enum ConservativeRasterizationTier {
366    /// Conservative rasterization is not supported.
367    #[default]
368    NotSupported = D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED.0,
369
370    /// Tier 1 enforces a maximum 1/2 pixel uncertainty region and does not support post-snap degenerates.
371    /// This is good for tiled rendering, a texture atlas, light map generation and sub-pixel shadow maps.
372    Tier1 = D3D12_CONSERVATIVE_RASTERIZATION_TIER_1.0,
373
374    /// Tier 2 reduces the maximum uncertainty region to 1/256 and requires post-snap degenerates not be culled.
375    /// This tier is helpful for CPU-based algorithm acceleration (such as voxelization).
376    Tier2 = D3D12_CONSERVATIVE_RASTERIZATION_TIER_2.0,
377
378    /// Tier 3 maintains a maximum 1/256 uncertainty region and adds support for inner input coverage. Inner input coverage adds the new value `SV_InnerCoverage` to
379    /// High Level Shading Language (HLSL). This is a 32-bit scalar integer that can be specified on input to a pixel shader, and represents the underestimated conservative
380    /// rasterization information (that is, whether a pixel is guaranteed-to-be-fully covered). This tier is helpful for occlusion culling.
381    Tier3 = D3D12_CONSERVATIVE_RASTERIZATION_TIER_3.0,
382}
383
384/// Specifies the CPU-page properties for the heap.
385///
386/// For more information: [`D3D12_CPU_PAGE_PROPERTY enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_cpu_page_property)
387#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
388#[repr(i32)]
389pub enum CpuPageProperty {
390    /// The CPU-page property is unknown.
391    #[default]
392    Unknown = D3D12_CPU_PAGE_PROPERTY_UNKNOWN.0,
393
394    /// The CPU cannot access the heap, therefore no page properties are available.
395    NotAvailable = D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE.0,
396
397    /// The CPU-page property is write-combined.
398    WriteCombine = D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE.0,
399
400    /// The CPU-page property is write-back.
401    WriteBack = D3D12_CPU_PAGE_PROPERTY_WRITE_BACK.0,
402}
403
404/// Specifies the level of sharing across nodes of an adapter, such as Tier 1 Emulated, Tier 1, or Tier 2.
405///
406/// For more information: [`D3D12_CROSS_NODE_SHARING_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_cross_node_sharing_tier)
407#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
408#[repr(i32)]
409pub enum CrossNodeSharingTier {
410    /// If an adapter has only 1 node, then cross-node sharing doesn't apply.
411    #[default]
412    NotSupported = D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED.0,
413
414    /// Tier 1 Emulated. Devices that set the [`CrossNodeSharingTier`] member of the [`OptionsFeature`](crate::types::features::OptionsFeature) structure to [`CrossNodeSharingTier::Tier1Emulated`] have Tier 1 support.
415    ///
416    /// However, drivers stage these copy operations through a driver-internal system memory allocation. This will cause these copy operations to consume time on the destination GPU as well as the source.
417    Tier1Emulated = D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED.0,
418
419    /// Tier 1. Devices that set the [`CrossNodeSharingTier`] member of the [`OptionsFeature`](crate::types::features::OptionsFeature) structure to [`CrossNodeSharingTier::Tier1`] only support the following cross-node copy operations:
420    /// * [GraphicsCommandList::copy_buffer_region](crate::command_list::GraphicsCommandList::copy_buffer_region)
421    /// * [GraphicsCommandList::copy_texture_region](crate::command_list::GraphicsCommandList::copy_texture_region)
422    /// * [GraphicsCommandList::copy_resource](crate::command_list::GraphicsCommandList::copy_resource)
423    Tier1 = D3D12_CROSS_NODE_SHARING_TIER_1.0,
424
425    /// Tier 2. Devices that set the [`CrossNodeSharingTier`] member of the [`OptionsFeature`](crate::types::features::OptionsFeature) structure to D3D12_CROSS_NODE_SHARING_TIER_2 support all operations across nodes, except for the following:
426    /// * Render target views.
427    /// * Depth stencil views.
428    /// * UAV atomic operations. Similar to CPU/GPU interop, shaders may perform UAV atomic operations; however, no atomicity across adapters is guaranteed.
429    Tier2 = D3D12_CROSS_NODE_SHARING_TIER_2.0,
430
431    /// Indicates support for [`HeapFlags`] on heaps that are visible to multiple nodes.
432    Tier3 = D3D12_CROSS_NODE_SHARING_TIER_3.0,
433}
434
435/// Specifies triangles facing a particular direction are not drawn.
436///
437/// For more information: [`D3D12_CULL_MODE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_cull_mode)
438#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
439#[repr(i32)]
440pub enum CullMode {
441    /// Always draw all triangles.
442    #[default]
443    None = D3D12_CULL_MODE_NONE.0,
444
445    /// Do not draw triangles that are front-facing.
446    Front = D3D12_CULL_MODE_FRONT.0,
447
448    /// Do not draw triangles that are back-facing.
449    Back = D3D12_CULL_MODE_BACK.0,
450}
451
452/// Specifies a type of descriptor heap.
453///
454/// For more information: [`D3D12_DESCRIPTOR_HEAP_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_descriptor_heap_type)
455#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
456#[repr(i32)]
457pub enum DescriptorHeapType {
458    /// The descriptor heap for the render-target view.
459    #[default]
460    Rtv = D3D12_DESCRIPTOR_HEAP_TYPE_RTV.0,
461
462    /// The descriptor heap for the depth-stencil view.
463    Dsv = D3D12_DESCRIPTOR_HEAP_TYPE_DSV.0,
464
465    /// The descriptor heap for the combination of constant-buffer, shader-resource, and unordered-access views.
466    CbvSrvUav = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV.0,
467
468    /// The descriptor heap for the sampler.
469    Sampler = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER.0,
470}
471
472/// Specifies a range so that, for example, if part of a descriptor table has 100 shader-resource views (SRVs) that range can be declared in one entry rather than 100.
473///
474/// For more information: [`D3D12_DESCRIPTOR_RANGE_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_descriptor_range_type)
475#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
476#[repr(i32)]
477pub enum DescriptorRangeType {
478    /// Specifies a range of SRVs.
479    Srv = D3D12_DESCRIPTOR_RANGE_TYPE_SRV.0,
480
481    /// Specifies a range of unordered-access views (UAVs).
482    Uav = D3D12_DESCRIPTOR_RANGE_TYPE_UAV.0,
483
484    /// Specifies a range of constant-buffer views (CBVs).
485    Cbv = D3D12_DESCRIPTOR_RANGE_TYPE_CBV.0,
486
487    /// Specifies a range of samplers.
488    Sampler = D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER.0,
489}
490
491/// Describes the set of features targeted by a Direct3D device.
492///
493/// For more information: [`D3D_FEATURE_LEVEL enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_feature_level)
494#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
495#[repr(i32)]
496pub enum FeatureLevel {
497    /// Targets features supported by Direct3D 11.0, including shader model 5.
498    #[default]
499    Level11 = D3D_FEATURE_LEVEL_11_0.0,
500
501    /// Targets features supported by Direct3D 11.1, including shader model 5 and logical blend operations.
502    /// This feature level requires a display driver that is at least implemented to WDDM for Windows 8 (WDDM 1.2).
503    Level11_1 = D3D_FEATURE_LEVEL_11_1.0,
504
505    /// Targets features supported by Direct3D 12.0, including shader model 5.
506    Level12 = D3D_FEATURE_LEVEL_12_0.0,
507
508    /// Targets features supported by Direct3D 12.1, including shader model 5.
509    Level12_1 = D3D_FEATURE_LEVEL_12_1.0,
510
511    /// Targets features supported by Direct3D 12.2, including shader model 6.5.
512    Level12_2 = D3D_FEATURE_LEVEL_12_2.0,
513}
514
515/// Defines constants that specify a Direct3D 12 feature or feature set to query about.
516///
517/// For more information: [`D3D12_FEATURE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_feature)
518#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
519#[repr(i32)]
520pub enum FeatureType {
521    /// Indicates a query for the level of support for basic Direct3D 12 feature options.
522    Options = D3D12_FEATURE_D3D12_OPTIONS.0,
523
524    /// Indicates a query for the adapter's architectural details, so that your application can better optimize for certain adapter properties.
525    Architecture = D3D12_FEATURE_ARCHITECTURE.0,
526
527    /// Indicates a query for info about the feature levels supported.
528    FeatureLevels = D3D12_FEATURE_FEATURE_LEVELS.0,
529
530    /// Indicates a query for the resources supported by the current graphics driver for a given format.
531    FormatSupport = D3D12_FEATURE_FORMAT_SUPPORT.0,
532
533    /// Indicates a query for the image quality levels for a given format and sample count.
534    MultisampleQualityLevels = D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS.0,
535
536    /// Indicates a query for the DXGI data format.
537    FormatInfo = D3D12_FEATURE_FORMAT_INFO.0,
538
539    /// Indicates a query for the GPU's virtual address space limitations.
540    GpuVirtualAddressSupport = D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT.0,
541
542    /// Indicates a query for the supported shader model.
543    ShaderModel = D3D12_FEATURE_SHADER_MODEL.0,
544
545    /// Indicates a query for the level of support for HLSL 6.0 wave operations.
546    Options1 = D3D12_FEATURE_D3D12_OPTIONS1.0,
547
548    /// Indicates a query for the level of support for protected resource sessions.
549    ProtectedResourceSessionSupport = D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT.0,
550
551    /// Indicates a query for root signature version support.
552    RootSignature = D3D12_FEATURE_ROOT_SIGNATURE.0,
553
554    /// Indicates a query for each adapter's architectural details, so that your application can better optimize for certain adapter properties.
555    Architecture1 = D3D12_FEATURE_ARCHITECTURE1.0,
556
557    /// Indicates a query for the level of support for depth-bounds tests and programmable sample positions.
558    Options2 = D3D12_FEATURE_D3D12_OPTIONS2.0,
559
560    /// Indicates a query for the level of support for shader caching.
561    ShaderCache = D3D12_FEATURE_SHADER_CACHE.0,
562
563    /// Indicates a query for the adapter's support for prioritization of different command queue types.
564    CommandQueuePriority = D3D12_FEATURE_COMMAND_QUEUE_PRIORITY.0,
565
566    /// Indicates a query for the level of support for timestamp queries, format-casting, immediate write, view instancing, and barycentrics.
567    Options3 = D3D12_FEATURE_D3D12_OPTIONS3.0,
568
569    /// Indicates a query for whether or not the adapter supports creating heaps from existing system memory.
570    ExistingHeaps = D3D12_FEATURE_EXISTING_HEAPS.0,
571
572    /// Indicates a query for the level of support for 64KB-aligned MSAA textures, cross-API sharing, and native 16-bit shader operations.
573    Options4 = D3D12_FEATURE_D3D12_OPTIONS4.0,
574
575    /// Indicates a query for the level of support for heap serialization.
576    Serialization = D3D12_FEATURE_SERIALIZATION.0,
577
578    /// Indicates a query for the level of support for the sharing of resources between different adapters—for example, multiple GPUs.
579    CrossNode = D3D12_FEATURE_CROSS_NODE.0,
580
581    /// Starting with Windows 10, version 1809 (10.0; Build 17763), indicates a query for the level of support for render passes, ray tracing, and shader-resource view tier 3 tiled resources.
582    Options5 = D3D12_FEATURE_D3D12_OPTIONS5.0,
583
584    /// Starting with Windows 11 (Build 10.0.22000.194).
585    Displayable = D3D12_FEATURE_DISPLAYABLE.0,
586
587    /// Starting with Windows 10, version 1903 (10.0; Build 18362), indicates a query for the level of support for variable-rate shading (VRS), and indicates whether or not background processing is supported.
588    Options6 = D3D12_FEATURE_D3D12_OPTIONS6.0,
589
590    /// Starting with Windows 10, version 2004 (10.0; Build 19041), indicates a query for the level of support for mesh and amplification shaders, and for sampler feedback.
591    Options7 = D3D12_FEATURE_D3D12_OPTIONS7.0,
592
593    /// Starting with Windows 10, version 2004 (10.0; Build 19041), indicates a query to retrieve the count of protected resource session types.
594    ProtectedResourceSessionTypeCount = D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT.0,
595
596    /// Starting with Windows 10, version 2004 (10.0; Build 19041), indicates a query to retrieve the list of protected resource session types.
597    ProtectedResourceSessionTypes = D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES.0,
598
599    /// Starting with Windows 11 (Build 10.0.22000.194), indicates whether or not unaligned block-compressed textures are supported.
600    Options8 = D3D12_FEATURE_D3D12_OPTIONS8.0,
601
602    /// Starting with Windows 11 (Build 10.0.22000.194), indicates whether or not support exists for mesh shaders, values of SV_RenderTargetArrayIndex
603    /// that are 8 or greater, typed resource 64-bit integer atomics, derivative and derivative-dependent texture sample operations, and the level of
604    /// support for WaveMMA (wave_matrix) operations.
605    Options9 = D3D12_FEATURE_D3D12_OPTIONS9.0,
606
607    /// Starting with Windows 11 (Build 10.0.22000.194), indicates whether or not the SUM combiner can be used, and whether or not SV_ShadingRate can be set from a mesh shader.
608    Options10 = D3D12_FEATURE_D3D12_OPTIONS10.0,
609
610    /// Starting with Windows 11 (Build 10.0.22000.194), indicates whether or not 64-bit integer atomics on resources in descriptor heaps are supported.
611    Options11 = D3D12_FEATURE_D3D12_OPTIONS11.0,
612
613    /// TBD
614    Options12 = D3D12_FEATURE_D3D12_OPTIONS12.0,
615
616    /// TBD
617    Options13 = D3D12_FEATURE_D3D12_OPTIONS13.0,
618
619    /// TBD
620    Options14 = D3D12_FEATURE_D3D12_OPTIONS14.0,
621
622    /// TBD
623    Options15 = D3D12_FEATURE_D3D12_OPTIONS15.0,
624
625    /// TBD
626    Options16 = D3D12_FEATURE_D3D12_OPTIONS16.0,
627
628    /// TBD
629    Options17 = D3D12_FEATURE_D3D12_OPTIONS17.0,
630
631    /// TBD
632    Options18 = D3D12_FEATURE_D3D12_OPTIONS18.0,
633
634    /// TBD
635    Options19 = D3D12_FEATURE_D3D12_OPTIONS19.0,
636
637    /// TBD
638    Options20 = D3D12_FEATURE_D3D12_OPTIONS20.0,
639
640    /// TBD
641    Predication = D3D12_FEATURE_PREDICATION.0,
642
643    /// TBD
644    PlacedResourceSupportInfo = D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO.0,
645
646    /// TBD
647    HardwareCopy = D3D12_FEATURE_HARDWARE_COPY.0,
648}
649
650/// Specifies the fill mode to use when rendering triangles.
651///
652/// For more information: [`D3D12_FILL_MODE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_fill_mode)
653#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
654#[repr(i32)]
655pub enum FillMode {
656    /// Draw lines connecting the vertices. Adjacent vertices are not drawn.
657    Wireframe = D3D12_FILL_MODE_WIREFRAME.0,
658
659    /// Fill the triangles formed by the vertices. Adjacent vertices are not drawn.
660    #[default]
661    Solid = D3D12_FILL_MODE_SOLID.0,
662}
663
664/// Specifies filtering options during texture sampling.
665///
666/// For more information: [`D3D12_FILTER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_filter)
667#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
668#[repr(i32)]
669pub enum Filter {
670    /// Use point sampling for minification, magnification, and mip-level sampling.
671    #[default]
672    Point = D3D12_FILTER_MIN_MAG_MIP_POINT.0,
673
674    /// Use point sampling for minification and magnification; use linear interpolation for mip-level sampling.
675    MinMagPointMipLinear = D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR.0,
676
677    /// Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling.
678    MinMipPointMagLinear = D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT.0,
679
680    /// Use point sampling for minification; use linear interpolation for magnification and mip-level sampling.
681    MinPointMagMipLinear = D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR.0,
682
683    /// Use linear interpolation for minification; use point sampling for magnification and mip-level sampling.
684    MinLinearMagMipPoint = D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT.0,
685
686    /// Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling.
687    MinMipLinearMagPoint = D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR.0,
688
689    /// Use linear interpolation for minification and magnification; use point sampling for mip-level sampling.
690    MinMagLinearMipPoint = D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT.0,
691
692    /// Use linear interpolation for minification, magnification, and mip-level sampling.
693    Linear = D3D12_FILTER_MIN_MAG_MIP_LINEAR.0,
694
695    /// TBD
696    MinMagAnisotropicMipPoint = D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT.0,
697
698    /// Use anisotropic interpolation for minification, magnification, and mip-level sampling.
699    Anisotropic = D3D12_FILTER_ANISOTROPIC.0,
700
701    /// Use point sampling for minification, magnification, and mip-level sampling. Compare the result to the comparison value.
702    ComparisonPoint = D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT.0,
703
704    /// Use point sampling for minification and magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.
705    ComparisonMinMagPointMipLinear = D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR.0,
706
707    /// Use point sampling for minification; use linear interpolation for magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.
708    ComparisonMinMipPointMagLinear = D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT.0,
709
710    /// Use point sampling for minification; use linear interpolation for magnification and mip-level sampling. Compare the result to the comparison value.
711    ComparisonMinPointMagMipLinear = D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR.0,
712
713    /// Use linear interpolation for minification; use point sampling for magnification and mip-level sampling. Compare the result to the comparison value.
714    ComparisonMinLinearMagMipPoint = D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT.0,
715
716    /// Use linear interpolation for minification; use point sampling for magnification; use linear interpolation for mip-level sampling. Compare the result to the comparison value.
717    ComparisonMinMipLinearMagPoint = D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR.0,
718
719    /// Use linear interpolation for minification and magnification; use point sampling for mip-level sampling. Compare the result to the comparison value.
720    ComparisonMinMagLinearMipPoint = D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT.0,
721
722    /// Use linear interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.
723    ComparisonLinear = D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR.0,
724
725    /// TBD
726    ComparisonMinMagAnisotropicMipPoint = D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT.0,
727
728    /// Use anisotropic interpolation for minification, magnification, and mip-level sampling. Compare the result to the comparison value.
729    ComparisonAnisotropic = D3D12_FILTER_COMPARISON_ANISOTROPIC.0,
730
731    /// Fetch the same set of texels as [`Filter::Point`] and instead of filtering them return the minimum of the texels.
732    MinimumPoint = D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT.0,
733
734    /// Fetch the same set of texels as [`Filter::MinMagPointMipLinear`] and instead of filtering them return the minimum of the texels.
735    MinimumMinMagPointMipLinear = D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR.0,
736
737    /// Fetch the same set of texels as [`Filter::MinMipPointMagLinear`] and instead of filtering them return the minimum of the texels.
738    MinimumMinMipPointMagLinear = D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT.0,
739
740    /// Fetch the same set of texels as [`Filter::MinPointMagMipLinear`] and instead of filtering them return the minimum of the texels.
741    MinimumMinPointMagMipLinear = D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR.0,
742
743    /// Fetch the same set of texels as [`Filter::MinLinearMagMipPoint`] and instead of filtering them return the minimum of the texels.
744    MinimumMinLinearMagMipPoint = D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT.0,
745
746    /// Fetch the same set of texels as [`Filter::MinMipLinearMagPoint`] and instead of filtering them return the minimum of the texels.
747    MinimumMinMipLinearMagPoint = D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR.0,
748
749    /// Fetch the same set of texels as [`Filter::MinMagLinearMipPoint`] and instead of filtering them return the minimum of the texels.
750    MinimumMinMagLinearMipPoint = D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT.0,
751
752    /// Fetch the same set of texels as [`Filter::Linear`] and instead of filtering them return the minimum of the texels.
753    MinimumLinear = D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR.0,
754
755    /// Fetch the same set of texels as [`Filter::MinMagAnisotropicMipPoint`] and instead of filtering them return the minimum of the texels.
756    MinimumMinMagAnisotropicMipPoint = D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT.0,
757
758    /// Fetch the same set of texels as [`Filter::Anisotropic`] and instead of filtering them return the minimum of the texels.
759    MinimumAnisotropic = D3D12_FILTER_MINIMUM_ANISOTROPIC.0,
760
761    /// Fetch the same set of texels as [`Filter::Point`] and instead of filtering them return the maximum of the texels.
762    MaximumPoint = D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT.0,
763
764    /// Fetch the same set of texels as [`Filter::MinMagPointMipLinear`] and instead of filtering them return the maximum of the texels.
765    MaximumMinMagPointMipLinear = D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR.0,
766
767    /// Fetch the same set of texels as [`Filter::MinMipPointMagLinear`] and instead of filtering them return the maximum of the texels.
768    MaximumMinMipPointMagLinear = D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT.0,
769
770    /// Fetch the same set of texels as [`Filter::MinPointMagMipLinear`] and instead of filtering them return the maximum of the texels.
771    MaximumMinPointMagMipLinear = D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR.0,
772
773    /// Fetch the same set of texels as [`Filter::MinLinearMagMipPoint`] and instead of filtering them return the maximum of the texels.
774    MaximumMinLinearMagMipPoint = D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT.0,
775
776    /// Fetch the same set of texels as [`Filter::MinMipLinearMagPoint`] and instead of filtering them return the maximum of the texels.
777    MaximumMinMipLinearMagPoint = D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR.0,
778
779    /// Fetch the same set of texels as [`Filter::MinMagLinearMipPoint`] and instead of filtering them return the maximum of the texels.
780    MaximumMinMagLinearMipPoint = D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT.0,
781
782    /// Fetch the same set of texels as [`Filter::Linear`] and instead of filtering them return the maximum of the texels.
783    MaximumLinear = D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR.0,
784
785    /// Fetch the same set of texels as [`Filter::MinMagAnisotropicMipPoint`] and instead of filtering them return the maximum of the texels.
786    MaximumMinMagAnisotropicMipPoint = D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT.0,
787
788    /// Fetch the same set of texels as [`Filter::Anisotropic`] and instead of filtering them return the maximum of the texels.
789    MaximumAnisotropic = D3D12_FILTER_MAXIMUM_ANISOTROPIC.0,
790}
791
792/// Resource data formats, including fully-typed and typeless formats. A list of modifiers at the bottom of the page more fully describes each format type.
793///
794/// For more information: [`DXGI_FORMAT enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format)
795#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
796#[repr(i32)]
797pub enum Format {
798    /// The format is not known.
799    #[default]
800    Unknown = DXGI_FORMAT_UNKNOWN.0,
801
802    /// A four-component, 128-bit typeless format that supports 32 bits per channel including alpha.
803    Rgba32Typeless = DXGI_FORMAT_R32G32B32A32_TYPELESS.0,
804
805    /// A four-component, 128-bit floating-point format that supports 32 bits per channel including alpha.
806    Rgba32Float = DXGI_FORMAT_R32G32B32A32_FLOAT.0,
807
808    /// A four-component, 128-bit unsigned-integer format that supports 32 bits per channel including alpha.
809    Rgba32Uint = DXGI_FORMAT_R32G32B32A32_UINT.0,
810
811    /// A four-component, 128-bit signed-integer format that supports 32 bits per channel including alpha.
812    Rgba32Sint = DXGI_FORMAT_R32G32B32A32_SINT.0,
813
814    /// A three-component, 96-bit typeless format that supports 32 bits per color channel.
815    Rgb32Typeless = DXGI_FORMAT_R32G32B32_TYPELESS.0,
816
817    /// A three-component, 96-bit floating-point format that supports 32 bits per color channel.
818    Rgb32Float = DXGI_FORMAT_R32G32B32_FLOAT.0,
819
820    /// A three-component, 96-bit unsigned-integer format that supports 32 bits per color channel.
821    Rgb32Uint = DXGI_FORMAT_R32G32B32_UINT.0,
822
823    /// A three-component, 96-bit signed-integer format that supports 32 bits per color channel.
824    Rgb32Sint = DXGI_FORMAT_R32G32B32_SINT.0,
825
826    /// A four-component, 64-bit typeless format that supports 16 bits per channel including alpha.
827    Rgba16Typeless = DXGI_FORMAT_R16G16B16A16_TYPELESS.0,
828
829    /// A four-component, 64-bit floating-point format that supports 16 bits per channel including alpha.
830    Rgba16Float = DXGI_FORMAT_R16G16B16A16_FLOAT.0,
831
832    /// A four-component, 64-bit unsigned-normalized-integer format that supports 16 bits per channel including alpha.
833    Rgba16Unorm = DXGI_FORMAT_R16G16B16A16_UNORM.0,
834
835    /// A four-component, 64-bit unsigned-integer format that supports 16 bits per channel including alpha.
836    Rgba16Uint = DXGI_FORMAT_R16G16B16A16_UINT.0,
837
838    /// A four-component, 64-bit signed-normalized-integer format that supports 16 bits per channel including alpha.
839    Rgba16Snorm = DXGI_FORMAT_R16G16B16A16_SNORM.0,
840
841    /// A four-component, 64-bit signed-integer format that supports 16 bits per channel including alpha.
842    Rgba16Sint = DXGI_FORMAT_R16G16B16A16_SINT.0,
843
844    /// A two-component, 64-bit typeless format that supports 32 bits for the red channel and 32 bits for the green channel.
845    Rg32Typeless = DXGI_FORMAT_R32G32_TYPELESS.0,
846
847    /// A two-component, 64-bit floating-point format that supports 32 bits for the red channel and 32 bits for the green channel.
848    Rg32Float = DXGI_FORMAT_R32G32_FLOAT.0,
849
850    /// A two-component, 64-bit unsigned-integer format that supports 32 bits for the red channel and 32 bits for the green channel.
851    Rg32Uint = DXGI_FORMAT_R32G32_UINT.0,
852
853    /// A two-component, 64-bit signed-integer format that supports 32 bits for the red channel and 32 bits for the green channel.
854    Rg32Sint = DXGI_FORMAT_R32G32_SINT.0,
855
856    /// A two-component, 64-bit typeless format that supports 32 bits for the red channel, 8 bits for the green channel, and 24 bits are unused.
857    R32G8X24Typeless = DXGI_FORMAT_R32G8X24_TYPELESS.0,
858
859    /// A 32-bit floating-point component, and two unsigned-integer components (with an additional 32 bits). This format supports 32-bit depth, 8-bit stencil, and 24 bits are unused.
860    D32FloatS8X24Uint = DXGI_FORMAT_D32_FLOAT_S8X24_UINT.0,
861
862    /// A 32-bit typeless component, and two unsigned-integer components (with an additional 32 bits). This format has 32 bits unused, 8 bits for green channel, and 24 bits are unused.
863    R32FloatX8X24Typeless = DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS.0,
864
865    /// A four-component, 32-bit typeless format that supports 10 bits for each color and 2 bits for alpha.
866    Rgb10A2Typeless = DXGI_FORMAT_R10G10B10A2_TYPELESS.0,
867
868    /// A four-component, 32-bit unsigned-normalized-integer format that supports 10 bits for each color and 2 bits for alpha.
869    Rgb10A2Unorm = DXGI_FORMAT_R10G10B10A2_UNORM.0,
870
871    /// A four-component, 32-bit unsigned-integer format that supports 10 bits for each color and 2 bits for alpha.
872    Rgb10A2Uint = DXGI_FORMAT_R10G10B10A2_UINT.0,
873
874    /// Three partial-precision floating-point numbers encoded into a single 32-bit value (a variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent).
875    Rg11B10Float = DXGI_FORMAT_R11G11B10_FLOAT.0,
876
877    /// A four-component, 32-bit typeless format that supports 8 bits per channel including alpha.
878    Rgba8Typeless = DXGI_FORMAT_R8G8B8A8_TYPELESS.0,
879
880    /// A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits per channel including alpha.
881    Rgba8Unorm = DXGI_FORMAT_R8G8B8A8_UNORM.0,
882
883    /// A four-component, 32-bit unsigned-normalized integer sRGB format that supports 8 bits per channel including alpha.
884    Rgba8UnormSrgb = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB.0,
885
886    /// A four-component, 32-bit unsigned-integer format that supports 8 bits per channel including alpha.
887    Rgba8Uint = DXGI_FORMAT_R8G8B8A8_UINT.0,
888
889    /// A four-component, 32-bit signed-normalized-integer format that supports 8 bits per channel including alpha.
890    Rgba8Snorm = DXGI_FORMAT_R8G8B8A8_SNORM.0,
891
892    /// A four-component, 32-bit signed-integer format that supports 8 bits per channel including alpha.
893    Rgba8Sint = DXGI_FORMAT_R8G8B8A8_SINT.0,
894
895    /// A two-component, 32-bit typeless format that supports 16 bits for the red channel and 16 bits for the green channel.
896    Rg16Typeless = DXGI_FORMAT_R16G16_TYPELESS.0,
897
898    /// A two-component, 32-bit floating-point format that supports 16 bits for the red channel and 16 bits for the green channel.
899    Rg16Float = DXGI_FORMAT_R16G16_FLOAT.0,
900
901    /// A two-component, 32-bit unsigned-normalized-integer format that supports 16 bits each for the green and red channels.
902    Rg16Unorm = DXGI_FORMAT_R16G16_UNORM.0,
903
904    /// A two-component, 32-bit unsigned-integer format that supports 16 bits for the red channel and 16 bits for the green channel.
905    Rg16Uint = DXGI_FORMAT_R16G16_UINT.0,
906
907    /// A two-component, 32-bit signed-normalized-integer format that supports 16 bits each for the green and red channels.
908    Rg16Snorm = DXGI_FORMAT_R16G16_SNORM.0,
909
910    /// A two-component, 32-bit signed-integer format that supports 16 bits for the red channel and 16 bits for the green channel.
911    Rg16Sint = DXGI_FORMAT_R16G16_SINT.0,
912
913    /// A single-component, 32-bit typeless format that supports 32 bits for the red channel.
914    R32Typeless = DXGI_FORMAT_R32_TYPELESS.0,
915
916    /// A single-component, 32-bit floating-point format that supports 32 bits for the red channel.
917    D32Float = DXGI_FORMAT_D32_FLOAT.0,
918
919    /// A single-component, 32-bit floating-point format that supports 32 bits for the red channel.
920    R32Float = DXGI_FORMAT_R32_FLOAT.0,
921
922    /// A single-component, 32-bit unsigned-integer format that supports 32 bits for the red channel.
923    R32Uint = DXGI_FORMAT_R32_UINT.0,
924
925    /// A single-component, 32-bit signed-integer format that supports 32 bits for the red channel.
926    R32Sint = DXGI_FORMAT_R32_SINT.0,
927
928    /// A two-component, 32-bit typeless format that supports 24 bits for the red channel and 8 bits for the green channel.
929    R24G8Typeless = DXGI_FORMAT_R24G8_TYPELESS.0,
930
931    /// A 32-bit z-buffer format that supports 24 bits for depth and 8 bits for stencil.
932    D24UnormS8Uint = DXGI_FORMAT_D24_UNORM_S8_UINT.0,
933
934    /// A 32-bit format, that contains a 24 bit, single-component, unsigned-normalized integer, with an additional typeless 8 bits. This format has 24 bits red channel and 8 bits unused.
935    R24UnormX8Typeless = DXGI_FORMAT_R24_UNORM_X8_TYPELESS.0,
936
937    /// A 32-bit format, that contains a 24 bit, single-component, typeless format, with an additional 8 bit unsigned integer component. This format has 24 bits unused and 8 bits green channel.
938    X24TypelessG8Uint = DXGI_FORMAT_X24_TYPELESS_G8_UINT.0,
939
940    /// A two-component, 16-bit typeless format that supports 8 bits for the red channel and 8 bits for the green channel.
941    Rg8Typeless = DXGI_FORMAT_R8G8_TYPELESS.0,
942
943    /// A two-component, 16-bit unsigned-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.
944    Rg8Unorm = DXGI_FORMAT_R8G8_UNORM.0,
945
946    /// A two-component, 16-bit unsigned-integer format that supports 8 bits for the red channel and 8 bits for the green channel.
947    Rg8Uint = DXGI_FORMAT_R8G8_UINT.0,
948
949    /// A two-component, 16-bit signed-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.
950    Rg8Snorm = DXGI_FORMAT_R8G8_SNORM.0,
951
952    /// A two-component, 16-bit signed-integer format that supports 8 bits for the red channel and 8 bits for the green channel.
953    Rg8Sint = DXGI_FORMAT_R8G8_SINT.0,
954
955    /// A single-component, 16-bit typeless format that supports 16 bits for the red channel.
956    R16Typeless = DXGI_FORMAT_R16_TYPELESS.0,
957
958    /// A single-component, 16-bit floating-point format that supports 16 bits for the red channel.
959    R16Float = DXGI_FORMAT_R16_FLOAT.0,
960
961    /// A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for depth.
962    D16Unorm = DXGI_FORMAT_D16_UNORM.0,
963
964    /// A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for the red channel.
965    R16Unorm = DXGI_FORMAT_R16_UNORM.0,
966
967    /// A single-component, 16-bit unsigned-integer format that supports 16 bits for the red channel.
968    R16Uint = DXGI_FORMAT_R16_UINT.0,
969
970    /// A single-component, 16-bit signed-normalized-integer format that supports 16 bits for the red channel.
971    R16Snorm = DXGI_FORMAT_R16_SNORM.0,
972
973    /// A single-component, 16-bit signed-integer format that supports 16 bits for the red channel.
974    R16Sint = DXGI_FORMAT_R16_SINT.0,
975
976    /// A single-component, 8-bit typeless format that supports 8 bits for the red channel.
977    R8Typeless = DXGI_FORMAT_R8_TYPELESS.0,
978
979    /// A single-component, 8-bit unsigned-normalized-integer format that supports 8 bits for the red channel.
980    R8Unorm = DXGI_FORMAT_R8_UNORM.0,
981
982    /// A single-component, 8-bit unsigned-integer format that supports 8 bits for the red channel.
983    R8Uint = DXGI_FORMAT_R8_UINT.0,
984
985    /// A single-component, 8-bit signed-normalized-integer format that supports 8 bits for the red channel.
986    R8Snorm = DXGI_FORMAT_R8_SNORM.0,
987
988    /// A single-component, 8-bit signed-integer format that supports 8 bits for the red channel.
989    R8Sint = DXGI_FORMAT_R8_SINT.0,
990
991    /// A single-component, 8-bit unsigned-normalized-integer format for alpha only.
992    A8Unorm = DXGI_FORMAT_A8_UNORM.0,
993
994    /// A single-component, 1-bit unsigned-normalized integer format that supports 1 bit for the red channel.
995    R1Unorm = DXGI_FORMAT_R1_UNORM.0,
996
997    /// Three partial-precision floating-point numbers encoded into a single 32-bit value all sharing the same 5-bit exponent (variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent).
998    Rgb9E5 = DXGI_FORMAT_R9G9B9E5_SHAREDEXP.0,
999
1000    /// A four-component, 32-bit unsigned-normalized-integer format.
1001    /// This packed RGB format is analogous to the UYVY format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel.
1002    Rg8Bg8Unorm = DXGI_FORMAT_R8G8_B8G8_UNORM.0,
1003
1004    /// A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the YUY2 format.
1005    /// Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel.
1006    Gr8Gb8Unorm = DXGI_FORMAT_G8R8_G8B8_UNORM.0,
1007
1008    /// Four-component typeless block-compression format.
1009    Bc1Typeless = DXGI_FORMAT_BC1_TYPELESS.0,
1010
1011    /// Four-component block-compression format.
1012    Bc1Unorm = DXGI_FORMAT_BC1_UNORM.0,
1013
1014    /// Four-component block-compression format for sRGB data.
1015    Bc1UnormSrgb = DXGI_FORMAT_BC1_UNORM_SRGB.0,
1016
1017    /// Four-component typeless block-compression format.
1018    Bc2Typeless = DXGI_FORMAT_BC2_TYPELESS.0,
1019
1020    /// Four-component block-compression format.
1021    Bc2Unorm = DXGI_FORMAT_BC2_UNORM.0,
1022
1023    /// Four-component block-compression format for sRGB data.
1024    Bc2UnormSrgb = DXGI_FORMAT_BC2_UNORM_SRGB.0,
1025
1026    /// Four-component typeless block-compression format.
1027    Bc3Typeless = DXGI_FORMAT_BC3_TYPELESS.0,
1028
1029    /// Four-component block-compression format.
1030    Bc3Unorm = DXGI_FORMAT_BC3_UNORM.0,
1031
1032    /// Four-component block-compression format for sRGB data.
1033    Bc3UnormSrgb = DXGI_FORMAT_BC3_UNORM_SRGB.0,
1034
1035    /// Four-component typeless block-compression format.
1036    Bc4Typeless = DXGI_FORMAT_BC4_TYPELESS.0,
1037
1038    /// Four-component block-compression format.
1039    Bc4Unorm = DXGI_FORMAT_BC4_UNORM.0,
1040
1041    /// Four-component block-compression format for sRGB data.
1042    Bc4Snorm = DXGI_FORMAT_BC4_SNORM.0,
1043
1044    /// Four-component typeless block-compression format.
1045    Bc5Typeless = DXGI_FORMAT_BC5_TYPELESS.0,
1046
1047    /// Four-component block-compression format.
1048    Bc5Unorm = DXGI_FORMAT_BC5_UNORM.0,
1049
1050    /// Four-component block-compression format for sRGB data.
1051    Bc5Snorm = DXGI_FORMAT_BC5_SNORM.0,
1052
1053    /// A three-component, 16-bit unsigned-normalized-integer format that supports 5 bits for blue, 6 bits for green, and 5 bits for red.
1054    B5G6R5Unorm = DXGI_FORMAT_B5G6R5_UNORM.0,
1055
1056    /// A four-component, 16-bit unsigned-normalized-integer format that supports 5 bits for each color channel and 1-bit alpha.
1057    B5G6R5A1Unorm = DXGI_FORMAT_B5G5R5A1_UNORM.0,
1058
1059    /// A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8-bit alpha.
1060    Bgra8Unorm = DXGI_FORMAT_B8G8R8A8_UNORM.0,
1061
1062    ///A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8 bits unused.
1063    Bgrx8Unorm = DXGI_FORMAT_B8G8R8X8_UNORM.0,
1064
1065    /// A four-component, 32-bit 2.8-biased fixed-point format that supports 10 bits for each color channel and 2-bit alpha.
1066    Rgb10XRBiasA2Unorm = DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM.0,
1067
1068    /// A four-component, 32-bit typeless format that supports 8 bits for each channel including alpha.
1069    Bgra8Typeless = DXGI_FORMAT_B8G8R8A8_TYPELESS.0,
1070
1071    /// A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each channel including alpha.
1072    Bgra8UnormSrgb = DXGI_FORMAT_B8G8R8A8_UNORM_SRGB.0,
1073
1074    /// A four-component, 32-bit typeless format that supports 8 bits for each color channel, and 8 bits are unused.
1075    Bgrx8Typeless = DXGI_FORMAT_B8G8R8X8_TYPELESS.0,
1076
1077    /// A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each color channel, and 8 bits are unused.
1078    Bgrx8UnormSrgb = DXGI_FORMAT_B8G8R8X8_UNORM_SRGB.0,
1079
1080    /// A typeless block-compression format.
1081    Bc6hTypeless = DXGI_FORMAT_BC6H_TYPELESS.0,
1082
1083    /// A block-compression format.
1084    Bc6hUf16 = DXGI_FORMAT_BC6H_UF16.0,
1085
1086    /// A block-compression format.
1087    Bc6hSf16 = DXGI_FORMAT_BC6H_SF16.0,
1088
1089    /// A typeless block-compression format.
1090    Bc7Typeless = DXGI_FORMAT_BC7_TYPELESS.0,
1091
1092    /// A block-compression format.
1093    Bc7Unorm = DXGI_FORMAT_BC7_UNORM.0,
1094
1095    /// A block-compression format.
1096    Bc7UnormSrgb = DXGI_FORMAT_BC7_UNORM_SRGB.0,
1097
1098    /// Most common YUV 4:4:4 video resource format.
1099    Ayuv = DXGI_FORMAT_AYUV.0,
1100
1101    /// 10-bit per channel packed YUV 4:4:4 video resource format.
1102    Y410 = DXGI_FORMAT_Y410.0,
1103
1104    /// 16-bit per channel packed YUV 4:4:4 video resource format.
1105    Y416 = DXGI_FORMAT_Y416.0,
1106
1107    /// Most common YUV 4:2:0 video resource format.
1108    Nv12 = DXGI_FORMAT_NV12.0,
1109
1110    /// 10-bit per channel planar YUV 4:2:0 video resource format.
1111    P010 = DXGI_FORMAT_P010.0,
1112
1113    /// 16-bit per channel planar YUV 4:2:0 video resource format.
1114    P016 = DXGI_FORMAT_P016.0,
1115
1116    /// 8-bit per channel planar YUV 4:2:0 video resource format.
1117    Opaque420 = DXGI_FORMAT_420_OPAQUE.0,
1118
1119    /// Most common YUV 4:2:2 video resource format.
1120    Yuy2 = DXGI_FORMAT_YUY2.0,
1121
1122    /// 10-bit per channel packed YUV 4:2:2 video resource format.
1123    Y210 = DXGI_FORMAT_Y210.0,
1124
1125    /// 16-bit per channel packed YUV 4:2:2 video resource format.
1126    Y216 = DXGI_FORMAT_Y216.0,
1127
1128    /// Most common planar YUV 4:1:1 video resource format.
1129    Nv11 = DXGI_FORMAT_NV11.0,
1130
1131    /// 4-bit palletized YUV format that is commonly used for DVD subpicture.
1132    Ai44 = DXGI_FORMAT_AI44.0,
1133
1134    /// 4-bit palletized YUV format that is commonly used for DVD subpicture.
1135    Ia44 = DXGI_FORMAT_IA44.0,
1136
1137    /// 8-bit palletized format that is used for palletized RGB data when the processor processes ISDB-T data and for palletized YUV data when the processor processes BluRay data.
1138    P8 = DXGI_FORMAT_P8.0,
1139
1140    /// 8-bit palletized format with 8 bits of alpha that is used for palletized YUV data when the processor processes BluRay data.
1141    A8P8 = DXGI_FORMAT_A8P8.0,
1142
1143    /// A four-component, 16-bit unsigned-normalized integer format that supports 4 bits for each channel including alpha.
1144    Bgra4Unorm = DXGI_FORMAT_B4G4R4A4_UNORM.0,
1145
1146    /// A video format; an 8-bit version of a hybrid planar 4:2:2 format.
1147    P208 = DXGI_FORMAT_P208.0,
1148
1149    /// An 8 bit YCbCrA 4:4 rendering format.
1150    V208 = DXGI_FORMAT_V208.0,
1151
1152    /// An 8 bit YCbCrA 4:4:4:4 rendering format.
1153    V408 = DXGI_FORMAT_V408.0,
1154}
1155
1156/// The preference of GPU for the app to run on.
1157///
1158/// For more information: [`DXGI_GPU_PREFERENCE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_6/ne-dxgi1_6-dxgi_gpu_preference)
1159#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
1160#[repr(i32)]
1161pub enum GpuPreference {
1162    Unspecified = DXGI_GPU_PREFERENCE_UNSPECIFIED.0,
1163    MinimumPower = DXGI_GPU_PREFERENCE_MINIMUM_POWER.0,
1164    HighPerformance = DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE.0,
1165}
1166
1167/// Heap alignment variants.
1168#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
1169#[repr(u64)]
1170pub enum HeapAlignment {
1171    /// An alias for 64KB.
1172    #[default]
1173    Default = 0,
1174
1175    /// Defined as 64KB.
1176    ResourcePlacement = D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT as u64,
1177
1178    /// Defined as 4MB. An application must decide whether the heap will contain multi-sample anti-aliasing (MSAA), in which case, the application must choose this
1179    MsaaResourcePlacement = D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT as u64,
1180}
1181
1182/// Defines constants that specify heap serialization support.
1183///
1184/// For more information: [`D3D12_HEAP_SERIALIZATION_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_heap_serialization_tier)
1185#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
1186#[repr(i32)]
1187pub enum HeapSerializationTier {
1188    /// Indicates that heap serialization is not supported.
1189    #[default]
1190    Tier0 = D3D12_HEAP_SERIALIZATION_TIER_0.0,
1191
1192    /// Indicates that heap serialization is supported. Your application can serialize resource data in heaps through copying APIs such as CopyResource,
1193    /// without necessarily requiring an explicit state transition of resources on those heaps.
1194    Tier10 = D3D12_HEAP_SERIALIZATION_TIER_10.0,
1195}
1196
1197/// Specifies the type of heap. When resident, heaps reside in a particular physical memory pool with certain CPU cache properties.
1198///
1199/// For more information: [`D3D12_HEAP_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_heap_type)
1200#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
1201#[repr(i32)]
1202pub enum HeapType {
1203    /// Specifies the default heap. This heap type experiences the most bandwidth for the GPU, but cannot provide CPU access.
1204    /// The GPU can read and write to the memory from this pool, and resource transition barriers may be changed.
1205    /// The majority of heaps and resources are expected to be located here, and are typically populated through resources in upload heaps.
1206    #[default]
1207    Default = D3D12_HEAP_TYPE_DEFAULT.0,
1208
1209    /// Specifies a heap used for uploading. This heap type has CPU access optimized for uploading to the GPU,
1210    /// but does not experience the maximum amount of bandwidth for the GPU. This heap type is best for CPU-write-once, GPU-read-once data;
1211    /// but GPU-read-once is stricter than necessary. GPU-read-once-or-from-cache is an acceptable use-case for the data;
1212    /// but such usages are hard to judge due to differing GPU cache designs and sizes.
1213    /// If in doubt, stick to the GPU-read-once definition or profile the difference on many GPUs between copying the data to a _DEFAULT heap vs.
1214    /// reading the data from an _UPLOAD heap.
1215    Upload = D3D12_HEAP_TYPE_UPLOAD.0,
1216
1217    /// Specifies a heap used for reading back. This heap type has CPU access optimized for reading data back from the GPU,
1218    /// but does not experience the maximum amount of bandwidth for the GPU. This heap type is best for GPU-write-once, CPU-readable data.
1219    /// The CPU cache behavior is write-back, which is conducive for multiple sub-cache-line CPU reads.
1220    Readback = D3D12_HEAP_TYPE_READBACK.0,
1221
1222    /// Specifies a custom heap. The application may specify the memory pool and CPU cache properties directly, which can be useful for UMA optimizations,
1223    /// multi-engine, multi-adapter, or other special cases. To do so, the application is expected to understand the adapter architecture to make the right choice.
1224    Custom = D3D12_HEAP_TYPE_CUSTOM.0,
1225
1226    /// TBD
1227    GpuUpload = D3D12_HEAP_TYPE_GPU_UPLOAD.0,
1228}
1229
1230/// When using triangle strip primitive topology, vertex positions are interpreted as vertices of a continuous triangle “strip”.
1231/// There is a special index value that represents the desire to have a discontinuity in the strip, the cut index value. This enum lists the supported cut values.
1232///
1233/// For more information: [`D3D12_INDEX_BUFFER_STRIP_CUT_VALUE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_index_buffer_strip_cut_value)
1234#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
1235#[repr(i32)]
1236pub enum IndexBufferStripCutValue {
1237    /// Indicates that there is no cut value.
1238    #[default]
1239    Disabled = D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED.0,
1240
1241    /// Indicates that 0xFFFF should be used as the cut value.
1242    _0xFFFF = D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF.0,
1243
1244    /// Indicates that 0xFFFFFFFF should be used as the cut value.
1245    _0xFFFFFFFF = D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF.0,
1246}
1247
1248/// Defines constants that specify logical operations to configure for a render target.
1249///
1250/// For more information: [`D3D12_LOGIC_OP enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_logic_op)
1251#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
1252#[repr(i32)]
1253pub enum LogicOp {
1254    /// Clears the render target (0).
1255    #[default]
1256    Clear = D3D12_LOGIC_OP_CLEAR.0,
1257
1258    /// Sets the render target (1).
1259    Set = D3D12_LOGIC_OP_SET.0,
1260
1261    /// Copys the render target (s source from Pixel Shader output).
1262    Copy = D3D12_LOGIC_OP_COPY.0,
1263
1264    /// Performs an inverted-copy of the render target (~s).
1265    CopyInverted = D3D12_LOGIC_OP_COPY_INVERTED.0,
1266
1267    /// No operation is performed on the render target (d destination in the Render Target View).
1268    Noop = D3D12_LOGIC_OP_NOOP.0,
1269
1270    /// Inverts the render target (~d).
1271    Invert = D3D12_LOGIC_OP_INVERT.0,
1272
1273    /// Performs a logical AND operation on the render target (s & d).
1274    And = D3D12_LOGIC_OP_AND.0,
1275
1276    /// Performs a logical NAND operation on the render target (~(s & d)).
1277    Nand = D3D12_LOGIC_OP_NAND.0,
1278
1279    /// Performs a logical OR operation on the render target (s | d).
1280    Or = D3D12_LOGIC_OP_OR.0,
1281
1282    /// Performs a logical NOR operation on the render target (~(s | d)).
1283    Nor = D3D12_LOGIC_OP_NOR.0,
1284
1285    /// Performs a logical XOR operation on the render target (s ^ d).
1286    Xor = D3D12_LOGIC_OP_XOR.0,
1287
1288    /// Performs a logical equal operation on the render target (~(s ^ d)).
1289    Equiv = D3D12_LOGIC_OP_EQUIV.0,
1290
1291    /// Performs a logical AND and reverse operation on the render target (s & ~d).
1292    Reverse = D3D12_LOGIC_OP_AND_REVERSE.0,
1293
1294    /// Performs a logical AND and invert operation on the render target (~s & d).
1295    AndInverted = D3D12_LOGIC_OP_AND_INVERTED.0,
1296
1297    /// Performs a logical OR and reverse operation on the render target (s | ~d).
1298    OrReverse = D3D12_LOGIC_OP_OR_REVERSE.0,
1299
1300    /// Performs a logical OR and invert operation on the render target (~s | d).
1301    OrInverted = D3D12_LOGIC_OP_OR_INVERTED.0,
1302}
1303
1304/// Specifies the memory pool for the heap.
1305///
1306/// For more information: [`D3D12_MEMORY_POOL enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_memory_pool)
1307#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
1308#[repr(i32)]
1309pub enum MemoryPool {
1310    /// The memory pool is unknown.
1311    #[default]
1312    Unknown = D3D12_MEMORY_POOL_UNKNOWN.0,
1313
1314    /// The memory pool is L0.
1315    ///
1316    /// L0 is the physical system memory pool.
1317    ///
1318    /// When the adapter is discrete/NUMA, this pool has greater bandwidth for the CPU and less bandwidth for the GPU.
1319    ///
1320    /// When the adapter is UMA, this pool is the only one which is valid.
1321    L0 = D3D12_MEMORY_POOL_L0.0,
1322
1323    /// The memory pool is L1.
1324    ///
1325    /// L1 is typically known as the physical video memory pool.
1326    ///
1327    /// L1 is only available when the adapter is discrete/NUMA, and has greater bandwidth for the GPU and cannot even be accessed by the CPU.
1328    ///
1329    /// When the adapter is UMA, this pool is not available.
1330    L1 = D3D12_MEMORY_POOL_L1.0,
1331}
1332/// Defines constants that specify mesh and amplification shader support.
1333///
1334/// For more information: [`D3D12_MESH_SHADER_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_mesh_shader_tier)
1335#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
1336#[repr(i32)]
1337pub enum MeshShaderTier {
1338    /// Specifies that mesh and amplification shaders are not supported.
1339    #[default]
1340    NotSupported = D3D12_MESH_SHADER_TIER_NOT_SUPPORTED.0,
1341
1342    /// Specifies that mesh and amplification shaders are supported.
1343    Tier1 = D3D12_MESH_SHADER_TIER_1.0,
1344}
1345
1346/// Specifies categories of debug messages.
1347///
1348/// For more information: [`D3D12_MESSAGE_CATEGORY enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12sdklayers/ne-d3d12sdklayers-d3d12_message_category)
1349#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
1350#[repr(i32)]
1351pub enum MessageCategory {
1352    /// Indicates a user defined message,
1353    ApplicationDefined = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED.0,
1354
1355    /// TBD
1356    Miscellaneous = D3D12_MESSAGE_CATEGORY_MISCELLANEOUS.0,
1357
1358    /// TBD
1359    Initialization = D3D12_MESSAGE_CATEGORY_INITIALIZATION.0,
1360
1361    /// TBD
1362    Cleanup = D3D12_MESSAGE_CATEGORY_CLEANUP.0,
1363
1364    /// TBD
1365    Compilation = D3D12_MESSAGE_CATEGORY_COMPILATION.0,
1366
1367    /// TBD
1368    StateCreation = D3D12_MESSAGE_CATEGORY_STATE_CREATION.0,
1369
1370    /// TBD
1371    StateSettings = D3D12_MESSAGE_CATEGORY_STATE_SETTING.0,
1372
1373    /// TBD
1374    StateGetting = D3D12_MESSAGE_CATEGORY_STATE_GETTING.0,
1375
1376    /// TBD
1377    ResourceManipulation = D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION.0,
1378
1379    /// TBD
1380    Execution = D3D12_MESSAGE_CATEGORY_EXECUTION.0,
1381
1382    /// TBD
1383    Shader = D3D12_MESSAGE_CATEGORY_SHADER.0,
1384}
1385
1386/// Specifies debug message IDs for setting up an info-queue filter.
1387///
1388/// For more information: [`D3D12_MESSAGE_ID enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12sdklayers/ne-d3d12sdklayers-d3d12_message_id)
1389#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
1390#[repr(i32)]
1391pub enum MessageId {
1392    Unknown = D3D12_MESSAGE_ID_UNKNOWN.0,
1393    StringFromApplication = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION.0,
1394    CorruptedThis = D3D12_MESSAGE_ID_CORRUPTED_THIS.0,
1395    CorruptedParameter1 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1.0,
1396    CorruptedParameter2 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2.0,
1397    CorruptedParameter3 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3.0,
1398    CorruptedParameter4 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4.0,
1399    CorruptedParameter5 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5.0,
1400    CorruptedParameter6 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6.0,
1401    CorruptedParameter7 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7.0,
1402    CorruptedParameter8 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8.0,
1403    CorruptedParameter9 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9.0,
1404    CorruptedParameter10 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10.0,
1405    CorruptedParameter11 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11.0,
1406    CorruptedParameter12 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12.0,
1407    CorruptedParameter13 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13.0,
1408    CorruptedParameter14 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14.0,
1409    CorruptedParameter15 = D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15.0,
1410    CorruptedMultithreading = D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING.0,
1411    MessageReportingOutOfMemory = D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY.0,
1412    GetPrivateDataMoredata = D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA.0,
1413    SetPrivateDataInvalidfreedata = D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA.0,
1414    SetPrivateDataChangingparams = D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS.0,
1415    SetPrivateDataOutOfMemory = D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY.0,
1416    CreateShaderResourceViewUnrecognizedformat =
1417        D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT.0,
1418    CreateShaderResourceViewInvaliddesc = D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC.0,
1419    CreateShaderResourceViewInvalidformat =
1420        D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT.0,
1421    CreateShaderResourceViewInvalidvideoplaneslice =
1422        D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE.0,
1423    CreateShaderResourceViewInvalidplaneslice =
1424        D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE.0,
1425    CreateShaderResourceViewInvaliddimensions =
1426        D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS.0,
1427    CreateShaderResourceViewInvalidresource =
1428        D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE.0,
1429    CreateRenderTargetViewUnrecognizedformat =
1430        D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT.0,
1431    CreateRenderTargetViewUnsupportedformat =
1432        D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT.0,
1433    CreateRenderTargetViewInvaliddesc = D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC.0,
1434    CreateRenderTargetViewInvalidformat = D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT.0,
1435    CreateRenderTargetViewInvalidvideoplaneslice =
1436        D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE.0,
1437    CreateRenderTargetViewInvalidplaneslice =
1438        D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE.0,
1439    CreateRenderTargetViewInvaliddimensions =
1440        D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS.0,
1441    CreateRenderTargetViewInvalidresource =
1442        D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE.0,
1443    CreateDepthStencilViewUnrecognizedformat =
1444        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT.0,
1445    CreateDepthStencilViewInvaliddesc = D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC.0,
1446    CreateDepthStencilViewInvalidformat = D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT.0,
1447    CreateDepthStencilViewInvaliddimensions =
1448        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS.0,
1449    CreateDepthStencilViewInvalidresource =
1450        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE.0,
1451    CreateInputLayoutOutOfMemory = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY.0,
1452    CreateInputLayoutToomanyelements = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS.0,
1453    CreateInputLayoutInvalidformat = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT.0,
1454    CreateInputLayoutIncompatibleformat = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT.0,
1455    CreateInputLayoutInvalidslot = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT.0,
1456    CreateInputLayoutInvalidinputslotclass =
1457        D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS.0,
1458    CreateInputLayoutSteprateslotclassmismatch =
1459        D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH.0,
1460    CreateInputLayoutInvalidslotclasschange =
1461        D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE.0,
1462    CreateInputLayoutInvalidstepratechange =
1463        D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE.0,
1464    CreateInputLayoutInvalidalignment = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT.0,
1465    CreateInputLayoutDuplicatesemantic = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC.0,
1466    CreateInputLayoutUnparseableinputsignature =
1467        D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE.0,
1468    CreateInputLayoutNullsemantic = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC.0,
1469    CreateInputLayoutMissingelement = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT.0,
1470    CreateVertexShaderOutOfMemory = D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY.0,
1471    CreateVertexShaderInvalidShaderBytecode =
1472        D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE.0,
1473    CreateVertexShaderInvalidshadertype = D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE.0,
1474    CreateGeometryShaderOutOfMemory = D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY.0,
1475    CreateGeometryShaderInvalidShaderBytecode =
1476        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE.0,
1477    CreateGeometryShaderInvalidshadertype =
1478        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE.0,
1479    CreateGeometryShaderWithStreamOutputOutOfMemory =
1480        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY.0,
1481    CreateGeometryShaderWithStreamOutputInvalidShaderBytecode =
1482        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE.0,
1483    CreateGeometryShaderWithStreamOutputInvalidshadertype =
1484        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE.0,
1485    CreateGeometryShaderWithStreamOutputInvalidnumentries =
1486        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES.0,
1487    CreateGeometryShaderWithStreamOutputOutputstreamstrideunused =
1488        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED.0,
1489    CreateGeometryShaderWithStreamOutputOutputslot0Expected =
1490        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED.0,
1491    CreateGeometryShaderWithStreamOutputInvalidoutputslot =
1492        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT.0,
1493    CreateGeometryShaderWithStreamOutputOnlyoneelementperslot =
1494        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT.0,
1495    CreateGeometryShaderWithStreamOutputInvalidcomponentcount =
1496        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT.0,
1497    CreateGeometryShaderWithStreamOutputInvalidstartcomponentandcomponentcount = D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT.0,
1498    CreateGeometryShaderWithStreamOutputInvalidgapdefinition =
1499        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION.0,
1500    CreateGeometryShaderWithStreamOutputRepeatedOutput =
1501        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT.0,
1502    CreateGeometryShaderWithStreamOutputInvalidOutputStreamStride =
1503        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE.0,
1504    CreateGeometryShaderWithStreamOutputMissingSemantic =
1505        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC.0,
1506    CreateGeometryShaderWithStreamOutputMaskMismatch =
1507        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH.0,
1508    CreateGeometryShaderWithStreamOutputCantHaveOnlyGaps =
1509        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS.0,
1510    CreateGeometryShaderWithStreamOutputDeclTooComplex =
1511        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX.0,
1512    CreateGeometryShaderWithStreamOutputMissingOutputSignature =
1513        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE.0,
1514    CreatePixelShaderOutOfMemory = D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY.0,
1515    CreatePixelShaderInvalidShaderBytecode =
1516        D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE.0,
1517    CreatePixelShaderInvalidshadertype = D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE.0,
1518    CreateRasterizerStateInvalidfillmode = D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE.0,
1519    CreateRasterizerStateInvalidcullmode = D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE.0,
1520    CreateRasterizerStateInvaliddepthbiasclamp =
1521        D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP.0,
1522    CreateRasterizerStateInvalidslopescaleddepthbias =
1523        D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS.0,
1524    CreatedepthstencilstateInvaliddepthwritemask =
1525        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK.0,
1526    CreatedepthstencilstateInvaliddepthfunc =
1527        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC.0,
1528    CreatedepthstencilstateInvalidfrontfacestencilfailop =
1529        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP.0,
1530    CreatedepthstencilstateInvalidfrontfacestencilzfailop =
1531        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP.0,
1532    CreatedepthstencilstateInvalidfrontfacestencilpassop =
1533        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP.0,
1534    CreatedepthstencilstateInvalidfrontfacestencilfunc =
1535        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC.0,
1536    CreatedepthstencilstateInvalidbackfacestencilfailop =
1537        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP.0,
1538    CreatedepthstencilstateInvalidbackfacestencilzfailop =
1539        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP.0,
1540    CreatedepthstencilstateInvalidbackfacestencilpassop =
1541        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP.0,
1542    CreatedepthstencilstateInvalidbackfacestencilfunc =
1543        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC.0,
1544    CreateblendstateInvalidsrcblend = D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND.0,
1545    CreateblendstateInvaliddestblend = D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND.0,
1546    CreateblendstateInvalidblendop = D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP.0,
1547    CreateblendstateInvalidsrcblendalpha = D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA.0,
1548    CreateblendstateInvaliddestblendalpha =
1549        D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA.0,
1550    CreateblendstateInvalidblendopalpha = D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA.0,
1551    CreateblendstateInvalidrendertargetwritemask =
1552        D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK.0,
1553    CleardepthstencilviewInvalid = D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID.0,
1554    CommandListDrawRootSignatureNotSet =
1555        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET.0,
1556    CommandListDrawRootSignatureMismatch =
1557        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH.0,
1558    CommandListDrawVertexBufferNotSet = D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET.0,
1559    CommandListDrawVertexBufferStrideTooSmall =
1560        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL.0,
1561    CommandListDrawVertexBufferTooSmall =
1562        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL.0,
1563    CommandListDrawIndexBufferNotSet = D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET.0,
1564    CommandListDrawIndexBufferFormatInvalid =
1565        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID.0,
1566    CommandListDrawIndexBufferTooSmall =
1567        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL.0,
1568    CommandListDrawInvalidPrimitivetopology =
1569        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY.0,
1570    CommandListDrawVertexStrideUnaligned =
1571        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED.0,
1572    CommandListDrawIndexOffsetUnaligned =
1573        D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED.0,
1574    DeviceRemovalProcessAtFault = D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT.0,
1575    DeviceRemovalProcessPossiblyAtFault =
1576        D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT.0,
1577    DeviceRemovalProcessNotAtFault = D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT.0,
1578    CreateInputLayoutTrailingDigitInSemantic =
1579        D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC.0,
1580    CreateGeometryShaderWithStreamOutputTrailingDigitInSemantic =
1581        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC.0,
1582    CreateInputLayoutTypeMismatch = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH.0,
1583    CreateInputLayoutEmptyLayout = D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT.0,
1584    LiveObjectSummary = D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY.0,
1585    LiveDevice = D3D12_MESSAGE_ID_LIVE_DEVICE.0,
1586    LiveSwapchain = D3D12_MESSAGE_ID_LIVE_SWAPCHAIN.0,
1587    CreateDepthStencilViewInvalidflags = D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS.0,
1588    CreateVertexShaderInvalidclasslinkage =
1589        D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE.0,
1590    CreateGeometryShaderInvalidclasslinkage =
1591        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE.0,
1592    CreateGeometryShaderWithStreamOutputInvalidstreamtorasterizer =
1593        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER.0,
1594    CreatePixelShaderInvalidclasslinkage = D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE.0,
1595    CreateGeometryShaderWithStreamOutputInvalidstream =
1596        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM.0,
1597    CreateGeometryShaderWithStreamOutputUnexpectedentries =
1598        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES.0,
1599    CreateGeometryShaderWithStreamOutputUnexpectedstrides =
1600        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES.0,
1601    CreateGeometryShaderWithStreamOutputInvalidnumstrides =
1602        D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES.0,
1603    CreatehullshaderOutOfMemory = D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY.0,
1604    CreatehullshaderInvalidShaderBytecode =
1605        D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE.0,
1606    CreatehullshaderInvalidshadertype = D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE.0,
1607    CreatehullshaderInvalidclasslinkage = D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE.0,
1608    CreatedomainshaderOutOfMemory = D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY.0,
1609    CreatedomainshaderInvalidShaderBytecode =
1610        D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE.0,
1611    CreatedomainshaderInvalidshadertype = D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE.0,
1612    CreatedomainshaderInvalidclasslinkage =
1613        D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE.0,
1614    ResourceUnmapNotmapped = D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED.0,
1615    DeviceCheckfeaturesupportMismatchedDataSize =
1616        D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE.0,
1617    CreateComputeShaderOutOfMemory = D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY.0,
1618    CreateComputeShaderInvalidShaderBytecode =
1619        D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE.0,
1620    CreateComputeShaderInvalidclasslinkage =
1621        D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE.0,
1622    DeviceCreateVertexShaderDoublefloatopsnotsupported =
1623        D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED.0,
1624    DeviceCreatehullshaderDoublefloatopsnotsupported =
1625        D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED.0,
1626    DeviceCreatedomainshaderDoublefloatopsnotsupported =
1627        D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED.0,
1628    DeviceCreateGeometryShaderDoublefloatopsnotsupported =
1629        D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED.0,
1630    DeviceCreateGeometryShaderWithStreamOutputDoublefloatopsnotsupported =
1631        D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED.0,
1632    DeviceCreatePixelShaderDoublefloatopsnotsupported =
1633        D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED.0,
1634    DeviceCreateComputeShaderDoublefloatopsnotsupported =
1635        D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED.0,
1636    CreateunorderedaccessviewInvalidresource =
1637        D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE.0,
1638    CreateunorderedaccessviewInvaliddesc = D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC.0,
1639    CreateunorderedaccessviewInvalidformat =
1640        D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT.0,
1641    CreateunorderedaccessviewInvalidvideoplaneslice =
1642        D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE.0,
1643    CreateunorderedaccessviewInvalidplaneslice =
1644        D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE.0,
1645    CreateunorderedaccessviewInvaliddimensions =
1646        D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS.0,
1647    CreateunorderedaccessviewUnrecognizedformat =
1648        D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT.0,
1649    CreateunorderedaccessviewInvalidflags =
1650        D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS.0,
1651    CreateRasterizerStateInvalidforcedsamplecount =
1652        D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT.0,
1653    CreateblendstateInvalidlogicops = D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS.0,
1654    DeviceCreateVertexShaderDoubleextensionsnotsupported =
1655        D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED.0,
1656    DeviceCreatehullshaderDoubleextensionsnotsupported =
1657        D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED.0,
1658    DeviceCreatedomainshaderDoubleextensionsnotsupported =
1659        D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED.0,
1660    DeviceCreateGeometryShaderDoubleextensionsnotsupported =
1661        D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED.0,
1662    DeviceCreateGeometryShaderWithStreamOutputDoubleextensionsnotsupported =
1663        D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED.0,
1664    DeviceCreatePixelShaderDoubleextensionsnotsupported =
1665        D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED.0,
1666    DeviceCreateComputeShaderDoubleextensionsnotsupported =
1667        D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED.0,
1668    DeviceCreateVertexShaderUavsnotsupported =
1669        D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED.0,
1670    DeviceCreatehullshaderUavsnotsupported =
1671        D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED.0,
1672    DeviceCreatedomainshaderUavsnotsupported =
1673        D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED.0,
1674    DeviceCreateGeometryShaderUavsnotsupported =
1675        D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED.0,
1676    DeviceCreateGeometryShaderWithStreamOutputUavsnotsupported =
1677        D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED.0,
1678    DeviceCreatePixelShaderUavsnotsupported =
1679        D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED.0,
1680    DeviceCreateComputeShaderUavsnotsupported =
1681        D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED.0,
1682    DeviceClearviewInvalidsourcerect = D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT.0,
1683    DeviceClearviewEmptyrect = D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT.0,
1684    UpdatetilemappingsInvalidParameter = D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER.0,
1685    CopytilemappingsInvalidParameter = D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER.0,
1686    CreatedeviceInvalidargs = D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS.0,
1687    CreatedeviceWarning = D3D12_MESSAGE_ID_CREATEDEVICE_WARNING.0,
1688    ResourceBarrierInvalidType = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE.0,
1689    ResourceBarrierNullPointer = D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER.0,
1690    ResourceBarrierInvalidSubresource = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE.0,
1691    ResourceBarrierReservedBits = D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS.0,
1692    ResourceBarrierMissingBindFlags = D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS.0,
1693    ResourceBarrierMismatchingMiscFlags =
1694        D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS.0,
1695    ResourceBarrierMatchingStates = D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES.0,
1696    ResourceBarrierInvalidCombination = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION.0,
1697    ResourceBarrierBeforeAfterMismatch = D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH.0,
1698    ResourceBarrierInvalidResource = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE.0,
1699    ResourceBarrierSampleCount = D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT.0,
1700    ResourceBarrierInvalidFlags = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS.0,
1701    ResourceBarrierInvalidCombinedFlags =
1702        D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS.0,
1703    ResourceBarrierInvalidFlagsForFormat =
1704        D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT.0,
1705    ResourceBarrierInvalidSplitBarrier = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER.0,
1706    ResourceBarrierUnmatchedEnd = D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END.0,
1707    ResourceBarrierUnmatchedBegin = D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN.0,
1708    ResourceBarrierInvalidFlag = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG.0,
1709    ResourceBarrierInvalidCommandListType =
1710        D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE.0,
1711    InvalidSubresourceState = D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE.0,
1712    CommandAllocatorContention = D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION.0,
1713    CommandAllocatorReset = D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET.0,
1714    CommandAllocatorResetBundle = D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE.0,
1715    CommandAllocatorCannotReset = D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET.0,
1716    CommandListOpen = D3D12_MESSAGE_ID_COMMAND_LIST_OPEN.0,
1717    InvalidBundleApi = D3D12_MESSAGE_ID_INVALID_BUNDLE_API.0,
1718    CommandListClosed = D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED.0,
1719    WrongCommandAllocatorType = D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE.0,
1720    CommandAllocatorSync = D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC.0,
1721    CommandListSync = D3D12_MESSAGE_ID_COMMAND_LIST_SYNC.0,
1722    SetDescriptorHeapInvalid = D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID.0,
1723    CreateCommandqueue = D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE.0,
1724    CreateCommandallocator = D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR.0,
1725    CreatePipelinestate = D3D12_MESSAGE_ID_CREATE_PIPELINESTATE.0,
1726    CreateCommandlist12 = D3D12_MESSAGE_ID_CREATE_COMMANDLIST12.0,
1727    CreateResource = D3D12_MESSAGE_ID_CREATE_RESOURCE.0,
1728    CreateDescriptorheap = D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP.0,
1729    CreateRootsignature = D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE.0,
1730    CreateLibrary = D3D12_MESSAGE_ID_CREATE_LIBRARY.0,
1731    CreateHeap = D3D12_MESSAGE_ID_CREATE_HEAP.0,
1732    CreateMonitoredfence = D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE.0,
1733    CreateQueryheap = D3D12_MESSAGE_ID_CREATE_QUERYHEAP.0,
1734    CreateCommandsignature = D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE.0,
1735    LiveCommandqueue = D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE.0,
1736    LiveCommandallocator = D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR.0,
1737    LivePipelinestate = D3D12_MESSAGE_ID_LIVE_PIPELINESTATE.0,
1738    LiveCommandlist12 = D3D12_MESSAGE_ID_LIVE_COMMANDLIST12.0,
1739    LiveResource = D3D12_MESSAGE_ID_LIVE_RESOURCE.0,
1740    LiveDescriptorheap = D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP.0,
1741    LiveRootsignature = D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE.0,
1742    LiveLibrary = D3D12_MESSAGE_ID_LIVE_LIBRARY.0,
1743    LiveHeap = D3D12_MESSAGE_ID_LIVE_HEAP.0,
1744    LiveMonitoredfence = D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE.0,
1745    LiveQueryheap = D3D12_MESSAGE_ID_LIVE_QUERYHEAP.0,
1746    LiveCommandsignature = D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE.0,
1747    DestroyCommandqueue = D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE.0,
1748    DestroyCommandallocator = D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR.0,
1749    DestroyPipelinestate = D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE.0,
1750    DestroyCommandlist12 = D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12.0,
1751    DestroyResource = D3D12_MESSAGE_ID_DESTROY_RESOURCE.0,
1752    DestroyDescriptorheap = D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP.0,
1753    DestroyRootsignature = D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE.0,
1754    DestroyLibrary = D3D12_MESSAGE_ID_DESTROY_LIBRARY.0,
1755    DestroyHeap = D3D12_MESSAGE_ID_DESTROY_HEAP.0,
1756    DestroyMonitoredfence = D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE.0,
1757    DestroyQueryheap = D3D12_MESSAGE_ID_DESTROY_QUERYHEAP.0,
1758    DestroyCommandsignature = D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE.0,
1759    CreateResourceInvalidDimensions = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS.0,
1760    CreateResourceInvalidMiscFlags = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS.0,
1761    CreateResourceInvalidArgReturn = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN.0,
1762    CreateResourceOutOfMemoryReturn = D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN.0,
1763    CreateResourceInvalidDesc = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC.0,
1764    PossiblyInvalidSubresourceState = D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE.0,
1765    InvalidUseOfNonResidentResource = D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE.0,
1766    PossibleInvalidUseOfNonResidentResource =
1767        D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE.0,
1768    BundlePipelineStateMismatch = D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH.0,
1769    PrimitiveTopologyMismatchPipelineState =
1770        D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE.0,
1771    RenderTargetFormatMismatchPipelineState =
1772        D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE.0,
1773    RenderTargetSampleDescMismatchPipelineState =
1774        D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE.0,
1775    DepthStencilFormatMismatchPipelineState =
1776        D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE.0,
1777    DepthStencilSampleDescMismatchPipelineState =
1778        D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE.0,
1779    CreateshaderInvalidbytecode = D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE.0,
1780    CreateHeapNulldesc = D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC.0,
1781    CreateHeapInvalidsize = D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE.0,
1782    CreateHeapUnrecognizedheaptype = D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE.0,
1783    CreateHeapUnrecognizedcpupageproperties =
1784        D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES.0,
1785    CreateHeapUnrecognizedmemorypool = D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL.0,
1786    CreateHeapInvalidproperties = D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES.0,
1787    CreateHeapInvalidalignment = D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT.0,
1788    CreateHeapUnrecognizedmiscflags = D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS.0,
1789    CreateHeapInvalidmiscflags = D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS.0,
1790    CreateHeapInvalidargReturn = D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN.0,
1791    CreateHeapOutOfMemoryReturn = D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN.0,
1792    CreateResourceAndHeapNullheapproperties =
1793        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES.0,
1794    CreateResourceAndHeapUnrecognizedheaptype =
1795        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE.0,
1796    CreateResourceAndHeapUnrecognizedcpupageproperties =
1797        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES.0,
1798    CreateResourceAndHeapUnrecognizedmemorypool =
1799        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL.0,
1800    CreateResourceAndHeapInvalidheapproperties =
1801        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES.0,
1802    CreateResourceAndHeapUnrecognizedheapmiscflags =
1803        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS.0,
1804    CreateResourceAndHeapInvalidheapmiscflags =
1805        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS.0,
1806    CreateResourceAndHeapInvalidargReturn =
1807        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN.0,
1808    CreateResourceAndHeapOutOfMemoryReturn =
1809        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN.0,
1810    GetCustomHeapPropertiesUnrecognizedheaptype =
1811        D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE.0,
1812    GetCustomHeapPropertiesInvalidheaptype =
1813        D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE.0,
1814    CreateDescriptorHeapInvalidDesc = D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC.0,
1815    InvalidDescriptorHandle = D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE.0,
1816    CreateRasterizerStateInvalidConservativerastermode =
1817        D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE.0,
1818    CreateConstantBufferViewInvalidResource =
1819        D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE.0,
1820    CreateConstantBufferViewInvalidDesc =
1821        D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC.0,
1822    CreateUnorderedaccessViewInvalidCounterUsage =
1823        D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE.0,
1824    CopyDescriptorsInvalidRanges = D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES.0,
1825    CopyDescriptorsWriteOnlyDescriptor = D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR.0,
1826    CreateGraphicsPipelineStateRtvFormatNotUnknown =
1827        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN.0,
1828    CreateGraphicsPipelineStateInvalidRenderTargetCount =
1829        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT.0,
1830    CreateGraphicsPipelineStateVertexShaderNotSet =
1831        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET.0,
1832    CreateGraphicsPipelineStateInputlayoutNotSet =
1833        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET.0,
1834    CreateGraphicsPipelineStateShaderLinkageHsDsSignatureMismatch =
1835        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH.0,
1836    CreateGraphicsPipelineStateShaderLinkageRegisterindex =
1837        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX.0,
1838    CreateGraphicsPipelineStateShaderLinkageComponenttype =
1839        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE.0,
1840    CreateGraphicsPipelineStateShaderLinkageRegistermask =
1841        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK.0,
1842    CreateGraphicsPipelineStateShaderLinkageSystemvalue =
1843        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE.0,
1844    CreateGraphicsPipelineStateShaderLinkageNeverwrittenAlwaysreads =
1845        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS.0,
1846    CreateGraphicsPipelineStateShaderLinkageMinprecision =
1847        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION.0,
1848    CreateGraphicsPipelineStateShaderLinkageSemanticnameNotFound =
1849        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND.0,
1850    CreateGraphicsPipelineStateHsXorDsMismatch =
1851        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH.0,
1852    CreateGraphicsPipelineStateHullShaderInputTopologyMismatch =
1853        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH.0,
1854    CreateGraphicsPipelineStateHsDsControlPointCountMismatch =
1855        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH.0,
1856    CreateGraphicsPipelineStateHsDsTessellatorDomainMismatch =
1857        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH.0,
1858    CreateGraphicsPipelineStateInvalidUseOfCenterMultisamplePattern =
1859        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN.0,
1860    CreateGraphicsPipelineStateInvalidUseOfForcedSampleCount =
1861        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT.0,
1862    CreateGraphicsPipelineStateInvalidPrimitivetopology =
1863        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY.0,
1864    CreateGraphicsPipelineStateInvalidSystemvalue =
1865        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE.0,
1866    CreateGraphicsPipelineStateOmDualSourceBlendingCanOnlyHaveRenderTarget0 = D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0.0,
1867    CreateGraphicsPipelineStateOmRenderTargetDoesNotSupportBlending =
1868        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING.0,
1869    CreateGraphicsPipelineStatePsOutputTypeMismatch =
1870        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH.0,
1871    CreateGraphicsPipelineStateOmRenderTargetDoesNotSupportLogicOps =
1872        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS.0,
1873    CreateGraphicsPipelineStateRendertargetviewNotSet =
1874        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET.0,
1875    CreateGraphicsPipelineStateDepthstencilviewNotSet =
1876        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET.0,
1877    CreateGraphicsPipelineStateGsInputPrimitiveMismatch =
1878        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH.0,
1879    CreateGraphicsPipelineStatePositionNotPresent =
1880        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT.0,
1881    CreateGraphicsPipelineStateMissingRootSignatureFlags =
1882        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS.0,
1883    CreateGraphicsPipelineStateInvalidIndexBufferProperties =
1884        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES.0,
1885    CreateGraphicsPipelineStateInvalidSampleDesc =
1886        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC.0,
1887    CreateGraphicsPipelineStateHsRootSignatureMismatch =
1888        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH.0,
1889    CreateGraphicsPipelineStateDsRootSignatureMismatch =
1890        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH.0,
1891    CreateGraphicsPipelineStateVsRootSignatureMismatch =
1892        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH.0,
1893    CreateGraphicsPipelineStateGsRootSignatureMismatch =
1894        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH.0,
1895    CreateGraphicsPipelineStatePsRootSignatureMismatch =
1896        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH.0,
1897    CreateGraphicsPipelineStateMissingRootSignature =
1898        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE.0,
1899    ExecuteBundleOpenBundle = D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE.0,
1900    ExecuteBundleDescriptorHeapMismatch =
1901        D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH.0,
1902    ExecuteBundleType = D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE.0,
1903    DrawEmptyScissorRectangle = D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE.0,
1904    CreateRootSignatureBlobNotFound = D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND.0,
1905    CreateRootSignatureDeserializeFailed =
1906        D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED.0,
1907    CreateRootSignatureInvalidConfiguration =
1908        D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION.0,
1909    CreateRootSignatureNotSupportedOnDevice =
1910        D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE.0,
1911    CreateResourceAndHeapNullresourceproperties =
1912        D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES.0,
1913    CreateResourceAndHeapNullheap = D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP.0,
1914    GetresourceallocationinfoInvalidrdescs =
1915        D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS.0,
1916    MakeresidentNullobjectarray = D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY.0,
1917    EvictNullobjectarray = D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY.0,
1918    SetDescriptorTableInvalid = D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID.0,
1919    SetRootConstantInvalid = D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID.0,
1920    SetRootConstantBufferViewInvalid = D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID.0,
1921    SetRootShaderResourceViewInvalid = D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID.0,
1922    SetRootUnorderedAccessViewInvalid = D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID.0,
1923    SetVertexBuffersInvalidDesc = D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC.0,
1924    SetIndexBufferInvalidDesc = D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC.0,
1925    SetStreamOutputBuffersInvalidDesc = D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC.0,
1926    CreateResourceUnrecognizeddimensionality =
1927        D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY.0,
1928    CreateResourceUnrecognizedlayout = D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT.0,
1929    CreateResourceInvaliddimensionality = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY.0,
1930    CreateResourceInvalidalignment = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT.0,
1931    CreateResourceInvalidmiplevels = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS.0,
1932    CreateResourceInvalidsampledesc = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC.0,
1933    CreateResourceInvalidlayout = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT.0,
1934    SetIndexBufferInvalid = D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID.0,
1935    SetVertexBuffersInvalid = D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID.0,
1936    SetStreamOutputBuffersInvalid = D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID.0,
1937    SetRenderTargetsInvalid = D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID.0,
1938    CreatequeryHeapInvalidParameters = D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS.0,
1939    BeginEndQueryInvalidParameters = D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS.0,
1940    CloseCommandListOpenQuery = D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY.0,
1941    ResolveQueryDataInvalidParameters = D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS.0,
1942    SetPredicationInvalidParameters = D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS.0,
1943    TimestampsNotSupported = D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED.0,
1944    CreateResourceUnrecognizedformat = D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT.0,
1945    CreateResourceInvalidformat = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT.0,
1946    GetCopyableFootprintsOrCopyableLayoutInvalidSubresourcerange =
1947        D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE.0,
1948    GetCopyableFootprintsOrCopyableLayoutInvalidbaseoffset =
1949        D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET.0,
1950    ResourceBarrierInvalidHeap = D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP.0,
1951    CreateSamplerInvalid = D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID.0,
1952    CreatecommandsignatureInvalid = D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID.0,
1953    ExecuteIndirectInvalidParameters = D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS.0,
1954    GetgpuvirtualaddressInvalidResourceDimension =
1955        D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION.0,
1956    CreateResourceInvalidclearvalue = D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE.0,
1957    CreateResourceUnrecognizedclearvalueformat =
1958        D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT.0,
1959    CreateResourceInvalidclearvalueformat =
1960        D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT.0,
1961    CreateResourceClearvaluedenormflush = D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH.0,
1962    ClearrendertargetviewMismatchingclearvalue =
1963        D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE.0,
1964    CleardepthstencilviewMismatchingclearvalue =
1965        D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE.0,
1966    MapInvalidheap = D3D12_MESSAGE_ID_MAP_INVALIDHEAP.0,
1967    UnmapInvalidheap = D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP.0,
1968    MapInvalidresource = D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE.0,
1969    UnmapInvalidresource = D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE.0,
1970    MapInvalidSubresource = D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE.0,
1971    UnmapInvalidSubresource = D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE.0,
1972    MapInvalidrange = D3D12_MESSAGE_ID_MAP_INVALIDRANGE.0,
1973    UnmapInvalidrange = D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE.0,
1974    MapInvaliddatapointer = D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER.0,
1975    MapInvalidargReturn = D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN.0,
1976    MapOutOfMemoryReturn = D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN.0,
1977    ExecuteCommandListsBundlenotsupported =
1978        D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED.0,
1979    ExecuteCommandListsCommandlistmismatch =
1980        D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH.0,
1981    ExecuteCommandListsOpenCommandList = D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST.0,
1982    ExecuteCommandListsFailedCommandList = D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST.0,
1983    CopyBufferRegionNulldst = D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST.0,
1984    CopyBufferRegionInvaliddstresourcedimension =
1985        D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION.0,
1986    CopyBufferRegionDstrangeoutofbounds = D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS.0,
1987    CopyBufferRegionNullsrc = D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC.0,
1988    CopyBufferRegionInvalidsrcresourcedimension =
1989        D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION.0,
1990    CopyBufferRegionSrcrangeoutofbounds = D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS.0,
1991    CopyBufferRegionInvalidcopyflags = D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS.0,
1992    CopyTextureRegionNulldst = D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST.0,
1993    CopyTextureRegionUnrecognizeddsttype = D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE.0,
1994    CopyTextureRegionInvaliddstresourcedimension =
1995        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION.0,
1996    CopyTextureRegionInvaliddstresource = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE.0,
1997    CopyTextureRegionInvaliddstSubresource =
1998        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE.0,
1999    CopyTextureRegionInvaliddstoffset = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET.0,
2000    CopyTextureRegionUnrecognizeddstformat =
2001        D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT.0,
2002    CopyTextureRegionInvaliddstformat = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT.0,
2003    CopyTextureRegionInvaliddstdimensions =
2004        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS.0,
2005    CopyTextureRegionInvaliddstrowpitch = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH.0,
2006    CopyTextureRegionInvaliddstplacement = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT.0,
2007    CopyTextureRegionInvaliddstdsplacedfootprintformat =
2008        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT.0,
2009    CopyTextureRegionDstregionoutofbounds =
2010        D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS.0,
2011    CopyTextureRegionNullsrc = D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC.0,
2012    CopyTextureRegionUnrecognizedsrctype = D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE.0,
2013    CopyTextureRegionInvalidsrcresourcedimension =
2014        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION.0,
2015    CopyTextureRegionInvalidsrcresource = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE.0,
2016    CopyTextureRegionInvalidsrcSubresource =
2017        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE.0,
2018    CopyTextureRegionInvalidsrcoffset = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET.0,
2019    CopyTextureRegionUnrecognizedsrcformat =
2020        D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT.0,
2021    CopyTextureRegionInvalidsrcformat = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT.0,
2022    CopyTextureRegionInvalidsrcdimensions =
2023        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS.0,
2024    CopyTextureRegionInvalidsrcrowpitch = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH.0,
2025    CopyTextureRegionInvalidsrcplacement = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT.0,
2026    CopyTextureRegionInvalidsrcdsplacedfootprintformat =
2027        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT.0,
2028    CopyTextureRegionSrcregionoutofbounds =
2029        D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS.0,
2030    CopyTextureRegionInvaliddstcoordinates =
2031        D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES.0,
2032    CopyTextureRegionInvalidsrcbox = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX.0,
2033    CopyTextureRegionFormatmismatch = D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH.0,
2034    CopyTextureRegionEmptybox = D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX.0,
2035    CopyTextureRegionInvalidcopyflags = D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS.0,
2036    ResolveSubresourceInvalidSubresourceIndex =
2037        D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX.0,
2038    ResolveSubresourceInvalidFormat = D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT.0,
2039    ResolveSubresourceResourceMismatch = D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH.0,
2040    ResolveSubresourceInvalidSampleCount =
2041        D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT.0,
2042    CreateComputePipelineStateInvalidShader =
2043        D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER.0,
2044    CreateComputePipelineStateCsRootSignatureMismatch =
2045        D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH.0,
2046    CreateComputePipelineStateMissingRootSignature =
2047        D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE.0,
2048    CreatePipelineStateInvalidcachedblob = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB.0,
2049    CreatePipelineStateCachedblobadaptermismatch =
2050        D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH.0,
2051    CreatePipelineStateCachedblobdriverversionmismatch =
2052        D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH.0,
2053    CreatePipelineStateCachedblobdescmismatch =
2054        D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH.0,
2055    CreatePipelineStateCachedblobignored = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED.0,
2056    WriteToSubresourceInvalidheap = D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP.0,
2057    WriteToSubresourceInvalidresource = D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE.0,
2058    WriteToSubresourceInvalidbox = D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX.0,
2059    WriteToSubresourceInvalidSubresource = D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE.0,
2060    WriteToSubresourceEmptybox = D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX.0,
2061    ReadFromSubresourceInvalidheap = D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP.0,
2062    ReadFromSubresourceInvalidresource = D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE.0,
2063    ReadFromSubresourceInvalidbox = D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX.0,
2064    ReadFromSubresourceInvalidSubresource =
2065        D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE.0,
2066    ReadFromSubresourceEmptybox = D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX.0,
2067    TooManyNodesSpecified = D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED.0,
2068    InvalidNodeIndex = D3D12_MESSAGE_ID_INVALID_NODE_INDEX.0,
2069    GetheappropertiesInvalidresource = D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE.0,
2070    NodeMaskMismatch = D3D12_MESSAGE_ID_NODE_MASK_MISMATCH.0,
2071    CommandListOutOfMemory = D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY.0,
2072    CommandListMultipleSwapchainBufferReferences =
2073        D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES.0,
2074    CommandListTooManySwapchainReferences =
2075        D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES.0,
2076    CommandQueueTooManySwapchainReferences =
2077        D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES.0,
2078    ExecuteCommandListsWrongswapchainbufferreference =
2079        D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE.0,
2080    CommandListSetrendertargetsInvalidnumrendertargets =
2081        D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS.0,
2082    CreateQueueInvalidType = D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE.0,
2083    CreateQueueInvalidFlags = D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS.0,
2084    CreateSharedResourceInvalidflags = D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS.0,
2085    CreateSharedResourceInvalidformat = D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT.0,
2086    CreateSharedHeapInvalidflags = D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS.0,
2087    ReflectsharedpropertiesUnrecognizedproperties =
2088        D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES.0,
2089    ReflectsharedpropertiesInvalidsize = D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE.0,
2090    ReflectsharedpropertiesInvalidobject = D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT.0,
2091    KeyedmutexInvalidobject = D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT.0,
2092    KeyedmutexInvalidkey = D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY.0,
2093    KeyedmutexWrongstate = D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE.0,
2094    CreateQueueInvalidPriority = D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY.0,
2095    ObjectDeletedWhileStillInUse = D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE.0,
2096    CreatePipelineStateInvalidFlags = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS.0,
2097    HeapAddressRangeHasNoResource = D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE.0,
2098    CommandListDrawRenderTargetDeleted = D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED.0,
2099    CreateGraphicsPipelineStateAllRenderTargetsHaveUnknownFormat =
2100        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT.0,
2101    HeapAddressRangeIntersectsMultipleBuffers =
2102        D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS.0,
2103    ExecuteCommandListsGpuWrittenReadbackResourceMapped =
2104        D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED.0,
2105    UnmapRangeNotEmpty = D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY.0,
2106    MapInvalidNullrange = D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE.0,
2107    UnmapInvalidNullrange = D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE.0,
2108    NoGraphicsApiSupport = D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT.0,
2109    NoComputeApiSupport = D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT.0,
2110    ResolveSubresourceResourceFlagsNotSupported =
2111        D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED.0,
2112    GpuBasedValidationRootArgumentUninitialized =
2113        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED.0,
2114    GpuBasedValidationDescriptorHeapIndexOutOfBounds =
2115        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS.0,
2116    GpuBasedValidationDescriptorTableRegisterIndexOutOfBounds =
2117        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS.0,
2118    GpuBasedValidationDescriptorUninitialized =
2119        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED.0,
2120    GpuBasedValidationDescriptorTypeMismatch =
2121        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH.0,
2122    GpuBasedValidationSrvResourceDimensionMismatch =
2123        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH.0,
2124    GpuBasedValidationUavResourceDimensionMismatch =
2125        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH.0,
2126    GpuBasedValidationIncompatibleResourceState =
2127        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE.0,
2128    CopyresourceNulldst = D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST.0,
2129    CopyresourceInvaliddstresource = D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE.0,
2130    CopyresourceNullsrc = D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC.0,
2131    CopyresourceInvalidsrcresource = D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE.0,
2132    ResolveSubresourceNulldst = D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST.0,
2133    ResolveSubresourceInvaliddstresource = D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE.0,
2134    ResolveSubresourceNullsrc = D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC.0,
2135    ResolveSubresourceInvalidsrcresource = D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE.0,
2136    PipelineStateTypeMismatch = D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH.0,
2137    CommandListDispatchRootSignatureNotSet =
2138        D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET.0,
2139    CommandListDispatchRootSignatureMismatch =
2140        D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH.0,
2141    ResourceBarrierZeroBarriers = D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS.0,
2142    BeginEndEventMismatch = D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH.0,
2143    ResourceBarrierPossibleBeforeAfterMismatch =
2144        D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH.0,
2145    ResourceBarrierMismatchingBeginEnd = D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END.0,
2146    GpuBasedValidationInvalidResource = D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE.0,
2147    UseOfZeroRefcountObject = D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT.0,
2148    ObjectEvictedWhileStillInUse = D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE.0,
2149    GpuBasedValidationRootDescriptorAccessOutOfBounds =
2150        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS.0,
2151    CreatepipelinelibraryInvalidlibraryblob =
2152        D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB.0,
2153    CreatepipelinelibraryDriverversionmismatch =
2154        D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH.0,
2155    CreatepipelinelibraryAdapterversionmismatch =
2156        D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH.0,
2157    CreatepipelinelibraryUnsupported = D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED.0,
2158    CreatePipelinelibrary = D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY.0,
2159    LivePipelinelibrary = D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY.0,
2160    DestroyPipelinelibrary = D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY.0,
2161    StorepipelineNoname = D3D12_MESSAGE_ID_STOREPIPELINE_NONAME.0,
2162    StorepipelineDuplicatename = D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME.0,
2163    LoadpipelineNamenotfound = D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND.0,
2164    LoadpipelineInvaliddesc = D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC.0,
2165    PipelinelibrarySerializeNotenoughmemory =
2166        D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY.0,
2167    CreateGraphicsPipelineStatePsOutputRtOutputMismatch =
2168        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH.0,
2169    SeteventonmultiplefencecompletionInvalidflags =
2170        D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS.0,
2171    CreateQueueVideoNotSupported = D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED.0,
2172    CreateCommandAllocatorVideoNotSupported =
2173        D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED.0,
2174    CreatequeryHeapVideoDecodeStatisticsNotSupported =
2175        D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED.0,
2176    CreateVideodecodeCommandList = D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST.0,
2177    CreateVideodecoder = D3D12_MESSAGE_ID_CREATE_VIDEODECODER.0,
2178    CreateVideodecodestream = D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM.0,
2179    LiveVideodecodeCommandList = D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST.0,
2180    LiveVideodecoder = D3D12_MESSAGE_ID_LIVE_VIDEODECODER.0,
2181    LiveVideodecodestream = D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM.0,
2182    DestroyVideodecodeCommandList = D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST.0,
2183    DestroyVideodecoder = D3D12_MESSAGE_ID_DESTROY_VIDEODECODER.0,
2184    DestroyVideodecodestream = D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM.0,
2185    DecodeFrameInvalidParameters = D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS.0,
2186    DeprecatedApi = D3D12_MESSAGE_ID_DEPRECATED_API.0,
2187    ResourceBarrierMismatchingCommandListType =
2188        D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE.0,
2189    CommandListDescriptorTableNotSet = D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET.0,
2190    CommandListRootConstantBufferViewNotSet =
2191        D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET.0,
2192    CommandListRootShaderResourceViewNotSet =
2193        D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET.0,
2194    CommandListRootUnorderedAccessViewNotSet =
2195        D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET.0,
2196    DiscardInvalidSubresourceRange = D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE.0,
2197    DiscardOneSubresourceForMipsWithRects =
2198        D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS.0,
2199    DiscardNoRectsForNonTexture2D = D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D.0,
2200    CopyOnSameSubresource = D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE.0,
2201    SetresidencypriorityInvalidPageable = D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE.0,
2202    GpuBasedValidationUnsupported = D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED.0,
2203    StaticDescriptorInvalidDescriptorChange =
2204        D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE.0,
2205    DataStaticDescriptorInvalidDataChange =
2206        D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE.0,
2207    DataStaticWhileSetAtExecuteDescriptorInvalidDataChange =
2208        D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE.0,
2209    ExecuteBundleStaticDescriptorDataStaticNotSet =
2210        D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET.0,
2211    GpuBasedValidationResourceAccessOutOfBounds =
2212        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS.0,
2213    GpuBasedValidationSamplerModeMismatch =
2214        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH.0,
2215    CreateFenceInvalidFlags = D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS.0,
2216    ResourceBarrierDuplicateSubresourceTransitions =
2217        D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS.0,
2218    SetresidencypriorityInvalidPriority = D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY.0,
2219    CreateDescriptorHeapLargeNumDescriptors =
2220        D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS.0,
2221    BeginEvent = D3D12_MESSAGE_ID_BEGIN_EVENT.0,
2222    EndEvent = D3D12_MESSAGE_ID_END_EVENT.0,
2223    CreatedeviceDebugLayerStartupOptions =
2224        D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS.0,
2225    CreatedepthstencilstateDepthboundstestUnsupported =
2226        D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED.0,
2227    CreatePipelineStateDuplicateSubobject =
2228        D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT.0,
2229    CreatePipelineStateUnknownSubobject = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT.0,
2230    CreatePipelineStateZeroSizeStream = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM.0,
2231    CreatePipelineStateInvalidStream = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM.0,
2232    CreatePipelineStateCannotDeduceType = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE.0,
2233    CommandListStaticDescriptorResourceDimensionMismatch =
2234        D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH.0,
2235    CreateCommandQueueInsufficientPrivilegeForGlobalRealtime =
2236        D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME.0,
2237    CreateCommandQueueInsufficientHardwareSupportForGlobalRealtime =
2238        D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME.0,
2239    AtomiccopybufferInvalidArchitecture = D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE.0,
2240    AtomiccopybufferNullDst = D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST.0,
2241    AtomiccopybufferInvalidDstResourceDimension =
2242        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION.0,
2243    AtomiccopybufferDstRangeOutOfBounds =
2244        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS.0,
2245    AtomiccopybufferNullSrc = D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC.0,
2246    AtomiccopybufferInvalidSrcResourceDimension =
2247        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION.0,
2248    AtomiccopybufferSrcRangeOutOfBounds =
2249        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS.0,
2250    AtomiccopybufferInvalidOffsetAlignment =
2251        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT.0,
2252    AtomiccopybufferNullDependentResources =
2253        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES.0,
2254    AtomiccopybufferNullDependentSubresourceRanges =
2255        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES.0,
2256    AtomiccopybufferInvalidDependentResource =
2257        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE.0,
2258    AtomiccopybufferInvalidDependentSubresourceRange =
2259        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE.0,
2260    AtomiccopybufferDependentSubresourceOutOfBounds =
2261        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS.0,
2262    AtomiccopybufferDependentRangeOutOfBounds =
2263        D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS.0,
2264    AtomiccopybufferZeroDependencies = D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES.0,
2265    DeviceCreateSharedHandleInvalidarg = D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG.0,
2266    DescriptorHandleWithInvalidResource =
2267        D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE.0,
2268    SetdepthboundsInvalidargs = D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS.0,
2269    GpuBasedValidationResourceStateImprecise =
2270        D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE.0,
2271    CommandListPipelineStateNotSet = D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET.0,
2272    CreateGraphicsPipelineStateShaderModelMismatch =
2273        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH.0,
2274    ObjectAccessedWhileStillInUse = D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE.0,
2275    ProgrammableMsaaUnsupported = D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED.0,
2276    SetsamplepositionsInvalidargs = D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS.0,
2277    ResolveSubresourceregionInvalidRect = D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT.0,
2278    CreateVideodecodecommandqueue = D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE.0,
2279    CreateVideoprocessCommandList = D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST.0,
2280    CreateVideoprocesscommandqueue = D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE.0,
2281    LiveVideodecodecommandqueue = D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE.0,
2282    LiveVideoprocessCommandList = D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST.0,
2283    LiveVideoprocesscommandqueue = D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE.0,
2284    DestroyVideodecodecommandqueue = D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE.0,
2285    DestroyVideoprocessCommandList = D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST.0,
2286    DestroyVideoprocesscommandqueue = D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE.0,
2287    CreateVideoprocessor = D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR.0,
2288    CreateVideoprocessstream = D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM.0,
2289    LiveVideoprocessor = D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR.0,
2290    LiveVideoprocessstream = D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM.0,
2291    DestroyVideoprocessor = D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR.0,
2292    DestroyVideoprocessstream = D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM.0,
2293    ProcessFrameInvalidParameters = D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS.0,
2294    CopyInvalidlayout = D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT.0,
2295    CreateCryptoSession = D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION.0,
2296    CreateCryptoSessionPolicy = D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY.0,
2297    CreateProtectedResourceSession = D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION.0,
2298    LiveCryptoSession = D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION.0,
2299    LiveCryptoSessionPolicy = D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY.0,
2300    LiveProtectedResourceSession = D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION.0,
2301    DestroyCryptoSession = D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION.0,
2302    DestroyCryptoSessionPolicy = D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY.0,
2303    DestroyProtectedResourceSession = D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION.0,
2304    ProtectedResourceSessionUnsupported = D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED.0,
2305    FenceInvalidoperation = D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION.0,
2306    CreatequeryHeapCopyQueueTimestampsNotSupported =
2307        D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED.0,
2308    SamplepositionsMismatchDeferred = D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED.0,
2309    SamplepositionsMismatchRecordtimeAssumedfromfirstuse =
2310        D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE.0,
2311    SamplepositionsMismatchRecordtimeAssumedfromclear =
2312        D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR.0,
2313    CreateVideodecoderheap = D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP.0,
2314    LiveVideodecoderheap = D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP.0,
2315    DestroyVideodecoderheap = D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP.0,
2316    OpenexistingheapInvalidargReturn = D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN.0,
2317    OpenexistingheapOutOfMemoryReturn = D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN.0,
2318    OpenexistingheapInvalidaddress = D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS.0,
2319    OpenexistingheapInvalidhandle = D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE.0,
2320    WritebufferimmediateInvalidDest = D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST.0,
2321    WritebufferimmediateInvalidMode = D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE.0,
2322    WritebufferimmediateInvalidAlignment =
2323        D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT.0,
2324    WritebufferimmediateNotSupported = D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED.0,
2325    SetviewinstancemaskInvalidargs = D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS.0,
2326    ViewInstancingUnsupported = D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED.0,
2327    ViewInstancingInvalidargs = D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS.0,
2328    CopyTextureRegionMismatchDecodeReferenceOnlyFlag =
2329        D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG.0,
2330    CopyresourceMismatchDecodeReferenceOnlyFlag =
2331        D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG.0,
2332    CreateVideoDecodeHeapCapsFailure = D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE.0,
2333    CreateVideoDecodeHeapCapsUnsupported =
2334        D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED.0,
2335    VideoDecodeSupportInvalidInput = D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT.0,
2336    CreateVideoDecoderUnsupported = D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED.0,
2337    CreateGraphicsPipelineStateMetadataError =
2338        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR.0,
2339    CreateGraphicsPipelineStateViewInstancingVertexSizeExceeded =
2340        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED.0,
2341    CreateGraphicsPipelineStateRuntimeInternalError =
2342        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR.0,
2343    NoVideoApiSupport = D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT.0,
2344    VideoProcessSupportInvalidInput = D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT.0,
2345    CreateVideoProcessorCapsFailure = D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE.0,
2346    VideoProcessSupportUnsupportedFormat =
2347        D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT.0,
2348    VideoDecodeFrameInvalidArgument = D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT.0,
2349    EnqueueMakeResidentInvalidFlags = D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS.0,
2350    OpenexistingheapUnsupported = D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED.0,
2351    VideoProcessFramesInvalidArgument = D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT.0,
2352    VideoDecodeSupportUnsupported = D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED.0,
2353    CreateCommandrecorder = D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER.0,
2354    LiveCommandrecorder = D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER.0,
2355    DestroyCommandrecorder = D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER.0,
2356    CreateCommandRecorderVideoNotSupported =
2357        D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED.0,
2358    CreateCommandRecorderInvalidSupportFlags =
2359        D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS.0,
2360    CreateCommandRecorderInvalidFlags = D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS.0,
2361    CreateCommandRecorderMoreRecordersThanLogicalProcessors =
2362        D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS.0,
2363    CreateCommandpool = D3D12_MESSAGE_ID_CREATE_COMMANDPOOL.0,
2364    LiveCommandpool = D3D12_MESSAGE_ID_LIVE_COMMANDPOOL.0,
2365    DestroyCommandpool = D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL.0,
2366    CreateCommandPoolInvalidFlags = D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS.0,
2367    CreateCommandListVideoNotSupported = D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED.0,
2368    CommandRecorderSupportFlagsMismatch =
2369        D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH.0,
2370    CommandRecorderContention = D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION.0,
2371    CommandRecorderUsageWithCreateCommandListCommandList =
2372        D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST.0,
2373    CommandAllocatorUsageWithCreateCommandList1CommandList =
2374        D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST.0,
2375    CannotExecuteEmptyCommandList = D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST.0,
2376    CannotResetCommandPoolWithOpenCommandLists =
2377        D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS.0,
2378    CannotUseCommandRecorderWithoutCurrentTarget =
2379        D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET.0,
2380    CannotChangeCommandRecorderTargetWhileRecording =
2381        D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING.0,
2382    CommandPoolSync = D3D12_MESSAGE_ID_COMMAND_POOL_SYNC.0,
2383    EvictUnderflow = D3D12_MESSAGE_ID_EVICT_UNDERFLOW.0,
2384    CreateMetaCommand = D3D12_MESSAGE_ID_CREATE_META_COMMAND.0,
2385    LiveMetaCommand = D3D12_MESSAGE_ID_LIVE_META_COMMAND.0,
2386    DestroyMetaCommand = D3D12_MESSAGE_ID_DESTROY_META_COMMAND.0,
2387    CopyBufferRegionInvalidDstResource = D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE.0,
2388    CopyBufferRegionInvalidSrcResource = D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE.0,
2389    AtomiccopybufferInvalidDstResource = D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE.0,
2390    AtomiccopybufferInvalidSrcResource = D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE.0,
2391    CreateplacedresourceonbufferNullBuffer =
2392        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER.0,
2393    CreateplacedresourceonbufferNullResourceDesc =
2394        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC.0,
2395    CreateplacedresourceonbufferUnsupported =
2396        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED.0,
2397    CreateplacedresourceonbufferInvalidBufferDimension =
2398        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION.0,
2399    CreateplacedresourceonbufferInvalidBufferFlags =
2400        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS.0,
2401    CreateplacedresourceonbufferInvalidBufferOffset =
2402        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET.0,
2403    CreateplacedresourceonbufferInvalidResourceDimension =
2404        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION.0,
2405    CreateplacedresourceonbufferInvalidResourceFlags =
2406        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS.0,
2407    CreateplacedresourceonbufferOutOfMemoryReturn =
2408        D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN.0,
2409    CannotCreateGraphicsAndVideoCommandRecorder =
2410        D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER.0,
2411    UpdatetilemappingsPossiblyMismatchingProperties =
2412        D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES.0,
2413    CreateCommandListInvalidCommandListType =
2414        D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE.0,
2415    ClearunorderedaccessviewIncompatibleWithStructuredBuffers =
2416        D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS.0,
2417    ComputeOnlyDeviceOperationUnsupported =
2418        D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED.0,
2419    BuildRaytracingAccelerationStructureInvalid =
2420        D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID.0,
2421    EmitRaytracingAccelerationStructurePostbuildInfoInvalid =
2422        D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID.0,
2423    CopyRaytracingAccelerationStructureInvalid =
2424        D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID.0,
2425    DispatchRaysInvalid = D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID.0,
2426    GetRaytracingAccelerationStructurePrebuildInfoInvalid =
2427        D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID.0,
2428    CreateLifetimetracker = D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER.0,
2429    LiveLifetimetracker = D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER.0,
2430    DestroyLifetimetracker = D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER.0,
2431    DestroyownedobjectObjectnotowned = D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED.0,
2432    CreateTrackedworkload = D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD.0,
2433    LiveTrackedworkload = D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD.0,
2434    DestroyTrackedworkload = D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD.0,
2435    RenderPassError = D3D12_MESSAGE_ID_RENDER_PASS_ERROR.0,
2436    MetaCommandIdInvalid = D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID.0,
2437    MetaCommandUnsupportedParams = D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS.0,
2438    MetaCommandFailedEnumeration = D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION.0,
2439    MetaCommandParameterSizeMismatch = D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH.0,
2440    UninitializedMetaCommand = D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND.0,
2441    MetaCommandInvalidGpuVirtualAddress =
2442        D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS.0,
2443    CreateVideoencodeCommandList = D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST.0,
2444    LiveVideoencodeCommandList = D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST.0,
2445    DestroyVideoencodeCommandList = D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST.0,
2446    CreateVideoencodecommandqueue = D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE.0,
2447    LiveVideoencodecommandqueue = D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE.0,
2448    DestroyVideoencodecommandqueue = D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE.0,
2449    CreateVideomotionestimator = D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR.0,
2450    LiveVideomotionestimator = D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR.0,
2451    DestroyVideomotionestimator = D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR.0,
2452    CreateVideomotionvectorheap = D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP.0,
2453    LiveVideomotionvectorheap = D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP.0,
2454    DestroyVideomotionvectorheap = D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP.0,
2455    MultipleTrackedWorkloads = D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS.0,
2456    MultipleTrackedWorkloadPairs = D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS.0,
2457    OutOfOrderTrackedWorkloadPair = D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR.0,
2458    CannotAddTrackedWorkload = D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD.0,
2459    IncompleteTrackedWorkloadPair = D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR.0,
2460    CreateStateObjectError = D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR.0,
2461    GetShaderIdentifierError = D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR.0,
2462    GetShaderStackSizeError = D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR.0,
2463    GetPipelineStackSizeError = D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR.0,
2464    SetPipelineStackSizeError = D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR.0,
2465    GetShaderIdentifierSizeInvalid = D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID.0,
2466    CheckDriverMatchingIdentifierInvalid =
2467        D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID.0,
2468    CheckDriverMatchingIdentifierDriverReportedIssue =
2469        D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE.0,
2470    RenderPassInvalidResourceBarrier = D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER.0,
2471    RenderPassDisallowedApiCalled = D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED.0,
2472    RenderPassCannotNestRenderPasses = D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES.0,
2473    RenderPassCannotEndWithoutBegin = D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN.0,
2474    RenderPassCannotCloseCommandList = D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST.0,
2475    RenderPassGpuWorkWhileSuspended = D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED.0,
2476    RenderPassMismatchingSuspendResume = D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME.0,
2477    RenderPassNoPriorSuspendWithinExecuteCommandLists =
2478        D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS.0,
2479    RenderPassNoSubsequentResumeWithinExecuteCommandLists =
2480        D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS.0,
2481    TrackedWorkloadCommandQueueMismatch =
2482        D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH.0,
2483    TrackedWorkloadNotSupported = D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED.0,
2484    RenderPassMismatchingNoAccess = D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS.0,
2485    RenderPassUnsupportedResolve = D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE.0,
2486    ClearunorderedaccessviewInvalidResourcePtr =
2487        D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR.0,
2488    Windows7FenceOutoforderSignal = D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL.0,
2489    Windows7FenceOutoforderWait = D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT.0,
2490    VideoCreateMotionEstimatorInvalidArgument =
2491        D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT.0,
2492    VideoCreateMotionVectorHeapInvalidArgument =
2493        D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT.0,
2494    EstimateMotionInvalidArgument = D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT.0,
2495    ResolveMotionVectorHeapInvalidArgument =
2496        D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT.0,
2497    GetgpuvirtualaddressInvalidHeapType = D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE.0,
2498    SetBackgroundProcessingModeInvalidArgument =
2499        D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT.0,
2500    CreateCommandListInvalidCommandListTypeForFeatureLevel =
2501        D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL.0,
2502    CreateVideoextensioncommand = D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND.0,
2503    LiveVideoextensioncommand = D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND.0,
2504    DestroyVideoextensioncommand = D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND.0,
2505    InvalidVideoExtensionCommandId = D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID.0,
2506    VideoExtensionCommandInvalidArgument =
2507        D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT.0,
2508    CreateRootSignatureNotUniqueInDxilLibrary =
2509        D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY.0,
2510    VariableShadingRateNotAllowedWithTir =
2511        D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR.0,
2512    GeometryShaderOutputtingBothViewportArrayIndexAndShadingRateNotSupportedOnDevice = D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE.0,
2513    RssetshadingRateInvalidShadingRate = D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE.0,
2514    RssetshadingRateShadingRateNotPermittedByCap =
2515        D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP.0,
2516    RssetshadingRateInvalidCombiner = D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER.0,
2517    RssetshadingrateimageRequiresTier2 = D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2.0,
2518    RssetshadingrateRequiresTier1 = D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1.0,
2519    ShadingRateImageIncorrectFormat = D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT.0,
2520    ShadingRateImageIncorrectArraySize = D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE.0,
2521    ShadingRateImageIncorrectMipLevel = D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL.0,
2522    ShadingRateImageIncorrectSampleCount =
2523        D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT.0,
2524    ShadingRateImageIncorrectSampleQuality =
2525        D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY.0,
2526    NonRetailShaderModelWontValidate = D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE.0,
2527    CreateGraphicsPipelineStateAsRootSignatureMismatch =
2528        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH.0,
2529    CreateGraphicsPipelineStateMsRootSignatureMismatch =
2530        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH.0,
2531    AddToStateObjectError = D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR.0,
2532    CreateProtectedResourceSessionInvalidArgument =
2533        D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT.0,
2534    CreateGraphicsPipelineStateMsPsoDescMismatch =
2535        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH.0,
2536    CreatePipelineStateMsIncompleteType = D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE.0,
2537    CreateGraphicsPipelineStateAsNotMsMismatch =
2538        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH.0,
2539    CreateGraphicsPipelineStateMsNotPsMismatch =
2540        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH.0,
2541    NonzeroSamplerFeedbackMipRegionWithIncompatibleFormat =
2542        D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT.0,
2543    CreateGraphicsPipelineStateInputlayoutShaderMismatch =
2544        D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH.0,
2545    EmptyDispatch = D3D12_MESSAGE_ID_EMPTY_DISPATCH.0,
2546    ResourceFormatRequiresSamplerFeedbackCapability =
2547        D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY.0,
2548    SamplerFeedbackMapInvalidMipRegion = D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION.0,
2549    SamplerFeedbackMapInvalidDimension = D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION.0,
2550    SamplerFeedbackMapInvalidSampleCount =
2551        D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT.0,
2552    SamplerFeedbackMapInvalidSampleQuality =
2553        D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY.0,
2554    SamplerFeedbackMapInvalidLayout = D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT.0,
2555    SamplerFeedbackMapRequiresUnorderedAccessFlag =
2556        D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG.0,
2557    SamplerFeedbackCreateUavNullArguments =
2558        D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS.0,
2559    SamplerFeedbackUavRequiresSamplerFeedbackCapability =
2560        D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY.0,
2561    SamplerFeedbackCreateUavRequiresFeedbackMapFormat =
2562        D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT.0,
2563    CreateMeshShaderInvalidShaderBytecode =
2564        D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE.0,
2565    CreateMeshShaderOutOfMemory = D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY.0,
2566    CreateMeshShaderWithStreamOutputInvalidshadertype =
2567        D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE.0,
2568    ResolveSubresourceSamplerFeedbackTranscodeInvalidFormat =
2569        D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT.0,
2570    ResolveSubresourceSamplerFeedbackInvalidMipLevelCount =
2571        D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT.0,
2572    ResolveSubresourceSamplerFeedbackTranscodeArraySizeMismatch =
2573        D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH.0,
2574    SamplerFeedbackCreateUavMismatchingTargetedResource =
2575        D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE.0,
2576    CreateMeshShaderOutputexceedsmaxsize = D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE.0,
2577    CreateMeshShaderGroupsharedexceedsmaxsize =
2578        D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE.0,
2579    VertexShaderOutputtingBothViewportArrayIndexAndShadingRateNotSupportedOnDevice = D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE.0,
2580    MeshShaderOutputtingBothViewportArrayIndexAndShadingRateNotSupportedOnDevice = D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE.0,
2581    CreateMeshShaderMismatchedAsMsPayloadSize =
2582        D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE.0,
2583    CreateRootSignatureUnboundedStaticDescriptors =
2584        D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS.0,
2585    CreateAmplificationShaderInvalidShaderBytecode =
2586        D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE.0,
2587    CreateAmplificationShaderOutOfMemory = D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY.0,
2588    CreateShaderCacheSession = D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION.0,
2589    LiveShaderCacheSession = D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION.0,
2590    DestroyShaderCacheSession = D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION.0,
2591    CreateShaderCacheSessionInvalidargs = D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS.0,
2592    CreateShaderCacheSessionDisabled = D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED.0,
2593    CreateShaderCacheSessionAlreadyopen = D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN.0,
2594    ShaderCacheControlDeveloperMode = D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE.0,
2595    ShaderCacheControlInvalidFlags = D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS.0,
2596    ShaderCacheControlStatealReadySet = D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET.0,
2597    ShaderCacheControlIgnoredFlag = D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG.0,
2598    ShaderCacheSessionStoreValueAlreadyPresent =
2599        D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT.0,
2600    ShadercachesessionStorevalueHashCollision =
2601        D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION.0,
2602    ShaderCacheSessionStoreValueCacheFull =
2603        D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL.0,
2604    ShaderCacheSessionFindValueNotFound = D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND.0,
2605    ShaderCacheSessionCorrupt = D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT.0,
2606    ShaderCacheSessionDisabled = D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED.0,
2607    OversizedDispatch = D3D12_MESSAGE_ID_OVERSIZED_DISPATCH.0,
2608    CreateVideoEncoder = D3D12_MESSAGE_ID_CREATE_VIDEOENCODER.0,
2609    LiveVideoEncoder = D3D12_MESSAGE_ID_LIVE_VIDEOENCODER.0,
2610    DestroyVideoEncoder = D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER.0,
2611    CreateVideoEncoderheap = D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP.0,
2612    LiveVideoEncoderheap = D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP.0,
2613    DestroyVideoEncoderheap = D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP.0,
2614    CopyTextureRegionMismatchEncodeReferenceOnlyFlag =
2615        D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG.0,
2616    CopyresourceMismatchEncodeReferenceOnlyFlag =
2617        D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG.0,
2618    EncodeFrameInvalidParameters = D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS.0,
2619    EncodeFrameUnsupportedParameters = D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS.0,
2620    ResolveEncoderOutputMetadataInvalidParameters =
2621        D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS.0,
2622    ResolveEncoderOutputMetadataUnsupportedParameters =
2623        D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS.0,
2624    CreateVideoEncoderInvalidParameters =
2625        D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS.0,
2626    CreateVideoEncoderUnsupportedParameters =
2627        D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS.0,
2628    CreateVideoEncoderHeapInvalidParameters =
2629        D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS.0,
2630    CreateVideoEncoderHeapUnsupportedParameters =
2631        D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS.0,
2632    CreateCommandListNullCommandallocator =
2633        D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR.0,
2634    ClearUnorderedAccessViewInvalidDescriptorHandle =
2635        D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE.0,
2636    DescriptorHeapNotShaderVisible = D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE.0,
2637    CreateblendstateBlendopWarning = D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING.0,
2638    CreateblendstateBlendopalphaWarning = D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING.0,
2639    WriteCombinePerformanceWarning = D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING.0,
2640    ResolveQueryInvalidQueryState = D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE.0,
2641    SetPrivateDataNoAccess = D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS.0,
2642    D3D12MessagesEnd = D3D12_MESSAGE_ID_D3D12_MESSAGES_END.0,
2643}
2644
2645/// Debug message severity levels for an information queue.
2646///
2647/// For more information: [`D3D12_MESSAGE_SEVERITY  enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12sdklayers/ne-d3d12sdklayers-d3d12_message_severity)
2648#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
2649#[repr(i32)]
2650pub enum MessageSeverity {
2651    /// Indicates a corruption error.
2652    Corruption = D3D12_MESSAGE_SEVERITY_CORRUPTION.0,
2653
2654    /// Indicates an error.
2655    Error = D3D12_MESSAGE_SEVERITY_ERROR.0,
2656
2657    /// Indicates a warning.
2658    Warning = D3D12_MESSAGE_SEVERITY_WARNING.0,
2659
2660    /// Indicates an information message.
2661    Info = D3D12_MESSAGE_SEVERITY_INFO.0,
2662
2663    /// Indicates a message other than corruption, error, warning or information.
2664    Message = D3D12_MESSAGE_SEVERITY_MESSAGE.0,
2665}
2666
2667/// Values that represent the minimum precision for shader variables.
2668///
2669/// For more information: [`D3D_MIN_PRECISION enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_min_precision)
2670#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2671#[repr(i32)]
2672pub enum MinPrecision {
2673    /// Default minimum precision.
2674    #[default]
2675    Default = D3D_MIN_PRECISION_DEFAULT.0,
2676
2677    /// Minimum precision of 16-bit floating point.
2678    Float16 = D3D_MIN_PRECISION_FLOAT_16.0,
2679
2680    /// Minimum precision of 2.8-bit floating point.
2681    Float28 = D3D_MIN_PRECISION_FLOAT_2_8.0,
2682
2683    /// Reserved minimum precision.
2684    Reserved = D3D_MIN_PRECISION_RESERVED.0,
2685
2686    /// Minimum precision of 16-bit signed integer.
2687    Sint16 = D3D_MIN_PRECISION_SINT_16.0,
2688
2689    /// Minimum precision of 16-bit unsigned integer.
2690    Uint16 = D3D_MIN_PRECISION_UINT_16.0,
2691
2692    /// Minimum precision of any 16-bit type.
2693    Any16 = D3D_MIN_PRECISION_ANY_16.0,
2694
2695    /// Minimum precision of any 10-bit type.
2696    Any10 = D3D_MIN_PRECISION_ANY_10.0,
2697}
2698
2699/// Describes minimum precision support options for shaders in the current graphics driver.
2700///
2701/// For more information: [`D3D12_SHADER_MIN_PRECISION_SUPPORT enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_shader_min_precision_support)
2702#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2703#[repr(i32)]
2704pub enum MinPrecisionSupport {
2705    /// The driver supports only full 32-bit precision for all shader stages.
2706    #[default]
2707    None = D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE.0,
2708
2709    /// The driver supports 10-bit precision.
2710    Support10Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT.0,
2711
2712    /// The driver supports 16-bit precision.
2713    Support16Bit = D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT.0,
2714}
2715
2716/// Specifies the level of support for programmable sample positions that's offered by the adapter.
2717///
2718/// For more information: [`D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_programmable_sample_positions_tier)
2719#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2720#[repr(i32)]
2721pub enum PipelinePrimitiveTopology {
2722    /// The shader has not been initialized with an input primitive type.
2723    #[default]
2724    Undefined = D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED.0,
2725
2726    /// Interpret the input primitive as a point.
2727    Point = D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT.0,
2728
2729    /// Interpret the input primitive as a line.
2730    Line = D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE.0,
2731
2732    /// Interpret the input primitive as a triangle.
2733    Triangle = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE.0,
2734
2735    /// Interpret the input primitive as a control point patch.
2736    Patch = D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH.0,
2737}
2738
2739/// Specifies the predication operation to apply.
2740///
2741/// For more information: [`D3D12_PREDICATION_OP enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_predication_op)
2742#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
2743#[repr(i32)]
2744pub enum PredicationOp {
2745    /// Enables predication if all 64-bits are zero.
2746    EqualZero = D3D12_PREDICATION_OP_EQUAL_ZERO.0,
2747
2748    /// Enables predication if at least one of the 64-bits are not zero.
2749    NotEqualZero = D3D12_PREDICATION_OP_NOT_EQUAL_ZERO.0,
2750}
2751
2752/// Values that represent various primitive types for rendering in the pipeline.
2753///
2754/// For more information: [`D3D_PRIMITIVE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_primitive)
2755#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2756#[repr(i32)]
2757pub enum Primitive {
2758    /// The primitive type is not defined.
2759    #[default]
2760    Undefined = D3D_PRIMITIVE_UNDEFINED.0,
2761
2762    /// Interpret the vertex data as a list of points.
2763    Point = D3D_PRIMITIVE_POINT.0,
2764
2765    /// Interpret the vertex data as a list of lines.
2766    Line = D3D_PRIMITIVE_LINE.0,
2767
2768    /// Interpret the vertex data as a list of triangles.
2769    Triangle = D3D_PRIMITIVE_TRIANGLE.0,
2770
2771    /// Interpret the vertex data as a list of lines with adjacency information.
2772    LineAdj = D3D_PRIMITIVE_LINE_ADJ.0,
2773
2774    /// Interpret the vertex data as a list of triangles with adjacency information.
2775    TriangleAdj = D3D_PRIMITIVE_TRIANGLE_ADJ.0,
2776
2777    /// Interpret the vertex data as a patch with 1 control point.
2778    ControlPoint1 = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH.0,
2779
2780    /// Interpret the vertex data as a patch with 2 control points.
2781    ControlPoint2 = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH.0,
2782
2783    /// Interpret the vertex data as a patch with 3 control points.
2784    ControlPoint3 = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH.0,
2785
2786    /// Interpret the vertex data as a patch with 4 control points.
2787    ControlPoint4 = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH.0,
2788
2789    /// Interpret the vertex data as a patch with 5 control points.
2790    ControlPoint5 = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH.0,
2791
2792    /// Interpret the vertex data as a patch with 6 control points.
2793    ControlPoint6 = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH.0,
2794
2795    /// Interpret the vertex data as a patch with 7 control points.
2796    ControlPoint7 = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH.0,
2797
2798    /// Interpret the vertex data as a patch with 8 control points.
2799    ControlPoint8 = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH.0,
2800
2801    /// Interpret the vertex data as a patch with 9 control points.
2802    ControlPoint9 = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH.0,
2803
2804    /// Interpret the vertex data as a patch with 10 control points.
2805    ControlPoint10 = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH.0,
2806
2807    /// Interpret the vertex data as a patch with 11 control points.
2808    ControlPoint11 = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH.0,
2809
2810    /// Interpret the vertex data as a patch with 12 control points.
2811    ControlPoint12 = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH.0,
2812
2813    /// Interpret the vertex data as a patch with 13 control points.
2814    ControlPoint13 = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH.0,
2815
2816    /// Interpret the vertex data as a patch with 14 control points.
2817    ControlPoint14 = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH.0,
2818
2819    /// Interpret the vertex data as a patch with 15 control points.
2820    ControlPoint15 = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH.0,
2821
2822    /// Interpret the vertex data as a patch with 16 control points.
2823    ControlPoint16 = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH.0,
2824
2825    /// Interpret the vertex data as a patch with 17 control points.
2826    ControlPoint17 = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH.0,
2827
2828    /// Interpret the vertex data as a patch with 18 control points.
2829    ControlPoint18 = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH.0,
2830
2831    /// Interpret the vertex data as a patch with 19 control points.
2832    ControlPoint19 = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH.0,
2833
2834    /// Interpret the vertex data as a patch with 20 control points.
2835    ControlPoint20 = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH.0,
2836
2837    /// Interpret the vertex data as a patch with 21 control points.
2838    ControlPoint21 = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH.0,
2839
2840    /// Interpret the vertex data as a patch with 22 control points.
2841    ControlPoint22 = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH.0,
2842
2843    /// Interpret the vertex data as a patch with 23 control points.
2844    ControlPoint23 = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH.0,
2845
2846    /// Interpret the vertex data as a patch with 24 control points.
2847    ControlPoint24 = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH.0,
2848
2849    /// Interpret the vertex data as a patch with 25 control points.
2850    ControlPoint25 = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH.0,
2851
2852    /// Interpret the vertex data as a patch with 26 control points.
2853    ControlPoint26 = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH.0,
2854
2855    /// Interpret the vertex data as a patch with 27 control points.
2856    ControlPoint27 = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH.0,
2857
2858    /// Interpret the vertex data as a patch with 28 control points.
2859    ControlPoint28 = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH.0,
2860
2861    /// Interpret the vertex data as a patch with 29 control points.
2862    ControlPoint29 = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH.0,
2863
2864    /// Interpret the vertex data as a patch with 30 control points.
2865    ControlPoint30 = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH.0,
2866
2867    /// Interpret the vertex data as a patch with 31 control points.
2868    ControlPoint31 = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH.0,
2869
2870    /// Interpret the vertex data as a patch with 32 control points.
2871    ControlPoint32 = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH.0,
2872}
2873
2874/// Values that indicate how the pipeline interprets vertex data that is bound to the input-assembler stage. These primitive topology values determine how the vertex data is rendered on screen.
2875///
2876/// For more information: [`D3D_PRIMITIVE_TOPOLOGY enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_primitive_topology)
2877#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2878#[repr(i32)]
2879pub enum PrimitiveTopology {
2880    /// The IA stage has not been initialized with a primitive topology. The IA stage will not function properly unless a primitive topology is defined.
2881    #[default]
2882    Undefined = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED.0,
2883
2884    /// Interpret the vertex data as a list of points.
2885    Point = D3D_PRIMITIVE_TOPOLOGY_POINTLIST.0,
2886
2887    /// Interpret the vertex data as a list of lines.
2888    Line = D3D_PRIMITIVE_TOPOLOGY_LINELIST.0,
2889
2890    /// Interpret the vertex data as a list of triangles.
2891    Triangle = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST.0,
2892}
2893
2894/// Specifies the level of support for programmable sample positions that's offered by the adapter.
2895///
2896/// For more information: [`D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_programmable_sample_positions_tier)
2897#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2898#[repr(i32)]
2899pub enum ProgrammableSamplePositionsTier {
2900    /// Indicates that there's no support for programmable sample positions.
2901    #[default]
2902    NotSupported = D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED.0,
2903
2904    /// Indicates that there's tier 1 support for programmable sample positions.
2905    /// In tier 1, a single sample pattern can be specified to repeat for every pixel (SetSamplePosition parameter NumPixels = 1) and ResolveSubResource is supported.
2906    Tier1 = D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1.0,
2907
2908    /// Indicates that there's tier 2 support for programmable sample positions.
2909    /// In tier 2, four separate sample patterns can be specified for each pixel in a 2x2 grid (SetSamplePosition parameter NumPixels = 1) that
2910    /// repeats over the render-target or viewport, aligned on even coordinates.
2911    Tier2 = D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2.0,
2912}
2913
2914/// Specifies the type of query heap to create.
2915///
2916/// For more information: [`D3D12_QUERY_HEAP_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_query_heap_type)
2917#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2918#[repr(i32)]
2919pub enum QueryHeapType {
2920    /// This returns a binary 0/1 result:
2921    /// 0 indicates that no samples passed depth and stencil testing,
2922    /// 1 indicates that at least one sample passed depth and stencil testing.
2923    /// This enables occlusion queries to not interfere with any GPU performance optimization associated with depth/stencil testing.
2924    #[default]
2925    Occlusion = D3D12_QUERY_HEAP_TYPE_OCCLUSION.0,
2926
2927    /// Indicates that the heap is for high-performance timing data.
2928    Timestamp = D3D12_QUERY_HEAP_TYPE_TIMESTAMP.0,
2929
2930    /// Indicates the heap is to contain pipeline data.
2931    PipelineStatistics = D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS.0,
2932
2933    /// Indicates the heap is to contain stream output data.
2934    SoStatistics = D3D12_QUERY_HEAP_TYPE_SO_STATISTICS.0,
2935
2936    /// Indicates the heap is to contain video decode statistics data.
2937    VideoDecodeStatistics = D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS.0,
2938
2939    /// Indicates the heap is to contain timestamp queries emitted exclusively by copy command lists.
2940    /// Copy queue timestamps can only be queried from a copy command list, and a copy command list can not emit to a regular timestamp query Heap.
2941    CopyQueueTimestamp = D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP.0,
2942
2943    /// TBD
2944    PipelineStatistics1 = D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1.0,
2945}
2946
2947/// Specifies the type of query.
2948///
2949/// For more information: [`D3D12_QUERY_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_query_type)
2950#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2951#[repr(i32)]
2952pub enum QueryType {
2953    /// Indicates the query is for depth/stencil occlusion counts.
2954    #[default]
2955    Occlusion = D3D12_QUERY_TYPE_OCCLUSION.0,
2956
2957    /// Indicates the query is for a binary depth/stencil occlusion statistics.
2958    BinaryOcclusion = D3D12_QUERY_TYPE_BINARY_OCCLUSION.0,
2959
2960    /// Indicates the query is for high definition GPU and CPU timestamps.
2961    Timestamp = D3D12_QUERY_TYPE_TIMESTAMP.0,
2962
2963    /// Indicates the query type is for graphics pipeline statistics.
2964    PipelineStatistics = D3D12_QUERY_TYPE_PIPELINE_STATISTICS.0,
2965
2966    /// Stream 0 output statistics. In Direct3D 12 there is no single stream output (SO) overflow query for all the output streams.
2967    /// Apps need to issue multiple single-stream queries, and then correlate the results.
2968    /// Stream output is the ability of the GPU to write vertices to a buffer. The stream output counters monitor progress.
2969    SoStatisticsStream0 = D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0.0,
2970
2971    /// Stream 1 output statistics.
2972    SoStatisticsStream1 = D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1.0,
2973
2974    /// Stream 2 output statistics.
2975    SoStatisticsStream2 = D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2.0,
2976
2977    /// Stream 3 output statistics.
2978    SoStatisticsStream3 = D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3.0,
2979
2980    /// Video decode statistics.
2981    VideoDecodeStatistics = D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS.0,
2982
2983    /// TBD
2984    PipelineStatistics1 = D3D12_QUERY_TYPE_PIPELINE_STATISTICS1.0,
2985}
2986
2987/// Specifies the level of ray tracing support on the graphics device.
2988///
2989/// For more information: [`D3D12_RAYTRACING_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_raytracing_tier)
2990#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
2991#[repr(i32)]
2992pub enum RaytracingTier {
2993    /// No support for ray tracing on the device. Attempts to create any ray tracing-related object will fail, and using ray tracing-related APIs on command lists results in undefined behavior.
2994    #[default]
2995    NotSupported = D3D12_RAYTRACING_TIER_NOT_SUPPORTED.0,
2996
2997    /// The device supports tier 1 ray tracing functionality. In the current release, this tier represents all available ray tracing features.
2998    Tier1_0 = D3D12_RAYTRACING_TIER_1_0.0,
2999
3000    /// TBD
3001    Tier1_1 = D3D12_RAYTRACING_TIER_1_1.0,
3002}
3003
3004/// Values that represent the component types for registers in Direct3D.
3005///
3006/// For more information: [`D3D_REGISTER_COMPONENT_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_register_component_type)
3007#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3008#[repr(i32)]
3009pub enum RegisterComponentType {
3010    /// The component type is unknown.
3011    #[default]
3012    Unknown = D3D_REGISTER_COMPONENT_UNKNOWN.0,
3013
3014    /// The component type is a 32-bit unsigned integer.
3015    Uint32 = D3D_REGISTER_COMPONENT_UINT32.0,
3016
3017    /// The component type is a 32-bit signed integer.
3018    Sint32 = D3D_REGISTER_COMPONENT_SINT32.0,
3019
3020    /// The component type is a 32-bit floating point.
3021    Float32 = D3D_REGISTER_COMPONENT_FLOAT32.0,
3022
3023    /// The component type is a 16-bit unsigned integer.
3024    Uint16 = D3D_REGISTER_COMPONENT_UINT16.0,
3025
3026    /// The component type is a 16-bit signed integer.
3027    Sint16 = D3D_REGISTER_COMPONENT_SINT16.0,
3028
3029    /// The component type is a 16-bit floating point.
3030    Float16 = D3D_REGISTER_COMPONENT_FLOAT16.0,
3031
3032    /// The component type is a 64-bit unsigned integer.
3033    Uint64 = D3D_REGISTER_COMPONENT_UINT64.0,
3034
3035    /// The component type is a 64-bit signed integer.
3036    Sint64 = D3D_REGISTER_COMPONENT_SINT64.0,
3037
3038    /// The component type is a 64-bit floating point.
3039    Float64 = D3D_REGISTER_COMPONENT_FLOAT64.0,
3040}
3041
3042/// Specifies the level of support for render passes on a graphics device.
3043///
3044/// For more information: [`D3D12_RENDER_PASS_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_render_pass_tier)
3045#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3046#[repr(i32)]
3047pub enum RenderPassTier {
3048    /// The user-mode display driver hasn't implemented render passes, and so the feature is provided only via software emulation.
3049    /// Render passes might not provide a performance advantage at this level of support.
3050    #[default]
3051    Tier0 = D3D12_RENDER_PASS_TIER_0.0,
3052
3053    /// The render passes feature is implemented by the user-mode display driver, and render target/depth buffer writes may be accelerated.
3054    /// Unordered access view (UAV) writes are not efficiently supported within the render pass.
3055    Tier1 = D3D12_RENDER_PASS_TIER_1.0,
3056
3057    /// The render passes feature is implemented by the user-mode display driver, render target/depth buffer writes may be accelerated,
3058    /// and unordered access view (UAV) writes (provided that writes in a render pass are not read until a subsequent render pass) are likely to be more efficient than
3059    /// issuing the same work without using a render pass.
3060    Tier2 = D3D12_RENDER_PASS_TIER_2.0,
3061}
3062
3063/// Identifies the tier of resource binding being used.
3064///
3065/// For more information: [`D3D12_RESOURCE_BINDING_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_resource_binding_tier)
3066#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3067#[repr(i32)]
3068pub enum ResourceBindingTier {
3069    /// Tier 1
3070    #[default]
3071    Tier1 = D3D12_RESOURCE_BINDING_TIER_1.0,
3072
3073    /// Tier 2
3074    Tier2 = D3D12_RESOURCE_BINDING_TIER_2.0,
3075
3076    /// Tier 3
3077    Tier3 = D3D12_RESOURCE_BINDING_TIER_3.0,
3078}
3079
3080/// Identifies the type of resource being used.
3081///
3082/// For more information: [`D3D12_RESOURCE_DIMENSION enumeration `](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_resource_dimension)
3083#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3084#[repr(i32)]
3085pub enum ResourceDimension {
3086    /// Resource is of unknown type.
3087    #[default]
3088    Unknown = D3D12_RESOURCE_DIMENSION_UNKNOWN.0,
3089
3090    /// Resource is a buffer.
3091    Buffer = D3D12_RESOURCE_DIMENSION_BUFFER.0,
3092
3093    /// Resource is a 1D texture.
3094    Texture1D = D3D12_RESOURCE_DIMENSION_TEXTURE1D.0,
3095
3096    /// Resource is a 2D texture.
3097    Texture2D = D3D12_RESOURCE_DIMENSION_TEXTURE2D.0,
3098
3099    /// Resource is a 3D texture.
3100    Texture3D = D3D12_RESOURCE_DIMENSION_TEXTURE3D.0,
3101}
3102
3103/// Specifies which resource heap tier the hardware and driver support.
3104///
3105/// For more information: [`D3D12_RESOURCE_HEAP_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_resource_heap_tier)
3106#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3107#[repr(i32)]
3108pub enum ResourceHeapTier {
3109    /// Indicates that heaps can only support resources from a single resource category.
3110    #[default]
3111    Tier1 = D3D12_RESOURCE_HEAP_TIER_1.0,
3112
3113    /// Indicates that heaps can support resources from all three categories.
3114    Tier2 = D3D12_RESOURCE_HEAP_TIER_2.0,
3115}
3116
3117/// Specifies the version of root signature layout.
3118///
3119/// For more information: [`D3D_RESOURCE_RETURN_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_resource_return_type)
3120#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
3121#[repr(i32)]
3122pub enum ResourceReturnType {
3123    Unorm = D3D_RETURN_TYPE_UNORM.0,
3124    Snorm = D3D_RETURN_TYPE_SNORM.0,
3125    Sint = D3D_RETURN_TYPE_SINT.0,
3126    Uint = D3D_RETURN_TYPE_UINT.0,
3127    Float = D3D_RETURN_TYPE_FLOAT.0,
3128    Mixed = D3D_RETURN_TYPE_MIXED.0,
3129    Double = D3D_RETURN_TYPE_DOUBLE.0,
3130    Continued = D3D_RETURN_TYPE_CONTINUED.0,
3131}
3132
3133/// Specifies the version of root signature layout.
3134///
3135/// For more information: [`D3D_ROOT_SIGNATURE_VERSION enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d_root_signature_version)
3136#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3137#[repr(i32)]
3138pub enum RootSignatureVersion {
3139    /// Version one of root signature layout.
3140    #[default]
3141    V1_0 = D3D_ROOT_SIGNATURE_VERSION_1_0.0,
3142
3143    /// Version 1.1 of root signature layout.
3144    V1_1 = D3D_ROOT_SIGNATURE_VERSION_1_1.0,
3145
3146    /// TBD
3147    V1_2 = D3D_ROOT_SIGNATURE_VERSION_1_2.0,
3148}
3149
3150/// Specifies the version of root signature layout.
3151///
3152/// For more information: [`D3D_ROOT_SIGNATURE_VERSION enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d_root_signature_version)
3153#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3154#[repr(i32)]
3155pub enum RotationMode {
3156    /// Unspecified rotation.
3157    #[default]
3158    Unspecified = DXGI_MODE_ROTATION_UNSPECIFIED.0,
3159
3160    /// Specifies no rotation.
3161    Identity = DXGI_MODE_ROTATION_IDENTITY.0,
3162
3163    /// Specifies 90 degrees of rotation.
3164    Rotate90 = DXGI_MODE_ROTATION_ROTATE90.0,
3165
3166    /// Specifies 180 degrees of rotation.
3167    Rotate180 = DXGI_MODE_ROTATION_ROTATE180.0,
3168
3169    /// Specifies 270 degrees of rotation.
3170    Rotate270 = DXGI_MODE_ROTATION_ROTATE270.0,
3171}
3172
3173/// Defines constants that specify sampler feedback support.
3174///
3175/// For more information: [`D3D12_SAMPLER_FEEDBACK_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_sampler_feedback_tier)
3176#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3177#[repr(i32)]
3178pub enum SamplerFeedbackTier {
3179    /// Specifies that sampler feedback is not supported. Attempts at calling sampler feedback APIs represent an error.
3180    #[default]
3181    NoSupported = D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED.0,
3182
3183    /// Specifies that sampler feedback is supported to tier 0.9.
3184    Tier0_9 = D3D12_SAMPLER_FEEDBACK_TIER_0_9.0,
3185
3186    /// Specifies sample feedback is supported to tier 1.0.
3187    /// This indicates that sampler feedback is supported for all texture addressing modes, and feedback-writing methods are supported irrespective of the passed-in
3188    /// shader resource view.
3189    Tier1_0 = D3D12_SAMPLER_FEEDBACK_TIER_1_0.0,
3190}
3191
3192/// Identifies resize behavior when the back-buffer size does not match the size of the target output.
3193///
3194/// For more information: [`DXGI_SCALING enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/dxgi1_2/ne-dxgi1_2-dxgi_scaling)
3195#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3196#[repr(i32)]
3197pub enum Scaling {
3198    /// Directs DXGI to make the back-buffer contents scale to fit the presentation target size.
3199    #[default]
3200    Stretch = DXGI_SCALING_STRETCH.0,
3201
3202    /// Directs DXGI to make the back-buffer contents appear without any scaling when the presentation target size is not equal to the back-buffer size.
3203    None = DXGI_SCALING_NONE.0,
3204
3205    /// Directs DXGI to make the back-buffer contents scale to fit the presentation target size, while preserving the aspect ratio of the back-buffer.
3206    /// If the scaled back-buffer does not fill the presentation area, it will be centered with black borders.
3207    AspectRatioStretch = DXGI_SCALING_ASPECT_RATIO_STRETCH.0,
3208}
3209
3210/// Flags indicating how an image is stretched to fit a given monitor's resolution.
3211///
3212/// For more information: [`DXGI_MODE_SCALING enumeration`](https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/bb173066(v=vs.85))
3213#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3214#[repr(i32)]
3215pub enum ScalingMode {
3216    /// Unspecified scaling.
3217    #[default]
3218    Unspecified = DXGI_MODE_SCALING_UNSPECIFIED.0,
3219
3220    /// Specifies no scaling. The image is centered on the display. This flag is typically used for a fixed-dot-pitch display (such as an LED display).
3221    Centered = DXGI_MODE_SCALING_CENTERED.0,
3222
3223    /// Specifies stretched scaling.
3224    Stretched = DXGI_MODE_SCALING_STRETCHED.0,
3225}
3226
3227/// Flags indicating the method the raster uses to create an image on a surface.
3228///
3229/// For more information: [`DXGI_MODE_SCANLINE_ORDER enumeration`](https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/bb173067(v=vs.85))
3230#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3231#[repr(i32)]
3232pub enum ScanlineOrdering {
3233    /// Scanline order is unspecified.
3234    #[default]
3235    Unspecified = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED.0,
3236
3237    /// The image is created from the first scanline to the last without skipping any.
3238    Progressive = DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE.0,
3239
3240    /// The image is created beginning with the upper field.
3241    UpperFieldFirst = DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST.0,
3242
3243    /// The image is created beginning with the lower field.
3244    LowerFieldFirst = DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST.0,
3245}
3246
3247/// Semantic HLSL name
3248///
3249/// For more information: ['Semantics'](https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-semantics)
3250#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
3251pub enum SemanticName {
3252    /// Binormal
3253    Binormal(u8),
3254
3255    /// Blend indices
3256    BlendIndices(u8),
3257
3258    /// Blend weights
3259    BlendWeight(u8),
3260
3261    /// Diffuse and specular color
3262    Color(u8),
3263
3264    /// Normal vector
3265    Normal(u8),
3266
3267    /// Vertex position in object space.
3268    Position(u8),
3269
3270    /// Transformed vertex position.
3271    PositionT,
3272
3273    /// Point size
3274    Psize(u8),
3275
3276    /// Tangent
3277    Tangent(u8),
3278
3279    /// Texture coordinates
3280    TexCoord(u8),
3281}
3282
3283impl SemanticName {
3284    #[inline]
3285    pub(crate) fn name(&self) -> &'static CStr {
3286        match self {
3287            SemanticName::Binormal(_) => c"BINORMAL",
3288            SemanticName::BlendIndices(_) => c"BLENDINDICES",
3289            SemanticName::BlendWeight(_) => c"BLENDWEIGHT",
3290            SemanticName::Color(_) => c"COLOR",
3291            SemanticName::Normal(_) => c"NORMAL",
3292            SemanticName::Position(_) => c"POSITION",
3293            SemanticName::PositionT => c"POSITIONT",
3294            SemanticName::Psize(_) => c"PSIZE",
3295            SemanticName::Tangent(_) => c"TANGENT",
3296            SemanticName::TexCoord(_) => c"TEXCOORD",
3297        }
3298    }
3299
3300    #[inline]
3301    pub(crate) fn index(&self) -> u8 {
3302        match *self {
3303            SemanticName::Binormal(n) => n,
3304            SemanticName::BlendIndices(n) => n,
3305            SemanticName::BlendWeight(n) => n,
3306            SemanticName::Color(n) => n,
3307            SemanticName::Normal(n) => n,
3308            SemanticName::Position(n) => n,
3309            SemanticName::PositionT => 0,
3310            SemanticName::Psize(n) => n,
3311            SemanticName::Tangent(n) => n,
3312            SemanticName::TexCoord(n) => n,
3313        }
3314    }
3315}
3316
3317/// Specifies a shader model.
3318///
3319/// For more information: [`D3D_SHADER_MODEL enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d_shader_model)
3320#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3321#[repr(i32)]
3322pub enum ShaderModel {
3323    /// TBD
3324    #[default]
3325    None = 0,
3326
3327    /// Indicates shader model 5.1.
3328    Model5_1 = D3D_SHADER_MODEL_5_1.0,
3329
3330    /// Indicates shader model 6.0. Compiling a shader model 6.0 shader requires using the DXC compiler, and is not supported by legacy FXC.
3331    Model6_0 = D3D_SHADER_MODEL_6_0.0,
3332
3333    /// Indicates shader model 6.1.
3334    Model6_1 = D3D_SHADER_MODEL_6_1.0,
3335
3336    /// Indicates shader model 6.2.
3337    Model6_2 = D3D_SHADER_MODEL_6_2.0,
3338
3339    /// Indicates shader model 6.3.
3340    Model6_3 = D3D_SHADER_MODEL_6_3.0,
3341
3342    /// Shader model 6.4 support was added in Windows 10, Version 1903, and is required for DirectX Raytracing (DXR).
3343    Model6_4 = D3D_SHADER_MODEL_6_4.0,
3344
3345    /// Shader model 6.5 support was added in Windows 10, Version 2004, and is required for Direct Machine Learning.
3346    Model6_5 = D3D_SHADER_MODEL_6_5.0,
3347
3348    /// Shader model 6.6 support was added in Windows 11 and the DirectX 12 Agility SDK.
3349    Model6_6 = D3D_SHADER_MODEL_6_6.0,
3350
3351    /// Shader model 6.7 support was added in the DirectX 12 Agility SDK v1.6
3352    Model6_7 = D3D_SHADER_MODEL_6_7.0,
3353
3354    /// TBD
3355    Model6_8 = D3D_SHADER_MODEL_6_8.0,
3356}
3357
3358/// Values that identify resource types that can be bound to a shader and that are reflected as part of the resource description for the shader.
3359///
3360/// For more information: [`D3D_SHADER_INPUT_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_shader_input_type)
3361#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
3362#[repr(i32)]
3363pub enum ShaderInputType {
3364    CBuffer = D3D_SIT_CBUFFER.0,
3365    TBuffer = D3D_SIT_TBUFFER.0,
3366    Texture = D3D_SIT_TEXTURE.0,
3367    Sampler = D3D_SIT_SAMPLER.0,
3368    UavRWTyped = D3D_SIT_UAV_RWTYPED.0,
3369    Structured = D3D_SIT_STRUCTURED.0,
3370    UavRWStructured = D3D_SIT_UAV_RWSTRUCTURED.0,
3371    ByteAddress = D3D_SIT_BYTEADDRESS.0,
3372    UavRwByteAddress = D3D_SIT_UAV_RWBYTEADDRESS.0,
3373    UavAppendStructured = D3D_SIT_UAV_APPEND_STRUCTURED.0,
3374    UavConsumeStructured = D3D_SIT_UAV_CONSUME_STRUCTURED.0,
3375    UavRwstructuredWithCounter = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER.0,
3376    RTAccelerationStructure = D3D_SIT_RTACCELERATIONSTRUCTURE.0,
3377    UavFeedbackTexture = D3D_SIT_UAV_FEEDBACKTEXTURE.0,
3378}
3379
3380/// Values that identify the class of a shader variable.
3381///
3382/// For more information: [`D3D_SHADER_VARIABLE_CLASS enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_shader_variable_class)
3383#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
3384#[repr(i32)]
3385pub enum ShaderVariableClass {
3386    Scalar = D3D_SVC_SCALAR.0,
3387    Vector = D3D_SVC_VECTOR.0,
3388    MatrixRows = D3D_SVC_MATRIX_ROWS.0,
3389    MatrixColumns = D3D_SVC_MATRIX_COLUMNS.0,
3390    Object = D3D_SVC_OBJECT.0,
3391    Struct = D3D_SVC_STRUCT.0,
3392    InterfaceClass = D3D_SVC_INTERFACE_CLASS.0,
3393    InterfacePointer = D3D_SVC_INTERFACE_POINTER.0,
3394}
3395
3396/// Values that identify various data, texture, and buffer types that can be assigned to a shader variable.
3397///
3398/// For more information: [`D3D_SHADER_VARIABLE_TYPE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_shader_variable_type)
3399#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
3400#[repr(i32)]
3401pub enum ShaderVariableType {
3402    Void = D3D_SVT_VOID.0,
3403    Bool = D3D_SVT_BOOL.0,
3404    Int = D3D_SVT_INT.0,
3405    Float = D3D_SVT_FLOAT.0,
3406    String = D3D_SVT_STRING.0,
3407    Texture = D3D_SVT_TEXTURE.0,
3408    Texture1D = D3D_SVT_TEXTURE1D.0,
3409    Texture2D = D3D_SVT_TEXTURE2D.0,
3410    Texture3D = D3D_SVT_TEXTURE3D.0,
3411    TextureCube = D3D_SVT_TEXTURECUBE.0,
3412    Sampler = D3D_SVT_SAMPLER.0,
3413    Sampler1D = D3D_SVT_SAMPLER1D.0,
3414    Sampler2D = D3D_SVT_SAMPLER2D.0,
3415    Sampler3D = D3D_SVT_SAMPLER3D.0,
3416    SamplerCube = D3D_SVT_SAMPLERCUBE.0,
3417    PixelShader = D3D_SVT_PIXELSHADER.0,
3418    VertexShader = D3D_SVT_VERTEXSHADER.0,
3419    PixelFragment = D3D_SVT_PIXELFRAGMENT.0,
3420    VertexFragment = D3D_SVT_VERTEXFRAGMENT.0,
3421    UInt = D3D_SVT_UINT.0,
3422    UInt8 = D3D_SVT_UINT8.0,
3423    GeometryShader = D3D_SVT_GEOMETRYSHADER.0,
3424    Rasterizer = D3D_SVT_RASTERIZER.0,
3425    DepthStencil = D3D_SVT_DEPTHSTENCIL.0,
3426    Blend = D3D_SVT_BLEND.0,
3427    Buffer = D3D_SVT_BUFFER.0,
3428    CBuffer = D3D_SVT_CBUFFER.0,
3429    TBuffer = D3D_SVT_TBUFFER.0,
3430    Texture1DArray = D3D_SVT_TEXTURE1DARRAY.0,
3431    Texture2DArray = D3D_SVT_TEXTURE2DARRAY.0,
3432    RenderTargetView = D3D_SVT_RENDERTARGETVIEW.0,
3433    DepthStencilView = D3D_SVT_DEPTHSTENCILVIEW.0,
3434    Texture2DMS = D3D_SVT_TEXTURE2DMS.0,
3435    Texture2DMSArray = D3D_SVT_TEXTURE2DMSARRAY.0,
3436    TextureCubeArray = D3D_SVT_TEXTURECUBEARRAY.0,
3437    HullShader = D3D_SVT_HULLSHADER.0,
3438    DomainShader = D3D_SVT_DOMAINSHADER.0,
3439    InterfacePointer = D3D_SVT_INTERFACE_POINTER.0,
3440    ComputeShader = D3D_SVT_COMPUTESHADER.0,
3441    Double = D3D_SVT_DOUBLE.0,
3442    RWTexture1D = D3D_SVT_RWTEXTURE1D.0,
3443    RWTexture1DArray = D3D_SVT_RWTEXTURE1DARRAY.0,
3444    RWTexture2D = D3D_SVT_RWTEXTURE2D.0,
3445    RWTexture2DArray = D3D_SVT_RWTEXTURE2DARRAY.0,
3446    RWTexture3D = D3D_SVT_RWTEXTURE3D.0,
3447    RWBuffer = D3D_SVT_RWBUFFER.0,
3448    ByteAddressBuffer = D3D_SVT_BYTEADDRESS_BUFFER.0,
3449    RWByteAddressBuffer = D3D_SVT_RWBYTEADDRESS_BUFFER.0,
3450    StructuredBuffer = D3D_SVT_STRUCTURED_BUFFER.0,
3451    RWStructuredBuffer = D3D_SVT_RWSTRUCTURED_BUFFER.0,
3452    AppendStructuredBuffer = D3D_SVT_APPEND_STRUCTURED_BUFFER.0,
3453    ConsumeStructuredBuffer = D3D_SVT_CONSUME_STRUCTURED_BUFFER.0,
3454    Min8Float = D3D_SVT_MIN8FLOAT.0,
3455    Min10Float = D3D_SVT_MIN10FLOAT.0,
3456    Min16Float = D3D_SVT_MIN16FLOAT.0,
3457    Min12Int = D3D_SVT_MIN12INT.0,
3458    Min16Int = D3D_SVT_MIN16INT.0,
3459}
3460
3461/// Values that represent the names of shader inputs and outputs in Direct3D.
3462///
3463/// For more information: [`D3D_NAME enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_name)
3464#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3465#[repr(i32)]
3466pub enum ShaderVarName {
3467    /// Undefined name.
3468    #[default]
3469    Undefined = D3D_NAME_UNDEFINED.0,
3470
3471    /// Position name.
3472    Position = D3D_NAME_POSITION.0,
3473
3474    /// Clip distance name.
3475    ClipDistance = D3D_NAME_CLIP_DISTANCE.0,
3476
3477    /// Cull distance name.
3478    CullDistance = D3D_NAME_CULL_DISTANCE.0,
3479
3480    /// Render target array index name.
3481    RenderTargetArrayIndex = D3D_NAME_RENDER_TARGET_ARRAY_INDEX.0,
3482
3483    /// Viewport array index name.
3484    ViewportArrayIndex = D3D_NAME_VIEWPORT_ARRAY_INDEX.0,
3485
3486    /// Vertex ID name.
3487    VertexId = D3D_NAME_VERTEX_ID.0,
3488
3489    /// Primitive ID name.
3490    PrimitiveId = D3D_NAME_PRIMITIVE_ID.0,
3491
3492    /// Instance ID name.
3493    InstanceId = D3D_NAME_INSTANCE_ID.0,
3494
3495    /// Is front face name.
3496    IsFrontFace = D3D_NAME_IS_FRONT_FACE.0,
3497
3498    /// Sample index name.
3499    SampleIndex = D3D_NAME_SAMPLE_INDEX.0,
3500
3501    /// Final quad edge tessellation factor name.
3502    FinalQuadEdgeTessFactor = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR.0,
3503
3504    /// Final quad inside tessellation factor name.
3505    FinalQuadInsideTessFactor = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR.0,
3506
3507    /// Final triangle edge tessellation factor name.
3508    FinalTriEdgeTessFactor = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR.0,
3509
3510    /// Final triangle inside tessellation factor name.
3511    FinalTriInsideTessFactor = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR.0,
3512
3513    /// Final line detail tessellation factor name.
3514    FinalLineDetailTessFactor = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR.0,
3515
3516    /// Final line density tessellation factor name.
3517    FinalLineDensityTessFactor = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR.0,
3518
3519    /// Barycentrics name.
3520    Barycentrics = D3D_NAME_BARYCENTRICS.0,
3521
3522    /// Shading rate name.
3523    ShadingRate = D3D_NAME_SHADINGRATE.0,
3524
3525    /// Cull primitive name.
3526    CullPrimitive = D3D_NAME_CULLPRIMITIVE.0,
3527
3528    /// Target name.
3529    Target = D3D_NAME_TARGET.0,
3530
3531    /// Depth name.
3532    Depth = D3D_NAME_DEPTH.0,
3533
3534    /// Coverage name.
3535    Coverage = D3D_NAME_COVERAGE.0,
3536
3537    /// Depth greater than or equal name.
3538    DepthGreaterEqual = D3D_NAME_DEPTH_GREATER_EQUAL.0,
3539
3540    /// Depth less than or equal name.
3541    DepthLessEqual = D3D_NAME_DEPTH_LESS_EQUAL.0,
3542
3543    /// Stencil reference name.
3544    StencilRef = D3D_NAME_STENCIL_REF.0,
3545
3546    /// Inner coverage name.
3547    InnerCoverage = D3D_NAME_INNER_COVERAGE.0,
3548}
3549
3550/// Specifies the shaders that can access the contents of a given root signature slot.
3551///
3552/// For more information: [`D3D12_SHADER_VISIBILITY enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_shader_visibility)
3553#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3554#[repr(i32)]
3555pub enum ShaderVisibility {
3556    /// Specifies that all shader stages can access whatever is bound at the root signature slot.
3557    #[default]
3558    All = D3D12_SHADER_VISIBILITY_ALL.0,
3559
3560    /// Specifies that the vertex shader stage can access whatever is bound at the root signature slot.
3561    Vertex = D3D12_SHADER_VISIBILITY_VERTEX.0,
3562
3563    /// Specifies that the hull shader stage can access whatever is bound at the root signature slot.
3564    Hull = D3D12_SHADER_VISIBILITY_HULL.0,
3565
3566    /// Specifies that the domain shader stage can access whatever is bound at the root signature slot.
3567    Domain = D3D12_SHADER_VISIBILITY_DOMAIN.0,
3568
3569    /// Specifies that the geometry shader stage can access whatever is bound at the root signature slot.
3570    Geometry = D3D12_SHADER_VISIBILITY_GEOMETRY.0,
3571
3572    /// Specifies that the pixel shader stage can access whatever is bound at the root signature slot.
3573    Pixel = D3D12_SHADER_VISIBILITY_PIXEL.0,
3574
3575    /// Specifies that the amplification shader stage can access whatever is bound at the root signature slot.
3576    Amplification = D3D12_SHADER_VISIBILITY_AMPLIFICATION.0,
3577
3578    /// Specifies that the mesh shader stage can access whatever is bound at the root signature slot.
3579    Mesh = D3D12_SHADER_VISIBILITY_MESH.0,
3580}
3581
3582/// Defines constants that specify a cross-API sharing support tier.
3583///
3584/// For more information: [`D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_shared_resource_compatibility_tier)
3585#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3586#[repr(i32)]
3587pub enum SharedResourceCompatibilityTier {
3588    /// Specifies that the most basic level of cross-API sharing is supported.
3589    #[default]
3590    Tier0 = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0.0,
3591
3592    /// Specifies that cross-API sharing functionality of [`SharedResourceCompatibilityTier::Tier0`] is supported, plus the other formats.
3593    Tier1 = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1.0,
3594
3595    /// Specifies that cross-API sharing functionality of [`SharedResourceCompatibilityTier::Tier1`] is supported, plus the other formats.
3596    Tier2 = D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2.0,
3597}
3598
3599/// Values that identify the type of resource to be viewed as a shader resource.
3600///
3601/// For more information: [`D3D_SRV_DIMENSION enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_srv_dimension)
3602#[derive(Clone, Copy, Debug, FromRepr, Hash, PartialEq, Eq)]
3603#[repr(i32)]
3604pub enum SrvDimension {
3605    Unknown = D3D_SRV_DIMENSION_UNKNOWN.0,
3606    Buffer = D3D_SRV_DIMENSION_BUFFER.0,
3607    Texture1D = D3D_SRV_DIMENSION_TEXTURE1D.0,
3608    Texture1DArray = D3D_SRV_DIMENSION_TEXTURE1DARRAY.0,
3609    Texture2D = D3D_SRV_DIMENSION_TEXTURE2D.0,
3610    Texture2DArray = D3D_SRV_DIMENSION_TEXTURE2DARRAY.0,
3611    Texture2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS.0,
3612    Texture2DMSArray = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY.0,
3613    Texture3D = D3D_SRV_DIMENSION_TEXTURE3D.0,
3614    TextureCube = D3D_SRV_DIMENSION_TEXTURECUBE.0,
3615    TextureCubeArray = D3D_SRV_DIMENSION_TEXTURECUBEARRAY.0,
3616    BufferEx = D3D_SRV_DIMENSION_BUFFEREX.0,
3617}
3618
3619/// Identifies the stencil operations that can be performed during depth-stencil testing.
3620///
3621/// For more information: [`D3D12_STENCIL_OP enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_stencil_op)
3622#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3623#[repr(i32)]
3624pub enum StencilOp {
3625    /// Keep the existing stencil data.
3626    #[default]
3627    Keep = D3D12_STENCIL_OP_KEEP.0,
3628
3629    /// Set the stencil data to 0.
3630    Zero = D3D12_STENCIL_OP_ZERO.0,
3631
3632    /// Set the stencil data to the reference value set by calling [`GraphicsCommandList::om_set_stencil_ref`](crate::command_list::GraphicsCommandList::om_set_stencil_ref).
3633    Replace = D3D12_STENCIL_OP_REPLACE.0,
3634
3635    /// Increment the stencil value by 1, and clamp the result.
3636    IncrSat = D3D12_STENCIL_OP_INCR_SAT.0,
3637
3638    /// Decrement the stencil value by 1, and clamp the result.
3639    DecrSat = D3D12_STENCIL_OP_DECR_SAT.0,
3640
3641    /// Invert the stencil data.
3642    Invert = D3D12_STENCIL_OP_INVERT.0,
3643
3644    /// Increment the stencil value by 1, and wrap the result if necessary.
3645    Incr = D3D12_STENCIL_OP_INCR.0,
3646
3647    /// Decrement the stencil value by 1, and wrap the result if necessary.
3648    Decr = D3D12_STENCIL_OP_DECR.0,
3649}
3650
3651/// Options for handling pixels in a display surface.
3652///
3653/// For more information: [`DXGI_SWAP_EFFECT enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/dxgi/ne-dxgi-dxgi_swap_effect)
3654#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3655#[repr(i32)]
3656pub enum SwapEffect {
3657    /// Use this flag to specify the bit-block transfer (bitblt) model and to specify that DXGI discard the contents of the back buffer.
3658    #[default]
3659    Discard = DXGI_SWAP_EFFECT_DISCARD.0,
3660
3661    /// Use this flag to specify the bitblt model and to specify that DXGI persist the contents of the back buffer.
3662    Sequential = DXGI_SWAP_EFFECT_SEQUENTIAL.0,
3663
3664    /// Use this flag to specify the flip presentation model and to specify that DXGI persist the contents of the back buffer.
3665    FlipSequential = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL.0,
3666
3667    /// Use this flag to specify the flip presentation model and to specify that DXGI discard the contents of the back buffer after.
3668    FlipDiscard = DXGI_SWAP_EFFECT_FLIP_DISCARD.0,
3669}
3670
3671/// Values that represent various domains for the tessellator stage in the pipeline.
3672///
3673/// For more information: [`D3D_TESSELLATOR_DOMAIN enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_tessellator_domain)
3674#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3675#[repr(i32)]
3676pub enum TessellatorDomain {
3677    /// The tessellator domain is not defined.
3678    #[default]
3679    Undefined = D3D_TESSELLATOR_DOMAIN_UNDEFINED.0,
3680
3681    /// The domain is an isoline.
3682    Isoline = D3D_TESSELLATOR_DOMAIN_ISOLINE.0,
3683
3684    /// The domain is a triangle.
3685    Triangle = D3D_TESSELLATOR_DOMAIN_TRI.0,
3686
3687    /// The domain is a quadrilateral.
3688    Quad = D3D_TESSELLATOR_DOMAIN_QUAD.0,
3689}
3690
3691/// Values that represent various output primitives for the tessellator stage in the pipeline.
3692///
3693/// For more information: [`D3D_TESSELLATOR_OUTPUT_PRIMITIVE enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_tessellator_output_primitive)
3694#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3695#[repr(i32)]
3696pub enum TessellatorOutputPrimitive {
3697    /// The tessellator output primitive is not defined.
3698    #[default]
3699    Undefined = D3D_TESSELLATOR_OUTPUT_UNDEFINED.0,
3700
3701    /// Output a point primitive.
3702    Point = D3D_TESSELLATOR_OUTPUT_POINT.0,
3703
3704    /// Output a line primitive.
3705    Line = D3D_TESSELLATOR_OUTPUT_LINE.0,
3706
3707    /// Output a triangle primitive with clockwise winding.
3708    TriangleCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW.0,
3709
3710    /// Output a triangle primitive with counter-clockwise winding.
3711    TriangleCCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW.0,
3712}
3713
3714/// Values that represent various partitioning methods for the tessellator stage in the pipeline.
3715///
3716/// For more information: [`D3D_TESSELLATOR_PARTITIONING enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3dcommon/ne-d3dcommon-d3d_tessellator_partitioning)
3717#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3718#[repr(i32)]
3719pub enum TessellatorPartitioning {
3720    /// The tessellator partitioning method is not defined.
3721    #[default]
3722    Undefined = D3D_TESSELLATOR_PARTITIONING_UNDEFINED.0,
3723
3724    /// Use integer partitioning.
3725    Integer = D3D_TESSELLATOR_PARTITIONING_INTEGER.0,
3726
3727    /// Use power-of-two partitioning.
3728    Pow2 = D3D_TESSELLATOR_PARTITIONING_POW2.0,
3729
3730    /// Use fractional odd partitioning.
3731    FractionalOdd = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD.0,
3732
3733    /// Use fractional even partitioning.
3734    FractionalEven = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN.0,
3735}
3736
3737/// Specifies texture layout options.
3738///
3739/// For more information: [`D3D12_TEXTURE_LAYOUT enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_texture_layout)
3740#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3741#[repr(i32)]
3742pub enum TextureLayout {
3743    /// Indicates that the layout is unknown, and is likely adapter-dependent.
3744    ///
3745    /// During creation, the driver chooses the most efficient layout based on other resource properties, especially resource size and flags.
3746    ///
3747    /// Prefer this choice unless certain functionality is required from another texture layout.
3748    #[default]
3749    Unknown = D3D12_TEXTURE_LAYOUT_UNKNOWN.0,
3750
3751    /// Indicates that data for the texture is stored in row-major order (sometimes called "pitch-linear order").
3752    RowMajor = D3D12_TEXTURE_LAYOUT_ROW_MAJOR.0,
3753
3754    /// Indicates that the layout within 64KB tiles and tail mip packing is up to the driver.
3755    UndefinedSwizzle64Kb = D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE.0,
3756
3757    /// Indicates that a default texture uses the standardized swizzle pattern.
3758    StandardSwizzle64Kb = D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE.0,
3759}
3760
3761/// Identifies the tier level at which tiled resources are supported.
3762///
3763/// For more information: [`D3D12_TILED_RESOURCES_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_tiled_resources_tier)
3764#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3765#[repr(i32)]
3766pub enum TiledResourcesTier {
3767    /// Indicates that textures cannot be created with the [`TextureLayout::UndefinedSwizzle64Kb`] layout.
3768    #[default]
3769    NotSupported = D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED.0,
3770
3771    /// Indicates that 2D textures can be created with the [`TextureLayout::UndefinedSwizzle64Kb`] layout.
3772    /// Limitations exist for certain resource formats and properties.
3773    Tier1 = D3D12_TILED_RESOURCES_TIER_1.0,
3774
3775    /// Indicates that a superset of Tier_1 functionality is supported.
3776    Tier2 = D3D12_TILED_RESOURCES_TIER_2.0,
3777
3778    /// Indicates that a superset of Tier 2 is supported, with the addition that 3D textures (Volume Tiled Resources) are supported.
3779    Tier3 = D3D12_TILED_RESOURCES_TIER_3.0,
3780
3781    /// TBD
3782    Tier4 = D3D12_TILED_RESOURCES_TIER_4.0,
3783}
3784
3785/// Defines constants that specify a shading rate tier (for variable-rate shading, or VRS).
3786///
3787/// For more information: [`D3D12_VARIABLE_SHADING_RATE_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_variable_shading_rate_tier)
3788#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3789#[repr(i32)]
3790pub enum VariableShadingRateTier {
3791    ///Specifies that variable-rate shading is not supported.
3792    #[default]
3793    NotSupported = D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED.0,
3794
3795    /// Specifies that variable-rate shading tier 1 is supported.
3796    Tier1 = D3D12_VARIABLE_SHADING_RATE_TIER_1.0,
3797
3798    /// Specifies that variable-rate shading tier 2 is supported.
3799    Tier2 = D3D12_VARIABLE_SHADING_RATE_TIER_2.0,
3800}
3801
3802/// Indicates the tier level at which view instancing is supported.
3803///
3804/// For more information: [`D3D12_VIEW_INSTANCING_TIER enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_view_instancing_tier)
3805#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3806#[repr(i32)]
3807pub enum ViewInstancingTier {
3808    /// View instancing is not supported.
3809    #[default]
3810    NotSupported = D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED.0,
3811
3812    /// View instancing is supported by draw-call level looping only.
3813    Tier1 = D3D12_VIEW_INSTANCING_TIER_1.0,
3814
3815    /// View instancing is supported by draw-call level looping at worst, but the GPU can perform view instancing more efficiently in certain circumstances which are architecture-dependent.
3816    Tier2 = D3D12_VIEW_INSTANCING_TIER_2.0,
3817
3818    /// View instancing is supported and instancing begins with the first shader stage that references SV_ViewID or with rasterization
3819    /// if no shader stage references SV_ViewID. This means that redundant work is eliminated across view instances when it's not dependent on SV_ViewID.
3820    /// Before rasterization, work that doesn't directly depend on SV_ViewID is shared across all views; only work that depends on SV_ViewID is repeated for each view.
3821    Tier3 = D3D12_VIEW_INSTANCING_TIER_3.0,
3822}
3823
3824/// Defines constants that specify a level of support for WaveMMA (wave_matrix) operations.
3825///
3826/// For more information: [`D3D12_WAVE_MMA_TIER  enumeration`](https://learn.microsoft.com/en-us/windows/win32/api/d3d12/ne-d3d12-d3d12_wave_mma_tier)
3827#[derive(Clone, Copy, Debug, Default, FromRepr, Hash, PartialEq, Eq)]
3828#[repr(i32)]
3829pub enum WaveMmaTier {
3830    /// Specifies that WaveMMA (wave_matrix) operations are not supported.
3831    #[default]
3832    NotSupported = D3D12_WAVE_MMA_TIER_NOT_SUPPORTED.0,
3833
3834    /// Specifies that WaveMMA (wave_matrix) operations are supported.
3835    Tier1_0 = D3D12_WAVE_MMA_TIER_1_0.0,
3836}