Browse Source

Add the arm64 DLLs for WARP, Agility SDK and PIX

Panagiotis Christopoulos Charitos 7 months ago
parent
commit
ee42170326
43 changed files with 13847 additions and 12867 deletions
  1. 14 0
      .github/workflows/Windows.yml
  2. 14 6
      AnKi/Gr/CMakeLists.txt
  3. 1 1
      AnKi/Gr/D3D/D3DGrManager.cpp
  4. 49 0
      ThirdParty/AgilitySdk/README.md
  5. BIN
      ThirdParty/AgilitySdk/bin/arm64/D3D12Core.dll
  6. BIN
      ThirdParty/AgilitySdk/bin/arm64/D3D12Core.pdb
  7. BIN
      ThirdParty/AgilitySdk/bin/arm64/d3d12SDKLayers.dll
  8. BIN
      ThirdParty/AgilitySdk/bin/arm64/d3d12SDKLayers.pdb
  9. BIN
      ThirdParty/AgilitySdk/bin/arm64/d3dconfig.exe
  10. BIN
      ThirdParty/AgilitySdk/bin/arm64/d3dconfig.pdb
  11. BIN
      ThirdParty/AgilitySdk/bin/x64/D3D12Core.dll
  12. BIN
      ThirdParty/AgilitySdk/bin/x64/D3D12Core.pdb
  13. BIN
      ThirdParty/AgilitySdk/bin/x64/d3d12SDKLayers.dll
  14. BIN
      ThirdParty/AgilitySdk/bin/x64/d3d12SDKLayers.pdb
  15. BIN
      ThirdParty/AgilitySdk/bin/x64/d3dconfig.exe
  16. BIN
      ThirdParty/AgilitySdk/bin/x64/d3dconfig.pdb
  17. 469 43
      ThirdParty/AgilitySdk/include/d3d12.h
  18. 6637 6558
      ThirdParty/AgilitySdk/include/d3d12.idl
  19. 83 3
      ThirdParty/AgilitySdk/include/d3d12compatibility.h
  20. 100 96
      ThirdParty/AgilitySdk/include/d3d12compatibility.idl
  21. 15 2
      ThirdParty/AgilitySdk/include/d3d12sdklayers.h
  22. 1856 1843
      ThirdParty/AgilitySdk/include/d3d12sdklayers.idl
  23. 4 1
      ThirdParty/AgilitySdk/include/d3d12video.h
  24. 3172 3168
      ThirdParty/AgilitySdk/include/d3d12video.idl
  25. 991 991
      ThirdParty/AgilitySdk/include/d3dcommon.idl
  26. 1 1
      ThirdParty/AgilitySdk/include/d3dx12/d3dx12_core.h
  27. 4 0
      ThirdParty/AgilitySdk/include/d3dx12/d3dx12_property_format_table.h
  28. 4 1
      ThirdParty/AgilitySdk/include/d3dx12/d3dx12_render_pass.h
  29. 2 1
      ThirdParty/AgilitySdk/include/d3dx12/d3dx12_resource_helpers.h
  30. 56 0
      ThirdParty/AgilitySdk/include/d3dx12/d3dx12_state_object.h
  31. 139 139
      ThirdParty/AgilitySdk/include/dxgiformat.idl
  32. 168 13
      ThirdParty/AgilitySdk/src/d3dx12/d3dx12_property_format_table.cpp
  33. BIN
      ThirdParty/Pix/bin/ARM64/WinPixEventRuntime.dll
  34. BIN
      ThirdParty/Pix/bin/ARM64/WinPixEventRuntime.lib
  35. BIN
      ThirdParty/Pix/bin/ARM64/WinPixEventRuntime_UAP.dll
  36. BIN
      ThirdParty/Pix/bin/ARM64/WinPixEventRuntime_UAP.lib
  37. BIN
      ThirdParty/Pix/bin/x64/WinPixEventRuntime_UAP.dll
  38. BIN
      ThirdParty/Pix/bin/x64/WinPixEventRuntime_UAP.lib
  39. 68 0
      ThirdParty/Warp/README.md
  40. BIN
      ThirdParty/Warp/bin/arm64/d3d10warp.dll
  41. BIN
      ThirdParty/Warp/bin/arm64/d3d10warp.pdb
  42. BIN
      ThirdParty/Warp/bin/x64/d3d10warp.dll
  43. BIN
      ThirdParty/Warp/bin/x64/d3d10warp.pdb

+ 14 - 0
.github/workflows/Windows.yml

@@ -49,6 +49,20 @@ jobs:
     - name: Build
       run: cmake --build ${{github.workspace}}/build --config Debug
 
+  Debug_arm64_D3D:
+    name: "Debug_arm64_D3D"
+    runs-on: windows-11-arm
+
+    steps:
+    - name: Clone
+      uses: actions/checkout@v3
+
+    - name: Configure CMake
+      run: cmake -B ${{github.workspace}}/build -DANKI_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DANKI_EXTRA_CHECKS=ON -DANKI_GR_BACKEND=DIRECTX
+
+    - name: Build
+      run: cmake --build ${{github.workspace}}/build --config Debug
+
   Release_x64_VK:
     name: "Release_x64_VK"
     runs-on: windows-latest

+ 14 - 6
AnKi/Gr/CMakeLists.txt

@@ -35,6 +35,14 @@ set(backend_headers
 	BackendCommon/Format.def.h
 	Utils/SegregatedListsGpuMemoryPool.h)
 
+if(ARM)
+	set(cpu_arch "ARM64")
+elseif(X86)
+	set(cpu_arch "x64")
+else()
+	message(FATAL_ERROR "Unhandled case")
+endif()
+
 if(VULKAN)
 	file(GLOB_RECURSE vksources Vulkan/*.cpp)
 	file(GLOB_RECURSE vkseaders Vulkan/*.h)
@@ -48,7 +56,7 @@ elseif(DIRECTX)
 	set(backend_sources  ${backend_sources} ${dxsources})
 	set(backend_headers ${backend_headers} ${dxheaders})
 
-	find_library(PIX_LIB WinPixEventRuntime HINTS "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Pix/bin/x64")
+	find_library(PIX_LIB WinPixEventRuntime HINTS "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Pix/bin/${cpu_arch}")
 
 	set(extra_libs ${extra_libs} d3d12 dxgi dxguid ${PIX_LIB}) # dxguid for some debug layer stuff
 
@@ -102,11 +110,11 @@ endif()
 
 # Copy DX DLLs next to the binaries
 if(DIRECTX)
-	file(GLOB FILES_TO_COPY "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/AgilitySdk/bin/x64/*.dll")
-	file(GLOB FILES_TO_COPY2 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/AgilitySdk/bin/x64/*.pdb")
-	file(GLOB FILES_TO_COPY3 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Pix/bin/x64/*.dll")
-	file(GLOB FILES_TO_COPY4 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Warp/bin/x64/*.dll")
-	file(GLOB FILES_TO_COPY5 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Warp/bin/x64/*.pdb")
+	file(GLOB FILES_TO_COPY "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/AgilitySdk/bin/${cpu_arch}/*.dll")
+	file(GLOB FILES_TO_COPY2 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/AgilitySdk/bin/${cpu_arch}/*.pdb")
+	file(GLOB FILES_TO_COPY3 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Pix/bin/${cpu_arch}/*.dll")
+	file(GLOB FILES_TO_COPY4 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Warp/bin/${cpu_arch}/*.dll")
+	file(GLOB FILES_TO_COPY5 "${CMAKE_CURRENT_SOURCE_DIR}/../../ThirdParty/Warp/bin/${cpu_arch}/*.pdb")
 
 	list(APPEND FILES_TO_COPY ${FILES_TO_COPY2} ${FILES_TO_COPY3} ${FILES_TO_COPY4} ${FILES_TO_COPY5})
 

+ 1 - 1
AnKi/Gr/D3D/D3DGrManager.cpp

@@ -29,7 +29,7 @@
 
 // Use the Agility SDK
 extern "C" {
-__declspec(dllexport) extern const UINT D3D12SDKVersion = 614; // Number taken from the download page
+__declspec(dllexport) extern const UINT D3D12SDKVersion = 615; // Number taken from the download page
 __declspec(dllexport) extern const char* D3D12SDKPath = ".\\"; // The D3D12Core.dll should be in the same dir as the .exe
 }
 

+ 49 - 0
ThirdParty/AgilitySdk/README.md

@@ -12,10 +12,59 @@ The included licenses apply to the following files:
 - **LICENSE-CODE.txt** : applies to all files under `build/native/include/`
 
 ## Changelog
+### Version 1.615.1
+- Fix placed resource initialization validation bug related to plane validation
+- Fix a bug where GBV patching will crash when initializing if the caller didn't request a debug info parser
+
+### Version 1.615.0
+- D3D12 officially supports applications opting to bypass shader hash validation.
+
+### Version 1.715.0
+- Preview of mesh nodes in work graphs
+
+### Version 1.714.0
+- Preview release of DirectSR
+  - Supports both native and built-in Super Resolution techniques ("variants")
 
 ### Version 1.614.0
 - Enabled R9G9B9E5_SHAREDEXP format for Render Target and Unordered Access Views
 
+### Version 1.613.3
+
+- Same as 1.613.2, with minor updates shown at the end of this list:
+- Work Graphs
+- Generic Programs in State objects
+- Shader Model 6.8
+  - Work Graphs support
+  - Start Vertex/Instance Location
+  - Wave Size Range
+  - Expanded Comparison Sampling
+- GPU Upload Heaps (requires preview or future OS, or current OS in developer mode)
+- Incrementing Constants in ExecuteIndirect
+- Minor updates for .3:
+   - Honor root signature associations added to export in collections when the export is imported into generic program in an executable state object.
+   - Propagate root signatures to exports that have bindings and no root signatures within the scope of a generic program, like what happens with PSOs.
+   - Other generic programs related bug fixes, additional validation and optimizations.
+   - For state objects, minor fixes to subobject association logic in edge cases involving collections to more precisely match spec wording.
+   - GPU Upload Heaps can now be used with a current OS in developer mode, in addition to preview and future OS that don't require developer mode.
+
+### Version 1.613.2
+
+- Same as 1.613.1, with minor updates shown at the end of this list:
+- Work Graphs
+- Generic Programs in State objects
+- Shader Model 6.8
+  - Work Graphs support
+  - Start Vertex/Instance Location
+  - Wave Size Range
+  - Expanded Comparison Sampling
+- GPU Upload Heaps (requires preview or future OS)
+- Incrementing Constants in ExecuteIndirect
+- Minor updates for .2:
+   - Close validation hole: Prevent use of features in incompatible state object types, such as defining generic program components (like rast state) in a raytracing pipeline.
+   - Debug layer fixes around lifetime management of program identifiers (e.g. the handles for the new generic programs)
+   - ExecuteIndirect validation was too strict: buffer size only needs to be big enough for the number of commands * stride, _minus the unused space at end of last command_
+
 ### Version 1.613.1
 
 - Same as 1.613.0, with minor updates shown at the end of this list:

BIN
ThirdParty/AgilitySdk/bin/arm64/D3D12Core.dll


BIN
ThirdParty/AgilitySdk/bin/arm64/D3D12Core.pdb


BIN
ThirdParty/AgilitySdk/bin/arm64/d3d12SDKLayers.dll


BIN
ThirdParty/AgilitySdk/bin/arm64/d3d12SDKLayers.pdb


BIN
ThirdParty/AgilitySdk/bin/arm64/d3dconfig.exe


BIN
ThirdParty/AgilitySdk/bin/arm64/d3dconfig.pdb


BIN
ThirdParty/AgilitySdk/bin/x64/D3D12Core.dll


BIN
ThirdParty/AgilitySdk/bin/x64/D3D12Core.pdb


BIN
ThirdParty/AgilitySdk/bin/x64/d3d12SDKLayers.dll


BIN
ThirdParty/AgilitySdk/bin/x64/d3d12SDKLayers.pdb


BIN
ThirdParty/AgilitySdk/bin/x64/d3dconfig.exe


BIN
ThirdParty/AgilitySdk/bin/x64/d3dconfig.pdb


+ 469 - 43
ThirdParty/AgilitySdk/include/d3d12.h

@@ -486,6 +486,27 @@ typedef interface ID3D12Tools ID3D12Tools;
 #endif 	/* __ID3D12Tools_FWD_DEFINED__ */
 
 
+#ifndef __ID3D12Tools1_FWD_DEFINED__
+#define __ID3D12Tools1_FWD_DEFINED__
+typedef interface ID3D12Tools1 ID3D12Tools1;
+
+#endif 	/* __ID3D12Tools1_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12PageableTools_FWD_DEFINED__
+#define __ID3D12PageableTools_FWD_DEFINED__
+typedef interface ID3D12PageableTools ID3D12PageableTools;
+
+#endif 	/* __ID3D12PageableTools_FWD_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools_FWD_DEFINED__
+#define __ID3D12DeviceTools_FWD_DEFINED__
+typedef interface ID3D12DeviceTools ID3D12DeviceTools;
+
+#endif 	/* __ID3D12DeviceTools_FWD_DEFINED__ */
+
+
 #ifndef __ID3D12SDKConfiguration_FWD_DEFINED__
 #define __ID3D12SDKConfiguration_FWD_DEFINED__
 typedef interface ID3D12SDKConfiguration ID3D12SDKConfiguration;
@@ -563,6 +584,13 @@ typedef interface ID3D12GraphicsCommandList10 ID3D12GraphicsCommandList10;
 #endif 	/* __ID3D12GraphicsCommandList10_FWD_DEFINED__ */
 
 
+#ifndef __ID3D12DSRDeviceFactory_FWD_DEFINED__
+#define __ID3D12DSRDeviceFactory_FWD_DEFINED__
+typedef interface ID3D12DSRDeviceFactory ID3D12DSRDeviceFactory;
+
+#endif 	/* __ID3D12DSRDeviceFactory_FWD_DEFINED__ */
+
+
 #ifndef __ID3D12GBVDiagnostics_FWD_DEFINED__
 #define __ID3D12GBVDiagnostics_FWD_DEFINED__
 typedef interface ID3D12GBVDiagnostics ID3D12GBVDiagnostics;
@@ -1102,7 +1130,7 @@ extern "C"{
 
 #define	D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT	( 15 )
 
-#define	D3D12_PREVIEW_SDK_VERSION	( 714 )
+#define	D3D12_PREVIEW_SDK_VERSION	( 716 )
 
 #define	D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT	( 16 )
 
@@ -1235,7 +1263,7 @@ extern "C"{
 
 #define	D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT	( 2 )
 
-#define	D3D12_SDK_VERSION	( 614 )
+#define	D3D12_SDK_VERSION	( 615 )
 
 #define	D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES	( 32 )
 
@@ -1521,6 +1549,19 @@ typedef struct D3D12_BOX
     UINT back;
     } 	D3D12_BOX;
 
+#ifdef __midl
+#ifndef LUID_DEFINED
+#define LUID_DEFINED 1
+typedef struct __LUID
+    {
+    DWORD LowPart;
+    LONG HighPart;
+    } 	LUID;
+
+typedef struct __LUID *PLUID;
+
+#endif
+#endif
 typedef 
 enum D3D12_COMPARISON_FUNC
     {
@@ -2311,7 +2352,8 @@ enum D3D12_FEATURE
         D3D12_FEATURE_PREDICATION	= 50,
         D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO	= 51,
         D3D12_FEATURE_HARDWARE_COPY	= 52,
-        D3D12_FEATURE_D3D12_OPTIONS21	= 53
+        D3D12_FEATURE_D3D12_OPTIONS21	= 53,
+        D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED	= 57
     } 	D3D12_FEATURE;
 
 typedef 
@@ -2882,6 +2924,11 @@ typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
     _Out_  BOOL Supported;
     } 	D3D12_FEATURE_DATA_HARDWARE_COPY;
 
+typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
+    {
+    _Out_  BOOL Supported;
+    } 	D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
+
 typedef struct D3D12_RESOURCE_ALLOCATION_INFO
     {
     UINT64 SizeInBytes;
@@ -4375,6 +4422,20 @@ HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
                                      _In_ REFIID pRootSignatureDeserializerInterface,
                                      _Out_ void** ppRootSignatureDeserializer);
 
+typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(
+                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+                                     _In_ SIZE_T SrcDataSizeInBytes,
+                                     _In_ LPCWSTR RootSignatureSubobjectName,
+                                     _In_ REFIID pRootSignatureDeserializerInterface,
+                                     _Out_ void** ppRootSignatureDeserializer);
+
+HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
+                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
+                                     _In_ SIZE_T SrcDataSizeInBytes,
+                                     _In_opt_ LPCWSTR RootSignatureSubobjectName,
+                                     _In_ REFIID pRootSignatureDeserializerInterface,
+                                     _Out_ void** ppRootSignatureDeserializer);
+
 typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
     {
     SIZE_T ptr;
@@ -8898,27 +8959,6 @@ EXTERN_C const IID IID_ID3D12CommandQueue;
 #endif 	/* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12_0000_0020 */
-/* [local] */ 
-
-#ifdef __midl
-#ifndef LUID_DEFINED
-#define LUID_DEFINED 1
-typedef struct __LUID
-    {
-    DWORD LowPart;
-    LONG HighPart;
-    } 	LUID;
-
-typedef struct __LUID *PLUID;
-
-#endif
-#endif
-
-
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0020_v0_0_s_ifspec;
-
 #ifndef __ID3D12Device_INTERFACE_DEFINED__
 #define __ID3D12Device_INTERFACE_DEFINED__
 
@@ -15634,7 +15674,8 @@ enum D3D12_AUTO_BREADCRUMB_OP
         D3D12_AUTO_BREADCRUMB_OP_BARRIER	= 45,
         D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST	= 46,
         D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH	= 47,
-        D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM	= 48
+        D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM	= 48,
+        D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2	= 52
     } 	D3D12_AUTO_BREADCRUMB_OP;
 
 typedef struct D3D12_AUTO_BREADCRUMB_NODE
@@ -28635,7 +28676,283 @@ EXTERN_C const IID IID_ID3D12Tools;
 #endif 	/* __ID3D12Tools_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12_0000_0062 */
+#ifndef __ID3D12Tools1_INTERFACE_DEFINED__
+#define __ID3D12Tools1_INTERFACE_DEFINED__
+
+/* interface ID3D12Tools1 */
+/* [unique][local][object][uuid] */ 
+
+
+EXTERN_C const IID IID_ID3D12Tools1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("e4fbc019-dd3c-43e1-8f32-7f649575f0a0")
+    ID3D12Tools1 : public ID3D12Tools
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ReserveGPUVARangesAtCreate( 
+            _In_reads_(uiNumRanges)  D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+            _In_  UINT uiNumRanges) = 0;
+        
+        virtual void STDMETHODCALLTYPE ClearReservedGPUVARangesList( void) = 0;
+        
+    };
+    
+    
+#else 	/* C style interface */
+
+    typedef struct ID3D12Tools1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ID3D12Tools1 * This,
+            REFIID riid,
+            _COM_Outptr_  void **ppvObject);
+        
+        DECLSPEC_XFGVIRT(IUnknown, AddRef)
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ID3D12Tools1 * This);
+        
+        DECLSPEC_XFGVIRT(IUnknown, Release)
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ID3D12Tools1 * This);
+        
+        DECLSPEC_XFGVIRT(ID3D12Tools, EnableShaderInstrumentation)
+        void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )( 
+            ID3D12Tools1 * This,
+            BOOL bEnable);
+        
+        DECLSPEC_XFGVIRT(ID3D12Tools, ShaderInstrumentationEnabled)
+        BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )( 
+            ID3D12Tools1 * This);
+        
+        DECLSPEC_XFGVIRT(ID3D12Tools1, ReserveGPUVARangesAtCreate)
+        HRESULT ( STDMETHODCALLTYPE *ReserveGPUVARangesAtCreate )( 
+            ID3D12Tools1 * This,
+            _In_reads_(uiNumRanges)  D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pRanges,
+            _In_  UINT uiNumRanges);
+        
+        DECLSPEC_XFGVIRT(ID3D12Tools1, ClearReservedGPUVARangesList)
+        void ( STDMETHODCALLTYPE *ClearReservedGPUVARangesList )( 
+            ID3D12Tools1 * This);
+        
+        END_INTERFACE
+    } ID3D12Tools1Vtbl;
+
+    interface ID3D12Tools1
+    {
+        CONST_VTBL struct ID3D12Tools1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ID3D12Tools1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ID3D12Tools1_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ID3D12Tools1_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ID3D12Tools1_EnableShaderInstrumentation(This,bEnable)	\
+    ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) ) 
+
+#define ID3D12Tools1_ShaderInstrumentationEnabled(This)	\
+    ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) ) 
+
+
+#define ID3D12Tools1_ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges)	\
+    ( (This)->lpVtbl -> ReserveGPUVARangesAtCreate(This,pRanges,uiNumRanges) ) 
+
+#define ID3D12Tools1_ClearReservedGPUVARangesList(This)	\
+    ( (This)->lpVtbl -> ClearReservedGPUVARangesList(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __ID3D12Tools1_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12PageableTools_INTERFACE_DEFINED__
+#define __ID3D12PageableTools_INTERFACE_DEFINED__
+
+/* interface ID3D12PageableTools */
+/* [unique][local][object][uuid] */ 
+
+
+EXTERN_C const IID IID_ID3D12PageableTools;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d")
+    ID3D12PageableTools : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetAllocation( 
+            _Inout_  D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation) = 0;
+        
+    };
+    
+    
+#else 	/* C style interface */
+
+    typedef struct ID3D12PageableToolsVtbl
+    {
+        BEGIN_INTERFACE
+        
+        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ID3D12PageableTools * This,
+            REFIID riid,
+            _COM_Outptr_  void **ppvObject);
+        
+        DECLSPEC_XFGVIRT(IUnknown, AddRef)
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ID3D12PageableTools * This);
+        
+        DECLSPEC_XFGVIRT(IUnknown, Release)
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ID3D12PageableTools * This);
+        
+        DECLSPEC_XFGVIRT(ID3D12PageableTools, GetAllocation)
+        HRESULT ( STDMETHODCALLTYPE *GetAllocation )( 
+            ID3D12PageableTools * This,
+            _Inout_  D3D12_GPU_VIRTUAL_ADDRESS_RANGE *pAllocation);
+        
+        END_INTERFACE
+    } ID3D12PageableToolsVtbl;
+
+    interface ID3D12PageableTools
+    {
+        CONST_VTBL struct ID3D12PageableToolsVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ID3D12PageableTools_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ID3D12PageableTools_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ID3D12PageableTools_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ID3D12PageableTools_GetAllocation(This,pAllocation)	\
+    ( (This)->lpVtbl -> GetAllocation(This,pAllocation) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __ID3D12PageableTools_INTERFACE_DEFINED__ */
+
+
+#ifndef __ID3D12DeviceTools_INTERFACE_DEFINED__
+#define __ID3D12DeviceTools_INTERFACE_DEFINED__
+
+/* interface ID3D12DeviceTools */
+/* [unique][local][object][uuid] */ 
+
+
+EXTERN_C const IID IID_ID3D12DeviceTools;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("2ea68e9c-19c3-4e47-a109-6cdadff0aca9")
+    ID3D12DeviceTools : public IUnknown
+    {
+    public:
+        virtual void STDMETHODCALLTYPE SetNextAllocationAddress( 
+            _In_  D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress) = 0;
+        
+    };
+    
+    
+#else 	/* C style interface */
+
+    typedef struct ID3D12DeviceToolsVtbl
+    {
+        BEGIN_INTERFACE
+        
+        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ID3D12DeviceTools * This,
+            REFIID riid,
+            _COM_Outptr_  void **ppvObject);
+        
+        DECLSPEC_XFGVIRT(IUnknown, AddRef)
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ID3D12DeviceTools * This);
+        
+        DECLSPEC_XFGVIRT(IUnknown, Release)
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ID3D12DeviceTools * This);
+        
+        DECLSPEC_XFGVIRT(ID3D12DeviceTools, SetNextAllocationAddress)
+        void ( STDMETHODCALLTYPE *SetNextAllocationAddress )( 
+            ID3D12DeviceTools * This,
+            _In_  D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
+        
+        END_INTERFACE
+    } ID3D12DeviceToolsVtbl;
+
+    interface ID3D12DeviceTools
+    {
+        CONST_VTBL struct ID3D12DeviceToolsVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DeviceTools_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ID3D12DeviceTools_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ID3D12DeviceTools_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ID3D12DeviceTools_SetNextAllocationAddress(This,nextAllocationVirtualAddress)	\
+    ( (This)->lpVtbl -> SetNextAllocationAddress(This,nextAllocationVirtualAddress) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __ID3D12DeviceTools_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12_0000_0065 */
 /* [local] */ 
 
 typedef struct D3D12_SUBRESOURCE_DATA
@@ -28753,6 +29070,21 @@ static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d
     { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }
 };
 // --------------------------------------------------------------------------------------------------------------------------------
+// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS
+//
+// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS, 
+// driver support is still required for this feature.
+//
+// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.
+//
+// --------------------------------------------------------------------------------------------------------------------------------
+static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */
+    0x45dc51f3,
+    0x767f,
+    0x4588,
+    { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }
+};
+// --------------------------------------------------------------------------------------------------------------------------------
 // D3D12GetInterface
 //
 // Retrieve Global D3D12 Interface.
@@ -28763,6 +29095,7 @@ DEFINE_GUID(CLSID_D3D12Tools,                        0xe38216b1, 0x3c8c, 0x4833,
 DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData,    0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);
 DEFINE_GUID(CLSID_D3D12SDKConfiguration,             0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);
 DEFINE_GUID(CLSID_D3D12DeviceFactory,                0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);
+DEFINE_GUID(CLSID_D3D12DSRDeviceFactory,             0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);
 
 typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );
 
@@ -28770,8 +29103,8 @@ HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_O
 
 
 
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0062_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0062_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0065_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0065_v0_0_s_ifspec;
 
 #ifndef __ID3D12SDKConfiguration_INTERFACE_DEFINED__
 #define __ID3D12SDKConfiguration_INTERFACE_DEFINED__
@@ -28966,7 +29299,7 @@ EXTERN_C const IID IID_ID3D12SDKConfiguration1;
 #endif 	/* __ID3D12SDKConfiguration1_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12_0000_0064 */
+/* interface __MIDL_itf_d3d12_0000_0067 */
 /* [local] */ 
 
 typedef 
@@ -28981,8 +29314,8 @@ enum D3D12_DEVICE_FACTORY_FLAGS
 DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )
 
 
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0064_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0064_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0067_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0067_v0_0_s_ifspec;
 
 #ifndef __ID3D12DeviceFactory_INTERFACE_DEFINED__
 #define __ID3D12DeviceFactory_INTERFACE_DEFINED__
@@ -29143,7 +29476,7 @@ EXTERN_C const IID IID_ID3D12DeviceFactory;
 #endif 	/* __ID3D12DeviceFactory_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12_0000_0065 */
+/* interface __MIDL_itf_d3d12_0000_0068 */
 /* [local] */ 
 
 typedef 
@@ -29174,8 +29507,8 @@ typedef struct D3D12_DEVICE_CONFIGURATION_DESC
 
 
 
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0065_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0065_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0068_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0068_v0_0_s_ifspec;
 
 #ifndef __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
 #define __ID3D12DeviceConfiguration_INTERFACE_DEFINED__
@@ -29463,7 +29796,7 @@ EXTERN_C const IID IID_ID3D12DeviceConfiguration1;
 #endif 	/* __ID3D12DeviceConfiguration1_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12_0000_0067 */
+/* interface __MIDL_itf_d3d12_0000_0070 */
 /* [local] */ 
 
 typedef 
@@ -29503,8 +29836,8 @@ enum D3D12_SHADING_RATE_COMBINER
 
 
 
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0067_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0067_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0070_v0_0_s_ifspec;
 
 #ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
 #define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
@@ -30339,7 +30672,7 @@ EXTERN_C const IID IID_ID3D12GraphicsCommandList5;
 #endif 	/* __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12_0000_0068 */
+/* interface __MIDL_itf_d3d12_0000_0071 */
 /* [local] */ 
 
 typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
@@ -30351,8 +30684,8 @@ typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
 
 
 
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0068_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0068_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0071_v0_0_s_ifspec;
 
 #ifndef __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
 #define __ID3D12GraphicsCommandList6_INTERFACE_DEFINED__
@@ -34691,6 +35024,95 @@ EXTERN_C const IID IID_ID3D12GraphicsCommandList10;
 #endif 	/* __ID3D12GraphicsCommandList10_INTERFACE_DEFINED__ */
 
 
+#ifndef __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
+#define __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__
+
+/* interface ID3D12DSRDeviceFactory */
+/* [unique][local][object][uuid] */ 
+
+
+EXTERN_C const IID IID_ID3D12DSRDeviceFactory;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("f343d1a0-afe3-439f-b13d-cd87a43b70ca")
+    ID3D12DSRDeviceFactory : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE CreateDSRDevice( 
+            ID3D12Device *pD3D12Device,
+            UINT NodeMask,
+            REFIID riid,
+            _COM_Outptr_  void **ppvDSRDevice) = 0;
+        
+    };
+    
+    
+#else 	/* C style interface */
+
+    typedef struct ID3D12DSRDeviceFactoryVtbl
+    {
+        BEGIN_INTERFACE
+        
+        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ID3D12DSRDeviceFactory * This,
+            REFIID riid,
+            _COM_Outptr_  void **ppvObject);
+        
+        DECLSPEC_XFGVIRT(IUnknown, AddRef)
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ID3D12DSRDeviceFactory * This);
+        
+        DECLSPEC_XFGVIRT(IUnknown, Release)
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ID3D12DSRDeviceFactory * This);
+        
+        DECLSPEC_XFGVIRT(ID3D12DSRDeviceFactory, CreateDSRDevice)
+        HRESULT ( STDMETHODCALLTYPE *CreateDSRDevice )( 
+            ID3D12DSRDeviceFactory * This,
+            ID3D12Device *pD3D12Device,
+            UINT NodeMask,
+            REFIID riid,
+            _COM_Outptr_  void **ppvDSRDevice);
+        
+        END_INTERFACE
+    } ID3D12DSRDeviceFactoryVtbl;
+
+    interface ID3D12DSRDeviceFactory
+    {
+        CONST_VTBL struct ID3D12DSRDeviceFactoryVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ID3D12DSRDeviceFactory_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ID3D12DSRDeviceFactory_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ID3D12DSRDeviceFactory_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ID3D12DSRDeviceFactory_CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice)	\
+    ( (This)->lpVtbl -> CreateDSRDevice(This,pD3D12Device,NodeMask,riid,ppvDSRDevice) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __ID3D12DSRDeviceFactory_INTERFACE_DEFINED__ */
+
+
 #ifndef __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
 #define __ID3D12GBVDiagnostics_INTERFACE_DEFINED__
 
@@ -34841,7 +35263,7 @@ EXTERN_C const IID IID_ID3D12GBVDiagnostics;
 #endif 	/* __ID3D12GBVDiagnostics_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12_0000_0074 */
+/* interface __MIDL_itf_d3d12_0000_0078 */
 /* [local] */ 
 
 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
@@ -34908,6 +35330,9 @@ DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f
 DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);
 DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);
 DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
+DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);
+DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);
+DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);
 DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);
 DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);
 DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);
@@ -34919,11 +35344,12 @@ DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x
 DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);
 DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);
 DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);
+DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);
 DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);
 
 
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0074_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0078_v0_0_s_ifspec;
 
 /* Additional Prototypes for ALL interfaces */
 

+ 6637 - 6558
ThirdParty/AgilitySdk/include/d3d12.idl

@@ -1,6558 +1,6637 @@
-/*-------------------------------------------------------------------------------------
- *
- * Copyright (c) Microsoft Corporation
- * Licensed under the MIT license
- *
- *-------------------------------------------------------------------------------------*/
-import "oaidl.idl";
-import "ocidl.idl";
-
-import "dxgicommon.idl";
-import "dxgiformat.idl";
-
-import "d3dcommon.idl";
-
-cpp_quote("#include <winapifamily.h>")
-
-#pragma region App Family
-cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
-
-// NOTE: The following constants are generated from the D3D12 hardware spec.  Do not edit these values directly.
-cpp_quote( "#ifndef _D3D12_CONSTANTS" )
-cpp_quote( "#define _D3D12_CONSTANTS" )
-const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
-const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
-const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
-const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
-const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
-const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
-const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
-const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
-const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
-const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
-const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
-const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
-const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
-const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
-const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
-const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
-const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
-const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
-const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
-const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
-const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
-const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
-const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
-const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
-const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
-const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
-const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
-const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
-const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
-const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
-const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
-const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
-const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
-const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
-const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
-const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
-const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
-const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
-const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
-const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
-const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
-const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
-const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
-const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
-const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
-const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
-const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
-const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
-const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
-const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
-const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
-const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
-const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
-const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
-const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
-const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
-const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
-const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
-const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
-const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
-const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
-const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
-const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
-const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
-const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
-const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
-const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
-const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
-const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
-const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
-const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
-const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
-const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
-const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
-const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
-const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
-const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
-const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
-const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
-const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
-const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
-const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
-const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
-const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
-const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
-const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
-const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
-const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
-const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
-const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
-const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
-const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
-cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA	( 1.0f )" )
-cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_BLUE	( 1.0f )" )
-cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_GREEN	( 1.0f )" )
-cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_RED	( 1.0f )" )
-cpp_quote( "#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT	( 0.0f )" )
-const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
-cpp_quote( "#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP	( 0.0f )" )
-const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
-cpp_quote( "#define D3D12_DEFAULT_MIP_LOD_BIAS	( 0.0f )" )
-const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
-const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
-const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
-const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
-const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
-const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
-const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
-const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
-cpp_quote( "#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS	( 0.0f )" )
-const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
-const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
-const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
-const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
-const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
-cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH	( 0.0f )" )
-cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH	( 0.0f )" )
-const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
-const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
-const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
-const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
-const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
-const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
-const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
-const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
-const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
-const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
-const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
-const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
-const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
-const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
-const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
-const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
-const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
-const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
-cpp_quote( "#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP	( 0.6 )" )
-cpp_quote( "#define D3D12_FLOAT32_MAX	( 3.402823466e+38f )" )
-cpp_quote( "#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP	( 0.6f )" )
-cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR	( 2.4f )" )
-cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR	( 1.0f )" )
-cpp_quote( "#define D3D12_FLOAT_TO_SRGB_OFFSET	( 0.055f )" )
-cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_1	( 12.92f )" )
-cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_2	( 1.055f )" )
-cpp_quote( "#define D3D12_FLOAT_TO_SRGB_THRESHOLD	( 0.0031308f )" )
-cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MAX_INPUT	( 2147483647.999f )" )
-cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MIN_INPUT	( -2147483648.999f )" )
-cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MAX_INPUT	( 4294967295.999f )" )
-cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MIN_INPUT	( 0.0f )" )
-const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
-const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
-const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
-const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
-const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
-const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
-const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
-const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
-const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
-const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
-const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
-const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
-const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
-const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
-const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
-const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
-const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
-const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
-const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
-const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
-const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
-const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
-const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
-const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
-const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
-const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
-const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
-const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
-cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND	( 1.0f )" )
-cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND	( 64.0f )" )
-const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
-const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
-const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
-const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
-const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
-const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
-const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
-const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
-const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
-const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
-const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
-const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
-const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
-const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
-const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
-const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
-const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
-const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
-const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
-const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
-const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
-const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
-const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
-cpp_quote( "#define D3D12_LINEAR_GAMMA	( 1.0f )" )
-const UINT D3D12_MAJOR_VERSION = 12;
-cpp_quote( "#define D3D12_MAX_BORDER_COLOR_COMPONENT	( 1.0f )" )
-cpp_quote( "#define D3D12_MAX_DEPTH	( 1.0f )" )
-const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
-const UINT D3D12_MAX_MAXANISOTROPY = 16;
-const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
-cpp_quote( "#define D3D12_MAX_POSITION_VALUE	( 3.402823466e+34f )" )
-const UINT D3D12_MAX_ROOT_COST = 64;
-const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
-const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
-const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
-const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
-const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
-const UINT D3D12_MINOR_VERSION = 0;
-cpp_quote( "#define D3D12_MIN_BORDER_COLOR_COMPONENT	( 0.0f )" )
-cpp_quote( "#define D3D12_MIN_DEPTH	( 0.0f )" )
-const UINT D3D12_MIN_MAXANISOTROPY = 0;
-cpp_quote( "#define D3D12_MIP_LOD_BIAS_MAX	( 15.99f )" )
-cpp_quote( "#define D3D12_MIP_LOD_BIAS_MIN	( -16.0f )" )
-const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
-const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
-cpp_quote( "#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH	( 1.4f )" )
-const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
-const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
-const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
-const UINT D3D12_PACKED_TILE = 0xffffffff;
-const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
-const UINT D3D12_PREVIEW_SDK_VERSION = 714;
-const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
-const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
-const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
-const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
-const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
-const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
-const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
-const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
-const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
-const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
-cpp_quote( "#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT	( 0.0f )" )
-const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
-const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
-const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
-const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
-const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
-cpp_quote( "#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT	( 0.5f )" )
-const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
-const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
-const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
-const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
-const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
-const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
-const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
-const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
-const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
-const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
-const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
-const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
-const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
-const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
-const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
-const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
-const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
-const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
-const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
-const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
-const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
-const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
-const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
-const UINT D3D12_REQ_MAXANISOTROPY = 16;
-const UINT D3D12_REQ_MIP_LEVELS = 15;
-const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
-const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
-const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
-const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
-cpp_quote( "#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM	( 0.25f )" )
-const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
-const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
-const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
-const UINT D3D12_REQ_SUBRESOURCES = 30720;
-const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
-const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
-const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
-const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
-const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
-const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
-const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
-const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
-const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
-const UINT D3D12_SDK_VERSION = 614;
-const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
-const UINT D3D12_SHADER_MAJOR_VERSION = 5;
-const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
-const UINT D3D12_SHADER_MAX_INTERFACES = 253;
-const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
-const UINT D3D12_SHADER_MAX_TYPES = 65535;
-const UINT D3D12_SHADER_MINOR_VERSION = 1;
-const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
-const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
-const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
-const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
-const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
-const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
-const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
-const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
-const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
-const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
-const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
-const UINT D3D12_SO_STREAM_COUNT = 4;
-const UINT D3D12_SPEC_DATE_DAY = 14;
-const UINT D3D12_SPEC_DATE_MONTH = 11;
-const UINT D3D12_SPEC_DATE_YEAR = 2014;
-cpp_quote( "#define D3D12_SPEC_VERSION	( 1.16 )" )
-cpp_quote( "#define D3D12_SRGB_GAMMA	( 2.2f )" )
-cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1	( 12.92f )" )
-cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2	( 1.055f )" )
-cpp_quote( "#define D3D12_SRGB_TO_FLOAT_EXPONENT	( 2.4f )" )
-cpp_quote( "#define D3D12_SRGB_TO_FLOAT_OFFSET	( 0.055f )" )
-cpp_quote( "#define D3D12_SRGB_TO_FLOAT_THRESHOLD	( 0.04045f )" )
-cpp_quote( "#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP	( 0.5f )" )
-const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
-const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
-const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
-const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
-const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
-const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
-const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
-const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
-const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
-const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
-const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
-const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
-const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
-const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
-const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
-const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
-const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
-const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
-const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
-const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
-const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
-const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
-const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
-const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
-const UINT D3D12_UAV_SLOT_COUNT = 64;
-const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
-const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
-const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
-const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
-const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
-const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
-const UINT D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX = 0xFF;
-const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS = 64;
-const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS = 64;
-const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN = 9;
-const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM = 8;
-const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
-const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
-const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
-const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
-const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
-const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
-const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
-const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
-const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
-const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
-const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
-const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
-const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
-const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
-const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
-const UINT D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES = 8;
-const UINT D3D12_WORK_GRAPHS_MAX_NODE_DEPTH = 32;
-cpp_quote( "#endif" )
-
-
-// Forward declarations
-interface ID3D12CommandQueue;
-
-
-typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
-
-typedef enum D3D12_COMMAND_LIST_TYPE
-{
-    D3D12_COMMAND_LIST_TYPE_DIRECT          = 0,
-    D3D12_COMMAND_LIST_TYPE_BUNDLE          = 1,
-    D3D12_COMMAND_LIST_TYPE_COMPUTE         = 2,
-    D3D12_COMMAND_LIST_TYPE_COPY            = 3,
-    D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE    = 4,
-    D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS   = 5,
-    D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE    = 6,
-
-    D3D12_COMMAND_LIST_TYPE_NONE            = -1,
-
-} D3D12_COMMAND_LIST_TYPE;
-
-typedef enum D3D12_COMMAND_QUEUE_FLAGS
-{
-    D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
-    D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
-} D3D12_COMMAND_QUEUE_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )" )
-
-typedef enum D3D12_COMMAND_QUEUE_PRIORITY
-{
-    D3D12_COMMAND_QUEUE_PRIORITY_NORMAL          = 0,
-    D3D12_COMMAND_QUEUE_PRIORITY_HIGH            = 100,
-    D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
-} D3D12_COMMAND_QUEUE_PRIORITY;
-
-typedef struct D3D12_COMMAND_QUEUE_DESC
-{
-    D3D12_COMMAND_LIST_TYPE Type;
-    INT Priority;
-    D3D12_COMMAND_QUEUE_FLAGS Flags;
-    UINT NodeMask;
-} D3D12_COMMAND_QUEUE_DESC;
-
-typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
-{
-    D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
-    D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT     = 1,
-    D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE      = 2,
-    D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE  = 3,
-    D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH     = 4
-} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
-
-typedef enum D3D12_INPUT_CLASSIFICATION
-{
-    D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
-    D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
-} D3D12_INPUT_CLASSIFICATION;
-
-typedef struct D3D12_INPUT_ELEMENT_DESC
-{
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    DXGI_FORMAT Format;
-    UINT InputSlot;
-    UINT AlignedByteOffset;
-    D3D12_INPUT_CLASSIFICATION InputSlotClass;
-    UINT InstanceDataStepRate;
-} D3D12_INPUT_ELEMENT_DESC;
-
-// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
-typedef enum D3D12_FILL_MODE
-{
-    // 1 was POINT in D3D, unused in D3D12
-    D3D12_FILL_MODE_WIREFRAME = 2,
-    D3D12_FILL_MODE_SOLID = 3
-} D3D12_FILL_MODE;
-
-typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
-
-typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
-
-// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
-typedef enum D3D12_CULL_MODE
-{
-    D3D12_CULL_MODE_NONE = 1,
-    D3D12_CULL_MODE_FRONT = 2,
-    D3D12_CULL_MODE_BACK = 3
-} D3D12_CULL_MODE;
-
-typedef struct D3D12_SO_DECLARATION_ENTRY
-{
-    UINT Stream;
-    LPCSTR SemanticName;
-    UINT SemanticIndex;
-    BYTE StartComponent;
-    BYTE ComponentCount;
-    BYTE OutputSlot;
-} D3D12_SO_DECLARATION_ENTRY;
-
-typedef struct D3D12_VIEWPORT
-{
-    FLOAT TopLeftX;
-    FLOAT TopLeftY;
-    FLOAT Width;
-    FLOAT Height;
-    FLOAT MinDepth;
-    FLOAT MaxDepth;
-} D3D12_VIEWPORT;
-
-
-typedef RECT D3D12_RECT;
-
-
-typedef struct D3D12_BOX
-{
-    UINT left;
-    UINT top;
-    UINT front;
-    UINT right;
-    UINT bottom;
-    UINT back;
-} D3D12_BOX;
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Depth-Stencil State
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
-typedef enum D3D12_COMPARISON_FUNC
-{
-    D3D12_COMPARISON_FUNC_NONE = 0,
-    D3D12_COMPARISON_FUNC_NEVER = 1,
-    D3D12_COMPARISON_FUNC_LESS = 2,
-    D3D12_COMPARISON_FUNC_EQUAL = 3,
-    D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
-    D3D12_COMPARISON_FUNC_GREATER = 5,
-    D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
-    D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
-    D3D12_COMPARISON_FUNC_ALWAYS = 8
-} D3D12_COMPARISON_FUNC;
-
-typedef enum D3D12_DEPTH_WRITE_MASK
-{
-    D3D12_DEPTH_WRITE_MASK_ZERO = 0,
-    D3D12_DEPTH_WRITE_MASK_ALL = 1
-} D3D12_DEPTH_WRITE_MASK;
-
-// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
-typedef enum D3D12_STENCIL_OP
-{
-    D3D12_STENCIL_OP_KEEP = 1,
-    D3D12_STENCIL_OP_ZERO = 2,
-    D3D12_STENCIL_OP_REPLACE = 3,
-    D3D12_STENCIL_OP_INCR_SAT = 4,
-    D3D12_STENCIL_OP_DECR_SAT = 5,
-    D3D12_STENCIL_OP_INVERT = 6,
-    D3D12_STENCIL_OP_INCR = 7,
-    D3D12_STENCIL_OP_DECR = 8
-} D3D12_STENCIL_OP;
-
-typedef struct D3D12_DEPTH_STENCILOP_DESC
-{
-    D3D12_STENCIL_OP StencilFailOp;
-    D3D12_STENCIL_OP StencilDepthFailOp;
-    D3D12_STENCIL_OP StencilPassOp;
-    D3D12_COMPARISON_FUNC StencilFunc;
-} D3D12_DEPTH_STENCILOP_DESC;
-
-typedef struct D3D12_DEPTH_STENCIL_DESC
-{
-    BOOL DepthEnable;
-    D3D12_DEPTH_WRITE_MASK DepthWriteMask;
-    D3D12_COMPARISON_FUNC DepthFunc;
-    BOOL StencilEnable;
-    UINT8 StencilReadMask;
-    UINT8 StencilWriteMask;
-    D3D12_DEPTH_STENCILOP_DESC FrontFace;
-    D3D12_DEPTH_STENCILOP_DESC BackFace;
-} D3D12_DEPTH_STENCIL_DESC;
-
-typedef struct D3D12_DEPTH_STENCIL_DESC1
-{
-    BOOL DepthEnable;
-    D3D12_DEPTH_WRITE_MASK DepthWriteMask;
-    D3D12_COMPARISON_FUNC DepthFunc;
-    BOOL StencilEnable;
-    UINT8 StencilReadMask;
-    UINT8 StencilWriteMask;
-    D3D12_DEPTH_STENCILOP_DESC FrontFace;
-    D3D12_DEPTH_STENCILOP_DESC BackFace;
-    BOOL DepthBoundsTestEnable;
-} D3D12_DEPTH_STENCIL_DESC1;
-
-// Front/back face independent stencil masks
-typedef struct D3D12_DEPTH_STENCILOP_DESC1
-{
-    D3D12_STENCIL_OP StencilFailOp;
-    D3D12_STENCIL_OP StencilDepthFailOp;
-    D3D12_STENCIL_OP StencilPassOp;
-    D3D12_COMPARISON_FUNC StencilFunc;
-    UINT8 StencilReadMask;
-    UINT8 StencilWriteMask;
-} D3D12_DEPTH_STENCILOP_DESC1;
-
-typedef struct D3D12_DEPTH_STENCIL_DESC2
-{
-    BOOL DepthEnable;
-    D3D12_DEPTH_WRITE_MASK DepthWriteMask;
-    D3D12_COMPARISON_FUNC DepthFunc;
-    BOOL StencilEnable;
-    D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
-    D3D12_DEPTH_STENCILOP_DESC1 BackFace;
-    BOOL DepthBoundsTestEnable;
-} D3D12_DEPTH_STENCIL_DESC2;
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Blend State
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
-typedef enum D3D12_BLEND
-{
-    D3D12_BLEND_ZERO = 1,
-    D3D12_BLEND_ONE = 2,
-    D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
-    D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
-    D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
-    D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
-    D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
-    D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
-    D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
-    D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
-    D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
-    // 12 reserved (was BOTHSRCALPHA)
-    // 13 reserved (was BOTHSRCALPHA)
-    D3D12_BLEND_BLEND_FACTOR = 14,
-    D3D12_BLEND_INV_BLEND_FACTOR = 15,
-    D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
-    D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
-    D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
-    D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
-    D3D12_BLEND_ALPHA_FACTOR = 20,
-    D3D12_BLEND_INV_ALPHA_FACTOR = 21
-} D3D12_BLEND;
-
-// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
-typedef enum D3D12_BLEND_OP
-{
-    D3D12_BLEND_OP_ADD = 1,
-    D3D12_BLEND_OP_SUBTRACT = 2,
-    D3D12_BLEND_OP_REV_SUBTRACT = 3,
-    D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
-    D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
-} D3D12_BLEND_OP;
-
-typedef enum D3D12_COLOR_WRITE_ENABLE
-{
-    D3D12_COLOR_WRITE_ENABLE_RED = 1,
-    D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
-    D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
-    D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
-    D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
-        D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
-} D3D12_COLOR_WRITE_ENABLE;
-
-typedef enum D3D12_LOGIC_OP
-{
-                                   // Operation: 
-                                   // (s == PS output, d = RTV contents)
-    D3D12_LOGIC_OP_CLEAR = 0,      // 0
-    D3D12_LOGIC_OP_SET,            // 1
-    D3D12_LOGIC_OP_COPY,           // s
-    D3D12_LOGIC_OP_COPY_INVERTED,  // ~s
-    D3D12_LOGIC_OP_NOOP,           // d
-    D3D12_LOGIC_OP_INVERT,         // ~d
-    D3D12_LOGIC_OP_AND,            // s & d
-    D3D12_LOGIC_OP_NAND,           // ~(s & d)
-    D3D12_LOGIC_OP_OR,             // s | d
-    D3D12_LOGIC_OP_NOR,            // ~(s | d)
-    D3D12_LOGIC_OP_XOR,            // s ^ d
-    D3D12_LOGIC_OP_EQUIV,          // ~(s ^ d)
-    D3D12_LOGIC_OP_AND_REVERSE,    // s & ~d
-    D3D12_LOGIC_OP_AND_INVERTED,   // ~s & d
-    D3D12_LOGIC_OP_OR_REVERSE,     // s | ~d
-    D3D12_LOGIC_OP_OR_INVERTED,    // ~s | d
-} D3D12_LOGIC_OP;
-
-typedef struct D3D12_RENDER_TARGET_BLEND_DESC
-{
-    BOOL BlendEnable;
-    BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
-    D3D12_BLEND SrcBlend;
-    D3D12_BLEND DestBlend;
-    D3D12_BLEND_OP BlendOp;
-    D3D12_BLEND SrcBlendAlpha;
-    D3D12_BLEND DestBlendAlpha;
-    D3D12_BLEND_OP BlendOpAlpha;
-    D3D12_LOGIC_OP LogicOp; // applies to RGBA
-    UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
-} D3D12_RENDER_TARGET_BLEND_DESC;
-
-typedef struct D3D12_BLEND_DESC
-{
-    BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
-    BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
-    D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
-} D3D12_BLEND_DESC;
-
-cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
-cpp_quote( "   IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" ) 
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Rasterizer State
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
-{
-    D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF       = 0, // Default
-    D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON        = 1,
-} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
-
-typedef struct D3D12_RASTERIZER_DESC
-{
-    D3D12_FILL_MODE FillMode;
-    D3D12_CULL_MODE CullMode;
-    BOOL FrontCounterClockwise;
-    INT DepthBias;
-    FLOAT DepthBiasClamp;
-    FLOAT SlopeScaledDepthBias;
-    BOOL DepthClipEnable;
-    BOOL MultisampleEnable;
-    BOOL AntialiasedLineEnable;
-    UINT ForcedSampleCount;  
-    D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
-} D3D12_RASTERIZER_DESC;
-
-typedef struct D3D12_RASTERIZER_DESC1
-{
-    D3D12_FILL_MODE FillMode;
-    D3D12_CULL_MODE CullMode;
-    BOOL FrontCounterClockwise;
-    FLOAT DepthBias;
-    FLOAT DepthBiasClamp;
-    FLOAT SlopeScaledDepthBias;
-    BOOL DepthClipEnable;
-    BOOL MultisampleEnable;
-    BOOL AntialiasedLineEnable;
-    UINT ForcedSampleCount;
-    D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
-} D3D12_RASTERIZER_DESC1;
-
-typedef enum D3D12_LINE_RASTERIZATION_MODE
-{
-    D3D12_LINE_RASTERIZATION_MODE_ALIASED,
-    D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED,
-    D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE,
-    D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW,
-} D3D12_LINE_RASTERIZATION_MODE;
-
-typedef struct D3D12_RASTERIZER_DESC2
-{
-    D3D12_FILL_MODE FillMode;
-    D3D12_CULL_MODE CullMode;
-    BOOL FrontCounterClockwise;
-    FLOAT DepthBias;
-    FLOAT DepthBiasClamp;
-    FLOAT SlopeScaledDepthBias;
-    BOOL DepthClipEnable;
-    D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
-    UINT ForcedSampleCount;
-    D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
-} D3D12_RASTERIZER_DESC2;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Pipeline State v1
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
-interface ID3D12RootSignature
-    : ID3D12DeviceChild
-{
-}
-
-typedef struct D3D12_SHADER_BYTECODE
-{
-    [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
-    SIZE_T BytecodeLength;
-} D3D12_SHADER_BYTECODE;
-
-typedef struct D3D12_STREAM_OUTPUT_DESC
-{
-    [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
-    UINT NumEntries;
-    [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
-    UINT NumStrides;
-    UINT RasterizedStream;
-} D3D12_STREAM_OUTPUT_DESC;
-
-typedef struct D3D12_INPUT_LAYOUT_DESC
-{
-    [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
-    UINT NumElements;
-} D3D12_INPUT_LAYOUT_DESC;
-
-typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
-{
-    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
-    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
-    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
-} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
-
-typedef enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
-{
-    D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
-    D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
-} 	D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
-
-typedef struct D3D12_CACHED_PIPELINE_STATE
-{
-    [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
-    SIZE_T CachedBlobSizeInBytes;
-} D3D12_CACHED_PIPELINE_STATE;
-
-typedef enum D3D12_PIPELINE_STATE_FLAGS
-{
-    D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
-    D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
-    D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
-    D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8,
-
-} D3D12_PIPELINE_STATE_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )" )
-
-typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
-{
-    ID3D12RootSignature*          pRootSignature;
-    D3D12_SHADER_BYTECODE         VS;
-    D3D12_SHADER_BYTECODE         PS;
-    D3D12_SHADER_BYTECODE         DS;
-    D3D12_SHADER_BYTECODE         HS;
-    D3D12_SHADER_BYTECODE         GS;
-    D3D12_STREAM_OUTPUT_DESC      StreamOutput;
-    D3D12_BLEND_DESC              BlendState;
-    UINT                          SampleMask;
-    D3D12_RASTERIZER_DESC         RasterizerState;
-    D3D12_DEPTH_STENCIL_DESC      DepthStencilState;
-    D3D12_INPUT_LAYOUT_DESC       InputLayout;
-    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
-    D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
-    UINT                          NumRenderTargets;
-    DXGI_FORMAT                   RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
-    DXGI_FORMAT                   DSVFormat;
-    DXGI_SAMPLE_DESC              SampleDesc;
-    UINT                          NodeMask;
-    D3D12_CACHED_PIPELINE_STATE   CachedPSO;
-    D3D12_PIPELINE_STATE_FLAGS    Flags;
-} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
-
-typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
-{
-    ID3D12RootSignature*   pRootSignature;
-    D3D12_SHADER_BYTECODE  CS;
-    UINT                   NodeMask;
-    D3D12_CACHED_PIPELINE_STATE   CachedPSO;
-    D3D12_PIPELINE_STATE_FLAGS    Flags;
-} D3D12_COMPUTE_PIPELINE_STATE_DESC;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Pipeline State v2
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-struct D3D12_RT_FORMAT_ARRAY
-{
-    DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
-    UINT NumRenderTargets;
-};
-
-typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
-{
-    [annotation("_In_")] SIZE_T SizeInBytes;
-    [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
-} D3D12_PIPELINE_STATE_STREAM_DESC;
-
-typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
-{
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26, // D3D12_DEPTH_STENCIL_DESC2
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27, // D3D12_RASTERIZER_DESC1
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28, // D3D12_RASTERIZER_DESC2
-    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
-} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// D3D12 Caps
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-typedef enum D3D12_FEATURE
-{
-    D3D12_FEATURE_D3D12_OPTIONS                         =  0,
-    D3D12_FEATURE_ARCHITECTURE                          =  1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
-    D3D12_FEATURE_FEATURE_LEVELS                        =  2,
-    D3D12_FEATURE_FORMAT_SUPPORT                        =  3,
-    D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS            =  4,
-    D3D12_FEATURE_FORMAT_INFO                           =  5,
-    D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT           =  6,
-    D3D12_FEATURE_SHADER_MODEL                          =  7,
-    D3D12_FEATURE_D3D12_OPTIONS1                        =  8,
-    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT    = 10,
-    D3D12_FEATURE_ROOT_SIGNATURE                        = 12,
-    D3D12_FEATURE_ARCHITECTURE1                         = 16,
-    D3D12_FEATURE_D3D12_OPTIONS2                        = 18,
-    D3D12_FEATURE_SHADER_CACHE                          = 19,
-    D3D12_FEATURE_COMMAND_QUEUE_PRIORITY                = 20,
-    D3D12_FEATURE_D3D12_OPTIONS3                        = 21,
-    D3D12_FEATURE_EXISTING_HEAPS                        = 22,
-    D3D12_FEATURE_D3D12_OPTIONS4                        = 23,
-    D3D12_FEATURE_SERIALIZATION                         = 24,
-    D3D12_FEATURE_CROSS_NODE                            = 25,
-    D3D12_FEATURE_D3D12_OPTIONS5                        = 27,
-    D3D12_FEATURE_DISPLAYABLE                           = 28,
-    D3D12_FEATURE_D3D12_OPTIONS6                        = 30,
-    D3D12_FEATURE_QUERY_META_COMMAND                    = 31,
-    D3D12_FEATURE_D3D12_OPTIONS7                        = 32,
-    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33, 
-    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES      = 34,
-    D3D12_FEATURE_D3D12_OPTIONS8                        = 36,
-    D3D12_FEATURE_D3D12_OPTIONS9                        = 37,
-    D3D12_FEATURE_D3D12_OPTIONS10                       = 39,
-    D3D12_FEATURE_D3D12_OPTIONS11                       = 40,
-    D3D12_FEATURE_D3D12_OPTIONS12                       = 41,
-    D3D12_FEATURE_D3D12_OPTIONS13                       = 42,
-    D3D12_FEATURE_D3D12_OPTIONS14                       = 43,
-    D3D12_FEATURE_D3D12_OPTIONS15                       = 44,
-    D3D12_FEATURE_D3D12_OPTIONS16                       = 45,
-    D3D12_FEATURE_D3D12_OPTIONS17                       = 46,
-    D3D12_FEATURE_D3D12_OPTIONS18                       = 47,
-    D3D12_FEATURE_D3D12_OPTIONS19                       = 48,
-    D3D12_FEATURE_D3D12_OPTIONS20                       = 49,
-    D3D12_FEATURE_PREDICATION                           = 50,
-    D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO          = 51,
-    D3D12_FEATURE_HARDWARE_COPY                         = 52,
-    D3D12_FEATURE_D3D12_OPTIONS21                       = 53,
-} D3D12_FEATURE;
-
-typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
-{
-    D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE   = 0x0,
-    D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
-    D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
-} D3D12_SHADER_MIN_PRECISION_SUPPORT;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )" )
-
-typedef enum D3D12_TILED_RESOURCES_TIER
-{
-    D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
-    D3D12_TILED_RESOURCES_TIER_1        = 1,
-    D3D12_TILED_RESOURCES_TIER_2        = 2,
-    D3D12_TILED_RESOURCES_TIER_3        = 3,
-    D3D12_TILED_RESOURCES_TIER_4        = 4,
-} D3D12_TILED_RESOURCES_TIER;
-
-typedef enum D3D12_RESOURCE_BINDING_TIER
-{
-    D3D12_RESOURCE_BINDING_TIER_1 = 1,
-    D3D12_RESOURCE_BINDING_TIER_2 = 2,
-    D3D12_RESOURCE_BINDING_TIER_3 = 3,
-} D3D12_RESOURCE_BINDING_TIER;
-
-typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER { 
-  D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED  = 0,
-  D3D12_CONSERVATIVE_RASTERIZATION_TIER_1         = 1,
-  D3D12_CONSERVATIVE_RASTERIZATION_TIER_2         = 2,
-  D3D12_CONSERVATIVE_RASTERIZATION_TIER_3         = 3,
-} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
-
-
-typedef enum D3D12_FORMAT_SUPPORT1
-{
-    D3D12_FORMAT_SUPPORT1_NONE                       = 0,
-    D3D12_FORMAT_SUPPORT1_BUFFER                      = 0x00000001,
-    D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER            = 0x00000002,
-    D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER             = 0x00000004,
-    D3D12_FORMAT_SUPPORT1_SO_BUFFER                   = 0x00000008,
-    D3D12_FORMAT_SUPPORT1_TEXTURE1D                   = 0x00000010,
-    D3D12_FORMAT_SUPPORT1_TEXTURE2D                   = 0x00000020,
-    D3D12_FORMAT_SUPPORT1_TEXTURE3D                   = 0x00000040,
-    D3D12_FORMAT_SUPPORT1_TEXTURECUBE                 = 0x00000080,
-    D3D12_FORMAT_SUPPORT1_SHADER_LOAD                 = 0x00000100,
-    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE               = 0x00000200,
-    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON    = 0x00000400,
-    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT     = 0x00000800,
-    D3D12_FORMAT_SUPPORT1_MIP                         = 0x00001000,
-    D3D12_FORMAT_SUPPORT1_RENDER_TARGET               = 0x00004000,
-    D3D12_FORMAT_SUPPORT1_BLENDABLE                   = 0x00008000,
-    D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL               = 0x00010000,
-    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE         = 0x00040000,
-    D3D12_FORMAT_SUPPORT1_DISPLAY                     = 0x00080000,
-    D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT      = 0x00100000,
-    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET    = 0x00200000,
-    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD            = 0x00400000,
-    D3D12_FORMAT_SUPPORT1_SHADER_GATHER               = 0x00800000,
-    D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST            = 0x01000000,
-    D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
-    D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON    = 0x04000000,
-    D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT              = 0x08000000,
-    D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT      = 0x10000000,
-    D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT       = 0x20000000,
-    D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER               = 0x40000000,
-} D3D12_FORMAT_SUPPORT1;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )" )
-
-typedef enum D3D12_FORMAT_SUPPORT2
-{
-    D3D12_FORMAT_SUPPORT2_NONE                                              = 0,
-    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD                                    = 0x00000001,
-    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS                            = 0x00000002,
-    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE      = 0x00000004,
-    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE                               = 0x00000008,
-    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX                      = 0x00000010,
-    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX                    = 0x00000020,
-    D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD                                    = 0x00000040,
-    D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE                                   = 0x00000080,
-    D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP                            = 0x00000100,
-    D3D12_FORMAT_SUPPORT2_TILED                                             = 0x00000200,
-    D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY                                = 0x00004000,
-    D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK                                  = 0x00008000,
-} D3D12_FORMAT_SUPPORT2;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )" )
-
-typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
-{
-    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE           = 0,
-    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
-} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )" )
-
-typedef enum D3D12_CROSS_NODE_SHARING_TIER
-{
-    D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED    = 0,
-    D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED  = 1,
-    D3D12_CROSS_NODE_SHARING_TIER_1           = 2,
-    D3D12_CROSS_NODE_SHARING_TIER_2           = 3,
-    D3D12_CROSS_NODE_SHARING_TIER_3           = 4,
-} D3D12_CROSS_NODE_SHARING_TIER;
-
-typedef enum D3D12_RESOURCE_HEAP_TIER
-{
-    D3D12_RESOURCE_HEAP_TIER_1 = 1,
-    D3D12_RESOURCE_HEAP_TIER_2 = 2,
-} D3D12_RESOURCE_HEAP_TIER;
-
-typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
-{
-    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
-    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
-    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
-} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
-
-typedef enum D3D12_VIEW_INSTANCING_TIER
-{
-    D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
-    D3D12_VIEW_INSTANCING_TIER_1 = 1,
-    D3D12_VIEW_INSTANCING_TIER_2 = 2,
-    D3D12_VIEW_INSTANCING_TIER_3 = 3,
-} D3D12_VIEW_INSTANCING_TIER;
-
-typedef enum D3D12_WORK_GRAPHS_TIER {
-    D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
-    D3D12_WORK_GRAPHS_TIER_1_0 = 10,
-} D3D12_WORK_GRAPHS_TIER;
-
-// D3D12_FEATURE_D3D12_OPTIONS
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
-{
-    [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
-    [annotation("_Out_")] BOOL OutputMergerLogicOp;
-    [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
-    [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
-    [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
-    [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
-    [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
-    [annotation("_Out_")] BOOL ROVsSupported;
-    [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
-    [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
-    [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
-    [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
-    [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
-    [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
-    [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS;
-
-// D3D12_FEATURE_D3D12_OPTIONS1
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
-{
-    [annotation("_Out_")] BOOL WaveOps;
-    [annotation("_Out_")] UINT WaveLaneCountMin;
-    [annotation("_Out_")] UINT WaveLaneCountMax;
-    [annotation("_Out_")] UINT TotalLaneCount;
-    [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
-    [annotation("_Out_")] BOOL Int64ShaderOps;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
-
-// D3D12_FEATURE_D3D12_OPTIONS2
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
-{
-    [annotation("_Out_")] BOOL DepthBoundsTestSupported;
-    [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
-
-// D3D12_FEATURE_ROOT_SIGNATURE
-typedef enum D3D_ROOT_SIGNATURE_VERSION
-{
-    D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
-    D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
-    D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
-    D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3,
-} D3D_ROOT_SIGNATURE_VERSION;
-
-typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
-{
-    [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
-} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
-
-// D3D12_FEATURE_ARCHITECTURE
-typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
-{
-    [annotation("_In_")]  UINT NodeIndex;
-    [annotation("_Out_")] BOOL TileBasedRenderer;
-    [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
-    [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
-} D3D12_FEATURE_DATA_ARCHITECTURE;
-
-// D3D12_FEATURE_ARCHITECTURE1
-typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
-{
-    [annotation("_In_")]  UINT NodeIndex;
-    [annotation("_Out_")] BOOL TileBasedRenderer;
-    [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
-    [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
-    [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
-} D3D12_FEATURE_DATA_ARCHITECTURE1;
-
-// D3D12_FEATURE_FEATURE_LEVELS
-typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
-{
-    [annotation("_In_")] UINT NumFeatureLevels;
-    [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
-    [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
-} D3D12_FEATURE_DATA_FEATURE_LEVELS;
-
-// D3D_SHADER_MODEL
-typedef enum D3D_SHADER_MODEL
-{
-    D3D_SHADER_MODEL_NONE = 0x0, // e.g MCDM Generic devices
-    D3D_SHADER_MODEL_5_1 = 0x51,
-    D3D_SHADER_MODEL_6_0 = 0x60,
-    D3D_SHADER_MODEL_6_1 = 0x61,
-    D3D_SHADER_MODEL_6_2 = 0x62,
-    D3D_SHADER_MODEL_6_3 = 0x63,
-    D3D_SHADER_MODEL_6_4 = 0x64,
-    D3D_SHADER_MODEL_6_5 = 0x65,
-    D3D_SHADER_MODEL_6_6 = 0x66,
-    D3D_SHADER_MODEL_6_7 = 0x67,
-    D3D_SHADER_MODEL_6_8 = 0x68,
-    D3D_SHADER_MODEL_6_9 = 0x69,
-    D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
-} D3D_SHADER_MODEL;
-
-typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
-{
-    [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
-} D3D12_FEATURE_DATA_SHADER_MODEL;
-
-// D3D12_FEATURE_FORMAT_SUPPORT
-typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
-{
-    [annotation("_In_")] DXGI_FORMAT Format;
-    [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
-    [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
-} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
-
-// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
-typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
-{
-    [annotation("_In_")] DXGI_FORMAT Format;
-    [annotation("_In_")] UINT SampleCount;
-    [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
-    [annotation("_Out_")] UINT NumQualityLevels;
-} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
-
-// D3D12_FEATURE_FORMAT_INFO
-typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
-{
-    DXGI_FORMAT Format;
-    UINT8 PlaneCount;
-} D3D12_FEATURE_DATA_FORMAT_INFO;
-
-// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
-typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
-{
-    UINT MaxGPUVirtualAddressBitsPerResource;
-    UINT MaxGPUVirtualAddressBitsPerProcess;
-} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
-
-
-typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
-{
-    D3D12_SHADER_CACHE_SUPPORT_NONE                     = 0x0,
-    D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO               = 0x1, // Always supported
-    D3D12_SHADER_CACHE_SUPPORT_LIBRARY                  = 0x2,
-    D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE   = 0x4,
-    D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE     = 0x8,
-    D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE     = 0x10,
-    D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR     = 0x20,
-    D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE    = 0x40
-} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )" )
-
-// D3D12_FEATURE_SHADER_CACHE
-typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
-{
-    [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
-} D3D12_FEATURE_DATA_SHADER_CACHE;
-
-// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
-typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
-{
-    [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
-    [annotation("_In_")] UINT Priority;
-    [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
-} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
-
-typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
-{
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE                = 0x00000000,
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT              = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE              = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE             = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY                = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE        = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS       = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
-    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE        = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
-
-} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )")
-
-// D3D12_FEATURE_D3D12_OPTIONS3
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
-{
-    [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
-    [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
-    [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
-    [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
-    [annotation("_Out_")] BOOL BarycentricsSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
-
-// D3D12_FEATURE_EXISTING_HEAPS
-typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
-{
-    [annotation("_Out_")] BOOL Supported;
-} D3D12_FEATURE_DATA_EXISTING_HEAPS;
-
-typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
-{
-    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0, 
-    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
-    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
-} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
-
-typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
-{
-    [annotation("_Out_")] BOOL DisplayableTexture;
-    [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
-} D3D12_FEATURE_DATA_DISPLAYABLE;
-
-// D3D12_FEATURE_D3D12_OPTIONS4
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
-{
-    [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
-    [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
-    [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
-
-typedef enum D3D12_HEAP_SERIALIZATION_TIER
-{
-    D3D12_HEAP_SERIALIZATION_TIER_0 = 0, 
-    D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
-} D3D12_HEAP_SERIALIZATION_TIER;
-
-// D3D12_FEATURE_SERIALIZATION
-typedef struct D3D12_FEATURE_DATA_SERIALIZATION
-{
-    [annotation("_In_")]  UINT NodeIndex;
-    [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
-} D3D12_FEATURE_DATA_SERIALIZATION;
-
-// D3D12_FEATURE_CROSS_NODE
-typedef struct D3D12_FEATURE_DATA_CROSS_NODE
-{
-    D3D12_CROSS_NODE_SHARING_TIER SharingTier;
-    BOOL AtomicShaderInstructions;
-} D3D12_FEATURE_DATA_CROSS_NODE;
-
-
-typedef enum D3D12_RENDER_PASS_TIER
-{
-    D3D12_RENDER_PASS_TIER_0 = 0,
-    D3D12_RENDER_PASS_TIER_1 = 1,
-    D3D12_RENDER_PASS_TIER_2 = 2,
-
-
-} D3D12_RENDER_PASS_TIER;
-
-typedef enum D3D12_RAYTRACING_TIER
-{
-    D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
-    D3D12_RAYTRACING_TIER_1_0 = 10,
-    D3D12_RAYTRACING_TIER_1_1 = 11,
-} D3D12_RAYTRACING_TIER;
-
-// D3D12_FEATURE_D3D12_OPTIONS5
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
-{
-    [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
-    [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
-    [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
-
-typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
-{
-    D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
-    D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
-    D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
-} D3D12_VARIABLE_SHADING_RATE_TIER;
-
-// D3D12_FEATURE_D3D12_OPTIONS6
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
-{
-    [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
-    [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
-    [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
-    [annotation("_Out_")] UINT ShadingRateImageTileSize;
-    [annotation("_Out_")] BOOL BackgroundProcessingSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
-
-typedef enum D3D12_MESH_SHADER_TIER
-{
-    D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
-    D3D12_MESH_SHADER_TIER_1 = 10,
-} D3D12_MESH_SHADER_TIER;
-
-typedef enum D3D12_SAMPLER_FEEDBACK_TIER
-{
-    D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
-    D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
-    D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
-} D3D12_SAMPLER_FEEDBACK_TIER;
-
-// D3D12_FEATURE_D3D12_OPTIONS7
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
-{
-    [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
-    [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
-
-} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
-
-typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
-{
-    [annotation("_In_")] GUID CommandId;
-    [annotation("_In_")] UINT NodeMask;
-    [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
-    [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
-    [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
-    [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
-} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
-
-// D3D12_FEATURE_D3D12_OPTIONS8
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
-{
-    [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
-
-typedef enum D3D12_WAVE_MMA_TIER {
-    D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
-    D3D12_WAVE_MMA_TIER_1_0 = 10,
-} D3D12_WAVE_MMA_TIER;
-
-// D3D12_FEATURE_D3D12_OPTIONS9
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
-{
-    [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
-    [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
-    [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
-    [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
-    [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
-    [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
-
-// D3D12_FEATURE_D3D12_OPTIONS10
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
-{
-    [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
-    [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
-
-// D3D12_FEATURE_D3D12_OPTIONS11
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
-{
-    [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
-
-typedef enum D3D12_TRI_STATE {
-    D3D12_TRI_STATE_UNKNOWN = -1,
-    D3D12_TRI_STATE_FALSE = 0,
-    D3D12_TRI_STATE_TRUE = 1,
-} D3D12_TRI_STATE;
-
-// D3D12_FEATURE_D3D12_OPTIONS12
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
-{
-    [annotation("_Out_")] D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
-    [annotation("_Out_")] BOOL EnhancedBarriersSupported;
-    [annotation("_Out_")] BOOL RelaxedFormatCastingSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS12;
-
-// D3D12_FEATURE_D3D12_OPTIONS13
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
-{
-    [annotation("_Out_")] BOOL UnrestrictedBufferTextureCopyPitchSupported;
-    [annotation("_Out_")] BOOL UnrestrictedVertexElementAlignmentSupported;
-    [annotation("_Out_")] BOOL InvertedViewportHeightFlipsYSupported;
-    [annotation("_Out_")] BOOL InvertedViewportDepthFlipsZSupported;
-    [annotation("_Out_")] BOOL TextureCopyBetweenDimensionsSupported;
-    [annotation("_Out_")] BOOL AlphaBlendFactorSupported;   
-} D3D12_FEATURE_DATA_D3D12_OPTIONS13;
-
-// D3D12_FEATURE_D3D12_OPTIONS14
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
-{
-    [annotation("_Out_")] BOOL AdvancedTextureOpsSupported;
-    [annotation("_Out_")] BOOL WriteableMSAATexturesSupported;
-    [annotation("_Out_")] BOOL IndependentFrontAndBackStencilRefMaskSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS14;
-
-// D3D12_FEATURE_D3D12_OPTIONS15
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
-{
-    [annotation("_Out_")] BOOL TriangleFanSupported;
-    [annotation("_Out_")] BOOL DynamicIndexBufferStripCutSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS15;
-
-// D3D12_FEATURE_D3D12_OPTIONS16
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
-{
-    [annotation("_Out_")] BOOL DynamicDepthBiasSupported;
-    [annotation("_Out_")] BOOL GPUUploadHeapSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS16;
-
-// D3D12_FEATURE_D3D12_OPTIONS17
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
-{
-    [annotation("_Out_")] BOOL NonNormalizedCoordinateSamplersSupported;
-    [annotation("_Out_")] BOOL ManualWriteTrackingResourceSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS17;
-
-// D3D12_FEATURE_D3D12_OPTIONS18
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
-{
-    [annotation("_Out_")] BOOL RenderPassesValid;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS18;
-
-// D3D12_FEATURE_D3D12_OPTIONS19
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
-{
-    BOOL MismatchingOutputDimensionsSupported;
-    UINT SupportedSampleCountsWithNoOutputs;
-    BOOL PointSamplingAddressesNeverRoundUp;
-    BOOL RasterizerDesc2Supported;
-    BOOL NarrowQuadrilateralLinesSupported;
-    BOOL AnisoFilterWithPointMipSupported;
-    UINT MaxSamplerDescriptorHeapSize;
-    UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
-    UINT MaxViewDescriptorHeapSize;
-    [annotation("_Out_")] BOOL ComputeOnlyCustomHeapSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS19;
-
-
-typedef enum D3D12_RECREATE_AT_TIER
-{
-    D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
-
-    // * Supports retrieving resource and heap allocation information 
-    //   with ID3D12PageableTools::GetAllocationInfo
-    // * Supports setting resource and heap virtual addresses with
-    //   ID3D12DeviceTools::SetNextAllocation
-    D3D12_RECREATE_AT_TIER_1 = 1,
-
-} D3D12_RECREATE_AT_TIER;
-
-
-// D3D12_FEATURE_D3D12_OPTIONS20
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
-{
-    [annotation("_Out_")] BOOL ComputeOnlyWriteWatchSupported;
-    D3D12_RECREATE_AT_TIER RecreateAtTier;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS20;
-
-typedef enum D3D12_EXECUTE_INDIRECT_TIER
-{
-    D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
-    D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11,
-} D3D12_EXECUTE_INDIRECT_TIER;
-
-typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
-{
-    [annotation("_Out_")] D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
-    [annotation("_Out_")] D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
-    [annotation("_Out_")] BOOL SampleCmpGradientAndBiasSupported;
-    [annotation("_Out_")] BOOL ExtendedCommandInfoSupported;
-} D3D12_FEATURE_DATA_D3D12_OPTIONS21;
-
-
-typedef struct D3D12_FEATURE_DATA_PREDICATION
-{
-    [annotation("_Out_")] BOOL Supported;
-} D3D12_FEATURE_DATA_PREDICATION;
-
-typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
-{
-    [annotation("_Out_")] BOOL Supported;
-} D3D12_FEATURE_DATA_HARDWARE_COPY;
-
-
-typedef struct D3D12_RESOURCE_ALLOCATION_INFO
-{
-    UINT64 SizeInBytes;
-    UINT64 Alignment;
-} D3D12_RESOURCE_ALLOCATION_INFO;
-
-typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
-{
-    UINT64 Offset;
-    UINT64 Alignment;
-    UINT64 SizeInBytes;
-} D3D12_RESOURCE_ALLOCATION_INFO1;
-
-typedef enum D3D12_HEAP_TYPE
-{
-    D3D12_HEAP_TYPE_DEFAULT   = 1, 
-    D3D12_HEAP_TYPE_UPLOAD    = 2,
-    D3D12_HEAP_TYPE_READBACK  = 3,
-    D3D12_HEAP_TYPE_CUSTOM    = 4,
-    D3D12_HEAP_TYPE_GPU_UPLOAD = 5,
-} D3D12_HEAP_TYPE;
-
-typedef enum D3D12_CPU_PAGE_PROPERTY
-{
-    D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
-    D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
-    D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
-    D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
-} D3D12_CPU_PAGE_PROPERTY;
-
-typedef enum D3D12_MEMORY_POOL
-{
-    D3D12_MEMORY_POOL_UNKNOWN = 0,
-    D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
-    D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
-} D3D12_MEMORY_POOL;
-
-typedef struct D3D12_HEAP_PROPERTIES
-{
-    D3D12_HEAP_TYPE Type;
-    D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
-    D3D12_MEMORY_POOL MemoryPoolPreference;
-    UINT CreationNodeMask;
-    UINT VisibleNodeMask;
-} D3D12_HEAP_PROPERTIES;
-
-typedef enum D3D12_HEAP_FLAGS
-{
-    D3D12_HEAP_FLAG_NONE = 0x0,
-    D3D12_HEAP_FLAG_SHARED = 0x1,
-    D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
-    D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
-    D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
-    D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
-    D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
-    D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
-    D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
-    D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
-    D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
-    D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
-    D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
-
-    // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
-    D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
-    D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
-    D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
-    D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
-
-
-} D3D12_HEAP_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )" )
-
-typedef struct D3D12_HEAP_DESC 
-{
-    UINT64 SizeInBytes;
-    D3D12_HEAP_PROPERTIES Properties;
-    UINT64 Alignment;
-    D3D12_HEAP_FLAGS Flags;
-} D3D12_HEAP_DESC;
-
-typedef enum D3D12_RESOURCE_DIMENSION
-{
-    D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
-    D3D12_RESOURCE_DIMENSION_BUFFER = 1,
-    D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
-    D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
-    D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
-} D3D12_RESOURCE_DIMENSION;
-
-typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
-{
-    [annotation("_In_")] DXGI_FORMAT Format;
-    [annotation("_In_")] D3D12_RESOURCE_DIMENSION Dimension;
-    [annotation("_In_")] D3D12_HEAP_PROPERTIES DestHeapProperties;
-    [annotation("_Out_")] BOOL Supported;
-} D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
-
-typedef enum D3D12_TEXTURE_LAYOUT
-{
-    D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
-    D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers.  Can be used with cross-adapter shared textures.
-    D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
-    D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
-} D3D12_TEXTURE_LAYOUT; 
-
-typedef enum D3D12_RESOURCE_FLAGS
-{
-    D3D12_RESOURCE_FLAG_NONE = 0x0,
-    D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
-    D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
-    D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
-    D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
-    D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
-    D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
-    D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40, 
-    D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80, 
-    D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
-
-} D3D12_RESOURCE_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )" )
-
-typedef struct D3D12_MIP_REGION
-{
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-} D3D12_MIP_REGION;
-
-typedef struct D3D12_RESOURCE_DESC
-{
-    D3D12_RESOURCE_DIMENSION Dimension;
-    UINT64 Alignment;
-    UINT64 Width;
-    UINT Height;
-    UINT16 DepthOrArraySize;
-    UINT16 MipLevels;
-    DXGI_FORMAT Format;
-    DXGI_SAMPLE_DESC SampleDesc;
-    D3D12_TEXTURE_LAYOUT Layout;
-    D3D12_RESOURCE_FLAGS Flags;
-} D3D12_RESOURCE_DESC;
-
-typedef struct D3D12_RESOURCE_DESC1
-{
-    D3D12_RESOURCE_DIMENSION Dimension;
-    UINT64 Alignment;
-    UINT64 Width;
-    UINT Height;
-    UINT16 DepthOrArraySize;
-    UINT16 MipLevels;
-    DXGI_FORMAT Format;
-    DXGI_SAMPLE_DESC SampleDesc;
-    D3D12_TEXTURE_LAYOUT Layout;
-    D3D12_RESOURCE_FLAGS Flags;
-    D3D12_MIP_REGION SamplerFeedbackMipRegion;
-} D3D12_RESOURCE_DESC1;
-
-
-
-typedef struct D3D12_DEPTH_STENCIL_VALUE
-{
-    FLOAT Depth;
-    UINT8 Stencil;
-} D3D12_DEPTH_STENCIL_VALUE;
-
-typedef struct D3D12_CLEAR_VALUE
-{
-    DXGI_FORMAT Format;
-    union
-    {
-        FLOAT Color[4];
-        D3D12_DEPTH_STENCIL_VALUE DepthStencil;
-    };
-} D3D12_CLEAR_VALUE;
-
-typedef struct D3D12_RANGE
-{
-    SIZE_T Begin;
-    SIZE_T End; // One past end, so (End - Begin) = Size
-} D3D12_RANGE;
-
-typedef struct D3D12_RANGE_UINT64
-{
-    UINT64 Begin;
-    UINT64 End; // One past end, so (End - Begin) = Size
-} D3D12_RANGE_UINT64;
-
-typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
-{
-    UINT Subresource;
-    D3D12_RANGE_UINT64 Range;
-} D3D12_SUBRESOURCE_RANGE_UINT64;
-
-typedef struct D3D12_SUBRESOURCE_INFO
-{
-    UINT64 Offset;
-    UINT RowPitch;
-    UINT DepthPitch;
-} D3D12_SUBRESOURCE_INFO;
-
-typedef struct D3D12_TILED_RESOURCE_COORDINATE
-{
-    UINT X;
-    UINT Y;
-    UINT Z;
-    UINT Subresource; 
-} D3D12_TILED_RESOURCE_COORDINATE;
-
-typedef struct D3D12_TILE_REGION_SIZE
-{
-    UINT NumTiles; 
-    BOOL UseBox; 
-    UINT Width; 
-    UINT16 Height;
-    UINT16 Depth;
-} D3D12_TILE_REGION_SIZE;
-
-typedef enum D3D12_TILE_RANGE_FLAGS
-{
-    D3D12_TILE_RANGE_FLAG_NONE = 0,
-    D3D12_TILE_RANGE_FLAG_NULL = 1,
-    D3D12_TILE_RANGE_FLAG_SKIP = 2,
-    D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
-
-} D3D12_TILE_RANGE_FLAGS;
-
-typedef struct D3D12_SUBRESOURCE_TILING
-{
-    UINT WidthInTiles;
-    UINT16 HeightInTiles;
-    UINT16 DepthInTiles;
-    UINT StartTileIndexInOverallResource;
-} D3D12_SUBRESOURCE_TILING;
-
-typedef struct D3D12_TILE_SHAPE
-{
-    UINT WidthInTexels; 
-    UINT HeightInTexels;
-    UINT DepthInTexels;
-} D3D12_TILE_SHAPE;
-
-typedef struct D3D12_PACKED_MIP_INFO
-{
-    UINT8 NumStandardMips;
-    UINT8 NumPackedMips;
-    UINT NumTilesForPackedMips;
-    UINT StartTileIndexInOverallResource;
-} D3D12_PACKED_MIP_INFO;
-
-typedef enum D3D12_TILE_MAPPING_FLAGS 
-{
-    D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
-    D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
-} D3D12_TILE_MAPPING_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )" )
-
-typedef enum D3D12_TILE_COPY_FLAGS 
-{
-    D3D12_TILE_COPY_FLAG_NONE = 0x0,
-    D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
-    D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
-    D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
-} D3D12_TILE_COPY_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )")
-
-// Resource Barrier
-typedef enum D3D12_RESOURCE_STATES
-{
-    D3D12_RESOURCE_STATE_COMMON = 0,
-
-    D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
-    D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
-    D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
-    D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
-    D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
-    D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
-    D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
-    D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
-    D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
-    D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
-    D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
-    D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
-    D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
-    D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
-    D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
-    D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
-
-    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
-    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
-    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
-    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
-    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
-
-    D3D12_RESOURCE_STATE_GENERIC_READ =
-        /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
-        /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/               0x0002 |
-        /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/  0x0040 |
-        /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/      0x0080 |
-        /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/          0x0200 |
-        /*D3D12_RESOURCE_STATE_COPY_SOURCE*/                0x0800,
-        
-    D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
-        /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
-        /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/     0x80,
-
-    D3D12_RESOURCE_STATE_PRESENT                = 0,
-    D3D12_RESOURCE_STATE_PREDICATION            = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
-
-    D3D12_RESOURCE_STATE_VIDEO_DECODE_READ          = 0x00010000,
-    D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE         = 0x00020000,
-    D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ         = 0x00040000,
-    D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE        = 0x00080000,    
-    D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ          = 0x00200000,
-    D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE         = 0x00800000,
-
-} D3D12_RESOURCE_STATES;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )" )
-
-typedef enum D3D12_RESOURCE_BARRIER_TYPE
-{
-    D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
-    D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
-    D3D12_RESOURCE_BARRIER_TYPE_UAV,
-} D3D12_RESOURCE_BARRIER_TYPE;
-
-interface ID3D12Resource;
-
-typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
-{
-    ID3D12Resource* pResource;
-    UINT Subresource;
-    D3D12_RESOURCE_STATES StateBefore;
-    D3D12_RESOURCE_STATES StateAfter;
-} D3D12_RESOURCE_TRANSITION_BARRIER;
-
-typedef struct D3D12_RESOURCE_ALIASING_BARRIER
-{
-    ID3D12Resource* pResourceBefore;
-    ID3D12Resource* pResourceAfter;
-} D3D12_RESOURCE_ALIASING_BARRIER;
-
-typedef struct D3D12_RESOURCE_UAV_BARRIER
-{
-    ID3D12Resource* pResource;
-} D3D12_RESOURCE_UAV_BARRIER;
-
-typedef enum D3D12_RESOURCE_BARRIER_FLAGS
-{
-    D3D12_RESOURCE_BARRIER_FLAG_NONE       = 0x0,
-    D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
-    D3D12_RESOURCE_BARRIER_FLAG_END_ONLY   = 0x2,
-} D3D12_RESOURCE_BARRIER_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )" )
-
-typedef struct D3D12_RESOURCE_BARRIER
-{
-    D3D12_RESOURCE_BARRIER_TYPE    Type;
-    D3D12_RESOURCE_BARRIER_FLAGS    Flags;
-
-    union
-    {
-        D3D12_RESOURCE_TRANSITION_BARRIER Transition;
-        D3D12_RESOURCE_ALIASING_BARRIER   Aliasing;
-        D3D12_RESOURCE_UAV_BARRIER        UAV;
-    };
-} D3D12_RESOURCE_BARRIER;
-
-typedef struct D3D12_SUBRESOURCE_FOOTPRINT
-{
-    DXGI_FORMAT Format;
-    UINT        Width;
-    UINT        Height;
-    UINT        Depth;
-    UINT        RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
-} D3D12_SUBRESOURCE_FOOTPRINT;
-
-typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
-{
-    UINT64                         Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
-    D3D12_SUBRESOURCE_FOOTPRINT Footprint;
-} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
-
-typedef enum D3D12_TEXTURE_COPY_TYPE
-{
-    D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX  = 0,
-    D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT   = 1,
-} D3D12_TEXTURE_COPY_TYPE;
-
-typedef struct D3D12_TEXTURE_COPY_LOCATION
-{
-    ID3D12Resource* pResource;
-    D3D12_TEXTURE_COPY_TYPE Type;
-    union
-    {
-        D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
-        UINT SubresourceIndex;
-    };
-} D3D12_TEXTURE_COPY_LOCATION;
-
-typedef enum D3D12_RESOLVE_MODE
-{
-    D3D12_RESOLVE_MODE_DECOMPRESS = 0,
-    D3D12_RESOLVE_MODE_MIN = 1,
-    D3D12_RESOLVE_MODE_MAX = 2,
-    D3D12_RESOLVE_MODE_AVERAGE = 3,
-    D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
-    D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
-} D3D12_RESOLVE_MODE;
-
-typedef struct D3D12_SAMPLE_POSITION
-{
-    INT8 X;
-    INT8 Y;
-} D3D12_SAMPLE_POSITION;
-
-typedef struct D3D12_VIEW_INSTANCE_LOCATION
-{
-    UINT ViewportArrayIndex;
-    UINT RenderTargetArrayIndex;
-} D3D12_VIEW_INSTANCE_LOCATION;
-
-typedef enum D3D12_VIEW_INSTANCING_FLAGS
-{
-    D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
-    D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
-} D3D12_VIEW_INSTANCING_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )")
-
-typedef struct D3D12_VIEW_INSTANCING_DESC
-{
-    UINT ViewInstanceCount;
-    [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
-    D3D12_VIEW_INSTANCING_FLAGS Flags;
-} D3D12_VIEW_INSTANCING_DESC;
-
-// D3D12 view descriptions
-typedef enum D3D12_SHADER_COMPONENT_MAPPING
-{
-    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
-    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
-    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
-    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
-    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
-    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
-} D3D12_SHADER_COMPONENT_MAPPING;
-
-cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
-cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
-cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
-cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
-cpp_quote( "                                                                (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
-cpp_quote( "                                                                (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
-cpp_quote( "                                                                (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
-cpp_quote( "                                                                D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
-cpp_quote( "#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
-cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
-typedef enum D3D12_BUFFER_SRV_FLAGS
-{
-    D3D12_BUFFER_SRV_FLAG_NONE = 0,
-    D3D12_BUFFER_SRV_FLAG_RAW  = 0x00000001,      // allow device multi-component reads with DWORD addressing
-} D3D12_BUFFER_SRV_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )" )
-
-typedef struct D3D12_BUFFER_SRV
-{
-    UINT64 FirstElement;
-    UINT NumElements;
-    UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
-    D3D12_BUFFER_SRV_FLAGS Flags;
-} D3D12_BUFFER_SRV;
-
-typedef struct D3D12_TEX1D_SRV
-{
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    FLOAT ResourceMinLODClamp;
-} D3D12_TEX1D_SRV;
-
-typedef struct D3D12_TEX1D_ARRAY_SRV
-{
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-    FLOAT ResourceMinLODClamp;
-} D3D12_TEX1D_ARRAY_SRV;
-
-typedef struct D3D12_TEX2D_SRV
-{
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT PlaneSlice;
-    FLOAT ResourceMinLODClamp;
-} D3D12_TEX2D_SRV;
-
-typedef struct D3D12_TEX2D_ARRAY_SRV
-{
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-    UINT PlaneSlice;
-    FLOAT ResourceMinLODClamp;
-} D3D12_TEX2D_ARRAY_SRV;
-
-typedef struct D3D12_TEX3D_SRV
-{
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    FLOAT ResourceMinLODClamp;
-} D3D12_TEX3D_SRV;
-
-typedef struct D3D12_TEXCUBE_SRV
-{
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    FLOAT ResourceMinLODClamp;
-} D3D12_TEXCUBE_SRV;
-
-typedef struct D3D12_TEXCUBE_ARRAY_SRV
-{
-    UINT MostDetailedMip;
-    UINT MipLevels;
-    UINT First2DArrayFace;
-    UINT NumCubes;
-    FLOAT ResourceMinLODClamp;
-} D3D12_TEXCUBE_ARRAY_SRV;
-
-typedef struct D3D12_TEX2DMS_SRV
-{
-    // don't need to define anything specific for this view dimension
-    UINT UnusedField_NothingToDefine;
-} D3D12_TEX2DMS_SRV;
-
-typedef struct D3D12_TEX2DMS_ARRAY_SRV
-{
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX2DMS_ARRAY_SRV;
-
-typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
-{
-    D3D12_GPU_VIRTUAL_ADDRESS Location;
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
-
-typedef enum D3D12_SRV_DIMENSION {
-    D3D12_SRV_DIMENSION_UNKNOWN = 0,
-    D3D12_SRV_DIMENSION_BUFFER = 1,
-    D3D12_SRV_DIMENSION_TEXTURE1D = 2,
-    D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D12_SRV_DIMENSION_TEXTURE2D = 4,
-    D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
-    D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D12_SRV_DIMENSION_TEXTURE3D = 8,
-    D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
-    D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
-    D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
-} D3D12_SRV_DIMENSION;
-
-typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
-{
-    DXGI_FORMAT Format;
-    D3D12_SRV_DIMENSION ViewDimension;
-    UINT Shader4ComponentMapping;
-
-    union
-    {
-        D3D12_BUFFER_SRV Buffer;
-        D3D12_TEX1D_SRV Texture1D;
-        D3D12_TEX1D_ARRAY_SRV Texture1DArray;
-        D3D12_TEX2D_SRV Texture2D;
-        D3D12_TEX2D_ARRAY_SRV Texture2DArray;
-        D3D12_TEX2DMS_SRV Texture2DMS;
-        D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
-        D3D12_TEX3D_SRV Texture3D;
-        D3D12_TEXCUBE_SRV TextureCube;
-        D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
-        D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
-    };
-} D3D12_SHADER_RESOURCE_VIEW_DESC;
-
-typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
-{
-    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
-    UINT SizeInBytes; 
-} D3D12_CONSTANT_BUFFER_VIEW_DESC;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// Sampler
-//
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-typedef enum D3D12_FILTER
-{
-    // Bits used in defining enumeration of valid filters:
-    // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
-    // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
-    // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
-    // bit  [6]   - aniso
-    // bits [8:7] - reduction type:
-    //                0 == standard filtering
-    //                1 == comparison
-    //                2 == min
-    //                3 == max
-    // bit  [31]  - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
-
-    D3D12_FILTER_MIN_MAG_MIP_POINT                              = 0x00000000,
-    D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR                       = 0x00000001,
-    D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT                 = 0x00000004,
-    D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR                       = 0x00000005,
-    D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT                       = 0x00000010,
-    D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR                = 0x00000011,
-    D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT                       = 0x00000014,
-    D3D12_FILTER_MIN_MAG_MIP_LINEAR                             = 0x00000015,
-    D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT                  = 0x00000054,
-    D3D12_FILTER_ANISOTROPIC                                    = 0x00000055,
-    D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT                   = 0x00000080,
-    D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR            = 0x00000081,
-    D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT      = 0x00000084,
-    D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR            = 0x00000085,
-    D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT            = 0x00000090,
-    D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR     = 0x00000091,
-    D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT            = 0x00000094,
-    D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR                  = 0x00000095,
-    D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT       = 0x000000d4,
-    D3D12_FILTER_COMPARISON_ANISOTROPIC                         = 0x000000d5,
-    D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT                      = 0x00000100,
-    D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR               = 0x00000101,
-    D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT         = 0x00000104,
-    D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR               = 0x00000105,
-    D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT               = 0x00000110,
-    D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR        = 0x00000111,
-    D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT               = 0x00000114,
-    D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR                     = 0x00000115,
-    D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT          = 0x00000154,
-    D3D12_FILTER_MINIMUM_ANISOTROPIC                            = 0x00000155,
-    D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT                      = 0x00000180,
-    D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR               = 0x00000181,
-    D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT         = 0x00000184,
-    D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR               = 0x00000185,
-    D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT               = 0x00000190,
-    D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR        = 0x00000191,
-    D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT               = 0x00000194,
-    D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR                     = 0x00000195,
-    D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT          = 0x000001d4,
-    D3D12_FILTER_MAXIMUM_ANISOTROPIC                            = 0x000001d5
-} D3D12_FILTER;
-
-typedef enum D3D12_FILTER_TYPE
-{
-    D3D12_FILTER_TYPE_POINT = 0,
-    D3D12_FILTER_TYPE_LINEAR = 1,
-} D3D12_FILTER_TYPE;
-
-typedef enum D3D12_FILTER_REDUCTION_TYPE
-{
-    D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
-    D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
-    D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
-    D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
-} D3D12_FILTER_REDUCTION_TYPE;
-
-const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
-const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
-
-const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
-const UINT D3D12_MIN_FILTER_SHIFT = 4;
-const UINT D3D12_MAG_FILTER_SHIFT = 2;
-const UINT D3D12_MIP_FILTER_SHIFT = 0;
-
-const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
-
-// encode enum entry for most filters except anisotropic filtering
-cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction )                                                     \\" )
-cpp_quote( "                                   ( ( D3D12_FILTER ) (                                                           \\" )
-cpp_quote( "                                   ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) |           \\" )
-cpp_quote( "                                   ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) |           \\" )
-cpp_quote( "                                   ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) |           \\" )
-cpp_quote( "                                   ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
-
-// encode enum entry for anisotropic filtering (with or without comparison filtering)
-cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction )                                                  \\" )
-cpp_quote( "                                         ( ( D3D12_FILTER ) (                                         \\" )
-cpp_quote( "                                         D3D12_ANISOTROPIC_FILTERING_BIT |                            \\" )
-cpp_quote( "                                         D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR,         \\" )
-cpp_quote( "                                                                    D3D12_FILTER_TYPE_LINEAR,         \\" )
-cpp_quote( "                                                                    D3D12_FILTER_TYPE_LINEAR,         \\" )
-cpp_quote( "                                                                    reduction ) ) )                     " )
-cpp_quote( "#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction )                                \\" )
-cpp_quote( "                                         ( ( D3D12_FILTER ) (                                         \\" )
-cpp_quote( "                                         D3D12_ANISOTROPIC_FILTERING_BIT |                            \\" )
-cpp_quote( "                                         D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR,         \\" )
-cpp_quote( "                                                                    D3D12_FILTER_TYPE_LINEAR,         \\" )
-cpp_quote( "                                                                    D3D12_FILTER_TYPE_POINT,          \\" )
-cpp_quote( "                                                                    reduction ) ) )                     " )
-
-cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter )                                                              \\" )
-cpp_quote( "                                 ( ( D3D12_FILTER_TYPE )                                                    \\" )
-cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
-
-cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter )                                                              \\" )
-cpp_quote( "                                 ( ( D3D12_FILTER_TYPE )                                                    \\" )
-cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
-
-cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter )                                                              \\" )
-cpp_quote( "                                 ( ( D3D12_FILTER_TYPE )                                                    \\" )
-cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
-
-cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter )                                                        \\" )
-cpp_quote( "                                 ( ( D3D12_FILTER_REDUCTION_TYPE )                                                      \\" )
-cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
-
-cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter )                                                    \\" )
-cpp_quote( "                                 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
-
-cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter )                                               \\" )
-cpp_quote( "                            ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) &&                  \\" )
-cpp_quote( "                            ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) &&   \\" )
-cpp_quote( "                            ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) )      " )
-
-typedef enum D3D12_TEXTURE_ADDRESS_MODE
-{
-    D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
-    D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
-    D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
-    D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
-    D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
-} D3D12_TEXTURE_ADDRESS_MODE;
-
-
-
-typedef struct D3D12_SAMPLER_DESC
-{
-    D3D12_FILTER Filter;
-    D3D12_TEXTURE_ADDRESS_MODE AddressU;
-    D3D12_TEXTURE_ADDRESS_MODE AddressV;
-    D3D12_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D12_COMPARISON_FUNC ComparisonFunc;
-    FLOAT BorderColor[4]; // RGBA
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-} D3D12_SAMPLER_DESC;
-
-
-typedef enum D3D12_SAMPLER_FLAGS
-{
-    D3D12_SAMPLER_FLAG_NONE = 0x0,
-    D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x01,
-    D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x02,
-} D3D12_SAMPLER_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )")
-
-typedef struct D3D12_SAMPLER_DESC2
-{
-    D3D12_FILTER Filter;
-    D3D12_TEXTURE_ADDRESS_MODE AddressU;
-    D3D12_TEXTURE_ADDRESS_MODE AddressV;
-    D3D12_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D12_COMPARISON_FUNC ComparisonFunc;
-    union
-    {
-        FLOAT FloatBorderColor[4]; // RGBA
-        UINT  UintBorderColor[4];
-    };
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-    D3D12_SAMPLER_FLAGS Flags;
-} D3D12_SAMPLER_DESC2;
-
-
-
-typedef enum D3D12_BUFFER_UAV_FLAGS
-{
-    D3D12_BUFFER_UAV_FLAG_NONE =   0,
-    D3D12_BUFFER_UAV_FLAG_RAW  =   0x00000001,
-} D3D12_BUFFER_UAV_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )" )
-
-typedef struct D3D12_BUFFER_UAV
-{
-    UINT64 FirstElement;
-    UINT NumElements;
-    UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
-    UINT64 CounterOffsetInBytes;
-    D3D12_BUFFER_UAV_FLAGS Flags;
-} D3D12_BUFFER_UAV;
-
-typedef struct D3D12_TEX1D_UAV
-{
-    UINT MipSlice;
-} D3D12_TEX1D_UAV;
-
-typedef struct D3D12_TEX1D_ARRAY_UAV
-{
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX1D_ARRAY_UAV;
-
-typedef struct D3D12_TEX2D_UAV
-{
-    UINT MipSlice;
-    UINT PlaneSlice;
-} D3D12_TEX2D_UAV;
-
-typedef struct D3D12_TEX2D_ARRAY_UAV
-{
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-    UINT PlaneSlice;
-} D3D12_TEX2D_ARRAY_UAV;
-
-typedef struct D3D12_TEX2DMS_UAV
-{
-    // don't need to define anything specific for this view dimension
-    UINT UnusedField_NothingToDefine;
-} D3D12_TEX2DMS_UAV;
-
-typedef struct D3D12_TEX2DMS_ARRAY_UAV
-{
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX2DMS_ARRAY_UAV;
-
-typedef struct D3D12_TEX3D_UAV
-{
-    UINT MipSlice;
-    UINT FirstWSlice;
-    UINT WSize;
-} D3D12_TEX3D_UAV;
-
-typedef enum D3D12_UAV_DIMENSION
-{
-    D3D12_UAV_DIMENSION_UNKNOWN = 0,
-    D3D12_UAV_DIMENSION_BUFFER = 1,
-    D3D12_UAV_DIMENSION_TEXTURE1D = 2,
-    D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D12_UAV_DIMENSION_TEXTURE2D = 4,
-    D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
-    D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D12_UAV_DIMENSION_TEXTURE3D = 8,
-} D3D12_UAV_DIMENSION;
-
-typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
-{
-    DXGI_FORMAT Format;
-    D3D12_UAV_DIMENSION ViewDimension;
-
-    union
-    {
-        D3D12_BUFFER_UAV Buffer;
-        D3D12_TEX1D_UAV Texture1D;
-        D3D12_TEX1D_ARRAY_UAV Texture1DArray;
-        D3D12_TEX2D_UAV Texture2D;
-        D3D12_TEX2D_ARRAY_UAV Texture2DArray;
-        D3D12_TEX2DMS_UAV Texture2DMS;
-        D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
-        D3D12_TEX3D_UAV Texture3D;
-    };
-} D3D12_UNORDERED_ACCESS_VIEW_DESC;
-
-typedef struct D3D12_BUFFER_RTV
-{
-    UINT64 FirstElement;
-    UINT NumElements;
-} D3D12_BUFFER_RTV;
-
-typedef struct D3D12_TEX1D_RTV
-{
-    UINT MipSlice;
-} D3D12_TEX1D_RTV;
-
-typedef struct D3D12_TEX1D_ARRAY_RTV
-{
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX1D_ARRAY_RTV;
-
-typedef struct D3D12_TEX2D_RTV
-{
-    UINT MipSlice;
-    UINT PlaneSlice;
-} D3D12_TEX2D_RTV;
-
-typedef struct D3D12_TEX2DMS_RTV
-{
-    UINT UnusedField_NothingToDefine;
-} D3D12_TEX2DMS_RTV;
-
-typedef struct D3D12_TEX2D_ARRAY_RTV
-{
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-    UINT PlaneSlice;
-} D3D12_TEX2D_ARRAY_RTV;
-
-typedef struct D3D12_TEX2DMS_ARRAY_RTV
-{
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX2DMS_ARRAY_RTV;
-
-typedef struct D3D12_TEX3D_RTV
-{
-    UINT MipSlice;
-    UINT FirstWSlice;
-    UINT WSize;
-} D3D12_TEX3D_RTV;
-
-typedef enum D3D12_RTV_DIMENSION
-{
-    D3D12_RTV_DIMENSION_UNKNOWN = 0,
-    D3D12_RTV_DIMENSION_BUFFER = 1,
-    D3D12_RTV_DIMENSION_TEXTURE1D = 2,
-    D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D12_RTV_DIMENSION_TEXTURE2D = 4,
-    D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
-    D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D12_RTV_DIMENSION_TEXTURE3D = 8,
-} D3D12_RTV_DIMENSION;
-
-typedef struct D3D12_RENDER_TARGET_VIEW_DESC
-{
-    DXGI_FORMAT Format;
-    D3D12_RTV_DIMENSION ViewDimension;
-
-    union
-    {
-        D3D12_BUFFER_RTV Buffer;
-        D3D12_TEX1D_RTV Texture1D;
-        D3D12_TEX1D_ARRAY_RTV Texture1DArray;
-        D3D12_TEX2D_RTV Texture2D;
-        D3D12_TEX2D_ARRAY_RTV Texture2DArray;
-        D3D12_TEX2DMS_RTV Texture2DMS;
-        D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
-        D3D12_TEX3D_RTV Texture3D;
-    };
-} D3D12_RENDER_TARGET_VIEW_DESC;
-
-typedef struct D3D12_TEX1D_DSV
-{
-    UINT MipSlice;
-} D3D12_TEX1D_DSV;
-
-typedef struct D3D12_TEX1D_ARRAY_DSV
-{
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX1D_ARRAY_DSV;
-
-typedef struct D3D12_TEX2D_DSV
-{
-    UINT MipSlice;
-} D3D12_TEX2D_DSV;
-
-typedef struct D3D12_TEX2D_ARRAY_DSV
-{
-    UINT MipSlice;
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX2D_ARRAY_DSV;
-
-typedef struct D3D12_TEX2DMS_DSV
-{
-    UINT UnusedField_NothingToDefine;
-} D3D12_TEX2DMS_DSV;
-
-typedef struct D3D12_TEX2DMS_ARRAY_DSV
-{
-    UINT FirstArraySlice;
-    UINT ArraySize;
-} D3D12_TEX2DMS_ARRAY_DSV;
-
-typedef enum D3D12_DSV_FLAGS
-{
-    D3D12_DSV_FLAG_NONE              = 0x0,
-    D3D12_DSV_FLAG_READ_ONLY_DEPTH   = 0x1,
-    D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
-} D3D12_DSV_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )" )
-
-typedef enum D3D12_DSV_DIMENSION
-{
-    D3D12_DSV_DIMENSION_UNKNOWN = 0,
-    D3D12_DSV_DIMENSION_TEXTURE1D = 1,
-    D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
-    D3D12_DSV_DIMENSION_TEXTURE2D = 3,
-    D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
-    D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
-    D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
-} D3D12_DSV_DIMENSION;
-
-typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
-{
-    DXGI_FORMAT Format;
-    D3D12_DSV_DIMENSION ViewDimension;
-    D3D12_DSV_FLAGS Flags;
-
-    union
-    {
-        D3D12_TEX1D_DSV Texture1D;
-        D3D12_TEX1D_ARRAY_DSV Texture1DArray;
-        D3D12_TEX2D_DSV Texture2D;
-        D3D12_TEX2D_ARRAY_DSV Texture2DArray;
-        D3D12_TEX2DMS_DSV Texture2DMS;
-        D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
-    };
-} D3D12_DEPTH_STENCIL_VIEW_DESC;
-
-typedef enum D3D12_CLEAR_FLAGS
-{
-    // Intentionally no flag for NONE
-    D3D12_CLEAR_FLAG_DEPTH   = 0x01,
-    D3D12_CLEAR_FLAG_STENCIL = 0x02,
-} D3D12_CLEAR_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )" )
-
-typedef enum D3D12_FENCE_FLAGS
-{
-    D3D12_FENCE_FLAG_NONE = 0x0,
-    D3D12_FENCE_FLAG_SHARED = 0x1,
-    D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
-    D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
-} D3D12_FENCE_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )" )
-
-typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
-{
-    D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
-    D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
-    D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
-    D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
-    D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
-} D3D12_DESCRIPTOR_HEAP_TYPE;
-
-typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
-{
-    D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
-    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
-} D3D12_DESCRIPTOR_HEAP_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )" )
-
-typedef struct D3D12_DESCRIPTOR_HEAP_DESC
-{
-    D3D12_DESCRIPTOR_HEAP_TYPE Type;
-    UINT NumDescriptors;
-    D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
-    UINT NodeMask;
-} D3D12_DESCRIPTOR_HEAP_DESC;
-
-typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
-{
-    D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
-    D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
-    D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
-    D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
-} D3D12_DESCRIPTOR_RANGE_TYPE;
-
-typedef struct D3D12_DESCRIPTOR_RANGE
-{
-    D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
-    UINT NumDescriptors;
-    UINT BaseShaderRegister;
-    UINT RegisterSpace;
-    UINT OffsetInDescriptorsFromTableStart;
-} D3D12_DESCRIPTOR_RANGE;
-
-
-typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
-{
-    UINT NumDescriptorRanges;
-    [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
-} D3D12_ROOT_DESCRIPTOR_TABLE;
-
-
-typedef struct D3D12_ROOT_CONSTANTS
-{
-    UINT ShaderRegister;
-    UINT RegisterSpace;
-    UINT Num32BitValues;
-} D3D12_ROOT_CONSTANTS;
-
-typedef struct D3D12_ROOT_DESCRIPTOR
-{
-    UINT ShaderRegister;
-    UINT RegisterSpace;
-} D3D12_ROOT_DESCRIPTOR;
-
-typedef enum D3D12_SHADER_VISIBILITY
-{
-    D3D12_SHADER_VISIBILITY_ALL = 0,
-    D3D12_SHADER_VISIBILITY_VERTEX = 1,
-    D3D12_SHADER_VISIBILITY_HULL = 2,
-    D3D12_SHADER_VISIBILITY_DOMAIN = 3,
-    D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
-    D3D12_SHADER_VISIBILITY_PIXEL = 5,
-    D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
-    D3D12_SHADER_VISIBILITY_MESH = 7,
-} D3D12_SHADER_VISIBILITY;
-
-typedef enum D3D12_ROOT_PARAMETER_TYPE
-{
-    D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
-    D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
-    D3D12_ROOT_PARAMETER_TYPE_CBV,
-    D3D12_ROOT_PARAMETER_TYPE_SRV,
-    D3D12_ROOT_PARAMETER_TYPE_UAV
-} D3D12_ROOT_PARAMETER_TYPE;
-
-typedef struct D3D12_ROOT_PARAMETER
-{
-    D3D12_ROOT_PARAMETER_TYPE ParameterType;
-    union
-    {
-        D3D12_ROOT_DESCRIPTOR_TABLE    DescriptorTable;
-        D3D12_ROOT_CONSTANTS           Constants;
-        D3D12_ROOT_DESCRIPTOR          Descriptor;
-    };
-    D3D12_SHADER_VISIBILITY ShaderVisibility;
-} D3D12_ROOT_PARAMETER;
-
-typedef enum D3D12_ROOT_SIGNATURE_FLAGS
-{
-    D3D12_ROOT_SIGNATURE_FLAG_NONE                                  = 0x0,
-    D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT    = 0x1,
-    D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS        = 0x2,
-    D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS          = 0x4,
-    D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS        = 0x8,
-    D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS      = 0x10,
-    D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS         = 0x20,
-    D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT                   = 0x40,
-    D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE                  = 0x80,
-    D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
-    D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS          = 0x200,
-    D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED     = 0x400,
-    D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED         = 0x800,
-} D3D12_ROOT_SIGNATURE_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )" )
-
-
-typedef enum D3D12_STATIC_BORDER_COLOR
-{
-    D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
-    D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
-    D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
-    D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT, // 0,0,0,1
-    D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT,  // 1,1,1,1
-
-} D3D12_STATIC_BORDER_COLOR;
-
-typedef struct D3D12_STATIC_SAMPLER_DESC
-{
-    D3D12_FILTER Filter;
-    D3D12_TEXTURE_ADDRESS_MODE AddressU;
-    D3D12_TEXTURE_ADDRESS_MODE AddressV;
-    D3D12_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D12_COMPARISON_FUNC ComparisonFunc;
-    D3D12_STATIC_BORDER_COLOR BorderColor; 
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-    UINT ShaderRegister; 
-    UINT RegisterSpace; 
-    D3D12_SHADER_VISIBILITY ShaderVisibility;    
-} D3D12_STATIC_SAMPLER_DESC;
-
-typedef struct D3D12_STATIC_SAMPLER_DESC1
-{
-    D3D12_FILTER Filter;
-    D3D12_TEXTURE_ADDRESS_MODE AddressU;
-    D3D12_TEXTURE_ADDRESS_MODE AddressV;
-    D3D12_TEXTURE_ADDRESS_MODE AddressW;
-    FLOAT MipLODBias;
-    UINT MaxAnisotropy;
-    D3D12_COMPARISON_FUNC ComparisonFunc;
-    D3D12_STATIC_BORDER_COLOR BorderColor;
-    FLOAT MinLOD;
-    FLOAT MaxLOD;
-    UINT ShaderRegister;
-    UINT RegisterSpace;
-    D3D12_SHADER_VISIBILITY ShaderVisibility;
-    D3D12_SAMPLER_FLAGS Flags;
-} D3D12_STATIC_SAMPLER_DESC1;
-
-typedef struct D3D12_ROOT_SIGNATURE_DESC
-{
-    UINT NumParameters;
-    [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
-    UINT NumStaticSamplers;
-    [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
-    D3D12_ROOT_SIGNATURE_FLAGS Flags;
-} D3D12_ROOT_SIGNATURE_DESC;
-
-typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
-{
-    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
-    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
-    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
-    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
-    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
-    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
-} D3D12_DESCRIPTOR_RANGE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )")
-
-typedef struct D3D12_DESCRIPTOR_RANGE1
-{
-    D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
-    UINT NumDescriptors;
-    UINT BaseShaderRegister;
-    UINT RegisterSpace;
-    D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
-    UINT OffsetInDescriptorsFromTableStart;
-} D3D12_DESCRIPTOR_RANGE1;
-
-typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
-{
-    UINT NumDescriptorRanges;
-    [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
-} D3D12_ROOT_DESCRIPTOR_TABLE1;
-
-typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
-{
-    D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
-    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
-    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
-    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
-} D3D12_ROOT_DESCRIPTOR_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )")
-
-typedef struct D3D12_ROOT_DESCRIPTOR1
-{
-    UINT ShaderRegister;
-    UINT RegisterSpace;
-    D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
-} D3D12_ROOT_DESCRIPTOR1;
-
-typedef struct D3D12_ROOT_PARAMETER1
-{
-    D3D12_ROOT_PARAMETER_TYPE ParameterType;
-    union
-    {
-        D3D12_ROOT_DESCRIPTOR_TABLE1   DescriptorTable;
-        D3D12_ROOT_CONSTANTS           Constants;
-        D3D12_ROOT_DESCRIPTOR1         Descriptor;
-    };
-    D3D12_SHADER_VISIBILITY ShaderVisibility;
-} D3D12_ROOT_PARAMETER1;
-
-typedef struct D3D12_ROOT_SIGNATURE_DESC1
-{
-    UINT NumParameters;
-    [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
-    UINT NumStaticSamplers;
-    [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
-    D3D12_ROOT_SIGNATURE_FLAGS Flags;
-} D3D12_ROOT_SIGNATURE_DESC1;
-
-typedef struct D3D12_ROOT_SIGNATURE_DESC2
-{
-    UINT NumParameters;
-    [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
-    UINT NumStaticSamplers;
-    [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC1* pStaticSamplers;
-    D3D12_ROOT_SIGNATURE_FLAGS Flags;
-} D3D12_ROOT_SIGNATURE_DESC2;
-
-
-typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
-{
-    D3D_ROOT_SIGNATURE_VERSION Version;
-    union
-    {
-        D3D12_ROOT_SIGNATURE_DESC   Desc_1_0;
-        D3D12_ROOT_SIGNATURE_DESC1  Desc_1_1;
-        D3D12_ROOT_SIGNATURE_DESC2  Desc_1_2;
-    };
-} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
-
-[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
-interface ID3D12RootSignatureDeserializer
-    : IUnknown
-{
-    const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
-};
-
-[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
-interface ID3D12VersionedRootSignatureDeserializer
-    : IUnknown
-{    
-    HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
-    const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
-};
-
-cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
-cpp_quote( "                            _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
-cpp_quote( "                            _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
-cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
-cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
-cpp_quote( "" )
-cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
-cpp_quote( "                            _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
-cpp_quote( "                            _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
-cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
-cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
-cpp_quote( "" )
-cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
-cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
-cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
-cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
-cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
-cpp_quote( "" )
-cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
-cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
-cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
-cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
-cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
-cpp_quote( "" )
-cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
-cpp_quote( "                            _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
-cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
-cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
-cpp_quote( "" )
-cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
-cpp_quote( "                            _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
-cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
-cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
-cpp_quote( "" )
-cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)("  )
-cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
-cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
-cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
-cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
-cpp_quote( "" )
-cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
-cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
-cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
-cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
-cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
-cpp_quote( "" )
-
-
-
-typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
-{
-    SIZE_T ptr;
-} D3D12_CPU_DESCRIPTOR_HANDLE; 
-
-
-typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
-{
-    UINT64 ptr;
-} D3D12_GPU_DESCRIPTOR_HANDLE;
-
-cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
-cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
-typedef struct D3D12_DISCARD_REGION
-{
-    UINT NumRects;
-    [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
-    UINT FirstSubresource;
-    UINT NumSubresources;
-} D3D12_DISCARD_REGION;
-
-typedef enum D3D12_QUERY_HEAP_TYPE
-{
-    D3D12_QUERY_HEAP_TYPE_OCCLUSION                            = 0,
-    D3D12_QUERY_HEAP_TYPE_TIMESTAMP                            = 1,
-    D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS                  = 2,
-    D3D12_QUERY_HEAP_TYPE_SO_STATISTICS                        = 3,
-    D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS              = 4, 
-    D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP                 = 5,
-    D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1                 = 7,
-
-} D3D12_QUERY_HEAP_TYPE;
-
-typedef struct D3D12_QUERY_HEAP_DESC
-{
-    D3D12_QUERY_HEAP_TYPE Type;
-    UINT Count;
-    UINT NodeMask;
-} D3D12_QUERY_HEAP_DESC; 
-
-typedef enum D3D12_QUERY_TYPE
-{
-    D3D12_QUERY_TYPE_OCCLUSION                      = 0,
-    D3D12_QUERY_TYPE_BINARY_OCCLUSION               = 1,
-    D3D12_QUERY_TYPE_TIMESTAMP                      = 2,
-    D3D12_QUERY_TYPE_PIPELINE_STATISTICS            = 3,
-    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0          = 4,
-    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1          = 5,
-    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2          = 6,
-    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3          = 7,
-    D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS        = 8,
-    D3D12_QUERY_TYPE_PIPELINE_STATISTICS1           = 10,
-
-} D3D12_QUERY_TYPE;
-
-typedef enum D3D12_PREDICATION_OP
-{
-    D3D12_PREDICATION_OP_EQUAL_ZERO     = 0,
-    D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
-} D3D12_PREDICATION_OP;
-
-typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
-{
-    UINT64 IAVertices;
-    UINT64 IAPrimitives;
-    UINT64 VSInvocations;
-    UINT64 GSInvocations;
-    UINT64 GSPrimitives;
-    UINT64 CInvocations;
-    UINT64 CPrimitives;
-    UINT64 PSInvocations;
-    UINT64 HSInvocations;
-    UINT64 DSInvocations;
-    UINT64 CSInvocations;
-} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
-
-typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
-{
-    UINT64 IAVertices;
-    UINT64 IAPrimitives;
-    UINT64 VSInvocations;
-    UINT64 GSInvocations;
-    UINT64 GSPrimitives;
-    UINT64 CInvocations;
-    UINT64 CPrimitives;
-    UINT64 PSInvocations;
-    UINT64 HSInvocations;
-    UINT64 DSInvocations;
-    UINT64 CSInvocations;
-    UINT64 ASInvocations;
-    UINT64 MSInvocations;
-    UINT64 MSPrimitives;
-} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
-
-typedef struct D3D12_QUERY_DATA_SO_STATISTICS
-{
-    UINT64 NumPrimitivesWritten;
-    UINT64 PrimitivesStorageNeeded;
-} D3D12_QUERY_DATA_SO_STATISTICS;
-
-typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
-{
-    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
-    UINT64 SizeInBytes;
-    D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
-} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
-
-typedef struct D3D12_DRAW_ARGUMENTS
-{
-    UINT VertexCountPerInstance;
-    UINT InstanceCount;
-    UINT StartVertexLocation;
-    UINT StartInstanceLocation;
-} D3D12_DRAW_ARGUMENTS;
-
-typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
-{
-    UINT IndexCountPerInstance;
-    UINT InstanceCount;
-    UINT StartIndexLocation;
-    INT  BaseVertexLocation;
-    UINT StartInstanceLocation;
-} D3D12_DRAW_INDEXED_ARGUMENTS;
-
-typedef struct D3D12_DISPATCH_ARGUMENTS
-{
-    UINT ThreadGroupCountX;
-    UINT ThreadGroupCountY;
-    UINT ThreadGroupCountZ;
-} D3D12_DISPATCH_ARGUMENTS;
-
-typedef struct D3D12_VERTEX_BUFFER_VIEW
-{
-    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
-    UINT SizeInBytes; 
-    UINT StrideInBytes;
-} D3D12_VERTEX_BUFFER_VIEW;
-
-typedef struct D3D12_INDEX_BUFFER_VIEW
-{
-    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
-    UINT SizeInBytes; 
-    DXGI_FORMAT Format;
-} D3D12_INDEX_BUFFER_VIEW;
-
-typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
-{
-    D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
-    D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
-    D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
-    D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
-    D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
-    D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
-    D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
-    D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
-    D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
-    D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
-    D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
-    D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT,
-} D3D12_INDIRECT_ARGUMENT_TYPE;
-
-typedef struct D3D12_INDIRECT_ARGUMENT_DESC
-{
-    D3D12_INDIRECT_ARGUMENT_TYPE Type;
-
-    union
-    {
-        struct
-        {
-            UINT Slot;
-        } VertexBuffer;
-
-        struct
-        {
-            UINT RootParameterIndex;
-            UINT DestOffsetIn32BitValues;
-            UINT Num32BitValuesToSet;
-        } Constant;
-
-        struct
-        {
-            UINT RootParameterIndex;
-        } ConstantBufferView;
-
-        struct
-        {
-            UINT RootParameterIndex;
-        } ShaderResourceView;
-
-        struct
-        {
-            UINT RootParameterIndex;
-        } UnorderedAccessView;
-
-        // Tier 1.1 support
-        struct
-        {
-            UINT RootParameterIndex;
-            UINT DestOffsetIn32BitValues;
-        } IncrementingConstant;
-    };
-} D3D12_INDIRECT_ARGUMENT_DESC;
-
-typedef struct D3D12_COMMAND_SIGNATURE_DESC
-{
-    // The number of bytes between each drawing structure
-    UINT ByteStride; 
-    UINT NumArgumentDescs;
-    [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
-    UINT NodeMask;
-} D3D12_COMMAND_SIGNATURE_DESC;
-
-interface ID3D12Device;
-
-[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
-interface ID3D12Object
-    : IUnknown
-{
-    HRESULT GetPrivateData(
-        [annotation("_In_")] REFGUID guid,
-        [annotation("_Inout_")] UINT* pDataSize,
-        [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
-    HRESULT SetPrivateData(
-        [annotation("_In_")] REFGUID guid,
-        [annotation("_In_")] UINT DataSize,
-        [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
-    HRESULT SetPrivateDataInterface(
-        [annotation("_In_")] REFGUID guid,
-        [annotation("_In_opt_")] const IUnknown* pData );
-    HRESULT SetName(
-        [annotation("_In_z_")] LPCWSTR Name );
-}
-
-[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
-interface ID3D12DeviceChild
-    : ID3D12Object
-{
-    HRESULT GetDevice( 
-        [in] REFIID riid,
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
-        );
-}
-
-[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
-interface ID3D12Pageable
-    : ID3D12DeviceChild
-{
-}
-
-[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
-interface ID3D12Heap
-    : ID3D12Pageable
-{
-    D3D12_HEAP_DESC GetDesc();
-}
-
-[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
-interface ID3D12Resource
-    : ID3D12Pageable
-{
-    HRESULT Map(
-        UINT Subresource,
-        [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
-        [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
-
-    void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
-
-    D3D12_RESOURCE_DESC GetDesc();
-
-    D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
-
-    HRESULT WriteToSubresource(
-        UINT DstSubresource,
-        [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
-        [annotation("_In_")] const void* pSrcData,
-        UINT SrcRowPitch,
-        UINT SrcDepthPitch );
-        
-    HRESULT ReadFromSubresource(
-        [annotation("_Out_")] void* pDstData,
-        UINT DstRowPitch,
-        UINT DstDepthPitch,
-        UINT SrcSubresource,
-        [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
-
-    HRESULT GetHeapProperties(
-        [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
-        [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
-        );
-}
-
-[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
-interface ID3D12CommandAllocator
-    : ID3D12Pageable
-{
-    HRESULT Reset();
-}
-
-[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
-interface ID3D12Fence 
-    : ID3D12Pageable
-{
-    UINT64 GetCompletedValue();
-    HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
-    HRESULT Signal(UINT64 Value);
-};
-
-[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
-interface ID3D12Fence1
-    : ID3D12Fence
-{
-    D3D12_FENCE_FLAGS GetCreationFlags();
-};
-
-[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
-interface ID3D12PipelineState
-    : ID3D12Pageable
-{
-    HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
-}
-
-[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
-interface ID3D12DescriptorHeap
-    : ID3D12Pageable
-{
-    D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
-
-    D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
-    D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
-}
-
-[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
-interface ID3D12QueryHeap
-    : ID3D12Pageable
-{
-};
-
-[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
-interface ID3D12CommandSignature
-    : ID3D12Pageable
-{
-};
-
-[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
-interface ID3D12CommandList
-    : ID3D12DeviceChild
-{
-    D3D12_COMMAND_LIST_TYPE GetType();
-}
-
-// Superseded by ID3D12GraphicsCommandList1
-[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
-interface ID3D12GraphicsCommandList
-    : ID3D12CommandList
-{
-    HRESULT Close();
-
-    HRESULT Reset(
-        [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
-        [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
-        );
-
-    void ClearState(
-        [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
-        );
-
-    void DrawInstanced(
-        [annotation("_In_")] UINT VertexCountPerInstance,
-        [annotation("_In_")] UINT InstanceCount,
-        [annotation("_In_")] UINT StartVertexLocation,
-        [annotation("_In_")] UINT StartInstanceLocation
-        );
-
-    void DrawIndexedInstanced(
-        [annotation("_In_")] UINT IndexCountPerInstance,
-        [annotation("_In_")] UINT InstanceCount,
-        [annotation("_In_")] UINT StartIndexLocation,
-        [annotation("_In_")] INT BaseVertexLocation,
-        [annotation("_In_")] UINT StartInstanceLocation
-        );
-
-    void Dispatch(
-        [annotation("_In_")] UINT ThreadGroupCountX,
-        [annotation("_In_")] UINT ThreadGroupCountY,
-        [annotation("_In_")] UINT ThreadGroupCountZ
-        );
-
-    void CopyBufferRegion(
-        [annotation("_In_")] ID3D12Resource* pDstBuffer,
-        UINT64 DstOffset,
-        [annotation("_In_")] ID3D12Resource* pSrcBuffer,
-        UINT64 SrcOffset,
-        UINT64 NumBytes
-        );
-
-    void CopyTextureRegion(
-        [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
-        UINT DstX, UINT DstY, UINT DstZ,
-        [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
-        [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
-        );
-
-    void CopyResource(
-        [annotation("_In_")] ID3D12Resource* pDstResource,
-        [annotation("_In_")] ID3D12Resource* pSrcResource
-        );
-
-    void CopyTiles(
-        [annotation("_In_")] ID3D12Resource* pTiledResource,
-        [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
-        [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
-        [annotation("_In_")] ID3D12Resource* pBuffer,
-        UINT64 BufferStartOffsetInBytes,
-        D3D12_TILE_COPY_FLAGS Flags
-        );
-
-    void ResolveSubresource(
-        [annotation("_In_")] ID3D12Resource* pDstResource,
-        [annotation("_In_")] UINT DstSubresource,
-        [annotation("_In_")] ID3D12Resource* pSrcResource,
-        [annotation("_In_")] UINT SrcSubresource,
-        [annotation("_In_")] DXGI_FORMAT Format
-        );
-
-    void IASetPrimitiveTopology(
-        [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
-        );
-
-    void RSSetViewports(
-        [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
-        [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
-        );
-
-    void RSSetScissorRects(
-        [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
-        [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
-        );
-
-    void OMSetBlendFactor(
-        [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
-        );
-
-    void OMSetStencilRef(
-        [annotation("_In_")] UINT StencilRef
-        );
-
-    void SetPipelineState(
-        [annotation("_In_")] ID3D12PipelineState* pPipelineState
-        );
-
-    void ResourceBarrier(
-        [annotation("_In_")] UINT NumBarriers,
-        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
-        );
-
-    void ExecuteBundle(
-        [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
-        );
-
-    void SetDescriptorHeaps(
-        [annotation("_In_")] UINT NumDescriptorHeaps,
-        [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
-        );
-
-    void SetComputeRootSignature(
-        [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
-        );
-
-    void SetGraphicsRootSignature(
-        [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
-        );
-
-    void SetComputeRootDescriptorTable(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
-        );
-
-    void SetGraphicsRootDescriptorTable(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
-        );
-
-    // Single constant
-    void SetComputeRoot32BitConstant(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] UINT SrcData,
-        [annotation("_In_")] UINT DestOffsetIn32BitValues
-        );
-
-    void SetGraphicsRoot32BitConstant(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] UINT SrcData,
-        [annotation("_In_")] UINT DestOffsetIn32BitValues
-        );
-
-    // Group of constants
-    void SetComputeRoot32BitConstants(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] UINT Num32BitValuesToSet,
-        [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
-        [annotation("_In_")] UINT DestOffsetIn32BitValues
-        );
-
-    void SetGraphicsRoot32BitConstants(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] UINT Num32BitValuesToSet,
-        [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
-        [annotation("_In_")] UINT DestOffsetIn32BitValues
-        );
-
-    // CBV
-    void SetComputeRootConstantBufferView(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
-        );
-
-    void SetGraphicsRootConstantBufferView(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
-        );
-
-    // SRV 
-    void SetComputeRootShaderResourceView(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
-        );
-
-    void SetGraphicsRootShaderResourceView(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
-        );
-
-    // UAV 
-    void SetComputeRootUnorderedAccessView(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
-        );
-
-    void SetGraphicsRootUnorderedAccessView(
-        [annotation("_In_")] UINT RootParameterIndex,
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
-        );
-
-    void IASetIndexBuffer(
-        [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
-        );
-
-    void IASetVertexBuffers(
-        [annotation("_In_")] UINT StartSlot,
-        [annotation("_In_")] UINT NumViews,
-        [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
-        );
-
-    void SOSetTargets(
-        [annotation("_In_")] UINT StartSlot,
-        [annotation("_In_")] UINT NumViews,
-        [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
-        );
-
-    void OMSetRenderTargets(
-        [annotation("_In_")] UINT NumRenderTargetDescriptors,
-        [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
-        [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
-        [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
-        );
-
-    void ClearDepthStencilView(
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
-        [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
-        [annotation("_In_")] FLOAT Depth,
-        [annotation("_In_")] UINT8 Stencil,
-        [annotation("_In_")] UINT NumRects,
-        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
-        );
-
-    void ClearRenderTargetView(
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
-        [annotation("_In_")] const FLOAT ColorRGBA[4],
-        [annotation("_In_")] UINT NumRects,
-        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
-        );
-
-    void ClearUnorderedAccessViewUint(
-        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
-        [annotation("_In_")] ID3D12Resource* pResource,
-        [annotation("_In_")] const UINT Values[4],
-        [annotation("_In_")] UINT NumRects,
-        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
-        );
-
-    void ClearUnorderedAccessViewFloat(
-        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
-        [annotation("_In_")] ID3D12Resource* pResource,
-        [annotation("_In_")] const FLOAT Values[4],
-        [annotation("_In_")] UINT NumRects,
-        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
-        );
-
-    void DiscardResource(
-        [annotation("_In_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
-        );
-
-    void BeginQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void EndQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void ResolveQueryData(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT StartIndex,
-        [annotation("_In_")] UINT NumQueries,
-        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
-        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
-        );
-
-    void SetPredication(
-        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
-        [annotation("_In_")] UINT64 AlignedBufferOffset,
-        [annotation("_In_")] D3D12_PREDICATION_OP Operation
-        );
-
-    void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
-    void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
-    void EndEvent();
-
-    void ExecuteIndirect(
-        [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
-        [annotation("_In_")] UINT MaxCommandCount,
-        [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
-        [annotation("_In_")] UINT64 ArgumentBufferOffset,
-        [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
-        [annotation("_In_")] UINT64 CountBufferOffset
-        );
-}
-
-[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
-interface ID3D12GraphicsCommandList1
-    : ID3D12GraphicsCommandList
-{
-    void AtomicCopyBufferUINT( 
-        [annotation("_In_")] ID3D12Resource* pDstBuffer,
-        UINT64 DstOffset,
-        [annotation("_In_")] ID3D12Resource* pSrcBuffer,
-        UINT64 SrcOffset,
-        UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
-        [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
-        [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
-        );
-
-    // UINT64 is only valid on UMA architectures
-    void AtomicCopyBufferUINT64(
-        [annotation("_In_")] ID3D12Resource* pDstBuffer,
-        UINT64 DstOffset,
-        [annotation("_In_")] ID3D12Resource* pSrcBuffer,
-        UINT64 SrcOffset,
-        UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
-        [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
-        [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
-        );
-
-    void OMSetDepthBounds(
-        [annotation("_In_")] FLOAT Min,
-        [annotation("_In_")] FLOAT Max
-        );
-
-    void SetSamplePositions(
-        [annotation("_In_")] UINT NumSamplesPerPixel,
-        [annotation("_In_")] UINT NumPixels,
-        [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
-        );
-
-    void ResolveSubresourceRegion(
-        [annotation("_In_")] ID3D12Resource* pDstResource,
-        [annotation("_In_")] UINT DstSubresource,
-        [annotation("_In_")] UINT DstX,
-        [annotation("_In_")] UINT DstY,
-        [annotation("_In_")] ID3D12Resource* pSrcResource,
-        [annotation("_In_")] UINT SrcSubresource,
-        [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
-        [annotation("_In_")] DXGI_FORMAT Format,
-        [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
-    );
-
-    void SetViewInstanceMask(
-        [annotation("_In_")] UINT Mask
-    );
-
-}
-
-typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
-{
-    D3D12_GPU_VIRTUAL_ADDRESS Dest;
-    UINT32 Value;
-} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
-
-typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
-{
-    D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT     = 0x0,
-    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN    = 0x1,
-    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT   = 0x2,
-
-} D3D12_WRITEBUFFERIMMEDIATE_MODE;
-
-[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
-{
-    void WriteBufferImmediate(
-        UINT Count,
-        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
-        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
-    );
-}
-
-[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
-interface ID3D12CommandQueue
-    : ID3D12Pageable
-{
-    void UpdateTileMappings(
-        [annotation("_In_")] ID3D12Resource* pResource,
-        UINT NumResourceRegions,
-        [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
-        [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
-        [annotation("_In_opt_")] ID3D12Heap* pHeap,
-        UINT NumRanges,
-        [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
-        [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
-        [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
-        D3D12_TILE_MAPPING_FLAGS Flags );
-
-    void CopyTileMappings(
-        [annotation("_In_")] ID3D12Resource* pDstResource,
-        [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
-        [annotation("_In_")] ID3D12Resource* pSrcResource,
-        [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
-        [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
-        D3D12_TILE_MAPPING_FLAGS Flags );
-
-    void ExecuteCommandLists(
-        [annotation("_In_")] UINT NumCommandLists,
-        [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
-        );
-
-    void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
-    void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
-    void EndEvent();
-
-    HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
-    HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
-
-    HRESULT GetTimestampFrequency(
-        [annotation("_Out_")] UINT64* pFrequency
-        );
-
-    HRESULT GetClockCalibration(
-        [annotation("_Out_")] UINT64* pGpuTimestamp,
-        [annotation("_Out_")] UINT64* pCpuTimestamp
-        );
-
-    D3D12_COMMAND_QUEUE_DESC GetDesc();
-}
-
-//--------------------------------------------------------------------------------------------------------
-// The system LUID struct isn't defined in wtypes, so we repeat it here just
-// for the MIDL compiler.
-cpp_quote("#ifdef __midl")
-cpp_quote("#ifndef LUID_DEFINED")
-cpp_quote("#define LUID_DEFINED 1")
-typedef struct __LUID {
-    DWORD LowPart;
-    LONG HighPart;
-} LUID, *PLUID;
-cpp_quote("#endif")
-cpp_quote("#endif")
-
-[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
-interface ID3D12Device
-    : ID3D12Object
-{
-    UINT GetNodeCount();
-
-    HRESULT CreateCommandQueue(
-        [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12CommandQueue
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue 
-        );
-
-    HRESULT CreateCommandAllocator(
-        [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
-        [in] REFIID riid, // Expected: ID3D12CommandAllocator
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
-        );
-
-    HRESULT CreateGraphicsPipelineState(
-        [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12PipelineState
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
-        );
-
-    HRESULT CreateComputePipelineState(
-        [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12PipelineState
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
-        );
-
-    HRESULT CreateCommandList(
-        [annotation("_In_")] UINT nodeMask,
-        [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
-        [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
-        [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
-        [in] REFIID riid, // Expected: ID3D12CommandList
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
-        );
-
-    HRESULT CheckFeatureSupport(
-        D3D12_FEATURE Feature,
-        [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
-        UINT FeatureSupportDataSize
-        );
-
-    HRESULT CreateDescriptorHeap(
-        [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
-        [in] REFIID riid, // Expected ID3D12DescriptorHeap
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
-
-    UINT GetDescriptorHandleIncrementSize(
-        [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
-
-    HRESULT CreateRootSignature(
-        [annotation("_In_")] UINT nodeMask,
-        [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
-        [annotation("_In_")] SIZE_T blobLengthInBytes,
-        [in] REFIID riid, // Expected ID3D12RootSignature
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
-
-    void CreateConstantBufferView(
-        [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-
-    void CreateShaderResourceView(
-        [annotation("_In_opt_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-
-    void CreateUnorderedAccessView(
-        [annotation("_In_opt_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
-        [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-
-    void CreateRenderTargetView(
-        [annotation("_In_opt_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-
-    void CreateDepthStencilView(
-        [annotation("_In_opt_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-
-    void CreateSampler(
-        [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-
-    void CopyDescriptors(
-        [annotation("_In_")] UINT NumDestDescriptorRanges,
-        [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
-        [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
-        [annotation("_In_")] UINT NumSrcDescriptorRanges,
-        [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
-        [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
-        [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
-
-    void CopyDescriptorsSimple(
-        [annotation("_In_")] UINT NumDescriptors,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
-        [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
-
-    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
-        [annotation("_In_")] UINT visibleMask,
-        [annotation("_In_")] UINT numResourceDescs,
-        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
-
-    D3D12_HEAP_PROPERTIES GetCustomHeapProperties( 
-        [annotation("_In_")] UINT nodeMask,
-        D3D12_HEAP_TYPE heapType 
-        );
-
-    HRESULT CreateCommittedResource(
-        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
-        D3D12_HEAP_FLAGS HeapFlags,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
-        D3D12_RESOURCE_STATES InitialResourceState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [in] REFIID riidResource, // Expected: ID3D12Resource*
-        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
-
-    HRESULT CreateHeap(
-        [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12Heap*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
-
-    HRESULT CreatePlacedResource(
-        [annotation("_In_")] ID3D12Heap* pHeap,
-        UINT64 HeapOffset,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
-        D3D12_RESOURCE_STATES InitialState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [in] REFIID riid, // Expected: ID3D12Resource*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
-
-    HRESULT CreateReservedResource(
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
-        D3D12_RESOURCE_STATES InitialState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [in] REFIID riid, // Expected: ID3D12Resource*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
-        
-    HRESULT CreateSharedHandle(
-        [annotation("_In_")] ID3D12DeviceChild* pObject,
-        [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
-        DWORD Access,
-        [annotation("_In_opt_")] LPCWSTR Name,
-        [annotation("_Out_")] HANDLE* pHandle );
-
-    HRESULT OpenSharedHandle(
-        [annotation("_In_")] HANDLE NTHandle,
-        [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
-
-    HRESULT OpenSharedHandleByName(
-        [annotation("_In_")] LPCWSTR Name,
-        DWORD Access,
-        [out, annotation("_Out_")] HANDLE* pNTHandle );
-
-    HRESULT MakeResident(
-        UINT NumObjects,
-        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
-
-    HRESULT Evict(
-        UINT NumObjects,
-        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
-
-    HRESULT CreateFence(
-        UINT64 InitialValue,
-        D3D12_FENCE_FLAGS Flags,
-        [in] REFIID riid, // Expected: ID3D12Fence
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);        
-
-    HRESULT GetDeviceRemovedReason();
-
-    void GetCopyableFootprints(
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
-        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
-        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
-        UINT64 BaseOffset,
-        [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
-        [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
-        [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
-        [annotation("_Out_opt_")] UINT64* pTotalBytes );
-
-    HRESULT CreateQueryHeap(
-        [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12QueryHeap
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
-        );
-
-    HRESULT SetStablePowerState(BOOL Enable);
-
-    HRESULT CreateCommandSignature(
-        [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
-        [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
-        [in] REFIID riid, // Expected: ID3D12CommandSignature
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
-        );
-
-    void GetResourceTiling( 
-        [annotation("_In_")] ID3D12Resource* pTiledResource,
-        [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource, 
-        [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc, 
-        [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips, 
-        [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings, 
-        [annotation("_In_")] UINT FirstSubresourceTilingToGet, 
-        [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
-        );
-
-    LUID GetAdapterLuid();
-}
-
-// D3D12 Revision 1
-[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
-interface ID3D12PipelineLibrary
-    : ID3D12DeviceChild
-{
-    HRESULT StorePipeline(
-        [annotation("_In_opt_")] LPCWSTR pName,
-        [annotation("_In_")] ID3D12PipelineState *pPipeline
-        );
-
-    HRESULT LoadGraphicsPipeline(
-        [annotation("_In_")] LPCWSTR pName,
-        [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12PipelineState
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
-        );
-
-    HRESULT LoadComputePipeline(
-        [annotation("_In_")] LPCWSTR pName,
-        [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12PipelineState
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
-        );       
-
-    SIZE_T GetSerializedSize();
-
-    HRESULT Serialize(
-        [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
-        SIZE_T DataSizeInBytes
-        );
-}
-
-// Pipeline State v2
-[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
-interface ID3D12PipelineLibrary1
-    : ID3D12PipelineLibrary
-{
-    HRESULT LoadPipeline(
-        [annotation("_In_")] LPCWSTR pName,
-        [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
-        [in] REFIID riid, // Expected: ID3D12PipelineState
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
-        );
-}
-
-typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
-{
-    D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
-    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
-
-    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
-} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )" )
-
-// Applications may use the whole value range of UINT for a priority.
-// These names are merely semantic suggestions.
-typedef enum D3D12_RESIDENCY_PRIORITY
-{
-    D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
-    D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
-    D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
-    D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
-    D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
-} D3D12_RESIDENCY_PRIORITY;
-
-[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
-interface ID3D12Device1
-    : ID3D12Device
-{
-    HRESULT CreatePipelineLibrary(
-        [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
-        SIZE_T BlobLength,
-        [in] REFIID riid, // Expected: ID3D12PipelineLibrary
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
-        );
-
-    HRESULT SetEventOnMultipleFenceCompletion(
-        [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
-        [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
-        UINT NumFences,
-        D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
-        HANDLE hEvent
-        );
-
-    HRESULT SetResidencyPriority(
-        UINT NumObjects,
-        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
-        [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
-}
-
-[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
-interface ID3D12Device2
-    : ID3D12Device1
-{
-    HRESULT CreatePipelineState(
-        [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
-        [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
-        );
-}
-
-typedef enum D3D12_RESIDENCY_FLAGS
-{
-    D3D12_RESIDENCY_FLAG_NONE = 0x0,
-    D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
-} D3D12_RESIDENCY_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )" )
-
-[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
-interface ID3D12Device3
-    : ID3D12Device2
-{
-    HRESULT OpenExistingHeapFromAddress(
-        [annotation("_In_")] const void* pAddress,
-        [in] REFIID riid, // Expected: ID3D12Heap
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
-    );
-    HRESULT OpenExistingHeapFromFileMapping(
-        [annotation("_In_")] HANDLE hFileMapping,
-        [in] REFIID riid, // Expected: ID3D12Heap
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
-    );
-    HRESULT EnqueueMakeResident(
-        D3D12_RESIDENCY_FLAGS Flags,
-        UINT NumObjects,
-        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
-        [annotation("_In_")] ID3D12Fence* pFenceToSignal,
-        UINT64 FenceValueToSignal
-    );
-}
-
-typedef enum D3D12_COMMAND_LIST_FLAGS
-{
-    D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
-} D3D12_COMMAND_LIST_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )")
-
-
-typedef enum D3D12_COMMAND_POOL_FLAGS
-{
-    D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
-
-} D3D12_COMMAND_POOL_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )")
-
-typedef enum D3D12_COMMAND_RECORDER_FLAGS
-{
-    D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
-
-} D3D12_COMMAND_RECORDER_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )")
-
-typedef enum D3D12_PROTECTED_SESSION_STATUS
-{
-    D3D12_PROTECTED_SESSION_STATUS_OK = 0,
-    D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
-} D3D12_PROTECTED_SESSION_STATUS;
-
-[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
-interface ID3D12ProtectedSession
-    : ID3D12DeviceChild
-{
-    HRESULT GetStatusFence(
-        [in] REFIID riid,
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
-
-    D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
-}
-
-typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
-{
-    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
-    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
-
-} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )")
-
-typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
-{
-    UINT                                            NodeIndex;  // input
-    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS  Support;    // output
-} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
-
-typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
-{
-    D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
-
-} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )")
-
-typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
-{
-    UINT NodeMask;
-    D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
-} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
-
-[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
-interface ID3D12ProtectedResourceSession
-    : ID3D12ProtectedSession
-{
-    D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
-}
-
-[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
-interface ID3D12Device4
-    : ID3D12Device3
-{
-    HRESULT CreateCommandList1(
-        [annotation("_In_")] UINT nodeMask,
-        [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
-        [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
-        [in] REFIID riid, // Expected: ID3D12CommandList
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
-    );
-
-    HRESULT CreateProtectedResourceSession(
-        [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
-        [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
-    );
-
-    HRESULT CreateCommittedResource1(
-        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
-        D3D12_HEAP_FLAGS HeapFlags,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
-        D3D12_RESOURCE_STATES InitialResourceState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
-        [in] REFIID riidResource, // Expected: ID3D12Resource1*
-        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
-    );
-
-    HRESULT CreateHeap1(
-        [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
-        [in] REFIID riid, // Expected: ID3D12Heap1*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
-    );
-
-    HRESULT CreateReservedResource1(
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
-        D3D12_RESOURCE_STATES InitialState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
-        [in] REFIID riid, // Expected: ID3D12Resource1*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
-    );
-
-    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
-        UINT visibleMask,
-        UINT numResourceDescs,
-        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
-        [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
-    );
-}
-
-typedef enum D3D12_LIFETIME_STATE
-{
-    D3D12_LIFETIME_STATE_IN_USE,
-    D3D12_LIFETIME_STATE_NOT_IN_USE,
-} D3D12_LIFETIME_STATE;
-
-interface ID3D12LifetimeTracker;
-
-[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
-interface ID3D12LifetimeOwner : IUnknown
-{
-    void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
-}
-
-[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
-interface ID3D12SwapChainAssistant
-    : IUnknown
-{
-    LUID GetLUID();
-    HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
-    HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
-                                              REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
-    HRESULT InsertImplicitSync();
-}
-
-[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
-interface ID3D12LifetimeTracker
-    : ID3D12DeviceChild
-{
-    HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
-}
-
-typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
-{
-    D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
-    D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
-    D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
-    D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
-    D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
-} D3D12_META_COMMAND_PARAMETER_TYPE;
-
-typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
-{
-    D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
-    D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
-} D3D12_META_COMMAND_PARAMETER_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )")
-
-typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
-{
-    D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
-    D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
-    D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
-} D3D12_META_COMMAND_PARAMETER_STAGE;
-
-typedef struct D3D12_META_COMMAND_PARAMETER_DESC
-{
-    LPCWSTR Name;
-    D3D12_META_COMMAND_PARAMETER_TYPE Type;
-    D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
-    D3D12_RESOURCE_STATES RequiredResourceState;
-    UINT StructureOffset;
-} D3D12_META_COMMAND_PARAMETER_DESC;
-
-typedef enum D3D12_GRAPHICS_STATES
-{
-    D3D12_GRAPHICS_STATE_NONE = 0,
-    D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
-    D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
-    D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
-    D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
-    D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
-    D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
-    D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
-    D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
-    D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
-    D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
-    D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
-    D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
-    D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
-    D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
-    D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
-    D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
-    D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
-
-} D3D12_GRAPHICS_STATES;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )")
-
-typedef struct D3D12_META_COMMAND_DESC
-{
-    GUID Id;
-    LPCWSTR Name;
-    D3D12_GRAPHICS_STATES InitializationDirtyState;
-    D3D12_GRAPHICS_STATES ExecutionDirtyState;
-} D3D12_META_COMMAND_DESC;
-
-[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
-interface ID3D12StateObject
-    : ID3D12Pageable
-{
-}
-
-[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
-interface ID3D12StateObjectProperties
-    : IUnknown
-{
-    void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
-    UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
-    UINT64 GetPipelineStackSize();
-    void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
-}
-
-typedef struct D3D12_PROGRAM_IDENTIFIER
-{
-    UINT64 OpaqueData[4];
-} D3D12_PROGRAM_IDENTIFIER;
-
-[uuid(460caac7-1d24-446a-a184-ca67db494138), object, local, pointer_default(unique)]
-interface ID3D12StateObjectProperties1
-    : ID3D12StateObjectProperties
-{
-    D3D12_PROGRAM_IDENTIFIER GetProgramIdentifier(LPCWSTR pProgramName);
-}
-
-typedef struct D3D12_NODE_ID
-{
-    LPCWSTR Name;
-    UINT    ArrayIndex;
-} D3D12_NODE_ID;
-
-typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
-{
-    UINT64 MinSizeInBytes;
-    UINT64 MaxSizeInBytes;
-    UINT SizeGranularityInBytes;
-} D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
-
-[uuid(065acf71-f863-4b89-82f4-02e4d5886757), object, local, pointer_default(unique)]
-interface ID3D12WorkGraphProperties : IUnknown
-{
-    UINT GetNumWorkGraphs();
-    LPCWSTR GetProgramName(UINT WorkGraphIndex);
-    UINT GetWorkGraphIndex(LPCWSTR pProgramName);
-
-    UINT GetNumNodes(UINT WorkGraphIndex);
-    D3D12_NODE_ID GetNodeID(UINT WorkGraphIndex, UINT NodeIndex);
-    UINT GetNodeIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
-    UINT GetNodeLocalRootArgumentsTableIndex(UINT WorkGraphIndex, UINT NodeIndex);
-
-    UINT GetNumEntrypoints(UINT WorkGraphIndex);
-    D3D12_NODE_ID GetEntrypointID(UINT WorkGraphIndex, UINT EntrypointIndex);
-    UINT GetEntrypointIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
-    UINT GetEntrypointRecordSizeInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
-
-    void GetWorkGraphMemoryRequirements(
-        UINT WorkGraphIndex,
-        [annotation("_Out_")] D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS* pWorkGraphMemoryRequirements);
-
-    UINT GetEntrypointRecordAlignmentInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
-}
-
-typedef enum D3D12_STATE_SUBOBJECT_TYPE
-{
-    D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
-    D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
-    D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
-    D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
-    // 4 unused
-    D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
-    D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
-    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
-    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,  // D3D12_RAYTRACING_PIPELINE_CONFIG
-    D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,  // D3D12_HIT_GROUP_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,  // D3D12_RAYTRACING_PIPELINE_CONFIG1
-    D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13, // D3D12_WORK_GRAPH_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,  // D3D12_STREAM_OUTPUT_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,  // D3D12_BLEND_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,  // UINT
-    D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,  // D3D12_RASTERIZER_DESC2
-    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,  // D3D12_DEPTH_STENCIL_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,  // D3D12_INPUT_LAYOUT_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,  // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
-    D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,  // D3D12_PRIMITIVE_TOPOLOGY_TYPE
-    D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,  // D3D12_RT_FORMAT_ARRAY
-    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,  // DXGI_FORMAT
-    D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,  // DXGI_SAMPLE_DESC
-    // 25 is unused
-    D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,  // D3D12_PIPELINE_STATE_FLAGS
-    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27, // D3D12_DEPTH_STENCIL_DESC1
-    D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28, // D3D12_VIEW_INSTANCING_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29, // D3D12_GENERIC_PROGRAM_DESC
-    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30, // D3D12_DEPTH_STENCIL_DESC2
-
-    D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
-} D3D12_STATE_SUBOBJECT_TYPE;
-
-typedef struct D3D12_STATE_SUBOBJECT
-{
-    D3D12_STATE_SUBOBJECT_TYPE Type;
-    const void* pDesc;
-} D3D12_STATE_SUBOBJECT;
-
-typedef enum D3D12_STATE_OBJECT_FLAGS
-{
-    D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
-    D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
-    D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
-    D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
-} D3D12_STATE_OBJECT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )")
-
-typedef struct D3D12_STATE_OBJECT_CONFIG
-{
-    D3D12_STATE_OBJECT_FLAGS Flags;
-} D3D12_STATE_OBJECT_CONFIG;
-
-typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
-{
-    ID3D12RootSignature* pGlobalRootSignature;
-} D3D12_GLOBAL_ROOT_SIGNATURE;
-
-typedef struct D3D12_LOCAL_ROOT_SIGNATURE
-{
-    ID3D12RootSignature* pLocalRootSignature;
-} D3D12_LOCAL_ROOT_SIGNATURE;
-
-typedef struct D3D12_NODE_MASK
-{
-    UINT NodeMask;
-} D3D12_NODE_MASK;
-
-typedef struct D3D12_SAMPLE_MASK
-{
-    UINT SampleMask;
-} D3D12_SAMPLE_MASK;
-
-typedef struct D3D12_IB_STRIP_CUT_VALUE
-{
-    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
-} D3D12_IB_STRIP_CUT_VALUE;
-
-typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
-{
-    D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
-} D3D12_PRIMITIVE_TOPOLOGY_DESC;
-
-typedef struct D3D12_DEPTH_STENCIL_FORMAT
-{
-    DXGI_FORMAT DepthStencilFormat;
-} D3D12_DEPTH_STENCIL_FORMAT;
-
-typedef enum D3D12_EXPORT_FLAGS
-{
-    D3D12_EXPORT_FLAG_NONE = 0x0,
-} D3D12_EXPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )")
-
-typedef struct D3D12_EXPORT_DESC
-{
-    LPCWSTR Name;
-    [annotation("_In_opt_")] LPCWSTR ExportToRename;
-    D3D12_EXPORT_FLAGS Flags;
-} D3D12_EXPORT_DESC;
-
-typedef struct D3D12_DXIL_LIBRARY_DESC
-{
-    D3D12_SHADER_BYTECODE  DXILLibrary;
-    UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
-    [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
-} D3D12_DXIL_LIBRARY_DESC;
-
-typedef struct D3D12_EXISTING_COLLECTION_DESC
-{
-    ID3D12StateObject* pExistingCollection;
-    UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
-    [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
-} D3D12_EXISTING_COLLECTION_DESC;
-
-typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
-{
-    const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate; 
-    UINT NumExports;                      
-    [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
-} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
-
-typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
-{
-    LPCWSTR SubobjectToAssociate; 
-    UINT NumExports;     
-    [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
-} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
-
-typedef enum D3D12_HIT_GROUP_TYPE
-{
-    D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
-    D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
-} D3D12_HIT_GROUP_TYPE;
-
-typedef struct D3D12_HIT_GROUP_DESC
-{
-    LPCWSTR HitGroupExport;
-    D3D12_HIT_GROUP_TYPE Type;
-    [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
-    [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
-    [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
-} D3D12_HIT_GROUP_DESC;
-
-typedef struct D3D12_RAYTRACING_SHADER_CONFIG
-{
-    UINT    MaxPayloadSizeInBytes;
-    UINT    MaxAttributeSizeInBytes;
-} D3D12_RAYTRACING_SHADER_CONFIG;
-
-typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
-{
-    UINT    MaxTraceRecursionDepth;
-} D3D12_RAYTRACING_PIPELINE_CONFIG;
-
-typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
-{
-    D3D12_RAYTRACING_PIPELINE_FLAG_NONE                         = 0x0,
-    D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES               = 0x100,
-    D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES   = 0x200,
-} D3D12_RAYTRACING_PIPELINE_FLAGS; 
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )")
-
-typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
-{
-    UINT                            MaxTraceRecursionDepth;
-    D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
-} D3D12_RAYTRACING_PIPELINE_CONFIG1;
-
-typedef struct D3D12_NODE_OUTPUT_OVERRIDES
-{
-    UINT                     OutputIndex;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
-    [annotation("_In_opt_")] const BOOL* pAllowSparseNodes;
-    [annotation("_In_opt_")] const UINT* pMaxRecords;
-    [annotation("_In_opt_")] const UINT* pMaxRecordsSharedWithOutputIndex;
-} D3D12_NODE_OUTPUT_OVERRIDES;
-
-typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
-{
-    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
-    [annotation("_In_opt_")] const BOOL* pProgramEntry;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
-    [annotation("_In_opt_ ")] const D3D12_NODE_ID* pShareInputOf;
-    [annotation("_In_reads_opt_(3)")] const UINT* pDispatchGrid;
-    [annotation("_In_reads_opt_(3)")] const UINT* pMaxDispatchGrid;
-    UINT          NumOutputOverrides;
-    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
-} D3D12_BROADCASTING_LAUNCH_OVERRIDES;
-
-typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
-{
-    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex; 
-    [annotation("_In_opt_")] const BOOL* pProgramEntry;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
-    UINT          NumOutputOverrides; 
-    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
-} D3D12_COALESCING_LAUNCH_OVERRIDES;
-
-typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
-{
-    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex; 
-    [annotation("_In_opt_")] const BOOL* pProgramEntry;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
-    UINT          NumOutputOverrides; 
-    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
-} D3D12_THREAD_LAUNCH_OVERRIDES;
-
-typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
-{
-    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
-    [annotation("_In_opt_")] const BOOL* pProgramEntry;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
-    [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
-    UINT          NumOutputOverrides;
-    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
-} D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
-
-typedef enum D3D12_NODE_OVERRIDES_TYPE
-{
-    D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
-    D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
-    D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
-    D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
-    D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4,
-} D3D12_NODE_OVERRIDES_TYPE;
-
-typedef struct D3D12_SHADER_NODE
-{
-    LPCWSTR                   Shader; 
-    D3D12_NODE_OVERRIDES_TYPE OverridesType;
-    union
-    {
-        const D3D12_BROADCASTING_LAUNCH_OVERRIDES* pBroadcastingLaunchOverrides;
-        const D3D12_COALESCING_LAUNCH_OVERRIDES* pCoalescingLaunchOverrides;
-        const D3D12_THREAD_LAUNCH_OVERRIDES* pThreadLaunchOverrides;
-        const D3D12_COMMON_COMPUTE_NODE_OVERRIDES* pCommonComputeNodeOverrides;
-    };
-} D3D12_SHADER_NODE;
-
-typedef enum D3D12_NODE_TYPE
-{
-    D3D12_NODE_TYPE_SHADER = 0x0
-} D3D12_NODE_TYPE;
-
-typedef struct D3D12_NODE
-{
-    D3D12_NODE_TYPE NodeType;
-    union
-    {
-        D3D12_SHADER_NODE Shader; // D3D12_NODE_TYPE_SHADER
-    };
-} D3D12_NODE;
-
-typedef enum D3D12_WORK_GRAPH_FLAGS
-{
-    D3D12_WORK_GRAPH_FLAG_NONE = 0x0,
-    D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1,
-} D3D12_WORK_GRAPH_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )")
-
-typedef struct D3D12_WORK_GRAPH_DESC
-{
-    LPCWSTR                ProgramName;
-    D3D12_WORK_GRAPH_FLAGS Flags;
-    UINT                   NumEntrypoints;
-    [annotation("_In_reads_opt_(NumEntrypoints)")] const D3D12_NODE_ID* pEntrypoints;
-    UINT    NumExplicitlyDefinedNodes;
-    [annotation("_In_reads_opt_(NumExplicitlyDefinedNodes)")] const D3D12_NODE* pExplicitlyDefinedNodes; 
-} D3D12_WORK_GRAPH_DESC;
-
-typedef struct D3D12_GENERIC_PROGRAM_DESC
-{
-    LPCWSTR ProgramName;
-    UINT NumExports;
-    [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
-    UINT    NumSubobjects;
-    [annotation("_In_reads_opt_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* const* ppSubobjects;
-} D3D12_GENERIC_PROGRAM_DESC;
-
-typedef enum D3D12_STATE_OBJECT_TYPE
-{
-    D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
-    D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
-    D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
-} D3D12_STATE_OBJECT_TYPE;
-
-typedef struct D3D12_STATE_OBJECT_DESC
-{
-    D3D12_STATE_OBJECT_TYPE Type;
-    UINT NumSubobjects;
-    [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects; 
-} D3D12_STATE_OBJECT_DESC;
-
-typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
-{
-    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
-    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
-    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
-} D3D12_RAYTRACING_GEOMETRY_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )")
-
-typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
-{
-    D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
-    D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
-} D3D12_RAYTRACING_GEOMETRY_TYPE;
-
-typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
-{
-    D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
-    D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
-    D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
-    D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
-    D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
-} D3D12_RAYTRACING_INSTANCE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )")
-
-typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
-{
-    D3D12_GPU_VIRTUAL_ADDRESS   StartAddress;
-    UINT64                      StrideInBytes;
-} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
-
-typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
-{
-    D3D12_GPU_VIRTUAL_ADDRESS   StartAddress;
-    UINT64                      SizeInBytes;
-} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
-
-typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
-{
-    D3D12_GPU_VIRTUAL_ADDRESS   StartAddress;
-    UINT64                      SizeInBytes;
-    UINT64                      StrideInBytes;
-} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
-
-typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
-{
-    D3D12_GPU_VIRTUAL_ADDRESS               Transform3x4;
-    DXGI_FORMAT                             IndexFormat;
-    DXGI_FORMAT                             VertexFormat;
-    UINT                                    IndexCount;
-    UINT                                    VertexCount;
-    D3D12_GPU_VIRTUAL_ADDRESS               IndexBuffer;
-    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE    VertexBuffer;
-} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
-
-typedef struct D3D12_RAYTRACING_AABB
-{
-    FLOAT   MinX;
-    FLOAT   MinY;
-    FLOAT   MinZ;
-    FLOAT   MaxX;
-    FLOAT   MaxY;
-    FLOAT   MaxZ;
-} D3D12_RAYTRACING_AABB;
-
-typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
-{
-    UINT64                                  AABBCount;
-    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE    AABBs;
-} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
-
-typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
-{
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )")
-
-typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
-{
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
-
-typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
-{
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
-
-typedef enum D3D12_ELEMENTS_LAYOUT
-{
-    D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
-    D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
-} D3D12_ELEMENTS_LAYOUT;
-
-typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
-{
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION  = 0x1,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION  = 0x2,
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE  = 0x3,
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
-
-typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
-{
-    D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;    
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
-
-typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
-{
-    UINT64 CompactedSizeInBytes;
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
-
-typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
-{
-    UINT64 DecodedSizeInBytes;
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
-
-typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
-{
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
-    UINT NumDescs;
-} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
-cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
-cpp_quote("// depending on Type field, NumDescs above is followed by either:")
-cpp_quote("//       D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
-cpp_quote("//    or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
-cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
-cpp_quote("")
-
-typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
-{
-    UINT64 SerializedSizeInBytes;
-    UINT64 NumBottomLevelAccelerationStructurePointers;
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
-
-typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
-{
-    GUID DriverOpaqueGUID;
-    BYTE DriverOpaqueVersioningData[16];
-} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
-
-typedef enum D3D12_SERIALIZED_DATA_TYPE
-{
-    D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
-} D3D12_SERIALIZED_DATA_TYPE;
-
-typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
-{
-    D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
-    D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
-    D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
-    D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
-    D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
-} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
-
-typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
-{
-    D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
-    UINT64 SerializedSizeInBytesIncludingHeader;
-    UINT64 DeserializedSizeInBytes;
-    UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
-} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
-
-typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
-{
-    UINT64 CurrentSizeInBytes;
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
-
-typedef struct D3D12_RAYTRACING_INSTANCE_DESC
-{
-    FLOAT                       Transform[3][4];
-    UINT                        InstanceID : 24;
-    UINT                        InstanceMask : 8;
-    UINT                        InstanceContributionToHitGroupIndex : 24;
-    UINT                        Flags : 8;
-    D3D12_GPU_VIRTUAL_ADDRESS   AccelerationStructure;
-} D3D12_RAYTRACING_INSTANCE_DESC;
-
-typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
-{
-    D3D12_RAYTRACING_GEOMETRY_TYPE    Type;
-    D3D12_RAYTRACING_GEOMETRY_FLAGS   Flags;
-    union
-    {
-        D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC  Triangles;
-        D3D12_RAYTRACING_GEOMETRY_AABBS_DESC      AABBs;
-    };
-} D3D12_RAYTRACING_GEOMETRY_DESC;
-
-typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
-{
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
-    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
-    UINT NumDescs;
-    D3D12_ELEMENTS_LAYOUT DescsLayout;
-    union
-    {
-        D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
-        const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
-        const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
-    };
-} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
-
-typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
-{
-    D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
-    D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
-    [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
-    D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
-} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
-
-typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
-{
-    UINT64 ResultDataMaxSizeInBytes;
-    UINT64 ScratchDataSizeInBytes;
-    UINT64 UpdateScratchDataSizeInBytes;
-} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
-
-typedef enum D3D12_RAY_FLAGS
-{
-    D3D12_RAY_FLAG_NONE                            = 0x00,
-    D3D12_RAY_FLAG_FORCE_OPAQUE                    = 0x01,
-    D3D12_RAY_FLAG_FORCE_NON_OPAQUE                = 0x02,
-    D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
-    D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER         = 0x08,
-    D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES      = 0x10,
-    D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES     = 0x20,
-    D3D12_RAY_FLAG_CULL_OPAQUE                     = 0x40,
-    D3D12_RAY_FLAG_CULL_NON_OPAQUE                 = 0x80,
-    D3D12_RAY_FLAG_SKIP_TRIANGLES                  = 0x100,
-    D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES      = 0x200,
-} D3D12_RAY_FLAGS; 
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )" )
-
-typedef enum D3D12_HIT_KIND
-{
-    D3D12_HIT_KIND_TRIANGLE_FRONT_FACE             = 0xfe,
-    D3D12_HIT_KIND_TRIANGLE_BACK_FACE              = 0xff,
-} D3D12_HIT_KIND; 
-
-[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
-interface ID3D12Device5
-    : ID3D12Device4
-{
-    HRESULT CreateLifetimeTracker(
-        [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
-        [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
-    );
-
-    void RemoveDevice();
-
-    HRESULT EnumerateMetaCommands(
-        [annotation("_Inout_")] UINT* pNumMetaCommands,
-        [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
-    );
-
-    HRESULT EnumerateMetaCommandParameters(
-        [annotation("_In_")] REFGUID CommandId,
-        [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
-        [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
-        [annotation("_Inout_")] UINT* pParameterCount,
-        [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
-    );
-
-    HRESULT CreateMetaCommand(
-        [annotation("_In_")] REFGUID CommandId,
-        [annotation("_In_")] UINT NodeMask,
-        [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
-        [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
-        [in] REFIID riid,
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
-    );
-
-    HRESULT CreateStateObject(
-        [in] const D3D12_STATE_OBJECT_DESC* pDesc,
-        [in] REFIID riid, // ID3D12StateObject
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
-    );
-
-    void GetRaytracingAccelerationStructurePrebuildInfo(
-        [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
-        [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
-    );
-
-    D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
-        [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
-        [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
-}
-
-
-typedef enum D3D12_AUTO_BREADCRUMB_OP
-{
-    D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
-    D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
-    D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
-    D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
-    D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
-    D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
-    D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
-    D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
-    D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
-    D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
-    D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
-    D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
-    D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
-    D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
-    D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
-    D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
-    D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
-    D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
-    D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
-    D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
-    D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
-    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
-    D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
-    D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
-    D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
-    D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
-    D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
-    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
-    D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
-    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
-    D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
-    D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
-    D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
-    D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
-    D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
-    D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
-    D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
-    D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
-    D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
-    D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
-    D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
-    D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
-    D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
-    D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
-    D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44,
-    D3D12_AUTO_BREADCRUMB_OP_BARRIER = 45,
-    D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = 46,
-    D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = 47,
-    D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = 48,
-} D3D12_AUTO_BREADCRUMB_OP;
-
-typedef struct D3D12_AUTO_BREADCRUMB_NODE
-{
-    const char *pCommandListDebugNameA;
-    const wchar_t *pCommandListDebugNameW;
-    const char *pCommandQueueDebugNameA;
-    const wchar_t *pCommandQueueDebugNameW;
-    ID3D12GraphicsCommandList *pCommandList;
-    ID3D12CommandQueue *pCommandQueue;
-    UINT32 BreadcrumbCount;
-    const UINT32 *pLastBreadcrumbValue;
-    const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
-    const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
-} D3D12_AUTO_BREADCRUMB_NODE;
-
-typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
-{
-    UINT BreadcrumbIndex;
-    const wchar_t *pContextString;
-} D3D12_DRED_BREADCRUMB_CONTEXT;
-
-// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
-typedef struct D3D12_AUTO_BREADCRUMB_NODE1
-{
-    const char *pCommandListDebugNameA;
-    const wchar_t *pCommandListDebugNameW;
-    const char *pCommandQueueDebugNameA;
-    const wchar_t *pCommandQueueDebugNameW;
-    ID3D12GraphicsCommandList *pCommandList;
-    ID3D12CommandQueue *pCommandQueue;
-    UINT BreadcrumbCount;
-    const UINT *pLastBreadcrumbValue;
-    const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
-    const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
-    UINT BreadcrumbContextsCount;
-    D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
-} D3D12_AUTO_BREADCRUMB_NODE1;
-
-// D3D12_DRED_VERSION
-typedef enum D3D12_DRED_VERSION
-{
-    D3D12_DRED_VERSION_1_0 = 0x1,
-    D3D12_DRED_VERSION_1_1 = 0x2,
-    D3D12_DRED_VERSION_1_2 = 0x3,
-    D3D12_DRED_VERSION_1_3 = 0x4,
-} D3D12_DRED_VERSION;
-
-typedef enum D3D12_DRED_FLAGS
-{
-    D3D12_DRED_FLAG_NONE                    = 0,
-    D3D12_DRED_FLAG_FORCE_ENABLE            = 1,
-    D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
-} D3D12_DRED_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )")
-
-typedef enum D3D12_DRED_ENABLEMENT
-{
-    D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
-    D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
-    D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
-} D3D12_DRED_ENABLEMENT;
-
-typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
-{
-    [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
-    [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
-} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
-
-typedef enum D3D12_DRED_ALLOCATION_TYPE
-{
-    // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
-    D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE                    = 19,
-    D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR                = 20,
-    D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE                   = 21,
-    D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST                     = 22,
-    D3D12_DRED_ALLOCATION_TYPE_FENCE                            = 23,
-    D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP                  = 24,
-    D3D12_DRED_ALLOCATION_TYPE_HEAP                             = 25,
-    D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP                       = 27,
-    D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE                = 28,
-    D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY                 = 29,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER                    = 30,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR                  = 32,
-    D3D12_DRED_ALLOCATION_TYPE_RESOURCE                         = 34,
-    D3D12_DRED_ALLOCATION_TYPE_PASS                             = 35,
-    D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION                    = 36,
-    D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY              = 37,
-    D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION         = 38,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP               = 39,
-    D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL                     = 40,
-    D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER                 = 41,
-    D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT                     = 42,
-    D3D12_DRED_ALLOCATION_TYPE_METACOMMAND                      = 43,
-    D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP                  = 44,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR           = 45,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP         = 46,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND          = 47,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER                    = 48,
-    D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP               = 49,
-
-
-    D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
-} D3D12_DRED_ALLOCATION_TYPE;
-
-typedef struct D3D12_DRED_ALLOCATION_NODE
-{
-    const char *ObjectNameA;
-    const wchar_t *ObjectNameW;
-    D3D12_DRED_ALLOCATION_TYPE AllocationType;
-    const struct D3D12_DRED_ALLOCATION_NODE *pNext;
-} D3D12_DRED_ALLOCATION_NODE;
-
-typedef struct D3D12_DRED_ALLOCATION_NODE1
-{
-    const char *ObjectNameA;
-    const wchar_t *ObjectNameW;
-    D3D12_DRED_ALLOCATION_TYPE AllocationType;
-    const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
-    const IUnknown *pObject;
-} D3D12_DRED_ALLOCATION_NODE1;
-
-typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
-{
-    [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
-} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
-
-typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
-{
-    [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
-} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
-
-typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
-{
-    D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
-    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
-    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
-} D3D12_DRED_PAGE_FAULT_OUTPUT;
-
-typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
-{
-    D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
-    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
-    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
-} D3D12_DRED_PAGE_FAULT_OUTPUT1;
-
-typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
-{
-    D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
-} D3D12_DRED_PAGE_FAULT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )")
-
-typedef enum D3D12_DRED_DEVICE_STATE
-{
-    D3D12_DRED_DEVICE_STATE_UNKNOWN             = 0, // Only known if DRED event occurred
-    D3D12_DRED_DEVICE_STATE_HUNG                = 3,
-    D3D12_DRED_DEVICE_STATE_FAULT               = 6,
-    D3D12_DRED_DEVICE_STATE_PAGEFAULT           = 7,
-} D3D12_DRED_DEVICE_STATE;
-
-typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
-{
-    D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
-    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
-    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
-    D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
-    
-} D3D12_DRED_PAGE_FAULT_OUTPUT2;
-
-typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
-{
-    HRESULT DeviceRemovedReason;
-    D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
-    D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
-} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
-
-typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
-{
-    HRESULT DeviceRemovedReason;
-    D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
-    D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
-} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
-
-typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
-{
-    HRESULT DeviceRemovedReason;
-    D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
-    D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
-    D3D12_DRED_DEVICE_STATE DeviceState;
-} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
-
-typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
-{
-    D3D12_DRED_VERSION Version; // Version of the DRED data
-    union
-    {
-        D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
-        D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
-        D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
-        D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
-    };
-} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
-
-[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
-interface ID3D12DeviceRemovedExtendedDataSettings
-    : IUnknown
-{
-    void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
-    void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
-    void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
-};
-
-[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
-interface ID3D12DeviceRemovedExtendedDataSettings1
-    : ID3D12DeviceRemovedExtendedDataSettings
-{
-    void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
-};
-
-[uuid(61552388-01ab-4008-a436-83db189566ea), object, local, pointer_default(unique)]
-interface ID3D12DeviceRemovedExtendedDataSettings2
-    : ID3D12DeviceRemovedExtendedDataSettings1
-{
-    void UseMarkersOnlyAutoBreadcrumbs(BOOL MarkersOnly);
-};
-
-
-[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
-interface ID3D12DeviceRemovedExtendedData
-    : IUnknown
-{
-    HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
-    HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
-};
-
-[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
-interface ID3D12DeviceRemovedExtendedData1
-    : ID3D12DeviceRemovedExtendedData
-{
-    HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
-    HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
-};
-
-[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
-interface ID3D12DeviceRemovedExtendedData2
-    : ID3D12DeviceRemovedExtendedData1
-{
-    HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
-    D3D12_DRED_DEVICE_STATE GetDeviceState();
-};
-
-typedef enum D3D12_BACKGROUND_PROCESSING_MODE
-{
-    D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
-    D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
-    D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
-    D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
-} D3D12_BACKGROUND_PROCESSING_MODE;
-
-typedef enum D3D12_MEASUREMENTS_ACTION
-{
-    D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
-    D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
-    D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
-    D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
-} D3D12_MEASUREMENTS_ACTION;
-
-[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
-interface ID3D12Device6 : ID3D12Device5
-{
-    HRESULT SetBackgroundProcessingMode(
-        D3D12_BACKGROUND_PROCESSING_MODE Mode,
-        D3D12_MEASUREMENTS_ACTION MeasurementsAction,
-        [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
-        [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
-};
-
-cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED,                           0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
-
-// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
-typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
-{
-    UINT                                        NodeIndex;              // input
-    UINT                                        Count;                  // output
-} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
-
-// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
-typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
-{
-    UINT                                        NodeIndex;              // input
-    UINT                                        Count;                  // input
-    GUID*                                       pTypes;                 // output
-} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
-
-typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
-{
-    UINT NodeMask;
-    D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
-    GUID ProtectionType;
-} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
-
-[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
-interface ID3D12ProtectedResourceSession1
-    : ID3D12ProtectedResourceSession
-{
-    D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
-};
-
-[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
-interface ID3D12Device7 : ID3D12Device6
-{
-    HRESULT AddToStateObject(
-        [in] const D3D12_STATE_OBJECT_DESC* pAddition,
-        [in] ID3D12StateObject* pStateObjectToGrowFrom,
-        [in] REFIID riid, // ID3D12StateObject
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
-        );
-
-    HRESULT CreateProtectedResourceSession1(
-        [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
-        [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
-        );
-};
-
-[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
-interface ID3D12Device8 : ID3D12Device7
-{
-    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
-        UINT visibleMask,
-        UINT numResourceDescs,
-        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
-        [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
-
-    HRESULT CreateCommittedResource2(
-        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
-        D3D12_HEAP_FLAGS HeapFlags,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
-        D3D12_RESOURCE_STATES InitialResourceState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
-        [in] REFIID riidResource, // Expected: ID3D12Resource1*
-        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
-
-    HRESULT CreatePlacedResource1(
-        [annotation("_In_")] ID3D12Heap* pHeap,
-        UINT64 HeapOffset,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
-        D3D12_RESOURCE_STATES InitialState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [in] REFIID riid, // Expected: ID3D12Resource*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
-
-    void CreateSamplerFeedbackUnorderedAccessView(
-        [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
-        [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-
-    void GetCopyableFootprints1(
-        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
-        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
-        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
-        UINT64 BaseOffset,
-        [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
-        [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
-        [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
-        [annotation("_Out_opt_")] UINT64* pTotalBytes);
-};
-
-
-[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
-interface ID3D12Resource1
-    : ID3D12Resource
-{
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
-interface ID3D12Resource2
-    : ID3D12Resource1
-{
-    D3D12_RESOURCE_DESC1 GetDesc1();
-}
-
-
-
-[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
-interface ID3D12Heap1
-    : ID3D12Heap
-{
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-
-[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
-{
-    void SetProtectedResourceSession(
-        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
-    );
-}
-
-// Beginning Access
-typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
-{
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS,
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
-} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
-
-typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
-{
-    D3D12_CLEAR_VALUE ClearValue;
-} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
-
-typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
-{
-    UINT AdditionalWidth;
-    UINT AdditionalHeight;
-} D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
-
-typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
-{
-    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
-
-    union
-    {
-        D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
-        D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
-    };
-} D3D12_RENDER_PASS_BEGINNING_ACCESS;
-
-// Ending Access
-typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
-{
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS,
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
-} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
-
-typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
-{
-    UINT SrcSubresource;
-    UINT DstSubresource;
-
-    UINT DstX;
-    UINT DstY;
-    D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
-
-} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
-
-typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
-{
-    ID3D12Resource* pSrcResource;
-    ID3D12Resource* pDstResource;
-
-    // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
-    UINT SubresourceCount;
-    [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
-
-    DXGI_FORMAT Format;
-    D3D12_RESOLVE_MODE ResolveMode;
-
-    BOOL PreserveResolveSource;
-
-} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
-
-typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
-{
-    UINT AdditionalWidth;
-    UINT AdditionalHeight;
-} D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
-
-typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
-{
-    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
-
-    union
-    {
-        D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
-        D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
-    };
-} D3D12_RENDER_PASS_ENDING_ACCESS;
-
-// Render Target Desc
-typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
-{
-    D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
-
-    D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
-    D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
-
-} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
-
-// Depth-Stencil Desc
-typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
-{
-    D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
-
-    D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
-    D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
-
-    D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
-    D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
-
-} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
-
-typedef enum D3D12_RENDER_PASS_FLAGS
-{
-    D3D12_RENDER_PASS_FLAG_NONE                   = 0x0,
-    D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES       = 0x1,
-    D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS        = 0x2,
-    D3D12_RENDER_PASS_FLAG_RESUMING_PASS          = 0x4,
-    D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH   = 0x8,
-    D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
-} D3D12_RENDER_PASS_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )")
-
-[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
-interface ID3D12MetaCommand : ID3D12Pageable
-{
-    UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")]  UINT ParameterIndex);
-}
-
-typedef struct D3D12_DISPATCH_RAYS_DESC
-{
-    D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
-    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
-    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
-    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
-    UINT Width;
-    UINT Height;
-    UINT Depth;
-} D3D12_DISPATCH_RAYS_DESC;
-
-typedef enum D3D12_SET_WORK_GRAPH_FLAGS
-{
-    D3D12_SET_WORK_GRAPH_FLAG_NONE       = 0x0,
-    D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1, 
-} D3D12_SET_WORK_GRAPH_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )" )
-
-typedef struct D3D12_SET_WORK_GRAPH_DESC
-{  
-    D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
-    D3D12_SET_WORK_GRAPH_FLAGS Flags;
-    D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
-    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
-} D3D12_SET_WORK_GRAPH_DESC;
-
-typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
-{  
-    D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
-} D3D12_SET_RAYTRACING_PIPELINE_DESC;
-
-typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
-{  
-    D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
-} D3D12_SET_GENERIC_PIPELINE_DESC;
-
-typedef enum D3D12_PROGRAM_TYPE
-{
-    D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
-    D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
-    D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
-} D3D12_PROGRAM_TYPE;
-
-typedef struct D3D12_SET_PROGRAM_DESC
-{
-    D3D12_PROGRAM_TYPE Type;
-    union
-    {
-        D3D12_SET_GENERIC_PIPELINE_DESC     GenericPipeline;
-        D3D12_SET_RAYTRACING_PIPELINE_DESC  RaytracingPipeline;
-        D3D12_SET_WORK_GRAPH_DESC           WorkGraph; 
-    };
-} D3D12_SET_PROGRAM_DESC;
-
-typedef enum D3D12_DISPATCH_MODE
-{
-    D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0, // D3D12_NODE_CPU_INPUT
-    D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1, // D3D12_NODE_GPU_INPUT in GPU memory
-    D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2, // D3D12_MULTI_NODE_CPU_INPUT
-    D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3 // D3D12_MULTI_NODE_GPU_INPUT in GPU memory
-} D3D12_DISPATCH_MODE;
-
-typedef struct D3D12_NODE_CPU_INPUT
-{
-    UINT EntrypointIndex;
-    UINT NumRecords;
-    const void* pRecords;
-    UINT64 RecordStrideInBytes;
-} D3D12_NODE_CPU_INPUT;
-
-typedef struct D3D12_NODE_GPU_INPUT
-{
-    UINT EntrypointIndex;
-    UINT NumRecords;
-    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
-} D3D12_NODE_GPU_INPUT;
-
-typedef struct D3D12_MULTI_NODE_CPU_INPUT
-{
-    UINT NumNodeInputs;
-    const D3D12_NODE_CPU_INPUT* pNodeInputs;
-    UINT64 NodeInputStrideInBytes;
-} D3D12_MULTI_NODE_CPU_INPUT;
-
-typedef struct D3D12_MULTI_NODE_GPU_INPUT
-{
-    UINT NumNodeInputs;
-    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs; // D3D12_GPU_NODE_INPUT array
-} D3D12_MULTI_NODE_GPU_INPUT;
-
-typedef struct D3D12_DISPATCH_GRAPH_DESC
-{
-    D3D12_DISPATCH_MODE Mode;
-    union
-    {
-        D3D12_NODE_CPU_INPUT       NodeCPUInput;
-        D3D12_GPU_VIRTUAL_ADDRESS  NodeGPUInput;
-        D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
-        D3D12_GPU_VIRTUAL_ADDRESS  MultiNodeGPUInput;
-    };    
-} D3D12_DISPATCH_GRAPH_DESC;
-
-[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
-{
-    void BeginRenderPass(
-        [annotation("_In_")]                             UINT NumRenderTargets,
-        [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
-        [annotation("_In_opt_")]                         const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
-        D3D12_RENDER_PASS_FLAGS                          Flags
-        );
-
-    void EndRenderPass();
-
-    void InitializeMetaCommand(
-        [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
-        [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
-        [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
-    );
-
-    void ExecuteMetaCommand(
-        [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
-        [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
-        [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
-    );
-
-    void BuildRaytracingAccelerationStructure(
-        [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
-        [annotation("_In_")] UINT NumPostbuildInfoDescs,
-        [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
-        );
-
-    void EmitRaytracingAccelerationStructurePostbuildInfo(
-        [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
-        [annotation("_In_")] UINT NumSourceAccelerationStructures,
-        [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
-
-    void CopyRaytracingAccelerationStructure(
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
-        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
-        [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
-
-    void SetPipelineState1(
-        [annotation("_In_")] ID3D12StateObject* pStateObject);
-
-    void DispatchRays(
-        [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
-}
-
-typedef enum D3D12_SHADER_CACHE_MODE
-{
-    D3D12_SHADER_CACHE_MODE_MEMORY,
-    D3D12_SHADER_CACHE_MODE_DISK,
-} D3D12_SHADER_CACHE_MODE;
-
-typedef enum D3D12_SHADER_CACHE_FLAGS
-{
-    D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
-    D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
-    D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
-} D3D12_SHADER_CACHE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )")
-
-typedef struct D3D12_SHADER_CACHE_SESSION_DESC
-{
-    GUID Identifier;
-    D3D12_SHADER_CACHE_MODE Mode;
-    D3D12_SHADER_CACHE_FLAGS Flags;
-
-    UINT MaximumInMemoryCacheSizeBytes;
-    UINT MaximumInMemoryCacheEntries;
-
-    UINT MaximumValueFileSizeBytes;
-
-    UINT64 Version;
-} D3D12_SHADER_CACHE_SESSION_DESC;
-
-typedef enum D3D12_BARRIER_LAYOUT
-{
-    D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
-    D3D12_BARRIER_LAYOUT_COMMON = 0,
-    D3D12_BARRIER_LAYOUT_PRESENT = 0,
-    D3D12_BARRIER_LAYOUT_GENERIC_READ,
-    D3D12_BARRIER_LAYOUT_RENDER_TARGET,
-    D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS,
-    D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE,
-    D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ,
-    D3D12_BARRIER_LAYOUT_SHADER_RESOURCE,
-    D3D12_BARRIER_LAYOUT_COPY_SOURCE,
-    D3D12_BARRIER_LAYOUT_COPY_DEST,
-    D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE,
-    D3D12_BARRIER_LAYOUT_RESOLVE_DEST,
-    D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE,
-    D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ,
-    D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE,
-    D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ,
-    D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE,
-    D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ,
-    D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE,
-    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON,
-    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ,
-    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS,
-    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE,
-    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE,
-    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST,
-    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON,
-    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ,
-    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS,
-    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE,
-    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE,
-    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST,
-    D3D12_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON,
-
-} D3D12_BARRIER_LAYOUT;
-
-typedef enum D3D12_BARRIER_SYNC
-{
-    D3D12_BARRIER_SYNC_NONE                                                     = 0x0,
-    D3D12_BARRIER_SYNC_ALL                                                      = 0x1,
-    D3D12_BARRIER_SYNC_DRAW                                                     = 0x2,
-    D3D12_BARRIER_SYNC_INDEX_INPUT                                              = 0x4,
-    D3D12_BARRIER_SYNC_VERTEX_SHADING                                           = 0x8,
-    D3D12_BARRIER_SYNC_PIXEL_SHADING                                            = 0x10,
-    D3D12_BARRIER_SYNC_DEPTH_STENCIL                                            = 0x20,
-    D3D12_BARRIER_SYNC_RENDER_TARGET                                            = 0x40,
-    D3D12_BARRIER_SYNC_COMPUTE_SHADING                                          = 0x80,
-    D3D12_BARRIER_SYNC_RAYTRACING                                               = 0x100,
-    D3D12_BARRIER_SYNC_COPY                                                     = 0x200,
-    D3D12_BARRIER_SYNC_RESOLVE                                                  = 0x400,
-    D3D12_BARRIER_SYNC_EXECUTE_INDIRECT                                         = 0x800,
-    D3D12_BARRIER_SYNC_PREDICATION                                              = 0x800, // Aliased with SYNC_EXECUTE_INDIRECT
-    D3D12_BARRIER_SYNC_ALL_SHADING                                              = 0x1000,
-    D3D12_BARRIER_SYNC_NON_PIXEL_SHADING                                        = 0x2000,
-    D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO    = 0x4000,
-    D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW                              = 0x8000,
-    D3D12_BARRIER_SYNC_VIDEO_DECODE                                             = 0x100000,
-    D3D12_BARRIER_SYNC_VIDEO_PROCESS                                            = 0x200000,
-    D3D12_BARRIER_SYNC_VIDEO_ENCODE                                             = 0x400000,
-    D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE                  = 0x800000,
-    D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE                   = 0x1000000,
-    D3D12_BARRIER_SYNC_SPLIT                                                    = 0x80000000,
-} D3D12_BARRIER_SYNC;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )" )
-
-typedef enum D3D12_BARRIER_ACCESS
-{
-    D3D12_BARRIER_ACCESS_COMMON                                     = 0,
-    D3D12_BARRIER_ACCESS_VERTEX_BUFFER                              = 0x1,
-    D3D12_BARRIER_ACCESS_CONSTANT_BUFFER                            = 0x2,
-    D3D12_BARRIER_ACCESS_INDEX_BUFFER                               = 0x4,
-    D3D12_BARRIER_ACCESS_RENDER_TARGET                              = 0x8,
-    D3D12_BARRIER_ACCESS_UNORDERED_ACCESS                           = 0x10,
-    D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE                        = 0x20,
-    D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ                         = 0x40,
-    D3D12_BARRIER_ACCESS_SHADER_RESOURCE                            = 0x80,
-    D3D12_BARRIER_ACCESS_STREAM_OUTPUT                              = 0x100,
-    D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT                          = 0x200,
-    D3D12_BARRIER_ACCESS_PREDICATION                                = 0x200, // Aliased with ACCESS_INDIRECT_ARGUMENT
-    D3D12_BARRIER_ACCESS_COPY_DEST                                  = 0x400,
-    D3D12_BARRIER_ACCESS_COPY_SOURCE                                = 0x800,
-    D3D12_BARRIER_ACCESS_RESOLVE_DEST                               = 0x1000,
-    D3D12_BARRIER_ACCESS_RESOLVE_SOURCE                             = 0x2000,
-    D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ     = 0x4000,
-    D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE    = 0x8000,
-    D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE                        = 0x10000,
-    D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ                          = 0x20000,
-    D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE                         = 0x40000,
-    D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ                         = 0x80000,
-    D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE                        = 0x100000,
-    D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ                          = 0x200000,
-    D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE                         = 0x400000,
-    D3D12_BARRIER_ACCESS_NO_ACCESS                                  = 0x80000000,
-} D3D12_BARRIER_ACCESS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )" )
-
-typedef enum D3D12_BARRIER_TYPE
-{
-    D3D12_BARRIER_TYPE_GLOBAL,
-    D3D12_BARRIER_TYPE_TEXTURE,
-    D3D12_BARRIER_TYPE_BUFFER,
-} D3D12_BARRIER_TYPE;
-
-typedef enum D3D12_TEXTURE_BARRIER_FLAGS
-{
-    D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
-    D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1,
-} D3D12_TEXTURE_BARRIER_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )")
-
-typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
-{
-    UINT IndexOrFirstMipLevel;
-    UINT NumMipLevels;
-    UINT FirstArraySlice;
-    UINT NumArraySlices;
-    UINT FirstPlane;
-    UINT NumPlanes;
-} D3D12_BARRIER_SUBRESOURCE_RANGE;
-
-typedef struct D3D12_GLOBAL_BARRIER
-{
-    D3D12_BARRIER_SYNC SyncBefore;
-    D3D12_BARRIER_SYNC SyncAfter;
-    D3D12_BARRIER_ACCESS AccessBefore;
-    D3D12_BARRIER_ACCESS AccessAfter;
-} D3D12_GLOBAL_BARRIER;
-
-typedef struct D3D12_TEXTURE_BARRIER
-{
-    D3D12_BARRIER_SYNC SyncBefore;
-    D3D12_BARRIER_SYNC SyncAfter;
-    D3D12_BARRIER_ACCESS AccessBefore;
-    D3D12_BARRIER_ACCESS AccessAfter;
-    D3D12_BARRIER_LAYOUT LayoutBefore;
-    D3D12_BARRIER_LAYOUT LayoutAfter;
-    [annotation("_In_")] ID3D12Resource *pResource;
-    D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
-    D3D12_TEXTURE_BARRIER_FLAGS Flags;
-} D3D12_TEXTURE_BARRIER;
-
-typedef struct D3D12_BUFFER_BARRIER
-{
-    D3D12_BARRIER_SYNC SyncBefore;
-    D3D12_BARRIER_SYNC SyncAfter;
-    D3D12_BARRIER_ACCESS AccessBefore;
-    D3D12_BARRIER_ACCESS AccessAfter;
-    [annotation("_In_")] ID3D12Resource *pResource;
-    UINT64 Offset;
-    UINT64 Size;
-} D3D12_BUFFER_BARRIER;
-
-typedef struct D3D12_BARRIER_GROUP
-{
-    D3D12_BARRIER_TYPE Type;
-    UINT32 NumBarriers;
-    union
-    {
-        [annotation("_In_reads_(NumBarriers)")] const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
-        [annotation("_In_reads_(NumBarriers)")] const D3D12_TEXTURE_BARRIER *pTextureBarriers;
-        [annotation("_In_reads_(NumBarriers)")] const D3D12_BUFFER_BARRIER *pBufferBarriers;
-    };
-} D3D12_BARRIER_GROUP;
-
-[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
-interface ID3D12ShaderCacheSession
-    : ID3D12DeviceChild
-{
-    HRESULT FindValue(
-        [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
-        UINT KeySize,
-        [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
-        [annotation("_Inout_")] UINT* pValueSize);
-    HRESULT StoreValue(
-        [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
-        UINT KeySize,
-        [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
-        UINT ValueSize);
-
-    void SetDeleteOnDestroy();
-    D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
-};
-
-typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
-{
-    D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
-    D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
-    D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
-    D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
-} D3D12_SHADER_CACHE_KIND_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )")
-
-typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
-{
-    D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
-    D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
-    D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
-} D3D12_SHADER_CACHE_CONTROL_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )")
-
-[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
-interface ID3D12Device9
-    : ID3D12Device8
-{
-    HRESULT CreateShaderCacheSession(
-        [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
-        REFIID riid,
-        [annotation("_COM_Outptr_opt_")] void** ppvSession);
-
-    HRESULT ShaderCacheControl(
-        D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
-        D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
-
-    HRESULT CreateCommandQueue1(
-        [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
-        REFIID CreatorID,
-        [in] REFIID riid, // Expected: ID3D12CommandQueue
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
-    );
-};
-
-[uuid(517f8718-aa66-49f9-b02b-a7ab89c06031), object, local, pointer_default(unique)]
-interface ID3D12Device10
-    : ID3D12Device9
-{
-    HRESULT CreateCommittedResource3(
-        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
-        D3D12_HEAP_FLAGS HeapFlags,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
-        D3D12_BARRIER_LAYOUT InitialLayout,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
-        UINT32 NumCastableFormats,
-        [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
-        [in] REFIID riidResource, // Expected: ID3D12Resource1*
-        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
-
-    HRESULT CreatePlacedResource2(
-        [annotation("_In_")] ID3D12Heap* pHeap,
-        UINT64 HeapOffset,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
-        D3D12_BARRIER_LAYOUT InitialLayout,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        UINT32 NumCastableFormats,
-        [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
-        [in] REFIID riid, // Expected: ID3D12Resource*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
-
-    HRESULT CreateReservedResource2(
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
-        D3D12_BARRIER_LAYOUT InitialLayout,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
-        UINT32 NumCastableFormats,
-        [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
-        [in] REFIID riid, // Expected: ID3D12Resource1*
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
-    );
-};
-
-[uuid(5405c344-d457-444e-b4dd-2366e45aee39), object, local, pointer_default(unique)]
-interface ID3D12Device11
-    : ID3D12Device10
-{
-    void CreateSampler2(
-        [annotation("_In_")] const D3D12_SAMPLER_DESC2* pDesc,
-        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
-};
-
-[uuid(5af5c532-4c91-4cd0-b541-15a405395fc5), object, local, pointer_default(unique)]
-interface ID3D12Device12
-    : ID3D12Device11
-{
-    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo3(
-        UINT visibleMask,
-        UINT numResourceDescs,
-        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
-        [annotation("_In_opt_count_(numResourceDescs)")] const UINT32* pNumCastableFormats,
-        [annotation("_In_opt_count_(numResourceDescs)")] const DXGI_FORMAT *const *ppCastableFormats,
-        [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
-};
-
-[uuid(14eecffc-4df8-40f7-a118-5c816f45695e), object, local, pointer_default(unique)]
-interface ID3D12Device13
-    : ID3D12Device12
-{
-    HRESULT OpenExistingHeapFromAddress1(
-        [annotation("_In_")] const void* pAddress,
-        SIZE_T size,
-        [in] REFIID riid, // Expected: ID3D12Heap
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
-    );
-};
-
-[uuid(5f6e592d-d895-44c2-8e4a-88ad4926d323), object, local, pointer_default(unique)]
-interface ID3D12Device14 : ID3D12Device13
-{
-    HRESULT CreateRootSignatureFromSubobjectInLibrary(
-        [annotation("_In_")] UINT nodeMask,
-        [annotation("_In_reads_(blobLengthInBytes)")] const void* pLibraryBlob,
-        [annotation("_In_")] SIZE_T blobLengthInBytes,
-        [annotation("_In_opt_")] LPCWSTR subobjectName,
-        [in] REFIID riid, // Expected ID3D12RootSignature
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
-};
-
-
-[uuid(bc66d368-7373-4943-8757-fc87dc79e476), object, local, pointer_default(unique)]
-interface ID3D12VirtualizationGuestDevice
-    : IUnknown
-{
-    HRESULT ShareWithHost(
-        [annotation("_In_")] ID3D12DeviceChild* pObject,
-        [annotation("_Out_")] HANDLE* pHandle
-    );
-
-    HRESULT CreateFenceFd(
-        [annotation("_In_")] ID3D12Fence *pFence,
-        UINT64 FenceValue,
-        [annotation("_Out_")] int *pFenceFd
-    );
-};
-
-
-[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
-interface ID3D12Tools
-    : IUnknown
-{
-    void EnableShaderInstrumentation(BOOL bEnable);
-    BOOL ShaderInstrumentationEnabled();
-}
-
-
-typedef struct D3D12_SUBRESOURCE_DATA
-{
-    const void* pData;
-    LONG_PTR RowPitch;
-    LONG_PTR SlicePitch;
-} D3D12_SUBRESOURCE_DATA;
-
-typedef struct D3D12_MEMCPY_DEST
-{
-    void* pData;
-    SIZE_T RowPitch;
-    SIZE_T SlicePitch;
-} D3D12_MEMCPY_DEST;
-
-
-
-cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
-cpp_quote( "#include \"d3d12sdklayers.h\" ")
-cpp_quote( "#endif ")
-
-
-cpp_quote("")
-cpp_quote("///////////////////////////////////////////////////////////////////////////")
-cpp_quote("// D3D12CreateDevice")
-cpp_quote("// ------------------")
-cpp_quote("//")
-cpp_quote("// pAdapter")
-cpp_quote("//      If NULL, D3D12CreateDevice will choose the primary adapter.")
-cpp_quote("//      If non-NULL, D3D12CreateDevice will use the provided adapter.")
-cpp_quote("// MinimumFeatureLevel")
-cpp_quote("//      The minimum feature level required for successful device creation.")
-cpp_quote("// riid")
-cpp_quote("//      The interface IID of the device to be returned. Expected: ID3D12Device.")
-cpp_quote("// ppDevice")
-cpp_quote("//      Pointer to returned interface. May be NULL.")
-cpp_quote("//")
-cpp_quote("// Return Values")
-cpp_quote("//  Any of those documented for ")
-cpp_quote("//          CreateDXGIFactory1")
-cpp_quote("//          IDXGIFactory::EnumAdapters")
-cpp_quote("//          D3D12CreateDevice")
-cpp_quote("//")
-cpp_quote("///////////////////////////////////////////////////////////////////////////")
-cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
-cpp_quote("    D3D_FEATURE_LEVEL, ")
-cpp_quote("    _In_ REFIID, _COM_Outptr_opt_ void** );")
-cpp_quote("")
-cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
-cpp_quote("    _In_opt_ IUnknown* pAdapter,")
-cpp_quote("    D3D_FEATURE_LEVEL MinimumFeatureLevel,")
-cpp_quote("    _In_ REFIID riid, // Expected: ID3D12Device")
-cpp_quote("    _COM_Outptr_opt_ void** ppDevice );")
-cpp_quote("")
-
-cpp_quote("")
-cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
-cpp_quote("")
-cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
-cpp_quote("")
-
-cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
-cpp_quote("// D3D12EnableExperimentalFeatures")
-cpp_quote("//")
-cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
-cpp_quote("// ")
-cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
-cpp_quote("// a configuration struct that can be passed alongside the GUID.")
-cpp_quote("// ")
-cpp_quote("// Some features might use an interface IID as the GUID.  For these, once the feature is enabled via")
-cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
-cpp_quote("// for manipulating the feature.  This allows for control that might not cleanly be expressed by just ")
-cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
-cpp_quote("//")
-cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
-cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
-cpp_quote("// singleton device for a process.  Removing the devices when configuration changes prevents")
-cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
-cpp_quote("//")
-cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
-cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
-cpp_quote("// in are known to be incompatible with each other, or other errors.")
-cpp_quote("// Returns S_OK otherwise.")
-cpp_quote("//")
-cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
-cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
-cpp_quote("    UINT                                    NumFeatures,")
-cpp_quote("    _In_count_(NumFeatures) const IID*     pIIDs,")
-cpp_quote("    _In_opt_count_(NumFeatures) void*      pConfigurationStructs,")
-cpp_quote("    _In_opt_count_(NumFeatures) UINT*      pConfigurationStructSizes);")
-cpp_quote("")
-cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
-cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
-cpp_quote("//")
-cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
-cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
-cpp_quote("//")
-cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
-cpp_quote("//")
-cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
-cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
-cpp_quote("    0x76f5573e,")
-cpp_quote("    0xf13a,")
-cpp_quote("    0x40f5,")
-cpp_quote("    { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
-cpp_quote("};")
-cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
-cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
-cpp_quote("//")
-cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
-cpp_quote("// meaning texture tile data-inheritance is allowed.")
-cpp_quote("//")
-cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
-cpp_quote("//")
-cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
-cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
-cpp_quote("    0xc9c4725f,")
-cpp_quote("    0xa81a,")
-cpp_quote("    0x4f56,")
-cpp_quote("    { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
-cpp_quote("};")
-
-cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
-cpp_quote("// D3D12GetInterface")
-cpp_quote("//")
-cpp_quote("// Retrieve Global D3D12 Interface.")
-cpp_quote("//")
-cpp_quote("")
-cpp_quote("DEFINE_GUID(CLSID_D3D12Debug,                        0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
-cpp_quote("DEFINE_GUID(CLSID_D3D12Tools,                        0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
-cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData,    0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
-cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration,             0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
-cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceFactory,                0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);")
-cpp_quote("")
-cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
-cpp_quote("")
-cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
-cpp_quote("")
-
-//==================================================================================================================================
-//
-// SDK Configuration
-//
-//==================================================================================================================================
-
-[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
-interface ID3D12SDKConfiguration
-    : IUnknown
-{
-    HRESULT SetSDKVersion(
-        UINT SDKVersion,
-        [annotation("_In_z_")] LPCSTR SDKPath
-        );
-}
-
-[uuid(8aaf9303-ad25-48b9-9a57-d9c37e009d9f), object, local, pointer_default(unique)]
-interface ID3D12SDKConfiguration1
-    : ID3D12SDKConfiguration
-{
-    HRESULT CreateDeviceFactory(
-        UINT SDKVersion,
-        [annotation("_In_")] LPCSTR SDKPath,
-        REFIID riid, // Expected: ID3D12DeviceFactory
-        [annotation("_COM_Outptr_")] void **ppvFactory
-    );
-    void FreeUnusedSDKs();
-}
-
-typedef enum D3D12_DEVICE_FACTORY_FLAGS
-{
-    D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
-    D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
-    D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
-    D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4,
-} D3D12_DEVICE_FACTORY_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )")
-
-[uuid(61f307d3-d34e-4e7c-8374-3ba4de23cccb), object, local, pointer_default(unique)]
-interface ID3D12DeviceFactory
-    : IUnknown
-{
-    HRESULT InitializeFromGlobalState();
-    HRESULT ApplyToGlobalState();
-
-    HRESULT SetFlags(D3D12_DEVICE_FACTORY_FLAGS flags);
-    D3D12_DEVICE_FACTORY_FLAGS GetFlags();
-
-    HRESULT GetConfigurationInterface(
-        REFCLSID clsid,
-        REFIID   iid,
-        [annotation("_COM_Outptr_")] void **ppv);
-
-    HRESULT EnableExperimentalFeatures(
-       UINT      NumFeatures,
-       [annotation("_In_reads_(NumFeatures)")]     const IID *pIIDs,
-       [annotation("_In_reads_opt_(NumFeatures)")] void *pConfigurationStructs,
-       [annotation("_In_reads_opt_(NumFeatures)")] UINT *pConfigurationStructSizes);
-
-    HRESULT CreateDevice(
-        [annotation("_In_opt_")] IUnknown *adapter,
-        D3D_FEATURE_LEVEL FeatureLevel,
-        REFIID riid,
-        [annotation("_COM_Outptr_opt_")] void **ppvDevice);
-};
-
-typedef enum D3D12_DEVICE_FLAGS
-{
-    D3D12_DEVICE_FLAG_NONE = 0,
-    D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
-    D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
-    D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
-    D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
-    D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
-    D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
-    D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
-    D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
-    D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
-    D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
-    D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400,
-} D3D12_DEVICE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )")
-
-typedef struct D3D12_DEVICE_CONFIGURATION_DESC
-{
-    D3D12_DEVICE_FLAGS Flags;
-    UINT GpuBasedValidationFlags; // D3D12_GPU_BASED_VALIDATION_FLAGS from d3d12sdklayers.h
-    UINT SDKVersion;
-    UINT NumEnabledExperimentalFeatures;
-} D3D12_DEVICE_CONFIGURATION_DESC;
-
-[uuid(78dbf87b-f766-422b-a61c-c8c446bdb9ad), object, local, pointer_default(unique)]
-interface ID3D12DeviceConfiguration
-    : IUnknown
-{
-    D3D12_DEVICE_CONFIGURATION_DESC GetDesc();
-    HRESULT GetEnabledExperimentalFeatures([annotation("_Out_writes_(NumGuids)")] GUID *pGuids, UINT NumGuids);
-
-    HRESULT SerializeVersionedRootSignature(
-        [annotation("_In_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
-        [annotation("_COM_Outptr_")] ID3DBlob **ppResult,
-        [annotation("_Always_(_Outptr_opt_result_maybenull_)")] ID3DBlob **ppError);
-
-    HRESULT CreateVersionedRootSignatureDeserializer(
-        [annotation("_In_reads_bytes_(Size)")] const void *pBlob,
-        SIZE_T Size,
-        REFIID riid,
-        [annotation("_COM_Outptr_")] void **ppvDeserializer);
-};
-
-[uuid(ed342442-6343-4e16-bb82-a3a577874e56), object, local, pointer_default(unique)]
-interface ID3D12DeviceConfiguration1
-    : ID3D12DeviceConfiguration
-{
-    HRESULT CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
-        [annotation("_In_reads_bytes_(Size)")] const void* pLibraryBlob,
-        SIZE_T Size,
-        LPCWSTR RootSignatureSubobjectName,
-        REFIID riid,
-        [annotation("_COM_Outptr_")] void** ppvDeserializer);
-};
-
-
-typedef enum D3D12_AXIS_SHADING_RATE
-{
-    D3D12_AXIS_SHADING_RATE_1X = 0x0,
-    D3D12_AXIS_SHADING_RATE_2X = 0x1,
-    D3D12_AXIS_SHADING_RATE_4X = 0x2
-} D3D12_AXIS_SHADING_RATE;
-
-
-cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
-cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
-
-cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
-
-cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
-cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
-
-typedef enum D3D12_SHADING_RATE
-{
-    D3D12_SHADING_RATE_1X1 = 0x0,
-    D3D12_SHADING_RATE_1X2 = 0x1,
-    D3D12_SHADING_RATE_2X1 = 0x4,
-    D3D12_SHADING_RATE_2X2 = 0x5,
-    D3D12_SHADING_RATE_2X4 = 0x6,
-    D3D12_SHADING_RATE_4X2 = 0x9,
-    D3D12_SHADING_RATE_4X4 = 0xA
-} D3D12_SHADING_RATE;
-
-typedef enum D3D12_SHADING_RATE_COMBINER
-{
-    D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
-    D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
-    D3D12_SHADING_RATE_COMBINER_MIN = 2,
-    D3D12_SHADING_RATE_COMBINER_MAX = 3,
-    D3D12_SHADING_RATE_COMBINER_SUM = 4,
-} D3D12_SHADING_RATE_COMBINER;
-
-[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
-{
-    void RSSetShadingRate(
-        [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
-        [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
-
-    void RSSetShadingRateImage(
-        [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
-}
-
-typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
-{
-    UINT ThreadGroupCountX;
-    UINT ThreadGroupCountY;
-    UINT ThreadGroupCountZ;
-} D3D12_DISPATCH_MESH_ARGUMENTS;
-
-[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
-{
-    void DispatchMesh(
-        [annotation("_In_")] UINT ThreadGroupCountX,
-        [annotation("_In_")] UINT ThreadGroupCountY,
-        [annotation("_In_")] UINT ThreadGroupCountZ
-        );
-}
-
-[uuid(dd171223-8b61-4769-90e3-160ccde4e2c1), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList7 : ID3D12GraphicsCommandList6
-{
-    void Barrier(
-        UINT32 NumBarrierGroups,
-        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
-        );
-};
-
-[uuid(ee936ef9-599d-4d28-938e-23c4ad05ce51), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList8 : ID3D12GraphicsCommandList7
-{
-    void OMSetFrontAndBackStencilRef(
-        [annotation("_In_")] UINT FrontStencilRef,
-        [annotation("_In_")] UINT BackStencilRef
-    );
-};
-
-[uuid(34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList9 : ID3D12GraphicsCommandList8
-{
-    void RSSetDepthBias(
-        [annotation("_In_")] FLOAT DepthBias,
-        [annotation("_In_")] FLOAT DepthBiasClamp,
-        [annotation("_In_")] FLOAT SlopeScaledDepthBias
-    );
-
-    void IASetIndexBufferStripCutValue(
-        [annotation("_In_")] D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
-    );
-};
-
-[uuid(7013c015-d161-4b63-a08c-238552dd8acc), object, local, pointer_default(unique)]
-interface ID3D12GraphicsCommandList10 : ID3D12GraphicsCommandList9
-{
-    void SetProgram([annotation("_In_")] const D3D12_SET_PROGRAM_DESC* pDesc);
-    void DispatchGraph([annotation("_In_")] const D3D12_DISPATCH_GRAPH_DESC* pDesc);
-};
-
-
-
-[uuid(597985ab-9b75-4dbb-be23-0761195bebee), object, local, pointer_default(unique)]
-interface ID3D12GBVDiagnostics
-    : IUnknown
-{
-    HRESULT GetGBVEntireSubresourceStatesData( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_writes_bytes_(DataSize)")] int *pData, UINT DataSize );
-    HRESULT GetGBVSubresourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_Out_")] int *pData );
-    HRESULT GetGBVResourceUniformState( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_")] int *pData );
-    HRESULT GetGBVResourceInfo( [annotation("_In_")] ID3D12Resource* pResource, 
-                               [annotation("_In_opt_")] D3D12_RESOURCE_DESC* pResourceDesc,
-                               [annotation("_In_opt_")] UINT32* pResourceHash,
-                               [annotation("_In_opt_")] UINT32* pSubresourceStatesByteOffset );
-
-    void GBVReserved0();
-
-    void GBVReserved1();
-}
-
-//----------------------------------------------------------------------------------------------------------
-// Old types which are still supported by the runtime for app-compat
-
-cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
-#pragma endregion
-
-cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);" )
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+import "oaidl.idl";
+import "ocidl.idl";
+
+import "dxgicommon.idl";
+import "dxgiformat.idl";
+
+import "d3dcommon.idl";
+
+cpp_quote("#include <winapifamily.h>")
+
+#pragma region App Family
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
+
+// NOTE: The following constants are generated from the D3D12 hardware spec.  Do not edit these values directly.
+cpp_quote( "#ifndef _D3D12_CONSTANTS" )
+cpp_quote( "#define _D3D12_CONSTANTS" )
+const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
+const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
+const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
+const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
+const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
+const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
+const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
+const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
+const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
+const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
+const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
+const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
+const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
+const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
+const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
+const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
+const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
+const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
+const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
+const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
+const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
+const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
+const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
+const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
+const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
+const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
+const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
+const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
+const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
+const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
+const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
+const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
+const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
+const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
+const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
+const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
+const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
+const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
+const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
+const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
+const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
+const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
+const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
+const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
+const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
+const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
+const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
+const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
+const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
+const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
+const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
+const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
+const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
+const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
+const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
+const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
+const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
+const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
+const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
+const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
+const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
+const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
+const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
+const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
+const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
+const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
+const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
+const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
+const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
+const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
+const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
+const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
+const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
+const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
+const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
+const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
+const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
+const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
+const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
+const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
+const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
+const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
+const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
+const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
+const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
+const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
+const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
+const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
+const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
+const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
+const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
+cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA	( 1.0f )" )
+cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_BLUE	( 1.0f )" )
+cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_GREEN	( 1.0f )" )
+cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_RED	( 1.0f )" )
+cpp_quote( "#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT	( 0.0f )" )
+const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
+cpp_quote( "#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP	( 0.0f )" )
+const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
+cpp_quote( "#define D3D12_DEFAULT_MIP_LOD_BIAS	( 0.0f )" )
+const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
+const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
+const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
+const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
+const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
+const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
+const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
+const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
+cpp_quote( "#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS	( 0.0f )" )
+const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
+const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
+const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
+const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
+const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
+cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH	( 0.0f )" )
+cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH	( 0.0f )" )
+const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
+const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
+const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
+const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
+const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
+const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
+const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
+const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
+const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
+const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
+const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
+const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
+const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
+const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
+const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
+const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
+const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
+const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
+cpp_quote( "#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP	( 0.6 )" )
+cpp_quote( "#define D3D12_FLOAT32_MAX	( 3.402823466e+38f )" )
+cpp_quote( "#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP	( 0.6f )" )
+cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR	( 2.4f )" )
+cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR	( 1.0f )" )
+cpp_quote( "#define D3D12_FLOAT_TO_SRGB_OFFSET	( 0.055f )" )
+cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_1	( 12.92f )" )
+cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_2	( 1.055f )" )
+cpp_quote( "#define D3D12_FLOAT_TO_SRGB_THRESHOLD	( 0.0031308f )" )
+cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MAX_INPUT	( 2147483647.999f )" )
+cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MIN_INPUT	( -2147483648.999f )" )
+cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MAX_INPUT	( 4294967295.999f )" )
+cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MIN_INPUT	( 0.0f )" )
+const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
+const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
+const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
+const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
+const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
+const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
+const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
+const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
+const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
+const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
+const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
+const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
+const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
+const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
+const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
+const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
+const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
+const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
+const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
+const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
+const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
+const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
+const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
+const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
+const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
+const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
+const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
+const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
+cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND	( 1.0f )" )
+cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND	( 64.0f )" )
+const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
+const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
+const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
+const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
+const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
+const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
+const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
+const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
+const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
+const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
+const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
+const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
+const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
+const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
+const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
+const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
+const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
+const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
+const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
+const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
+const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
+const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
+const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
+cpp_quote( "#define D3D12_LINEAR_GAMMA	( 1.0f )" )
+const UINT D3D12_MAJOR_VERSION = 12;
+cpp_quote( "#define D3D12_MAX_BORDER_COLOR_COMPONENT	( 1.0f )" )
+cpp_quote( "#define D3D12_MAX_DEPTH	( 1.0f )" )
+const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
+const UINT D3D12_MAX_MAXANISOTROPY = 16;
+const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
+cpp_quote( "#define D3D12_MAX_POSITION_VALUE	( 3.402823466e+34f )" )
+const UINT D3D12_MAX_ROOT_COST = 64;
+const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
+const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
+const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
+const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
+const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
+const UINT D3D12_MINOR_VERSION = 0;
+cpp_quote( "#define D3D12_MIN_BORDER_COLOR_COMPONENT	( 0.0f )" )
+cpp_quote( "#define D3D12_MIN_DEPTH	( 0.0f )" )
+const UINT D3D12_MIN_MAXANISOTROPY = 0;
+cpp_quote( "#define D3D12_MIP_LOD_BIAS_MAX	( 15.99f )" )
+cpp_quote( "#define D3D12_MIP_LOD_BIAS_MIN	( -16.0f )" )
+const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
+const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
+cpp_quote( "#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH	( 1.4f )" )
+const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
+const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
+const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
+const UINT D3D12_PACKED_TILE = 0xffffffff;
+const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
+const UINT D3D12_PREVIEW_SDK_VERSION = 716;
+const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
+const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
+const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
+const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
+const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
+const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
+const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
+const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
+const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
+const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
+cpp_quote( "#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT	( 0.0f )" )
+const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
+const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
+const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
+const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
+const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
+cpp_quote( "#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT	( 0.5f )" )
+const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
+const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
+const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
+const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
+const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
+const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
+const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
+const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
+const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
+const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
+const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
+const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
+const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
+const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
+const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
+const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
+const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
+const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
+const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
+const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
+const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
+const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
+const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
+const UINT D3D12_REQ_MAXANISOTROPY = 16;
+const UINT D3D12_REQ_MIP_LEVELS = 15;
+const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
+const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
+const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
+const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
+cpp_quote( "#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM	( 0.25f )" )
+const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
+const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
+const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
+const UINT D3D12_REQ_SUBRESOURCES = 30720;
+const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
+const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
+const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
+const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
+const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
+const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
+const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
+const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
+const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
+const UINT D3D12_SDK_VERSION = 615;
+const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
+const UINT D3D12_SHADER_MAJOR_VERSION = 5;
+const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
+const UINT D3D12_SHADER_MAX_INTERFACES = 253;
+const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
+const UINT D3D12_SHADER_MAX_TYPES = 65535;
+const UINT D3D12_SHADER_MINOR_VERSION = 1;
+const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
+const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
+const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
+const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
+const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
+const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
+const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
+const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
+const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
+const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
+const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
+const UINT D3D12_SO_STREAM_COUNT = 4;
+const UINT D3D12_SPEC_DATE_DAY = 14;
+const UINT D3D12_SPEC_DATE_MONTH = 11;
+const UINT D3D12_SPEC_DATE_YEAR = 2014;
+cpp_quote( "#define D3D12_SPEC_VERSION	( 1.16 )" )
+cpp_quote( "#define D3D12_SRGB_GAMMA	( 2.2f )" )
+cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1	( 12.92f )" )
+cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2	( 1.055f )" )
+cpp_quote( "#define D3D12_SRGB_TO_FLOAT_EXPONENT	( 2.4f )" )
+cpp_quote( "#define D3D12_SRGB_TO_FLOAT_OFFSET	( 0.055f )" )
+cpp_quote( "#define D3D12_SRGB_TO_FLOAT_THRESHOLD	( 0.04045f )" )
+cpp_quote( "#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP	( 0.5f )" )
+const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
+const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
+const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
+const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
+const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
+const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
+const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
+const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
+const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
+const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
+const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
+const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
+const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
+const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
+const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
+const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
+const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
+const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
+const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
+const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
+const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
+const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
+const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
+const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
+const UINT D3D12_UAV_SLOT_COUNT = 64;
+const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
+const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
+const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
+const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
+const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
+const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
+const UINT D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX = 0xFF;
+const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS = 64;
+const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS = 64;
+const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN = 9;
+const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM = 8;
+const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
+const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
+const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
+const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
+const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
+const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
+const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
+const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
+const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
+const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
+const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
+const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
+const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
+const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
+const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
+const UINT D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES = 8;
+const UINT D3D12_WORK_GRAPHS_MAX_NODE_DEPTH = 32;
+cpp_quote( "#endif" )
+
+
+// Forward declarations
+interface ID3D12CommandQueue;
+
+
+typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
+
+typedef enum D3D12_COMMAND_LIST_TYPE
+{
+    D3D12_COMMAND_LIST_TYPE_DIRECT          = 0,
+    D3D12_COMMAND_LIST_TYPE_BUNDLE          = 1,
+    D3D12_COMMAND_LIST_TYPE_COMPUTE         = 2,
+    D3D12_COMMAND_LIST_TYPE_COPY            = 3,
+    D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE    = 4,
+    D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS   = 5,
+    D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE    = 6,
+
+    D3D12_COMMAND_LIST_TYPE_NONE            = -1,
+
+} D3D12_COMMAND_LIST_TYPE;
+
+typedef enum D3D12_COMMAND_QUEUE_FLAGS
+{
+    D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
+    D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
+} D3D12_COMMAND_QUEUE_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )" )
+
+typedef enum D3D12_COMMAND_QUEUE_PRIORITY
+{
+    D3D12_COMMAND_QUEUE_PRIORITY_NORMAL          = 0,
+    D3D12_COMMAND_QUEUE_PRIORITY_HIGH            = 100,
+    D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
+} D3D12_COMMAND_QUEUE_PRIORITY;
+
+typedef struct D3D12_COMMAND_QUEUE_DESC
+{
+    D3D12_COMMAND_LIST_TYPE Type;
+    INT Priority;
+    D3D12_COMMAND_QUEUE_FLAGS Flags;
+    UINT NodeMask;
+} D3D12_COMMAND_QUEUE_DESC;
+
+typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
+{
+    D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
+    D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT     = 1,
+    D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE      = 2,
+    D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE  = 3,
+    D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH     = 4
+} D3D12_PRIMITIVE_TOPOLOGY_TYPE;
+
+typedef enum D3D12_INPUT_CLASSIFICATION
+{
+    D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
+    D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
+} D3D12_INPUT_CLASSIFICATION;
+
+typedef struct D3D12_INPUT_ELEMENT_DESC
+{
+    LPCSTR SemanticName;
+    UINT SemanticIndex;
+    DXGI_FORMAT Format;
+    UINT InputSlot;
+    UINT AlignedByteOffset;
+    D3D12_INPUT_CLASSIFICATION InputSlotClass;
+    UINT InstanceDataStepRate;
+} D3D12_INPUT_ELEMENT_DESC;
+
+// Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
+typedef enum D3D12_FILL_MODE
+{
+    // 1 was POINT in D3D, unused in D3D12
+    D3D12_FILL_MODE_WIREFRAME = 2,
+    D3D12_FILL_MODE_SOLID = 3
+} D3D12_FILL_MODE;
+
+typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
+
+typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
+
+// Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
+typedef enum D3D12_CULL_MODE
+{
+    D3D12_CULL_MODE_NONE = 1,
+    D3D12_CULL_MODE_FRONT = 2,
+    D3D12_CULL_MODE_BACK = 3
+} D3D12_CULL_MODE;
+
+typedef struct D3D12_SO_DECLARATION_ENTRY
+{
+    UINT Stream;
+    LPCSTR SemanticName;
+    UINT SemanticIndex;
+    BYTE StartComponent;
+    BYTE ComponentCount;
+    BYTE OutputSlot;
+} D3D12_SO_DECLARATION_ENTRY;
+
+typedef struct D3D12_VIEWPORT
+{
+    FLOAT TopLeftX;
+    FLOAT TopLeftY;
+    FLOAT Width;
+    FLOAT Height;
+    FLOAT MinDepth;
+    FLOAT MaxDepth;
+} D3D12_VIEWPORT;
+
+
+typedef RECT D3D12_RECT;
+
+
+typedef struct D3D12_BOX
+{
+    UINT left;
+    UINT top;
+    UINT front;
+    UINT right;
+    UINT bottom;
+    UINT back;
+} D3D12_BOX;
+
+//--------------------------------------------------------------------------------------------------------
+// The system LUID struct isn't defined in wtypes, so we repeat it here just
+// for the MIDL compiler.
+cpp_quote("#ifdef __midl")
+cpp_quote("#ifndef LUID_DEFINED")
+cpp_quote("#define LUID_DEFINED 1")
+typedef struct __LUID {
+    DWORD LowPart;
+    LONG HighPart;
+} LUID, * PLUID;
+cpp_quote("#endif")
+cpp_quote("#endif")
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Depth-Stencil State
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
+typedef enum D3D12_COMPARISON_FUNC
+{
+    D3D12_COMPARISON_FUNC_NONE = 0,
+    D3D12_COMPARISON_FUNC_NEVER = 1,
+    D3D12_COMPARISON_FUNC_LESS = 2,
+    D3D12_COMPARISON_FUNC_EQUAL = 3,
+    D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
+    D3D12_COMPARISON_FUNC_GREATER = 5,
+    D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
+    D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
+    D3D12_COMPARISON_FUNC_ALWAYS = 8
+} D3D12_COMPARISON_FUNC;
+
+typedef enum D3D12_DEPTH_WRITE_MASK
+{
+    D3D12_DEPTH_WRITE_MASK_ZERO = 0,
+    D3D12_DEPTH_WRITE_MASK_ALL = 1
+} D3D12_DEPTH_WRITE_MASK;
+
+// Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
+typedef enum D3D12_STENCIL_OP
+{
+    D3D12_STENCIL_OP_KEEP = 1,
+    D3D12_STENCIL_OP_ZERO = 2,
+    D3D12_STENCIL_OP_REPLACE = 3,
+    D3D12_STENCIL_OP_INCR_SAT = 4,
+    D3D12_STENCIL_OP_DECR_SAT = 5,
+    D3D12_STENCIL_OP_INVERT = 6,
+    D3D12_STENCIL_OP_INCR = 7,
+    D3D12_STENCIL_OP_DECR = 8
+} D3D12_STENCIL_OP;
+
+typedef struct D3D12_DEPTH_STENCILOP_DESC
+{
+    D3D12_STENCIL_OP StencilFailOp;
+    D3D12_STENCIL_OP StencilDepthFailOp;
+    D3D12_STENCIL_OP StencilPassOp;
+    D3D12_COMPARISON_FUNC StencilFunc;
+} D3D12_DEPTH_STENCILOP_DESC;
+
+typedef struct D3D12_DEPTH_STENCIL_DESC
+{
+    BOOL DepthEnable;
+    D3D12_DEPTH_WRITE_MASK DepthWriteMask;
+    D3D12_COMPARISON_FUNC DepthFunc;
+    BOOL StencilEnable;
+    UINT8 StencilReadMask;
+    UINT8 StencilWriteMask;
+    D3D12_DEPTH_STENCILOP_DESC FrontFace;
+    D3D12_DEPTH_STENCILOP_DESC BackFace;
+} D3D12_DEPTH_STENCIL_DESC;
+
+typedef struct D3D12_DEPTH_STENCIL_DESC1
+{
+    BOOL DepthEnable;
+    D3D12_DEPTH_WRITE_MASK DepthWriteMask;
+    D3D12_COMPARISON_FUNC DepthFunc;
+    BOOL StencilEnable;
+    UINT8 StencilReadMask;
+    UINT8 StencilWriteMask;
+    D3D12_DEPTH_STENCILOP_DESC FrontFace;
+    D3D12_DEPTH_STENCILOP_DESC BackFace;
+    BOOL DepthBoundsTestEnable;
+} D3D12_DEPTH_STENCIL_DESC1;
+
+// Front/back face independent stencil masks
+typedef struct D3D12_DEPTH_STENCILOP_DESC1
+{
+    D3D12_STENCIL_OP StencilFailOp;
+    D3D12_STENCIL_OP StencilDepthFailOp;
+    D3D12_STENCIL_OP StencilPassOp;
+    D3D12_COMPARISON_FUNC StencilFunc;
+    UINT8 StencilReadMask;
+    UINT8 StencilWriteMask;
+} D3D12_DEPTH_STENCILOP_DESC1;
+
+typedef struct D3D12_DEPTH_STENCIL_DESC2
+{
+    BOOL DepthEnable;
+    D3D12_DEPTH_WRITE_MASK DepthWriteMask;
+    D3D12_COMPARISON_FUNC DepthFunc;
+    BOOL StencilEnable;
+    D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
+    D3D12_DEPTH_STENCILOP_DESC1 BackFace;
+    BOOL DepthBoundsTestEnable;
+} D3D12_DEPTH_STENCIL_DESC2;
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Blend State
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
+typedef enum D3D12_BLEND
+{
+    D3D12_BLEND_ZERO = 1,
+    D3D12_BLEND_ONE = 2,
+    D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
+    D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
+    D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
+    D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
+    D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
+    D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
+    D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
+    D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
+    D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
+    // 12 reserved (was BOTHSRCALPHA)
+    // 13 reserved (was BOTHSRCALPHA)
+    D3D12_BLEND_BLEND_FACTOR = 14,
+    D3D12_BLEND_INV_BLEND_FACTOR = 15,
+    D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
+    D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
+    D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
+    D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
+    D3D12_BLEND_ALPHA_FACTOR = 20,
+    D3D12_BLEND_INV_ALPHA_FACTOR = 21
+} D3D12_BLEND;
+
+// Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
+typedef enum D3D12_BLEND_OP
+{
+    D3D12_BLEND_OP_ADD = 1,
+    D3D12_BLEND_OP_SUBTRACT = 2,
+    D3D12_BLEND_OP_REV_SUBTRACT = 3,
+    D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
+    D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
+} D3D12_BLEND_OP;
+
+typedef enum D3D12_COLOR_WRITE_ENABLE
+{
+    D3D12_COLOR_WRITE_ENABLE_RED = 1,
+    D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
+    D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
+    D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
+    D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
+        D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
+} D3D12_COLOR_WRITE_ENABLE;
+
+typedef enum D3D12_LOGIC_OP
+{
+                                   // Operation: 
+                                   // (s == PS output, d = RTV contents)
+    D3D12_LOGIC_OP_CLEAR = 0,      // 0
+    D3D12_LOGIC_OP_SET,            // 1
+    D3D12_LOGIC_OP_COPY,           // s
+    D3D12_LOGIC_OP_COPY_INVERTED,  // ~s
+    D3D12_LOGIC_OP_NOOP,           // d
+    D3D12_LOGIC_OP_INVERT,         // ~d
+    D3D12_LOGIC_OP_AND,            // s & d
+    D3D12_LOGIC_OP_NAND,           // ~(s & d)
+    D3D12_LOGIC_OP_OR,             // s | d
+    D3D12_LOGIC_OP_NOR,            // ~(s | d)
+    D3D12_LOGIC_OP_XOR,            // s ^ d
+    D3D12_LOGIC_OP_EQUIV,          // ~(s ^ d)
+    D3D12_LOGIC_OP_AND_REVERSE,    // s & ~d
+    D3D12_LOGIC_OP_AND_INVERTED,   // ~s & d
+    D3D12_LOGIC_OP_OR_REVERSE,     // s | ~d
+    D3D12_LOGIC_OP_OR_INVERTED,    // ~s | d
+} D3D12_LOGIC_OP;
+
+typedef struct D3D12_RENDER_TARGET_BLEND_DESC
+{
+    BOOL BlendEnable;
+    BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
+    D3D12_BLEND SrcBlend;
+    D3D12_BLEND DestBlend;
+    D3D12_BLEND_OP BlendOp;
+    D3D12_BLEND SrcBlendAlpha;
+    D3D12_BLEND DestBlendAlpha;
+    D3D12_BLEND_OP BlendOpAlpha;
+    D3D12_LOGIC_OP LogicOp; // applies to RGBA
+    UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
+} D3D12_RENDER_TARGET_BLEND_DESC;
+
+typedef struct D3D12_BLEND_DESC
+{
+    BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
+    BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
+    D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
+} D3D12_BLEND_DESC;
+
+cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
+cpp_quote( "   IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" ) 
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Rasterizer State
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
+{
+    D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF       = 0, // Default
+    D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON        = 1,
+} D3D12_CONSERVATIVE_RASTERIZATION_MODE;
+
+typedef struct D3D12_RASTERIZER_DESC
+{
+    D3D12_FILL_MODE FillMode;
+    D3D12_CULL_MODE CullMode;
+    BOOL FrontCounterClockwise;
+    INT DepthBias;
+    FLOAT DepthBiasClamp;
+    FLOAT SlopeScaledDepthBias;
+    BOOL DepthClipEnable;
+    BOOL MultisampleEnable;
+    BOOL AntialiasedLineEnable;
+    UINT ForcedSampleCount;  
+    D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
+} D3D12_RASTERIZER_DESC;
+
+typedef struct D3D12_RASTERIZER_DESC1
+{
+    D3D12_FILL_MODE FillMode;
+    D3D12_CULL_MODE CullMode;
+    BOOL FrontCounterClockwise;
+    FLOAT DepthBias;
+    FLOAT DepthBiasClamp;
+    FLOAT SlopeScaledDepthBias;
+    BOOL DepthClipEnable;
+    BOOL MultisampleEnable;
+    BOOL AntialiasedLineEnable;
+    UINT ForcedSampleCount;
+    D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
+} D3D12_RASTERIZER_DESC1;
+
+typedef enum D3D12_LINE_RASTERIZATION_MODE
+{
+    D3D12_LINE_RASTERIZATION_MODE_ALIASED,
+    D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED,
+    D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE,
+    D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW,
+} D3D12_LINE_RASTERIZATION_MODE;
+
+typedef struct D3D12_RASTERIZER_DESC2
+{
+    D3D12_FILL_MODE FillMode;
+    D3D12_CULL_MODE CullMode;
+    BOOL FrontCounterClockwise;
+    FLOAT DepthBias;
+    FLOAT DepthBiasClamp;
+    FLOAT SlopeScaledDepthBias;
+    BOOL DepthClipEnable;
+    D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
+    UINT ForcedSampleCount;
+    D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
+} D3D12_RASTERIZER_DESC2;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Pipeline State v1
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+[ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
+interface ID3D12RootSignature
+    : ID3D12DeviceChild
+{
+}
+
+typedef struct D3D12_SHADER_BYTECODE
+{
+    [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
+    SIZE_T BytecodeLength;
+} D3D12_SHADER_BYTECODE;
+
+typedef struct D3D12_STREAM_OUTPUT_DESC
+{
+    [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
+    UINT NumEntries;
+    [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
+    UINT NumStrides;
+    UINT RasterizedStream;
+} D3D12_STREAM_OUTPUT_DESC;
+
+typedef struct D3D12_INPUT_LAYOUT_DESC
+{
+    [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
+    UINT NumElements;
+} D3D12_INPUT_LAYOUT_DESC;
+
+typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
+{
+    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
+    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
+    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
+} D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
+
+typedef enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
+{
+    D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
+    D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
+} 	D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
+
+typedef struct D3D12_CACHED_PIPELINE_STATE
+{
+    [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
+    SIZE_T CachedBlobSizeInBytes;
+} D3D12_CACHED_PIPELINE_STATE;
+
+typedef enum D3D12_PIPELINE_STATE_FLAGS
+{
+    D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
+    D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
+    D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
+    D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8,
+
+} D3D12_PIPELINE_STATE_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )" )
+
+typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
+{
+    ID3D12RootSignature*          pRootSignature;
+    D3D12_SHADER_BYTECODE         VS;
+    D3D12_SHADER_BYTECODE         PS;
+    D3D12_SHADER_BYTECODE         DS;
+    D3D12_SHADER_BYTECODE         HS;
+    D3D12_SHADER_BYTECODE         GS;
+    D3D12_STREAM_OUTPUT_DESC      StreamOutput;
+    D3D12_BLEND_DESC              BlendState;
+    UINT                          SampleMask;
+    D3D12_RASTERIZER_DESC         RasterizerState;
+    D3D12_DEPTH_STENCIL_DESC      DepthStencilState;
+    D3D12_INPUT_LAYOUT_DESC       InputLayout;
+    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
+    D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
+    UINT                          NumRenderTargets;
+    DXGI_FORMAT                   RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
+    DXGI_FORMAT                   DSVFormat;
+    DXGI_SAMPLE_DESC              SampleDesc;
+    UINT                          NodeMask;
+    D3D12_CACHED_PIPELINE_STATE   CachedPSO;
+    D3D12_PIPELINE_STATE_FLAGS    Flags;
+} D3D12_GRAPHICS_PIPELINE_STATE_DESC;
+
+typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
+{
+    ID3D12RootSignature*   pRootSignature;
+    D3D12_SHADER_BYTECODE  CS;
+    UINT                   NodeMask;
+    D3D12_CACHED_PIPELINE_STATE   CachedPSO;
+    D3D12_PIPELINE_STATE_FLAGS    Flags;
+} D3D12_COMPUTE_PIPELINE_STATE_DESC;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Pipeline State v2
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+struct D3D12_RT_FORMAT_ARRAY
+{
+    DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
+    UINT NumRenderTargets;
+};
+
+typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
+{
+    [annotation("_In_")] SIZE_T SizeInBytes;
+    [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
+} D3D12_PIPELINE_STATE_STREAM_DESC;
+
+typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
+{
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26, // D3D12_DEPTH_STENCIL_DESC2
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27, // D3D12_RASTERIZER_DESC1
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28, // D3D12_RASTERIZER_DESC2
+    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
+} D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// D3D12 Caps
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+typedef enum D3D12_FEATURE
+{
+    D3D12_FEATURE_D3D12_OPTIONS                         =  0,
+    D3D12_FEATURE_ARCHITECTURE                          =  1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
+    D3D12_FEATURE_FEATURE_LEVELS                        =  2,
+    D3D12_FEATURE_FORMAT_SUPPORT                        =  3,
+    D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS            =  4,
+    D3D12_FEATURE_FORMAT_INFO                           =  5,
+    D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT           =  6,
+    D3D12_FEATURE_SHADER_MODEL                          =  7,
+    D3D12_FEATURE_D3D12_OPTIONS1                        =  8,
+    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT    = 10,
+    D3D12_FEATURE_ROOT_SIGNATURE                        = 12,
+    D3D12_FEATURE_ARCHITECTURE1                         = 16,
+    D3D12_FEATURE_D3D12_OPTIONS2                        = 18,
+    D3D12_FEATURE_SHADER_CACHE                          = 19,
+    D3D12_FEATURE_COMMAND_QUEUE_PRIORITY                = 20,
+    D3D12_FEATURE_D3D12_OPTIONS3                        = 21,
+    D3D12_FEATURE_EXISTING_HEAPS                        = 22,
+    D3D12_FEATURE_D3D12_OPTIONS4                        = 23,
+    D3D12_FEATURE_SERIALIZATION                         = 24,
+    D3D12_FEATURE_CROSS_NODE                            = 25,
+    D3D12_FEATURE_D3D12_OPTIONS5                        = 27,
+    D3D12_FEATURE_DISPLAYABLE                           = 28,
+    D3D12_FEATURE_D3D12_OPTIONS6                        = 30,
+    D3D12_FEATURE_QUERY_META_COMMAND                    = 31,
+    D3D12_FEATURE_D3D12_OPTIONS7                        = 32,
+    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33, 
+    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES      = 34,
+    D3D12_FEATURE_D3D12_OPTIONS8                        = 36,
+    D3D12_FEATURE_D3D12_OPTIONS9                        = 37,
+    D3D12_FEATURE_D3D12_OPTIONS10                       = 39,
+    D3D12_FEATURE_D3D12_OPTIONS11                       = 40,
+    D3D12_FEATURE_D3D12_OPTIONS12                       = 41,
+    D3D12_FEATURE_D3D12_OPTIONS13                       = 42,
+    D3D12_FEATURE_D3D12_OPTIONS14                       = 43,
+    D3D12_FEATURE_D3D12_OPTIONS15                       = 44,
+    D3D12_FEATURE_D3D12_OPTIONS16                       = 45,
+    D3D12_FEATURE_D3D12_OPTIONS17                       = 46,
+    D3D12_FEATURE_D3D12_OPTIONS18                       = 47,
+    D3D12_FEATURE_D3D12_OPTIONS19                       = 48,
+    D3D12_FEATURE_D3D12_OPTIONS20                       = 49,
+    D3D12_FEATURE_PREDICATION                           = 50,
+    D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO          = 51,
+    D3D12_FEATURE_HARDWARE_COPY                         = 52,
+    D3D12_FEATURE_D3D12_OPTIONS21                       = 53,
+    D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED        = 57,
+} D3D12_FEATURE;
+
+typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
+{
+    D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE   = 0x0,
+    D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
+    D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
+} D3D12_SHADER_MIN_PRECISION_SUPPORT;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )" )
+
+typedef enum D3D12_TILED_RESOURCES_TIER
+{
+    D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
+    D3D12_TILED_RESOURCES_TIER_1        = 1,
+    D3D12_TILED_RESOURCES_TIER_2        = 2,
+    D3D12_TILED_RESOURCES_TIER_3        = 3,
+    D3D12_TILED_RESOURCES_TIER_4        = 4,
+} D3D12_TILED_RESOURCES_TIER;
+
+typedef enum D3D12_RESOURCE_BINDING_TIER
+{
+    D3D12_RESOURCE_BINDING_TIER_1 = 1,
+    D3D12_RESOURCE_BINDING_TIER_2 = 2,
+    D3D12_RESOURCE_BINDING_TIER_3 = 3,
+} D3D12_RESOURCE_BINDING_TIER;
+
+typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER { 
+  D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED  = 0,
+  D3D12_CONSERVATIVE_RASTERIZATION_TIER_1         = 1,
+  D3D12_CONSERVATIVE_RASTERIZATION_TIER_2         = 2,
+  D3D12_CONSERVATIVE_RASTERIZATION_TIER_3         = 3,
+} D3D12_CONSERVATIVE_RASTERIZATION_TIER;
+
+
+typedef enum D3D12_FORMAT_SUPPORT1
+{
+    D3D12_FORMAT_SUPPORT1_NONE                       = 0,
+    D3D12_FORMAT_SUPPORT1_BUFFER                      = 0x00000001,
+    D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER            = 0x00000002,
+    D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER             = 0x00000004,
+    D3D12_FORMAT_SUPPORT1_SO_BUFFER                   = 0x00000008,
+    D3D12_FORMAT_SUPPORT1_TEXTURE1D                   = 0x00000010,
+    D3D12_FORMAT_SUPPORT1_TEXTURE2D                   = 0x00000020,
+    D3D12_FORMAT_SUPPORT1_TEXTURE3D                   = 0x00000040,
+    D3D12_FORMAT_SUPPORT1_TEXTURECUBE                 = 0x00000080,
+    D3D12_FORMAT_SUPPORT1_SHADER_LOAD                 = 0x00000100,
+    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE               = 0x00000200,
+    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON    = 0x00000400,
+    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT     = 0x00000800,
+    D3D12_FORMAT_SUPPORT1_MIP                         = 0x00001000,
+    D3D12_FORMAT_SUPPORT1_RENDER_TARGET               = 0x00004000,
+    D3D12_FORMAT_SUPPORT1_BLENDABLE                   = 0x00008000,
+    D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL               = 0x00010000,
+    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE         = 0x00040000,
+    D3D12_FORMAT_SUPPORT1_DISPLAY                     = 0x00080000,
+    D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT      = 0x00100000,
+    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET    = 0x00200000,
+    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD            = 0x00400000,
+    D3D12_FORMAT_SUPPORT1_SHADER_GATHER               = 0x00800000,
+    D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST            = 0x01000000,
+    D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
+    D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON    = 0x04000000,
+    D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT              = 0x08000000,
+    D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT      = 0x10000000,
+    D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT       = 0x20000000,
+    D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER               = 0x40000000,
+} D3D12_FORMAT_SUPPORT1;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )" )
+
+typedef enum D3D12_FORMAT_SUPPORT2
+{
+    D3D12_FORMAT_SUPPORT2_NONE                                              = 0,
+    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD                                    = 0x00000001,
+    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS                            = 0x00000002,
+    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE      = 0x00000004,
+    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE                               = 0x00000008,
+    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX                      = 0x00000010,
+    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX                    = 0x00000020,
+    D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD                                    = 0x00000040,
+    D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE                                   = 0x00000080,
+    D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP                            = 0x00000100,
+    D3D12_FORMAT_SUPPORT2_TILED                                             = 0x00000200,
+    D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY                                = 0x00004000,
+    D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK                                  = 0x00008000,
+} D3D12_FORMAT_SUPPORT2;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )" )
+
+typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
+{
+    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE           = 0,
+    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
+} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )" )
+
+typedef enum D3D12_CROSS_NODE_SHARING_TIER
+{
+    D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED    = 0,
+    D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED  = 1,
+    D3D12_CROSS_NODE_SHARING_TIER_1           = 2,
+    D3D12_CROSS_NODE_SHARING_TIER_2           = 3,
+    D3D12_CROSS_NODE_SHARING_TIER_3           = 4,
+} D3D12_CROSS_NODE_SHARING_TIER;
+
+typedef enum D3D12_RESOURCE_HEAP_TIER
+{
+    D3D12_RESOURCE_HEAP_TIER_1 = 1,
+    D3D12_RESOURCE_HEAP_TIER_2 = 2,
+} D3D12_RESOURCE_HEAP_TIER;
+
+typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
+{
+    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
+    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
+    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
+} D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
+
+typedef enum D3D12_VIEW_INSTANCING_TIER
+{
+    D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
+    D3D12_VIEW_INSTANCING_TIER_1 = 1,
+    D3D12_VIEW_INSTANCING_TIER_2 = 2,
+    D3D12_VIEW_INSTANCING_TIER_3 = 3,
+} D3D12_VIEW_INSTANCING_TIER;
+
+
+typedef enum D3D12_WORK_GRAPHS_TIER {
+    D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
+    D3D12_WORK_GRAPHS_TIER_1_0 = 10,
+} D3D12_WORK_GRAPHS_TIER;
+
+
+// D3D12_FEATURE_D3D12_OPTIONS
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
+{
+    [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
+    [annotation("_Out_")] BOOL OutputMergerLogicOp;
+    [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
+    [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
+    [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
+    [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
+    [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
+    [annotation("_Out_")] BOOL ROVsSupported;
+    [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
+    [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
+    [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
+    [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
+    [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
+    [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
+    [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS;
+
+// D3D12_FEATURE_D3D12_OPTIONS1
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
+{
+    [annotation("_Out_")] BOOL WaveOps;
+    [annotation("_Out_")] UINT WaveLaneCountMin;
+    [annotation("_Out_")] UINT WaveLaneCountMax;
+    [annotation("_Out_")] UINT TotalLaneCount;
+    [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
+    [annotation("_Out_")] BOOL Int64ShaderOps;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS1;
+
+// D3D12_FEATURE_D3D12_OPTIONS2
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
+{
+    [annotation("_Out_")] BOOL DepthBoundsTestSupported;
+    [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS2;
+
+// D3D12_FEATURE_ROOT_SIGNATURE
+typedef enum D3D_ROOT_SIGNATURE_VERSION
+{
+    D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
+    D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
+    D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
+    D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3,
+} D3D_ROOT_SIGNATURE_VERSION;
+
+typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
+{
+    [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
+} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
+
+// D3D12_FEATURE_ARCHITECTURE
+typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
+{
+    [annotation("_In_")]  UINT NodeIndex;
+    [annotation("_Out_")] BOOL TileBasedRenderer;
+    [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
+    [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
+} D3D12_FEATURE_DATA_ARCHITECTURE;
+
+// D3D12_FEATURE_ARCHITECTURE1
+typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
+{
+    [annotation("_In_")]  UINT NodeIndex;
+    [annotation("_Out_")] BOOL TileBasedRenderer;
+    [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
+    [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
+    [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
+} D3D12_FEATURE_DATA_ARCHITECTURE1;
+
+// D3D12_FEATURE_FEATURE_LEVELS
+typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
+{
+    [annotation("_In_")] UINT NumFeatureLevels;
+    [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
+    [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
+} D3D12_FEATURE_DATA_FEATURE_LEVELS;
+
+// D3D_SHADER_MODEL
+typedef enum D3D_SHADER_MODEL
+{
+    D3D_SHADER_MODEL_NONE = 0x0, // e.g MCDM Generic devices
+    D3D_SHADER_MODEL_5_1 = 0x51,
+    D3D_SHADER_MODEL_6_0 = 0x60,
+    D3D_SHADER_MODEL_6_1 = 0x61,
+    D3D_SHADER_MODEL_6_2 = 0x62,
+    D3D_SHADER_MODEL_6_3 = 0x63,
+    D3D_SHADER_MODEL_6_4 = 0x64,
+    D3D_SHADER_MODEL_6_5 = 0x65,
+    D3D_SHADER_MODEL_6_6 = 0x66,
+    D3D_SHADER_MODEL_6_7 = 0x67,
+    D3D_SHADER_MODEL_6_8 = 0x68,
+    D3D_SHADER_MODEL_6_9 = 0x69,
+    D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
+} D3D_SHADER_MODEL;
+
+typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
+{
+    [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
+} D3D12_FEATURE_DATA_SHADER_MODEL;
+
+// D3D12_FEATURE_FORMAT_SUPPORT
+typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
+{
+    [annotation("_In_")] DXGI_FORMAT Format;
+    [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
+    [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
+} D3D12_FEATURE_DATA_FORMAT_SUPPORT;
+
+// D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
+typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
+{
+    [annotation("_In_")] DXGI_FORMAT Format;
+    [annotation("_In_")] UINT SampleCount;
+    [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
+    [annotation("_Out_")] UINT NumQualityLevels;
+} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
+
+// D3D12_FEATURE_FORMAT_INFO
+typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
+{
+    DXGI_FORMAT Format;
+    UINT8 PlaneCount;
+} D3D12_FEATURE_DATA_FORMAT_INFO;
+
+// D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
+typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
+{
+    UINT MaxGPUVirtualAddressBitsPerResource;
+    UINT MaxGPUVirtualAddressBitsPerProcess;
+} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
+
+
+typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
+{
+    D3D12_SHADER_CACHE_SUPPORT_NONE                     = 0x0,
+    D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO               = 0x1, // Always supported
+    D3D12_SHADER_CACHE_SUPPORT_LIBRARY                  = 0x2,
+    D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE   = 0x4,
+    D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE     = 0x8,
+    D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE     = 0x10,
+    D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR     = 0x20,
+    D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE    = 0x40
+} D3D12_SHADER_CACHE_SUPPORT_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )" )
+
+// D3D12_FEATURE_SHADER_CACHE
+typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
+{
+    [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
+} D3D12_FEATURE_DATA_SHADER_CACHE;
+
+// D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
+typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
+{
+    [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
+    [annotation("_In_")] UINT Priority;
+    [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
+} D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
+
+typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
+{
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE                = 0x00000000,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT              = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE              = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE             = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY                = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE        = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS       = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE        = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
+
+} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )")
+
+// D3D12_FEATURE_D3D12_OPTIONS3
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
+{
+    [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
+    [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
+    [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
+    [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
+    [annotation("_Out_")] BOOL BarycentricsSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
+
+// D3D12_FEATURE_EXISTING_HEAPS
+typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
+{
+    [annotation("_Out_")] BOOL Supported;
+} D3D12_FEATURE_DATA_EXISTING_HEAPS;
+
+typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
+{
+    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0, 
+    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
+    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
+} D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
+
+typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
+{
+    [annotation("_Out_")] BOOL DisplayableTexture;
+    [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
+} D3D12_FEATURE_DATA_DISPLAYABLE;
+
+// D3D12_FEATURE_D3D12_OPTIONS4
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
+{
+    [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
+    [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
+    [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS4;
+
+typedef enum D3D12_HEAP_SERIALIZATION_TIER
+{
+    D3D12_HEAP_SERIALIZATION_TIER_0 = 0, 
+    D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
+} D3D12_HEAP_SERIALIZATION_TIER;
+
+// D3D12_FEATURE_SERIALIZATION
+typedef struct D3D12_FEATURE_DATA_SERIALIZATION
+{
+    [annotation("_In_")]  UINT NodeIndex;
+    [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
+} D3D12_FEATURE_DATA_SERIALIZATION;
+
+// D3D12_FEATURE_CROSS_NODE
+typedef struct D3D12_FEATURE_DATA_CROSS_NODE
+{
+    D3D12_CROSS_NODE_SHARING_TIER SharingTier;
+    BOOL AtomicShaderInstructions;
+} D3D12_FEATURE_DATA_CROSS_NODE;
+
+
+typedef enum D3D12_RENDER_PASS_TIER
+{
+    D3D12_RENDER_PASS_TIER_0 = 0,
+    D3D12_RENDER_PASS_TIER_1 = 1,
+    D3D12_RENDER_PASS_TIER_2 = 2,
+
+
+} D3D12_RENDER_PASS_TIER;
+
+typedef enum D3D12_RAYTRACING_TIER
+{
+    D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
+    D3D12_RAYTRACING_TIER_1_0 = 10,
+    D3D12_RAYTRACING_TIER_1_1 = 11,
+} D3D12_RAYTRACING_TIER;
+
+// D3D12_FEATURE_D3D12_OPTIONS5
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
+{
+    [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
+    [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
+    [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
+
+typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
+{
+    D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
+    D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
+    D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
+} D3D12_VARIABLE_SHADING_RATE_TIER;
+
+// D3D12_FEATURE_D3D12_OPTIONS6
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
+{
+    [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
+    [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
+    [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
+    [annotation("_Out_")] UINT ShadingRateImageTileSize;
+    [annotation("_Out_")] BOOL BackgroundProcessingSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS6;
+
+typedef enum D3D12_MESH_SHADER_TIER
+{
+    D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
+    D3D12_MESH_SHADER_TIER_1 = 10,
+} D3D12_MESH_SHADER_TIER;
+
+typedef enum D3D12_SAMPLER_FEEDBACK_TIER
+{
+    D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
+    D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
+    D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
+} D3D12_SAMPLER_FEEDBACK_TIER;
+
+// D3D12_FEATURE_D3D12_OPTIONS7
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
+{
+    [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
+    [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
+
+} D3D12_FEATURE_DATA_D3D12_OPTIONS7;
+
+typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
+{
+    [annotation("_In_")] GUID CommandId;
+    [annotation("_In_")] UINT NodeMask;
+    [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
+    [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
+    [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
+    [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
+} D3D12_FEATURE_DATA_QUERY_META_COMMAND;
+
+// D3D12_FEATURE_D3D12_OPTIONS8
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
+{
+    [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS8;
+
+typedef enum D3D12_WAVE_MMA_TIER {
+    D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
+    D3D12_WAVE_MMA_TIER_1_0 = 10,
+} D3D12_WAVE_MMA_TIER;
+
+// D3D12_FEATURE_D3D12_OPTIONS9
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
+{
+    [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
+    [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
+    [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
+    [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
+    [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
+    [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS9;
+
+// D3D12_FEATURE_D3D12_OPTIONS10
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
+{
+    [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
+    [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS10;
+
+// D3D12_FEATURE_D3D12_OPTIONS11
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
+{
+    [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS11;
+
+typedef enum D3D12_TRI_STATE {
+    D3D12_TRI_STATE_UNKNOWN = -1,
+    D3D12_TRI_STATE_FALSE = 0,
+    D3D12_TRI_STATE_TRUE = 1,
+} D3D12_TRI_STATE;
+
+// D3D12_FEATURE_D3D12_OPTIONS12
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
+{
+    [annotation("_Out_")] D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
+    [annotation("_Out_")] BOOL EnhancedBarriersSupported;
+    [annotation("_Out_")] BOOL RelaxedFormatCastingSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS12;
+
+// D3D12_FEATURE_D3D12_OPTIONS13
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
+{
+    [annotation("_Out_")] BOOL UnrestrictedBufferTextureCopyPitchSupported;
+    [annotation("_Out_")] BOOL UnrestrictedVertexElementAlignmentSupported;
+    [annotation("_Out_")] BOOL InvertedViewportHeightFlipsYSupported;
+    [annotation("_Out_")] BOOL InvertedViewportDepthFlipsZSupported;
+    [annotation("_Out_")] BOOL TextureCopyBetweenDimensionsSupported;
+    [annotation("_Out_")] BOOL AlphaBlendFactorSupported;   
+} D3D12_FEATURE_DATA_D3D12_OPTIONS13;
+
+// D3D12_FEATURE_D3D12_OPTIONS14
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
+{
+    [annotation("_Out_")] BOOL AdvancedTextureOpsSupported;
+    [annotation("_Out_")] BOOL WriteableMSAATexturesSupported;
+    [annotation("_Out_")] BOOL IndependentFrontAndBackStencilRefMaskSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS14;
+
+// D3D12_FEATURE_D3D12_OPTIONS15
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
+{
+    [annotation("_Out_")] BOOL TriangleFanSupported;
+    [annotation("_Out_")] BOOL DynamicIndexBufferStripCutSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS15;
+
+// D3D12_FEATURE_D3D12_OPTIONS16
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
+{
+    [annotation("_Out_")] BOOL DynamicDepthBiasSupported;
+    [annotation("_Out_")] BOOL GPUUploadHeapSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS16;
+
+// D3D12_FEATURE_D3D12_OPTIONS17
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
+{
+    [annotation("_Out_")] BOOL NonNormalizedCoordinateSamplersSupported;
+    [annotation("_Out_")] BOOL ManualWriteTrackingResourceSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS17;
+
+// D3D12_FEATURE_D3D12_OPTIONS18
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
+{
+    [annotation("_Out_")] BOOL RenderPassesValid;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS18;
+
+// D3D12_FEATURE_D3D12_OPTIONS19
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
+{
+    BOOL MismatchingOutputDimensionsSupported;
+    UINT SupportedSampleCountsWithNoOutputs;
+    BOOL PointSamplingAddressesNeverRoundUp;
+    BOOL RasterizerDesc2Supported;
+    BOOL NarrowQuadrilateralLinesSupported;
+    BOOL AnisoFilterWithPointMipSupported;
+    UINT MaxSamplerDescriptorHeapSize;
+    UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
+    UINT MaxViewDescriptorHeapSize;
+    [annotation("_Out_")] BOOL ComputeOnlyCustomHeapSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS19;
+
+
+typedef enum D3D12_RECREATE_AT_TIER
+{
+    D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
+
+    // * Supports retrieving resource and heap allocation information 
+    //   with ID3D12PageableTools::GetAllocationInfo
+    // * Supports setting resource and heap virtual addresses with
+    //   ID3D12DeviceTools::SetNextAllocation
+    D3D12_RECREATE_AT_TIER_1 = 1,
+
+} D3D12_RECREATE_AT_TIER;
+
+
+// D3D12_FEATURE_D3D12_OPTIONS20
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
+{
+    [annotation("_Out_")] BOOL ComputeOnlyWriteWatchSupported;
+    D3D12_RECREATE_AT_TIER RecreateAtTier;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS20;
+
+typedef enum D3D12_EXECUTE_INDIRECT_TIER
+{
+    D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
+    D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11,
+} D3D12_EXECUTE_INDIRECT_TIER;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
+{
+    [annotation("_Out_")] D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
+    [annotation("_Out_")] D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
+    [annotation("_Out_")] BOOL SampleCmpGradientAndBiasSupported;
+    [annotation("_Out_")] BOOL ExtendedCommandInfoSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS21;
+
+
+
+typedef struct D3D12_FEATURE_DATA_PREDICATION
+{
+    [annotation("_Out_")] BOOL Supported;
+} D3D12_FEATURE_DATA_PREDICATION;
+
+typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
+{
+    [annotation("_Out_")] BOOL Supported;
+} D3D12_FEATURE_DATA_HARDWARE_COPY;
+
+
+typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
+{
+    [annotation("_Out_")] BOOL Supported;
+} D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
+
+typedef struct D3D12_RESOURCE_ALLOCATION_INFO
+{
+    UINT64 SizeInBytes;
+    UINT64 Alignment;
+} D3D12_RESOURCE_ALLOCATION_INFO;
+
+typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
+{
+    UINT64 Offset;
+    UINT64 Alignment;
+    UINT64 SizeInBytes;
+} D3D12_RESOURCE_ALLOCATION_INFO1;
+
+typedef enum D3D12_HEAP_TYPE
+{
+    D3D12_HEAP_TYPE_DEFAULT   = 1, 
+    D3D12_HEAP_TYPE_UPLOAD    = 2,
+    D3D12_HEAP_TYPE_READBACK  = 3,
+    D3D12_HEAP_TYPE_CUSTOM    = 4,
+    D3D12_HEAP_TYPE_GPU_UPLOAD = 5,
+} D3D12_HEAP_TYPE;
+
+typedef enum D3D12_CPU_PAGE_PROPERTY
+{
+    D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
+    D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
+    D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
+    D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
+} D3D12_CPU_PAGE_PROPERTY;
+
+typedef enum D3D12_MEMORY_POOL
+{
+    D3D12_MEMORY_POOL_UNKNOWN = 0,
+    D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
+    D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
+} D3D12_MEMORY_POOL;
+
+typedef struct D3D12_HEAP_PROPERTIES
+{
+    D3D12_HEAP_TYPE Type;
+    D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
+    D3D12_MEMORY_POOL MemoryPoolPreference;
+    UINT CreationNodeMask;
+    UINT VisibleNodeMask;
+} D3D12_HEAP_PROPERTIES;
+
+typedef enum D3D12_HEAP_FLAGS
+{
+    D3D12_HEAP_FLAG_NONE = 0x0,
+    D3D12_HEAP_FLAG_SHARED = 0x1,
+    D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
+    D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
+    D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
+    D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
+    D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
+    D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
+    D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
+    D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
+    D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
+    D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
+    D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
+
+    // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
+    D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
+    D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
+    D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
+    D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
+
+
+} D3D12_HEAP_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )" )
+
+typedef struct D3D12_HEAP_DESC 
+{
+    UINT64 SizeInBytes;
+    D3D12_HEAP_PROPERTIES Properties;
+    UINT64 Alignment;
+    D3D12_HEAP_FLAGS Flags;
+} D3D12_HEAP_DESC;
+
+typedef enum D3D12_RESOURCE_DIMENSION
+{
+    D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
+    D3D12_RESOURCE_DIMENSION_BUFFER = 1,
+    D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
+    D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
+    D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
+} D3D12_RESOURCE_DIMENSION;
+
+typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
+{
+    [annotation("_In_")] DXGI_FORMAT Format;
+    [annotation("_In_")] D3D12_RESOURCE_DIMENSION Dimension;
+    [annotation("_In_")] D3D12_HEAP_PROPERTIES DestHeapProperties;
+    [annotation("_Out_")] BOOL Supported;
+} D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
+
+typedef enum D3D12_TEXTURE_LAYOUT
+{
+    D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
+    D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers.  Can be used with cross-adapter shared textures.
+    D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
+    D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
+} D3D12_TEXTURE_LAYOUT; 
+
+typedef enum D3D12_RESOURCE_FLAGS
+{
+    D3D12_RESOURCE_FLAG_NONE = 0x0,
+    D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
+    D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
+    D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
+    D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
+    D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
+    D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
+    D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40, 
+    D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80, 
+    D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
+
+} D3D12_RESOURCE_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )" )
+
+typedef struct D3D12_MIP_REGION
+{
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+} D3D12_MIP_REGION;
+
+typedef struct D3D12_RESOURCE_DESC
+{
+    D3D12_RESOURCE_DIMENSION Dimension;
+    UINT64 Alignment;
+    UINT64 Width;
+    UINT Height;
+    UINT16 DepthOrArraySize;
+    UINT16 MipLevels;
+    DXGI_FORMAT Format;
+    DXGI_SAMPLE_DESC SampleDesc;
+    D3D12_TEXTURE_LAYOUT Layout;
+    D3D12_RESOURCE_FLAGS Flags;
+} D3D12_RESOURCE_DESC;
+
+typedef struct D3D12_RESOURCE_DESC1
+{
+    D3D12_RESOURCE_DIMENSION Dimension;
+    UINT64 Alignment;
+    UINT64 Width;
+    UINT Height;
+    UINT16 DepthOrArraySize;
+    UINT16 MipLevels;
+    DXGI_FORMAT Format;
+    DXGI_SAMPLE_DESC SampleDesc;
+    D3D12_TEXTURE_LAYOUT Layout;
+    D3D12_RESOURCE_FLAGS Flags;
+    D3D12_MIP_REGION SamplerFeedbackMipRegion;
+} D3D12_RESOURCE_DESC1;
+
+
+
+typedef struct D3D12_DEPTH_STENCIL_VALUE
+{
+    FLOAT Depth;
+    UINT8 Stencil;
+} D3D12_DEPTH_STENCIL_VALUE;
+
+typedef struct D3D12_CLEAR_VALUE
+{
+    DXGI_FORMAT Format;
+    union
+    {
+        FLOAT Color[4];
+        D3D12_DEPTH_STENCIL_VALUE DepthStencil;
+    };
+} D3D12_CLEAR_VALUE;
+
+typedef struct D3D12_RANGE
+{
+    SIZE_T Begin;
+    SIZE_T End; // One past end, so (End - Begin) = Size
+} D3D12_RANGE;
+
+typedef struct D3D12_RANGE_UINT64
+{
+    UINT64 Begin;
+    UINT64 End; // One past end, so (End - Begin) = Size
+} D3D12_RANGE_UINT64;
+
+typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
+{
+    UINT Subresource;
+    D3D12_RANGE_UINT64 Range;
+} D3D12_SUBRESOURCE_RANGE_UINT64;
+
+typedef struct D3D12_SUBRESOURCE_INFO
+{
+    UINT64 Offset;
+    UINT RowPitch;
+    UINT DepthPitch;
+} D3D12_SUBRESOURCE_INFO;
+
+typedef struct D3D12_TILED_RESOURCE_COORDINATE
+{
+    UINT X;
+    UINT Y;
+    UINT Z;
+    UINT Subresource; 
+} D3D12_TILED_RESOURCE_COORDINATE;
+
+typedef struct D3D12_TILE_REGION_SIZE
+{
+    UINT NumTiles; 
+    BOOL UseBox; 
+    UINT Width; 
+    UINT16 Height;
+    UINT16 Depth;
+} D3D12_TILE_REGION_SIZE;
+
+typedef enum D3D12_TILE_RANGE_FLAGS
+{
+    D3D12_TILE_RANGE_FLAG_NONE = 0,
+    D3D12_TILE_RANGE_FLAG_NULL = 1,
+    D3D12_TILE_RANGE_FLAG_SKIP = 2,
+    D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
+
+} D3D12_TILE_RANGE_FLAGS;
+
+typedef struct D3D12_SUBRESOURCE_TILING
+{
+    UINT WidthInTiles;
+    UINT16 HeightInTiles;
+    UINT16 DepthInTiles;
+    UINT StartTileIndexInOverallResource;
+} D3D12_SUBRESOURCE_TILING;
+
+typedef struct D3D12_TILE_SHAPE
+{
+    UINT WidthInTexels; 
+    UINT HeightInTexels;
+    UINT DepthInTexels;
+} D3D12_TILE_SHAPE;
+
+typedef struct D3D12_PACKED_MIP_INFO
+{
+    UINT8 NumStandardMips;
+    UINT8 NumPackedMips;
+    UINT NumTilesForPackedMips;
+    UINT StartTileIndexInOverallResource;
+} D3D12_PACKED_MIP_INFO;
+
+typedef enum D3D12_TILE_MAPPING_FLAGS 
+{
+    D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
+    D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
+} D3D12_TILE_MAPPING_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )" )
+
+typedef enum D3D12_TILE_COPY_FLAGS 
+{
+    D3D12_TILE_COPY_FLAG_NONE = 0x0,
+    D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
+    D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
+    D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
+} D3D12_TILE_COPY_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )")
+
+// Resource Barrier
+typedef enum D3D12_RESOURCE_STATES
+{
+    D3D12_RESOURCE_STATE_COMMON = 0,
+
+    D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
+    D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
+    D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
+    D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
+    D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
+    D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
+    D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
+    D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
+    D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
+    D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
+    D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
+    D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
+    D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
+    D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
+    D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
+    D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
+
+    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
+    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
+    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
+    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
+    D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
+
+    D3D12_RESOURCE_STATE_GENERIC_READ =
+        /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
+        /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/               0x0002 |
+        /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/  0x0040 |
+        /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/      0x0080 |
+        /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/          0x0200 |
+        /*D3D12_RESOURCE_STATE_COPY_SOURCE*/                0x0800,
+        
+    D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
+        /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
+        /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/     0x80,
+
+    D3D12_RESOURCE_STATE_PRESENT                = 0,
+    D3D12_RESOURCE_STATE_PREDICATION            = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
+
+    D3D12_RESOURCE_STATE_VIDEO_DECODE_READ          = 0x00010000,
+    D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE         = 0x00020000,
+    D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ         = 0x00040000,
+    D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE        = 0x00080000,    
+    D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ          = 0x00200000,
+    D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE         = 0x00800000,
+
+} D3D12_RESOURCE_STATES;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )" )
+
+typedef enum D3D12_RESOURCE_BARRIER_TYPE
+{
+    D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
+    D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
+    D3D12_RESOURCE_BARRIER_TYPE_UAV,
+} D3D12_RESOURCE_BARRIER_TYPE;
+
+interface ID3D12Resource;
+
+typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
+{
+    ID3D12Resource* pResource;
+    UINT Subresource;
+    D3D12_RESOURCE_STATES StateBefore;
+    D3D12_RESOURCE_STATES StateAfter;
+} D3D12_RESOURCE_TRANSITION_BARRIER;
+
+typedef struct D3D12_RESOURCE_ALIASING_BARRIER
+{
+    ID3D12Resource* pResourceBefore;
+    ID3D12Resource* pResourceAfter;
+} D3D12_RESOURCE_ALIASING_BARRIER;
+
+typedef struct D3D12_RESOURCE_UAV_BARRIER
+{
+    ID3D12Resource* pResource;
+} D3D12_RESOURCE_UAV_BARRIER;
+
+typedef enum D3D12_RESOURCE_BARRIER_FLAGS
+{
+    D3D12_RESOURCE_BARRIER_FLAG_NONE       = 0x0,
+    D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
+    D3D12_RESOURCE_BARRIER_FLAG_END_ONLY   = 0x2,
+} D3D12_RESOURCE_BARRIER_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )" )
+
+typedef struct D3D12_RESOURCE_BARRIER
+{
+    D3D12_RESOURCE_BARRIER_TYPE    Type;
+    D3D12_RESOURCE_BARRIER_FLAGS    Flags;
+
+    union
+    {
+        D3D12_RESOURCE_TRANSITION_BARRIER Transition;
+        D3D12_RESOURCE_ALIASING_BARRIER   Aliasing;
+        D3D12_RESOURCE_UAV_BARRIER        UAV;
+    };
+} D3D12_RESOURCE_BARRIER;
+
+typedef struct D3D12_SUBRESOURCE_FOOTPRINT
+{
+    DXGI_FORMAT Format;
+    UINT        Width;
+    UINT        Height;
+    UINT        Depth;
+    UINT        RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
+} D3D12_SUBRESOURCE_FOOTPRINT;
+
+typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
+{
+    UINT64                         Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
+    D3D12_SUBRESOURCE_FOOTPRINT Footprint;
+} D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
+
+typedef enum D3D12_TEXTURE_COPY_TYPE
+{
+    D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX  = 0,
+    D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT   = 1,
+} D3D12_TEXTURE_COPY_TYPE;
+
+typedef struct D3D12_TEXTURE_COPY_LOCATION
+{
+    ID3D12Resource* pResource;
+    D3D12_TEXTURE_COPY_TYPE Type;
+    union
+    {
+        D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
+        UINT SubresourceIndex;
+    };
+} D3D12_TEXTURE_COPY_LOCATION;
+
+typedef enum D3D12_RESOLVE_MODE
+{
+    D3D12_RESOLVE_MODE_DECOMPRESS = 0,
+    D3D12_RESOLVE_MODE_MIN = 1,
+    D3D12_RESOLVE_MODE_MAX = 2,
+    D3D12_RESOLVE_MODE_AVERAGE = 3,
+    D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
+    D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
+} D3D12_RESOLVE_MODE;
+
+typedef struct D3D12_SAMPLE_POSITION
+{
+    INT8 X;
+    INT8 Y;
+} D3D12_SAMPLE_POSITION;
+
+typedef struct D3D12_VIEW_INSTANCE_LOCATION
+{
+    UINT ViewportArrayIndex;
+    UINT RenderTargetArrayIndex;
+} D3D12_VIEW_INSTANCE_LOCATION;
+
+typedef enum D3D12_VIEW_INSTANCING_FLAGS
+{
+    D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
+    D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
+} D3D12_VIEW_INSTANCING_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )")
+
+typedef struct D3D12_VIEW_INSTANCING_DESC
+{
+    UINT ViewInstanceCount;
+    [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
+    D3D12_VIEW_INSTANCING_FLAGS Flags;
+} D3D12_VIEW_INSTANCING_DESC;
+
+// D3D12 view descriptions
+typedef enum D3D12_SHADER_COMPONENT_MAPPING
+{
+    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
+    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
+    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
+    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
+    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
+    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
+} D3D12_SHADER_COMPONENT_MAPPING;
+
+cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
+cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
+cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
+cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
+cpp_quote( "                                                                (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
+cpp_quote( "                                                                (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
+cpp_quote( "                                                                (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
+cpp_quote( "                                                                D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
+cpp_quote( "#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
+cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
+typedef enum D3D12_BUFFER_SRV_FLAGS
+{
+    D3D12_BUFFER_SRV_FLAG_NONE = 0,
+    D3D12_BUFFER_SRV_FLAG_RAW  = 0x00000001,      // allow device multi-component reads with DWORD addressing
+} D3D12_BUFFER_SRV_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )" )
+
+typedef struct D3D12_BUFFER_SRV
+{
+    UINT64 FirstElement;
+    UINT NumElements;
+    UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
+    D3D12_BUFFER_SRV_FLAGS Flags;
+} D3D12_BUFFER_SRV;
+
+typedef struct D3D12_TEX1D_SRV
+{
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    FLOAT ResourceMinLODClamp;
+} D3D12_TEX1D_SRV;
+
+typedef struct D3D12_TEX1D_ARRAY_SRV
+{
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+    FLOAT ResourceMinLODClamp;
+} D3D12_TEX1D_ARRAY_SRV;
+
+typedef struct D3D12_TEX2D_SRV
+{
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    UINT PlaneSlice;
+    FLOAT ResourceMinLODClamp;
+} D3D12_TEX2D_SRV;
+
+typedef struct D3D12_TEX2D_ARRAY_SRV
+{
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+    UINT PlaneSlice;
+    FLOAT ResourceMinLODClamp;
+} D3D12_TEX2D_ARRAY_SRV;
+
+typedef struct D3D12_TEX3D_SRV
+{
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    FLOAT ResourceMinLODClamp;
+} D3D12_TEX3D_SRV;
+
+typedef struct D3D12_TEXCUBE_SRV
+{
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    FLOAT ResourceMinLODClamp;
+} D3D12_TEXCUBE_SRV;
+
+typedef struct D3D12_TEXCUBE_ARRAY_SRV
+{
+    UINT MostDetailedMip;
+    UINT MipLevels;
+    UINT First2DArrayFace;
+    UINT NumCubes;
+    FLOAT ResourceMinLODClamp;
+} D3D12_TEXCUBE_ARRAY_SRV;
+
+typedef struct D3D12_TEX2DMS_SRV
+{
+    // don't need to define anything specific for this view dimension
+    UINT UnusedField_NothingToDefine;
+} D3D12_TEX2DMS_SRV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_SRV
+{
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX2DMS_ARRAY_SRV;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
+{
+    D3D12_GPU_VIRTUAL_ADDRESS Location;
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
+
+typedef enum D3D12_SRV_DIMENSION {
+    D3D12_SRV_DIMENSION_UNKNOWN = 0,
+    D3D12_SRV_DIMENSION_BUFFER = 1,
+    D3D12_SRV_DIMENSION_TEXTURE1D = 2,
+    D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
+    D3D12_SRV_DIMENSION_TEXTURE2D = 4,
+    D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
+    D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
+    D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
+    D3D12_SRV_DIMENSION_TEXTURE3D = 8,
+    D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
+    D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
+    D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
+} D3D12_SRV_DIMENSION;
+
+typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
+{
+    DXGI_FORMAT Format;
+    D3D12_SRV_DIMENSION ViewDimension;
+    UINT Shader4ComponentMapping;
+
+    union
+    {
+        D3D12_BUFFER_SRV Buffer;
+        D3D12_TEX1D_SRV Texture1D;
+        D3D12_TEX1D_ARRAY_SRV Texture1DArray;
+        D3D12_TEX2D_SRV Texture2D;
+        D3D12_TEX2D_ARRAY_SRV Texture2DArray;
+        D3D12_TEX2DMS_SRV Texture2DMS;
+        D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
+        D3D12_TEX3D_SRV Texture3D;
+        D3D12_TEXCUBE_SRV TextureCube;
+        D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
+        D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
+    };
+} D3D12_SHADER_RESOURCE_VIEW_DESC;
+
+typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
+{
+    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+    UINT SizeInBytes; 
+} D3D12_CONSTANT_BUFFER_VIEW_DESC;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// Sampler
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+typedef enum D3D12_FILTER
+{
+    // Bits used in defining enumeration of valid filters:
+    // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
+    // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
+    // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
+    // bit  [6]   - aniso
+    // bits [8:7] - reduction type:
+    //                0 == standard filtering
+    //                1 == comparison
+    //                2 == min
+    //                3 == max
+    // bit  [31]  - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
+
+    D3D12_FILTER_MIN_MAG_MIP_POINT                              = 0x00000000,
+    D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR                       = 0x00000001,
+    D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT                 = 0x00000004,
+    D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR                       = 0x00000005,
+    D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT                       = 0x00000010,
+    D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR                = 0x00000011,
+    D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT                       = 0x00000014,
+    D3D12_FILTER_MIN_MAG_MIP_LINEAR                             = 0x00000015,
+    D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT                  = 0x00000054,
+    D3D12_FILTER_ANISOTROPIC                                    = 0x00000055,
+    D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT                   = 0x00000080,
+    D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR            = 0x00000081,
+    D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT      = 0x00000084,
+    D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR            = 0x00000085,
+    D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT            = 0x00000090,
+    D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR     = 0x00000091,
+    D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT            = 0x00000094,
+    D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR                  = 0x00000095,
+    D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT       = 0x000000d4,
+    D3D12_FILTER_COMPARISON_ANISOTROPIC                         = 0x000000d5,
+    D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT                      = 0x00000100,
+    D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR               = 0x00000101,
+    D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT         = 0x00000104,
+    D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR               = 0x00000105,
+    D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT               = 0x00000110,
+    D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR        = 0x00000111,
+    D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT               = 0x00000114,
+    D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR                     = 0x00000115,
+    D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT          = 0x00000154,
+    D3D12_FILTER_MINIMUM_ANISOTROPIC                            = 0x00000155,
+    D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT                      = 0x00000180,
+    D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR               = 0x00000181,
+    D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT         = 0x00000184,
+    D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR               = 0x00000185,
+    D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT               = 0x00000190,
+    D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR        = 0x00000191,
+    D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT               = 0x00000194,
+    D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR                     = 0x00000195,
+    D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT          = 0x000001d4,
+    D3D12_FILTER_MAXIMUM_ANISOTROPIC                            = 0x000001d5
+} D3D12_FILTER;
+
+typedef enum D3D12_FILTER_TYPE
+{
+    D3D12_FILTER_TYPE_POINT = 0,
+    D3D12_FILTER_TYPE_LINEAR = 1,
+} D3D12_FILTER_TYPE;
+
+typedef enum D3D12_FILTER_REDUCTION_TYPE
+{
+    D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
+    D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
+    D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
+    D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
+} D3D12_FILTER_REDUCTION_TYPE;
+
+const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
+const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
+
+const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
+const UINT D3D12_MIN_FILTER_SHIFT = 4;
+const UINT D3D12_MAG_FILTER_SHIFT = 2;
+const UINT D3D12_MIP_FILTER_SHIFT = 0;
+
+const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
+
+// encode enum entry for most filters except anisotropic filtering
+cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction )                                                     \\" )
+cpp_quote( "                                   ( ( D3D12_FILTER ) (                                                           \\" )
+cpp_quote( "                                   ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) |           \\" )
+cpp_quote( "                                   ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) |           \\" )
+cpp_quote( "                                   ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) |           \\" )
+cpp_quote( "                                   ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
+
+// encode enum entry for anisotropic filtering (with or without comparison filtering)
+cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction )                                                  \\" )
+cpp_quote( "                                         ( ( D3D12_FILTER ) (                                         \\" )
+cpp_quote( "                                         D3D12_ANISOTROPIC_FILTERING_BIT |                            \\" )
+cpp_quote( "                                         D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR,         \\" )
+cpp_quote( "                                                                    D3D12_FILTER_TYPE_LINEAR,         \\" )
+cpp_quote( "                                                                    D3D12_FILTER_TYPE_LINEAR,         \\" )
+cpp_quote( "                                                                    reduction ) ) )                     " )
+cpp_quote( "#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction )                                \\" )
+cpp_quote( "                                         ( ( D3D12_FILTER ) (                                         \\" )
+cpp_quote( "                                         D3D12_ANISOTROPIC_FILTERING_BIT |                            \\" )
+cpp_quote( "                                         D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR,         \\" )
+cpp_quote( "                                                                    D3D12_FILTER_TYPE_LINEAR,         \\" )
+cpp_quote( "                                                                    D3D12_FILTER_TYPE_POINT,          \\" )
+cpp_quote( "                                                                    reduction ) ) )                     " )
+
+cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter )                                                              \\" )
+cpp_quote( "                                 ( ( D3D12_FILTER_TYPE )                                                    \\" )
+cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
+
+cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter )                                                              \\" )
+cpp_quote( "                                 ( ( D3D12_FILTER_TYPE )                                                    \\" )
+cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
+
+cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter )                                                              \\" )
+cpp_quote( "                                 ( ( D3D12_FILTER_TYPE )                                                    \\" )
+cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
+
+cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter )                                                        \\" )
+cpp_quote( "                                 ( ( D3D12_FILTER_REDUCTION_TYPE )                                                      \\" )
+cpp_quote( "                                 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
+
+cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter )                                                    \\" )
+cpp_quote( "                                 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
+
+cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter )                                               \\" )
+cpp_quote( "                            ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) &&                  \\" )
+cpp_quote( "                            ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) &&   \\" )
+cpp_quote( "                            ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) )      " )
+
+typedef enum D3D12_TEXTURE_ADDRESS_MODE
+{
+    D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
+    D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
+    D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
+    D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
+    D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
+} D3D12_TEXTURE_ADDRESS_MODE;
+
+
+
+typedef struct D3D12_SAMPLER_DESC
+{
+    D3D12_FILTER Filter;
+    D3D12_TEXTURE_ADDRESS_MODE AddressU;
+    D3D12_TEXTURE_ADDRESS_MODE AddressV;
+    D3D12_TEXTURE_ADDRESS_MODE AddressW;
+    FLOAT MipLODBias;
+    UINT MaxAnisotropy;
+    D3D12_COMPARISON_FUNC ComparisonFunc;
+    FLOAT BorderColor[4]; // RGBA
+    FLOAT MinLOD;
+    FLOAT MaxLOD;
+} D3D12_SAMPLER_DESC;
+
+
+typedef enum D3D12_SAMPLER_FLAGS
+{
+    D3D12_SAMPLER_FLAG_NONE = 0x0,
+    D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x01,
+    D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x02,
+} D3D12_SAMPLER_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )")
+
+typedef struct D3D12_SAMPLER_DESC2
+{
+    D3D12_FILTER Filter;
+    D3D12_TEXTURE_ADDRESS_MODE AddressU;
+    D3D12_TEXTURE_ADDRESS_MODE AddressV;
+    D3D12_TEXTURE_ADDRESS_MODE AddressW;
+    FLOAT MipLODBias;
+    UINT MaxAnisotropy;
+    D3D12_COMPARISON_FUNC ComparisonFunc;
+    union
+    {
+        FLOAT FloatBorderColor[4]; // RGBA
+        UINT  UintBorderColor[4];
+    };
+    FLOAT MinLOD;
+    FLOAT MaxLOD;
+    D3D12_SAMPLER_FLAGS Flags;
+} D3D12_SAMPLER_DESC2;
+
+
+
+typedef enum D3D12_BUFFER_UAV_FLAGS
+{
+    D3D12_BUFFER_UAV_FLAG_NONE =   0,
+    D3D12_BUFFER_UAV_FLAG_RAW  =   0x00000001,
+} D3D12_BUFFER_UAV_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )" )
+
+typedef struct D3D12_BUFFER_UAV
+{
+    UINT64 FirstElement;
+    UINT NumElements;
+    UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
+    UINT64 CounterOffsetInBytes;
+    D3D12_BUFFER_UAV_FLAGS Flags;
+} D3D12_BUFFER_UAV;
+
+typedef struct D3D12_TEX1D_UAV
+{
+    UINT MipSlice;
+} D3D12_TEX1D_UAV;
+
+typedef struct D3D12_TEX1D_ARRAY_UAV
+{
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX1D_ARRAY_UAV;
+
+typedef struct D3D12_TEX2D_UAV
+{
+    UINT MipSlice;
+    UINT PlaneSlice;
+} D3D12_TEX2D_UAV;
+
+typedef struct D3D12_TEX2D_ARRAY_UAV
+{
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+    UINT PlaneSlice;
+} D3D12_TEX2D_ARRAY_UAV;
+
+typedef struct D3D12_TEX2DMS_UAV
+{
+    // don't need to define anything specific for this view dimension
+    UINT UnusedField_NothingToDefine;
+} D3D12_TEX2DMS_UAV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_UAV
+{
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX2DMS_ARRAY_UAV;
+
+typedef struct D3D12_TEX3D_UAV
+{
+    UINT MipSlice;
+    UINT FirstWSlice;
+    UINT WSize;
+} D3D12_TEX3D_UAV;
+
+typedef enum D3D12_UAV_DIMENSION
+{
+    D3D12_UAV_DIMENSION_UNKNOWN = 0,
+    D3D12_UAV_DIMENSION_BUFFER = 1,
+    D3D12_UAV_DIMENSION_TEXTURE1D = 2,
+    D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
+    D3D12_UAV_DIMENSION_TEXTURE2D = 4,
+    D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
+    D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
+    D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
+    D3D12_UAV_DIMENSION_TEXTURE3D = 8,
+} D3D12_UAV_DIMENSION;
+
+typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
+{
+    DXGI_FORMAT Format;
+    D3D12_UAV_DIMENSION ViewDimension;
+
+    union
+    {
+        D3D12_BUFFER_UAV Buffer;
+        D3D12_TEX1D_UAV Texture1D;
+        D3D12_TEX1D_ARRAY_UAV Texture1DArray;
+        D3D12_TEX2D_UAV Texture2D;
+        D3D12_TEX2D_ARRAY_UAV Texture2DArray;
+        D3D12_TEX2DMS_UAV Texture2DMS;
+        D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
+        D3D12_TEX3D_UAV Texture3D;
+    };
+} D3D12_UNORDERED_ACCESS_VIEW_DESC;
+
+typedef struct D3D12_BUFFER_RTV
+{
+    UINT64 FirstElement;
+    UINT NumElements;
+} D3D12_BUFFER_RTV;
+
+typedef struct D3D12_TEX1D_RTV
+{
+    UINT MipSlice;
+} D3D12_TEX1D_RTV;
+
+typedef struct D3D12_TEX1D_ARRAY_RTV
+{
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX1D_ARRAY_RTV;
+
+typedef struct D3D12_TEX2D_RTV
+{
+    UINT MipSlice;
+    UINT PlaneSlice;
+} D3D12_TEX2D_RTV;
+
+typedef struct D3D12_TEX2DMS_RTV
+{
+    UINT UnusedField_NothingToDefine;
+} D3D12_TEX2DMS_RTV;
+
+typedef struct D3D12_TEX2D_ARRAY_RTV
+{
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+    UINT PlaneSlice;
+} D3D12_TEX2D_ARRAY_RTV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_RTV
+{
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX2DMS_ARRAY_RTV;
+
+typedef struct D3D12_TEX3D_RTV
+{
+    UINT MipSlice;
+    UINT FirstWSlice;
+    UINT WSize;
+} D3D12_TEX3D_RTV;
+
+typedef enum D3D12_RTV_DIMENSION
+{
+    D3D12_RTV_DIMENSION_UNKNOWN = 0,
+    D3D12_RTV_DIMENSION_BUFFER = 1,
+    D3D12_RTV_DIMENSION_TEXTURE1D = 2,
+    D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
+    D3D12_RTV_DIMENSION_TEXTURE2D = 4,
+    D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
+    D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
+    D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
+    D3D12_RTV_DIMENSION_TEXTURE3D = 8,
+} D3D12_RTV_DIMENSION;
+
+typedef struct D3D12_RENDER_TARGET_VIEW_DESC
+{
+    DXGI_FORMAT Format;
+    D3D12_RTV_DIMENSION ViewDimension;
+
+    union
+    {
+        D3D12_BUFFER_RTV Buffer;
+        D3D12_TEX1D_RTV Texture1D;
+        D3D12_TEX1D_ARRAY_RTV Texture1DArray;
+        D3D12_TEX2D_RTV Texture2D;
+        D3D12_TEX2D_ARRAY_RTV Texture2DArray;
+        D3D12_TEX2DMS_RTV Texture2DMS;
+        D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
+        D3D12_TEX3D_RTV Texture3D;
+    };
+} D3D12_RENDER_TARGET_VIEW_DESC;
+
+typedef struct D3D12_TEX1D_DSV
+{
+    UINT MipSlice;
+} D3D12_TEX1D_DSV;
+
+typedef struct D3D12_TEX1D_ARRAY_DSV
+{
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX1D_ARRAY_DSV;
+
+typedef struct D3D12_TEX2D_DSV
+{
+    UINT MipSlice;
+} D3D12_TEX2D_DSV;
+
+typedef struct D3D12_TEX2D_ARRAY_DSV
+{
+    UINT MipSlice;
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX2D_ARRAY_DSV;
+
+typedef struct D3D12_TEX2DMS_DSV
+{
+    UINT UnusedField_NothingToDefine;
+} D3D12_TEX2DMS_DSV;
+
+typedef struct D3D12_TEX2DMS_ARRAY_DSV
+{
+    UINT FirstArraySlice;
+    UINT ArraySize;
+} D3D12_TEX2DMS_ARRAY_DSV;
+
+typedef enum D3D12_DSV_FLAGS
+{
+    D3D12_DSV_FLAG_NONE              = 0x0,
+    D3D12_DSV_FLAG_READ_ONLY_DEPTH   = 0x1,
+    D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
+} D3D12_DSV_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )" )
+
+typedef enum D3D12_DSV_DIMENSION
+{
+    D3D12_DSV_DIMENSION_UNKNOWN = 0,
+    D3D12_DSV_DIMENSION_TEXTURE1D = 1,
+    D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
+    D3D12_DSV_DIMENSION_TEXTURE2D = 3,
+    D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
+    D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
+    D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
+} D3D12_DSV_DIMENSION;
+
+typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
+{
+    DXGI_FORMAT Format;
+    D3D12_DSV_DIMENSION ViewDimension;
+    D3D12_DSV_FLAGS Flags;
+
+    union
+    {
+        D3D12_TEX1D_DSV Texture1D;
+        D3D12_TEX1D_ARRAY_DSV Texture1DArray;
+        D3D12_TEX2D_DSV Texture2D;
+        D3D12_TEX2D_ARRAY_DSV Texture2DArray;
+        D3D12_TEX2DMS_DSV Texture2DMS;
+        D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
+    };
+} D3D12_DEPTH_STENCIL_VIEW_DESC;
+
+typedef enum D3D12_CLEAR_FLAGS
+{
+    // Intentionally no flag for NONE
+    D3D12_CLEAR_FLAG_DEPTH   = 0x01,
+    D3D12_CLEAR_FLAG_STENCIL = 0x02,
+} D3D12_CLEAR_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )" )
+
+typedef enum D3D12_FENCE_FLAGS
+{
+    D3D12_FENCE_FLAG_NONE = 0x0,
+    D3D12_FENCE_FLAG_SHARED = 0x1,
+    D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
+    D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
+} D3D12_FENCE_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )" )
+
+typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
+{
+    D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
+    D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
+    D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
+    D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
+    D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
+} D3D12_DESCRIPTOR_HEAP_TYPE;
+
+typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
+{
+    D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
+    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
+} D3D12_DESCRIPTOR_HEAP_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )" )
+
+typedef struct D3D12_DESCRIPTOR_HEAP_DESC
+{
+    D3D12_DESCRIPTOR_HEAP_TYPE Type;
+    UINT NumDescriptors;
+    D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
+    UINT NodeMask;
+} D3D12_DESCRIPTOR_HEAP_DESC;
+
+typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
+{
+    D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
+    D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
+    D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
+    D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
+} D3D12_DESCRIPTOR_RANGE_TYPE;
+
+typedef struct D3D12_DESCRIPTOR_RANGE
+{
+    D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
+    UINT NumDescriptors;
+    UINT BaseShaderRegister;
+    UINT RegisterSpace;
+    UINT OffsetInDescriptorsFromTableStart;
+} D3D12_DESCRIPTOR_RANGE;
+
+
+typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
+{
+    UINT NumDescriptorRanges;
+    [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
+} D3D12_ROOT_DESCRIPTOR_TABLE;
+
+
+typedef struct D3D12_ROOT_CONSTANTS
+{
+    UINT ShaderRegister;
+    UINT RegisterSpace;
+    UINT Num32BitValues;
+} D3D12_ROOT_CONSTANTS;
+
+typedef struct D3D12_ROOT_DESCRIPTOR
+{
+    UINT ShaderRegister;
+    UINT RegisterSpace;
+} D3D12_ROOT_DESCRIPTOR;
+
+typedef enum D3D12_SHADER_VISIBILITY
+{
+    D3D12_SHADER_VISIBILITY_ALL = 0,
+    D3D12_SHADER_VISIBILITY_VERTEX = 1,
+    D3D12_SHADER_VISIBILITY_HULL = 2,
+    D3D12_SHADER_VISIBILITY_DOMAIN = 3,
+    D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
+    D3D12_SHADER_VISIBILITY_PIXEL = 5,
+    D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
+    D3D12_SHADER_VISIBILITY_MESH = 7,
+} D3D12_SHADER_VISIBILITY;
+
+typedef enum D3D12_ROOT_PARAMETER_TYPE
+{
+    D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
+    D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
+    D3D12_ROOT_PARAMETER_TYPE_CBV,
+    D3D12_ROOT_PARAMETER_TYPE_SRV,
+    D3D12_ROOT_PARAMETER_TYPE_UAV
+} D3D12_ROOT_PARAMETER_TYPE;
+
+typedef struct D3D12_ROOT_PARAMETER
+{
+    D3D12_ROOT_PARAMETER_TYPE ParameterType;
+    union
+    {
+        D3D12_ROOT_DESCRIPTOR_TABLE    DescriptorTable;
+        D3D12_ROOT_CONSTANTS           Constants;
+        D3D12_ROOT_DESCRIPTOR          Descriptor;
+    };
+    D3D12_SHADER_VISIBILITY ShaderVisibility;
+} D3D12_ROOT_PARAMETER;
+
+typedef enum D3D12_ROOT_SIGNATURE_FLAGS
+{
+    D3D12_ROOT_SIGNATURE_FLAG_NONE                                  = 0x0,
+    D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT    = 0x1,
+    D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS        = 0x2,
+    D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS          = 0x4,
+    D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS        = 0x8,
+    D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS      = 0x10,
+    D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS         = 0x20,
+    D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT                   = 0x40,
+    D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE                  = 0x80,
+    D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
+    D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS          = 0x200,
+    D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED     = 0x400,
+    D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED         = 0x800,
+} D3D12_ROOT_SIGNATURE_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )" )
+
+
+typedef enum D3D12_STATIC_BORDER_COLOR
+{
+    D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
+    D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
+    D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
+    D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT, // 0,0,0,1
+    D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT,  // 1,1,1,1
+
+} D3D12_STATIC_BORDER_COLOR;
+
+typedef struct D3D12_STATIC_SAMPLER_DESC
+{
+    D3D12_FILTER Filter;
+    D3D12_TEXTURE_ADDRESS_MODE AddressU;
+    D3D12_TEXTURE_ADDRESS_MODE AddressV;
+    D3D12_TEXTURE_ADDRESS_MODE AddressW;
+    FLOAT MipLODBias;
+    UINT MaxAnisotropy;
+    D3D12_COMPARISON_FUNC ComparisonFunc;
+    D3D12_STATIC_BORDER_COLOR BorderColor; 
+    FLOAT MinLOD;
+    FLOAT MaxLOD;
+    UINT ShaderRegister; 
+    UINT RegisterSpace; 
+    D3D12_SHADER_VISIBILITY ShaderVisibility;    
+} D3D12_STATIC_SAMPLER_DESC;
+
+typedef struct D3D12_STATIC_SAMPLER_DESC1
+{
+    D3D12_FILTER Filter;
+    D3D12_TEXTURE_ADDRESS_MODE AddressU;
+    D3D12_TEXTURE_ADDRESS_MODE AddressV;
+    D3D12_TEXTURE_ADDRESS_MODE AddressW;
+    FLOAT MipLODBias;
+    UINT MaxAnisotropy;
+    D3D12_COMPARISON_FUNC ComparisonFunc;
+    D3D12_STATIC_BORDER_COLOR BorderColor;
+    FLOAT MinLOD;
+    FLOAT MaxLOD;
+    UINT ShaderRegister;
+    UINT RegisterSpace;
+    D3D12_SHADER_VISIBILITY ShaderVisibility;
+    D3D12_SAMPLER_FLAGS Flags;
+} D3D12_STATIC_SAMPLER_DESC1;
+
+typedef struct D3D12_ROOT_SIGNATURE_DESC
+{
+    UINT NumParameters;
+    [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
+    UINT NumStaticSamplers;
+    [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
+    D3D12_ROOT_SIGNATURE_FLAGS Flags;
+} D3D12_ROOT_SIGNATURE_DESC;
+
+typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
+{
+    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
+} D3D12_DESCRIPTOR_RANGE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )")
+
+typedef struct D3D12_DESCRIPTOR_RANGE1
+{
+    D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
+    UINT NumDescriptors;
+    UINT BaseShaderRegister;
+    UINT RegisterSpace;
+    D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
+    UINT OffsetInDescriptorsFromTableStart;
+} D3D12_DESCRIPTOR_RANGE1;
+
+typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
+{
+    UINT NumDescriptorRanges;
+    [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
+} D3D12_ROOT_DESCRIPTOR_TABLE1;
+
+typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
+{
+    D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
+    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
+    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
+    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
+} D3D12_ROOT_DESCRIPTOR_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )")
+
+typedef struct D3D12_ROOT_DESCRIPTOR1
+{
+    UINT ShaderRegister;
+    UINT RegisterSpace;
+    D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
+} D3D12_ROOT_DESCRIPTOR1;
+
+typedef struct D3D12_ROOT_PARAMETER1
+{
+    D3D12_ROOT_PARAMETER_TYPE ParameterType;
+    union
+    {
+        D3D12_ROOT_DESCRIPTOR_TABLE1   DescriptorTable;
+        D3D12_ROOT_CONSTANTS           Constants;
+        D3D12_ROOT_DESCRIPTOR1         Descriptor;
+    };
+    D3D12_SHADER_VISIBILITY ShaderVisibility;
+} D3D12_ROOT_PARAMETER1;
+
+typedef struct D3D12_ROOT_SIGNATURE_DESC1
+{
+    UINT NumParameters;
+    [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
+    UINT NumStaticSamplers;
+    [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
+    D3D12_ROOT_SIGNATURE_FLAGS Flags;
+} D3D12_ROOT_SIGNATURE_DESC1;
+
+typedef struct D3D12_ROOT_SIGNATURE_DESC2
+{
+    UINT NumParameters;
+    [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
+    UINT NumStaticSamplers;
+    [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC1* pStaticSamplers;
+    D3D12_ROOT_SIGNATURE_FLAGS Flags;
+} D3D12_ROOT_SIGNATURE_DESC2;
+
+
+typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
+{
+    D3D_ROOT_SIGNATURE_VERSION Version;
+    union
+    {
+        D3D12_ROOT_SIGNATURE_DESC   Desc_1_0;
+        D3D12_ROOT_SIGNATURE_DESC1  Desc_1_1;
+        D3D12_ROOT_SIGNATURE_DESC2  Desc_1_2;
+    };
+} D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
+
+[ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
+interface ID3D12RootSignatureDeserializer
+    : IUnknown
+{
+    const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
+};
+
+[ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
+interface ID3D12VersionedRootSignatureDeserializer
+    : IUnknown
+{    
+    HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
+    const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
+};
+
+cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
+cpp_quote( "                            _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
+cpp_quote( "                            _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
+cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
+cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
+cpp_quote( "" )
+cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
+cpp_quote( "                            _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
+cpp_quote( "                            _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
+cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
+cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
+cpp_quote( "" )
+cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
+cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
+cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
+cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
+cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
+cpp_quote( "" )
+cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
+cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
+cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
+cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
+cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
+cpp_quote( "" )
+cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
+cpp_quote( "                            _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
+cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
+cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
+cpp_quote( "" )
+cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
+cpp_quote( "                            _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
+cpp_quote( "                            _Out_ ID3DBlob** ppBlob," )
+cpp_quote( "                            _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
+cpp_quote( "" )
+cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)("  )
+cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
+cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
+cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
+cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
+cpp_quote( "" )
+cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
+cpp_quote( "                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
+cpp_quote( "                                     _In_ SIZE_T SrcDataSizeInBytes," )
+cpp_quote( "                                     _In_ REFIID pRootSignatureDeserializerInterface," )
+cpp_quote( "                                     _Out_ void** ppRootSignatureDeserializer);" )
+cpp_quote( "" )
+cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(")
+cpp_quote("                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
+cpp_quote("                                     _In_ SIZE_T SrcDataSizeInBytes,")
+cpp_quote("                                     _In_ LPCWSTR RootSignatureSubobjectName,")
+cpp_quote("                                     _In_ REFIID pRootSignatureDeserializerInterface,")
+cpp_quote("                                     _Out_ void** ppRootSignatureDeserializer);")
+cpp_quote("")
+cpp_quote("HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(")
+cpp_quote("                                     _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
+cpp_quote("                                     _In_ SIZE_T SrcDataSizeInBytes,")
+cpp_quote("                                     _In_opt_ LPCWSTR RootSignatureSubobjectName,")
+cpp_quote("                                     _In_ REFIID pRootSignatureDeserializerInterface,")
+cpp_quote("                                     _Out_ void** ppRootSignatureDeserializer);")
+cpp_quote("")
+
+typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
+{
+    SIZE_T ptr;
+} D3D12_CPU_DESCRIPTOR_HANDLE; 
+
+
+typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
+{
+    UINT64 ptr;
+} D3D12_GPU_DESCRIPTOR_HANDLE;
+
+cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
+cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
+typedef struct D3D12_DISCARD_REGION
+{
+    UINT NumRects;
+    [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
+    UINT FirstSubresource;
+    UINT NumSubresources;
+} D3D12_DISCARD_REGION;
+
+typedef enum D3D12_QUERY_HEAP_TYPE
+{
+    D3D12_QUERY_HEAP_TYPE_OCCLUSION                            = 0,
+    D3D12_QUERY_HEAP_TYPE_TIMESTAMP                            = 1,
+    D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS                  = 2,
+    D3D12_QUERY_HEAP_TYPE_SO_STATISTICS                        = 3,
+    D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS              = 4, 
+    D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP                 = 5,
+    D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1                 = 7,
+
+} D3D12_QUERY_HEAP_TYPE;
+
+typedef struct D3D12_QUERY_HEAP_DESC
+{
+    D3D12_QUERY_HEAP_TYPE Type;
+    UINT Count;
+    UINT NodeMask;
+} D3D12_QUERY_HEAP_DESC; 
+
+typedef enum D3D12_QUERY_TYPE
+{
+    D3D12_QUERY_TYPE_OCCLUSION                      = 0,
+    D3D12_QUERY_TYPE_BINARY_OCCLUSION               = 1,
+    D3D12_QUERY_TYPE_TIMESTAMP                      = 2,
+    D3D12_QUERY_TYPE_PIPELINE_STATISTICS            = 3,
+    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0          = 4,
+    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1          = 5,
+    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2          = 6,
+    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3          = 7,
+    D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS        = 8,
+    D3D12_QUERY_TYPE_PIPELINE_STATISTICS1           = 10,
+
+} D3D12_QUERY_TYPE;
+
+typedef enum D3D12_PREDICATION_OP
+{
+    D3D12_PREDICATION_OP_EQUAL_ZERO     = 0,
+    D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
+} D3D12_PREDICATION_OP;
+
+typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
+{
+    UINT64 IAVertices;
+    UINT64 IAPrimitives;
+    UINT64 VSInvocations;
+    UINT64 GSInvocations;
+    UINT64 GSPrimitives;
+    UINT64 CInvocations;
+    UINT64 CPrimitives;
+    UINT64 PSInvocations;
+    UINT64 HSInvocations;
+    UINT64 DSInvocations;
+    UINT64 CSInvocations;
+} D3D12_QUERY_DATA_PIPELINE_STATISTICS;
+
+typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
+{
+    UINT64 IAVertices;
+    UINT64 IAPrimitives;
+    UINT64 VSInvocations;
+    UINT64 GSInvocations;
+    UINT64 GSPrimitives;
+    UINT64 CInvocations;
+    UINT64 CPrimitives;
+    UINT64 PSInvocations;
+    UINT64 HSInvocations;
+    UINT64 DSInvocations;
+    UINT64 CSInvocations;
+    UINT64 ASInvocations;
+    UINT64 MSInvocations;
+    UINT64 MSPrimitives;
+} D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
+
+typedef struct D3D12_QUERY_DATA_SO_STATISTICS
+{
+    UINT64 NumPrimitivesWritten;
+    UINT64 PrimitivesStorageNeeded;
+} D3D12_QUERY_DATA_SO_STATISTICS;
+
+typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
+{
+    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+    UINT64 SizeInBytes;
+    D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
+} D3D12_STREAM_OUTPUT_BUFFER_VIEW;
+
+typedef struct D3D12_DRAW_ARGUMENTS
+{
+    UINT VertexCountPerInstance;
+    UINT InstanceCount;
+    UINT StartVertexLocation;
+    UINT StartInstanceLocation;
+} D3D12_DRAW_ARGUMENTS;
+
+typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
+{
+    UINT IndexCountPerInstance;
+    UINT InstanceCount;
+    UINT StartIndexLocation;
+    INT  BaseVertexLocation;
+    UINT StartInstanceLocation;
+} D3D12_DRAW_INDEXED_ARGUMENTS;
+
+typedef struct D3D12_DISPATCH_ARGUMENTS
+{
+    UINT ThreadGroupCountX;
+    UINT ThreadGroupCountY;
+    UINT ThreadGroupCountZ;
+} D3D12_DISPATCH_ARGUMENTS;
+
+typedef struct D3D12_VERTEX_BUFFER_VIEW
+{
+    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+    UINT SizeInBytes; 
+    UINT StrideInBytes;
+} D3D12_VERTEX_BUFFER_VIEW;
+
+typedef struct D3D12_INDEX_BUFFER_VIEW
+{
+    D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
+    UINT SizeInBytes; 
+    DXGI_FORMAT Format;
+} D3D12_INDEX_BUFFER_VIEW;
+
+typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
+{
+    D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
+    D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
+    D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
+    D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
+    D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
+    D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
+    D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
+    D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
+    D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
+    D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
+    D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
+    D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT,
+} D3D12_INDIRECT_ARGUMENT_TYPE;
+
+typedef struct D3D12_INDIRECT_ARGUMENT_DESC
+{
+    D3D12_INDIRECT_ARGUMENT_TYPE Type;
+
+    union
+    {
+        struct
+        {
+            UINT Slot;
+        } VertexBuffer;
+
+        struct
+        {
+            UINT RootParameterIndex;
+            UINT DestOffsetIn32BitValues;
+            UINT Num32BitValuesToSet;
+        } Constant;
+
+        struct
+        {
+            UINT RootParameterIndex;
+        } ConstantBufferView;
+
+        struct
+        {
+            UINT RootParameterIndex;
+        } ShaderResourceView;
+
+        struct
+        {
+            UINT RootParameterIndex;
+        } UnorderedAccessView;
+
+        // Tier 1.1 support
+        struct
+        {
+            UINT RootParameterIndex;
+            UINT DestOffsetIn32BitValues;
+        } IncrementingConstant;
+    };
+} D3D12_INDIRECT_ARGUMENT_DESC;
+
+typedef struct D3D12_COMMAND_SIGNATURE_DESC
+{
+    // The number of bytes between each drawing structure
+    UINT ByteStride; 
+    UINT NumArgumentDescs;
+    [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
+    UINT NodeMask;
+} D3D12_COMMAND_SIGNATURE_DESC;
+
+interface ID3D12Device;
+
+[ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
+interface ID3D12Object
+    : IUnknown
+{
+    HRESULT GetPrivateData(
+        [annotation("_In_")] REFGUID guid,
+        [annotation("_Inout_")] UINT* pDataSize,
+        [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
+    HRESULT SetPrivateData(
+        [annotation("_In_")] REFGUID guid,
+        [annotation("_In_")] UINT DataSize,
+        [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
+    HRESULT SetPrivateDataInterface(
+        [annotation("_In_")] REFGUID guid,
+        [annotation("_In_opt_")] const IUnknown* pData );
+    HRESULT SetName(
+        [annotation("_In_z_")] LPCWSTR Name );
+}
+
+[ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
+interface ID3D12DeviceChild
+    : ID3D12Object
+{
+    HRESULT GetDevice( 
+        [in] REFIID riid,
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
+        );
+}
+
+[ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
+interface ID3D12Pageable
+    : ID3D12DeviceChild
+{
+}
+
+[ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
+interface ID3D12Heap
+    : ID3D12Pageable
+{
+    D3D12_HEAP_DESC GetDesc();
+}
+
+[ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
+interface ID3D12Resource
+    : ID3D12Pageable
+{
+    HRESULT Map(
+        UINT Subresource,
+        [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
+        [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
+
+    void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
+
+    D3D12_RESOURCE_DESC GetDesc();
+
+    D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
+
+    HRESULT WriteToSubresource(
+        UINT DstSubresource,
+        [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
+        [annotation("_In_")] const void* pSrcData,
+        UINT SrcRowPitch,
+        UINT SrcDepthPitch );
+        
+    HRESULT ReadFromSubresource(
+        [annotation("_Out_")] void* pDstData,
+        UINT DstRowPitch,
+        UINT DstDepthPitch,
+        UINT SrcSubresource,
+        [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
+
+    HRESULT GetHeapProperties(
+        [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
+        [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
+        );
+}
+
+[ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
+interface ID3D12CommandAllocator
+    : ID3D12Pageable
+{
+    HRESULT Reset();
+}
+
+[ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
+interface ID3D12Fence 
+    : ID3D12Pageable
+{
+    UINT64 GetCompletedValue();
+    HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
+    HRESULT Signal(UINT64 Value);
+};
+
+[ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
+interface ID3D12Fence1
+    : ID3D12Fence
+{
+    D3D12_FENCE_FLAGS GetCreationFlags();
+};
+
+
+[ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
+interface ID3D12PipelineState
+    : ID3D12Pageable
+{
+    HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
+}
+
+[ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
+interface ID3D12DescriptorHeap
+    : ID3D12Pageable
+{
+    D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
+
+    D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
+    D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
+}
+
+[ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
+interface ID3D12QueryHeap
+    : ID3D12Pageable
+{
+};
+
+[ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
+interface ID3D12CommandSignature
+    : ID3D12Pageable
+{
+};
+
+[ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
+interface ID3D12CommandList
+    : ID3D12DeviceChild
+{
+    D3D12_COMMAND_LIST_TYPE GetType();
+}
+
+// Superseded by ID3D12GraphicsCommandList1
+[ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
+interface ID3D12GraphicsCommandList
+    : ID3D12CommandList
+{
+    HRESULT Close();
+
+    HRESULT Reset(
+        [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
+        [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
+        );
+
+    void ClearState(
+        [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
+        );
+
+    void DrawInstanced(
+        [annotation("_In_")] UINT VertexCountPerInstance,
+        [annotation("_In_")] UINT InstanceCount,
+        [annotation("_In_")] UINT StartVertexLocation,
+        [annotation("_In_")] UINT StartInstanceLocation
+        );
+
+    void DrawIndexedInstanced(
+        [annotation("_In_")] UINT IndexCountPerInstance,
+        [annotation("_In_")] UINT InstanceCount,
+        [annotation("_In_")] UINT StartIndexLocation,
+        [annotation("_In_")] INT BaseVertexLocation,
+        [annotation("_In_")] UINT StartInstanceLocation
+        );
+
+    void Dispatch(
+        [annotation("_In_")] UINT ThreadGroupCountX,
+        [annotation("_In_")] UINT ThreadGroupCountY,
+        [annotation("_In_")] UINT ThreadGroupCountZ
+        );
+
+    void CopyBufferRegion(
+        [annotation("_In_")] ID3D12Resource* pDstBuffer,
+        UINT64 DstOffset,
+        [annotation("_In_")] ID3D12Resource* pSrcBuffer,
+        UINT64 SrcOffset,
+        UINT64 NumBytes
+        );
+
+    void CopyTextureRegion(
+        [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
+        UINT DstX, UINT DstY, UINT DstZ,
+        [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
+        [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
+        );
+
+    void CopyResource(
+        [annotation("_In_")] ID3D12Resource* pDstResource,
+        [annotation("_In_")] ID3D12Resource* pSrcResource
+        );
+
+    void CopyTiles(
+        [annotation("_In_")] ID3D12Resource* pTiledResource,
+        [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
+        [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
+        [annotation("_In_")] ID3D12Resource* pBuffer,
+        UINT64 BufferStartOffsetInBytes,
+        D3D12_TILE_COPY_FLAGS Flags
+        );
+
+    void ResolveSubresource(
+        [annotation("_In_")] ID3D12Resource* pDstResource,
+        [annotation("_In_")] UINT DstSubresource,
+        [annotation("_In_")] ID3D12Resource* pSrcResource,
+        [annotation("_In_")] UINT SrcSubresource,
+        [annotation("_In_")] DXGI_FORMAT Format
+        );
+
+    void IASetPrimitiveTopology(
+        [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
+        );
+
+    void RSSetViewports(
+        [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
+        [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
+        );
+
+    void RSSetScissorRects(
+        [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
+        [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
+        );
+
+    void OMSetBlendFactor(
+        [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
+        );
+
+    void OMSetStencilRef(
+        [annotation("_In_")] UINT StencilRef
+        );
+
+    void SetPipelineState(
+        [annotation("_In_")] ID3D12PipelineState* pPipelineState
+        );
+
+    void ResourceBarrier(
+        [annotation("_In_")] UINT NumBarriers,
+        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
+        );
+
+    void ExecuteBundle(
+        [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
+        );
+
+    void SetDescriptorHeaps(
+        [annotation("_In_")] UINT NumDescriptorHeaps,
+        [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
+        );
+
+    void SetComputeRootSignature(
+        [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
+        );
+
+    void SetGraphicsRootSignature(
+        [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
+        );
+
+    void SetComputeRootDescriptorTable(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
+        );
+
+    void SetGraphicsRootDescriptorTable(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
+        );
+
+    // Single constant
+    void SetComputeRoot32BitConstant(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] UINT SrcData,
+        [annotation("_In_")] UINT DestOffsetIn32BitValues
+        );
+
+    void SetGraphicsRoot32BitConstant(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] UINT SrcData,
+        [annotation("_In_")] UINT DestOffsetIn32BitValues
+        );
+
+    // Group of constants
+    void SetComputeRoot32BitConstants(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] UINT Num32BitValuesToSet,
+        [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
+        [annotation("_In_")] UINT DestOffsetIn32BitValues
+        );
+
+    void SetGraphicsRoot32BitConstants(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] UINT Num32BitValuesToSet,
+        [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
+        [annotation("_In_")] UINT DestOffsetIn32BitValues
+        );
+
+    // CBV
+    void SetComputeRootConstantBufferView(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
+        );
+
+    void SetGraphicsRootConstantBufferView(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
+        );
+
+    // SRV 
+    void SetComputeRootShaderResourceView(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
+        );
+
+    void SetGraphicsRootShaderResourceView(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
+        );
+
+    // UAV 
+    void SetComputeRootUnorderedAccessView(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
+        );
+
+    void SetGraphicsRootUnorderedAccessView(
+        [annotation("_In_")] UINT RootParameterIndex,
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
+        );
+
+    void IASetIndexBuffer(
+        [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
+        );
+
+    void IASetVertexBuffers(
+        [annotation("_In_")] UINT StartSlot,
+        [annotation("_In_")] UINT NumViews,
+        [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
+        );
+
+    void SOSetTargets(
+        [annotation("_In_")] UINT StartSlot,
+        [annotation("_In_")] UINT NumViews,
+        [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
+        );
+
+    void OMSetRenderTargets(
+        [annotation("_In_")] UINT NumRenderTargetDescriptors,
+        [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
+        [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
+        [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
+        );
+
+    void ClearDepthStencilView(
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
+        [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
+        [annotation("_In_")] FLOAT Depth,
+        [annotation("_In_")] UINT8 Stencil,
+        [annotation("_In_")] UINT NumRects,
+        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
+        );
+
+    void ClearRenderTargetView(
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
+        [annotation("_In_")] const FLOAT ColorRGBA[4],
+        [annotation("_In_")] UINT NumRects,
+        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
+        );
+
+    void ClearUnorderedAccessViewUint(
+        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+        [annotation("_In_")] ID3D12Resource* pResource,
+        [annotation("_In_")] const UINT Values[4],
+        [annotation("_In_")] UINT NumRects,
+        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
+        );
+
+    void ClearUnorderedAccessViewFloat(
+        [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
+        [annotation("_In_")] ID3D12Resource* pResource,
+        [annotation("_In_")] const FLOAT Values[4],
+        [annotation("_In_")] UINT NumRects,
+        [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
+        );
+
+    void DiscardResource(
+        [annotation("_In_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
+        );
+
+    void BeginQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void EndQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void ResolveQueryData(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT StartIndex,
+        [annotation("_In_")] UINT NumQueries,
+        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
+        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
+        );
+
+    void SetPredication(
+        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
+        [annotation("_In_")] UINT64 AlignedBufferOffset,
+        [annotation("_In_")] D3D12_PREDICATION_OP Operation
+        );
+
+    void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
+    void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
+    void EndEvent();
+
+    void ExecuteIndirect(
+        [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
+        [annotation("_In_")] UINT MaxCommandCount,
+        [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
+        [annotation("_In_")] UINT64 ArgumentBufferOffset,
+        [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
+        [annotation("_In_")] UINT64 CountBufferOffset
+        );
+}
+
+[ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
+interface ID3D12GraphicsCommandList1
+    : ID3D12GraphicsCommandList
+{
+    void AtomicCopyBufferUINT( 
+        [annotation("_In_")] ID3D12Resource* pDstBuffer,
+        UINT64 DstOffset,
+        [annotation("_In_")] ID3D12Resource* pSrcBuffer,
+        UINT64 SrcOffset,
+        UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
+        [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
+        [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
+        );
+
+    // UINT64 is only valid on UMA architectures
+    void AtomicCopyBufferUINT64(
+        [annotation("_In_")] ID3D12Resource* pDstBuffer,
+        UINT64 DstOffset,
+        [annotation("_In_")] ID3D12Resource* pSrcBuffer,
+        UINT64 SrcOffset,
+        UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
+        [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
+        [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
+        );
+
+    void OMSetDepthBounds(
+        [annotation("_In_")] FLOAT Min,
+        [annotation("_In_")] FLOAT Max
+        );
+
+    void SetSamplePositions(
+        [annotation("_In_")] UINT NumSamplesPerPixel,
+        [annotation("_In_")] UINT NumPixels,
+        [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
+        );
+
+    void ResolveSubresourceRegion(
+        [annotation("_In_")] ID3D12Resource* pDstResource,
+        [annotation("_In_")] UINT DstSubresource,
+        [annotation("_In_")] UINT DstX,
+        [annotation("_In_")] UINT DstY,
+        [annotation("_In_")] ID3D12Resource* pSrcResource,
+        [annotation("_In_")] UINT SrcSubresource,
+        [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
+        [annotation("_In_")] DXGI_FORMAT Format,
+        [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
+    );
+
+    void SetViewInstanceMask(
+        [annotation("_In_")] UINT Mask
+    );
+
+}
+
+typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
+{
+    D3D12_GPU_VIRTUAL_ADDRESS Dest;
+    UINT32 Value;
+} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
+
+typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
+{
+    D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT     = 0x0,
+    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN    = 0x1,
+    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT   = 0x2,
+
+} D3D12_WRITEBUFFERIMMEDIATE_MODE;
+
+[uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
+{
+    void WriteBufferImmediate(
+        UINT Count,
+        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
+    );
+}
+
+[ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
+interface ID3D12CommandQueue
+    : ID3D12Pageable
+{
+    void UpdateTileMappings(
+        [annotation("_In_")] ID3D12Resource* pResource,
+        UINT NumResourceRegions,
+        [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
+        [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
+        [annotation("_In_opt_")] ID3D12Heap* pHeap,
+        UINT NumRanges,
+        [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
+        [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
+        [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
+        D3D12_TILE_MAPPING_FLAGS Flags );
+
+    void CopyTileMappings(
+        [annotation("_In_")] ID3D12Resource* pDstResource,
+        [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
+        [annotation("_In_")] ID3D12Resource* pSrcResource,
+        [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
+        [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
+        D3D12_TILE_MAPPING_FLAGS Flags );
+
+    void ExecuteCommandLists(
+        [annotation("_In_")] UINT NumCommandLists,
+        [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
+        );
+
+    void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
+    void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
+    void EndEvent();
+
+    HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
+    HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
+
+    HRESULT GetTimestampFrequency(
+        [annotation("_Out_")] UINT64* pFrequency
+        );
+
+    HRESULT GetClockCalibration(
+        [annotation("_Out_")] UINT64* pGpuTimestamp,
+        [annotation("_Out_")] UINT64* pCpuTimestamp
+        );
+
+    D3D12_COMMAND_QUEUE_DESC GetDesc();
+}
+
+[ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
+interface ID3D12Device
+    : ID3D12Object
+{
+    UINT GetNodeCount();
+
+    HRESULT CreateCommandQueue(
+        [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12CommandQueue
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue 
+        );
+
+    HRESULT CreateCommandAllocator(
+        [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
+        [in] REFIID riid, // Expected: ID3D12CommandAllocator
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
+        );
+
+    HRESULT CreateGraphicsPipelineState(
+        [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12PipelineState
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
+        );
+
+    HRESULT CreateComputePipelineState(
+        [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12PipelineState
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
+        );
+
+    HRESULT CreateCommandList(
+        [annotation("_In_")] UINT nodeMask,
+        [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
+        [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
+        [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
+        [in] REFIID riid, // Expected: ID3D12CommandList
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
+        );
+
+    HRESULT CheckFeatureSupport(
+        D3D12_FEATURE Feature,
+        [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
+        UINT FeatureSupportDataSize
+        );
+
+    HRESULT CreateDescriptorHeap(
+        [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
+        [in] REFIID riid, // Expected ID3D12DescriptorHeap
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
+
+    UINT GetDescriptorHandleIncrementSize(
+        [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
+
+    HRESULT CreateRootSignature(
+        [annotation("_In_")] UINT nodeMask,
+        [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
+        [annotation("_In_")] SIZE_T blobLengthInBytes,
+        [in] REFIID riid, // Expected ID3D12RootSignature
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
+
+    void CreateConstantBufferView(
+        [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+    void CreateShaderResourceView(
+        [annotation("_In_opt_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+    void CreateUnorderedAccessView(
+        [annotation("_In_opt_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
+        [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+    void CreateRenderTargetView(
+        [annotation("_In_opt_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+    void CreateDepthStencilView(
+        [annotation("_In_opt_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+    void CreateSampler(
+        [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+    void CopyDescriptors(
+        [annotation("_In_")] UINT NumDestDescriptorRanges,
+        [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
+        [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
+        [annotation("_In_")] UINT NumSrcDescriptorRanges,
+        [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
+        [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
+        [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+    void CopyDescriptorsSimple(
+        [annotation("_In_")] UINT NumDescriptors,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
+        [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
+
+    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
+        [annotation("_In_")] UINT visibleMask,
+        [annotation("_In_")] UINT numResourceDescs,
+        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
+
+    D3D12_HEAP_PROPERTIES GetCustomHeapProperties( 
+        [annotation("_In_")] UINT nodeMask,
+        D3D12_HEAP_TYPE heapType 
+        );
+
+    HRESULT CreateCommittedResource(
+        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
+        D3D12_HEAP_FLAGS HeapFlags,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
+        D3D12_RESOURCE_STATES InitialResourceState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [in] REFIID riidResource, // Expected: ID3D12Resource*
+        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
+
+    HRESULT CreateHeap(
+        [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12Heap*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
+
+    HRESULT CreatePlacedResource(
+        [annotation("_In_")] ID3D12Heap* pHeap,
+        UINT64 HeapOffset,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
+        D3D12_RESOURCE_STATES InitialState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [in] REFIID riid, // Expected: ID3D12Resource*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
+
+    HRESULT CreateReservedResource(
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
+        D3D12_RESOURCE_STATES InitialState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [in] REFIID riid, // Expected: ID3D12Resource*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
+        
+    HRESULT CreateSharedHandle(
+        [annotation("_In_")] ID3D12DeviceChild* pObject,
+        [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
+        DWORD Access,
+        [annotation("_In_opt_")] LPCWSTR Name,
+        [annotation("_Out_")] HANDLE* pHandle );
+
+    HRESULT OpenSharedHandle(
+        [annotation("_In_")] HANDLE NTHandle,
+        [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
+
+    HRESULT OpenSharedHandleByName(
+        [annotation("_In_")] LPCWSTR Name,
+        DWORD Access,
+        [out, annotation("_Out_")] HANDLE* pNTHandle );
+
+    HRESULT MakeResident(
+        UINT NumObjects,
+        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
+
+    HRESULT Evict(
+        UINT NumObjects,
+        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
+
+    HRESULT CreateFence(
+        UINT64 InitialValue,
+        D3D12_FENCE_FLAGS Flags,
+        [in] REFIID riid, // Expected: ID3D12Fence
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);        
+
+    HRESULT GetDeviceRemovedReason();
+
+    void GetCopyableFootprints(
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
+        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
+        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
+        UINT64 BaseOffset,
+        [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
+        [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
+        [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
+        [annotation("_Out_opt_")] UINT64* pTotalBytes );
+
+    HRESULT CreateQueryHeap(
+        [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12QueryHeap
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
+        );
+
+    HRESULT SetStablePowerState(BOOL Enable);
+
+    HRESULT CreateCommandSignature(
+        [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
+        [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
+        [in] REFIID riid, // Expected: ID3D12CommandSignature
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
+        );
+
+    void GetResourceTiling( 
+        [annotation("_In_")] ID3D12Resource* pTiledResource,
+        [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource, 
+        [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc, 
+        [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips, 
+        [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings, 
+        [annotation("_In_")] UINT FirstSubresourceTilingToGet, 
+        [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
+        );
+
+    LUID GetAdapterLuid();
+}
+
+// D3D12 Revision 1
+[ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
+interface ID3D12PipelineLibrary
+    : ID3D12DeviceChild
+{
+    HRESULT StorePipeline(
+        [annotation("_In_opt_")] LPCWSTR pName,
+        [annotation("_In_")] ID3D12PipelineState *pPipeline
+        );
+
+    HRESULT LoadGraphicsPipeline(
+        [annotation("_In_")] LPCWSTR pName,
+        [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12PipelineState
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
+        );
+
+    HRESULT LoadComputePipeline(
+        [annotation("_In_")] LPCWSTR pName,
+        [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12PipelineState
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
+        );       
+
+    SIZE_T GetSerializedSize();
+
+    HRESULT Serialize(
+        [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
+        SIZE_T DataSizeInBytes
+        );
+}
+
+// Pipeline State v2
+[ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
+interface ID3D12PipelineLibrary1
+    : ID3D12PipelineLibrary
+{
+    HRESULT LoadPipeline(
+        [annotation("_In_")] LPCWSTR pName,
+        [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
+        [in] REFIID riid, // Expected: ID3D12PipelineState
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
+        );
+}
+
+typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
+{
+    D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
+    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
+
+    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
+} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )" )
+
+// Applications may use the whole value range of UINT for a priority.
+// These names are merely semantic suggestions.
+typedef enum D3D12_RESIDENCY_PRIORITY
+{
+    D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
+    D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
+    D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
+    D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
+    D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
+} D3D12_RESIDENCY_PRIORITY;
+
+[uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
+interface ID3D12Device1
+    : ID3D12Device
+{
+    HRESULT CreatePipelineLibrary(
+        [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
+        SIZE_T BlobLength,
+        [in] REFIID riid, // Expected: ID3D12PipelineLibrary
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
+        );
+
+    HRESULT SetEventOnMultipleFenceCompletion(
+        [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
+        [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
+        UINT NumFences,
+        D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
+        HANDLE hEvent
+        );
+
+    HRESULT SetResidencyPriority(
+        UINT NumObjects,
+        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
+        [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
+}
+
+[uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
+interface ID3D12Device2
+    : ID3D12Device1
+{
+    HRESULT CreatePipelineState(
+        [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
+        [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
+        );
+}
+
+typedef enum D3D12_RESIDENCY_FLAGS
+{
+    D3D12_RESIDENCY_FLAG_NONE = 0x0,
+    D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
+} D3D12_RESIDENCY_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )" )
+
+[uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
+interface ID3D12Device3
+    : ID3D12Device2
+{
+    HRESULT OpenExistingHeapFromAddress(
+        [annotation("_In_")] const void* pAddress,
+        [in] REFIID riid, // Expected: ID3D12Heap
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
+    );
+    HRESULT OpenExistingHeapFromFileMapping(
+        [annotation("_In_")] HANDLE hFileMapping,
+        [in] REFIID riid, // Expected: ID3D12Heap
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
+    );
+    HRESULT EnqueueMakeResident(
+        D3D12_RESIDENCY_FLAGS Flags,
+        UINT NumObjects,
+        [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
+        [annotation("_In_")] ID3D12Fence* pFenceToSignal,
+        UINT64 FenceValueToSignal
+    );
+}
+
+typedef enum D3D12_COMMAND_LIST_FLAGS
+{
+    D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
+} D3D12_COMMAND_LIST_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )")
+
+
+typedef enum D3D12_COMMAND_POOL_FLAGS
+{
+    D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
+
+} D3D12_COMMAND_POOL_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )")
+
+typedef enum D3D12_COMMAND_RECORDER_FLAGS
+{
+    D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
+
+} D3D12_COMMAND_RECORDER_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )")
+
+typedef enum D3D12_PROTECTED_SESSION_STATUS
+{
+    D3D12_PROTECTED_SESSION_STATUS_OK = 0,
+    D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
+} D3D12_PROTECTED_SESSION_STATUS;
+
+[uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
+interface ID3D12ProtectedSession
+    : ID3D12DeviceChild
+{
+    HRESULT GetStatusFence(
+        [in] REFIID riid,
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
+
+    D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
+}
+
+typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
+{
+    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
+    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
+
+} D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )")
+
+typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
+{
+    UINT                                            NodeIndex;  // input
+    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS  Support;    // output
+} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
+
+typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
+{
+    D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
+
+} D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )")
+
+typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
+{
+    UINT NodeMask;
+    D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
+} D3D12_PROTECTED_RESOURCE_SESSION_DESC;
+
+[uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
+interface ID3D12ProtectedResourceSession
+    : ID3D12ProtectedSession
+{
+    D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
+}
+
+[uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
+interface ID3D12Device4
+    : ID3D12Device3
+{
+    HRESULT CreateCommandList1(
+        [annotation("_In_")] UINT nodeMask,
+        [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
+        [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
+        [in] REFIID riid, // Expected: ID3D12CommandList
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
+    );
+
+    HRESULT CreateProtectedResourceSession(
+        [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
+        [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
+    );
+
+    HRESULT CreateCommittedResource1(
+        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
+        D3D12_HEAP_FLAGS HeapFlags,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
+        D3D12_RESOURCE_STATES InitialResourceState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
+        [in] REFIID riidResource, // Expected: ID3D12Resource1*
+        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
+    );
+
+    HRESULT CreateHeap1(
+        [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
+        [in] REFIID riid, // Expected: ID3D12Heap1*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
+    );
+
+    HRESULT CreateReservedResource1(
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
+        D3D12_RESOURCE_STATES InitialState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
+        [in] REFIID riid, // Expected: ID3D12Resource1*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
+    );
+
+    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
+        UINT visibleMask,
+        UINT numResourceDescs,
+        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
+        [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
+    );
+}
+
+typedef enum D3D12_LIFETIME_STATE
+{
+    D3D12_LIFETIME_STATE_IN_USE,
+    D3D12_LIFETIME_STATE_NOT_IN_USE,
+} D3D12_LIFETIME_STATE;
+
+interface ID3D12LifetimeTracker;
+
+[uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
+interface ID3D12LifetimeOwner : IUnknown
+{
+    void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
+}
+
+[uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
+interface ID3D12SwapChainAssistant
+    : IUnknown
+{
+    LUID GetLUID();
+    HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
+    HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
+                                              REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
+    HRESULT InsertImplicitSync();
+}
+
+[uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
+interface ID3D12LifetimeTracker
+    : ID3D12DeviceChild
+{
+    HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
+}
+
+typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
+{
+    D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
+    D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
+    D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
+    D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
+    D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
+} D3D12_META_COMMAND_PARAMETER_TYPE;
+
+typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
+{
+    D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
+    D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
+} D3D12_META_COMMAND_PARAMETER_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )")
+
+typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
+{
+    D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
+    D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
+    D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
+} D3D12_META_COMMAND_PARAMETER_STAGE;
+
+typedef struct D3D12_META_COMMAND_PARAMETER_DESC
+{
+    LPCWSTR Name;
+    D3D12_META_COMMAND_PARAMETER_TYPE Type;
+    D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
+    D3D12_RESOURCE_STATES RequiredResourceState;
+    UINT StructureOffset;
+} D3D12_META_COMMAND_PARAMETER_DESC;
+
+typedef enum D3D12_GRAPHICS_STATES
+{
+    D3D12_GRAPHICS_STATE_NONE = 0,
+    D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
+    D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
+    D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
+    D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
+    D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
+    D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
+    D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
+    D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
+    D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
+    D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
+    D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
+    D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
+    D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
+    D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
+    D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
+    D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
+    D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
+
+} D3D12_GRAPHICS_STATES;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )")
+
+typedef struct D3D12_META_COMMAND_DESC
+{
+    GUID Id;
+    LPCWSTR Name;
+    D3D12_GRAPHICS_STATES InitializationDirtyState;
+    D3D12_GRAPHICS_STATES ExecutionDirtyState;
+} D3D12_META_COMMAND_DESC;
+
+[uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
+interface ID3D12StateObject
+    : ID3D12Pageable
+{
+}
+
+[uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
+interface ID3D12StateObjectProperties
+    : IUnknown
+{
+    void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
+    UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
+    UINT64 GetPipelineStackSize();
+    void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
+}
+
+typedef struct D3D12_PROGRAM_IDENTIFIER
+{
+    UINT64 OpaqueData[4];
+} D3D12_PROGRAM_IDENTIFIER;
+
+[uuid(460caac7-1d24-446a-a184-ca67db494138), object, local, pointer_default(unique)]
+interface ID3D12StateObjectProperties1
+    : ID3D12StateObjectProperties
+{
+    D3D12_PROGRAM_IDENTIFIER GetProgramIdentifier(LPCWSTR pProgramName);
+}
+
+typedef struct D3D12_NODE_ID
+{
+    LPCWSTR Name;
+    UINT    ArrayIndex;
+} D3D12_NODE_ID;
+
+typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
+{
+    UINT64 MinSizeInBytes;
+    UINT64 MaxSizeInBytes;
+    UINT SizeGranularityInBytes;
+} D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
+
+[uuid(065acf71-f863-4b89-82f4-02e4d5886757), object, local, pointer_default(unique)]
+interface ID3D12WorkGraphProperties : IUnknown
+{
+    UINT GetNumWorkGraphs();
+    LPCWSTR GetProgramName(UINT WorkGraphIndex);
+    UINT GetWorkGraphIndex(LPCWSTR pProgramName);
+
+    UINT GetNumNodes(UINT WorkGraphIndex);
+    D3D12_NODE_ID GetNodeID(UINT WorkGraphIndex, UINT NodeIndex);
+    UINT GetNodeIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
+    UINT GetNodeLocalRootArgumentsTableIndex(UINT WorkGraphIndex, UINT NodeIndex);
+
+    UINT GetNumEntrypoints(UINT WorkGraphIndex);
+    D3D12_NODE_ID GetEntrypointID(UINT WorkGraphIndex, UINT EntrypointIndex);
+    UINT GetEntrypointIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
+    UINT GetEntrypointRecordSizeInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
+
+    void GetWorkGraphMemoryRequirements(
+        UINT WorkGraphIndex,
+        [annotation("_Out_")] D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS* pWorkGraphMemoryRequirements);
+
+    UINT GetEntrypointRecordAlignmentInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
+}
+
+typedef enum D3D12_STATE_SUBOBJECT_TYPE
+{
+    D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
+    D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
+    D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
+    D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
+    // 4 unused
+    D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
+    D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
+    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
+    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10,  // D3D12_RAYTRACING_PIPELINE_CONFIG
+    D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11,  // D3D12_HIT_GROUP_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12,  // D3D12_RAYTRACING_PIPELINE_CONFIG1
+    D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13, // D3D12_WORK_GRAPH_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14,  // D3D12_STREAM_OUTPUT_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15,  // D3D12_BLEND_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16,  // UINT
+    D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17,  // D3D12_RASTERIZER_DESC2
+    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18,  // D3D12_DEPTH_STENCIL_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19,  // D3D12_INPUT_LAYOUT_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20,  // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
+    D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21,  // D3D12_PRIMITIVE_TOPOLOGY_TYPE
+    D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22,  // D3D12_RT_FORMAT_ARRAY
+    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23,  // DXGI_FORMAT
+    D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24,  // DXGI_SAMPLE_DESC
+    // 25 is unused
+    D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26,  // D3D12_PIPELINE_STATE_FLAGS
+    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27, // D3D12_DEPTH_STENCIL_DESC1
+    D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28, // D3D12_VIEW_INSTANCING_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29, // D3D12_GENERIC_PROGRAM_DESC
+    D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30, // D3D12_DEPTH_STENCIL_DESC2
+
+    D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
+} D3D12_STATE_SUBOBJECT_TYPE;
+
+typedef struct D3D12_STATE_SUBOBJECT
+{
+    D3D12_STATE_SUBOBJECT_TYPE Type;
+    const void* pDesc;
+} D3D12_STATE_SUBOBJECT;
+
+typedef enum D3D12_STATE_OBJECT_FLAGS
+{
+    D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
+    D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
+    D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
+    D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
+} D3D12_STATE_OBJECT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )")
+
+typedef struct D3D12_STATE_OBJECT_CONFIG
+{
+    D3D12_STATE_OBJECT_FLAGS Flags;
+} D3D12_STATE_OBJECT_CONFIG;
+
+typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
+{
+    ID3D12RootSignature* pGlobalRootSignature;
+} D3D12_GLOBAL_ROOT_SIGNATURE;
+
+typedef struct D3D12_LOCAL_ROOT_SIGNATURE
+{
+    ID3D12RootSignature* pLocalRootSignature;
+} D3D12_LOCAL_ROOT_SIGNATURE;
+
+typedef struct D3D12_NODE_MASK
+{
+    UINT NodeMask;
+} D3D12_NODE_MASK;
+
+typedef struct D3D12_SAMPLE_MASK
+{
+    UINT SampleMask;
+} D3D12_SAMPLE_MASK;
+
+typedef struct D3D12_IB_STRIP_CUT_VALUE
+{
+    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
+} D3D12_IB_STRIP_CUT_VALUE;
+
+typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
+{
+    D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
+} D3D12_PRIMITIVE_TOPOLOGY_DESC;
+
+typedef struct D3D12_DEPTH_STENCIL_FORMAT
+{
+    DXGI_FORMAT DepthStencilFormat;
+} D3D12_DEPTH_STENCIL_FORMAT;
+
+typedef enum D3D12_EXPORT_FLAGS
+{
+    D3D12_EXPORT_FLAG_NONE = 0x0,
+} D3D12_EXPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )")
+
+typedef struct D3D12_EXPORT_DESC
+{
+    LPCWSTR Name;
+    [annotation("_In_opt_")] LPCWSTR ExportToRename;
+    D3D12_EXPORT_FLAGS Flags;
+} D3D12_EXPORT_DESC;
+
+typedef struct D3D12_DXIL_LIBRARY_DESC
+{
+    D3D12_SHADER_BYTECODE  DXILLibrary;
+    UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
+    [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
+} D3D12_DXIL_LIBRARY_DESC;
+
+typedef struct D3D12_EXISTING_COLLECTION_DESC
+{
+    ID3D12StateObject* pExistingCollection;
+    UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
+    [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
+} D3D12_EXISTING_COLLECTION_DESC;
+
+typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
+{
+    const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate; 
+    UINT NumExports;                      
+    [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
+} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
+
+typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
+{
+    LPCWSTR SubobjectToAssociate; 
+    UINT NumExports;     
+    [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
+} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
+
+typedef enum D3D12_HIT_GROUP_TYPE
+{
+    D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
+    D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
+} D3D12_HIT_GROUP_TYPE;
+
+typedef struct D3D12_HIT_GROUP_DESC
+{
+    LPCWSTR HitGroupExport;
+    D3D12_HIT_GROUP_TYPE Type;
+    [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
+    [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
+    [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
+} D3D12_HIT_GROUP_DESC;
+
+typedef struct D3D12_RAYTRACING_SHADER_CONFIG
+{
+    UINT    MaxPayloadSizeInBytes;
+    UINT    MaxAttributeSizeInBytes;
+} D3D12_RAYTRACING_SHADER_CONFIG;
+
+typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
+{
+    UINT    MaxTraceRecursionDepth;
+} D3D12_RAYTRACING_PIPELINE_CONFIG;
+
+typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
+{
+    D3D12_RAYTRACING_PIPELINE_FLAG_NONE                         = 0x0,
+    D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES               = 0x100,
+    D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES   = 0x200,
+} D3D12_RAYTRACING_PIPELINE_FLAGS; 
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )")
+
+typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
+{
+    UINT                            MaxTraceRecursionDepth;
+    D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
+} D3D12_RAYTRACING_PIPELINE_CONFIG1;
+
+typedef struct D3D12_NODE_OUTPUT_OVERRIDES
+{
+    UINT                     OutputIndex;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
+    [annotation("_In_opt_")] const BOOL* pAllowSparseNodes;
+    [annotation("_In_opt_")] const UINT* pMaxRecords;
+    [annotation("_In_opt_")] const UINT* pMaxRecordsSharedWithOutputIndex;
+} D3D12_NODE_OUTPUT_OVERRIDES;
+
+typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
+{
+    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
+    [annotation("_In_opt_")] const BOOL* pProgramEntry;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
+    [annotation("_In_opt_ ")] const D3D12_NODE_ID* pShareInputOf;
+    [annotation("_In_reads_opt_(3)")] const UINT* pDispatchGrid;
+    [annotation("_In_reads_opt_(3)")] const UINT* pMaxDispatchGrid;
+    UINT          NumOutputOverrides;
+    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
+} D3D12_BROADCASTING_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
+{
+    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex; 
+    [annotation("_In_opt_")] const BOOL* pProgramEntry;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
+    UINT          NumOutputOverrides; 
+    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
+} D3D12_COALESCING_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
+{
+    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex; 
+    [annotation("_In_opt_")] const BOOL* pProgramEntry;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
+    UINT          NumOutputOverrides; 
+    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
+} D3D12_THREAD_LAUNCH_OVERRIDES;
+
+typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
+{
+    [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
+    [annotation("_In_opt_")] const BOOL* pProgramEntry;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
+    [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
+    UINT          NumOutputOverrides;
+    [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
+} D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
+
+typedef enum D3D12_NODE_OVERRIDES_TYPE
+{
+    D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
+    D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
+    D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
+    D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
+    D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4,
+} D3D12_NODE_OVERRIDES_TYPE;
+
+typedef struct D3D12_SHADER_NODE
+{
+    LPCWSTR                   Shader; 
+    D3D12_NODE_OVERRIDES_TYPE OverridesType;
+    union
+    {
+        const D3D12_BROADCASTING_LAUNCH_OVERRIDES* pBroadcastingLaunchOverrides;
+        const D3D12_COALESCING_LAUNCH_OVERRIDES* pCoalescingLaunchOverrides;
+        const D3D12_THREAD_LAUNCH_OVERRIDES* pThreadLaunchOverrides;
+        const D3D12_COMMON_COMPUTE_NODE_OVERRIDES* pCommonComputeNodeOverrides;
+    };
+} D3D12_SHADER_NODE;
+
+typedef enum D3D12_NODE_TYPE
+{
+    D3D12_NODE_TYPE_SHADER = 0x0
+} D3D12_NODE_TYPE;
+
+typedef struct D3D12_NODE
+{
+    D3D12_NODE_TYPE NodeType;
+    union
+    {
+        D3D12_SHADER_NODE Shader; // D3D12_NODE_TYPE_SHADER
+    };
+} D3D12_NODE;
+
+typedef enum D3D12_WORK_GRAPH_FLAGS
+{
+    D3D12_WORK_GRAPH_FLAG_NONE = 0x0,
+    D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1,
+} D3D12_WORK_GRAPH_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )")
+
+typedef struct D3D12_WORK_GRAPH_DESC
+{
+    LPCWSTR                ProgramName;
+    D3D12_WORK_GRAPH_FLAGS Flags;
+    UINT                   NumEntrypoints;
+    [annotation("_In_reads_opt_(NumEntrypoints)")] const D3D12_NODE_ID* pEntrypoints;
+    UINT    NumExplicitlyDefinedNodes;
+    [annotation("_In_reads_opt_(NumExplicitlyDefinedNodes)")] const D3D12_NODE* pExplicitlyDefinedNodes; 
+} D3D12_WORK_GRAPH_DESC;
+
+typedef struct D3D12_GENERIC_PROGRAM_DESC
+{
+    LPCWSTR ProgramName;
+    UINT NumExports;
+    [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
+    UINT    NumSubobjects;
+    [annotation("_In_reads_opt_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* const* ppSubobjects;
+} D3D12_GENERIC_PROGRAM_DESC;
+
+typedef enum D3D12_STATE_OBJECT_TYPE
+{
+    D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
+    D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
+    D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
+} D3D12_STATE_OBJECT_TYPE;
+
+typedef struct D3D12_STATE_OBJECT_DESC
+{
+    D3D12_STATE_OBJECT_TYPE Type;
+    UINT NumSubobjects;
+    [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects; 
+} D3D12_STATE_OBJECT_DESC;
+
+typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
+{
+    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
+    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
+    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
+} D3D12_RAYTRACING_GEOMETRY_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )")
+
+typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
+{
+    D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
+    D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
+} D3D12_RAYTRACING_GEOMETRY_TYPE;
+
+typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
+{
+    D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
+    D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
+    D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
+    D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
+    D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8
+} D3D12_RAYTRACING_INSTANCE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )")
+
+typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
+{
+    D3D12_GPU_VIRTUAL_ADDRESS   StartAddress;
+    UINT64                      StrideInBytes;
+} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
+
+typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
+{
+    D3D12_GPU_VIRTUAL_ADDRESS   StartAddress;
+    UINT64                      SizeInBytes;
+} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
+
+typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
+{
+    D3D12_GPU_VIRTUAL_ADDRESS   StartAddress;
+    UINT64                      SizeInBytes;
+    UINT64                      StrideInBytes;
+} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
+{
+    D3D12_GPU_VIRTUAL_ADDRESS               Transform3x4;
+    DXGI_FORMAT                             IndexFormat;
+    DXGI_FORMAT                             VertexFormat;
+    UINT                                    IndexCount;
+    UINT                                    VertexCount;
+    D3D12_GPU_VIRTUAL_ADDRESS               IndexBuffer;
+    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE    VertexBuffer;
+} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
+
+typedef struct D3D12_RAYTRACING_AABB
+{
+    FLOAT   MinX;
+    FLOAT   MinY;
+    FLOAT   MinZ;
+    FLOAT   MaxX;
+    FLOAT   MaxY;
+    FLOAT   MaxZ;
+} D3D12_RAYTRACING_AABB;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
+{
+    UINT64                                  AABBCount;
+    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE    AABBs;
+} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
+
+typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
+{
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )")
+
+typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
+{
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
+
+typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
+{
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
+
+typedef enum D3D12_ELEMENTS_LAYOUT
+{
+    D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
+    D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
+} D3D12_ELEMENTS_LAYOUT;
+
+typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
+{
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION  = 0x1,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION  = 0x2,
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE  = 0x3,
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
+{
+    D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;    
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
+{
+    UINT64 CompactedSizeInBytes;
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
+{
+    UINT64 DecodedSizeInBytes;
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
+
+typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
+{
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
+    UINT NumDescs;
+} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
+cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
+cpp_quote("// depending on Type field, NumDescs above is followed by either:")
+cpp_quote("//       D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
+cpp_quote("//    or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
+cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
+cpp_quote("")
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
+{
+    UINT64 SerializedSizeInBytes;
+    UINT64 NumBottomLevelAccelerationStructurePointers;
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
+
+typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
+{
+    GUID DriverOpaqueGUID;
+    BYTE DriverOpaqueVersioningData[16];
+} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
+
+typedef enum D3D12_SERIALIZED_DATA_TYPE
+{
+    D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
+} D3D12_SERIALIZED_DATA_TYPE;
+
+typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
+{
+    D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
+    D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
+    D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
+    D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
+    D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
+} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
+
+typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
+{
+    D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
+    UINT64 SerializedSizeInBytesIncludingHeader;
+    UINT64 DeserializedSizeInBytes;
+    UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
+} D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
+{
+    UINT64 CurrentSizeInBytes;
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
+
+typedef struct D3D12_RAYTRACING_INSTANCE_DESC
+{
+    FLOAT                       Transform[3][4];
+    UINT                        InstanceID : 24;
+    UINT                        InstanceMask : 8;
+    UINT                        InstanceContributionToHitGroupIndex : 24;
+    UINT                        Flags : 8;
+    D3D12_GPU_VIRTUAL_ADDRESS   AccelerationStructure;
+} D3D12_RAYTRACING_INSTANCE_DESC;
+
+typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
+{
+    D3D12_RAYTRACING_GEOMETRY_TYPE    Type;
+    D3D12_RAYTRACING_GEOMETRY_FLAGS   Flags;
+    union
+    {
+        D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC  Triangles;
+        D3D12_RAYTRACING_GEOMETRY_AABBS_DESC      AABBs;
+    };
+} D3D12_RAYTRACING_GEOMETRY_DESC;
+
+typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
+{
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
+    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
+    UINT NumDescs;
+    D3D12_ELEMENTS_LAYOUT DescsLayout;
+    union
+    {
+        D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
+        const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
+        const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
+    };
+} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
+
+typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
+{
+    D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
+    D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
+    [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
+    D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
+} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
+
+typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
+{
+    UINT64 ResultDataMaxSizeInBytes;
+    UINT64 ScratchDataSizeInBytes;
+    UINT64 UpdateScratchDataSizeInBytes;
+} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
+
+typedef enum D3D12_RAY_FLAGS
+{
+    D3D12_RAY_FLAG_NONE                            = 0x00,
+    D3D12_RAY_FLAG_FORCE_OPAQUE                    = 0x01,
+    D3D12_RAY_FLAG_FORCE_NON_OPAQUE                = 0x02,
+    D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
+    D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER         = 0x08,
+    D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES      = 0x10,
+    D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES     = 0x20,
+    D3D12_RAY_FLAG_CULL_OPAQUE                     = 0x40,
+    D3D12_RAY_FLAG_CULL_NON_OPAQUE                 = 0x80,
+    D3D12_RAY_FLAG_SKIP_TRIANGLES                  = 0x100,
+    D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES      = 0x200,
+} D3D12_RAY_FLAGS; 
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )" )
+
+typedef enum D3D12_HIT_KIND
+{
+    D3D12_HIT_KIND_TRIANGLE_FRONT_FACE             = 0xfe,
+    D3D12_HIT_KIND_TRIANGLE_BACK_FACE              = 0xff,
+} D3D12_HIT_KIND; 
+
+[uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
+interface ID3D12Device5
+    : ID3D12Device4
+{
+    HRESULT CreateLifetimeTracker(
+        [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
+        [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
+    );
+
+    void RemoveDevice();
+
+    HRESULT EnumerateMetaCommands(
+        [annotation("_Inout_")] UINT* pNumMetaCommands,
+        [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
+    );
+
+    HRESULT EnumerateMetaCommandParameters(
+        [annotation("_In_")] REFGUID CommandId,
+        [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
+        [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
+        [annotation("_Inout_")] UINT* pParameterCount,
+        [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
+    );
+
+    HRESULT CreateMetaCommand(
+        [annotation("_In_")] REFGUID CommandId,
+        [annotation("_In_")] UINT NodeMask,
+        [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
+        [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
+        [in] REFIID riid,
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
+    );
+
+    HRESULT CreateStateObject(
+        [in] const D3D12_STATE_OBJECT_DESC* pDesc,
+        [in] REFIID riid, // ID3D12StateObject
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
+    );
+
+    void GetRaytracingAccelerationStructurePrebuildInfo(
+        [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
+        [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
+    );
+
+    D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
+        [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
+        [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
+}
+
+
+typedef enum D3D12_AUTO_BREADCRUMB_OP
+{
+    D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
+    D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
+    D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
+    D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
+    D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
+    D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
+    D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
+    D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
+    D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
+    D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
+    D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
+    D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
+    D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
+    D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
+    D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
+    D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
+    D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
+    D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
+    D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
+    D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
+    D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
+    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
+    D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
+    D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
+    D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
+    D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
+    D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
+    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
+    D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
+    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
+    D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
+    D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
+    D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
+    D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
+    D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
+    D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
+    D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
+    D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
+    D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
+    D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
+    D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
+    D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
+    D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
+    D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
+    D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44,
+    D3D12_AUTO_BREADCRUMB_OP_BARRIER = 45,
+    D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = 46,
+    D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = 47,
+    D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = 48,
+    D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = 52,
+} D3D12_AUTO_BREADCRUMB_OP;
+
+typedef struct D3D12_AUTO_BREADCRUMB_NODE
+{
+    const char *pCommandListDebugNameA;
+    const wchar_t *pCommandListDebugNameW;
+    const char *pCommandQueueDebugNameA;
+    const wchar_t *pCommandQueueDebugNameW;
+    ID3D12GraphicsCommandList *pCommandList;
+    ID3D12CommandQueue *pCommandQueue;
+    UINT32 BreadcrumbCount;
+    const UINT32 *pLastBreadcrumbValue;
+    const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
+    const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
+} D3D12_AUTO_BREADCRUMB_NODE;
+
+typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
+{
+    UINT BreadcrumbIndex;
+    const wchar_t *pContextString;
+} D3D12_DRED_BREADCRUMB_CONTEXT;
+
+// !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
+typedef struct D3D12_AUTO_BREADCRUMB_NODE1
+{
+    const char *pCommandListDebugNameA;
+    const wchar_t *pCommandListDebugNameW;
+    const char *pCommandQueueDebugNameA;
+    const wchar_t *pCommandQueueDebugNameW;
+    ID3D12GraphicsCommandList *pCommandList;
+    ID3D12CommandQueue *pCommandQueue;
+    UINT BreadcrumbCount;
+    const UINT *pLastBreadcrumbValue;
+    const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
+    const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
+    UINT BreadcrumbContextsCount;
+    D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
+} D3D12_AUTO_BREADCRUMB_NODE1;
+
+// D3D12_DRED_VERSION
+typedef enum D3D12_DRED_VERSION
+{
+    D3D12_DRED_VERSION_1_0 = 0x1,
+    D3D12_DRED_VERSION_1_1 = 0x2,
+    D3D12_DRED_VERSION_1_2 = 0x3,
+    D3D12_DRED_VERSION_1_3 = 0x4,
+} D3D12_DRED_VERSION;
+
+typedef enum D3D12_DRED_FLAGS
+{
+    D3D12_DRED_FLAG_NONE                    = 0,
+    D3D12_DRED_FLAG_FORCE_ENABLE            = 1,
+    D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
+} D3D12_DRED_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )")
+
+typedef enum D3D12_DRED_ENABLEMENT
+{
+    D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
+    D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
+    D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
+} D3D12_DRED_ENABLEMENT;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
+{
+    [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
+    [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
+} D3D12_DEVICE_REMOVED_EXTENDED_DATA;
+
+typedef enum D3D12_DRED_ALLOCATION_TYPE
+{
+    // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
+    D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE                    = 19,
+    D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR                = 20,
+    D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE                   = 21,
+    D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST                     = 22,
+    D3D12_DRED_ALLOCATION_TYPE_FENCE                            = 23,
+    D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP                  = 24,
+    D3D12_DRED_ALLOCATION_TYPE_HEAP                             = 25,
+    D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP                       = 27,
+    D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE                = 28,
+    D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY                 = 29,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER                    = 30,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR                  = 32,
+    D3D12_DRED_ALLOCATION_TYPE_RESOURCE                         = 34,
+    D3D12_DRED_ALLOCATION_TYPE_PASS                             = 35,
+    D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION                    = 36,
+    D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY              = 37,
+    D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION         = 38,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP               = 39,
+    D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL                     = 40,
+    D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER                 = 41,
+    D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT                     = 42,
+    D3D12_DRED_ALLOCATION_TYPE_METACOMMAND                      = 43,
+    D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP                  = 44,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR           = 45,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP         = 46,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND          = 47,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER                    = 48,
+    D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP               = 49,
+
+
+    D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
+} D3D12_DRED_ALLOCATION_TYPE;
+
+typedef struct D3D12_DRED_ALLOCATION_NODE
+{
+    const char *ObjectNameA;
+    const wchar_t *ObjectNameW;
+    D3D12_DRED_ALLOCATION_TYPE AllocationType;
+    const struct D3D12_DRED_ALLOCATION_NODE *pNext;
+} D3D12_DRED_ALLOCATION_NODE;
+
+typedef struct D3D12_DRED_ALLOCATION_NODE1
+{
+    const char *ObjectNameA;
+    const wchar_t *ObjectNameW;
+    D3D12_DRED_ALLOCATION_TYPE AllocationType;
+    const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
+    const IUnknown *pObject;
+} D3D12_DRED_ALLOCATION_NODE1;
+
+typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
+{
+    [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
+} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
+
+typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
+{
+    [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
+} D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
+
+typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
+{
+    D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
+    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
+    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
+} D3D12_DRED_PAGE_FAULT_OUTPUT;
+
+typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
+{
+    D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
+    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
+    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
+} D3D12_DRED_PAGE_FAULT_OUTPUT1;
+
+typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
+{
+    D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
+} D3D12_DRED_PAGE_FAULT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )")
+
+typedef enum D3D12_DRED_DEVICE_STATE
+{
+    D3D12_DRED_DEVICE_STATE_UNKNOWN             = 0, // Only known if DRED event occurred
+    D3D12_DRED_DEVICE_STATE_HUNG                = 3,
+    D3D12_DRED_DEVICE_STATE_FAULT               = 6,
+    D3D12_DRED_DEVICE_STATE_PAGEFAULT           = 7,
+} D3D12_DRED_DEVICE_STATE;
+
+typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
+{
+    D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
+    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
+    [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
+    D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
+    
+} D3D12_DRED_PAGE_FAULT_OUTPUT2;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
+{
+    HRESULT DeviceRemovedReason;
+    D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
+    D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
+} D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
+{
+    HRESULT DeviceRemovedReason;
+    D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
+    D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
+} D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
+
+typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
+{
+    HRESULT DeviceRemovedReason;
+    D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
+    D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
+    D3D12_DRED_DEVICE_STATE DeviceState;
+} D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
+
+typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
+{
+    D3D12_DRED_VERSION Version; // Version of the DRED data
+    union
+    {
+        D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
+        D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
+        D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
+        D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
+    };
+} D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
+
+[uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
+interface ID3D12DeviceRemovedExtendedDataSettings
+    : IUnknown
+{
+    void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
+    void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
+    void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
+};
+
+[uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
+interface ID3D12DeviceRemovedExtendedDataSettings1
+    : ID3D12DeviceRemovedExtendedDataSettings
+{
+    void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
+};
+
+[uuid(61552388-01ab-4008-a436-83db189566ea), object, local, pointer_default(unique)]
+interface ID3D12DeviceRemovedExtendedDataSettings2
+    : ID3D12DeviceRemovedExtendedDataSettings1
+{
+    void UseMarkersOnlyAutoBreadcrumbs(BOOL MarkersOnly);
+};
+
+
+[uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
+interface ID3D12DeviceRemovedExtendedData
+    : IUnknown
+{
+    HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
+    HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
+};
+
+[uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
+interface ID3D12DeviceRemovedExtendedData1
+    : ID3D12DeviceRemovedExtendedData
+{
+    HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
+    HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
+};
+
+[uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
+interface ID3D12DeviceRemovedExtendedData2
+    : ID3D12DeviceRemovedExtendedData1
+{
+    HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
+    D3D12_DRED_DEVICE_STATE GetDeviceState();
+};
+
+typedef enum D3D12_BACKGROUND_PROCESSING_MODE
+{
+    D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
+    D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
+    D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
+    D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
+} D3D12_BACKGROUND_PROCESSING_MODE;
+
+typedef enum D3D12_MEASUREMENTS_ACTION
+{
+    D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
+    D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
+    D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
+    D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
+} D3D12_MEASUREMENTS_ACTION;
+
+[uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
+interface ID3D12Device6 : ID3D12Device5
+{
+    HRESULT SetBackgroundProcessingMode(
+        D3D12_BACKGROUND_PROCESSING_MODE Mode,
+        D3D12_MEASUREMENTS_ACTION MeasurementsAction,
+        [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
+        [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
+};
+
+cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED,                           0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
+
+// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
+typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
+{
+    UINT                                        NodeIndex;              // input
+    UINT                                        Count;                  // output
+} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
+
+// D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
+typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
+{
+    UINT                                        NodeIndex;              // input
+    UINT                                        Count;                  // input
+    GUID*                                       pTypes;                 // output
+} D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
+
+typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
+{
+    UINT NodeMask;
+    D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
+    GUID ProtectionType;
+} D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
+
+[uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
+interface ID3D12ProtectedResourceSession1
+    : ID3D12ProtectedResourceSession
+{
+    D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
+};
+
+[uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
+interface ID3D12Device7 : ID3D12Device6
+{
+    HRESULT AddToStateObject(
+        [in] const D3D12_STATE_OBJECT_DESC* pAddition,
+        [in] ID3D12StateObject* pStateObjectToGrowFrom,
+        [in] REFIID riid, // ID3D12StateObject
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
+        );
+
+    HRESULT CreateProtectedResourceSession1(
+        [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
+        [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
+        );
+};
+
+[uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
+interface ID3D12Device8 : ID3D12Device7
+{
+    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
+        UINT visibleMask,
+        UINT numResourceDescs,
+        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
+        [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
+
+    HRESULT CreateCommittedResource2(
+        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
+        D3D12_HEAP_FLAGS HeapFlags,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
+        D3D12_RESOURCE_STATES InitialResourceState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
+        [in] REFIID riidResource, // Expected: ID3D12Resource1*
+        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
+
+    HRESULT CreatePlacedResource1(
+        [annotation("_In_")] ID3D12Heap* pHeap,
+        UINT64 HeapOffset,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
+        D3D12_RESOURCE_STATES InitialState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [in] REFIID riid, // Expected: ID3D12Resource*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
+
+    void CreateSamplerFeedbackUnorderedAccessView(
+        [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
+        [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+
+    void GetCopyableFootprints1(
+        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
+        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
+        [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
+        UINT64 BaseOffset,
+        [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
+        [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
+        [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
+        [annotation("_Out_opt_")] UINT64* pTotalBytes);
+};
+
+
+[uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
+interface ID3D12Resource1
+    : ID3D12Resource
+{
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+[uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
+interface ID3D12Resource2
+    : ID3D12Resource1
+{
+    D3D12_RESOURCE_DESC1 GetDesc1();
+}
+
+
+
+[uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
+interface ID3D12Heap1
+    : ID3D12Heap
+{
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+
+[uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
+{
+    void SetProtectedResourceSession(
+        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
+    );
+}
+
+// Beginning Access
+typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
+{
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS,
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
+} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
+
+typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
+{
+    D3D12_CLEAR_VALUE ClearValue;
+} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
+{
+    UINT AdditionalWidth;
+    UINT AdditionalHeight;
+} D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
+{
+    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
+
+    union
+    {
+        D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
+        D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
+    };
+} D3D12_RENDER_PASS_BEGINNING_ACCESS;
+
+// Ending Access
+typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
+{
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS,
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
+} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
+{
+    UINT SrcSubresource;
+    UINT DstSubresource;
+
+    UINT DstX;
+    UINT DstY;
+    D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
+
+} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
+{
+    ID3D12Resource* pSrcResource;
+    ID3D12Resource* pDstResource;
+
+    // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
+    UINT SubresourceCount;
+    [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
+
+    DXGI_FORMAT Format;
+    D3D12_RESOLVE_MODE ResolveMode;
+
+    BOOL PreserveResolveSource;
+
+} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
+{
+    UINT AdditionalWidth;
+    UINT AdditionalHeight;
+} D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
+
+typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
+{
+    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
+
+    union
+    {
+        D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
+        D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
+    };
+} D3D12_RENDER_PASS_ENDING_ACCESS;
+
+// Render Target Desc
+typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
+{
+    D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
+
+    D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
+    D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
+
+} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
+
+// Depth-Stencil Desc
+typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
+{
+    D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
+
+    D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
+    D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
+
+    D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
+    D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
+
+} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
+
+typedef enum D3D12_RENDER_PASS_FLAGS
+{
+    D3D12_RENDER_PASS_FLAG_NONE                   = 0x0,
+    D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES       = 0x1,
+    D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS        = 0x2,
+    D3D12_RENDER_PASS_FLAG_RESUMING_PASS          = 0x4,
+    D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH   = 0x8,
+    D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
+} D3D12_RENDER_PASS_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )")
+
+[uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
+interface ID3D12MetaCommand : ID3D12Pageable
+{
+    UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")]  UINT ParameterIndex);
+}
+
+typedef struct D3D12_DISPATCH_RAYS_DESC
+{
+    D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
+    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
+    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
+    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+} D3D12_DISPATCH_RAYS_DESC;
+
+typedef enum D3D12_SET_WORK_GRAPH_FLAGS
+{
+    D3D12_SET_WORK_GRAPH_FLAG_NONE       = 0x0,
+    D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1, 
+} D3D12_SET_WORK_GRAPH_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )" )
+
+typedef struct D3D12_SET_WORK_GRAPH_DESC
+{  
+    D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+    D3D12_SET_WORK_GRAPH_FLAGS Flags;
+    D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
+    D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
+} D3D12_SET_WORK_GRAPH_DESC;
+
+typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
+{  
+    D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+} D3D12_SET_RAYTRACING_PIPELINE_DESC;
+
+typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
+{  
+    D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
+} D3D12_SET_GENERIC_PIPELINE_DESC;
+
+typedef enum D3D12_PROGRAM_TYPE
+{
+    D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
+    D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
+    D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
+} D3D12_PROGRAM_TYPE;
+
+typedef struct D3D12_SET_PROGRAM_DESC
+{
+    D3D12_PROGRAM_TYPE Type;
+    union
+    {
+        D3D12_SET_GENERIC_PIPELINE_DESC     GenericPipeline;
+        D3D12_SET_RAYTRACING_PIPELINE_DESC  RaytracingPipeline;
+        D3D12_SET_WORK_GRAPH_DESC           WorkGraph; 
+    };
+} D3D12_SET_PROGRAM_DESC;
+
+typedef enum D3D12_DISPATCH_MODE
+{
+    D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0, // D3D12_NODE_CPU_INPUT
+    D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1, // D3D12_NODE_GPU_INPUT in GPU memory
+    D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2, // D3D12_MULTI_NODE_CPU_INPUT
+    D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3 // D3D12_MULTI_NODE_GPU_INPUT in GPU memory
+} D3D12_DISPATCH_MODE;
+
+typedef struct D3D12_NODE_CPU_INPUT
+{
+    UINT EntrypointIndex;
+    UINT NumRecords;
+    const void* pRecords;
+    UINT64 RecordStrideInBytes;
+} D3D12_NODE_CPU_INPUT;
+
+typedef struct D3D12_NODE_GPU_INPUT
+{
+    UINT EntrypointIndex;
+    UINT NumRecords;
+    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
+} D3D12_NODE_GPU_INPUT;
+
+typedef struct D3D12_MULTI_NODE_CPU_INPUT
+{
+    UINT NumNodeInputs;
+    const D3D12_NODE_CPU_INPUT* pNodeInputs;
+    UINT64 NodeInputStrideInBytes;
+} D3D12_MULTI_NODE_CPU_INPUT;
+
+typedef struct D3D12_MULTI_NODE_GPU_INPUT
+{
+    UINT NumNodeInputs;
+    D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs; // D3D12_GPU_NODE_INPUT array
+} D3D12_MULTI_NODE_GPU_INPUT;
+
+typedef struct D3D12_DISPATCH_GRAPH_DESC
+{
+    D3D12_DISPATCH_MODE Mode;
+    union
+    {
+        D3D12_NODE_CPU_INPUT       NodeCPUInput;
+        D3D12_GPU_VIRTUAL_ADDRESS  NodeGPUInput;
+        D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
+        D3D12_GPU_VIRTUAL_ADDRESS  MultiNodeGPUInput;
+    };    
+} D3D12_DISPATCH_GRAPH_DESC;
+
+[uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
+{
+    void BeginRenderPass(
+        [annotation("_In_")]                             UINT NumRenderTargets,
+        [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
+        [annotation("_In_opt_")]                         const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
+        D3D12_RENDER_PASS_FLAGS                          Flags
+        );
+
+    void EndRenderPass();
+
+    void InitializeMetaCommand(
+        [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
+        [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
+        [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
+    );
+
+    void ExecuteMetaCommand(
+        [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
+        [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
+        [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
+    );
+
+    void BuildRaytracingAccelerationStructure(
+        [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
+        [annotation("_In_")] UINT NumPostbuildInfoDescs,
+        [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
+        );
+
+    void EmitRaytracingAccelerationStructurePostbuildInfo(
+        [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
+        [annotation("_In_")] UINT NumSourceAccelerationStructures,
+        [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
+
+    void CopyRaytracingAccelerationStructure(
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
+        [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
+
+    void SetPipelineState1(
+        [annotation("_In_")] ID3D12StateObject* pStateObject);
+
+    void DispatchRays(
+        [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
+}
+
+typedef enum D3D12_SHADER_CACHE_MODE
+{
+    D3D12_SHADER_CACHE_MODE_MEMORY,
+    D3D12_SHADER_CACHE_MODE_DISK,
+} D3D12_SHADER_CACHE_MODE;
+
+typedef enum D3D12_SHADER_CACHE_FLAGS
+{
+    D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
+    D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
+    D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
+} D3D12_SHADER_CACHE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )")
+
+typedef struct D3D12_SHADER_CACHE_SESSION_DESC
+{
+    GUID Identifier;
+    D3D12_SHADER_CACHE_MODE Mode;
+    D3D12_SHADER_CACHE_FLAGS Flags;
+
+    UINT MaximumInMemoryCacheSizeBytes;
+    UINT MaximumInMemoryCacheEntries;
+
+    UINT MaximumValueFileSizeBytes;
+
+    UINT64 Version;
+} D3D12_SHADER_CACHE_SESSION_DESC;
+
+typedef enum D3D12_BARRIER_LAYOUT
+{
+    D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
+    D3D12_BARRIER_LAYOUT_COMMON = 0,
+    D3D12_BARRIER_LAYOUT_PRESENT = 0,
+    D3D12_BARRIER_LAYOUT_GENERIC_READ,
+    D3D12_BARRIER_LAYOUT_RENDER_TARGET,
+    D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS,
+    D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE,
+    D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ,
+    D3D12_BARRIER_LAYOUT_SHADER_RESOURCE,
+    D3D12_BARRIER_LAYOUT_COPY_SOURCE,
+    D3D12_BARRIER_LAYOUT_COPY_DEST,
+    D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE,
+    D3D12_BARRIER_LAYOUT_RESOLVE_DEST,
+    D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE,
+    D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ,
+    D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE,
+    D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ,
+    D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE,
+    D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ,
+    D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE,
+    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON,
+    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ,
+    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS,
+    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE,
+    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE,
+    D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST,
+    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON,
+    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ,
+    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS,
+    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE,
+    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE,
+    D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST,
+    D3D12_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON,
+
+} D3D12_BARRIER_LAYOUT;
+
+typedef enum D3D12_BARRIER_SYNC
+{
+    D3D12_BARRIER_SYNC_NONE                                                     = 0x0,
+    D3D12_BARRIER_SYNC_ALL                                                      = 0x1,
+    D3D12_BARRIER_SYNC_DRAW                                                     = 0x2,
+    D3D12_BARRIER_SYNC_INDEX_INPUT                                              = 0x4,
+    D3D12_BARRIER_SYNC_VERTEX_SHADING                                           = 0x8,
+    D3D12_BARRIER_SYNC_PIXEL_SHADING                                            = 0x10,
+    D3D12_BARRIER_SYNC_DEPTH_STENCIL                                            = 0x20,
+    D3D12_BARRIER_SYNC_RENDER_TARGET                                            = 0x40,
+    D3D12_BARRIER_SYNC_COMPUTE_SHADING                                          = 0x80,
+    D3D12_BARRIER_SYNC_RAYTRACING                                               = 0x100,
+    D3D12_BARRIER_SYNC_COPY                                                     = 0x200,
+    D3D12_BARRIER_SYNC_RESOLVE                                                  = 0x400,
+    D3D12_BARRIER_SYNC_EXECUTE_INDIRECT                                         = 0x800,
+    D3D12_BARRIER_SYNC_PREDICATION                                              = 0x800, // Aliased with SYNC_EXECUTE_INDIRECT
+    D3D12_BARRIER_SYNC_ALL_SHADING                                              = 0x1000,
+    D3D12_BARRIER_SYNC_NON_PIXEL_SHADING                                        = 0x2000,
+    D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO    = 0x4000,
+    D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW                              = 0x8000,
+    D3D12_BARRIER_SYNC_VIDEO_DECODE                                             = 0x100000,
+    D3D12_BARRIER_SYNC_VIDEO_PROCESS                                            = 0x200000,
+    D3D12_BARRIER_SYNC_VIDEO_ENCODE                                             = 0x400000,
+    D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE                  = 0x800000,
+    D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE                   = 0x1000000,
+    D3D12_BARRIER_SYNC_SPLIT                                                    = 0x80000000,
+} D3D12_BARRIER_SYNC;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )" )
+
+typedef enum D3D12_BARRIER_ACCESS
+{
+    D3D12_BARRIER_ACCESS_COMMON                                     = 0,
+    D3D12_BARRIER_ACCESS_VERTEX_BUFFER                              = 0x1,
+    D3D12_BARRIER_ACCESS_CONSTANT_BUFFER                            = 0x2,
+    D3D12_BARRIER_ACCESS_INDEX_BUFFER                               = 0x4,
+    D3D12_BARRIER_ACCESS_RENDER_TARGET                              = 0x8,
+    D3D12_BARRIER_ACCESS_UNORDERED_ACCESS                           = 0x10,
+    D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE                        = 0x20,
+    D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ                         = 0x40,
+    D3D12_BARRIER_ACCESS_SHADER_RESOURCE                            = 0x80,
+    D3D12_BARRIER_ACCESS_STREAM_OUTPUT                              = 0x100,
+    D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT                          = 0x200,
+    D3D12_BARRIER_ACCESS_PREDICATION                                = 0x200, // Aliased with ACCESS_INDIRECT_ARGUMENT
+    D3D12_BARRIER_ACCESS_COPY_DEST                                  = 0x400,
+    D3D12_BARRIER_ACCESS_COPY_SOURCE                                = 0x800,
+    D3D12_BARRIER_ACCESS_RESOLVE_DEST                               = 0x1000,
+    D3D12_BARRIER_ACCESS_RESOLVE_SOURCE                             = 0x2000,
+    D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ     = 0x4000,
+    D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE    = 0x8000,
+    D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE                        = 0x10000,
+    D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ                          = 0x20000,
+    D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE                         = 0x40000,
+    D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ                         = 0x80000,
+    D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE                        = 0x100000,
+    D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ                          = 0x200000,
+    D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE                         = 0x400000,
+    D3D12_BARRIER_ACCESS_NO_ACCESS                                  = 0x80000000,
+} D3D12_BARRIER_ACCESS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )" )
+
+typedef enum D3D12_BARRIER_TYPE
+{
+    D3D12_BARRIER_TYPE_GLOBAL,
+    D3D12_BARRIER_TYPE_TEXTURE,
+    D3D12_BARRIER_TYPE_BUFFER,
+} D3D12_BARRIER_TYPE;
+
+typedef enum D3D12_TEXTURE_BARRIER_FLAGS
+{
+    D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
+    D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1,
+} D3D12_TEXTURE_BARRIER_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )")
+
+typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
+{
+    UINT IndexOrFirstMipLevel;
+    UINT NumMipLevels;
+    UINT FirstArraySlice;
+    UINT NumArraySlices;
+    UINT FirstPlane;
+    UINT NumPlanes;
+} D3D12_BARRIER_SUBRESOURCE_RANGE;
+
+typedef struct D3D12_GLOBAL_BARRIER
+{
+    D3D12_BARRIER_SYNC SyncBefore;
+    D3D12_BARRIER_SYNC SyncAfter;
+    D3D12_BARRIER_ACCESS AccessBefore;
+    D3D12_BARRIER_ACCESS AccessAfter;
+} D3D12_GLOBAL_BARRIER;
+
+typedef struct D3D12_TEXTURE_BARRIER
+{
+    D3D12_BARRIER_SYNC SyncBefore;
+    D3D12_BARRIER_SYNC SyncAfter;
+    D3D12_BARRIER_ACCESS AccessBefore;
+    D3D12_BARRIER_ACCESS AccessAfter;
+    D3D12_BARRIER_LAYOUT LayoutBefore;
+    D3D12_BARRIER_LAYOUT LayoutAfter;
+    [annotation("_In_")] ID3D12Resource *pResource;
+    D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
+    D3D12_TEXTURE_BARRIER_FLAGS Flags;
+} D3D12_TEXTURE_BARRIER;
+
+typedef struct D3D12_BUFFER_BARRIER
+{
+    D3D12_BARRIER_SYNC SyncBefore;
+    D3D12_BARRIER_SYNC SyncAfter;
+    D3D12_BARRIER_ACCESS AccessBefore;
+    D3D12_BARRIER_ACCESS AccessAfter;
+    [annotation("_In_")] ID3D12Resource *pResource;
+    UINT64 Offset;
+    UINT64 Size;
+} D3D12_BUFFER_BARRIER;
+
+typedef struct D3D12_BARRIER_GROUP
+{
+    D3D12_BARRIER_TYPE Type;
+    UINT32 NumBarriers;
+    union
+    {
+        [annotation("_In_reads_(NumBarriers)")] const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
+        [annotation("_In_reads_(NumBarriers)")] const D3D12_TEXTURE_BARRIER *pTextureBarriers;
+        [annotation("_In_reads_(NumBarriers)")] const D3D12_BUFFER_BARRIER *pBufferBarriers;
+    };
+} D3D12_BARRIER_GROUP;
+
+[uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
+interface ID3D12ShaderCacheSession
+    : ID3D12DeviceChild
+{
+    HRESULT FindValue(
+        [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
+        UINT KeySize,
+        [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
+        [annotation("_Inout_")] UINT* pValueSize);
+    HRESULT StoreValue(
+        [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
+        UINT KeySize,
+        [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
+        UINT ValueSize);
+
+    void SetDeleteOnDestroy();
+    D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
+};
+
+typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
+{
+    D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
+    D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
+    D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
+    D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
+} D3D12_SHADER_CACHE_KIND_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )")
+
+typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
+{
+    D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
+    D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
+    D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
+} D3D12_SHADER_CACHE_CONTROL_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )")
+
+[uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
+interface ID3D12Device9
+    : ID3D12Device8
+{
+    HRESULT CreateShaderCacheSession(
+        [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
+        REFIID riid,
+        [annotation("_COM_Outptr_opt_")] void** ppvSession);
+
+    HRESULT ShaderCacheControl(
+        D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
+        D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
+
+    HRESULT CreateCommandQueue1(
+        [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
+        REFIID CreatorID,
+        [in] REFIID riid, // Expected: ID3D12CommandQueue
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
+    );
+};
+
+[uuid(517f8718-aa66-49f9-b02b-a7ab89c06031), object, local, pointer_default(unique)]
+interface ID3D12Device10
+    : ID3D12Device9
+{
+    HRESULT CreateCommittedResource3(
+        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
+        D3D12_HEAP_FLAGS HeapFlags,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
+        D3D12_BARRIER_LAYOUT InitialLayout,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
+        UINT32 NumCastableFormats,
+        [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
+        [in] REFIID riidResource, // Expected: ID3D12Resource1*
+        [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
+
+    HRESULT CreatePlacedResource2(
+        [annotation("_In_")] ID3D12Heap* pHeap,
+        UINT64 HeapOffset,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
+        D3D12_BARRIER_LAYOUT InitialLayout,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        UINT32 NumCastableFormats,
+        [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
+        [in] REFIID riid, // Expected: ID3D12Resource*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
+
+    HRESULT CreateReservedResource2(
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
+        D3D12_BARRIER_LAYOUT InitialLayout,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
+        UINT32 NumCastableFormats,
+        [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
+        [in] REFIID riid, // Expected: ID3D12Resource1*
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
+    );
+};
+
+[uuid(5405c344-d457-444e-b4dd-2366e45aee39), object, local, pointer_default(unique)]
+interface ID3D12Device11
+    : ID3D12Device10
+{
+    void CreateSampler2(
+        [annotation("_In_")] const D3D12_SAMPLER_DESC2* pDesc,
+        [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
+};
+
+[uuid(5af5c532-4c91-4cd0-b541-15a405395fc5), object, local, pointer_default(unique)]
+interface ID3D12Device12
+    : ID3D12Device11
+{
+    D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo3(
+        UINT visibleMask,
+        UINT numResourceDescs,
+        [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
+        [annotation("_In_opt_count_(numResourceDescs)")] const UINT32* pNumCastableFormats,
+        [annotation("_In_opt_count_(numResourceDescs)")] const DXGI_FORMAT *const *ppCastableFormats,
+        [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
+};
+
+[uuid(14eecffc-4df8-40f7-a118-5c816f45695e), object, local, pointer_default(unique)]
+interface ID3D12Device13
+    : ID3D12Device12
+{
+    HRESULT OpenExistingHeapFromAddress1(
+        [annotation("_In_")] const void* pAddress,
+        SIZE_T size,
+        [in] REFIID riid, // Expected: ID3D12Heap
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
+    );
+};
+
+[uuid(5f6e592d-d895-44c2-8e4a-88ad4926d323), object, local, pointer_default(unique)]
+interface ID3D12Device14 : ID3D12Device13
+{
+    HRESULT CreateRootSignatureFromSubobjectInLibrary(
+        [annotation("_In_")] UINT nodeMask,
+        [annotation("_In_reads_(blobLengthInBytes)")] const void* pLibraryBlob,
+        [annotation("_In_")] SIZE_T blobLengthInBytes,
+        [annotation("_In_opt_")] LPCWSTR subobjectName,
+        [in] REFIID riid, // Expected ID3D12RootSignature
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
+};
+
+
+[uuid(bc66d368-7373-4943-8757-fc87dc79e476), object, local, pointer_default(unique)]
+interface ID3D12VirtualizationGuestDevice
+    : IUnknown
+{
+    HRESULT ShareWithHost(
+        [annotation("_In_")] ID3D12DeviceChild* pObject,
+        [annotation("_Out_")] HANDLE* pHandle
+    );
+
+    HRESULT CreateFenceFd(
+        [annotation("_In_")] ID3D12Fence *pFence,
+        UINT64 FenceValue,
+        [annotation("_Out_")] int *pFenceFd
+    );
+};
+
+
+[uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
+interface ID3D12Tools
+    : IUnknown
+{
+    void EnableShaderInstrumentation(BOOL bEnable);
+    BOOL ShaderInstrumentationEnabled();
+}
+
+[uuid(e4fbc019-dd3c-43e1-8f32-7f649575f0a0), object, local, pointer_default(unique)]
+interface ID3D12Tools1
+    : ID3D12Tools
+{
+    HRESULT ReserveGPUVARangesAtCreate(
+        [annotation("_In_reads_(uiNumRanges)")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pRanges, 
+        [annotation("_In_")] UINT uiNumRanges);
+    void ClearReservedGPUVARangesList();
+}
+
+
+[uuid(8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d), object, local, pointer_default(unique)]
+interface ID3D12PageableTools
+    : IUnknown
+{
+    HRESULT GetAllocation(
+        [annotation("_Inout_")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pAllocation);
+}
+
+[uuid(2ea68e9c-19c3-4e47-a109-6cdadff0aca9), object, local, pointer_default(unique)]
+interface ID3D12DeviceTools
+    : IUnknown
+{
+    void SetNextAllocationAddress(
+        [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
+}
+
+
+typedef struct D3D12_SUBRESOURCE_DATA
+{
+    const void* pData;
+    LONG_PTR RowPitch;
+    LONG_PTR SlicePitch;
+} D3D12_SUBRESOURCE_DATA;
+
+typedef struct D3D12_MEMCPY_DEST
+{
+    void* pData;
+    SIZE_T RowPitch;
+    SIZE_T SlicePitch;
+} D3D12_MEMCPY_DEST;
+
+
+
+cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
+cpp_quote( "#include \"d3d12sdklayers.h\" ")
+cpp_quote( "#endif ")
+
+
+cpp_quote("")
+cpp_quote("///////////////////////////////////////////////////////////////////////////")
+cpp_quote("// D3D12CreateDevice")
+cpp_quote("// ------------------")
+cpp_quote("//")
+cpp_quote("// pAdapter")
+cpp_quote("//      If NULL, D3D12CreateDevice will choose the primary adapter.")
+cpp_quote("//      If non-NULL, D3D12CreateDevice will use the provided adapter.")
+cpp_quote("// MinimumFeatureLevel")
+cpp_quote("//      The minimum feature level required for successful device creation.")
+cpp_quote("// riid")
+cpp_quote("//      The interface IID of the device to be returned. Expected: ID3D12Device.")
+cpp_quote("// ppDevice")
+cpp_quote("//      Pointer to returned interface. May be NULL.")
+cpp_quote("//")
+cpp_quote("// Return Values")
+cpp_quote("//  Any of those documented for ")
+cpp_quote("//          CreateDXGIFactory1")
+cpp_quote("//          IDXGIFactory::EnumAdapters")
+cpp_quote("//          D3D12CreateDevice")
+cpp_quote("//")
+cpp_quote("///////////////////////////////////////////////////////////////////////////")
+cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
+cpp_quote("    D3D_FEATURE_LEVEL, ")
+cpp_quote("    _In_ REFIID, _COM_Outptr_opt_ void** );")
+cpp_quote("")
+cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
+cpp_quote("    _In_opt_ IUnknown* pAdapter,")
+cpp_quote("    D3D_FEATURE_LEVEL MinimumFeatureLevel,")
+cpp_quote("    _In_ REFIID riid, // Expected: ID3D12Device")
+cpp_quote("    _COM_Outptr_opt_ void** ppDevice );")
+cpp_quote("")
+
+cpp_quote("")
+cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
+cpp_quote("")
+cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
+cpp_quote("")
+
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("// D3D12EnableExperimentalFeatures")
+cpp_quote("//")
+cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
+cpp_quote("// ")
+cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
+cpp_quote("// a configuration struct that can be passed alongside the GUID.")
+cpp_quote("// ")
+cpp_quote("// Some features might use an interface IID as the GUID.  For these, once the feature is enabled via")
+cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
+cpp_quote("// for manipulating the feature.  This allows for control that might not cleanly be expressed by just ")
+cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
+cpp_quote("//")
+cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
+cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
+cpp_quote("// singleton device for a process.  Removing the devices when configuration changes prevents")
+cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
+cpp_quote("//")
+cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
+cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
+cpp_quote("// in are known to be incompatible with each other, or other errors.")
+cpp_quote("// Returns S_OK otherwise.")
+cpp_quote("//")
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
+cpp_quote("    UINT                                    NumFeatures,")
+cpp_quote("    _In_count_(NumFeatures) const IID*     pIIDs,")
+cpp_quote("    _In_opt_count_(NumFeatures) void*      pConfigurationStructs,")
+cpp_quote("    _In_opt_count_(NumFeatures) UINT*      pConfigurationStructSizes);")
+cpp_quote("")
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
+cpp_quote("//")
+cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
+cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
+cpp_quote("//")
+cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
+cpp_quote("//")
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
+cpp_quote("    0x76f5573e,")
+cpp_quote("    0xf13a,")
+cpp_quote("    0x40f5,")
+cpp_quote("    { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
+cpp_quote("};")
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
+cpp_quote("//")
+cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
+cpp_quote("// meaning texture tile data-inheritance is allowed.")
+cpp_quote("//")
+cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
+cpp_quote("//")
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
+cpp_quote("    0xc9c4725f,")
+cpp_quote("    0xa81a,")
+cpp_quote("    0x4f56,")
+cpp_quote("    { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
+cpp_quote("};")
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS")
+cpp_quote("//")
+cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS, ")
+cpp_quote("// driver support is still required for this feature.")
+cpp_quote("//")
+cpp_quote("// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.")
+cpp_quote("//")
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */")
+cpp_quote("    0x45dc51f3,")
+cpp_quote("    0x767f,")
+cpp_quote("    0x4588,")
+cpp_quote("    { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }")
+cpp_quote("};")
+
+cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
+cpp_quote("// D3D12GetInterface")
+cpp_quote("//")
+cpp_quote("// Retrieve Global D3D12 Interface.")
+cpp_quote("//")
+cpp_quote("")
+cpp_quote("DEFINE_GUID(CLSID_D3D12Debug,                        0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
+cpp_quote("DEFINE_GUID(CLSID_D3D12Tools,                        0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
+cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData,    0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
+cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration,             0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
+cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceFactory,                0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);")
+cpp_quote("DEFINE_GUID(CLSID_D3D12DSRDeviceFactory,             0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);")
+cpp_quote("")
+cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
+cpp_quote("")
+cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
+cpp_quote("")
+
+//==================================================================================================================================
+//
+// SDK Configuration
+//
+//==================================================================================================================================
+
+[uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
+interface ID3D12SDKConfiguration
+    : IUnknown
+{
+    HRESULT SetSDKVersion(
+        UINT SDKVersion,
+        [annotation("_In_z_")] LPCSTR SDKPath
+        );
+}
+
+[uuid(8aaf9303-ad25-48b9-9a57-d9c37e009d9f), object, local, pointer_default(unique)]
+interface ID3D12SDKConfiguration1
+    : ID3D12SDKConfiguration
+{
+    HRESULT CreateDeviceFactory(
+        UINT SDKVersion,
+        [annotation("_In_")] LPCSTR SDKPath,
+        REFIID riid, // Expected: ID3D12DeviceFactory
+        [annotation("_COM_Outptr_")] void **ppvFactory
+    );
+    void FreeUnusedSDKs();
+}
+
+typedef enum D3D12_DEVICE_FACTORY_FLAGS
+{
+    D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
+    D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
+    D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
+    D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4,
+} D3D12_DEVICE_FACTORY_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )")
+
+[uuid(61f307d3-d34e-4e7c-8374-3ba4de23cccb), object, local, pointer_default(unique)]
+interface ID3D12DeviceFactory
+    : IUnknown
+{
+    HRESULT InitializeFromGlobalState();
+    HRESULT ApplyToGlobalState();
+
+    HRESULT SetFlags(D3D12_DEVICE_FACTORY_FLAGS flags);
+    D3D12_DEVICE_FACTORY_FLAGS GetFlags();
+
+    HRESULT GetConfigurationInterface(
+        REFCLSID clsid,
+        REFIID   iid,
+        [annotation("_COM_Outptr_")] void **ppv);
+
+    HRESULT EnableExperimentalFeatures(
+       UINT      NumFeatures,
+       [annotation("_In_reads_(NumFeatures)")]     const IID *pIIDs,
+       [annotation("_In_reads_opt_(NumFeatures)")] void *pConfigurationStructs,
+       [annotation("_In_reads_opt_(NumFeatures)")] UINT *pConfigurationStructSizes);
+
+    HRESULT CreateDevice(
+        [annotation("_In_opt_")] IUnknown *adapter,
+        D3D_FEATURE_LEVEL FeatureLevel,
+        REFIID riid,
+        [annotation("_COM_Outptr_opt_")] void **ppvDevice);
+};
+
+typedef enum D3D12_DEVICE_FLAGS
+{
+    D3D12_DEVICE_FLAG_NONE = 0,
+    D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
+    D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
+    D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
+    D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
+    D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
+    D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
+    D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
+    D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
+    D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
+    D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
+    D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400,
+} D3D12_DEVICE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )")
+
+typedef struct D3D12_DEVICE_CONFIGURATION_DESC
+{
+    D3D12_DEVICE_FLAGS Flags;
+    UINT GpuBasedValidationFlags; // D3D12_GPU_BASED_VALIDATION_FLAGS from d3d12sdklayers.h
+    UINT SDKVersion;
+    UINT NumEnabledExperimentalFeatures;
+} D3D12_DEVICE_CONFIGURATION_DESC;
+
+[uuid(78dbf87b-f766-422b-a61c-c8c446bdb9ad), object, local, pointer_default(unique)]
+interface ID3D12DeviceConfiguration
+    : IUnknown
+{
+    D3D12_DEVICE_CONFIGURATION_DESC GetDesc();
+    HRESULT GetEnabledExperimentalFeatures([annotation("_Out_writes_(NumGuids)")] GUID *pGuids, UINT NumGuids);
+
+    HRESULT SerializeVersionedRootSignature(
+        [annotation("_In_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
+        [annotation("_COM_Outptr_")] ID3DBlob **ppResult,
+        [annotation("_Always_(_Outptr_opt_result_maybenull_)")] ID3DBlob **ppError);
+
+    HRESULT CreateVersionedRootSignatureDeserializer(
+        [annotation("_In_reads_bytes_(Size)")] const void *pBlob,
+        SIZE_T Size,
+        REFIID riid,
+        [annotation("_COM_Outptr_")] void **ppvDeserializer);
+};
+
+[uuid(ed342442-6343-4e16-bb82-a3a577874e56), object, local, pointer_default(unique)]
+interface ID3D12DeviceConfiguration1
+    : ID3D12DeviceConfiguration
+{
+    HRESULT CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
+        [annotation("_In_reads_bytes_(Size)")] const void* pLibraryBlob,
+        SIZE_T Size,
+        LPCWSTR RootSignatureSubobjectName,
+        REFIID riid,
+        [annotation("_COM_Outptr_")] void** ppvDeserializer);
+};
+
+
+typedef enum D3D12_AXIS_SHADING_RATE
+{
+    D3D12_AXIS_SHADING_RATE_1X = 0x0,
+    D3D12_AXIS_SHADING_RATE_2X = 0x1,
+    D3D12_AXIS_SHADING_RATE_4X = 0x2
+} D3D12_AXIS_SHADING_RATE;
+
+
+cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
+cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
+
+cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
+
+cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
+cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
+
+typedef enum D3D12_SHADING_RATE
+{
+    D3D12_SHADING_RATE_1X1 = 0x0,
+    D3D12_SHADING_RATE_1X2 = 0x1,
+    D3D12_SHADING_RATE_2X1 = 0x4,
+    D3D12_SHADING_RATE_2X2 = 0x5,
+    D3D12_SHADING_RATE_2X4 = 0x6,
+    D3D12_SHADING_RATE_4X2 = 0x9,
+    D3D12_SHADING_RATE_4X4 = 0xA
+} D3D12_SHADING_RATE;
+
+typedef enum D3D12_SHADING_RATE_COMBINER
+{
+    D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
+    D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
+    D3D12_SHADING_RATE_COMBINER_MIN = 2,
+    D3D12_SHADING_RATE_COMBINER_MAX = 3,
+    D3D12_SHADING_RATE_COMBINER_SUM = 4,
+} D3D12_SHADING_RATE_COMBINER;
+
+[uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
+{
+    void RSSetShadingRate(
+        [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
+        [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
+
+    void RSSetShadingRateImage(
+        [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
+}
+
+typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
+{
+    UINT ThreadGroupCountX;
+    UINT ThreadGroupCountY;
+    UINT ThreadGroupCountZ;
+} D3D12_DISPATCH_MESH_ARGUMENTS;
+
+[uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
+{
+    void DispatchMesh(
+        [annotation("_In_")] UINT ThreadGroupCountX,
+        [annotation("_In_")] UINT ThreadGroupCountY,
+        [annotation("_In_")] UINT ThreadGroupCountZ
+        );
+}
+
+[uuid(dd171223-8b61-4769-90e3-160ccde4e2c1), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList7 : ID3D12GraphicsCommandList6
+{
+    void Barrier(
+        UINT32 NumBarrierGroups,
+        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
+        );
+};
+
+[uuid(ee936ef9-599d-4d28-938e-23c4ad05ce51), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList8 : ID3D12GraphicsCommandList7
+{
+    void OMSetFrontAndBackStencilRef(
+        [annotation("_In_")] UINT FrontStencilRef,
+        [annotation("_In_")] UINT BackStencilRef
+    );
+};
+
+[uuid(34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList9 : ID3D12GraphicsCommandList8
+{
+    void RSSetDepthBias(
+        [annotation("_In_")] FLOAT DepthBias,
+        [annotation("_In_")] FLOAT DepthBiasClamp,
+        [annotation("_In_")] FLOAT SlopeScaledDepthBias
+    );
+
+    void IASetIndexBufferStripCutValue(
+        [annotation("_In_")] D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
+    );
+};
+
+[uuid(7013c015-d161-4b63-a08c-238552dd8acc), object, local, pointer_default(unique)]
+interface ID3D12GraphicsCommandList10 : ID3D12GraphicsCommandList9
+{
+    void SetProgram([annotation("_In_")] const D3D12_SET_PROGRAM_DESC* pDesc);
+    void DispatchGraph([annotation("_In_")] const D3D12_DISPATCH_GRAPH_DESC* pDesc);
+};
+
+
+[uuid(f343d1a0-afe3-439f-b13d-cd87a43b70ca), object, local, pointer_default(unique)]
+interface ID3D12DSRDeviceFactory : IUnknown
+{
+    HRESULT CreateDSRDevice(
+        [in] ID3D12Device *pD3D12Device,
+        [in] UINT NodeMask,
+        [in] REFIID riid, // Expected IDSRDevice
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvDSRDevice);
+}
+
+[uuid(597985ab-9b75-4dbb-be23-0761195bebee), object, local, pointer_default(unique)]
+interface ID3D12GBVDiagnostics
+    : IUnknown
+{
+    HRESULT GetGBVEntireSubresourceStatesData( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_writes_bytes_(DataSize)")] int *pData, UINT DataSize );
+    HRESULT GetGBVSubresourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_Out_")] int *pData );
+    HRESULT GetGBVResourceUniformState( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_")] int *pData );
+    HRESULT GetGBVResourceInfo( [annotation("_In_")] ID3D12Resource* pResource, 
+                               [annotation("_In_opt_")] D3D12_RESOURCE_DESC* pResourceDesc,
+                               [annotation("_In_opt_")] UINT32* pResourceHash,
+                               [annotation("_In_opt_")] UINT32* pSubresourceStatesByteOffset );
+
+    void GBVReserved0();
+
+    void GBVReserved1();
+}
+
+//----------------------------------------------------------------------------------------------------------
+// Old types which are still supported by the runtime for app-compat
+
+cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
+#pragma endregion
+
+cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);" )

+ 83 - 3
ThirdParty/AgilitySdk/include/d3d12compatibility.h

@@ -108,6 +108,13 @@ typedef interface DirectMLPyTorchCreatorID DirectMLPyTorchCreatorID;
 #endif 	/* __DirectMLPyTorchCreatorID_FWD_DEFINED__ */
 
 
+#ifndef __DirectMLWebNNCreatorID_FWD_DEFINED__
+#define __DirectMLWebNNCreatorID_FWD_DEFINED__
+typedef interface DirectMLWebNNCreatorID DirectMLWebNNCreatorID;
+
+#endif 	/* __DirectMLWebNNCreatorID_FWD_DEFINED__ */
+
+
 /* header files for imported files */
 #include "oaidl.h"
 #include "ocidl.h"
@@ -788,7 +795,79 @@ EXTERN_C const IID IID_DirectMLPyTorchCreatorID;
 #endif 	/* __DirectMLPyTorchCreatorID_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_d3d12compatibility_0000_0008 */
+#ifndef __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
+#define __DirectMLWebNNCreatorID_INTERFACE_DEFINED__
+
+/* interface DirectMLWebNNCreatorID */
+/* [unique][local][object][uuid] */ 
+
+
+EXTERN_C const IID IID_DirectMLWebNNCreatorID;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("fdf01a76-1e11-450f-902b-74f04ea08094")
+    DirectMLWebNNCreatorID : public IUnknown
+    {
+    public:
+    };
+    
+    
+#else 	/* C style interface */
+
+    typedef struct DirectMLWebNNCreatorIDVtbl
+    {
+        BEGIN_INTERFACE
+        
+        DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            DirectMLWebNNCreatorID * This,
+            REFIID riid,
+            _COM_Outptr_  void **ppvObject);
+        
+        DECLSPEC_XFGVIRT(IUnknown, AddRef)
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            DirectMLWebNNCreatorID * This);
+        
+        DECLSPEC_XFGVIRT(IUnknown, Release)
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            DirectMLWebNNCreatorID * This);
+        
+        END_INTERFACE
+    } DirectMLWebNNCreatorIDVtbl;
+
+    interface DirectMLWebNNCreatorID
+    {
+        CONST_VTBL struct DirectMLWebNNCreatorIDVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define DirectMLWebNNCreatorID_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define DirectMLWebNNCreatorID_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define DirectMLWebNNCreatorID_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __DirectMLWebNNCreatorID_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_d3d12compatibility_0000_0009 */
 /* [local] */ 
 
 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */
@@ -801,10 +880,11 @@ DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca
 DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);
 DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);
 DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);
+DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);
 
 
-extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0008_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0008_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_d3d12compatibility_0000_0009_v0_0_s_ifspec;
 
 /* Additional Prototypes for ALL interfaces */
 

+ 100 - 96
ThirdParty/AgilitySdk/include/d3d12compatibility.idl

@@ -1,96 +1,100 @@
-/*-------------------------------------------------------------------------------------
- *
- * Copyright (c) Microsoft Corporation
- * Licensed under the MIT license
- *
- *-------------------------------------------------------------------------------------*/
-import "oaidl.idl";
-import "ocidl.idl";
-
-import "d3d11on12.idl";
-
-cpp_quote("#include <winapifamily.h>")
-
-#pragma region Desktop Family
-cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
-
-typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
-{
-    D3D12_COMPATIBILITY_SHARED_FLAG_NONE          = 0,
-    D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
-    D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
-    D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
-
-} D3D12_COMPATIBILITY_SHARED_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )" )
-
-typedef enum D3D12_REFLECT_SHARED_PROPERTY
-{
-    D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS,       // D3D11_RESOURCE_FLAGS
-    D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
-    D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE,       // HANDLE
-} D3D12_REFLECT_SHARED_PROPERTY;
-
-[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
-interface ID3D12CompatibilityDevice
-    : IUnknown
-{
-    HRESULT CreateSharedResource(
-        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
-        D3D12_HEAP_FLAGS HeapFlags,
-        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
-        D3D12_RESOURCE_STATES InitialResourceState,
-        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
-        [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
-        D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
-        [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
-        [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
-        REFIID riid,
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
-
-    HRESULT CreateSharedHeap(
-        [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
-        D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
-        REFIID riid,
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
-
-    HRESULT ReflectSharedProperties(
-        [annotation("_In_")] ID3D12Object* pHeapOrResource,
-        D3D12_REFLECT_SHARED_PROPERTY ReflectType,
-        [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
-        UINT DataSize);
-}
-
-[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
-interface D3D11On12CreatorID : IUnknown { };
-
-[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
-interface D3D9On12CreatorID : IUnknown { };
-
-[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
-interface OpenGLOn12CreatorID : IUnknown { };
-
-[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
-interface OpenCLOn12CreatorID : IUnknown { };
-
-[uuid(bc806e01-3052-406c-a3e8-9fc07f048f98), object, local, pointer_default(unique)]
-interface VulkanOn12CreatorID : IUnknown { };
-
-[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
-interface DirectMLTensorFlowCreatorID : IUnknown { };
-
-[uuid(af029192-fba1-4b05-9116-235e06560354), object, local, pointer_default(unique)]
-interface DirectMLPyTorchCreatorID : IUnknown { };
-
-
-cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
-#pragma endregion
-
-cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
-cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
-cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
-cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
-cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
-cpp_quote( "DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);" )
-cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
-cpp_quote( "DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);" )
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+import "oaidl.idl";
+import "ocidl.idl";
+
+import "d3d11on12.idl";
+
+cpp_quote("#include <winapifamily.h>")
+
+#pragma region Desktop Family
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
+
+typedef enum D3D12_COMPATIBILITY_SHARED_FLAGS
+{
+    D3D12_COMPATIBILITY_SHARED_FLAG_NONE          = 0,
+    D3D12_COMPATIBILITY_SHARED_FLAG_NON_NT_HANDLE = 0x1,
+    D3D12_COMPATIBILITY_SHARED_FLAG_KEYED_MUTEX = 0x2,
+    D3D12_COMPATIBILITY_SHARED_FLAG_9_ON_12 = 0x4,
+
+} D3D12_COMPATIBILITY_SHARED_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMPATIBILITY_SHARED_FLAGS )" )
+
+typedef enum D3D12_REFLECT_SHARED_PROPERTY
+{
+    D3D12_REFLECT_SHARED_PROPERTY_D3D11_RESOURCE_FLAGS,       // D3D11_RESOURCE_FLAGS
+    D3D12_REFELCT_SHARED_PROPERTY_COMPATIBILITY_SHARED_FLAGS, // D3D12_COMPATIBILITY_SHARED_FLAGS
+    D3D12_REFLECT_SHARED_PROPERTY_NON_NT_SHARED_HANDLE,       // HANDLE
+} D3D12_REFLECT_SHARED_PROPERTY;
+
+[ uuid( 8f1c0e3c-fae3-4a82-b098-bfe1708207ff ), object, local, pointer_default( unique ) ]
+interface ID3D12CompatibilityDevice
+    : IUnknown
+{
+    HRESULT CreateSharedResource(
+        [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
+        D3D12_HEAP_FLAGS HeapFlags,
+        [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
+        D3D12_RESOURCE_STATES InitialResourceState,
+        [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
+        [annotation("_In_opt_")] const D3D11_RESOURCE_FLAGS* pFlags11,
+        D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
+        [annotation("_In_opt_")] ID3D12LifetimeTracker* pLifetimeTracker,
+        [annotation("_In_opt_")] ID3D12SwapChainAssistant* pOwningSwapchain,
+        REFIID riid,
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppResource);
+
+    HRESULT CreateSharedHeap(
+        [annotation("_In_")] const D3D12_HEAP_DESC* pHeapDesc,
+        D3D12_COMPATIBILITY_SHARED_FLAGS CompatibilityFlags,
+        REFIID riid,
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppHeap);
+
+    HRESULT ReflectSharedProperties(
+        [annotation("_In_")] ID3D12Object* pHeapOrResource,
+        D3D12_REFLECT_SHARED_PROPERTY ReflectType,
+        [annotation("_Out_writes_bytes_(DataSize)")] void* pData,
+        UINT DataSize);
+}
+
+[uuid(edbf5678-2960-4e81-8429-99d4b2630c4e), object, local, pointer_default(unique)]
+interface D3D11On12CreatorID : IUnknown { };
+
+[uuid(fffcbb7f-15d3-42a2-841e-9d8d32f37ddd), object, local, pointer_default(unique)]
+interface D3D9On12CreatorID : IUnknown { };
+
+[uuid(6bb3cd34-0d19-45ab-97ed-d720ba3dfc80), object, local, pointer_default(unique)]
+interface OpenGLOn12CreatorID : IUnknown { };
+
+[uuid(3f76bb74-91b5-4a88-b126-20ca0331cd60), object, local, pointer_default(unique)]
+interface OpenCLOn12CreatorID : IUnknown { };
+
+[uuid(bc806e01-3052-406c-a3e8-9fc07f048f98), object, local, pointer_default(unique)]
+interface VulkanOn12CreatorID : IUnknown { };
+
+[uuid(cb7490ac-8a0f-44ec-9b7b-6f4cafe8e9ab), object, local, pointer_default(unique)]
+interface DirectMLTensorFlowCreatorID : IUnknown { };
+
+[uuid(af029192-fba1-4b05-9116-235e06560354), object, local, pointer_default(unique)]
+interface DirectMLPyTorchCreatorID : IUnknown { };
+
+[uuid(fdf01a76-1e11-450f-902b-74f04ea08094), object, local, pointer_default(unique)]
+interface DirectMLWebNNCreatorID : IUnknown { };
+
+
+cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
+#pragma endregion
+
+cpp_quote( "DEFINE_GUID(IID_ID3D12CompatibilityDevice,0x8f1c0e3c,0xfae3,0x4a82,0xb0,0x98,0xbf,0xe1,0x70,0x82,0x07,0xff);" )
+cpp_quote( "DEFINE_GUID(IID_D3D11On12CreatorID,0xedbf5678,0x2960,0x4e81,0x84,0x29,0x99,0xd4,0xb2,0x63,0x0c,0x4e);" )
+cpp_quote( "DEFINE_GUID(IID_D3D9On12CreatorID,0xfffcbb7f,0x15d3,0x42a2,0x84,0x1e,0x9d,0x8d,0x32,0xf3,0x7d,0xdd);" )
+cpp_quote( "DEFINE_GUID(IID_OpenGLOn12CreatorID,0x6bb3cd34,0x0d19,0x45ab,0x97,0xed,0xd7,0x20,0xba,0x3d,0xfc,0x80);" )
+cpp_quote( "DEFINE_GUID(IID_OpenCLOn12CreatorID,0x3f76bb74,0x91b5,0x4a88,0xb1,0x26,0x20,0xca,0x03,0x31,0xcd,0x60);" )
+cpp_quote( "DEFINE_GUID(IID_VulkanOn12CreatorID,0xbc806e01,0x3052,0x406c,0xa3,0xe8,0x9f,0xc0,0x7f,0x04,0x8f,0x98);" )
+cpp_quote( "DEFINE_GUID(IID_DirectMLTensorFlowCreatorID,0xcb7490ac,0x8a0f,0x44ec,0x9b,0x7b,0x6f,0x4c,0xaf,0xe8,0xe9,0xab);" )
+cpp_quote( "DEFINE_GUID(IID_DirectMLPyTorchCreatorID,0xaf029192,0xfba1,0x4b05,0x91,0x16,0x23,0x5e,0x06,0x56,0x03,0x54);" )
+cpp_quote( "DEFINE_GUID(IID_DirectMLWebNNCreatorID,0xfdf01a76,0x1e11,0x450f,0x90,0x2b,0x74,0xf0,0x4e,0xa0,0x80,0x94);" )

+ 15 - 2
ThirdParty/AgilitySdk/include/d3d12sdklayers.h

@@ -999,7 +999,8 @@ enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
     {
         D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS	= 0,
         D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS	= ( D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS + 1 ) ,
-        D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR	= ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) 
+        D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR	= ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS + 1 ) ,
+        D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE	= ( D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR + 1 ) 
     } 	D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
 
 typedef 
@@ -1046,6 +1047,15 @@ typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
     FLOAT SlowdownFactor;
     } 	D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
 
+typedef 
+enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
+    {
+        D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED	= 0,
+        D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED	= ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED + 1 ) ,
+        D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE	= ( D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED + 1 ) ,
+        D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT	= D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
+    } 	D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
+
 
 
 extern RPC_IF_HANDLE __MIDL_itf_d3d12sdklayers_0000_0007_v0_0_c_ifspec;
@@ -3346,7 +3356,10 @@ enum D3D12_MESSAGE_ID
         D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO	= 1418,
         D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG	= 1419,
         D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG	= 1420,
-        D3D12_MESSAGE_ID_D3D12_MESSAGES_END	= ( D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG + 1 ) 
+        D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED	= 1421,
+        D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED	= 1422,
+        D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR	= 1423,
+        D3D12_MESSAGE_ID_D3D12_MESSAGES_END	= ( D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR + 1 ) 
     } 	D3D12_MESSAGE_ID;
 
 typedef struct D3D12_MESSAGE

+ 1856 - 1843
ThirdParty/AgilitySdk/include/d3d12sdklayers.idl

@@ -1,1843 +1,1856 @@
-/*-------------------------------------------------------------------------------------
- *
- * Copyright (c) Microsoft Corporation
- * Licensed under the MIT license
- *
- *-------------------------------------------------------------------------------------*/
-import "oaidl.idl";
-import "ocidl.idl";
-
-import "d3d12.idl";
-
-cpp_quote("#include <winapifamily.h>")
-
-#pragma region App Family
-cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
-
-//==================================================================================================================================
-//
-// Debugging Layer
-//
-//==================================================================================================================================
-
-[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
-interface ID3D12Debug
-    : IUnknown
-{
-    void EnableDebugLayer();
-}
-
-typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
-{
-    D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
-    D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
-
-} D3D12_GPU_BASED_VALIDATION_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
-
-
-[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
-interface ID3D12Debug1
-    : IUnknown
-{
-    void EnableDebugLayer();
-    void SetEnableGPUBasedValidation(BOOL Enable);  
-    void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
-}
-
-[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
-interface ID3D12Debug2
-    : IUnknown
-{
-    void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
-}
-
-[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
-interface ID3D12Debug3
-    : ID3D12Debug
-{
-    void SetEnableGPUBasedValidation(BOOL Enable);
-    void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
-    void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
-}
-
-[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
-interface ID3D12Debug4
-    : ID3D12Debug3
-{
-    void DisableDebugLayer();
-}
-
-[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
-interface ID3D12Debug5
-    : ID3D12Debug4
-{
-    void SetEnableAutoName(BOOL Enable);
-}
-
-[uuid(82a816d6-5d01-4157-97d0-4975463fd1ed), object, local, pointer_default(unique)]
-interface ID3D12Debug6
-    : ID3D12Debug5
-{
-    void SetForceLegacyBarrierValidation(BOOL Enable);
-}
-
-cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
-
-typedef enum D3D12_RLDO_FLAGS
-{
-    D3D12_RLDO_NONE = 0x0,
-    D3D12_RLDO_SUMMARY = 0x1,
-    D3D12_RLDO_DETAIL = 0x2,
-    D3D12_RLDO_IGNORE_INTERNAL = 0x4,
-
-} D3D12_RLDO_FLAGS;
-
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
-
-typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
-{
-    D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
-    D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
-    D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
-} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
-
-typedef enum D3D12_DEBUG_FEATURE
-{
-    D3D12_DEBUG_FEATURE_NONE = 0x00,
-    D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
-    D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
-    D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
-    D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
-} D3D12_DEBUG_FEATURE;
-
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
-
-typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
-{
-    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
-    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
-    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
-    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
-    NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
-} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
-
-typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
-{
-    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
-    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
-    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
-    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
-    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
-} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
-
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
-
-typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
-{
-    UINT MaxMessagesPerCommandList;
-    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
-    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
-} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
-
-typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
-{
-    FLOAT SlowdownFactor;
-} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
-
-[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
-interface ID3D12DebugDevice1
-    : IUnknown
-{
-    HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
-    HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
-    HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
-}
-
-[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
-interface ID3D12DebugDevice
-    : IUnknown
-{
-    HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
-    D3D12_DEBUG_FEATURE GetFeatureMask();
-    HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
-}
-
-[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
-interface ID3D12DebugDevice2
-    : ID3D12DebugDevice
-{
-    HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
-    HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
-}
-
-cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
-
-
-[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
-interface ID3D12DebugCommandQueue
-    : IUnknown
-{
-    BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
-//  TODO: Stale  BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
-};
-
-[ uuid( 16be35a2-bfd6-49f2-bcae-eaae4aff862d ), object, local, pointer_default( unique ) ]
-interface ID3D12DebugCommandQueue1
-    : ID3D12DebugCommandQueue
-{
-    void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
-    void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
-};
-
-typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
-{
-    D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
-} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
-
-typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
-{
-    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
-} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
-
-[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
-interface ID3D12DebugCommandList1
-    : IUnknown
-{
-    BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
-    HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
-    HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
-};
-
-[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
-interface ID3D12DebugCommandList
-    : IUnknown
-{
-    BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
-    HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
-    D3D12_DEBUG_FEATURE GetFeatureMask();
-};
-
-[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
-interface ID3D12DebugCommandList2
-    : ID3D12DebugCommandList
-{
-    HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
-    HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
-};
-
-[ uuid(197d5e15-4d37-4d34-af78-724cd70fdb1f), object, local, pointer_default( unique ) ]
-interface ID3D12DebugCommandList3
-    : ID3D12DebugCommandList2
-{
-    void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
-    void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
-};
-
-[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
-interface ID3D12SharingContract
-    : IUnknown
-{
-    void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
-    void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
-    void BeginCapturableWork([annotation("_In_")] REFGUID guid);
-    void EndCapturableWork([annotation("_In_")] REFGUID guid);
-};
-
-[uuid(86ca3b85-49ad-4b6e-aed5-eddb18540f41), object, local, pointer_default(unique)]
-interface ID3D12ManualWriteTrackingResource
-    : IUnknown
-{
-    void TrackWrite(
-        UINT Subresource,
-        [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange);
-};
-
-
-//==================================================================================================================================
-//
-// Info Queue
-//
-//==================================================================================================================================
-typedef enum D3D12_MESSAGE_CATEGORY {
-    D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
-    D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
-    D3D12_MESSAGE_CATEGORY_INITIALIZATION,
-    D3D12_MESSAGE_CATEGORY_CLEANUP,
-    D3D12_MESSAGE_CATEGORY_COMPILATION,
-    D3D12_MESSAGE_CATEGORY_STATE_CREATION,
-    D3D12_MESSAGE_CATEGORY_STATE_SETTING,
-    D3D12_MESSAGE_CATEGORY_STATE_GETTING,
-    D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
-    D3D12_MESSAGE_CATEGORY_EXECUTION,
-    D3D12_MESSAGE_CATEGORY_SHADER,
-} D3D12_MESSAGE_CATEGORY;
-
-typedef enum D3D12_MESSAGE_SEVERITY {
-    D3D12_MESSAGE_SEVERITY_CORRUPTION,
-    D3D12_MESSAGE_SEVERITY_ERROR,
-    D3D12_MESSAGE_SEVERITY_WARNING,
-    D3D12_MESSAGE_SEVERITY_INFO,
-    D3D12_MESSAGE_SEVERITY_MESSAGE
-} D3D12_MESSAGE_SEVERITY;
-
-// Unique ID for every error
-// CAUTION: New enum values should be appended to the list only.  Inserting
-// new enum values into the middle of the list results in changing the numeric
-// values of some ID's from one SDK release to the next.  This in-turn breaks
-// PIX and customer tools/filters.
-typedef enum D3D12_MESSAGE_ID {
-    D3D12_MESSAGE_ID_UNKNOWN = 0,
-
-    //--------------------------------------------------------------------------
-    // Messages Used by Core
-    // Message IDs generated from core are at the beginning
-    // since the core changes less frequently than the debug layer.
-
-    // End of Messages used by Core
-    // ------------------------------------------------------------------------
-    D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
-    D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
-    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
-    D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
-    D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
-
-    D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
-    D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
-    D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
-    D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
-
-    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
-    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
-    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
-    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
-    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
-    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
-    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
-
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
-    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
-
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
-
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
-
-    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
-    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
-    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
-
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
-
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
-
-    D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
-    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
-    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
-
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
-
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
-
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
-
-    D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
-    D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
-    D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
-
-    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
-
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
-    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
-    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
-    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
-
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
-
-    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
-
-    D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
-    D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
-    D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
-
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
-    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
-    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
-
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
-    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
-
-    D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
-    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
-    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
-    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
-
-    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
-    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
-    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
-    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
-    
-    D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
-
-    D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
-
-    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
-    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
-    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
-
-    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
-    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
-    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
-    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
-    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
-    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
-    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
-
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
-    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
-
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
-
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
-
-    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
-    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
-    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
-    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
-    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
-    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
-    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
-
-    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
-    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
-    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
-    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
-    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
-    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
-    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
-
-    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
-    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
-
-    D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
-    D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
-
-    D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
-    D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
-
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
-    D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
-    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
-    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
-    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
-    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
-    D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
-    D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
-    D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
-    D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
-    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
-    D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
-    D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
-
-    D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
-    D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
-    D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
-    D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
-    D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
-    D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
-    D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
-    D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
-    D3D12_MESSAGE_ID_CREATE_HEAP = 566,
-    D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
-    D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
-    D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
-
-    D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
-    D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
-    D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
-    D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
-    D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
-    D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
-    D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
-    D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
-    D3D12_MESSAGE_ID_LIVE_HEAP = 579,
-    D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
-    D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
-    D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
-
-    D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
-    D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
-    D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
-    D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
-    D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
-    D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
-    D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
-    D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
-    D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
-    D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
-    D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
-    D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
-
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
-    D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
-    // This was shipped, but is no longer used. Do not reuse.
-    //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
-    D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
-    D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
-    D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
-    D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
-    D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
-    D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
-    D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
-    D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
-    D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
-    D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
-    D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
-    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
-    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
-    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
-    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
-    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
-    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
-    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
-    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
-    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
-    D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
-    D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
-    D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
-    D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
-    D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
-    D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
-    D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
-    D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
-    D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
-    D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
-    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
-    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
-    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
-    D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
-    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
-    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
-    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
-    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
-    D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
-    D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
-    D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
-    D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
-    D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
-    D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
-    D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
-    D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
-    D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
-    D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
-    D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
-    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
-    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
-    D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
-    D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
-    D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
-    D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
-    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
-    D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
-    D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
-    D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
-    D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
-    D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
-    // This was shipped, but is no longer used. Do not reuse.
-    //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
-    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
-    D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
-    D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
-    // Note: These are the same as the above two, with the original (incorrect) name
-    D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
-    D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
-    D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
-    D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
-    D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
-    D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
-
-    // These values shipped, but are no longer used.  Do not reuse.
-    //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
-    //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
-    //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
-    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
-    D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
-    D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
-    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
-    D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
-    D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
-    D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
-    D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
-    D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
-    D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
-    D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
-    D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
-    D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
-    D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
-    D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
-    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
-    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
-    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
-    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
-
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
-
-    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
-    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
-    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
-
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
-    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
-    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
-    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
-    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
-    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
-    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
-    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
-    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
-    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
-    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
-
-    D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
-    D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
-
-    D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
-    D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
-    D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
-    D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
-    D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
-    D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
-    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
-    D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
-    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
-    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
-
-    D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
-    D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
-    D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
-    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
-    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
-    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
-    D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
-    D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
-    D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
-    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
-
-    D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
-
-    D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
-
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
-
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
-
-    D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
-
-    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
-
-    D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
-    D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
-    D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
-
-    D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
-    D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
-
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
-
-    D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
-    D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
-    D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
-    D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
-
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
-
-    D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
-
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
-
-    D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
-
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
-
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
-
-    D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
-
-    D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
-
-    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
-    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
-    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
-    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
-    D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
-    D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
-    D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
-
-    D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
-    D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
-    D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
-    D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
-    D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
-
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
-
-    D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
-
-    D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
-    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
-    D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
-    D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
-    D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
-    D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
-    D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
-    D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
-    D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
-    D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
-    D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
-    D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
-
-    D3D12_MESSAGE_ID_DEPRECATED_API = 989,
-
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
-
-    D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
-    D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
-    D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
-    D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
-
-    D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
-    D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
-    D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
-
-    D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
-
-    D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
-
-    D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
-    D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
-    D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
-    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
-
-    D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
-
-    D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
-    D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
-    D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
-
-    D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
-    D3D12_MESSAGE_ID_END_EVENT = 1015,
-
-    D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
-
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
-
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
-
-    D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
-
-    D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
-
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
-
-    D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
-
-    D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
-
-    D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
-
-    D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
-
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
-
-    D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
-
-    D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
-
-    D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
-
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
-
-    D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
-    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
-    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
-    D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
-    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
-    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
-    D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
-    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
-    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
-    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
-    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
-
-    D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
-
-    D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
-
-    D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
-    D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
-    D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
-    D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
-    D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
-    D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
-    D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
-    D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
-    D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
-    D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
-
-    D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
-
-    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
-    
-    D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
-    D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
-    D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
-    
-    D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
-    D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
-    D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
-    
-    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
-    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
-    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
-    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
-    
-    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
-    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
-    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
-    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
- 
-    D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
-    D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
-    D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
-
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
-    D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
-
-    D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
-    D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
-    D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
-    D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
-    
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
-
-    D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
-
-    D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
-    D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
-    D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
-
-    D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
-
-    D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
-    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
-
-    D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
-
-    D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
-
-    D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
-    D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
-    D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
-
-    D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
-    D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
-    D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
-
-    D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
-
-    D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
-    D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
-
-    D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
-    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
-    D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
-
-    D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
-    D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
-    D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
-    D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
-
-    D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
-
-    D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
-    D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
-    D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
-    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
-    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
-    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
-
-    D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
-    D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
-
-    D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
-
-    D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
-
-    D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
-
-    D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
-    D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
-    D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
-    D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
-    D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
-
-    D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
-    D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
-    D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
-    D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
-
-    D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
-    D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
-    D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
-
-    D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
-
-    D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
-    D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
-    D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
-    D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
-    D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
-    D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
-
-    D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
-    D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
-
-    D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
-    D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
-
-    D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
-    D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
-
-    D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
-    D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
-
-    D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
-    D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
-    D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
-    D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
-    D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
-    D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
-    D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
-    D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
-    D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
-    D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
-    D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
-    D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
-    D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
-
-    D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
-    D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
-    D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
-    D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
-    D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
-    D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
-    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
-    D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
-    D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
-
-    D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
-    D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
-
-    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
-    D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
-
-    D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
-
-    D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
-    D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
-    
-    D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
-    D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
-    D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
-    D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
-
-    D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
-    D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
-    D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
-
-    D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
-    D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
-    D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
-    D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
-
-    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
-        
-    D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,            
-    D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
-    D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
-    D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
-    D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
-    D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
-    D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
-    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
-    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
-    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
-    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
-    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
-
-    D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
-
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
-
-    D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
-
-    D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
-
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
-    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
-    D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,    
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
-
-    D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
-
-
-    D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
-
-    D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
-    D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
-    D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
-
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
-    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
-        
-    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
-    
-    D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
-    D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
-                
-    D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
-    D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
-    D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
-
-    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
-
-    D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
-    D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
-
-    D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
-    D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
-    D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
-
-    D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
-    D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
-    D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
-
-    D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
-    D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
-    D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
-    D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
-
-    D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
-    D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
-    D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
-    D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
-    D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
-    D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
-    
-    D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
-    D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
-    D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
-    D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
-    D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
-    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
-
-    D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
-    D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
-    D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
-    D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
-    D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
-    D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
-    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
-    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
-    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
-    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
-    D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
-    D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
-    D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
-    D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
-    D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
-    D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
-    D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
-    D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
-    D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
-    D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
-    D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
-    D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
-    D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
-    D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
-    D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
-    D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
-    D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
-
-    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
-    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
-    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
-    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
-    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
-    D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
-    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
-    
-    D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
-
-    D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
-
-    D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
-    
-    D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
-
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
-
-    D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
-
-    D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
-
-    D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
-
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
-
-    D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
-
-    D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
-    D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
-
-    D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
-
-    D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
-    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
-
-    D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
-
-    D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
-
-    D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
-
-    D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
-    D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
-
-    D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
-
-    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
-    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
-    D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
-
-    D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
-    D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
-    D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
-    D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
-
-    D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
-
-    D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
-
-    D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
-    D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
-    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
-    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
-    D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
-    D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
-
-    D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
-    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
-
-    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
-    D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
-
-    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
-
-    D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
-    D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
-
-    D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
-    D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
-
-    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
-
-    D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
-
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,                                 
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,                              
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,                           
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,                           
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,                         
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,                           
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,                       
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,              
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,            
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,           
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,                       
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,                   
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,             
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,        
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,                        
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,                       
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,  
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,                           
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,                                  
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,                                  
-    D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,                                                  
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,        
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,                              
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,             
-    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,                
-    D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
-    D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
-    D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
-    D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
-    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
-    D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
-    D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
-    D3D12_MESSAGE_ID_D3D12_MESSAGES_END  
-} D3D12_MESSAGE_ID;
-
-typedef struct D3D12_MESSAGE
-{
-    D3D12_MESSAGE_CATEGORY  Category;
-    D3D12_MESSAGE_SEVERITY  Severity;
-    D3D12_MESSAGE_ID        ID;
-    [annotation("_Field_size_(DescriptionByteLength)")] const char*             pDescription;
-    SIZE_T                  DescriptionByteLength;
-} D3D12_MESSAGE;
-
-typedef struct D3D12_INFO_QUEUE_FILTER_DESC
-{
-    UINT                    NumCategories;
-    [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
-    UINT                    NumSeverities;
-    [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
-    UINT                    NumIDs;
-    [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID*       pIDList;
-} D3D12_INFO_QUEUE_FILTER_DESC;
-
-// To use, memset to 0, then fill in what you need.
-typedef struct D3D12_INFO_QUEUE_FILTER
-{
-    D3D12_INFO_QUEUE_FILTER_DESC AllowList;
-    D3D12_INFO_QUEUE_FILTER_DESC DenyList;
-} D3D12_INFO_QUEUE_FILTER;
-
-//=============================================================================
-// ID3D12InfoQueue
-//
-// Logs D3D12 Messages.
-// This interface can be queried from ID3D12Device, as long as the device
-// was created with the debug layer.
-//
-//
-cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
-[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
-interface ID3D12InfoQueue
-    : IUnknown
-{
-    //=========================================================================
-    // Methods for configuring how much data is stored in the queue.
-
-    // SetMessageCountLimit()
-    // This sets how many messages are stored.  When the queue is full,
-    // new messages coming in push old messages out.
-    // Passing -1 to SetMessageCountLimit means the queue has
-    // unlimited size (go until out of memory or ClearStoredMessages()).
-    // The default message count size is
-    // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
-    // Returns S_OK or E_INVALIDARG.
-    HRESULT SetMessageCountLimit([annotation("_In_")]  UINT64 MessageCountLimit);
-
-    // ClearStoredMessages
-    void    ClearStoredMessages();
-
-    //=========================================================================
-    // Methods for retrieving data or statistics from the queue.
-
-    // GetMessage()
-    // Retrieves messages, one at a time, from the queue which pass any
-    // retrieval filter currently defined.  If there is no retrieval filter,
-    // all messages can be retrieved.
-    // The MessageIndex parameter is a 0 based index into the results passing
-    // the filter.  The number of results is returned by
-    // GetNumStoredMessagesAllowedByRetrievalFilter().
-    //
-    // Note this does not remove the message from the queue.
-    //
-    // pMessageByteLength inputs the size of the buffer passed in via
-    // pMessage, and outputs the size of the message.  pMessage can be NULL
-    // when the size of the required buffer is being queried (return S_FALSE).
-    //
-    // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
-    // it includes extra memory after the D3D12_MESSAGE for storing the string
-    // description, which is pointed to from within D3D12_MESSAGE.  Therefore
-    // applications should check the size needed for pMessage as described above.
-    //
-    // Watch out for thread safety when making consecutive calls first to
-    // determine the buffer size required and then to pass in the buffer and
-    // retrieve the message, and also between calling
-    // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
-    // the results via GetMessagE().
-    //
-    // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
-    HRESULT GetMessage(
-        [annotation("_In_")]    UINT64  MessageIndex,
-        [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
-        [annotation("_Inout_")] SIZE_T*  pMessageByteLength);
-
-    // GetNumMessagesAllowedByStorageFilter()
-    // Returns how many messages sent to the queue passed
-    // whatever storage filter was active upon receipt of
-    // the message.
-    // This can be a larger value than the message count limit,
-    // returned by GetMessageCountLimit(), since old messages are discarded
-    // when the queue is full to prevent overflow.
-    UINT64  GetNumMessagesAllowedByStorageFilter();
-
-    // GetNumMessagesDeniedByStorageFilter()
-    UINT64  GetNumMessagesDeniedByStorageFilter();
-
-    // GetNumStoredMessages()
-    // Returns how many messages are currently stored in the queue.
-    UINT64  GetNumStoredMessages();
-
-    // GetNumStoredMessagesAllowedByRetrievalFilter()
-    // Returns how many messages that are currently in the queue
-    // pass any retrieval filter that is currently set.
-    // The MessageIndex parameter to GetMessage() indexes
-    // an array of this many results.
-    UINT64  GetNumStoredMessagesAllowedByRetrievalFilter();
-
-    // GetNumMessagesDiscardedByMessageCountLimit()
-    UINT64  GetNumMessagesDiscardedByMessageCountLimit();
-
-    // GetMessageCountLimit
-    // This is how many messages can be stored in the queue.
-    // When the queue is full, new messages coming in push old messages out.
-    // -1 means there is no limit.
-    UINT64  GetMessageCountLimit();
-
-    //=========================================================================
-    // Methods for filtering what gets stored in the queue
-
-    // AddStorageFilterEntries()
-    // Adds to the existing entries at top of stack
-    // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
-    HRESULT AddStorageFilterEntries(
-        [annotation("_In_")]   D3D12_INFO_QUEUE_FILTER* pFilter);
-
-    // GetStorageFilter()
-    // Gets all entries at top of stack.
-    // The application must allocate the output buffer.  The size required can be
-    // queried by passing null for pFilter and looking at the returned
-    // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
-    // pointers - these will point to locations within the same
-    // contiguous buffer - *pFilterByteLength is the total storage needed for all
-    // data.  So the application needs to only allocate/free the memory for pFilter.
-    // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
-    HRESULT GetStorageFilter(
-        [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
-        [annotation("_Inout_")] SIZE_T* pFilterByteLength);
-
-    // ClearStorageFilter()
-    // Clears filter at the top of the stack (if there is one)
-    void    ClearStorageFilter();
-
-    // PushEmptyStorageFilter()
-    // Push an empty storage filter on the stack to allow local filtering changes.
-    // For convenience, this is automatically called by SetStorageFilter()
-    // if the stack is empty.  Thus if the stack is not needed, filters can be
-    // defined without ever bothering to push or pop.
-    // Returns S_OK or E_OUTOFMEMORY
-    HRESULT PushEmptyStorageFilter();
-
-    // PushCopyOfStorageFilter()
-    // Push a copy of the current filter so that local modifications can be made
-    // starting from what currently exists.
-    // Returns S_OK or E_OUTOFMEMORY
-    HRESULT PushCopyOfStorageFilter();
-
-    // PushStorageFilter()
-    // Push a filter passed as a parameter onto the stack.  This is
-    // just a helper for calling PushEmptyStorageFilter() followed
-    // by AddStorageFilterEntries()
-    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
-    HRESULT PushStorageFilter(
-        [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
-
-    // PopStorageFilter()
-    // Pop the current storage filter off the stack (if there is one)
-    void    PopStorageFilter();
-
-    // GetStorageFilterStackSize()
-    UINT    GetStorageFilterStackSize();
-
-    //=========================================================================
-    // Methods for filtering what gets read out of the queue by GetMessage().
-
-    // AddRetrievalFilterEntries()
-    // Adds to the existing entries at top of stack
-    // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
-    HRESULT AddRetrievalFilterEntries(
-        [annotation("_In_")]   D3D12_INFO_QUEUE_FILTER* pFilter);
-
-    // GetRetrievalFilter()
-    // Gets all entries at top of stack.
-    // The application must allocate the output buffer.  The size required can be
-    // queried by passing null for pFilter and looking at the returned
-    // pFilterByteLength (HRESULT is S_FALSE).  Note that D3D12_INFO_QUEUE_FILTER contains
-    // pointers - these will point to locations within the same
-    // contiguous buffer - *pFilterByteLength is the total storage needed for all
-    // data.  So the application needs to only allocate/free the memory for pFilter.
-    // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
-    HRESULT GetRetrievalFilter(
-        [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
-        [annotation("_Inout_")] SIZE_T* pFilterByteLength);
-
-    // ClearRetrievalFilter()
-    // Clears filter at the top of the stack (if there is one)
-    void    ClearRetrievalFilter();
-
-    // PushEmptyRetrievalFilter()
-    // Push an empty storage filter on the stack to allow local filtering changes.
-    // For convenience, this is automatically called by SetRetrievalFilter()
-    // if the stack is empty.  Thus if the stack is not needed, filters can be
-    // defined without ever bothering to push or pop.
-    // Returns S_OK or E_OUTOFMEMORY
-    HRESULT PushEmptyRetrievalFilter();
-
-    // PushCopyOfRetrievalFilter()
-    // Push a copy of the current filter so that local modifications can be made
-    // starting from what currently exists.
-    // Returns S_OK or E_OUTOFMEMORY
-    HRESULT PushCopyOfRetrievalFilter();
-
-    // PushRetrievalFilter()
-    // Push a filter passed as a parameter onto the stack.  This is
-    // just a helper for calling PushEmptyRetrievalFilter() followed
-    // by AddRetrievalFilterEntries()
-    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
-    HRESULT PushRetrievalFilter(
-        [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
-
-    // PopRetrievalFilter()
-    // Pop the current storage filter off the stack (if there is one)
-    void    PopRetrievalFilter();
-
-    // GetRetrievalFilterStackSize()
-    UINT    GetRetrievalFilterStackSize();
-
-    //=========================================================================
-    //  Methods for adding entries to the queue.
-
-    // AddMessage()
-    // This is used by D3D12 components to log messages.  Nothing stops
-    // applications from calling this, but it isn’t particularly useful.
-    // If an application wishes to insert custom strings into the queue,
-    // AddApplicationMessage() below is suggested.  See below.
-    //
-    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
-    HRESULT AddMessage(
-        [annotation("_In_")]    D3D12_MESSAGE_CATEGORY Category,
-        [annotation("_In_")]    D3D12_MESSAGE_SEVERITY Severity,
-        [annotation("_In_")]    D3D12_MESSAGE_ID       ID,
-        [annotation("_In_")]    LPCSTR                pDescription);
-
-    // AddApplicationMessage()
-    // This is a convenience for applications that want
-    // to insert strings of their own into the queue, perhaps to log issues
-    // of its own, or to mark out points in time in the queue.  This
-    // has the same effect as calling AddMessage() above with the
-    // following settings:
-    //          Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
-    //          Severity = <app selects from D3D12_MESSAGE_SEVERITY>
-    //          ID       = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
-    //          pDescription = <application provided string>
-    //
-    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
-    HRESULT AddApplicationMessage(
-        [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
-        [annotation("_In_")] LPCSTR                pDescription);
-
-    //=========================================================================
-    //  Methods for breaking on errors that pass the storage filter.
-    HRESULT SetBreakOnCategory(
-        [annotation("_In_")]    D3D12_MESSAGE_CATEGORY Category,
-        [annotation("_In_")]    BOOL bEnable);
-    HRESULT SetBreakOnSeverity(
-        [annotation("_In_")]    D3D12_MESSAGE_SEVERITY Severity,
-        [annotation("_In_")]    BOOL bEnable);
-    HRESULT SetBreakOnID(
-        [annotation("_In_")]    D3D12_MESSAGE_ID ID,
-        [annotation("_In_")]    BOOL bEnable);
-
-    BOOL GetBreakOnCategory(
-        [annotation("_In_")]    D3D12_MESSAGE_CATEGORY Category);
-    BOOL GetBreakOnSeverity(
-        [annotation("_In_")]    D3D12_MESSAGE_SEVERITY Severity);
-    BOOL GetBreakOnID(
-        [annotation("_In_")]    D3D12_MESSAGE_ID ID);
-
-    //=========================================================================
-    //  Methods for globally muting debug spte from the InfoQueue
-    void SetMuteDebugOutput(
-        [annotation("_In_")]    BOOL bMute);
-    BOOL GetMuteDebugOutput();
-};
-
-typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
-{
-    D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
-    D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
-
-} D3D12_MESSAGE_CALLBACK_FLAGS;
-
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
-
-typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
-    D3D12_MESSAGE_SEVERITY Severity,
-    D3D12_MESSAGE_ID ID,
-    LPCSTR pDescription,
-    void* pContext);
-
-[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
-interface ID3D12InfoQueue1
-    : ID3D12InfoQueue
-{
-    HRESULT RegisterMessageCallback(
-        [annotation("_In_")]    D3D12MessageFunc CallbackFunc, 
-        [annotation("_In_")]    D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
-        [annotation("_Inout_")] void* pContext, 
-        [annotation("_Inout_")] DWORD *pCallbackCookie);
-
-    HRESULT UnregisterMessageCallback(
-        [annotation("_In_")]    DWORD CallbackCookie);
-};
-
-
-
-cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
-#pragma endregion
-
-cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+import "oaidl.idl";
+import "ocidl.idl";
+
+import "d3d12.idl";
+
+cpp_quote("#include <winapifamily.h>")
+
+#pragma region App Family
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
+
+//==================================================================================================================================
+//
+// Debugging Layer
+//
+//==================================================================================================================================
+
+[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
+interface ID3D12Debug
+    : IUnknown
+{
+    void EnableDebugLayer();
+}
+
+typedef enum D3D12_GPU_BASED_VALIDATION_FLAGS
+{
+    D3D12_GPU_BASED_VALIDATION_FLAGS_NONE = 0x00,
+    D3D12_GPU_BASED_VALIDATION_FLAGS_DISABLE_STATE_TRACKING = 0x01,
+
+} D3D12_GPU_BASED_VALIDATION_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_FLAGS)")
+
+
+[uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304), object, local, pointer_default(unique)]
+interface ID3D12Debug1
+    : IUnknown
+{
+    void EnableDebugLayer();
+    void SetEnableGPUBasedValidation(BOOL Enable);  
+    void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
+}
+
+[uuid(93a665c4-a3b2-4e5d-b692-a26ae14e3374), object, local, pointer_default(unique)]
+interface ID3D12Debug2
+    : IUnknown
+{
+    void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
+}
+
+[uuid(5cf4e58f-f671-4ff1-a542-3686e3d153d1), object, local, pointer_default(unique)]
+interface ID3D12Debug3
+    : ID3D12Debug
+{
+    void SetEnableGPUBasedValidation(BOOL Enable);
+    void SetEnableSynchronizedCommandQueueValidation(BOOL Enable);
+    void SetGPUBasedValidationFlags(D3D12_GPU_BASED_VALIDATION_FLAGS Flags);
+}
+
+[uuid(014b816e-9ec5-4a2f-a845-ffbe441ce13a), object, local, pointer_default(unique)]
+interface ID3D12Debug4
+    : ID3D12Debug3
+{
+    void DisableDebugLayer();
+}
+
+[uuid(548d6b12-09fa-40e0-9069-5dcd589a52c9), object, local, pointer_default(unique)]
+interface ID3D12Debug5
+    : ID3D12Debug4
+{
+    void SetEnableAutoName(BOOL Enable);
+}
+
+[uuid(82a816d6-5d01-4157-97d0-4975463fd1ed), object, local, pointer_default(unique)]
+interface ID3D12Debug6
+    : ID3D12Debug5
+{
+    void SetForceLegacyBarrierValidation(BOOL Enable);
+}
+
+cpp_quote("DEFINE_GUID(WKPDID_D3DAutoDebugObjectNameW, 0xd4902e36, 0x757a, 0x4942, 0x95, 0x94, 0xb6, 0x76, 0x9a, 0xfa, 0x43, 0xcd);")
+
+typedef enum D3D12_RLDO_FLAGS
+{
+    D3D12_RLDO_NONE = 0x0,
+    D3D12_RLDO_SUMMARY = 0x1,
+    D3D12_RLDO_DETAIL = 0x2,
+    D3D12_RLDO_IGNORE_INTERNAL = 0x4,
+
+} D3D12_RLDO_FLAGS;
+
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_RLDO_FLAGS)")
+
+typedef enum D3D12_DEBUG_DEVICE_PARAMETER_TYPE
+{
+    D3D12_DEBUG_DEVICE_PARAMETER_FEATURE_FLAGS,
+    D3D12_DEBUG_DEVICE_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
+    D3D12_DEBUG_DEVICE_PARAMETER_GPU_SLOWDOWN_PERFORMANCE_FACTOR,
+    D3D12_DEBUG_DEVICE_PARAMETER_BYTECODE_VALIDATION_MODE
+} D3D12_DEBUG_DEVICE_PARAMETER_TYPE;
+
+typedef enum D3D12_DEBUG_FEATURE
+{
+    D3D12_DEBUG_FEATURE_NONE = 0x00,
+    D3D12_DEBUG_FEATURE_ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0x01,
+    D3D12_DEBUG_FEATURE_CONSERVATIVE_RESOURCE_STATE_TRACKING = 0x02,
+    D3D12_DEBUG_FEATURE_DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 0x04,
+    D3D12_DEBUG_FEATURE_EMULATE_WINDOWS7 = 0x08,
+} D3D12_DEBUG_FEATURE;
+
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DEBUG_FEATURE)")
+
+typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
+{
+    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE,
+    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY,
+    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION,
+    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION,
+    NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES
+} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
+
+typedef enum D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS
+{
+    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x00,
+    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x01,
+    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x02,
+    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x04,
+    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS_VALID_MASK = 0x07
+} D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS;
+
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS)")
+
+typedef struct D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS
+{
+    UINT MaxMessagesPerCommandList;
+    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE DefaultShaderPatchMode;
+    D3D12_GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS PipelineStateCreateFlags;
+} D3D12_DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS;
+
+typedef struct D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR
+{
+    FLOAT SlowdownFactor;
+} D3D12_DEBUG_DEVICE_GPU_SLOWDOWN_PERFORMANCE_FACTOR;
+
+typedef enum D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE
+{
+    D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_DISABLED,
+    D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED,
+    D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_ALL_BYTECODE,
+    D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE_DEFAULT =
+        D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_WHEN_HASH_BYPASSED
+} D3D12_DEBUG_DEVICE_BYTECODE_VALIDATION_MODE;
+
+[uuid(a9b71770-d099-4a65-a698-3dee10020f88), object, local, pointer_default(unique)]
+interface ID3D12DebugDevice1
+    : IUnknown
+{
+    HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
+    HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
+    HRESULT ReportLiveDeviceObjects( D3D12_RLDO_FLAGS Flags );
+}
+
+[uuid(3febd6dd-4973-4787-8194-e45f9e28923e), object, local, pointer_default(unique)]
+interface ID3D12DebugDevice
+    : IUnknown
+{
+    HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
+    D3D12_DEBUG_FEATURE GetFeatureMask();
+    HRESULT ReportLiveDeviceObjects(D3D12_RLDO_FLAGS Flags);
+}
+
+[uuid(60eccbc1-378d-4df1-894c-f8ac5ce4d7dd), object, local, pointer_default(unique)]
+interface ID3D12DebugDevice2
+    : ID3D12DebugDevice
+{
+    HRESULT SetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
+    HRESULT GetDebugParameter(D3D12_DEBUG_DEVICE_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
+}
+
+cpp_quote("DEFINE_GUID(DXGI_DEBUG_D3D12, 0xcf59a98c, 0xa950, 0x4326, 0x91, 0xef, 0x9b, 0xba, 0xa1, 0x7b, 0xfd, 0x95);")
+
+
+[ uuid( 09e0bf36-54ac-484f-8847-4baeeab6053a ), object, local, pointer_default( unique ) ]
+interface ID3D12DebugCommandQueue
+    : IUnknown
+{
+    BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
+//  TODO: Stale  BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
+};
+
+[ uuid( 16be35a2-bfd6-49f2-bcae-eaae4aff862d ), object, local, pointer_default( unique ) ]
+interface ID3D12DebugCommandQueue1
+    : ID3D12DebugCommandQueue
+{
+    void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
+    void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
+};
+
+typedef enum D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE
+{
+    D3D12_DEBUG_COMMAND_LIST_PARAMETER_GPU_BASED_VALIDATION_SETTINGS,
+} D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE;
+
+typedef struct D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS
+{
+    D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE ShaderPatchMode;
+} D3D12_DEBUG_COMMAND_LIST_GPU_BASED_VALIDATION_SETTINGS;
+
+[ uuid( 102ca951-311b-4b01-b11f-ecb83e061b37 ), object, local, pointer_default( unique ) ]
+interface ID3D12DebugCommandList1
+    : IUnknown
+{
+    BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
+    HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
+    HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
+};
+
+[uuid(09e0bf36-54ac-484f-8847-4baeeab6053f), object, local, pointer_default(unique)]
+interface ID3D12DebugCommandList
+    : IUnknown
+{
+    BOOL AssertResourceState([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State);
+    HRESULT SetFeatureMask(D3D12_DEBUG_FEATURE Mask);
+    D3D12_DEBUG_FEATURE GetFeatureMask();
+};
+
+[ uuid(aeb575cf-4e06-48be-ba3b-c450fc96652e), object, local, pointer_default( unique ) ]
+interface ID3D12DebugCommandList2
+    : ID3D12DebugCommandList
+{
+    HRESULT SetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_In_reads_bytes_(DataSize)")] const void *pData, UINT DataSize);
+    HRESULT GetDebugParameter(D3D12_DEBUG_COMMAND_LIST_PARAMETER_TYPE Type, [annotation("_Out_writes_bytes_(DataSize)")] void *pData, UINT DataSize);
+};
+
+[ uuid(197d5e15-4d37-4d34-af78-724cd70fdb1f), object, local, pointer_default( unique ) ]
+interface ID3D12DebugCommandList3
+    : ID3D12DebugCommandList2
+{
+    void AssertResourceAccess([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_ACCESS Access);
+    void AssertTextureLayout([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, D3D12_BARRIER_LAYOUT Layout);
+};
+
+[uuid(0adf7d52-929c-4e61-addb-ffed30de66ef), object, local, pointer_default(unique)]
+interface ID3D12SharingContract
+    : IUnknown
+{
+    void Present([annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_In_")] HWND window);
+    void SharedFenceSignal([annotation("_In_")] ID3D12Fence* pFence, UINT64 FenceValue);
+    void BeginCapturableWork([annotation("_In_")] REFGUID guid);
+    void EndCapturableWork([annotation("_In_")] REFGUID guid);
+};
+
+[uuid(86ca3b85-49ad-4b6e-aed5-eddb18540f41), object, local, pointer_default(unique)]
+interface ID3D12ManualWriteTrackingResource
+    : IUnknown
+{
+    void TrackWrite(
+        UINT Subresource,
+        [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange);
+};
+
+
+//==================================================================================================================================
+//
+// Info Queue
+//
+//==================================================================================================================================
+typedef enum D3D12_MESSAGE_CATEGORY {
+    D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED,
+    D3D12_MESSAGE_CATEGORY_MISCELLANEOUS,
+    D3D12_MESSAGE_CATEGORY_INITIALIZATION,
+    D3D12_MESSAGE_CATEGORY_CLEANUP,
+    D3D12_MESSAGE_CATEGORY_COMPILATION,
+    D3D12_MESSAGE_CATEGORY_STATE_CREATION,
+    D3D12_MESSAGE_CATEGORY_STATE_SETTING,
+    D3D12_MESSAGE_CATEGORY_STATE_GETTING,
+    D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
+    D3D12_MESSAGE_CATEGORY_EXECUTION,
+    D3D12_MESSAGE_CATEGORY_SHADER,
+} D3D12_MESSAGE_CATEGORY;
+
+typedef enum D3D12_MESSAGE_SEVERITY {
+    D3D12_MESSAGE_SEVERITY_CORRUPTION,
+    D3D12_MESSAGE_SEVERITY_ERROR,
+    D3D12_MESSAGE_SEVERITY_WARNING,
+    D3D12_MESSAGE_SEVERITY_INFO,
+    D3D12_MESSAGE_SEVERITY_MESSAGE
+} D3D12_MESSAGE_SEVERITY;
+
+// Unique ID for every error
+// CAUTION: New enum values should be appended to the list only.  Inserting
+// new enum values into the middle of the list results in changing the numeric
+// values of some ID's from one SDK release to the next.  This in-turn breaks
+// PIX and customer tools/filters.
+typedef enum D3D12_MESSAGE_ID {
+    D3D12_MESSAGE_ID_UNKNOWN = 0,
+
+    //--------------------------------------------------------------------------
+    // Messages Used by Core
+    // Message IDs generated from core are at the beginning
+    // since the core changes less frequently than the debug layer.
+
+    // End of Messages used by Core
+    // ------------------------------------------------------------------------
+    D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 1,
+    D3D12_MESSAGE_ID_CORRUPTED_THIS = 2,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 3,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 4,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 5,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 6,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 7,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 8,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 9,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 10,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 11,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 12,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 13,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 14,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 15,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 16,
+    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 17,
+    D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 18,
+    D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 19,
+
+    D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 20,
+    D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 21,
+    D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 24,
+    D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 25,
+
+    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 26,
+    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 27,
+    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 28,
+    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 29,
+    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 30,
+    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 31,
+    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 32,
+
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 35,
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 36,
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 37,
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 38,
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 39,
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 40,
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 41,
+    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 42,
+
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 45,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 46,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 47,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 48,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 49,
+
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 52,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 53,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 54,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 55,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 56,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 57,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 58,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 59,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 60,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 61,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 62,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 63,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 64,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 65,
+
+    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 66,
+    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 67,
+    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 68,
+
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 69,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 70,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 71,
+
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 72,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 73,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 74,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 75,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 76,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 79,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 80,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 81,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 82,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 83,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 84,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 85,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 86,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 87,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 88,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 89,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 90,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 91,
+
+    D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 92,
+    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 93,
+    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 94,
+
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 95,
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 96,
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 97,
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 98,
+
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 100,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 101,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 102,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 103,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 104,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 105,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 106,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 107,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 108,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 109,
+
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 111,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 112,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 113,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 114,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 115,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 116,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 117,
+
+    D3D12_MESSAGE_ID_GET_PROGRAM_IDENTIFIER_ERROR = 118,
+    D3D12_MESSAGE_ID_GET_WORK_GRAPH_PROPERTIES_ERROR = 119,
+    D3D12_MESSAGE_ID_SET_PROGRAM_ERROR = 120,
+
+    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 135,
+
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 200,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 201,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 202,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 209,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 210,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 211,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 212,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 213,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 219,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 221,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 222,
+    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 232,
+    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 233,
+    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 234,
+
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 239,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 240,
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 245,
+
+    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 253,
+
+    D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 255,
+    D3D12_MESSAGE_ID_LIVE_DEVICE = 274,
+    D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 275,
+
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 276,
+    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 277,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 278,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 280,
+    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 283,
+
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 284,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 285,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 286,
+    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 287,
+
+    D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 289,
+    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 290,
+    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 291,
+    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 292,
+
+    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 294,
+    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 295,
+    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 296,
+    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 297,
+    
+    D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 310,
+
+    D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 318,
+
+    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 321,
+    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 322,
+    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 323,
+
+    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 331,
+    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 332,
+    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 333,
+    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 334,
+    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 335,
+    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 336,
+    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 337,
+
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 340,
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 341,
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 342,
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 343,
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 344,
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 345,
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 346,
+    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 354,
+
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 401,
+
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 403,
+
+    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 410,
+    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 412,
+    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 414,
+    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 416,
+    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 418,
+    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 420,
+    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 422,
+
+    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 425,
+    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 426,
+    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 427,
+    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 428,
+    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 429,
+    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 430,
+    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 431,
+
+    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 447,
+    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 448,
+
+    D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 493,
+    D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 494,
+
+    D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 506,
+    D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 507,
+
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 519,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 520,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 521,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 522,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 523,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 524,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 525,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 526,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 527,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 528,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 529,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 530,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 531,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 532,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 533,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 534,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 535,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 536,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 537,
+    D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 538,
+    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 540,
+    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 541,
+    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 542,
+    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 543,
+    D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 544,
+    D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 546,
+    D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 547,
+    D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 549,
+    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 552,
+    D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 553,
+    D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 554,
+
+    D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 557,
+    D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 558,
+    D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 559,
+    D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 560,
+    D3D12_MESSAGE_ID_CREATE_RESOURCE = 562,
+    D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 563,
+    D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 564,
+    D3D12_MESSAGE_ID_CREATE_LIBRARY = 565,
+    D3D12_MESSAGE_ID_CREATE_HEAP = 566,
+    D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 567,
+    D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 568,
+    D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 569,
+
+    D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 570,
+    D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 571,
+    D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 572,
+    D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 573,
+    D3D12_MESSAGE_ID_LIVE_RESOURCE = 575,
+    D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 576,
+    D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 577,
+    D3D12_MESSAGE_ID_LIVE_LIBRARY = 578,
+    D3D12_MESSAGE_ID_LIVE_HEAP = 579,
+    D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 580,
+    D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 581,
+    D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 582,
+
+    D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 583,
+    D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 584,
+    D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 585,
+    D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 586,
+    D3D12_MESSAGE_ID_DESTROY_RESOURCE = 588,
+    D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 589,
+    D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 590,
+    D3D12_MESSAGE_ID_DESTROY_LIBRARY = 591,
+    D3D12_MESSAGE_ID_DESTROY_HEAP = 592,
+    D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 593,
+    D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 594,
+    D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 595,
+
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 597,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 599,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 602,
+    D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 603,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 604,
+    // This was shipped, but is no longer used. Do not reuse.
+    //D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE = 605,
+    D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 607,
+    D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 608,
+    D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 609,
+    D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 610,
+    D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 611,
+    D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 613,
+    D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 614,
+    D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 615,
+    D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 616,
+    D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 622,
+    D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 623,
+    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 624,
+    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 625,
+    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 626,
+    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 627,
+    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 628,
+    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 629,
+    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 630,
+    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 631,
+    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 632,
+    D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 633,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 634,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 635,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 636,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 637,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 638,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 639,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 640,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 641,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 642,
+    D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 643,
+    D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 644,
+    D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 645,
+    D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 646,
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 647,
+    D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 649,
+    D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 650,
+    D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 652,
+    D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 653,
+    D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 654,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 655,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 656,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 657,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 658,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 659,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 660,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 661,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 662,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 663,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 664,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 665,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 666,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 667,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 668,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 669,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 670,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 671,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 672,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 673,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 674,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 675,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 676,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 677,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 678,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 679,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 680,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 681,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 682,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 683,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 684,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 685,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 686,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 687,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 688,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 689,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 690,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 691,
+    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 692,
+    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 693,
+    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 694,
+    D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 695,
+    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 696,
+    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 697,
+    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 698,
+    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 699,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 700,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 701,
+    D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 702,
+    D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 703,
+    D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 705,
+    D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 708,
+    D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 709,
+    D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 710,
+    D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 711,
+    D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 712,
+    D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 713,
+    D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 715,
+    D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 717,
+    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 718,
+    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 719,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 720,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 721,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 722,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 723,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 724,
+    D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 725,
+    D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 726,
+    D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 727,
+    D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 728,
+    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 729,
+    D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 731,
+    D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 732,
+    D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 733,
+    D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 734,
+    D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 735,
+    // This was shipped, but is no longer used. Do not reuse.
+    //D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE = 736,
+    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 737,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 738,
+    D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 739,
+    D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 740,
+    // Note: These are the same as the above two, with the original (incorrect) name
+    D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 739,
+    D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 740,
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 741,
+    D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 742,
+    D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 743,
+    D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 744,
+    D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 745,
+
+    // These values shipped, but are no longer used.  Do not reuse.
+    //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE = 746,
+    //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED = 747,
+    //D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED = 748,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 815,
+    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 816,
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 817,
+    D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 818,
+    D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 820,
+    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 821,
+    D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 822,
+    D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 823,
+    D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 824,
+    D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 825,
+    D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 826,
+    D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 827,
+    D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 828,
+    D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 829,
+    D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 832,
+    D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 833,
+    D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 834,
+    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 835,
+    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 836,
+    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 837,
+    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 838,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 839,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 840,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 841,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 842,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 843,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 844,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 845,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 846,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 847,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 848,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 849,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 850,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 851,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 852,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 853,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 854,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 855,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 856,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 857,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 858,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 859,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 860,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 861,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 862,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 863,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 864,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 865,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 866,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 867,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 868,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 869,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 870,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 871,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 872,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 873,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 874,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 875,
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 876,
+
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 877,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 878,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 879,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 880,
+
+    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 881,
+    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 882,
+    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 883,
+
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 884,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 885,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 886,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 887,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 888,
+    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 889,
+    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 890,
+    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 891,
+    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 892,
+    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 893,
+    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 894,
+    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 895,
+    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 896,
+    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 897,
+    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 898,
+
+    D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 899,
+    D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 900,
+
+    D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 901,
+    D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 902,
+    D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 903,
+    D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 904,
+    D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 905,
+    D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 906,
+    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 907,
+    D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 908,
+    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 909,
+    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 910,
+
+    D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 911,
+    D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 912,
+    D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 913,
+    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 914,
+    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 915,
+    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 916,
+    D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 917,
+    D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 918,
+    D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 919,
+    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 920,
+
+    D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 921,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 922,
+
+    D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 923,
+
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 924,
+
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 925,
+
+    D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 926,
+
+    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 927,
+
+    D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 929,
+    D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 930,
+    D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 931,
+
+    D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 932,
+    D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 933,
+
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 934,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 935,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 936,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 937,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 938,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 939,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 940,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 941,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 942,
+
+    D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 943,
+    D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 944,
+    D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 945,
+    D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 946,
+
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 947,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 948,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 949,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 950,
+
+    D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 951,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 952,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 953,
+
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 954,
+
+    D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 955,
+
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 956,
+
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 957,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 958,
+
+    D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 959,
+
+    D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 960,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 961,
+
+    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 962,
+    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 963,
+    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 964,
+    D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 965,
+    D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 966,
+    D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 967,
+    D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 968,
+
+    D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 969,
+    D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 970,
+    D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 971,
+    D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 972,
+    D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 973,
+
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 974,
+
+    D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 975,
+
+    D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 976,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 977,
+    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 978,
+    D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 979,
+    D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 980,
+    D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 981,
+    D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 982,
+    D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 983,
+    D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 984,
+    D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 985,
+    D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 986,
+    D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 987,
+    D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 988,
+
+    D3D12_MESSAGE_ID_DEPRECATED_API = 989,
+
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 990,
+
+    D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 991,
+    D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 992,
+    D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 993,
+    D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 994,
+
+    D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 995,
+    D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 996,
+    D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 997,
+
+    D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 998,
+
+    D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 999,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 1000,
+
+    D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 1001,
+    D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 1002,
+    D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 1003,
+    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 1004,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 1005,
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 1006,
+
+    D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 1007,
+
+    D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 1008,
+    D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 1009,
+    D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 1013,
+
+    D3D12_MESSAGE_ID_BEGIN_EVENT = 1014,
+    D3D12_MESSAGE_ID_END_EVENT = 1015,
+
+    D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 1016,
+
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 1017,
+
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 1018,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 1019,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 1020,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 1021,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 1022,
+
+    D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 1023,
+
+    D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 1024,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 1025,
+
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 1026,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 1027,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 1028,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 1029,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 1030,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 1031,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 1032,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 1033,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 1034,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 1035,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 1036,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 1037,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 1038,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 1039,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 1040,
+
+    D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 1041,
+
+    D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 1042,
+
+    D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 1043,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 1044,
+
+    D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 1045,
+
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 1046,
+
+    D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 1047,
+
+    D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 1048,
+
+    D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 1049,
+
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 1050,
+
+    D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 1051,
+    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 1052,
+    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 1053,
+    D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 1054,
+    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 1055,
+    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 1056,
+    D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 1057,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 1058,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 1059,
+    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 1060,
+    D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 1061,
+    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 1062,
+    D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 1063,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 1064,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 1065,
+
+    D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 1066,
+
+    D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 1067,
+
+    D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 1068,
+    D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 1069,
+    D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 1070,
+    D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 1071,
+    D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 1072,
+    D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 1073,
+    D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 1074,
+    D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 1075,
+    D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 1076,
+    D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 1077,
+
+    D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 1078,
+
+    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 1079,
+    
+    D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 1080,
+    D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 1081,
+    D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 1082,
+    
+    D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 1083,
+    D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 1084,
+    D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 1085,
+    
+    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 1086,
+    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 1087,
+    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 1088,
+    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 1089,
+    
+    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 1090,
+    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 1091,
+    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 1092,
+    D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 1093,
+ 
+    D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 1094,
+    D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 1095,
+    D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 1096,
+
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1097,
+    D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 1098,
+
+    D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 1099,
+    D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 1100,
+    D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 1101,
+    D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 1102,
+    
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 1103,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 1104,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 1105,
+
+    D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 1106,
+
+    D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 1107,
+    D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 1108,
+    D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 1109,
+
+    D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 1110,
+
+    D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 1111,
+    D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 1112,
+
+    D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 1113,
+
+    D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 1114,
+
+    D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 1115,
+    D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 1116,
+    D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 1117,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 1118,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 1119,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 1120,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 1121,
+
+    D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 1122,
+    D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 1123,
+    D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 1124,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 1125,
+
+    D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 1126,
+
+    D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 1127,
+    D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 1128,
+
+    D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 1129,
+    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 1130,
+    D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 1131,
+
+    D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 1132,
+    D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 1133,
+    D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 1134,
+    D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 1135,
+
+    D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 1136,
+
+    D3D12_MESSAGE_ID_CREATE_META_COMMAND = 1137,
+    D3D12_MESSAGE_ID_LIVE_META_COMMAND = 1138,
+    D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 1139,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 1140,
+    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 1141,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 1142,
+    D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 1143,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 1144,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 1145,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 1146,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 1147,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 1148,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 1149,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 1150,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 1151,
+    D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 1152,
+
+    D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 1153,
+    D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 1154,
+
+    D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 1155,
+
+    D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 1156,
+
+    D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 1157,
+
+    D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1158,
+    D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 1159,
+    D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 1160,
+    D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 1161,
+    D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 1162,
+
+    D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 1163,
+    D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 1164,
+    D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 1165,
+    D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 1166,
+
+    D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 1167,
+    D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 1168,
+    D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 1169,
+
+    D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 1170,
+
+    D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 1171,
+    D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 1172,
+    D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 1173,
+    D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 1174,
+    D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 1175,
+    D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 1176,
+
+    D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 1177,
+    D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 1178,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 1179,
+
+    D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 1180,
+    D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 1181,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 1182,
+
+    D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 1183,
+    D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 1184,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 1185,
+
+    D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 1186,
+    D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 1187,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 1188,
+
+    D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 1189,
+    D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 1190,
+    D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 1191,
+    D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 1192,
+    D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 1193,
+    D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 1194,
+    D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 1195,
+    D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 1196,
+    D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 1197,
+    D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 1198,
+    D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 1199,
+    D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 1200,
+    D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 1201,
+
+    D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 1202,
+    D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 1203,
+    D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 1204,
+    D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 1205,
+    D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 1206,
+    D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 1207,
+    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 1208,
+    D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 1209,
+    D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 1210,
+
+    D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 1211,
+    D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 1212,
+
+    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 1213,
+    D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 1214,
+
+    D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 1215,
+
+    D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 1216,
+    D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 1217,
+    
+    D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 1218,
+    D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1219,
+    D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 1220,
+    D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 1221,
+
+    D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 1222,
+    D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 1223,
+    D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 1224,
+
+    D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 1225,
+    D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 1226,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 1227,
+    D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 1228,
+    D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 1229,
+
+    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 1230,
+        
+    D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 1231,            
+    D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1232,
+    D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 1233,
+    D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 1234,
+    D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 1235,
+    D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 1236,
+    D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 1237,
+    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 1238,
+    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 1239,
+    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 1240,
+    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 1241,
+    D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 1242,
+
+    D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 1243,
+
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 1244,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 1245,
+
+    D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 1246,
+
+    D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 1247,
+
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 1248,
+    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 1249,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 1250,
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 1251,
+    D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 1252,    
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 1253,
+
+    D3D12_MESSAGE_ID_EMPTY_DISPATCH = 1254,
+
+
+    D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1255,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 1256,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 1257,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 1258,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 1259,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 1260,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 1261,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 1262,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 1263,
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 1264,
+
+    D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 1265,
+    D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 1266,
+    D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 1267,
+
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 1268,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 1269,
+    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 1270,
+        
+    D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 1271,
+    
+    D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 1272,
+    D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 1273,
+                
+    D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1274,
+    D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 1275,
+    D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 1276,
+
+    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 1277,
+
+    D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 1278,
+    D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 1279,
+
+    D3D12_MESSAGE_ID_CREATE_SHADERCACHESESSION = 1280,
+    D3D12_MESSAGE_ID_LIVE_SHADERCACHESESSION = 1281,
+    D3D12_MESSAGE_ID_DESTROY_SHADERCACHESESSION = 1282,
+
+    D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_INVALIDARGS = 1283,
+    D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_DISABLED = 1284,
+    D3D12_MESSAGE_ID_CREATESHADERCACHESESSION_ALREADYOPEN = 1285,
+
+    D3D12_MESSAGE_ID_SHADERCACHECONTROL_DEVELOPERMODE = 1286,
+    D3D12_MESSAGE_ID_SHADERCACHECONTROL_INVALIDFLAGS = 1287,
+    D3D12_MESSAGE_ID_SHADERCACHECONTROL_STATEALREADYSET = 1288,
+    D3D12_MESSAGE_ID_SHADERCACHECONTROL_IGNOREDFLAG = 1289,
+
+    D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_ALREADYPRESENT = 1290,
+    D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_HASHCOLLISION = 1291,
+    D3D12_MESSAGE_ID_SHADERCACHESESSION_STOREVALUE_CACHEFULL = 1292,
+    D3D12_MESSAGE_ID_SHADERCACHESESSION_FINDVALUE_NOTFOUND = 1293,
+    D3D12_MESSAGE_ID_SHADERCACHESESSION_CORRUPT = 1294,
+    D3D12_MESSAGE_ID_SHADERCACHESESSION_DISABLED = 1295,
+    
+    D3D12_MESSAGE_ID_OVERSIZED_DISPATCH = 1296,
+    D3D12_MESSAGE_ID_CREATE_VIDEOENCODER = 1297,
+    D3D12_MESSAGE_ID_LIVE_VIDEOENCODER = 1298,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODER = 1299,
+    D3D12_MESSAGE_ID_CREATE_VIDEOENCODERHEAP = 1300,
+    D3D12_MESSAGE_ID_LIVE_VIDEOENCODERHEAP = 1301,
+    D3D12_MESSAGE_ID_DESTROY_VIDEOENCODERHEAP = 1302,
+
+    D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1303,
+    D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_ENCODE_REFERENCE_ONLY_FLAG = 1304,
+    D3D12_MESSAGE_ID_ENCODE_FRAME_INVALID_PARAMETERS = 1305,
+    D3D12_MESSAGE_ID_ENCODE_FRAME_UNSUPPORTED_PARAMETERS = 1306,
+    D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_INVALID_PARAMETERS = 1307,
+    D3D12_MESSAGE_ID_RESOLVE_ENCODER_OUTPUT_METADATA_UNSUPPORTED_PARAMETERS = 1308,
+    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_INVALID_PARAMETERS = 1309,
+    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_UNSUPPORTED_PARAMETERS = 1310,
+    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_INVALID_PARAMETERS = 1311,
+    D3D12_MESSAGE_ID_CREATE_VIDEO_ENCODER_HEAP_UNSUPPORTED_PARAMETERS = 1312,
+    D3D12_MESSAGE_ID_CREATECOMMANDLIST_NULL_COMMANDALLOCATOR = 1313,
+    D3D12_MESSAGE_ID_CLEAR_UNORDERED_ACCESS_VIEW_INVALID_DESCRIPTOR_HANDLE = 1314,
+    D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SHADER_VISIBLE = 1315,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOP_WARNING = 1316,
+    D3D12_MESSAGE_ID_CREATEBLENDSTATE_BLENDOPALPHA_WARNING = 1317,
+    D3D12_MESSAGE_ID_WRITE_COMBINE_PERFORMANCE_WARNING = 1318,
+    D3D12_MESSAGE_ID_RESOLVE_QUERY_INVALID_QUERY_STATE = 1319,
+    D3D12_MESSAGE_ID_SETPRIVATEDATA_NO_ACCESS = 1320,
+    D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_SAMPLER_MODE_MISMATCH = 1321,
+    D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_UNSUPPORTED_BUFFER_WIDTH = 1322,
+    D3D12_MESSAGE_ID_CREATEMESHSHADER_TOPOLOGY_MISMATCH = 1323,
+    D3D12_MESSAGE_ID_VRS_SUM_COMBINER_REQUIRES_CAPABILITY = 1324,
+    D3D12_MESSAGE_ID_SETTING_SHADING_RATE_FROM_MS_REQUIRES_CAPABILITY = 1325,
+    D3D12_MESSAGE_ID_SHADERCACHESESSION_SHADERCACHEDELETE_NOTSUPPORTED = 1326,
+    D3D12_MESSAGE_ID_SHADERCACHECONTROL_SHADERCACHECLEAR_NOTSUPPORTED = 1327,
+    D3D12_MESSAGE_ID_CREATERESOURCE_STATE_IGNORED = 1328,
+    D3D12_MESSAGE_ID_UNUSED_CROSS_EXECUTE_SPLIT_BARRIER = 1329,
+    D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_HANDLE_ACCESS_DENIED = 1330,
+
+    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_VALUES = 1331,
+    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_ACCESS = 1332,
+    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_SYNC = 1333,
+    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_LAYOUT = 1334,
+    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_TYPE = 1335,
+    D3D12_MESSAGE_ID_OUT_OF_BOUNDS_BARRIER_SUBRESOURCE_RANGE = 1336,
+    D3D12_MESSAGE_ID_INCOMPATIBLE_BARRIER_RESOURCE_DIMENSION = 1337,
+    
+    D3D12_MESSAGE_ID_SET_SCISSOR_RECTS_INVALID_RECT = 1338,
+
+    D3D12_MESSAGE_ID_SHADING_RATE_SOURCE_REQUIRES_DIMENSION_TEXTURE2D = 1339,
+
+    D3D12_MESSAGE_ID_BUFFER_BARRIER_SUBREGION_OUT_OF_BOUNDS = 1340,
+    
+    D3D12_MESSAGE_ID_UNSUPPORTED_BARRIER_LAYOUT = 1341,
+
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALID_PARAMETERS = 1342,
+
+    D3D12_MESSAGE_ID_ENHANCED_BARRIERS_NOT_SUPPORTED = 1343,
+
+    D3D12_MESSAGE_ID_LEGACY_BARRIER_VALIDATION_FORCED_ON = 1346,
+
+    D3D12_MESSAGE_ID_EMPTY_ROOT_DESCRIPTOR_TABLE = 1347,
+
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ELEMENT_OFFSET_UNALIGNED = 1348,
+
+    D3D12_MESSAGE_ID_ALPHA_BLEND_FACTOR_NOT_SUPPORTED = 1349,
+
+    D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_LAYOUT = 1350,
+    D3D12_MESSAGE_ID_BARRIER_INTEROP_INVALID_STATE = 1351,
+
+    D3D12_MESSAGE_ID_GRAPHICS_PIPELINE_STATE_DESC_ZERO_SAMPLE_MASK = 1352,
+
+    D3D12_MESSAGE_ID_INDEPENDENT_STENCIL_REF_NOT_SUPPORTED = 1353,
+    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INDEPENDENT_MASKS_UNSUPPORTED = 1354,
+
+    D3D12_MESSAGE_ID_TEXTURE_BARRIER_SUBRESOURCES_OUT_OF_BOUNDS = 1355,
+
+    D3D12_MESSAGE_ID_NON_OPTIMAL_BARRIER_ONLY_EXECUTE_COMMAND_LISTS = 1356,
+
+    D3D12_MESSAGE_ID_EXECUTE_INDIRECT_ZERO_COMMAND_COUNT = 1357,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_TEXTURE_LAYOUT = 1358,
+
+    D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NOT_SUPPORTED = 1359,
+    D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_TRIANGLE_FANS_NOT_SUPPORTED = 1360,
+
+    D3D12_MESSAGE_ID_CREATE_SAMPLER_COMPARISON_FUNC_IGNORED = 1361,
+
+    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDHEAPTYPE = 1362,
+    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPTYPE = 1363,
+    D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NOT_SUPPORTED = 1364,
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NON_WHOLE_DYNAMIC_DEPTH_BIAS = 1365,
+
+    D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_FLAG_MISSING = 1366,
+    D3D12_MESSAGE_ID_DYNAMIC_DEPTH_BIAS_NO_PIPELINE = 1367,
+    D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_FLAG_MISSING = 1368,
+    D3D12_MESSAGE_ID_DYNAMIC_INDEX_BUFFER_STRIP_CUT_NO_PIPELINE = 1369,
+
+    D3D12_MESSAGE_ID_NONNORMALIZED_COORDINATE_SAMPLING_NOT_SUPPORTED = 1370,
+
+    D3D12_MESSAGE_ID_INVALID_CAST_TARGET = 1371,
+
+    D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_END_STATE = 1372,
+    D3D12_MESSAGE_ID_RENDER_PASS_COMMANDLIST_INVALID_START_STATE = 1373,
+    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_ACCESS = 1374,
+    D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_LOCAL_PRESERVE_PARAMETERS = 1375,
+    D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_PRESERVE_RENDER_PARAMETERS_ERROR = 1376,
+    D3D12_MESSAGE_ID_RENDER_PASS_LOCAL_DEPTH_STENCIL_ERROR = 1377,
+
+    D3D12_MESSAGE_ID_DRAW_POTENTIALLY_OUTSIDE_OF_VALID_RENDER_AREA = 1378,
+    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_LINERASTERIZATIONMODE = 1379,
+
+    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT_SMALLRESOURCE = 1380,
+    D3D12_MESSAGE_ID_GENERIC_DEVICE_OPERATION_UNSUPPORTED = 1381,
+
+    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDER_TARGET_WRONG_WRITE_MASK = 1382,
+
+    D3D12_MESSAGE_ID_PROBABLE_PIX_EVENT_LEAK = 1383,
+    D3D12_MESSAGE_ID_PIX_EVENT_UNDERFLOW = 1384,
+    
+    D3D12_MESSAGE_ID_RECREATEAT_INVALID_TARGET = 1385,
+    D3D12_MESSAGE_ID_RECREATEAT_INSUFFICIENT_SUPPORT = 1386,
+
+    D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_STRUCTURED_BUFFER_STRIDE_MISMATCH = 1387,
+
+    D3D12_MESSAGE_ID_DISPATCH_GRAPH_INVALID = 1388,
+
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_FORMAT_INVALID = 1389,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_TARGET_DIMENSION_INVALID = 1390,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_COLOR_FORMAT_INVALID = 1391,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_SOURCE_DEPTH_FORMAT_INVALID = 1392,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXPOSURE_SCALE_FORMAT_INVALID = 1393,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_ENGINE_CREATE_FLAGS_INVALID = 1394,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_LOAD_FAILURE = 1395,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_ENGINE_CREATION_ERROR = 1396,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_CREATION_ERROR = 1397,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_EXTENSION_INTERNAL_UPSCALER_EXECUTION_ERROR = 1398,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REGION_INVALID = 1399,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_TIME_DELTA_INVALID = 1400,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_REQUIRED_TEXTURE_IS_NULL = 1401,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_MOTION_VECTORS_FORMAT_INVALID = 1402,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FLAGS_INVALID = 1403,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_FORMAT_INVALID = 1404,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_EXPOSURE_SCALE_TEXTURE_SIZE_INVALID = 1405,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_INDEX_OUT_OF_BOUNDS = 1406,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_VARIANT_ID_NOT_FOUND = 1407,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_DUPLICATE_VARIANT_ID = 1408,
+    D3D12_MESSAGE_ID_DIRECTSR_OUT_OF_MEMORY = 1409,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_UNEXPECTED_TEXTURE_IS_IGNORED = 1410,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EVICT_UNDERFLOW = 1411,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_OPTIONAL_TEXTURE_IS_NULL = 1412,
+    D3D12_MESSAGE_ID_DIRECTSR_SUPERRES_UPSCALER_EXECUTE_INVALID_CAMERA_JITTER = 1413,
+    D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_WARNING = 1414,
+    D3D12_MESSAGE_ID_GUID_TEXTURE_LAYOUT_UNSUPPORTED = 1415,
+    D3D12_MESSAGE_ID_RESOLVE_ENCODER_INPUT_PARAM_LAYOUT_INVALID_PARAMETERS = 1416,
+    D3D12_MESSAGE_ID_INVALID_BARRIER_ACCESS = 1417,
+    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INSTANCE_COUNT_ZERO = 1418,
+    D3D12_MESSAGE_ID_DESCRIPTOR_HEAP_NOT_SET_BEFORE_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1419,
+    D3D12_MESSAGE_ID_DIFFERENT_DESCRIPTOR_HEAP_SET_AFTER_ROOT_SIGNATURE_WITH_DIRECTLY_INDEXED_FLAG = 1420,
+    D3D12_MESSAGE_ID_APPLICATION_SPECIFIC_DRIVER_STATE_NOT_SUPPORTED = 1421,
+    D3D12_MESSAGE_ID_RENDER_TARGET_OR_DEPTH_STENCIL_RESOUCE_NOT_INITIALIZED = 1422,
+    D3D12_MESSAGE_ID_BYTECODE_VALIDATION_ERROR = 1423,
+    D3D12_MESSAGE_ID_D3D12_MESSAGES_END  
+} D3D12_MESSAGE_ID;
+
+typedef struct D3D12_MESSAGE
+{
+    D3D12_MESSAGE_CATEGORY  Category;
+    D3D12_MESSAGE_SEVERITY  Severity;
+    D3D12_MESSAGE_ID        ID;
+    [annotation("_Field_size_(DescriptionByteLength)")] const char*             pDescription;
+    SIZE_T                  DescriptionByteLength;
+} D3D12_MESSAGE;
+
+typedef struct D3D12_INFO_QUEUE_FILTER_DESC
+{
+    UINT                    NumCategories;
+    [annotation("_Field_size_(NumCategories)")] D3D12_MESSAGE_CATEGORY* pCategoryList;
+    UINT                    NumSeverities;
+    [annotation("_Field_size_(NumSeverities)")] D3D12_MESSAGE_SEVERITY* pSeverityList;
+    UINT                    NumIDs;
+    [annotation("_Field_size_(NumIDs)")] D3D12_MESSAGE_ID*       pIDList;
+} D3D12_INFO_QUEUE_FILTER_DESC;
+
+// To use, memset to 0, then fill in what you need.
+typedef struct D3D12_INFO_QUEUE_FILTER
+{
+    D3D12_INFO_QUEUE_FILTER_DESC AllowList;
+    D3D12_INFO_QUEUE_FILTER_DESC DenyList;
+} D3D12_INFO_QUEUE_FILTER;
+
+//=============================================================================
+// ID3D12InfoQueue
+//
+// Logs D3D12 Messages.
+// This interface can be queried from ID3D12Device, as long as the device
+// was created with the debug layer.
+//
+//
+cpp_quote("#define D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
+[uuid(0742a90b-c387-483f-b946-30a7e4e61458), object, local, pointer_default(unique)]
+interface ID3D12InfoQueue
+    : IUnknown
+{
+    //=========================================================================
+    // Methods for configuring how much data is stored in the queue.
+
+    // SetMessageCountLimit()
+    // This sets how many messages are stored.  When the queue is full,
+    // new messages coming in push old messages out.
+    // Passing -1 to SetMessageCountLimit means the queue has
+    // unlimited size (go until out of memory or ClearStoredMessages()).
+    // The default message count size is
+    // D3D12_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
+    // Returns S_OK or E_INVALIDARG.
+    HRESULT SetMessageCountLimit([annotation("_In_")]  UINT64 MessageCountLimit);
+
+    // ClearStoredMessages
+    void    ClearStoredMessages();
+
+    //=========================================================================
+    // Methods for retrieving data or statistics from the queue.
+
+    // GetMessage()
+    // Retrieves messages, one at a time, from the queue which pass any
+    // retrieval filter currently defined.  If there is no retrieval filter,
+    // all messages can be retrieved.
+    // The MessageIndex parameter is a 0 based index into the results passing
+    // the filter.  The number of results is returned by
+    // GetNumStoredMessagesAllowedByRetrievalFilter().
+    //
+    // Note this does not remove the message from the queue.
+    //
+    // pMessageByteLength inputs the size of the buffer passed in via
+    // pMessage, and outputs the size of the message.  pMessage can be NULL
+    // when the size of the required buffer is being queried (return S_FALSE).
+    //
+    // NOTE: The returned buffer pMessage is NOT just the size of D3D12_MESSAGE,
+    // it includes extra memory after the D3D12_MESSAGE for storing the string
+    // description, which is pointed to from within D3D12_MESSAGE.  Therefore
+    // applications should check the size needed for pMessage as described above.
+    //
+    // Watch out for thread safety when making consecutive calls first to
+    // determine the buffer size required and then to pass in the buffer and
+    // retrieve the message, and also between calling
+    // GetNumStoredMessagesAllowedByRetrievalFilter() and enumerating through
+    // the results via GetMessagE().
+    //
+    // Returns: S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY.
+    HRESULT GetMessage(
+        [annotation("_In_")]    UINT64  MessageIndex,
+        [annotation("_Out_writes_bytes_opt_(*pMessageByteLength)")] D3D12_MESSAGE* pMessage,
+        [annotation("_Inout_")] SIZE_T*  pMessageByteLength);
+
+    // GetNumMessagesAllowedByStorageFilter()
+    // Returns how many messages sent to the queue passed
+    // whatever storage filter was active upon receipt of
+    // the message.
+    // This can be a larger value than the message count limit,
+    // returned by GetMessageCountLimit(), since old messages are discarded
+    // when the queue is full to prevent overflow.
+    UINT64  GetNumMessagesAllowedByStorageFilter();
+
+    // GetNumMessagesDeniedByStorageFilter()
+    UINT64  GetNumMessagesDeniedByStorageFilter();
+
+    // GetNumStoredMessages()
+    // Returns how many messages are currently stored in the queue.
+    UINT64  GetNumStoredMessages();
+
+    // GetNumStoredMessagesAllowedByRetrievalFilter()
+    // Returns how many messages that are currently in the queue
+    // pass any retrieval filter that is currently set.
+    // The MessageIndex parameter to GetMessage() indexes
+    // an array of this many results.
+    UINT64  GetNumStoredMessagesAllowedByRetrievalFilter();
+
+    // GetNumMessagesDiscardedByMessageCountLimit()
+    UINT64  GetNumMessagesDiscardedByMessageCountLimit();
+
+    // GetMessageCountLimit
+    // This is how many messages can be stored in the queue.
+    // When the queue is full, new messages coming in push old messages out.
+    // -1 means there is no limit.
+    UINT64  GetMessageCountLimit();
+
+    //=========================================================================
+    // Methods for filtering what gets stored in the queue
+
+    // AddStorageFilterEntries()
+    // Adds to the existing entries at top of stack
+    // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
+    HRESULT AddStorageFilterEntries(
+        [annotation("_In_")]   D3D12_INFO_QUEUE_FILTER* pFilter);
+
+    // GetStorageFilter()
+    // Gets all entries at top of stack.
+    // The application must allocate the output buffer.  The size required can be
+    // queried by passing null for pFilter and looking at the returned
+    // pFilterByteLength (HRESULT is S_FALSE). Note that D3D12_INFO_QUEUE_FILTER contains
+    // pointers - these will point to locations within the same
+    // contiguous buffer - *pFilterByteLength is the total storage needed for all
+    // data.  So the application needs to only allocate/free the memory for pFilter.
+    // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
+    HRESULT GetStorageFilter(
+        [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
+        [annotation("_Inout_")] SIZE_T* pFilterByteLength);
+
+    // ClearStorageFilter()
+    // Clears filter at the top of the stack (if there is one)
+    void    ClearStorageFilter();
+
+    // PushEmptyStorageFilter()
+    // Push an empty storage filter on the stack to allow local filtering changes.
+    // For convenience, this is automatically called by SetStorageFilter()
+    // if the stack is empty.  Thus if the stack is not needed, filters can be
+    // defined without ever bothering to push or pop.
+    // Returns S_OK or E_OUTOFMEMORY
+    HRESULT PushEmptyStorageFilter();
+
+    // PushCopyOfStorageFilter()
+    // Push a copy of the current filter so that local modifications can be made
+    // starting from what currently exists.
+    // Returns S_OK or E_OUTOFMEMORY
+    HRESULT PushCopyOfStorageFilter();
+
+    // PushStorageFilter()
+    // Push a filter passed as a parameter onto the stack.  This is
+    // just a helper for calling PushEmptyStorageFilter() followed
+    // by AddStorageFilterEntries()
+    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
+    HRESULT PushStorageFilter(
+        [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
+
+    // PopStorageFilter()
+    // Pop the current storage filter off the stack (if there is one)
+    void    PopStorageFilter();
+
+    // GetStorageFilterStackSize()
+    UINT    GetStorageFilterStackSize();
+
+    //=========================================================================
+    // Methods for filtering what gets read out of the queue by GetMessage().
+
+    // AddRetrievalFilterEntries()
+    // Adds to the existing entries at top of stack
+    // Returns: S_OK, E_INVALIDARG or E_OUTOFMEMORY.
+    HRESULT AddRetrievalFilterEntries(
+        [annotation("_In_")]   D3D12_INFO_QUEUE_FILTER* pFilter);
+
+    // GetRetrievalFilter()
+    // Gets all entries at top of stack.
+    // The application must allocate the output buffer.  The size required can be
+    // queried by passing null for pFilter and looking at the returned
+    // pFilterByteLength (HRESULT is S_FALSE).  Note that D3D12_INFO_QUEUE_FILTER contains
+    // pointers - these will point to locations within the same
+    // contiguous buffer - *pFilterByteLength is the total storage needed for all
+    // data.  So the application needs to only allocate/free the memory for pFilter.
+    // Returns S_OK, S_FALSE, E_INVALIDARG or E_OUTOFMEMORY
+    HRESULT GetRetrievalFilter(
+        [annotation("_Out_writes_bytes_opt_(*pFilterByteLength)")] D3D12_INFO_QUEUE_FILTER* pFilter,
+        [annotation("_Inout_")] SIZE_T* pFilterByteLength);
+
+    // ClearRetrievalFilter()
+    // Clears filter at the top of the stack (if there is one)
+    void    ClearRetrievalFilter();
+
+    // PushEmptyRetrievalFilter()
+    // Push an empty storage filter on the stack to allow local filtering changes.
+    // For convenience, this is automatically called by SetRetrievalFilter()
+    // if the stack is empty.  Thus if the stack is not needed, filters can be
+    // defined without ever bothering to push or pop.
+    // Returns S_OK or E_OUTOFMEMORY
+    HRESULT PushEmptyRetrievalFilter();
+
+    // PushCopyOfRetrievalFilter()
+    // Push a copy of the current filter so that local modifications can be made
+    // starting from what currently exists.
+    // Returns S_OK or E_OUTOFMEMORY
+    HRESULT PushCopyOfRetrievalFilter();
+
+    // PushRetrievalFilter()
+    // Push a filter passed as a parameter onto the stack.  This is
+    // just a helper for calling PushEmptyRetrievalFilter() followed
+    // by AddRetrievalFilterEntries()
+    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY.
+    HRESULT PushRetrievalFilter(
+        [annotation("_In_")] D3D12_INFO_QUEUE_FILTER* pFilter);
+
+    // PopRetrievalFilter()
+    // Pop the current storage filter off the stack (if there is one)
+    void    PopRetrievalFilter();
+
+    // GetRetrievalFilterStackSize()
+    UINT    GetRetrievalFilterStackSize();
+
+    //=========================================================================
+    //  Methods for adding entries to the queue.
+
+    // AddMessage()
+    // This is used by D3D12 components to log messages.  Nothing stops
+    // applications from calling this, but it isn’t particularly useful.
+    // If an application wishes to insert custom strings into the queue,
+    // AddApplicationMessage() below is suggested.  See below.
+    //
+    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
+    HRESULT AddMessage(
+        [annotation("_In_")]    D3D12_MESSAGE_CATEGORY Category,
+        [annotation("_In_")]    D3D12_MESSAGE_SEVERITY Severity,
+        [annotation("_In_")]    D3D12_MESSAGE_ID       ID,
+        [annotation("_In_")]    LPCSTR                pDescription);
+
+    // AddApplicationMessage()
+    // This is a convenience for applications that want
+    // to insert strings of their own into the queue, perhaps to log issues
+    // of its own, or to mark out points in time in the queue.  This
+    // has the same effect as calling AddMessage() above with the
+    // following settings:
+    //          Category = D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED
+    //          Severity = <app selects from D3D12_MESSAGE_SEVERITY>
+    //          ID       = D3D12_MESSAGE_ID_STRING_FROM_APPLICATION
+    //          pDescription = <application provided string>
+    //
+    // Returns S_OK, E_INVALIDARG or E_OUTOFMEMORY
+    HRESULT AddApplicationMessage(
+        [annotation("_In_")] D3D12_MESSAGE_SEVERITY Severity,
+        [annotation("_In_")] LPCSTR                pDescription);
+
+    //=========================================================================
+    //  Methods for breaking on errors that pass the storage filter.
+    HRESULT SetBreakOnCategory(
+        [annotation("_In_")]    D3D12_MESSAGE_CATEGORY Category,
+        [annotation("_In_")]    BOOL bEnable);
+    HRESULT SetBreakOnSeverity(
+        [annotation("_In_")]    D3D12_MESSAGE_SEVERITY Severity,
+        [annotation("_In_")]    BOOL bEnable);
+    HRESULT SetBreakOnID(
+        [annotation("_In_")]    D3D12_MESSAGE_ID ID,
+        [annotation("_In_")]    BOOL bEnable);
+
+    BOOL GetBreakOnCategory(
+        [annotation("_In_")]    D3D12_MESSAGE_CATEGORY Category);
+    BOOL GetBreakOnSeverity(
+        [annotation("_In_")]    D3D12_MESSAGE_SEVERITY Severity);
+    BOOL GetBreakOnID(
+        [annotation("_In_")]    D3D12_MESSAGE_ID ID);
+
+    //=========================================================================
+    //  Methods for globally muting debug spte from the InfoQueue
+    void SetMuteDebugOutput(
+        [annotation("_In_")]    BOOL bMute);
+    BOOL GetMuteDebugOutput();
+};
+
+typedef enum D3D12_MESSAGE_CALLBACK_FLAGS
+{
+    D3D12_MESSAGE_CALLBACK_FLAG_NONE = 0x00,
+    D3D12_MESSAGE_CALLBACK_IGNORE_FILTERS = 0x01,
+
+} D3D12_MESSAGE_CALLBACK_FLAGS;
+
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS(D3D12_MESSAGE_CALLBACK_FLAGS)")
+
+typedef void (__stdcall *D3D12MessageFunc) (D3D12_MESSAGE_CATEGORY Category,
+    D3D12_MESSAGE_SEVERITY Severity,
+    D3D12_MESSAGE_ID ID,
+    LPCSTR pDescription,
+    void* pContext);
+
+[ uuid( 2852dd88-b484-4c0c-b6b1-67168500e600 ), object, local, pointer_default( unique ) ]
+interface ID3D12InfoQueue1
+    : ID3D12InfoQueue
+{
+    HRESULT RegisterMessageCallback(
+        [annotation("_In_")]    D3D12MessageFunc CallbackFunc, 
+        [annotation("_In_")]    D3D12_MESSAGE_CALLBACK_FLAGS CallbackFilterFlags,
+        [annotation("_Inout_")] void* pContext, 
+        [annotation("_Inout_")] DWORD *pCallbackCookie);
+
+    HRESULT UnregisterMessageCallback(
+        [annotation("_In_")]    DWORD CallbackCookie);
+};
+
+
+
+cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
+#pragma endregion
+
+cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Debug1,0xaffaa4ca,0x63fe,0x4d8e,0xb8,0xad,0x15,0x90,0x00,0xaf,0x43,0x04);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Debug2,0x93a665c4,0xa3b2,0x4e5d,0xb6,0x92,0xa2,0x6a,0xe1,0x4e,0x33,0x74);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Debug3,0x5cf4e58f,0xf671,0x4ff1,0xa5,0x42,0x36,0x86,0xe3,0xd1,0x53,0xd1);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Debug4,0x014b816e,0x9ec5,0x4a2f,0xa8,0x45,0xff,0xbe,0x44,0x1c,0xe1,0x3a);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Debug5,0x548d6b12,0x09fa,0x40e0,0x90,0x69,0x5d,0xcd,0x58,0x9a,0x52,0xc9);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12Debug6,0x82a816d6,0x5d01,0x4157,0x97,0xd0,0x49,0x75,0x46,0x3f,0xd1,0xed);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice1,0xa9b71770,0xd099,0x4a65,0xa6,0x98,0x3d,0xee,0x10,0x02,0x0f,0x88);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice2,0x60eccbc1,0x378d,0x4df1,0x89,0x4c,0xf8,0xac,0x5c,0xe4,0xd7,0xdd);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue1,0x16be35a2,0xbfd6,0x49f2,0xbc,0xae,0xea,0xae,0x4a,0xff,0x86,0x2d);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList1,0x102ca951,0x311b,0x4b01,0xb1,0x1f,0xec,0xb8,0x3e,0x06,0x1b,0x37);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList2,0xaeb575cf,0x4e06,0x48be,0xba,0x3b,0xc4,0x50,0xfc,0x96,0x65,0x2e);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList3,0x197d5e15,0x4d37,0x4d34,0xaf,0x78,0x72,0x4c,0xd7,0x0f,0xdb,0x1f);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12SharingContract,0x0adf7d52,0x929c,0x4e61,0xad,0xdb,0xff,0xed,0x30,0xde,0x66,0xef);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12ManualWriteTrackingResource,0x86ca3b85,0x49ad,0x4b6e,0xae,0xd5,0xed,0xdb,0x18,0x54,0x0f,0x41);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue1,0x2852dd88,0xb484,0x4c0c,0xb6,0xb1,0x67,0x16,0x85,0x00,0xe6,0x00);" )

+ 4 - 1
ThirdParty/AgilitySdk/include/d3d12video.h

@@ -7563,7 +7563,10 @@ enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
         D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED	= 0x100,
         D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST	= 0x200,
         D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED	= 0x800,
-        D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED	= 0x1000
+        D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED	= 0x1000,
+        D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED	= 0x2000,
+        D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED	= 0x4000,
+        D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED	= 0x8000
     } 	D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
 
 DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)

+ 3172 - 3168
ThirdParty/AgilitySdk/include/d3d12video.idl

@@ -1,3168 +1,3172 @@
-/*-------------------------------------------------------------------------------------
- *
- * Copyright (c) Microsoft Corporation
- * Licensed under the MIT license
- *
- *-------------------------------------------------------------------------------------*/
-import "oaidl.idl";
-import "ocidl.idl";
-
-import "dxgicommon.idl";
-import "d3d12.idl";
-
-cpp_quote("#include <winapifamily.h>")
-
-#pragma region App Family
-cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
-
-typedef enum D3D12_VIDEO_FIELD_TYPE
-{
-    D3D12_VIDEO_FIELD_TYPE_NONE = 0,
-    D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
-    D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
-} D3D12_VIDEO_FIELD_TYPE;
-
-typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
-{
-    D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
-    D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
-    D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
-    D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
-    D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
-} D3D12_VIDEO_FRAME_STEREO_FORMAT;
-
-typedef struct D3D12_VIDEO_FORMAT
-{
-    DXGI_FORMAT Format;
-    DXGI_COLOR_SPACE_TYPE ColorSpace;
-} D3D12_VIDEO_FORMAT;
-
-typedef struct D3D12_VIDEO_SAMPLE
-{
-    UINT Width;
-    UINT Height;
-    D3D12_VIDEO_FORMAT Format;
-} D3D12_VIDEO_SAMPLE;
-
-typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
-{
-    D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
-    D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
-} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
-
-typedef enum D3D12_FEATURE_VIDEO
-{
-    D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
-    D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
-    D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
-    D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
-    D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
-    D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
-    D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
-    D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
-    D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
-    D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
-    D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
-    D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
-    D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,     
-    D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,   
-    D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20, 
-    D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
-    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22, 
-    D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23, 
-    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
-    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25, 
-    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26, 
-    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27, 
-    D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
-    D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
-    D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
-    D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
-    D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
-    D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
-    D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
-    D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
-    D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
-    D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
-    D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
-    D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
-    D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
-    D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
-    D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
-    D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
-    D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
-    D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
-    D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
-    D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
-
-} D3D12_FEATURE_VIDEO;
-
-typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
-{
-    D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
-} D3D12_BITSTREAM_ENCRYPTION_TYPE;
-
-typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
-{
-    GUID DecodeProfile;
-    D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
-    D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
-} D3D12_VIDEO_DECODE_CONFIGURATION;
-
-typedef struct D3D12_VIDEO_DECODER_DESC
-{
-    UINT NodeMask;
-    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
-} D3D12_VIDEO_DECODER_DESC;
-
-typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
-{
-    UINT NodeMask;
-    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
-    UINT DecodeWidth;
-    UINT DecodeHeight;
-    DXGI_FORMAT Format;
-    DXGI_RATIONAL FrameRate;
-    UINT BitRate;
-    UINT MaxDecodePictureBufferCount;
-} D3D12_VIDEO_DECODER_HEAP_DESC;
-
-typedef struct D3D12_VIDEO_SIZE_RANGE
-{
-    UINT MaxWidth;
-    UINT MaxHeight;
-    UINT MinWidth;
-    UINT MinHeight;
-} D3D12_VIDEO_SIZE_RANGE;
-
-typedef enum  D3D12_VIDEO_PROCESS_FILTER
-{
-    D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
-    D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
-    D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
-    D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
-    D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
-    D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
-    D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
-    D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
-} D3D12_VIDEO_PROCESS_FILTER;
-
-typedef enum  D3D12_VIDEO_PROCESS_FILTER_FLAGS
-{
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
-    D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
-
-} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )")
-
-typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
-{
-    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
-    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
-    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
-
-} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )")
-
-typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
-{
-    BOOL Enable;
-    FLOAT Alpha;
-} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
-
-typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
-{
-    BOOL Enable;
-    FLOAT Lower;
-    FLOAT Upper;
-} D3D12_VIDEO_PROCESS_LUMA_KEY;
-
-typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
-{
-    DXGI_FORMAT Format;
-    DXGI_COLOR_SPACE_TYPE ColorSpace;
-    DXGI_RATIONAL SourceAspectRatio;
-    DXGI_RATIONAL DestinationAspectRatio;
-    DXGI_RATIONAL FrameRate;
-    D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
-    D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
-    BOOL EnableOrientation;
-    D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
-    D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
-    D3D12_VIDEO_FIELD_TYPE FieldType;
-    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
-    BOOL EnableAlphaBlending;
-    D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
-    UINT NumPastFrames;
-    UINT NumFutureFrames;
-    BOOL EnableAutoProcessing;
-} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
-
-typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
-{
-    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
-    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
-    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
-    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
-} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
-
-typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
-{
-    DXGI_FORMAT Format;
-    DXGI_COLOR_SPACE_TYPE ColorSpace;
-    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
-    UINT AlphaFillModeSourceStreamIndex;
-    FLOAT BackgroundColor[4];
-    DXGI_RATIONAL FrameRate;
-    BOOL EnableStereo;
-} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
-
-[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
-interface ID3D12VideoDecoderHeap
-    : ID3D12Pageable
-{
-    D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
-}
-
-[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
-interface ID3D12VideoDevice
-    : IUnknown
-{
-    HRESULT CheckFeatureSupport(
-        D3D12_FEATURE_VIDEO FeatureVideo,
-        [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
-        UINT FeatureSupportDataSize
-        );
-
-    HRESULT CreateVideoDecoder(
-        [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
-        );
-
-    HRESULT CreateVideoDecoderHeap(
-        [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
-        );
-
-    HRESULT CreateVideoProcessor(
-        UINT NodeMask,
-        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
-        UINT NumInputStreamDescs,
-        [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
-        );
-}
-
-[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
-interface ID3D12VideoDecoder
-    : ID3D12Pageable
-{
-    D3D12_VIDEO_DECODER_DESC GetDesc();
-}
-
-typedef enum D3D12_VIDEO_DECODE_TIER
-{
-    D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
-    D3D12_VIDEO_DECODE_TIER_1 = 1,
-    D3D12_VIDEO_DECODE_TIER_2 = 2,
-    D3D12_VIDEO_DECODE_TIER_3 = 3,
-} D3D12_VIDEO_DECODE_TIER;
-
-typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
-{
-    D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
-    D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
-
-} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )")
-
-typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
-{
-    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE                                      = 0x0,
-    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED     = 0x1,
-    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED                 = 0x2,
-    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED       = 0x4,
-    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME  = 0x8,
-
-} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )")
-
-typedef enum D3D12_VIDEO_DECODE_STATUS
-{
-    D3D12_VIDEO_DECODE_STATUS_OK = 0,
-    D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
-    D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
-    D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
-    D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
-} D3D12_VIDEO_DECODE_STATUS;
-
-typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
-{
-    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
-    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
-    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
-    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3,
-} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
-{
-    UINT NodeIndex;                                            // input
-    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;            // input
-    UINT Width;                                                // input
-    UINT Height;                                               // input
-    DXGI_FORMAT DecodeFormat;                                  // input
-    DXGI_RATIONAL FrameRate;                                   // input
-    UINT BitRate;                                              // input
-    D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;             // output
-    D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
-    D3D12_VIDEO_DECODE_TIER DecodeTier;                        // output
-} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
-{
-    UINT NodeIndex;                                             // input
-    UINT ProfileCount;                                          // output
-} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
-{
-    UINT NodeIndex;                                                   // input
-    UINT ProfileCount;                                                // input
-    [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles;  // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
-} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
-{
-    UINT NodeIndex;                                                             // input
-    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;                             // input
-    UINT FormatCount;                                                           // output
-} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
-{
-    UINT NodeIndex;                                                              // input
-    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;                              // input
-    UINT FormatCount;                                                            // input
-    [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats;  // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
-} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
-{
-    BOOL IOCoherent;
-} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
-
-typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
-{
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1, 
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
-    
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1, 
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
-
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
-} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT; 
-
-typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
-{
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
-
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U), 
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
-
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G), 
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
-
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
-} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS; 
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )")
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
-{
-    UINT NodeIndex;                                                       // in
-    GUID DecodeProfile;                                                   // in
-    UINT Width;                                                           // in
-    UINT Height;                                                          // in
-    DXGI_FORMAT DecodeFormat;                                             // in
-    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;              // out
-    UINT BinCount;                                                        // out
-    UINT CounterBitDepth;                                                 // out
-} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
-
-typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
-{
-    D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
-    D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
-
-} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )")
-
-typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
-{
-    D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
-    D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
-    D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
-
-} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )")
-
-typedef struct D3D12_VIDEO_SCALE_SUPPORT
-{
-    D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
-    D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
-} D3D12_VIDEO_SCALE_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
-{
-    UINT NodeIndex;                                             // input
-    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;             // input
-    D3D12_VIDEO_SAMPLE DecodeSample;                            // input
-    D3D12_VIDEO_FORMAT OutputFormat;                            // input
-    DXGI_RATIONAL FrameRate;                                    // input
-    UINT BitRate;                                               // input
-    D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;   // output
-    D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;                     // output
-} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
-{
-    D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;         // input
-    UINT64 MemoryPoolL0Size;                                    // output
-    UINT64 MemoryPoolL1Size;                                    // output
-} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
-{
-    UINT NodeMask;
-    const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc;    // input
-    UINT NumInputStreamDescs;                                           // input
-    const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;     // input
-    UINT64 MemoryPoolL0Size;                                            // output
-    UINT64 MemoryPoolL1Size;                                            // output
-} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
-
-typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
-{
-    UINT64 Status;                      // see D3D12_VIDEO_DECODE_STATUS 
-    UINT64 NumMacroblocksAffected;
-    DXGI_RATIONAL FrameRate;
-    UINT BitRate;
-} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
-
-typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
-{
-    D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
-    UINT Size;
-    [annotation("_Field_size_bytes_full_(Size)")] void *pData;
-} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
-
-typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
-{
-    UINT NumTexture2Ds;
-    [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
-    [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
-    [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
-} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
-
-typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
-{
-    ID3D12Resource* pBuffer;
-    UINT64 Offset;
-    UINT64 Size;
-} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
-
-typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
-{
-    BOOL Enable;
-    ID3D12Resource* pReferenceTexture2D;
-    UINT ReferenceSubresource;
-    DXGI_COLOR_SPACE_TYPE OutputColorSpace;
-    DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
-} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
-
-typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
-{
-    UINT NumFrameArguments;
-    D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
-    D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
-    D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
-    ID3D12VideoDecoderHeap *pHeap;
-} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
-
-typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
-{
-    ID3D12Resource* pOutputTexture2D;
-    UINT OutputSubresource;
-    D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
-} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
-
-[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
-interface ID3D12VideoProcessor
-    : ID3D12Pageable
-{
-    UINT GetNodeMask();
-    UINT GetNumInputStreamDescs();
-    HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
-    D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
-}
-
-typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
-{
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
-    D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
-
-} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )")
-
-typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
-{
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
-
-} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )")
-
-typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
-{
-    D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
-    D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
-    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
-    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
-    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
-    D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
-    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
-    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
-} D3D12_VIDEO_PROCESS_ORIENTATION;
-
-typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
-{
-    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
-    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
-    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
-
-} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )")
-
-typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
-{
-    INT   Minimum;
-    INT   Maximum;
-    INT   Default;
-    FLOAT Multiplier;
-} D3D12_VIDEO_PROCESS_FILTER_RANGE;
-
-typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
-{
-    D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
-    D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
-
-} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )")
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
-{
-    UINT NodeIndex;                                                                         // input
-    D3D12_VIDEO_SAMPLE InputSample;                                                         // input
-    D3D12_VIDEO_FIELD_TYPE InputFieldType;                                                  // input
-    D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;                                      // input
-    DXGI_RATIONAL InputFrameRate;                                                           // input
-    D3D12_VIDEO_FORMAT OutputFormat;                                                        // input
-    D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;                                     // input
-    DXGI_RATIONAL OutputFrameRate;                                                          // input
-    D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;                                         // output
-    D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;                                                 // output
-    D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;                                       // output
-    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;                               // output
-    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;                        // output
-    D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;                                         // output
-    D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS];   // output
-} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
-{
-    UINT NodeIndex;                                             // input
-    UINT MaxInputStreams;                                       // output
-} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
-{
-    UINT NodeIndex;                                             // input
-    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;      // input
-    D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;                   // input
-    D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;           // input
-    DXGI_RATIONAL InputFrameRate;                               // input
-    DXGI_RATIONAL OutputFrameRate;                              // input 
-    BOOL EnableAutoProcessing;                                  // input
-    UINT PastFrames;                                            // output
-    UINT FutureFrames;                                          // output
-} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
-
-typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
-{
-    UINT NumPastFrames;
-    ID3D12Resource **ppPastFrames;
-    UINT *pPastSubresources;
-    UINT NumFutureFrames;
-    ID3D12Resource **ppFutureFrames;
-    UINT *pFutureSubresources;
-} D3D12_VIDEO_PROCESS_REFERENCE_SET;
-
-typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
-{
-    D3D12_RECT SourceRectangle;
-    D3D12_RECT DestinationRectangle;
-    D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
-} D3D12_VIDEO_PROCESS_TRANSFORM;
-
-typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
-{
-    UINT OutputIndex;
-    UINT InputFrameOrField;
-} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
-
-typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
-{
-    ID3D12Resource *pTexture2D;
-    UINT Subresource;
-    D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
-} D3D12_VIDEO_PROCESS_INPUT_STREAM;
-
-typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
-{
-    D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
-    D3D12_VIDEO_PROCESS_TRANSFORM Transform;
-    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
-    D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
-    INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
-    D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
-} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
-
-typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
-{
-    ID3D12Resource* pTexture2D;
-    UINT Subresource;
-} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
-
-typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
-{
-    D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
-    D3D12_RECT TargetRectangle;
-} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
-
-[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
-interface ID3D12VideoDecodeCommandList
-    : ID3D12CommandList
-{
-    HRESULT Close();
-
-    HRESULT Reset(
-        [annotation("_In_")] ID3D12CommandAllocator* pAllocator
-        );
-
-    void ClearState();
-
-    void ResourceBarrier(
-        [annotation("_In_")] UINT NumBarriers,
-        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
-        );
-
-    void DiscardResource(
-        [annotation("_In_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
-        );
-
-    void BeginQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void EndQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void ResolveQueryData(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT StartIndex,
-        [annotation("_In_")] UINT NumQueries,
-        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
-        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
-        );
-
-    void SetPredication(
-        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
-        [annotation("_In_")] UINT64 AlignedBufferOffset,
-        [annotation("_In_")] D3D12_PREDICATION_OP Operation
-        );
-
-    void SetMarker(
-        UINT Metadata,
-        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
-        UINT Size);
-
-    void BeginEvent(
-        UINT Metadata,
-        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
-        UINT Size);
-
-    void EndEvent();
-
-    void DecodeFrame(
-        [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
-        [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
-        [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
-        );
-
-    void WriteBufferImmediate(
-        UINT Count,
-        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
-        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
-        );
-}
-
-[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
-interface ID3D12VideoProcessCommandList
-    : ID3D12CommandList
-{
-    HRESULT Close();
-
-    HRESULT Reset(
-        [annotation("_In_")] ID3D12CommandAllocator* pAllocator
-        );
-
-    void ClearState();
-
-    void ResourceBarrier(
-        [annotation("_In_")] UINT NumBarriers,
-        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
-        );
-
-    void DiscardResource(
-        [annotation("_In_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
-        );
-
-    void BeginQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void EndQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void ResolveQueryData(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT StartIndex,
-        [annotation("_In_")] UINT NumQueries,
-        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
-        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
-        );
-
-    void SetPredication(
-        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
-        [annotation("_In_")] UINT64 AlignedBufferOffset,
-        [annotation("_In_")] D3D12_PREDICATION_OP Operation
-        );
-
-    void SetMarker(
-        UINT Metadata,
-        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
-        UINT Size);
-
-    void BeginEvent(
-        UINT Metadata,
-        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
-        UINT Size);
-
-    void EndEvent();
-
-    void ProcessFrames(
-        [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
-        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
-        UINT NumInputStreams,
-        [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
-        );
-
-    void WriteBufferImmediate(
-        UINT Count,
-        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
-        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
-        );
-}
-
-typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
-{
-    UINT64 Offset;
-    ID3D12Resource* pBuffer;
-} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
-
-typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
-{
-    BOOL Enable;
-    ID3D12Resource* pReferenceTexture2D;
-    UINT ReferenceSubresource;
-    DXGI_COLOR_SPACE_TYPE OutputColorSpace;
-    DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
-    UINT OutputWidth;
-    UINT OutputHeight;
-} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
-
-typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
-{
-    ID3D12Resource* pOutputTexture2D;
-    UINT OutputSubresource;
-    D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
-    D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
-} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
-
-[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
-interface ID3D12VideoDecodeCommandList1
-    : ID3D12VideoDecodeCommandList
-{
-    void DecodeFrame1(
-        [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
-        [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
-        [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
-        );
-}
-
-typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
-{
-    D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
-    D3D12_VIDEO_PROCESS_TRANSFORM Transform;
-    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
-    D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
-    INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
-    D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
-    D3D12_VIDEO_FIELD_TYPE FieldType;
-} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
-
-[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
-interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
-{
-    void ProcessFrames1(
-        [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
-        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
-        UINT NumInputStreams,
-        [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
-        );
-}
-
-typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
-{
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8       = 0,
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16     = 1,
-} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
-
-typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
-{
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE  = 0,
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8        = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16      = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
-
-} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )" )
-
-typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
-{
-    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL       = 0,
-} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
-
-typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
-{
-    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE           = 0,
-    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL    = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
-
-} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
-cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )" )
-
-// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
-typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
-{
-    UINT NodeIndex;                                                     // input
-    BOOL VideoDecodeSupport;                                            // output
-    BOOL VideoProcessSupport;                                           // output
-    BOOL VideoEncodeSupport;                                            // output
-} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
-
-// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
-typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
-{
-    UINT NodeIndex;                                                                 // input
-    DXGI_FORMAT InputFormat;                                                        // input
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;            // output
-    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;             // output
-    D3D12_VIDEO_SIZE_RANGE SizeRange;                                               // output
-} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
-
-// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
-typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
-{
-    UINT NodeIndex;                                                     // input
-    DXGI_FORMAT InputFormat;                                            // input
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;           // input
-    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;            // input
-    D3D12_VIDEO_SIZE_RANGE SizeRange;                                   // input
-    BOOL Protected;                                                     // input
-    UINT64 MotionVectorHeapMemoryPoolL0Size;                            // output
-    UINT64 MotionVectorHeapMemoryPoolL1Size;                            // output
-    UINT64 MotionEstimatorMemoryPoolL0Size;                             // output
-    UINT64 MotionEstimatorMemoryPoolL1Size;                             // output
-} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
-
-typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
-{
-    UINT NodeMask;
-    DXGI_FORMAT InputFormat;
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
-    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
-    D3D12_VIDEO_SIZE_RANGE SizeRange;
-    
-} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
-
-[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
-interface ID3D12VideoMotionEstimator
-    : ID3D12Pageable
-{
-    D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
-    
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
-{
-    UINT NodeMask;
-    DXGI_FORMAT InputFormat;
-    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
-    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
-    D3D12_VIDEO_SIZE_RANGE SizeRange;
-    
-} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
-
-[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
-interface ID3D12VideoMotionVectorHeap
-    : ID3D12Pageable
-{
-    D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
-    
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
-interface ID3D12VideoDevice1
-    : ID3D12VideoDevice
-{
-    HRESULT CreateVideoMotionEstimator(
-        [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
-        );
-
-    HRESULT CreateVideoMotionVectorHeap(
-        [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
-        );
-}
-
-typedef struct D3D12_RESOURCE_COORDINATE
-{
-    // Coordinate values below index pixels.
-    UINT64 X; // Used for buffer, 1D, 2D, 3D
-    UINT Y; // Used for 2D, 3D
-    UINT Z; // Used for 3D
-    UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
-} D3D12_RESOURCE_COORDINATE;
-
-typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
-{
-    ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
-} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
-
-typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
-{
-    ID3D12Resource*                     pInputTexture2D;
-    UINT                                InputSubresourceIndex;
-    ID3D12Resource*                     pReferenceTexture2D;
-    UINT                                ReferenceSubresourceIndex;
-    ID3D12VideoMotionVectorHeap*        pHintMotionVectorHeap;
-} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
-
-typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
-{
-    ID3D12Resource*             pMotionVectorTexture2D;
-    D3D12_RESOURCE_COORDINATE   MotionVectorCoordinate;
-} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
-
-typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
-{
-    ID3D12VideoMotionVectorHeap*                    pMotionVectorHeap;
-    UINT                                            PixelWidth;
-    UINT                                            PixelHeight;
-} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
-
-[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
-interface ID3D12VideoEncodeCommandList
-    : ID3D12CommandList
-{
-    HRESULT Close();
-
-    HRESULT Reset(
-        [annotation("_In_")] ID3D12CommandAllocator* pAllocator
-        );
-
-    void ClearState();
-
-    void ResourceBarrier(
-        [annotation("_In_")] UINT NumBarriers,
-        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
-        );
-
-    void DiscardResource(
-        [annotation("_In_")] ID3D12Resource* pResource,
-        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
-        );
-
-    void BeginQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void EndQuery(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT Index
-        );
-
-    void ResolveQueryData(
-        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
-        [annotation("_In_")] D3D12_QUERY_TYPE Type,
-        [annotation("_In_")] UINT StartIndex,
-        [annotation("_In_")] UINT NumQueries,
-        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
-        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
-        );
-
-    void SetPredication(
-        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
-        [annotation("_In_")] UINT64 AlignedBufferOffset,
-        [annotation("_In_")] D3D12_PREDICATION_OP Operation
-        );
-
-    void SetMarker(
-        UINT Metadata,
-        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
-        UINT Size);
-
-    void BeginEvent(
-        UINT Metadata,
-        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
-        UINT Size);
-
-    void EndEvent();
-
-    void EstimateMotion(
-        [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
-        [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
-        [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
-        );
-    
-    void ResolveMotionVectorHeap(
-        const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
-        const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
-        );
-
-    void WriteBufferImmediate(
-        UINT Count,
-        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
-        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
-        );
-
-    void SetProtectedResourceSession(
-        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
-        );
-}
-
-typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
-{
-    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE                  = 0x0,
-    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED             = 0x1,
-
-} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )")
-
-// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
-{
-    UINT NodeIndex;                                                                 // input
-    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;                                 // input
-    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;                      // output
-} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
-
-// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
-typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
-{
-    UINT NodeIndex;                                                                 // input
-    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;                      // output
-} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
-
-// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
-typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
-{
-    UINT NodeIndex;                                                                 // input
-    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;                      // output
-} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
-
-//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
-typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
-{
-    D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;         // input
-    BOOL Protected;                                             // input
-    UINT64 MemoryPoolL0Size;                                    // output
-    UINT64 MemoryPoolL1Size;                                    // output
-} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
-
-// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
-typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
-{
-    UINT NodeMask;
-    const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc;    // input
-    UINT NumInputStreamDescs;                                           // input
-    const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;     // input
-    BOOL Protected;                                                     // input
-    UINT64 MemoryPoolL0Size;                                            // output
-    UINT64 MemoryPoolL1Size;                                            // output
-} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
-
-typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
-{
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
-} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
-
-typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
-{
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0, 
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3, 
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4, 
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
-} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
-
-typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
-{
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
-} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
-
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )")
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
-{
-    UINT NodeIndex;        // in
-    UINT CommandCount;    // out
-} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
-
-typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
-{
-    GUID CommandId;
-    LPCWSTR Name;
-    D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
-} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
-{
-    UINT NodeIndex;
-    UINT CommandCount;
-    [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
-} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
-{
-    GUID CommandId;                                          // in
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;     // in
-    UINT ParameterCount;                                     // out
-    UINT ParameterPacking;                                   // out
-} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
-
-typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
-{
-    LPCWSTR Name;
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
-} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
-{
-    GUID CommandId;  // in
-    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;  // in
-    UINT ParameterCount; // in
-    [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
-} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
-{
-    UINT NodeIndex;
-    GUID CommandId;
-    [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
-    SIZE_T InputDataSizeInBytes;
-    [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
-    SIZE_T OutputDataSizeInBytes;
-} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
-{
-    UINT NodeIndex;
-    GUID CommandId;
-    [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
-    SIZE_T CreationParametersSizeInBytes;
-    UINT64 MemoryPoolL0Size;                                            // output
-    UINT64 MemoryPoolL1Size;                                            // output
-} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
-
-typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
-{
-    UINT NodeMask;
-    GUID CommandId;
-} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
-
-[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
-interface ID3D12VideoDecoder1
-    : ID3D12VideoDecoder
-{
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
-interface ID3D12VideoDecoderHeap1
-    : ID3D12VideoDecoderHeap
-{
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
-interface ID3D12VideoProcessor1
-    : ID3D12VideoProcessor
-{
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
-interface ID3D12VideoExtensionCommand
-    : ID3D12Pageable
-{
-    D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
-
-    HRESULT GetProtectedResourceSession(
-        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
-        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
-}
-
-[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
-interface ID3D12VideoDevice2
-    : ID3D12VideoDevice1
-{
-    HRESULT CreateVideoDecoder1(
-        [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
-        );
-
-    HRESULT CreateVideoDecoderHeap1(
-        [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
-        );
-
-    HRESULT CreateVideoProcessor1(
-        UINT NodeMask,
-        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
-        UINT NumInputStreamDescs,
-        [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1, 
-        [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
-        );
-
-    HRESULT CreateVideoExtensionCommand(
-        [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,        
-        [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters, 
-        SIZE_T CreationParametersDataSizeInBytes,
-        [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand, 
-        [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
-
-    HRESULT ExecuteExtensionCommand(
-        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
-        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
-        SIZE_T ExecutionParametersSizeInBytes,
-        [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
-        SIZE_T OutputDataSizeInBytes
-        );
-}
-
-[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
-interface ID3D12VideoDecodeCommandList2
-    : ID3D12VideoDecodeCommandList1
-{
-    void SetProtectedResourceSession(
-        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
-        );
-
-    void InitializeExtensionCommand(
-        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
-        [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, 
-        SIZE_T InitializationParametersSizeInBytes);
-
-    void ExecuteExtensionCommand(
-        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
-        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
-        SIZE_T ExecutionParametersSizeInBytes);
-}
-
-[uuid(2aee8c37-9562-42da-8abf-61efeb2e4513), object, local, pointer_default(unique)]
-interface ID3D12VideoDecodeCommandList3
-    : ID3D12VideoDecodeCommandList2
-{
-    void Barrier(
-        UINT32 NumBarrierGroups,
-        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
-        );
-}
-
-[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
-interface ID3D12VideoProcessCommandList2
-    : ID3D12VideoProcessCommandList1
-{
-    
-    void SetProtectedResourceSession(
-        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
-        );
-
-    void InitializeExtensionCommand(
-        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
-        [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, 
-        SIZE_T InitializationParametersSizeInBytes);
-
-    void ExecuteExtensionCommand(
-        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
-        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
-        SIZE_T ExecutionParametersSizeInBytes);
-}
-
-[uuid(1a0a4ca4-9f08-40ce-9558-b411fd2666ff), object, local, pointer_default(unique)]
-interface ID3D12VideoProcessCommandList3
-    : ID3D12VideoProcessCommandList2
-{
-    void Barrier(
-        UINT32 NumBarrierGroups,
-        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
-        );
-}
-
-[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
-interface ID3D12VideoEncodeCommandList1
-    : ID3D12VideoEncodeCommandList
-{
-    void InitializeExtensionCommand(
-        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
-        [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, 
-        SIZE_T InitializationParametersSizeInBytes);
-
-    void ExecuteExtensionCommand(
-        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
-        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
-        SIZE_T ExecutionParametersSizeInBytes);
-}
-
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); ")
-cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);")
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// Video Encoder
-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE
-{
-    D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
-    D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
-    D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2,
-} D3D12_VIDEO_ENCODER_AV1_PROFILE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS
-{   // These values are defined according to the AV1 codec standard spec
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
-    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23,
-} D3D12_VIDEO_ENCODER_AV1_LEVELS;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_TIER
-{
-    D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
-    D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1,
-} D3D12_VIDEO_ENCODER_AV1_TIER;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
-{
-    D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
-    D3D12_VIDEO_ENCODER_AV1_TIER Tier;
-} D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
-{
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000,
-} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE {
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2,
-} D3D12_VIDEO_ENCODER_AV1_TX_MODE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS {
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4),
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST),
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT),
-} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS {
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4,
-} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS {
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP),
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH),
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP),
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR),
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE),
-} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE {
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4,
-} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE {
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8,
-} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS {
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP),
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV),
-} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE {
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3,
-} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE {
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4,
-} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS {
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8,
-} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
-{
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3,
-} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS {
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0, // None is supported, reference warp motion arguments are ignored and is_global syntax is false for all references
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY),
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION),
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM),
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE),
-} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS {
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100,
-} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3];
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4]; // Different for D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE types
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
-    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
-    UINT MaxTemporalLayers;
-    UINT MaxSpatialLayers;
-} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
-{
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3,
-} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS {
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME),
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME),
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME),
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME),
-} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
-{
-    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
-    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1,
-} D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT {
-    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
-    UINT MaxUniqueReferencesPerFrame;
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
-} D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION {
-    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
-    UINT OrderHintBitsMinus1;
-} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
-{
-    UINT IntraDistance;
-    UINT InterFramePeriod;
-} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
-{
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
-    INT TransformationMatrix[8];
-    BOOL InvalidAffineSet; // Valid or invalid on affine set
-} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
-{
-    UINT ReconstructedPictureResourceIndex;
-    UINT TemporalLayerIndexPlus1;
-    UINT SpatialLayerIndexPlus1;
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
-    // Only used if supported in D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS, ignored by driver otherwise
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
-    UINT OrderHint;
-    UINT PictureIndex;
-} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
-{
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000,
-
-} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
-} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
-    UINT64 EnabledFeatures; // D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
-    // For the enabled features in EnabledFeatures, the array below
-    // is indexed by D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE - 1
-    INT64 FeatureValue[8];
-} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
-    UINT64 UpdateMap;
-    UINT64 TemporalUpdate;
-    UINT64 UpdateData;
-    UINT64 NumSegments;
-    D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
-} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
-    UINT SegmentsMapByteSize;
-    UINT8* pSegmentsMap;
-} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
-    UINT64 LoopFilterLevel[2];
-    UINT64 LoopFilterLevelU;
-    UINT64 LoopFilterLevelV;
-    UINT64 LoopFilterSharpnessLevel;
-    UINT64 LoopFilterDeltaEnabled;
-    // loop_filter_delta_update = UpdateRefDelta || UpdateModeDelta
-    UINT64 UpdateRefDelta;
-    INT64 RefDeltas[8];
-    UINT64 UpdateModeDelta;
-    INT64 ModeDeltas[2];
-} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
-    UINT64 DeltaLFPresent;
-    UINT64 DeltaLFMulti;
-    UINT64 DeltaLFRes;
-} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
-    UINT64 BaseQIndex;
-    INT64 YDCDeltaQ;
-    INT64 UDCDeltaQ;
-    INT64 UACDeltaQ;
-    INT64 VDCDeltaQ;
-    INT64 VACDeltaQ;
-    UINT64 UsingQMatrix;
-    UINT64 QMY;
-    UINT64 QMU;
-    UINT64 QMV;
-} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
-    UINT64 DeltaQPresent;
-    UINT64 DeltaQRes;
-} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
-    UINT64 CdefBits;
-    UINT64 CdefDampingMinus3;
-    UINT64 CdefYPriStrength[8];
-    UINT64 CdefUVPriStrength[8];
-    UINT64 CdefYSecStrength[8];
-    UINT64 CdefUVSecStrength[8];
-} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
-{
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
-    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
-    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
-    D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
-    D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
-    UINT SuperResDenominator;
-    UINT OrderHint;
-    UINT PictureIndex;
-    UINT TemporalLayerIndexPlus1;
-    UINT SpatialLayerIndexPlus1;
-    D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
-    UINT ReferenceIndices[7];
-    UINT PrimaryRefFrame;
-    UINT RefreshFrameFlags;
-    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
-    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
-    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
-    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
-    D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
-    UINT QPMapValuesCount;
-    [annotation("_Field_size_full_(QPMapValuesCount)")] INT16* pRateControlQPMap;
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
-} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
-{
-    UINT64 RowCount;
-    UINT64 ColCount;
-    UINT64 RowHeights[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS];
-    UINT64 ColWidths[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS];
-    UINT64 ContextUpdateTileId;
-} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
-{
-    UINT64 CompoundPredictionType; // D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
-    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
-    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
-    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
-    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
-    D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
-    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
-    UINT64 PrimaryRefFrame; // Aligned to 64 for use of post encode metadata with predication
-    UINT64 ReferenceIndices[7]; // Aligned to 64 for use of post encode metadata with predication
-} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
-
-//
-// Rate control API
-//
-
-typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
-{
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP  = 1,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR  = 2,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR  = 3,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4,
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
-
-typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
-{
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
-    UINT ConstantQP_FullIntracodedFrame;
-    UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
-    UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 {
-    UINT ConstantQP_FullIntracodedFrame;
-    UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
-    UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
-    UINT QualityVsSpeed;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
-    UINT InitialQP;
-    UINT MinQP;
-    UINT MaxQP;
-    UINT64 MaxFrameBitSize;
-    UINT64 TargetBitRate;
-    UINT64 VBVCapacity;
-    UINT64 InitialVBVFullness;    
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 {
-    UINT InitialQP;
-    UINT MinQP;
-    UINT MaxQP;
-    UINT64 MaxFrameBitSize;
-    UINT64 TargetBitRate;
-    UINT64 VBVCapacity;
-    UINT64 InitialVBVFullness;    
-    UINT QualityVsSpeed;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
-    UINT InitialQP;
-    UINT MinQP;
-    UINT MaxQP;
-    UINT64 MaxFrameBitSize;
-    UINT64 TargetAvgBitRate;    
-    UINT64 PeakBitRate;
-    UINT64 VBVCapacity;
-    UINT64 InitialVBVFullness;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 {
-    UINT InitialQP;
-    UINT MinQP;
-    UINT MaxQP;
-    UINT64 MaxFrameBitSize;
-    UINT64 TargetAvgBitRate;    
-    UINT64 PeakBitRate;
-    UINT64 VBVCapacity;
-    UINT64 InitialVBVFullness;
-    UINT QualityVsSpeed;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
-    UINT InitialQP;
-    UINT MinQP;
-    UINT MaxQP;
-    UINT64 MaxFrameBitSize;
-    UINT64 TargetAvgBitRate;    
-    UINT64 PeakBitRate;
-    UINT ConstantQualityTarget;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
-{
-    UINT InitialQP;
-    UINT MinQP;
-    UINT MaxQP;
-    UINT64 MaxFrameBitSize;
-    UINT64 TargetAvgBitRate;
-    UINT64 PeakBitRate;
-    UINT ConstantQualityTarget;
-    UINT64 VBVCapacity;
-    UINT64 InitialVBVFullness;
-    UINT QualityVsSpeed;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP {
-    UINT QualityVsSpeed;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
-{
-    UINT DataSize;
-    union
-    {
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP* pConfiguration_CQP;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR* pConfiguration_CBR;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR* pConfiguration_VBR;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR* pConfiguration_QVBR;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1* pConfiguration_CQP1;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1* pConfiguration_CBR1;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1* pConfiguration_VBR1;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1* pConfiguration_QVBR1;
-        const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP* pConfiguration_AbsoluteQPMap;
-    };
-} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
-
-typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
-    DXGI_RATIONAL TargetFrameRate;
-} D3D12_VIDEO_ENCODER_RATE_CONTROL;
-
-//
-// Video Encoder support API
-//
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC
-{
-    D3D12_VIDEO_ENCODER_CODEC_H264  = 0,
-    D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
-    D3D12_VIDEO_ENCODER_CODEC_AV1 = 2,
-} D3D12_VIDEO_ENCODER_CODEC;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
-{
-    UINT NodeIndex;                             // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;            // input
-    BOOL IsSupported;                           // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC; 
-
-typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264
-{
-    D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
-    D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
-    D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2,
-} D3D12_VIDEO_ENCODER_PROFILE_H264;
-
-typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
-{
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
-    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8,
-} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
-{
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_PROFILE_H264* pH264Profile;
-        D3D12_VIDEO_ENCODER_PROFILE_HEVC* pHEVCProfile;
-        D3D12_VIDEO_ENCODER_AV1_PROFILE* pAV1Profile;
-    };
-} D3D12_VIDEO_ENCODER_PROFILE_DESC;
-
-typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264
-{
-    D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
-    D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19,
-} D3D12_VIDEO_ENCODER_LEVELS_H264;
-
-typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC
-{
-    D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
-    D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1,
-} D3D12_VIDEO_ENCODER_TIER_HEVC;
-
-typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
-{
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12,
-} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
-{
-    D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
-    D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
-} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
-{
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_LEVELS_H264* pH264LevelSetting;
-        D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC* pHEVCLevelSetting;
-        D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS* pAV1LevelSetting;
-    };
-} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
-{
-    UINT NodeIndex;                                      // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                     // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;            // input
-    BOOL IsSupported;                                    // output
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel; // output
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel; // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
-{
-    UINT Width;
-    UINT Height;
-} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
-{
-    UINT WidthRatio;
-    UINT HeightRatio;
-} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
-{
-    UINT NodeIndex;                                              // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                             // input
-    UINT ResolutionRatiosCount;                                  // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
-{
-    UINT NodeIndex;                                              // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                             // input
-    UINT ResolutionRatiosCount;                                 // input
-    BOOL IsSupported;                                           // output
-    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported; // output
-    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported; // output
-    UINT ResolutionWidthMultipleRequirement;    // output
-    UINT ResolutionHeightMultipleRequirement;   // output
-    [annotation("_Field_size_full_(ResolutionRatiosCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC* pResolutionRatios;
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
-{
-    UINT NodeIndex;                                    // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                   // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;          // input
-    DXGI_FORMAT Format;                                // input
-    BOOL IsSupported;                                  // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
-{
-    UINT NodeIndex;                                                 // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                                // input
-    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;          // input
-    BOOL IsSupported;                                               // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
-
-typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
-{
-    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
-    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1,
-} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE {
-    UINT NodeIndex;                                                     // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                                    // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                           // input
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;                            // input
-    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;            // input
-    BOOL IsSupported;                                                   // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
-
-typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
-{
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED  = 2,
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,    
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
-} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
-{
-    UINT NodeIndex;                                                         // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                                        // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                               // input
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;                                // input
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;          // input
-    BOOL IsSupported;                                                       // output    
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
-
-typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
-{
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80,
-
-} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
-{
-    BOOL Use128SuperBlocks;
-    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
-    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
-    UINT MinTileRows;
-    UINT MaxTileRows;
-    UINT MinTileCols;
-    UINT MaxTileCols;
-    UINT MinTileWidth;
-    UINT MaxTileWidth;
-    UINT MinTileArea;
-    UINT MaxTileArea;
-    UINT TileSizeBytesMinus1;
-} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
-
-typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT {
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT* pAV1Support;
-    };
-} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
-{
-    UINT NodeIndex; // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                           // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                  // input
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;                   // input
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
-    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution; // input
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport; // input/output
-    BOOL IsSupported; // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
-
-typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
-{
-    D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0,
-} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
-{
-    UINT NodeMask;  
-    D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
-    D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
-    UINT ResolutionsListCount;
-    [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
-} D3D12_VIDEO_ENCODER_HEAP_DESC;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE {
-  D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;          // input
-  BOOL                          IsSupported;       // output
-  UINT64                        MemoryPoolL0Size;  // output
-  UINT64                        MemoryPoolL1Size;  // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
-{
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED),
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES),
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS),
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING),
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES),
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES),
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING),
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
-{
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES  = 0x100,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000, // 2^31 - 32 bit integer enum type
-
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
-    UCHAR max_transform_hierarchy_depth_inter;
-    UCHAR max_transform_hierarchy_depth_intra;
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
-
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
-{
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)")
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
-    UCHAR max_transform_hierarchy_depth_inter;
-    UCHAR max_transform_hierarchy_depth_intra;
-    UINT allowed_diff_cu_chroma_qp_offset_depth_values;
-    UINT allowed_log2_sao_offset_scale_luma_values;
-    UINT allowed_log2_sao_offset_scale_chroma_values;
-    UINT allowed_log2_max_transform_skip_block_size_minus2_values;
-    UINT allowed_chroma_qp_offset_list_len_minus1_values;
-    UINT allowed_cb_qp_offset_list_values[6];
-    UINT allowed_cr_qp_offset_list_values[6];
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264* pH264Support;
-        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC* pHEVCSupport;
-        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1* pHEVCSupport1;
-        D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT* pAV1Support;
-    };
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
-    UINT NodeIndex;                                                      // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                                     // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                            // input
-    BOOL IsSupported;                                                    // output
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;  // input/output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
-    UINT MaxL0ReferencesForP;
-    UINT MaxL0ReferencesForB;
-    UINT MaxL1ReferencesForB;
-    UINT MaxLongTermReferences;   
-    UINT MaxDPBCapacity;
-} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
-    UINT MaxL0ReferencesForP;
-    UINT MaxL0ReferencesForB;
-    UINT MaxL1ReferencesForB;
-    UINT MaxLongTermReferences;   
-    UINT MaxDPBCapacity;
-} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264* pH264Support;
-        D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC* pHEVCSupport;
-        D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT* pAV1Support;
-    };
-} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
-    UINT NodeIndex;                                                      // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                                     // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                            // input
-    BOOL IsSupported;                                                    // output
-    D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;    // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
-
-typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
-{
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
-} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
-{
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,  
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,    
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)")
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 
-{
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;    
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;    
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
-
-typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
-{
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000,
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
-    UCHAR max_transform_hierarchy_depth_inter;
-    UCHAR max_transform_hierarchy_depth_intra;
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
-{
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264* pH264Config;
-        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC* pHEVCConfig;
-        D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION* pAV1Config;
-    };
-} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
-
-typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
-{
-    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
-    UINT IntraRefreshDuration;
-} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
-
-
-typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
-{
-    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
-    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
-    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
-    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
-    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4,
-} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
-{
-    UINT MaxSubregionsNumber;
-    UINT MaxIntraRefreshFrameDuration;
-    UINT SubregionBlockPixelsSize;
-    UINT QPMapRegionPixelsSize;
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
-
-typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
-{
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
-} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
-{    
-    UINT GOPLength;
-    UINT PPicturePeriod;
-    UCHAR pic_order_cnt_type;
-    UCHAR log2_max_frame_num_minus4;
-    UCHAR log2_max_pic_order_cnt_lsb_minus4;
-} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
-
-typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
-{    
-    UINT GOPLength;
-    UINT PPicturePeriod;
-    UCHAR log2_max_pic_order_cnt_lsb_minus4;
-} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
-{
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264* pH264GroupOfPictures;
-        D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC* pHEVCGroupOfPictures;
-        D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE* pAV1SequenceStructure;
-    };
-} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
-{
-    // input
-    UINT NodeIndex;  
-    D3D12_VIDEO_ENCODER_CODEC Codec;    
-    DXGI_FORMAT InputFormat;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
-    D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
-    D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
-    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
-    UINT ResolutionsListCount;
-    const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
-    UINT MaxReferenceFramesInDPB;
-
-    // single value output
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
-    D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; // assuming max resolution from input list
-    
-    // resolution dependent output
-    [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
-{
-    // Mutually exclusive options according to selected mode
-    union
-    {
-        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION
-        UINT MaxBytesPerSlice;
-
-        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED
-        UINT NumberOfCodingUnitsPerSlice;
-
-        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION
-        UINT NumberOfRowsPerSlice;
-
-        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME
-        UINT NumberOfSlicesPerFrame;
-    };
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
-{
-    UINT DataSize;
-    union
-    {
-        const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_H264;
-        const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_HEVC;
-        const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES* pTilesPartition_AV1;
-    };
-
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
-{
-    /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT */
-    UINT NodeIndex;
-    D3D12_VIDEO_ENCODER_CODEC Codec;
-    DXGI_FORMAT InputFormat;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
-    D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
-    D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
-    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
-    UINT ResolutionsListCount;
-    const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
-    UINT MaxReferenceFramesInDPB;
-    D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
-    D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
-    D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
-    D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
-    [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
-
-    /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 */
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; // input
-    UINT MaxQualityVsSpeed;
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
-
-typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
-{
-    UINT NodeIndex;                                                      // input
-    D3D12_VIDEO_ENCODER_CODEC Codec;                                     // input
-    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                            // input     
-    DXGI_FORMAT InputFormat;                                             // input
-    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
-
-    BOOL IsSupported;                                                    // output   
-    UINT CompressedBitstreamBufferAccessAlignment;                       // output
-    UINT EncoderMetadataBufferAccessAlignment;                           // output
-    UINT MaxEncoderOutputMetadataBufferSize;                             // output
-} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
-
-//
-// Video Encoder creation API
-//
-
-typedef enum D3D12_VIDEO_ENCODER_FLAGS
-{
-    D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0,
-} D3D12_VIDEO_ENCODER_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_DESC
-{
-    UINT NodeMask;  
-    D3D12_VIDEO_ENCODER_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
-    D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
-    DXGI_FORMAT InputFormat;
-    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;    
-    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
-} D3D12_VIDEO_ENCODER_DESC;
-
-[uuid(2E0D212D-8DF9-44A6-A770-BB289B182737), object, local, pointer_default(unique)]
-interface ID3D12VideoEncoder
-    : ID3D12Pageable
-{
-    UINT GetNodeMask(); 
-    D3D12_VIDEO_ENCODER_FLAGS GetEncoderFlags(); 
-    D3D12_VIDEO_ENCODER_CODEC GetCodec(); 
-    HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
-    HRESULT GetCodecConfiguration([annotation("_Inout_")] D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
-    DXGI_FORMAT GetInputFormat();
-    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE GetMaxMotionEstimationPrecision();
-}
-
-[uuid(22B35D96-876A-44C0-B25E-FB8C9C7F1C4A), object, local, pointer_default(unique)]
-interface ID3D12VideoEncoderHeap
-    : ID3D12Pageable
-{
-    UINT GetNodeMask(); 
-    D3D12_VIDEO_ENCODER_HEAP_FLAGS GetEncoderHeapFlags(); 
-    D3D12_VIDEO_ENCODER_CODEC GetCodec(); 
-    HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile); 
-    HRESULT GetCodecLevel([annotation("_Inout_")] D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel); 
-    UINT GetResolutionListCount(); 
-    HRESULT GetResolutionList(
-        const UINT ResolutionsListCount,
-        [annotation("_Out_writes_(ResolutionsListCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList); 
-}
-
-[uuid(4243ADB4-3A32-4666-973C-0CCC5625DC44), object, local, pointer_default(unique)]
-interface ID3D12VideoDevice3
-    : ID3D12VideoDevice2
-{
-
-    HRESULT CreateVideoEncoder(
-        [annotation("_In_")] const D3D12_VIDEO_ENCODER_DESC* pDesc,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoder,
-        [annotation("_COM_Outptr_")] void** ppVideoEncoder);
-
-    HRESULT CreateVideoEncoderHeap(
-        [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC* pDesc,
-        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap,
-        [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
-
-}
-
-//
-// Video Encoder operation API
-//
-
-
-typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
-{
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3,
-} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
-
-
-typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
-{
-    UINT ReconstructedPictureResourceIndex;
-    BOOL IsLongTermReference; 
-    UINT LongTermPictureIdx;
-    UINT PictureOrderCountNumber;
-    UINT FrameDecodingOrderNumber;
-    UINT TemporalLayerIndex;
-} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
-
-typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
-{
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
-{
-    UCHAR memory_management_control_operation;
-    UINT difference_of_pic_nums_minus1;
-    UINT long_term_pic_num;
-    UINT long_term_frame_idx;
-    UINT max_long_term_frame_idx_plus1;
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
-{
-    UCHAR modification_of_pic_nums_idc;
-    UINT abs_diff_pic_num_minus1;
-    UINT long_term_pic_num;
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
-{
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;    
-    UINT pic_parameter_set_id;
-    UINT idr_pic_id;    
-    UINT PictureOrderCountNumber;
-    UINT FrameDecodingOrderNumber;
-    UINT TemporalLayerIndex;
-    UINT List0ReferenceFramesCount;
-    [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
-    UINT List1ReferenceFramesCount;
-    [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
-    UINT ReferenceFramesReconPictureDescriptorsCount;
-    [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors;
-    UCHAR adaptive_ref_pic_marking_mode_flag;
-    UINT RefPicMarkingOperationsCommandsCount;
-    [annotation("_Field_size_full_(RefPicMarkingOperationsCommandsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands;
-    UINT List0RefPicModificationsCount;
-    [annotation("_Field_size_full_(List0RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications;
-    UINT List1RefPicModificationsCount;
-    [annotation("_Field_size_full_(List1RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications;
-    UINT QPMapValuesCount;
-    [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
-
-typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
-{
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3,
-} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
-{
-    UINT ReconstructedPictureResourceIndex;
-    BOOL IsRefUsedByCurrentPic; 
-    BOOL IsLongTermReference; 
-    UINT PictureOrderCountNumber;
-    UINT TemporalLayerIndex;
-} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
-
-typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
-{
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8,
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
-{
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
-    UINT slice_pic_parameter_set_id;
-    UINT PictureOrderCountNumber;
-    UINT TemporalLayerIndex;    
-    UINT List0ReferenceFramesCount;
-    [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
-    UINT List1ReferenceFramesCount;
-    [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
-    UINT ReferenceFramesReconPictureDescriptorsCount;
-    [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
-    UINT List0RefPicModificationsCount;
-    [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
-    UINT List1RefPicModificationsCount;
-    [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;    
-    UINT QPMapValuesCount;
-    [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
-{
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
-    UINT slice_pic_parameter_set_id;
-    UINT PictureOrderCountNumber;
-    UINT TemporalLayerIndex;
-    UINT List0ReferenceFramesCount;
-    [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
-    UINT List1ReferenceFramesCount;
-    [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
-    UINT ReferenceFramesReconPictureDescriptorsCount;
-    [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
-    UINT List0RefPicModificationsCount;
-    [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
-    UINT List1RefPicModificationsCount;
-    [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
-    UINT QPMapValuesCount;
-    [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
-    UCHAR diff_cu_chroma_qp_offset_depth;
-    UCHAR log2_sao_offset_scale_luma;
-    UCHAR log2_sao_offset_scale_chroma;
-    UCHAR log2_max_transform_skip_block_size_minus2;
-    UCHAR chroma_qp_offset_list_len_minus1;
-    CHAR cb_qp_offset_list[6];
-    CHAR cr_qp_offset_list[6];
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
-{
-    UINT DataSize;
-    union
-    {
-        D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
-        D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC* pHEVCPicData;
-        D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1* pHEVCPicData1;
-        D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
-    };
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
-
-typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
-{
-    UINT NumTexture2Ds;
-    [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
-    [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
-} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
-
-typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
-{
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,    
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
-{
-    UINT IntraRefreshFrameIndex;
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;    
-    D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
-} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
-
-typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
-{
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10,
-} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
-{
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
-    D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
-    D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
-    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
-    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
-    D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
-} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
-
-//
-// Video Encoder operation commands API 
-//
-
-typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
-{
-    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
-    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
-    ID3D12Resource *pInputFrame;
-    UINT InputFrameSubresource;
-    UINT CurrentFrameBitstreamMetadataSize;
-} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
-
-typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
-{
-    ID3D12Resource* pBuffer;
-    UINT64 FrameStartOffset;
-} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
-
-typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
-{
-    ID3D12Resource *pReconstructedPicture;
-    UINT ReconstructedPictureSubresource;
-} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
-
-typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
-{
-    UINT64 bSize;
-    UINT64 bStartOffset;
-    UINT64 bHeaderSize;
-} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
-
-typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
-{
-    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,    
-    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
-    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,    
-    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,    
-    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,    
-    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10,
-} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
-cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)")
-
-typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
-{
-    UINT64 AverageQP;                        
-    UINT64 IntraCodingUnitsCount;            
-    UINT64 InterCodingUnitsCount;            
-    UINT64 SkipCodingUnitsCount;             
-    UINT64 AverageMotionEstimationXDirection;
-    UINT64 AverageMotionEstimationYDirection;
-} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
-
-typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
-{    
-    UINT64 EncodeErrorFlags; // D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
-    D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;    
-    UINT64 EncodedBitstreamWrittenBytesCount;
-    UINT64 WrittenSubregionsCount;    
-} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
-
-typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
-{
-    ID3D12Resource* pBuffer;
-    UINT64 Offset;
-} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
-
-typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
-{
-    D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
-    D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
-    DXGI_FORMAT EncoderInputFormat; 
-    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
-    D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
-} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
-
-typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
-{
-    D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
-} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
-
-typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
-{    
-    D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
-    D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
-    D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
-} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
-
-[uuid(895491e2-e701-46a9-9a1f-8d3480ed867a), object, local, pointer_default(unique)]
-interface ID3D12VideoEncodeCommandList2
-    : ID3D12VideoEncodeCommandList1
-{
-    void EncodeFrame(
-        [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
-        [annotation("_In_")] ID3D12VideoEncoderHeap *pHeap,
-        [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
-        [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
-
-    void ResolveEncoderOutputMetadata(
-        [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS* pInputArguments,
-        [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS* pOutputArguments);
-}
-
-
-[uuid(7f027b22-1515-4e85-aa0d-026486580576), object, local, pointer_default(unique)]
-interface ID3D12VideoEncodeCommandList3
-    : ID3D12VideoEncodeCommandList2
-{
-
-    void Barrier(
-        UINT32 NumBarrierGroups,
-        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
-    );
-}
-
-cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
-#pragma endregion
-
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);" )
-cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);" )
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+import "oaidl.idl";
+import "ocidl.idl";
+
+import "dxgicommon.idl";
+import "d3d12.idl";
+
+cpp_quote("#include <winapifamily.h>")
+
+#pragma region App Family
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
+
+typedef enum D3D12_VIDEO_FIELD_TYPE
+{
+    D3D12_VIDEO_FIELD_TYPE_NONE = 0,
+    D3D12_VIDEO_FIELD_TYPE_INTERLACED_TOP_FIELD_FIRST = 1,
+    D3D12_VIDEO_FIELD_TYPE_INTERLACED_BOTTOM_FIELD_FIRST = 2,
+} D3D12_VIDEO_FIELD_TYPE;
+
+typedef enum D3D12_VIDEO_FRAME_STEREO_FORMAT
+{
+    D3D12_VIDEO_FRAME_STEREO_FORMAT_NONE = 0,
+    D3D12_VIDEO_FRAME_STEREO_FORMAT_MONO = 1,
+    D3D12_VIDEO_FRAME_STEREO_FORMAT_HORIZONTAL = 2,
+    D3D12_VIDEO_FRAME_STEREO_FORMAT_VERTICAL = 3,
+    D3D12_VIDEO_FRAME_STEREO_FORMAT_SEPARATE = 4,
+} D3D12_VIDEO_FRAME_STEREO_FORMAT;
+
+typedef struct D3D12_VIDEO_FORMAT
+{
+    DXGI_FORMAT Format;
+    DXGI_COLOR_SPACE_TYPE ColorSpace;
+} D3D12_VIDEO_FORMAT;
+
+typedef struct D3D12_VIDEO_SAMPLE
+{
+    UINT Width;
+    UINT Height;
+    D3D12_VIDEO_FORMAT Format;
+} D3D12_VIDEO_SAMPLE;
+
+typedef enum D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE
+{
+    D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_NONE = 0,
+    D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE_FIELD_BASED = 1,
+} D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE;
+
+typedef enum D3D12_FEATURE_VIDEO
+{
+    D3D12_FEATURE_VIDEO_DECODE_SUPPORT = 0,
+    D3D12_FEATURE_VIDEO_DECODE_PROFILES = 1,
+    D3D12_FEATURE_VIDEO_DECODE_FORMATS = 2,
+    D3D12_FEATURE_VIDEO_DECODE_CONVERSION_SUPPORT = 3,
+    D3D12_FEATURE_VIDEO_PROCESS_SUPPORT = 5,
+    D3D12_FEATURE_VIDEO_PROCESS_MAX_INPUT_STREAMS = 6,
+    D3D12_FEATURE_VIDEO_PROCESS_REFERENCE_INFO = 7,
+    D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE = 8,
+    D3D12_FEATURE_VIDEO_PROCESSOR_SIZE = 9,
+    D3D12_FEATURE_VIDEO_DECODE_PROFILE_COUNT = 10,
+    D3D12_FEATURE_VIDEO_DECODE_FORMAT_COUNT = 11,
+    D3D12_FEATURE_VIDEO_ARCHITECTURE = 17,
+    D3D12_FEATURE_VIDEO_DECODE_HISTOGRAM = 18,     
+    D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT = 19,   
+    D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR = 20, 
+    D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE = 21,
+    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_COUNT = 22, 
+    D3D12_FEATURE_VIDEO_EXTENSION_COMMANDS = 23, 
+    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT = 24,
+    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_PARAMETERS = 25, 
+    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SUPPORT = 26, 
+    D3D12_FEATURE_VIDEO_EXTENSION_COMMAND_SIZE = 27, 
+    D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES = 28,
+    D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES = 29,
+    D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES = 30,
+    D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1 = 31,
+    D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1 = 32,
+    D3D12_FEATURE_VIDEO_ENCODER_CODEC = 33,
+    D3D12_FEATURE_VIDEO_ENCODER_PROFILE_LEVEL = 34,
+    D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT = 35,
+    D3D12_FEATURE_VIDEO_ENCODER_OUTPUT_RESOLUTION = 36,
+    D3D12_FEATURE_VIDEO_ENCODER_INPUT_FORMAT = 37,
+    D3D12_FEATURE_VIDEO_ENCODER_RATE_CONTROL_MODE = 38,
+    D3D12_FEATURE_VIDEO_ENCODER_INTRA_REFRESH_MODE = 39,
+    D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE = 40,
+    D3D12_FEATURE_VIDEO_ENCODER_HEAP_SIZE = 41,
+    D3D12_FEATURE_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT = 42,
+    D3D12_FEATURE_VIDEO_ENCODER_SUPPORT = 43,
+    D3D12_FEATURE_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT = 44,
+    D3D12_FEATURE_VIDEO_ENCODER_RESOURCE_REQUIREMENTS = 45,
+    D3D12_FEATURE_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG = 46,
+    D3D12_FEATURE_VIDEO_ENCODER_SUPPORT1 = 47,
+
+} D3D12_FEATURE_VIDEO;
+
+typedef enum D3D12_BITSTREAM_ENCRYPTION_TYPE
+{
+    D3D12_BITSTREAM_ENCRYPTION_TYPE_NONE = 0,
+} D3D12_BITSTREAM_ENCRYPTION_TYPE;
+
+typedef struct D3D12_VIDEO_DECODE_CONFIGURATION
+{
+    GUID DecodeProfile;
+    D3D12_BITSTREAM_ENCRYPTION_TYPE BitstreamEncryption;
+    D3D12_VIDEO_FRAME_CODED_INTERLACE_TYPE InterlaceType;
+} D3D12_VIDEO_DECODE_CONFIGURATION;
+
+typedef struct D3D12_VIDEO_DECODER_DESC
+{
+    UINT NodeMask;
+    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+} D3D12_VIDEO_DECODER_DESC;
+
+typedef struct D3D12_VIDEO_DECODER_HEAP_DESC
+{
+    UINT NodeMask;
+    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;
+    UINT DecodeWidth;
+    UINT DecodeHeight;
+    DXGI_FORMAT Format;
+    DXGI_RATIONAL FrameRate;
+    UINT BitRate;
+    UINT MaxDecodePictureBufferCount;
+} D3D12_VIDEO_DECODER_HEAP_DESC;
+
+typedef struct D3D12_VIDEO_SIZE_RANGE
+{
+    UINT MaxWidth;
+    UINT MaxHeight;
+    UINT MinWidth;
+    UINT MinHeight;
+} D3D12_VIDEO_SIZE_RANGE;
+
+typedef enum  D3D12_VIDEO_PROCESS_FILTER
+{
+    D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS = 0,
+    D3D12_VIDEO_PROCESS_FILTER_CONTRAST = 1,
+    D3D12_VIDEO_PROCESS_FILTER_HUE = 2,
+    D3D12_VIDEO_PROCESS_FILTER_SATURATION = 3,
+    D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION = 4,
+    D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT = 5,
+    D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING = 6,
+    D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT = 7,
+} D3D12_VIDEO_PROCESS_FILTER;
+
+typedef enum  D3D12_VIDEO_PROCESS_FILTER_FLAGS
+{
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_NONE = 0x0,
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_BRIGHTNESS = (1 << D3D12_VIDEO_PROCESS_FILTER_BRIGHTNESS),
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_CONTRAST = (1 << D3D12_VIDEO_PROCESS_FILTER_CONTRAST),
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_HUE = (1 << D3D12_VIDEO_PROCESS_FILTER_HUE),
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_SATURATION = (1 << D3D12_VIDEO_PROCESS_FILTER_SATURATION),
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_NOISE_REDUCTION = (1 << D3D12_VIDEO_PROCESS_FILTER_NOISE_REDUCTION),
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_EDGE_ENHANCEMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_EDGE_ENHANCEMENT),
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_ANAMORPHIC_SCALING = (1 << D3D12_VIDEO_PROCESS_FILTER_ANAMORPHIC_SCALING),
+    D3D12_VIDEO_PROCESS_FILTER_FLAG_STEREO_ADJUSTMENT = (1 << D3D12_VIDEO_PROCESS_FILTER_STEREO_ADJUSTMENT),
+
+} D3D12_VIDEO_PROCESS_FILTER_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FILTER_FLAGS )")
+
+typedef enum D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS
+{
+    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_NONE = 0x0,
+    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_BOB = 0x1,
+    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAG_CUSTOM = 0x80000000,
+
+} D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS )")
+
+typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
+{
+    BOOL Enable;
+    FLOAT Alpha;
+} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
+
+typedef struct D3D12_VIDEO_PROCESS_LUMA_KEY
+{
+    BOOL Enable;
+    FLOAT Lower;
+    FLOAT Upper;
+} D3D12_VIDEO_PROCESS_LUMA_KEY;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC
+{
+    DXGI_FORMAT Format;
+    DXGI_COLOR_SPACE_TYPE ColorSpace;
+    DXGI_RATIONAL SourceAspectRatio;
+    DXGI_RATIONAL DestinationAspectRatio;
+    DXGI_RATIONAL FrameRate;
+    D3D12_VIDEO_SIZE_RANGE SourceSizeRange;
+    D3D12_VIDEO_SIZE_RANGE DestinationSizeRange;
+    BOOL EnableOrientation;
+    D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterFlags;
+    D3D12_VIDEO_FRAME_STEREO_FORMAT StereoFormat;
+    D3D12_VIDEO_FIELD_TYPE FieldType;
+    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;
+    BOOL EnableAlphaBlending;
+    D3D12_VIDEO_PROCESS_LUMA_KEY LumaKey;
+    UINT NumPastFrames;
+    UINT NumFutureFrames;
+    BOOL EnableAutoProcessing;
+} D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC;
+
+typedef enum D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE
+{
+    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_OPAQUE = 0,
+    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_BACKGROUND = 1,
+    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_DESTINATION = 2,
+    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE_SOURCE_STREAM = 3,
+} D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE;
+
+typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC
+{
+    DXGI_FORMAT Format;
+    DXGI_COLOR_SPACE_TYPE ColorSpace;
+    D3D12_VIDEO_PROCESS_ALPHA_FILL_MODE AlphaFillMode;
+    UINT AlphaFillModeSourceStreamIndex;
+    FLOAT BackgroundColor[4];
+    DXGI_RATIONAL FrameRate;
+    BOOL EnableStereo;
+} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC;
+
+[uuid(0946B7C9-EBF6-4047-BB73-8683E27DBB1F), object, local, pointer_default(unique)]
+interface ID3D12VideoDecoderHeap
+    : ID3D12Pageable
+{
+    D3D12_VIDEO_DECODER_HEAP_DESC GetDesc();
+}
+
+[uuid(1F052807-0B46-4ACC-8A89-364F793718A4), object, local, pointer_default(unique)]
+interface ID3D12VideoDevice
+    : IUnknown
+{
+    HRESULT CheckFeatureSupport(
+        D3D12_FEATURE_VIDEO FeatureVideo,
+        [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
+        UINT FeatureSupportDataSize
+        );
+
+    HRESULT CreateVideoDecoder(
+        [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
+        );
+
+    HRESULT CreateVideoDecoderHeap(
+        [annotation("_In_")]const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
+        );
+
+    HRESULT CreateVideoProcessor(
+        UINT NodeMask,
+        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
+        UINT NumInputStreamDescs,
+        [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
+        );
+}
+
+[uuid(C59B6BDC-7720-4074-A136-17A156037470), object, local, pointer_default(unique)]
+interface ID3D12VideoDecoder
+    : ID3D12Pageable
+{
+    D3D12_VIDEO_DECODER_DESC GetDesc();
+}
+
+typedef enum D3D12_VIDEO_DECODE_TIER
+{
+    D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
+    D3D12_VIDEO_DECODE_TIER_1 = 1,
+    D3D12_VIDEO_DECODE_TIER_2 = 2,
+    D3D12_VIDEO_DECODE_TIER_3 = 3,
+} D3D12_VIDEO_DECODE_TIER;
+
+typedef enum D3D12_VIDEO_DECODE_SUPPORT_FLAGS
+{
+    D3D12_VIDEO_DECODE_SUPPORT_FLAG_NONE = 0x0,
+    D3D12_VIDEO_DECODE_SUPPORT_FLAG_SUPPORTED = 0x1,
+
+} D3D12_VIDEO_DECODE_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_SUPPORT_FLAGS )")
+
+typedef enum D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS
+{
+    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_NONE                                      = 0x0,
+    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_HEIGHT_ALIGNMENT_MULTIPLE_32_REQUIRED     = 0x1,
+    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_POST_PROCESSING_SUPPORTED                 = 0x2,
+    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED       = 0x4,
+    D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_ALLOW_RESOLUTION_CHANGE_ON_NON_KEY_FRAME  = 0x8,
+
+} D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS )")
+
+typedef enum D3D12_VIDEO_DECODE_STATUS
+{
+    D3D12_VIDEO_DECODE_STATUS_OK = 0,
+    D3D12_VIDEO_DECODE_STATUS_CONTINUE = 1,
+    D3D12_VIDEO_DECODE_STATUS_CONTINUE_SKIP_DISPLAY = 2,
+    D3D12_VIDEO_DECODE_STATUS_RESTART = 3,
+    D3D12_VIDEO_DECODE_STATUS_RATE_EXCEEDED = 4,
+} D3D12_VIDEO_DECODE_STATUS;
+
+typedef enum D3D12_VIDEO_DECODE_ARGUMENT_TYPE
+{
+    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_PICTURE_PARAMETERS = 0,
+    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_INVERSE_QUANTIZATION_MATRIX = 1,
+    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_SLICE_CONTROL = 2,
+    D3D12_VIDEO_DECODE_ARGUMENT_TYPE_HUFFMAN_TABLE = 3,
+} D3D12_VIDEO_DECODE_ARGUMENT_TYPE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT
+{
+    UINT NodeIndex;                                            // input
+    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;            // input
+    UINT Width;                                                // input
+    UINT Height;                                               // input
+    DXGI_FORMAT DecodeFormat;                                  // input
+    DXGI_RATIONAL FrameRate;                                   // input
+    UINT BitRate;                                              // input
+    D3D12_VIDEO_DECODE_SUPPORT_FLAGS SupportFlags;             // output
+    D3D12_VIDEO_DECODE_CONFIGURATION_FLAGS ConfigurationFlags; // output
+    D3D12_VIDEO_DECODE_TIER DecodeTier;                        // output
+} D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT
+{
+    UINT NodeIndex;                                             // input
+    UINT ProfileCount;                                          // output
+} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILE_COUNT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES
+{
+    UINT NodeIndex;                                                   // input
+    UINT ProfileCount;                                                // input
+    [annotation("_Field_size_full_(ProfileCount)")] GUID *pProfiles;  // output. The list of supported profiles. The caller allocates storage for the profile list before calling CheckFeatureSupport.
+} D3D12_FEATURE_DATA_VIDEO_DECODE_PROFILES;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT
+{
+    UINT NodeIndex;                                                             // input
+    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;                             // input
+    UINT FormatCount;                                                           // output
+} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMAT_COUNT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS
+{
+    UINT NodeIndex;                                                              // input
+    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;                              // input
+    UINT FormatCount;                                                            // input
+    [annotation("_Field_size_full_(FormatCount)")] DXGI_FORMAT *pOutputFormats;  // output. The list of supported video formats. The caller allocates storage for the format list before calling CheckFeatureSupport.
+} D3D12_FEATURE_DATA_VIDEO_DECODE_FORMATS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE
+{
+    BOOL IOCoherent;
+} D3D12_FEATURE_DATA_VIDEO_ARCHITECTURE;
+
+typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT
+{
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y = 0,
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U = 1, 
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V = 2,
+    
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R = 0,
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G = 1, 
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B = 2,
+
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A = 3,
+} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT; 
+
+typedef enum D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS
+{
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_NONE = 0x0,
+
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_Y = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_Y),
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_U = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_U), 
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_V = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_V),
+
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_R = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_R),
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_G = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_G), 
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_B = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_B),
+
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAG_A = (1 << D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_A),
+} D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS; 
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS )")
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM
+{
+    UINT NodeIndex;                                                       // in
+    GUID DecodeProfile;                                                   // in
+    UINT Width;                                                           // in
+    UINT Height;                                                          // in
+    DXGI_FORMAT DecodeFormat;                                             // in
+    D3D12_VIDEO_DECODE_HISTOGRAM_COMPONENT_FLAGS Components;              // out
+    UINT BinCount;                                                        // out
+    UINT CounterBitDepth;                                                 // out
+} D3D12_FEATURE_DATA_VIDEO_DECODE_HISTOGRAM;
+
+typedef enum D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS
+{
+    D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_NONE = 0x0,
+    D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAG_SUPPORTED = 0x1,
+
+} D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS )")
+
+typedef enum D3D12_VIDEO_SCALE_SUPPORT_FLAGS
+{
+    D3D12_VIDEO_SCALE_SUPPORT_FLAG_NONE = 0x0,
+    D3D12_VIDEO_SCALE_SUPPORT_FLAG_POW2_ONLY = 0x1,
+    D3D12_VIDEO_SCALE_SUPPORT_FLAG_EVEN_DIMENSIONS_ONLY = 0x2,
+
+} D3D12_VIDEO_SCALE_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_SCALE_SUPPORT_FLAGS )")
+
+typedef struct D3D12_VIDEO_SCALE_SUPPORT
+{
+    D3D12_VIDEO_SIZE_RANGE OutputSizeRange;
+    D3D12_VIDEO_SCALE_SUPPORT_FLAGS Flags;
+} D3D12_VIDEO_SCALE_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT
+{
+    UINT NodeIndex;                                             // input
+    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;             // input
+    D3D12_VIDEO_SAMPLE DecodeSample;                            // input
+    D3D12_VIDEO_FORMAT OutputFormat;                            // input
+    DXGI_RATIONAL FrameRate;                                    // input
+    UINT BitRate;                                               // input
+    D3D12_VIDEO_DECODE_CONVERSION_SUPPORT_FLAGS SupportFlags;   // output
+    D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;                     // output
+} D3D12_FEATURE_DATA_VIDEO_DECODE_CONVERSION_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE
+{
+    D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;         // input
+    UINT64 MemoryPoolL0Size;                                    // output
+    UINT64 MemoryPoolL1Size;                                    // output
+} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE
+{
+    UINT NodeMask;
+    const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc;    // input
+    UINT NumInputStreamDescs;                                           // input
+    const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;     // input
+    UINT64 MemoryPoolL0Size;                                            // output
+    UINT64 MemoryPoolL1Size;                                            // output
+} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE;
+
+typedef struct D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS
+{
+    UINT64 Status;                      // see D3D12_VIDEO_DECODE_STATUS 
+    UINT64 NumMacroblocksAffected;
+    DXGI_RATIONAL FrameRate;
+    UINT BitRate;
+} D3D12_QUERY_DATA_VIDEO_DECODE_STATISTICS;
+
+typedef struct D3D12_VIDEO_DECODE_FRAME_ARGUMENT
+{
+    D3D12_VIDEO_DECODE_ARGUMENT_TYPE Type;
+    UINT Size;
+    [annotation("_Field_size_bytes_full_(Size)")] void *pData;
+} D3D12_VIDEO_DECODE_FRAME_ARGUMENT;
+
+typedef struct D3D12_VIDEO_DECODE_REFERENCE_FRAMES
+{
+    UINT NumTexture2Ds;
+    [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
+    [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
+    [annotation("_Field_size_full_opt_(NumTexture2Ds)")] ID3D12VideoDecoderHeap** ppHeaps; // If null, assume single decoder heap from input args.
+} D3D12_VIDEO_DECODE_REFERENCE_FRAMES;
+
+typedef struct D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM
+{
+    ID3D12Resource* pBuffer;
+    UINT64 Offset;
+    UINT64 Size;
+} D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM;
+
+typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS
+{
+    BOOL Enable;
+    ID3D12Resource* pReferenceTexture2D;
+    UINT ReferenceSubresource;
+    DXGI_COLOR_SPACE_TYPE OutputColorSpace;
+    DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
+} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS
+{
+    UINT NumFrameArguments;
+    D3D12_VIDEO_DECODE_FRAME_ARGUMENT FrameArguments[D3D12_VIDEO_DECODE_MAX_ARGUMENTS];
+    D3D12_VIDEO_DECODE_REFERENCE_FRAMES ReferenceFrames;
+    D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM CompressedBitstream;
+    ID3D12VideoDecoderHeap *pHeap;
+} D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS
+{
+    ID3D12Resource* pOutputTexture2D;
+    UINT OutputSubresource;
+    D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS ConversionArguments;
+} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS;
+
+[uuid(304FDB32-BEDE-410A-8545-943AC6A46138), object, local, pointer_default(unique)]
+interface ID3D12VideoProcessor
+    : ID3D12Pageable
+{
+    UINT GetNodeMask();
+    UINT GetNumInputStreamDescs();
+    HRESULT GetInputStreamDescs(UINT NumInputStreamDescs, [annotation("_Out_writes_(NumInputStreamDescs)")] D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs);
+    D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC GetOutputStreamDesc();
+}
+
+typedef enum D3D12_VIDEO_PROCESS_FEATURE_FLAGS
+{
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_NONE = 0x0,
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_FILL = 0x1,
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_LUMA_KEY = 0x2,
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_STEREO = 0x4,
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_ROTATION = 0x8,
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_FLIP = 0x10,
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_ALPHA_BLENDING = 0x20,
+    D3D12_VIDEO_PROCESS_FEATURE_FLAG_PIXEL_ASPECT_RATIO = 0x40,
+
+} D3D12_VIDEO_PROCESS_FEATURE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_FEATURE_FLAGS )")
+
+typedef enum D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS
+{
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_NONE = 0x0,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DENOISE = 0x01,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_DERINGING = 0x02,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_EDGE_ENHANCEMENT = 0x04,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_COLOR_CORRECTION = 0x08,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_FLESH_TONE_MAPPING = 0x10,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_IMAGE_STABILIZATION = 0x20,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_SUPER_RESOLUTION = 0x40,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_ANAMORPHIC_SCALING = 0x80,
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAG_CUSTOM = 0x80000000,
+
+} D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS )")
+
+typedef enum D3D12_VIDEO_PROCESS_ORIENTATION
+{
+    D3D12_VIDEO_PROCESS_ORIENTATION_DEFAULT = 0,
+    D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_HORIZONTAL = 1,
+    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90 = 2,
+    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_90_FLIP_HORIZONTAL = 3,
+    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_180 = 4,
+    D3D12_VIDEO_PROCESS_ORIENTATION_FLIP_VERTICAL = 5,
+    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270 = 6,
+    D3D12_VIDEO_PROCESS_ORIENTATION_CLOCKWISE_270_FLIP_HORIZONTAL = 7,
+} D3D12_VIDEO_PROCESS_ORIENTATION;
+
+typedef enum D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS
+{
+    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_NONE = 0x0,
+    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_DISCONTINUITY = 0x1,
+    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAG_FRAME_REPEAT = 0x2,
+
+} D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS )")
+
+typedef struct D3D12_VIDEO_PROCESS_FILTER_RANGE
+{
+    INT   Minimum;
+    INT   Maximum;
+    INT   Default;
+    FLOAT Multiplier;
+} D3D12_VIDEO_PROCESS_FILTER_RANGE;
+
+typedef enum D3D12_VIDEO_PROCESS_SUPPORT_FLAGS
+{
+    D3D12_VIDEO_PROCESS_SUPPORT_FLAG_NONE = 0x0,
+    D3D12_VIDEO_PROCESS_SUPPORT_FLAG_SUPPORTED = 0x1,
+
+} D3D12_VIDEO_PROCESS_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROCESS_SUPPORT_FLAGS )")
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT
+{
+    UINT NodeIndex;                                                                         // input
+    D3D12_VIDEO_SAMPLE InputSample;                                                         // input
+    D3D12_VIDEO_FIELD_TYPE InputFieldType;                                                  // input
+    D3D12_VIDEO_FRAME_STEREO_FORMAT InputStereoFormat;                                      // input
+    DXGI_RATIONAL InputFrameRate;                                                           // input
+    D3D12_VIDEO_FORMAT OutputFormat;                                                        // input
+    D3D12_VIDEO_FRAME_STEREO_FORMAT OutputStereoFormat;                                     // input
+    DXGI_RATIONAL OutputFrameRate;                                                          // input
+    D3D12_VIDEO_PROCESS_SUPPORT_FLAGS SupportFlags;                                         // output
+    D3D12_VIDEO_SCALE_SUPPORT ScaleSupport;                                                 // output
+    D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;                                       // output
+    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceSupport;                               // output
+    D3D12_VIDEO_PROCESS_AUTO_PROCESSING_FLAGS AutoProcessingSupport;                        // output
+    D3D12_VIDEO_PROCESS_FILTER_FLAGS FilterSupport;                                         // output
+    D3D12_VIDEO_PROCESS_FILTER_RANGE FilterRangeSupport[D3D12_VIDEO_PROCESS_MAX_FILTERS];   // output
+} D3D12_FEATURE_DATA_VIDEO_PROCESS_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS
+{
+    UINT NodeIndex;                                             // input
+    UINT MaxInputStreams;                                       // output
+} D3D12_FEATURE_DATA_VIDEO_PROCESS_MAX_INPUT_STREAMS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO
+{
+    UINT NodeIndex;                                             // input
+    D3D12_VIDEO_PROCESS_DEINTERLACE_FLAGS DeinterlaceMode;      // input
+    D3D12_VIDEO_PROCESS_FILTER_FLAGS Filters;                   // input
+    D3D12_VIDEO_PROCESS_FEATURE_FLAGS FeatureSupport;           // input
+    DXGI_RATIONAL InputFrameRate;                               // input
+    DXGI_RATIONAL OutputFrameRate;                              // input 
+    BOOL EnableAutoProcessing;                                  // input
+    UINT PastFrames;                                            // output
+    UINT FutureFrames;                                          // output
+} D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO;
+
+typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET
+{
+    UINT NumPastFrames;
+    ID3D12Resource **ppPastFrames;
+    UINT *pPastSubresources;
+    UINT NumFutureFrames;
+    ID3D12Resource **ppFutureFrames;
+    UINT *pFutureSubresources;
+} D3D12_VIDEO_PROCESS_REFERENCE_SET;
+
+typedef struct D3D12_VIDEO_PROCESS_TRANSFORM
+{
+    D3D12_RECT SourceRectangle;
+    D3D12_RECT DestinationRectangle;
+    D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
+} D3D12_VIDEO_PROCESS_TRANSFORM;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
+{
+    UINT OutputIndex;
+    UINT InputFrameOrField;
+} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM
+{
+    ID3D12Resource *pTexture2D;
+    UINT Subresource;
+    D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
+} D3D12_VIDEO_PROCESS_INPUT_STREAM;
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
+{
+    D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
+    D3D12_VIDEO_PROCESS_TRANSFORM Transform;
+    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
+    D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
+    INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
+    D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
+} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM
+{
+    ID3D12Resource* pTexture2D;
+    UINT Subresource;
+} D3D12_VIDEO_PROCESS_OUTPUT_STREAM;
+
+typedef struct D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS
+{
+    D3D12_VIDEO_PROCESS_OUTPUT_STREAM OutputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
+    D3D12_RECT TargetRectangle;
+} D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS;
+
+[uuid(3B60536E-AD29-4E64-A269-F853837E5E53), object, local, pointer_default(unique)]
+interface ID3D12VideoDecodeCommandList
+    : ID3D12CommandList
+{
+    HRESULT Close();
+
+    HRESULT Reset(
+        [annotation("_In_")] ID3D12CommandAllocator* pAllocator
+        );
+
+    void ClearState();
+
+    void ResourceBarrier(
+        [annotation("_In_")] UINT NumBarriers,
+        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
+        );
+
+    void DiscardResource(
+        [annotation("_In_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
+        );
+
+    void BeginQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void EndQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void ResolveQueryData(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT StartIndex,
+        [annotation("_In_")] UINT NumQueries,
+        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
+        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
+        );
+
+    void SetPredication(
+        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
+        [annotation("_In_")] UINT64 AlignedBufferOffset,
+        [annotation("_In_")] D3D12_PREDICATION_OP Operation
+        );
+
+    void SetMarker(
+        UINT Metadata,
+        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
+        UINT Size);
+
+    void BeginEvent(
+        UINT Metadata,
+        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
+        UINT Size);
+
+    void EndEvent();
+
+    void DecodeFrame(
+        [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
+        [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+        [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
+        );
+
+    void WriteBufferImmediate(
+        UINT Count,
+        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
+        );
+}
+
+[uuid(AEB2543A-167F-4682-ACC8-D159ED4A6209), object, local, pointer_default(unique)]
+interface ID3D12VideoProcessCommandList
+    : ID3D12CommandList
+{
+    HRESULT Close();
+
+    HRESULT Reset(
+        [annotation("_In_")] ID3D12CommandAllocator* pAllocator
+        );
+
+    void ClearState();
+
+    void ResourceBarrier(
+        [annotation("_In_")] UINT NumBarriers,
+        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
+        );
+
+    void DiscardResource(
+        [annotation("_In_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
+        );
+
+    void BeginQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void EndQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void ResolveQueryData(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT StartIndex,
+        [annotation("_In_")] UINT NumQueries,
+        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
+        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
+        );
+
+    void SetPredication(
+        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
+        [annotation("_In_")] UINT64 AlignedBufferOffset,
+        [annotation("_In_")] D3D12_PREDICATION_OP Operation
+        );
+
+    void SetMarker(
+        UINT Metadata,
+        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
+        UINT Size);
+
+    void BeginEvent(
+        UINT Metadata,
+        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
+        UINT Size);
+
+    void EndEvent();
+
+    void ProcessFrames(
+        [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
+        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+        UINT NumInputStreams,
+        [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS *pInputArguments
+        );
+
+    void WriteBufferImmediate(
+        UINT Count,
+        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
+        );
+}
+
+typedef struct D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM
+{
+    UINT64 Offset;
+    ID3D12Resource* pBuffer;
+} D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM;
+
+typedef struct D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1
+{
+    BOOL Enable;
+    ID3D12Resource* pReferenceTexture2D;
+    UINT ReferenceSubresource;
+    DXGI_COLOR_SPACE_TYPE OutputColorSpace;
+    DXGI_COLOR_SPACE_TYPE DecodeColorSpace;
+    UINT OutputWidth;
+    UINT OutputHeight;
+} D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1;
+
+typedef struct D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1
+{
+    ID3D12Resource* pOutputTexture2D;
+    UINT OutputSubresource;
+    D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS1 ConversionArguments;
+    D3D12_VIDEO_DECODE_OUTPUT_HISTOGRAM Histograms[D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS];
+} D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1;
+
+[uuid(D52F011B-B56E-453C-A05A-A7F311C8F472), object, local, pointer_default(unique)]
+interface ID3D12VideoDecodeCommandList1
+    : ID3D12VideoDecodeCommandList
+{
+    void DecodeFrame1(
+        [annotation("_In_")] ID3D12VideoDecoder* pDecoder,
+        [annotation("_In_")] const D3D12_VIDEO_DECODE_OUTPUT_STREAM_ARGUMENTS1 *pOutputArguments,
+        [annotation("_In_")] const D3D12_VIDEO_DECODE_INPUT_STREAM_ARGUMENTS *pInputArguments
+        );
+}
+
+typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1
+{
+    D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[D3D12_VIDEO_PROCESS_STEREO_VIEWS];
+    D3D12_VIDEO_PROCESS_TRANSFORM Transform;
+    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
+    D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
+    INT FilterLevels[D3D12_VIDEO_PROCESS_MAX_FILTERS];
+    D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
+    D3D12_VIDEO_FIELD_TYPE FieldType;
+} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1;
+
+[uuid(542C5C4D-7596-434F-8C93-4EFA6766F267), object, local, pointer_default(unique)]
+interface ID3D12VideoProcessCommandList1 : ID3D12VideoProcessCommandList
+{
+    void ProcessFrames1(
+        [annotation("_In_")] ID3D12VideoProcessor* pVideoProcessor,
+        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_ARGUMENTS *pOutputArguments,
+        UINT NumInputStreams,
+        [annotation("_In_reads_(NumInputStreams)")] const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS1 *pInputArguments
+        );
+}
+
+typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE
+{
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8       = 0,
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16     = 1,
+} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE;
+
+typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS
+{
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_NONE  = 0,
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_8X8        = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_8X8),
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAG_16X16      = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_16X16),
+
+} D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS )" )
+
+typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION
+{
+    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL       = 0,
+} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION;
+
+typedef enum D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS
+{
+    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_NONE           = 0,
+    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAG_QUARTER_PEL    = (1 << D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_QUARTER_PEL),
+
+} D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS;
+cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS )" )
+
+// D3D12_FEATURE_VIDEO_FEATURE_AREA_SUPPORT
+typedef struct D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT
+{
+    UINT NodeIndex;                                                     // input
+    BOOL VideoDecodeSupport;                                            // output
+    BOOL VideoProcessSupport;                                           // output
+    BOOL VideoEncodeSupport;                                            // output
+} D3D12_FEATURE_DATA_VIDEO_FEATURE_AREA_SUPPORT;
+
+// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR
+typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR
+{
+    UINT NodeIndex;                                                                 // input
+    DXGI_FORMAT InputFormat;                                                        // input
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE_FLAGS BlockSizeFlags;            // output
+    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION_FLAGS PrecisionFlags;             // output
+    D3D12_VIDEO_SIZE_RANGE SizeRange;                                               // output
+} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR;
+
+// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_SIZE
+typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE
+{
+    UINT NodeIndex;                                                     // input
+    DXGI_FORMAT InputFormat;                                            // input
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;           // input
+    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;            // input
+    D3D12_VIDEO_SIZE_RANGE SizeRange;                                   // input
+    BOOL Protected;                                                     // input
+    UINT64 MotionVectorHeapMemoryPoolL0Size;                            // output
+    UINT64 MotionVectorHeapMemoryPoolL1Size;                            // output
+    UINT64 MotionEstimatorMemoryPoolL0Size;                             // output
+    UINT64 MotionEstimatorMemoryPoolL1Size;                             // output
+} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_SIZE;
+
+typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_DESC
+{
+    UINT NodeMask;
+    DXGI_FORMAT InputFormat;
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
+    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
+    D3D12_VIDEO_SIZE_RANGE SizeRange;
+    
+} D3D12_VIDEO_MOTION_ESTIMATOR_DESC;
+
+[uuid(33FDAE0E-098B-428F-87BB-34B695DE08F8), object, local, pointer_default(unique)]
+interface ID3D12VideoMotionEstimator
+    : ID3D12Pageable
+{
+    D3D12_VIDEO_MOTION_ESTIMATOR_DESC GetDesc();
+    
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+typedef struct D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC
+{
+    UINT NodeMask;
+    DXGI_FORMAT InputFormat;
+    D3D12_VIDEO_MOTION_ESTIMATOR_SEARCH_BLOCK_SIZE BlockSize;
+    D3D12_VIDEO_MOTION_ESTIMATOR_VECTOR_PRECISION Precision;
+    D3D12_VIDEO_SIZE_RANGE SizeRange;
+    
+} D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC;
+
+[uuid(5BE17987-743A-4061-834B-23D22DAEA505), object, local, pointer_default(unique)]
+interface ID3D12VideoMotionVectorHeap
+    : ID3D12Pageable
+{
+    D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC GetDesc();
+    
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+[uuid(981611AD-A144-4C83-9890-F30E26D658AB), object, local, pointer_default(unique)]
+interface ID3D12VideoDevice1
+    : ID3D12VideoDevice
+{
+    HRESULT CreateVideoMotionEstimator(
+        [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_DESC* pDesc,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionEstimator, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionEstimator
+        );
+
+    HRESULT CreateVideoMotionVectorHeap(
+        [annotation("_In_")] const D3D12_VIDEO_MOTION_VECTOR_HEAP_DESC* pDesc,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoMotionVectorHeap, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoMotionVectorHeap
+        );
+}
+
+typedef struct D3D12_RESOURCE_COORDINATE
+{
+    // Coordinate values below index pixels.
+    UINT64 X; // Used for buffer, 1D, 2D, 3D
+    UINT Y; // Used for 2D, 3D
+    UINT Z; // Used for 3D
+    UINT SubresourceIndex; // indexes into mips, arrays, and planes. Used for 1D, 2D, 3D
+} D3D12_RESOURCE_COORDINATE;
+
+typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT
+{
+    ID3D12VideoMotionVectorHeap* pMotionVectorHeap;
+} D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT;
+
+typedef struct D3D12_VIDEO_MOTION_ESTIMATOR_INPUT
+{
+    ID3D12Resource*                     pInputTexture2D;
+    UINT                                InputSubresourceIndex;
+    ID3D12Resource*                     pReferenceTexture2D;
+    UINT                                ReferenceSubresourceIndex;
+    ID3D12VideoMotionVectorHeap*        pHintMotionVectorHeap;
+} D3D12_VIDEO_MOTION_ESTIMATOR_INPUT;
+
+typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT
+{
+    ID3D12Resource*             pMotionVectorTexture2D;
+    D3D12_RESOURCE_COORDINATE   MotionVectorCoordinate;
+} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT;
+
+typedef struct D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT
+{
+    ID3D12VideoMotionVectorHeap*                    pMotionVectorHeap;
+    UINT                                            PixelWidth;
+    UINT                                            PixelHeight;
+} D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT;
+
+[uuid(8455293A-0CBD-4831-9B39-FBDBAB724723), object, local, pointer_default(unique)]
+interface ID3D12VideoEncodeCommandList
+    : ID3D12CommandList
+{
+    HRESULT Close();
+
+    HRESULT Reset(
+        [annotation("_In_")] ID3D12CommandAllocator* pAllocator
+        );
+
+    void ClearState();
+
+    void ResourceBarrier(
+        [annotation("_In_")] UINT NumBarriers,
+        [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
+        );
+
+    void DiscardResource(
+        [annotation("_In_")] ID3D12Resource* pResource,
+        [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
+        );
+
+    void BeginQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void EndQuery(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT Index
+        );
+
+    void ResolveQueryData(
+        [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
+        [annotation("_In_")] D3D12_QUERY_TYPE Type,
+        [annotation("_In_")] UINT StartIndex,
+        [annotation("_In_")] UINT NumQueries,
+        [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
+        [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
+        );
+
+    void SetPredication(
+        [annotation("_In_opt_")] ID3D12Resource* pBuffer,
+        [annotation("_In_")] UINT64 AlignedBufferOffset,
+        [annotation("_In_")] D3D12_PREDICATION_OP Operation
+        );
+
+    void SetMarker(
+        UINT Metadata,
+        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
+        UINT Size);
+
+    void BeginEvent(
+        UINT Metadata,
+        [annotation("_In_reads_bytes_opt_(Size)")] const void* pData,
+        UINT Size);
+
+    void EndEvent();
+
+    void EstimateMotion(
+        [annotation("_In_")] ID3D12VideoMotionEstimator* pMotionEstimator,
+        [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_OUTPUT* pOutputArguments,
+        [annotation("_In_")] const D3D12_VIDEO_MOTION_ESTIMATOR_INPUT* pInputArguments
+        );
+    
+    void ResolveMotionVectorHeap(
+        const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_OUTPUT* pOutputArguments,
+        const D3D12_RESOLVE_VIDEO_MOTION_VECTOR_HEAP_INPUT* pInputArguments
+        );
+
+    void WriteBufferImmediate(
+        UINT Count,
+        [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
+        [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
+        );
+
+    void SetProtectedResourceSession(
+        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
+        );
+}
+
+typedef enum D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS
+{
+    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_NONE                  = 0x0,
+    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAG_SUPPORTED             = 0x1,
+
+} D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS )")
+
+// D3D12_FEATURE_VIDEO_DECODE_PROTECTED_RESOURCES
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES
+{
+    UINT NodeIndex;                                                                 // input
+    D3D12_VIDEO_DECODE_CONFIGURATION Configuration;                                 // input
+    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;                      // output
+} D3D12_FEATURE_DATA_VIDEO_DECODE_PROTECTED_RESOURCES;
+
+// D3D12_FEATURE_VIDEO_PROCESS_PROTECTED_RESOURCES
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES
+{
+    UINT NodeIndex;                                                                 // input
+    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;                      // output
+} D3D12_FEATURE_DATA_VIDEO_PROCESS_PROTECTED_RESOURCES;
+
+// D3D12_FEATURE_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
+typedef struct D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES
+{
+    UINT NodeIndex;                                                                 // input
+    D3D12_VIDEO_PROTECTED_RESOURCE_SUPPORT_FLAGS SupportFlags;                      // output
+} D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR_PROTECTED_RESOURCES;
+
+//D3D12_FEATURE_VIDEO_DECODER_HEAP_SIZE1
+typedef struct D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1
+{
+    D3D12_VIDEO_DECODER_HEAP_DESC VideoDecoderHeapDesc;         // input
+    BOOL Protected;                                             // input
+    UINT64 MemoryPoolL0Size;                                    // output
+    UINT64 MemoryPoolL1Size;                                    // output
+} D3D12_FEATURE_DATA_VIDEO_DECODER_HEAP_SIZE1;
+
+// D3D12_FEATURE_VIDEO_PROCESSOR_SIZE1
+typedef struct D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1
+{
+    UINT NodeMask;
+    const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc;    // input
+    UINT NumInputStreamDescs;                                           // input
+    const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs;     // input
+    BOOL Protected;                                                     // input
+    UINT64 MemoryPoolL0Size;                                            // output
+    UINT64 MemoryPoolL1Size;                                            // output
+} D3D12_FEATURE_DATA_VIDEO_PROCESSOR_SIZE1;
+
+typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE
+{
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CREATION = 0,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_INPUT = 3,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_CAPS_OUTPUT = 4,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_INPUT = 5,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE_DEVICE_EXECUTE_OUTPUT = 6,
+} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE;
+
+typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE
+{
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT8 = 0, 
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT16 = 1,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT32 = 2,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_UINT64 = 3, 
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT8 = 4, 
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT16 = 5,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT32 = 6,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_SINT64 = 7,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_FLOAT = 8,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_DOUBLE = 9,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE_RESOURCE = 10,
+} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE;
+
+typedef enum D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS
+{
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_NONE = 0x00000000,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_READ = 0x00000001,
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAG_WRITE = 0x00000002
+} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS;
+
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS )")
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT
+{
+    UINT NodeIndex;        // in
+    UINT CommandCount;    // out
+} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_COUNT;
+
+typedef struct D3D12_VIDEO_EXTENSION_COMMAND_INFO
+{
+    GUID CommandId;
+    LPCWSTR Name;
+    D3D12_COMMAND_LIST_SUPPORT_FLAGS CommandListSupportFlags;
+} D3D12_VIDEO_EXTENSION_COMMAND_INFO;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS
+{
+    UINT NodeIndex;
+    UINT CommandCount;
+    [annotation("_Field_size_full_(CommandCount)")] D3D12_VIDEO_EXTENSION_COMMAND_INFO* pCommandInfos;
+} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMANDS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT
+{
+    GUID CommandId;                                          // in
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;     // in
+    UINT ParameterCount;                                     // out
+    UINT ParameterPacking;                                   // out
+} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETER_COUNT;
+
+typedef struct D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO
+{
+    LPCWSTR Name;
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_TYPE Type;
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_FLAGS Flags;
+} D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS
+{
+    GUID CommandId;  // in
+    D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_STAGE Stage;  // in
+    UINT ParameterCount; // in
+    [annotation("_Field_size_full_(ParameterCount)")] D3D12_VIDEO_EXTENSION_COMMAND_PARAMETER_INFO* pParameterInfos; // out
+} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_PARAMETERS;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT
+{
+    UINT NodeIndex;
+    GUID CommandId;
+    [annotation("_Field_size_bytes_full_opt_(InputDataSizeInBytes)")] const void *pInputData;
+    SIZE_T InputDataSizeInBytes;
+    [annotation("_Field_size_bytes_full_opt_(OutputDataSizeInBytes)")] void *pOutputData;
+    SIZE_T OutputDataSizeInBytes;
+} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE
+{
+    UINT NodeIndex;
+    GUID CommandId;
+    [annotation("_Field_size_bytes_full_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters;
+    SIZE_T CreationParametersSizeInBytes;
+    UINT64 MemoryPoolL0Size;                                            // output
+    UINT64 MemoryPoolL1Size;                                            // output
+} D3D12_FEATURE_DATA_VIDEO_EXTENSION_COMMAND_SIZE;
+
+typedef struct D3D12_VIDEO_EXTENSION_COMMAND_DESC
+{
+    UINT NodeMask;
+    GUID CommandId;
+} D3D12_VIDEO_EXTENSION_COMMAND_DESC;
+
+[uuid(79A2E5FB-CCD2-469A-9FDE-195D10951F7E), object, local, pointer_default(unique)]
+interface ID3D12VideoDecoder1
+    : ID3D12VideoDecoder
+{
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+[uuid(DA1D98C5-539F-41B2-BF6B-1198A03B6D26), object, local, pointer_default(unique)]
+interface ID3D12VideoDecoderHeap1
+    : ID3D12VideoDecoderHeap
+{
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+[uuid(F3CFE615-553F-425C-86D8-EE8C1B1FB01C), object, local, pointer_default(unique)]
+interface ID3D12VideoProcessor1
+    : ID3D12VideoProcessor
+{
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+[uuid(554E41E8-AE8E-4A8C-B7D2-5B4F274A30E4), object, local, pointer_default(unique)]
+interface ID3D12VideoExtensionCommand
+    : ID3D12Pageable
+{
+    D3D12_VIDEO_EXTENSION_COMMAND_DESC GetDesc();
+
+    HRESULT GetProtectedResourceSession(
+        [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
+        [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
+}
+
+[uuid(F019AC49-F838-4A95-9B17-579437C8F513), object, local, pointer_default(unique)]
+interface ID3D12VideoDevice2
+    : ID3D12VideoDevice1
+{
+    HRESULT CreateVideoDecoder1(
+        [annotation("_In_")] const D3D12_VIDEO_DECODER_DESC* pDesc,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoder1, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoder
+        );
+
+    HRESULT CreateVideoDecoderHeap1(
+        [annotation("_In_")] const D3D12_VIDEO_DECODER_HEAP_DESC* pVideoDecoderHeapDesc,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoDecoderHeap1, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppVideoDecoderHeap
+        );
+
+    HRESULT CreateVideoProcessor1(
+        UINT NodeMask,
+        [annotation("_In_")] const D3D12_VIDEO_PROCESS_OUTPUT_STREAM_DESC* pOutputStreamDesc,
+        UINT NumInputStreamDescs,
+        [annotation("_In_reads_(NumInputStreamDescs)")]const D3D12_VIDEO_PROCESS_INPUT_STREAM_DESC *pInputStreamDescs,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedResourceSession,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoProcessor1, 
+        [out, iid_is(riid), annotation("_COM_Outptr_")] void **ppVideoProcessor
+        );
+
+    HRESULT CreateVideoExtensionCommand(
+        [annotation("_In_")] const D3D12_VIDEO_EXTENSION_COMMAND_DESC* pDesc,        
+        [annotation("_In_reads_bytes_(CreationParametersDataSizeInBytes)")] const void* pCreationParameters, 
+        SIZE_T CreationParametersDataSizeInBytes,
+        [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedResourceSession,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoExtensionCommand, 
+        [annotation("_COM_Outptr_")] void** ppVideoExtensionCommand);
+
+    HRESULT ExecuteExtensionCommand(
+        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
+        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
+        SIZE_T ExecutionParametersSizeInBytes,
+        [annotation("_Out_writes_bytes_(OutputDataSizeInBytes)")] void *pOutputData,
+        SIZE_T OutputDataSizeInBytes
+        );
+}
+
+[uuid(6e120880-c114-4153-8036-d247051e1729), object, local, pointer_default(unique)]
+interface ID3D12VideoDecodeCommandList2
+    : ID3D12VideoDecodeCommandList1
+{
+    void SetProtectedResourceSession(
+        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
+        );
+
+    void InitializeExtensionCommand(
+        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
+        [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, 
+        SIZE_T InitializationParametersSizeInBytes);
+
+    void ExecuteExtensionCommand(
+        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
+        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
+        SIZE_T ExecutionParametersSizeInBytes);
+}
+
+[uuid(2aee8c37-9562-42da-8abf-61efeb2e4513), object, local, pointer_default(unique)]
+interface ID3D12VideoDecodeCommandList3
+    : ID3D12VideoDecodeCommandList2
+{
+    void Barrier(
+        UINT32 NumBarrierGroups,
+        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
+        );
+}
+
+[uuid(db525ae4-6ad6-473c-baa7-59b2e37082e4), object, local, pointer_default(unique)]
+interface ID3D12VideoProcessCommandList2
+    : ID3D12VideoProcessCommandList1
+{
+    
+    void SetProtectedResourceSession(
+        [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
+        );
+
+    void InitializeExtensionCommand(
+        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
+        [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, 
+        SIZE_T InitializationParametersSizeInBytes);
+
+    void ExecuteExtensionCommand(
+        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
+        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
+        SIZE_T ExecutionParametersSizeInBytes);
+}
+
+[uuid(1a0a4ca4-9f08-40ce-9558-b411fd2666ff), object, local, pointer_default(unique)]
+interface ID3D12VideoProcessCommandList3
+    : ID3D12VideoProcessCommandList2
+{
+    void Barrier(
+        UINT32 NumBarrierGroups,
+        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
+        );
+}
+
+[uuid(94971eca-2bdb-4769-88cf-3675ea757ebc), object, local, pointer_default(unique)]
+interface ID3D12VideoEncodeCommandList1
+    : ID3D12VideoEncodeCommandList
+{
+    void InitializeExtensionCommand(
+        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
+        [annotation("_In_reads_bytes_(InitializationParametersSizeInBytes)")] const void *pInitializationParameters, 
+        SIZE_T InitializationParametersSizeInBytes);
+
+    void ExecuteExtensionCommand(
+        [annotation("_In_")] ID3D12VideoExtensionCommand* pExtensionCommand,
+        [annotation("_In_reads_bytes_(ExecutionParametersSizeInBytes)")] const void *pExecutionParameters, 
+        SIZE_T ExecutionParametersSizeInBytes);
+}
+
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG2, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG1_AND_MPEG2, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO_PROGRESSIVE, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_STEREO, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_H264_MULTIVIEW, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_SIMPLE, 0xefd64d74, 0xc9e8,0x41d7,0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MPEG4PT2_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MONOCHROME10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_EXT, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_HEVC_MAIN16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP9_10BIT_PROFILE2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_VP8, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_PROFILE2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_AV1_12BIT_PROFILE2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_420, 0x725cb506, 0xc29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x4); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_444, 0xd95161f9, 0xd44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_MJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); ")
+cpp_quote("DEFINE_GUID(D3D12_VIDEO_DECODE_PROFILE_JPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);")
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Video Encoder
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_PROFILE
+{
+    D3D12_VIDEO_ENCODER_AV1_PROFILE_MAIN = 0,
+    D3D12_VIDEO_ENCODER_AV1_PROFILE_HIGH = 1,
+    D3D12_VIDEO_ENCODER_AV1_PROFILE_PROFESSIONAL = 2,
+} D3D12_VIDEO_ENCODER_AV1_PROFILE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_LEVELS
+{   // These values are defined according to the AV1 codec standard spec
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_0 = 0,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_1 = 1,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_2 = 2,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_2_3 = 3,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_0 = 4,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_1 = 5,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_2 = 6,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_3_3 = 7,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_0 = 8,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_1 = 9,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_2 = 10,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_4_3 = 11,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_0 = 12,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_1 = 13,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_2 = 14,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_5_3 = 15,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_0 = 16,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_1 = 17,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_2 = 18,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_6_3 = 19,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_0 = 20,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_1 = 21,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_2 = 22,
+    D3D12_VIDEO_ENCODER_AV1_LEVELS_7_3 = 23,
+} D3D12_VIDEO_ENCODER_AV1_LEVELS;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_TIER
+{
+    D3D12_VIDEO_ENCODER_AV1_TIER_MAIN = 0,
+    D3D12_VIDEO_ENCODER_AV1_TIER_HIGH = 1,
+} D3D12_VIDEO_ENCODER_AV1_TIER;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS
+{
+    D3D12_VIDEO_ENCODER_AV1_LEVELS Level;
+    D3D12_VIDEO_ENCODER_AV1_TIER Tier;
+} D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS
+{
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_128x128_SUPERBLOCK = 0x1,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FILTER_INTRA = 0x2,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_EDGE_FILTER = 0x4,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTERINTRA_COMPOUND = 0x8,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MASKED_COMPOUND = 0x10,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_WARPED_MOTION = 0x20,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DUAL_FILTER = 0x40,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_JNT_COMP = 0x80,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FORCED_INTEGER_MOTION_VECTORS = 0x100,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SUPER_RESOLUTION = 0x200,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_RESTORATION_FILTER = 0x400,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_PALETTE_ENCODING = 0x800,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CDEF_FILTERING = 0x1000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_INTRA_BLOCK_COPY = 0x2000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x4000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ORDER_HINT_TOOLS = 0x8000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_AUTO_SEGMENTATION = 0x10000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_CUSTOM_SEGMENTATION = 0x20000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_LOOP_FILTER_DELTAS = 0x40000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_DELTAS = 0x80000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_QUANTIZATION_MATRIX = 0x100000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_REDUCED_TX_SET = 0x200000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_MOTION_MODE_SWITCHABLE = 0x400000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_ALLOW_HIGH_PRECISION_MV = 0x800000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_SKIP_MODE_PRESENT = 0x1000000,
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAG_DELTA_LF_PARAMS = 0x2000000,
+} D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE {
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4 = 0,
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST = 1,
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT = 2,
+} D3D12_VIDEO_ENCODER_AV1_TX_MODE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS {
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_ONLY4x4 = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_ONLY4x4),
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_LARGEST = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_LARGEST),
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAG_SELECT = (1 << D3D12_VIDEO_ENCODER_AV1_TX_MODE_SELECT),
+} D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS {
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP = 0,
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH = 1,
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP = 2,
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR = 3,
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE = 4,
+} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS {
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP),
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SMOOTH = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SMOOTH),
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_EIGHTTAP_SHARP = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_EIGHTTAP_SHARP),
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_BILINEAR = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_BILINEAR),
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAG_SWITCHABLE = (1 << D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_SWITCHABLE),
+} D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE {
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_4x4 = 0,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_8x8 = 1,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_16x16 = 2,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_32x32 = 3,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE_64x64 = 4,
+} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE {
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED = 0,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q = 1,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V = 2,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H = 3,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U = 4,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V = 5,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME = 6,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP = 7,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV = 8,
+} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS {
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_NONE = 0,
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_DISABLED = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_DISABLED),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_Q = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_Q),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_V),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_Y_H = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_Y_H),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_U = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_U),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_LF_V = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_LF_V),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_REF_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_REF_FRAME),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_SKIP = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_SKIP),
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAG_ALT_GLOBALMV = (1 << D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_ALT_GLOBALMV),
+} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE {
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_DISABLED = 0,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SWITCHABLE = 1,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_WIENER = 2,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE_SGRPROJ = 3,
+} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE {
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_DISABLED = 0,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_32x32 = 1,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_64x64 = 2,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_128x128 = 3,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE_256x256 = 4,
+} D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS {
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_NOT_SUPPORTED = 0x0,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_32x32 = 0x1,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_64x64 = 0x2,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_128x128 = 0x4,
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAG_256x256 = 0x8,
+} D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION
+{
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY = 0,
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION = 1,
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM = 2,
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE = 3,
+} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS {
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_NONE = 0, // None is supported, reference warp motion arguments are ignored and is_global syntax is false for all references
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_IDENTITY = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_IDENTITY),
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_TRANSLATION = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_TRANSLATION),
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_ROTZOOM = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_ROTZOOM),
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAG_AFFINE = (1 << D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_AFFINE),
+} D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS {
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_NONE = 0,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION = 0x1,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_QUANTIZATION_DELTA = 0x2,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER = 0x4,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_LOOP_FILTER_DELTA = 0x8,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CDEF_DATA = 0x10,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_CONTEXT_UPDATE_TILE_ID = 0x20,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_COMPOUND_PREDICTION_MODE = 0x40,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_PRIMARY_REF_FRAME = 0x80,
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAG_REFERENCE_INDICES = 0x100,
+} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[3][3];
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4]; // Different for D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE types
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
+    D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
+    UINT MaxTemporalLayers;
+    UINT MaxSpatialLayers;
+} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE
+{
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME = 0,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME = 1,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME = 2,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME = 3,
+} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS {
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_KEY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_KEY_FRAME),
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTER_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTER_FRAME),
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_INTRA_ONLY_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_INTRA_ONLY_FRAME),
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAG_SWITCH_FRAME = (1 << D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_SWITCH_FRAME),
+} D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
+{
+    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_SINGLE_REFERENCE = 0,
+    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE_COMPOUND_REFERENCE = 1,
+} D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT {
+    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE PredictionMode;
+    UINT MaxUniqueReferencesPerFrame;
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE_FLAGS SupportedFrameTypes;
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS SupportedReferenceWarpedMotionFlags;
+} D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION {
+    D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS FeatureFlags;
+    UINT OrderHintBitsMinus1;
+} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE
+{
+    UINT IntraDistance;
+    UINT InterFramePeriod;
+} D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
+{
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
+    INT TransformationMatrix[8];
+    BOOL InvalidAffineSet; // Valid or invalid on affine set
+} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
+{
+    UINT ReconstructedPictureResourceIndex;
+    UINT TemporalLayerIndexPlus1;
+    UINT SpatialLayerIndexPlus1;
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
+    // Only used if supported in D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION_FLAGS, ignored by driver otherwise
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
+    UINT OrderHint;
+    UINT PictureIndex;
+} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS
+{
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_ERROR_RESILIENT_MODE = 0x1,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_CDF_UPDATE = 0x2,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_PALETTE_ENCODING = 0x4,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_SKIP_MODE = 0x8,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FRAME_REFERENCE_MOTION_VECTORS = 0x10,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_FORCE_INTEGER_MOTION_VECTORS = 0x20,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_INTRA_BLOCK_COPY = 0x40,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_USE_SUPER_RESOLUTION = 0x80,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_DISABLE_FRAME_END_UPDATE_CDF = 0x100,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_AUTO = 0x200,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_FRAME_SEGMENTATION_CUSTOM = 0x400,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ENABLE_WARPED_MOTION = 0x800,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_REDUCED_TX_SET = 0x1000,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_MOTION_MODE_SWITCHABLE = 0x2000,
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAG_ALLOW_HIGH_PRECISION_MV = 0x4000,
+
+} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
+} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
+    UINT64 EnabledFeatures; // D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS
+    // For the enabled features in EnabledFeatures, the array below
+    // is indexed by D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE - 1
+    INT64 FeatureValue[8];
+} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
+    UINT64 UpdateMap;
+    UINT64 TemporalUpdate;
+    UINT64 UpdateData;
+    UINT64 NumSegments;
+    D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
+} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
+    UINT SegmentsMapByteSize;
+    UINT8* pSegmentsMap;
+} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
+    UINT64 LoopFilterLevel[2];
+    UINT64 LoopFilterLevelU;
+    UINT64 LoopFilterLevelV;
+    UINT64 LoopFilterSharpnessLevel;
+    UINT64 LoopFilterDeltaEnabled;
+    // loop_filter_delta_update = UpdateRefDelta || UpdateModeDelta
+    UINT64 UpdateRefDelta;
+    INT64 RefDeltas[8];
+    UINT64 UpdateModeDelta;
+    INT64 ModeDeltas[2];
+} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
+    UINT64 DeltaLFPresent;
+    UINT64 DeltaLFMulti;
+    UINT64 DeltaLFRes;
+} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
+    UINT64 BaseQIndex;
+    INT64 YDCDeltaQ;
+    INT64 UDCDeltaQ;
+    INT64 UACDeltaQ;
+    INT64 VDCDeltaQ;
+    INT64 VACDeltaQ;
+    UINT64 UsingQMatrix;
+    UINT64 QMY;
+    UINT64 QMU;
+    UINT64 QMV;
+} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
+    UINT64 DeltaQPresent;
+    UINT64 DeltaQRes;
+} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
+    UINT64 CdefBits;
+    UINT64 CdefDampingMinus3;
+    UINT64 CdefYPriStrength[8];
+    UINT64 CdefUVPriStrength[8];
+    UINT64 CdefYSecStrength[8];
+    UINT64 CdefUVSecStrength[8];
+} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
+{
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
+    D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
+    D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
+    D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
+    D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
+    UINT SuperResDenominator;
+    UINT OrderHint;
+    UINT PictureIndex;
+    UINT TemporalLayerIndexPlus1;
+    UINT SpatialLayerIndexPlus1;
+    D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
+    UINT ReferenceIndices[7];
+    UINT PrimaryRefFrame;
+    UINT RefreshFrameFlags;
+    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
+    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
+    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
+    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
+    D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
+    UINT QPMapValuesCount;
+    [annotation("_Field_size_full_(QPMapValuesCount)")] INT16* pRateControlQPMap;
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
+} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES
+{
+    UINT64 RowCount;
+    UINT64 ColCount;
+    UINT64 RowHeights[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS];
+    UINT64 ColWidths[D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS];
+    UINT64 ContextUpdateTileId;
+} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES;
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
+{
+    UINT64 CompoundPredictionType; // D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE
+    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
+    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
+    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
+    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
+    D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
+    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
+    UINT64 PrimaryRefFrame; // Aligned to 64 for use of post encode metadata with predication
+    UINT64 ReferenceIndices[7]; // Aligned to 64 for use of post encode metadata with predication
+} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
+
+//
+// Rate control API
+//
+
+typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE
+{
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_ABSOLUTE_QP_MAP = 0,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CQP  = 1,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_CBR  = 2,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_VBR  = 3,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE_QVBR = 4,
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE;
+
+typedef enum D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS
+{
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_DELTA_QP = 0x1,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_FRAME_ANALYSIS = 0x2,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QP_RANGE = 0x4,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_INITIAL_QP = 0x8,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_MAX_FRAME_SIZE = 0x10,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_VBV_SIZES = 0x20,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_EXTENSION1_SUPPORT = 0x40,
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAG_ENABLE_QUALITY_VS_SPEED = 0x80,
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP {
+    UINT ConstantQP_FullIntracodedFrame;
+    UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
+    UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1 {
+    UINT ConstantQP_FullIntracodedFrame;
+    UINT ConstantQP_InterPredictedFrame_PrevRefOnly;
+    UINT ConstantQP_InterPredictedFrame_BiDirectionalRef;
+    UINT QualityVsSpeed;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR {
+    UINT InitialQP;
+    UINT MinQP;
+    UINT MaxQP;
+    UINT64 MaxFrameBitSize;
+    UINT64 TargetBitRate;
+    UINT64 VBVCapacity;
+    UINT64 InitialVBVFullness;    
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1 {
+    UINT InitialQP;
+    UINT MinQP;
+    UINT MaxQP;
+    UINT64 MaxFrameBitSize;
+    UINT64 TargetBitRate;
+    UINT64 VBVCapacity;
+    UINT64 InitialVBVFullness;    
+    UINT QualityVsSpeed;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR {
+    UINT InitialQP;
+    UINT MinQP;
+    UINT MaxQP;
+    UINT64 MaxFrameBitSize;
+    UINT64 TargetAvgBitRate;    
+    UINT64 PeakBitRate;
+    UINT64 VBVCapacity;
+    UINT64 InitialVBVFullness;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1 {
+    UINT InitialQP;
+    UINT MinQP;
+    UINT MaxQP;
+    UINT64 MaxFrameBitSize;
+    UINT64 TargetAvgBitRate;    
+    UINT64 PeakBitRate;
+    UINT64 VBVCapacity;
+    UINT64 InitialVBVFullness;
+    UINT QualityVsSpeed;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR {
+    UINT InitialQP;
+    UINT MinQP;
+    UINT MaxQP;
+    UINT64 MaxFrameBitSize;
+    UINT64 TargetAvgBitRate;    
+    UINT64 PeakBitRate;
+    UINT ConstantQualityTarget;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1
+{
+    UINT InitialQP;
+    UINT MinQP;
+    UINT MaxQP;
+    UINT64 MaxFrameBitSize;
+    UINT64 TargetAvgBitRate;
+    UINT64 PeakBitRate;
+    UINT ConstantQualityTarget;
+    UINT64 VBVCapacity;
+    UINT64 InitialVBVFullness;
+    UINT QualityVsSpeed;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP {
+    UINT QualityVsSpeed;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS
+{
+    UINT DataSize;
+    union
+    {
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP* pConfiguration_CQP;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR* pConfiguration_CBR;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR* pConfiguration_VBR;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR* pConfiguration_QVBR;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CQP1* pConfiguration_CQP1;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_CBR1* pConfiguration_CBR1;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_VBR1* pConfiguration_VBR1;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_QVBR1* pConfiguration_QVBR1;
+        const D3D12_VIDEO_ENCODER_RATE_CONTROL_ABSOLUTE_QP_MAP* pConfiguration_AbsoluteQPMap;
+    };
+} D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS;
+
+typedef struct D3D12_VIDEO_ENCODER_RATE_CONTROL {
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE Mode;
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_CONFIGURATION_PARAMS ConfigParams;
+    DXGI_RATIONAL TargetFrameRate;
+} D3D12_VIDEO_ENCODER_RATE_CONTROL;
+
+//
+// Video Encoder support API
+//
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC
+{
+    D3D12_VIDEO_ENCODER_CODEC_H264  = 0,
+    D3D12_VIDEO_ENCODER_CODEC_HEVC = 1,
+    D3D12_VIDEO_ENCODER_CODEC_AV1 = 2,
+} D3D12_VIDEO_ENCODER_CODEC;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC
+{
+    UINT NodeIndex;                             // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;            // input
+    BOOL IsSupported;                           // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC; 
+
+typedef enum D3D12_VIDEO_ENCODER_PROFILE_H264
+{
+    D3D12_VIDEO_ENCODER_PROFILE_H264_MAIN = 0,
+    D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH = 1,
+    D3D12_VIDEO_ENCODER_PROFILE_H264_HIGH_10 = 2,
+} D3D12_VIDEO_ENCODER_PROFILE_H264;
+
+typedef enum D3D12_VIDEO_ENCODER_PROFILE_HEVC
+{
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN = 0,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10 = 1,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12 = 2,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_422 = 3,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_422 = 4,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN_444 = 5,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN10_444 = 6,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN12_444 = 7,
+    D3D12_VIDEO_ENCODER_PROFILE_HEVC_MAIN16_444 = 8,
+} D3D12_VIDEO_ENCODER_PROFILE_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC
+{
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_PROFILE_H264* pH264Profile;
+        D3D12_VIDEO_ENCODER_PROFILE_HEVC* pHEVCProfile;
+        D3D12_VIDEO_ENCODER_AV1_PROFILE* pAV1Profile;
+    };
+} D3D12_VIDEO_ENCODER_PROFILE_DESC;
+
+typedef enum D3D12_VIDEO_ENCODER_LEVELS_H264
+{
+    D3D12_VIDEO_ENCODER_LEVELS_H264_1 = 0,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_1b = 1,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_11 = 2,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_12 = 3,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_13 = 4,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_2 = 5,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_21 = 6,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_22 = 7,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_3 = 8,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_31 = 9,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_32 = 10,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_4 = 11,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_41 = 12,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_42 = 13,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_5 = 14,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_51 = 15,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_52 = 16,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_6 = 17,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_61 = 18,
+    D3D12_VIDEO_ENCODER_LEVELS_H264_62 = 19,
+} D3D12_VIDEO_ENCODER_LEVELS_H264;
+
+typedef enum D3D12_VIDEO_ENCODER_TIER_HEVC
+{
+    D3D12_VIDEO_ENCODER_TIER_HEVC_MAIN = 0,
+    D3D12_VIDEO_ENCODER_TIER_HEVC_HIGH = 1,
+} D3D12_VIDEO_ENCODER_TIER_HEVC;
+
+typedef enum D3D12_VIDEO_ENCODER_LEVELS_HEVC
+{
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 = 0,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 = 1,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 = 2,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 = 3,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 = 4,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 = 5,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 = 6,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 = 7,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 = 8,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 = 9,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 = 10,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 = 11,
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 = 12,
+} D3D12_VIDEO_ENCODER_LEVELS_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC
+{
+    D3D12_VIDEO_ENCODER_LEVELS_HEVC Level;
+    D3D12_VIDEO_ENCODER_TIER_HEVC Tier;
+} D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
+{
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_LEVELS_H264* pH264LevelSetting;
+        D3D12_VIDEO_ENCODER_LEVEL_TIER_CONSTRAINTS_HEVC* pHEVCLevelSetting;
+        D3D12_VIDEO_ENCODER_AV1_LEVEL_TIER_CONSTRAINTS* pAV1LevelSetting;
+    };
+} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL
+{
+    UINT NodeIndex;                                      // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                     // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;            // input
+    BOOL IsSupported;                                    // output
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING MinSupportedLevel; // output
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING MaxSupportedLevel; // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_PROFILE_LEVEL;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
+{
+    UINT Width;
+    UINT Height;
+} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC
+{
+    UINT WidthRatio;
+    UINT HeightRatio;
+} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT
+{
+    UINT NodeIndex;                                              // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                             // input
+    UINT ResolutionRatiosCount;                                  // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION_RATIOS_COUNT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION
+{
+    UINT NodeIndex;                                              // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                             // input
+    UINT ResolutionRatiosCount;                                 // input
+    BOOL IsSupported;                                           // output
+    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MinResolutionSupported; // output
+    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC MaxResolutionSupported; // output
+    UINT ResolutionWidthMultipleRequirement;    // output
+    UINT ResolutionHeightMultipleRequirement;   // output
+    [annotation("_Field_size_full_(ResolutionRatiosCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_RATIO_DESC* pResolutionRatios;
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_OUTPUT_RESOLUTION;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT
+{
+    UINT NodeIndex;                                    // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                   // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;          // input
+    DXGI_FORMAT Format;                                // input
+    BOOL IsSupported;                                  // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_INPUT_FORMAT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE
+{
+    UINT NodeIndex;                                                 // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                                // input
+    D3D12_VIDEO_ENCODER_RATE_CONTROL_MODE RateControlMode;          // input
+    BOOL IsSupported;                                               // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_RATE_CONTROL_MODE;
+
+typedef enum D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE
+{
+    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE = 0,
+    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_ROW_BASED = 1,
+} D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE {
+    UINT NodeIndex;                                                     // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                                    // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                           // input
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;                            // input
+    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefreshMode;            // input
+    BOOL IsSupported;                                                   // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE;
+
+typedef enum D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
+{
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_FULL_FRAME = 0,
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION = 1,
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED  = 2,
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION = 3,    
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME = 4,
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_GRID_PARTITION = 5,
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_CONFIGURABLE_GRID_PARTITION = 6,
+} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE
+{
+    UINT NodeIndex;                                                         // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                                        // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                               // input
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;                                // input
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode;          // input
+    BOOL IsSupported;                                                       // output    
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE;
+
+typedef enum D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS
+{
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_NOT_SPECIFIED = 0x1,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_CODEC_CONSTRAINT = 0x2,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_HARDWARE_CONSTRAINT = 0x4,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_ROWS_COUNT = 0x8,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_COLS_COUNT = 0x10,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_WIDTH = 0x20,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_AREA = 0x40,
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAG_TOTAL_TILES = 0x80,
+
+} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT
+{
+    BOOL Use128SuperBlocks;
+    D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES TilesConfiguration;
+    D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_VALIDATION_FLAGS ValidationFlags;
+    UINT MinTileRows;
+    UINT MaxTileRows;
+    UINT MinTileCols;
+    UINT MaxTileCols;
+    UINT MinTileWidth;
+    UINT MaxTileWidth;
+    UINT MinTileArea;
+    UINT MaxTileArea;
+    UINT TileSizeBytesMinus1;
+} D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT {
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_AV1_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT* pAV1Support;
+    };
+} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG
+{
+    UINT NodeIndex; // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                           // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                  // input
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;                   // input
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionMode; // input
+    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC FrameResolution; // input
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG_SUPPORT CodecSupport; // input/output
+    BOOL IsSupported; // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_CONFIG;
+
+typedef enum D3D12_VIDEO_ENCODER_HEAP_FLAGS
+{
+    D3D12_VIDEO_ENCODER_HEAP_FLAG_NONE = 0x0,
+} D3D12_VIDEO_ENCODER_HEAP_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_HEAP_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_HEAP_DESC
+{
+    UINT NodeMask;  
+    D3D12_VIDEO_ENCODER_HEAP_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
+    D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING EncodeLevel;
+    UINT ResolutionsListCount;
+    [annotation("_Field_size_full_(ResolutionsListCount)")] const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
+} D3D12_VIDEO_ENCODER_HEAP_DESC;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE {
+  D3D12_VIDEO_ENCODER_HEAP_DESC HeapDesc;          // input
+  BOOL                          IsSupported;       // output
+  UINT64                        MemoryPoolL0Size;  // output
+  UINT64                        MemoryPoolL1Size;  // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_HEAP_SIZE;
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS
+{
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CABAC_ENCODING_SUPPORT = 0x1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x4,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_ADAPTIVE_8x8_TRANSFORM_ENCODING_SUPPORT = 0x8,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_SPATIAL_ENCODING_SUPPORT = 0x10,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_DIRECT_TEMPORAL_ENCODING_SUPPORT = 0x20,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x40,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x80,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = 0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES = 1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = 2,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING = 3,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES = 4,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = 5,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = 6,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES;
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_0_ALL_LUMA_CHROMA_SLICE_BLOCK_EDGES_ALWAYS_FILTERED),
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_1_DISABLE_ALL_SLICE_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_1_DISABLE_ALL_SLICE_BLOCK_EDGES),
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_2_DISABLE_SLICE_BOUNDARIES_BLOCKS = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_2_DISABLE_SLICE_BOUNDARIES_BLOCKS),
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_3_USE_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_3_USE_TWO_STAGE_DEBLOCKING),
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_4_DISABLE_CHROMA_BLOCK_EDGES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_4_DISABLE_CHROMA_BLOCK_EDGES),
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_5_DISABLE_CHROMA_BLOCK_EDGES_AND_LUMA_BOUNDARIES),
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAG_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING = (1 << D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_6_DISABLE_CHROMA_BLOCK_EDGES_AND_USE_LUMA_TWO_STAGE_DEBLOCKING),
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264 {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264_FLAGS SupportFlags;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODE_FLAGS DisableDeblockingFilterSupportedModes;
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264;
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS
+{
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_BFRAME_LTR_COMBINED_SUPPORT = 0x1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SLICE_CONSTRAINED_ENCODING_SUPPORT = 0x2,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CONSTRAINED_INTRAPREDICTION_SUPPORT = 0x4,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_SAO_FILTER_SUPPORT = 0x8,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_SUPPORT = 0x10,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_ASYMETRIC_MOTION_PARTITION_REQUIRED = 0x20,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_SUPPORT = 0x40,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_DISABLING_LOOP_FILTER_ACROSS_SLICES_SUPPORT = 0x80,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_P_FRAMES_IMPLEMENTED_AS_LOW_DELAY_B_FRAMES  = 0x100,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE_SUPPORT = 0x200,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_SUPPORT = 0x400,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_ROTATION_ENABLED_REQUIRED = 0x800,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_SUPPORT = 0x1000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT_ENABLED_REQUIRED = 0x2000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_SUPPORT = 0x4000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_IMPLICIT_RDPCM_ENABLED_REQUIRED = 0x8000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_SUPPORT = 0x10000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXPLICIT_RDPCM_ENABLED_REQUIRED = 0x20000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_SUPPORT = 0x40000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING_REQUIRED = 0x80000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_SUPPORT = 0x100000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_INTRA_SMOOTHING_DISABLED_REQUIRED = 0x200000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_SUPPORT = 0x400000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_HIGH_PRECISION_OFFSETS_ENABLED_REQUIRED = 0x800000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_SUPPORT = 0x1000000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION_ENABLED_REQUIRED = 0x2000000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_SUPPORT = 0x4000000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT_ENABLED_REQUIRED = 0x8000000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_SUPPORT = 0x10000000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CROSS_COMPONENT_PREDICTION_ENABLED_FLAG_REQUIRED = 0x20000000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_SUPPORT = 0x40000000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG_CHROMA_QP_OFFSET_LIST_ENABLED_FLAG_REQUIRED = 0x80000000, // 2^31 - 32 bit integer enum type
+
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 = 0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 = 1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_32x32 = 2,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_64x64 = 3,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE;
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 = 0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_8x8 = 1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 = 2,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_32x32 = 3,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
+    UCHAR max_transform_hierarchy_depth_inter;
+    UCHAR max_transform_hierarchy_depth_intra;
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC;
+
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1
+{
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_SUPPORT = 0x1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAG1_SEPARATE_COLOUR_PLANE_REQUIRED = 0x2,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1)")
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
+    UCHAR max_transform_hierarchy_depth_inter;
+    UCHAR max_transform_hierarchy_depth_intra;
+    UINT allowed_diff_cu_chroma_qp_offset_depth_values;
+    UINT allowed_log2_sao_offset_scale_luma_values;
+    UINT allowed_log2_sao_offset_scale_chroma_values;
+    UINT allowed_log2_max_transform_skip_block_size_minus2_values;
+    UINT allowed_chroma_qp_offset_list_len_minus1_values;
+    UINT allowed_cb_qp_offset_list_values[6];
+    UINT allowed_cr_qp_offset_list_values[6];
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264* pH264Support;
+        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC* pHEVCSupport;
+        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1* pHEVCSupport1;
+        D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT* pAV1Support;
+    };
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT {
+    UINT NodeIndex;                                                      // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                                     // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                            // input
+    BOOL IsSupported;                                                    // output
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT CodecSupportLimits;  // input/output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264 {
+    UINT MaxL0ReferencesForP;
+    UINT MaxL0ReferencesForB;
+    UINT MaxL1ReferencesForB;
+    UINT MaxLongTermReferences;   
+    UINT MaxDPBCapacity;
+} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC {
+    UINT MaxL0ReferencesForP;
+    UINT MaxL0ReferencesForB;
+    UINT MaxL1ReferencesForB;
+    UINT MaxLongTermReferences;   
+    UINT MaxDPBCapacity;
+} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_H264* pH264Support;
+        D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT_HEVC* pHEVCSupport;
+        D3D12_VIDEO_ENCODER_CODEC_AV1_PICTURE_CONTROL_SUPPORT* pAV1Support;
+    };
+} D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT {
+    UINT NodeIndex;                                                      // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                                     // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                            // input
+    BOOL IsSupported;                                                    // output
+    D3D12_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT PictureSupport;    // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_CODEC_PICTURE_CONTROL_SUPPORT;
+
+typedef enum D3D12_VIDEO_ENCODER_SUPPORT_FLAGS
+{
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_GENERAL_SUPPORT_OK = 0x1,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE = 0x2,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE = 0x4,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_VBV_SIZE_CONFIG_AVAILABLE = 0x8,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_FRAME_ANALYSIS_AVAILABLE = 0x10,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RECONSTRUCTED_FRAMES_REQUIRE_TEXTURE_ARRAYS = 0x20,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_DELTA_QP_AVAILABLE = 0x40,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE = 0x80,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_ADJUSTABLE_QP_RANGE_AVAILABLE = 0x100,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_INITIAL_QP_AVAILABLE = 0x200,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_MAX_FRAME_SIZE_AVAILABLE = 0x400,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE = 0x800,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_MOTION_ESTIMATION_PRECISION_MODE_LIMIT_AVAILABLE = 0x1000,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_EXTENSION1_SUPPORT = 0x2000,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_QUALITY_VS_SPEED_AVAILABLE = 0x4000,
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAG_READABLE_RECONSTRUCTED_PICTURE_LAYOUT_AVAILABLE = 0x8000,
+
+} D3D12_VIDEO_ENCODER_SUPPORT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SUPPORT_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS
+{
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_NONE = 0x0,  
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM = 0x2,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING = 0x4,    
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x8,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS)")
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_DISABLED = 0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_TEMPORAL = 1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES_SPATIAL = 2,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264 
+{
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAGS ConfigurationFlags;    
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_DIRECT_MODES DirectModeConfig;    
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_SLICES_DEBLOCKING_MODES DisableDeblockingFilterConfig;
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264;
+
+typedef enum D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS
+{
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES = 0x1,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ALLOW_REQUEST_INTRA_CONSTRAINED_SLICES = 0x2,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER = 0x4,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES = 0x8,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION = 0x10,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING = 0x20,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION = 0x40,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_ROTATION = 0x80,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_TRANSFORM_SKIP_CONTEXT = 0x100,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_IMPLICIT_RDPCM = 0x200,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXPLICIT_RDPCM = 0x400,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_EXTENDED_PRECISION_PROCESSING = 0x800,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_INTRA_SMOOTHING_DISABLED = 0x1000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_HIGH_PRECISION_OFFSETS = 0x2000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_PERSISTENT_RICE_ADAPTATION = 0x4000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_CABAC_BYPASS_ALIGNMENT = 0x8000,
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_SEPARATE_COLOUR_PLANE = 0x10000,
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC {
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAGS ConfigurationFlags;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
+    UCHAR max_transform_hierarchy_depth_inter;
+    UCHAR max_transform_hierarchy_depth_intra;
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
+{
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264* pH264Config;
+        D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC* pHEVCConfig;
+        D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION* pAV1Config;
+    };
+} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
+
+typedef struct D3D12_VIDEO_ENCODER_INTRA_REFRESH
+{
+    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE Mode;
+    UINT IntraRefreshDuration;
+} D3D12_VIDEO_ENCODER_INTRA_REFRESH;
+
+
+typedef enum D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE
+{
+    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_MAXIMUM = 0,
+    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_FULL_PIXEL = 1,
+    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_HALF_PIXEL = 2,
+    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_QUARTER_PIXEL = 3,
+    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL = 4,
+} D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS
+{
+    UINT MaxSubregionsNumber;
+    UINT MaxIntraRefreshFrameDuration;
+    UINT SubregionBlockPixelsSize;
+    UINT QPMapRegionPixelsSize;
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS;
+
+typedef enum D3D12_VIDEO_ENCODER_VALIDATION_FLAGS
+{
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_NOT_SUPPORTED = 0x1,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INPUT_FORMAT_NOT_SUPPORTED = 0x8,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_CODEC_CONFIGURATION_NOT_SUPPORTED = 0x10,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_MODE_NOT_SUPPORTED = 0x20,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RATE_CONTROL_CONFIGURATION_NOT_SUPPORTED = 0x40,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_INTRA_REFRESH_MODE_NOT_SUPPORTED = 0x80,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_MODE_NOT_SUPPORTED = 0x100,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_RESOLUTION_NOT_SUPPORTED_IN_LIST = 0x200,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_GOP_STRUCTURE_NOT_SUPPORTED = 0x800,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_SUBREGION_LAYOUT_DATA_NOT_SUPPORTED = 0x1000,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_QPMAP_NOT_SUPPORTED = 0x2000,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_DIRTY_REGIONS_NOT_SUPPORTED = 0x4000,
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAG_MOTION_SEARCH_NOT_SUPPORTED = 0x8000,
+} D3D12_VIDEO_ENCODER_VALIDATION_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_VALIDATION_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264
+{    
+    UINT GOPLength;
+    UINT PPicturePeriod;
+    UCHAR pic_order_cnt_type;
+    UCHAR log2_max_frame_num_minus4;
+    UCHAR log2_max_pic_order_cnt_lsb_minus4;
+} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264;
+
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
+{    
+    UINT GOPLength;
+    UINT PPicturePeriod;
+    UCHAR log2_max_pic_order_cnt_lsb_minus4;
+} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE
+{
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264* pH264GroupOfPictures;
+        D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC* pHEVCGroupOfPictures;
+        D3D12_VIDEO_ENCODER_AV1_SEQUENCE_STRUCTURE* pAV1SequenceStructure;
+    };
+} D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT
+{
+    // input
+    UINT NodeIndex;  
+    D3D12_VIDEO_ENCODER_CODEC Codec;    
+    DXGI_FORMAT InputFormat;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+    D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+    D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+    UINT ResolutionsListCount;
+    const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
+    UINT MaxReferenceFramesInDPB;
+
+    // single value output
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
+    D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel; // assuming max resolution from input list
+    
+    // resolution dependent output
+    [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES
+{
+    // Mutually exclusive options according to selected mode
+    union
+    {
+        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_BYTES_PER_SUBREGION
+        UINT MaxBytesPerSlice;
+
+        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_SQUARE_UNITS_PER_SUBREGION_ROW_UNALIGNED
+        UINT NumberOfCodingUnitsPerSlice;
+
+        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_ROWS_PER_SUBREGION
+        UINT NumberOfRowsPerSlice;
+
+        // Use with mode: D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_UNIFORM_PARTITIONING_SUBREGIONS_PER_FRAME
+        UINT NumberOfSlicesPerFrame;
+    };
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
+{
+    UINT DataSize;
+    union
+    {
+        const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_H264;
+        const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_SLICES* pSlicesPartition_HEVC;
+        const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_TILES* pTilesPartition_AV1;
+    };
+
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1
+{
+    /* Below match existing D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT */
+    UINT NodeIndex;
+    D3D12_VIDEO_ENCODER_CODEC Codec;
+    DXGI_FORMAT InputFormat;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
+    D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+    D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+    D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE IntraRefresh;
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
+    UINT ResolutionsListCount;
+    const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList;
+    UINT MaxReferenceFramesInDPB;
+    D3D12_VIDEO_ENCODER_VALIDATION_FLAGS ValidationFlags;
+    D3D12_VIDEO_ENCODER_SUPPORT_FLAGS SupportFlags;
+    D3D12_VIDEO_ENCODER_PROFILE_DESC SuggestedProfile;
+    D3D12_VIDEO_ENCODER_LEVEL_SETTING SuggestedLevel;
+    [annotation("_Field_size_full_(ResolutionsListCount)")] D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS* pResolutionDependentSupport;
+
+    /* Below are new arguments for D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1 */
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData; // input
+    UINT MaxQualityVsSpeed;
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT1;
+
+typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS
+{
+    UINT NodeIndex;                                                      // input
+    D3D12_VIDEO_ENCODER_CODEC Codec;                                     // input
+    D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;                            // input     
+    DXGI_FORMAT InputFormat;                                             // input
+    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution; // input
+
+    BOOL IsSupported;                                                    // output   
+    UINT CompressedBitstreamBufferAccessAlignment;                       // output
+    UINT EncoderMetadataBufferAccessAlignment;                           // output
+    UINT MaxEncoderOutputMetadataBufferSize;                             // output
+} D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOURCE_REQUIREMENTS;
+
+//
+// Video Encoder creation API
+//
+
+typedef enum D3D12_VIDEO_ENCODER_FLAGS
+{
+    D3D12_VIDEO_ENCODER_FLAG_NONE = 0x0,
+} D3D12_VIDEO_ENCODER_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_DESC
+{
+    UINT NodeMask;  
+    D3D12_VIDEO_ENCODER_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_CODEC EncodeCodec;
+    D3D12_VIDEO_ENCODER_PROFILE_DESC EncodeProfile;
+    DXGI_FORMAT InputFormat;
+    D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;    
+    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE MaxMotionEstimationPrecision;
+} D3D12_VIDEO_ENCODER_DESC;
+
+[uuid(2E0D212D-8DF9-44A6-A770-BB289B182737), object, local, pointer_default(unique)]
+interface ID3D12VideoEncoder
+    : ID3D12Pageable
+{
+    UINT GetNodeMask(); 
+    D3D12_VIDEO_ENCODER_FLAGS GetEncoderFlags(); 
+    D3D12_VIDEO_ENCODER_CODEC GetCodec(); 
+    HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile);
+    HRESULT GetCodecConfiguration([annotation("_Inout_")] D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION dstCodecConfig);
+    DXGI_FORMAT GetInputFormat();
+    D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE GetMaxMotionEstimationPrecision();
+}
+
+[uuid(22B35D96-876A-44C0-B25E-FB8C9C7F1C4A), object, local, pointer_default(unique)]
+interface ID3D12VideoEncoderHeap
+    : ID3D12Pageable
+{
+    UINT GetNodeMask(); 
+    D3D12_VIDEO_ENCODER_HEAP_FLAGS GetEncoderHeapFlags(); 
+    D3D12_VIDEO_ENCODER_CODEC GetCodec(); 
+    HRESULT GetCodecProfile([annotation("_Inout_")] D3D12_VIDEO_ENCODER_PROFILE_DESC dstProfile); 
+    HRESULT GetCodecLevel([annotation("_Inout_")] D3D12_VIDEO_ENCODER_LEVEL_SETTING dstLevel); 
+    UINT GetResolutionListCount(); 
+    HRESULT GetResolutionList(
+        const UINT ResolutionsListCount,
+        [annotation("_Out_writes_(ResolutionsListCount)")] D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC* pResolutionList); 
+}
+
+[uuid(4243ADB4-3A32-4666-973C-0CCC5625DC44), object, local, pointer_default(unique)]
+interface ID3D12VideoDevice3
+    : ID3D12VideoDevice2
+{
+
+    HRESULT CreateVideoEncoder(
+        [annotation("_In_")] const D3D12_VIDEO_ENCODER_DESC* pDesc,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoder,
+        [annotation("_COM_Outptr_")] void** ppVideoEncoder);
+
+    HRESULT CreateVideoEncoderHeap(
+        [annotation("_In_")] const D3D12_VIDEO_ENCODER_HEAP_DESC* pDesc,
+        [annotation("_In_")] REFIID riid, // Expected: IID_ID3D12VideoEncoderHeap,
+        [annotation("_COM_Outptr_")] void** ppVideoEncoderHeap);
+
+}
+
+//
+// Video Encoder operation API
+//
+
+
+typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_H264
+{
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_I_FRAME = 0,
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_P_FRAME = 1,
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_B_FRAME = 2,
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME = 3,
+} D3D12_VIDEO_ENCODER_FRAME_TYPE_H264;
+
+
+typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264
+{
+    UINT ReconstructedPictureResourceIndex;
+    BOOL IsLongTermReference; 
+    UINT LongTermPictureIdx;
+    UINT PictureOrderCountNumber;
+    UINT FrameDecodingOrderNumber;
+    UINT TemporalLayerIndex;
+} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264;
+
+typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS
+{
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION
+{
+    UCHAR memory_management_control_operation;
+    UINT difference_of_pic_nums_minus1;
+    UINT long_term_pic_num;
+    UINT long_term_frame_idx;
+    UINT max_long_term_frame_idx_plus1;
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION
+{
+    UCHAR modification_of_pic_nums_idc;
+    UINT abs_diff_pic_num_minus1;
+    UINT long_term_pic_num;
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
+{
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;    
+    UINT pic_parameter_set_id;
+    UINT idr_pic_id;    
+    UINT PictureOrderCountNumber;
+    UINT FrameDecodingOrderNumber;
+    UINT TemporalLayerIndex;
+    UINT List0ReferenceFramesCount;
+    [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
+    UINT List1ReferenceFramesCount;
+    [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
+    UINT ReferenceFramesReconPictureDescriptorsCount;
+    [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors;
+    UCHAR adaptive_ref_pic_marking_mode_flag;
+    UINT RefPicMarkingOperationsCommandsCount;
+    [annotation("_Field_size_full_(RefPicMarkingOperationsCommandsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands;
+    UINT List0RefPicModificationsCount;
+    [annotation("_Field_size_full_(List0RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications;
+    UINT List1RefPicModificationsCount;
+    [annotation("_Field_size_full_(List1RefPicModificationsCount)")] D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications;
+    UINT QPMapValuesCount;
+    [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
+
+typedef enum D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC
+{
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_I_FRAME = 0,
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_P_FRAME = 1,
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_B_FRAME = 2,
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC_IDR_FRAME = 3,
+} D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC
+{
+    UINT ReconstructedPictureResourceIndex;
+    BOOL IsRefUsedByCurrentPic; 
+    BOOL IsLongTermReference; 
+    UINT PictureOrderCountNumber;
+    UINT TemporalLayerIndex;
+} D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC;
+
+typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS
+{
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_INTRA_CONSTRAINED_SLICES = 0x1,
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_REQUEST_NUM_REF_IDX_ACTIVE_OVERRIDE_FLAG_SLICE = 0x2,
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CROSS_COMPONENT_PREDICTION = 0x4,
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAG_CHROMA_QP_OFFSET_LIST = 0x8,
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC
+{
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
+    UINT slice_pic_parameter_set_id;
+    UINT PictureOrderCountNumber;
+    UINT TemporalLayerIndex;    
+    UINT List0ReferenceFramesCount;
+    [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
+    UINT List1ReferenceFramesCount;
+    [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
+    UINT ReferenceFramesReconPictureDescriptorsCount;
+    [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
+    UINT List0RefPicModificationsCount;
+    [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
+    UINT List1RefPicModificationsCount;
+    [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;    
+    UINT QPMapValuesCount;
+    [annotation("_Field_size_full_(QPMapValuesCount)")] INT8 *pRateControlQPMap;
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
+{
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
+    UINT slice_pic_parameter_set_id;
+    UINT PictureOrderCountNumber;
+    UINT TemporalLayerIndex;
+    UINT List0ReferenceFramesCount;
+    [annotation("_Field_size_full_(List0ReferenceFramesCount)")] UINT* pList0ReferenceFrames;
+    UINT List1ReferenceFramesCount;
+    [annotation("_Field_size_full_(List1ReferenceFramesCount)")] UINT* pList1ReferenceFrames;
+    UINT ReferenceFramesReconPictureDescriptorsCount;
+    [annotation("_Field_size_full_(ReferenceFramesReconPictureDescriptorsCount)")] D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
+    UINT List0RefPicModificationsCount;
+    [annotation("_Field_size_full_(List0RefPicModificationsCount)")] UINT* pList0RefPicModifications;
+    UINT List1RefPicModificationsCount;
+    [annotation("_Field_size_full_(List1RefPicModificationsCount)")] UINT* pList1RefPicModifications;
+    UINT QPMapValuesCount;
+    [annotation("_Field_size_full_(QPMapValuesCount)")] INT8* pRateControlQPMap;
+    UCHAR diff_cu_chroma_qp_offset_depth;
+    UCHAR log2_sao_offset_scale_luma;
+    UCHAR log2_sao_offset_scale_chroma;
+    UCHAR log2_max_transform_skip_block_size_minus2;
+    UCHAR chroma_qp_offset_list_len_minus1;
+    CHAR cb_qp_offset_list[6];
+    CHAR cr_qp_offset_list[6];
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA
+{
+    UINT DataSize;
+    union
+    {
+        D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264* pH264PicData;
+        D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC* pHEVCPicData;
+        D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1* pHEVCPicData1;
+        D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA* pAV1PicData;
+    };
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA;
+
+typedef struct D3D12_VIDEO_ENCODE_REFERENCE_FRAMES
+{
+    UINT NumTexture2Ds;
+    [annotation("_Field_size_full_(NumTexture2Ds)")] ID3D12Resource** ppTexture2Ds;
+    [annotation("_Field_size_full_(NumTexture2Ds)")] UINT* pSubresources;
+} D3D12_VIDEO_ENCODE_REFERENCE_FRAMES;
+
+typedef enum D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS
+{
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_NONE = 0x0,    
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE = 0x1,
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC
+{
+    UINT IntraRefreshFrameIndex;
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA PictureControlCodecData;    
+    D3D12_VIDEO_ENCODE_REFERENCE_FRAMES ReferenceFrames;
+} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC;
+
+typedef enum D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS
+{
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_NONE = 0x0,
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RESOLUTION_CHANGE = 0x1,
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_RATE_CONTROL_CHANGE = 0x2,
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_SUBREGION_LAYOUT_CHANGE = 0x4,
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_REQUEST_INTRA_REFRESH = 0x8,
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAG_GOP_SEQUENCE_CHANGE = 0x10,
+} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC
+{
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
+    D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
+    D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
+    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
+    D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
+    D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
+} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
+
+//
+// Video Encoder operation commands API 
+//
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS
+{
+    D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC SequenceControlDesc;
+    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC PictureControlDesc;
+    ID3D12Resource *pInputFrame;
+    UINT InputFrameSubresource;
+    UINT CurrentFrameBitstreamMetadataSize;
+} D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM
+{
+    ID3D12Resource* pBuffer;
+    UINT64 FrameStartOffset;
+} D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM;
+
+typedef struct D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE
+{
+    ID3D12Resource *pReconstructedPicture;
+    UINT ReconstructedPictureSubresource;
+} D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE;
+
+typedef struct D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA
+{
+    UINT64 bSize;
+    UINT64 bStartOffset;
+    UINT64 bHeaderSize;
+} D3D12_VIDEO_ENCODER_FRAME_SUBREGION_METADATA;
+
+typedef enum D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
+{
+    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_NO_ERROR = 0x0,    
+    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_CODEC_PICTURE_CONTROL_NOT_SUPPORTED = 0x1,
+    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_SUBREGION_LAYOUT_CONFIGURATION_NOT_SUPPORTED = 0x2,    
+    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_REFERENCE_PICTURES = 0x4,    
+    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_RECONFIGURATION_REQUEST_NOT_SUPPORTED = 0x8,    
+    D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAG_INVALID_METADATA_BUFFER_SOURCE = 0x10,
+} D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS)")
+
+typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS
+{
+    UINT64 AverageQP;                        
+    UINT64 IntraCodingUnitsCount;            
+    UINT64 InterCodingUnitsCount;            
+    UINT64 SkipCodingUnitsCount;             
+    UINT64 AverageMotionEstimationXDirection;
+    UINT64 AverageMotionEstimationYDirection;
+} D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS;
+
+typedef struct D3D12_VIDEO_ENCODER_OUTPUT_METADATA
+{    
+    UINT64 EncodeErrorFlags; // D3D12_VIDEO_ENCODER_ENCODE_ERROR_FLAGS
+    D3D12_VIDEO_ENCODER_OUTPUT_METADATA_STATISTICS EncodeStats;    
+    UINT64 EncodedBitstreamWrittenBytesCount;
+    UINT64 WrittenSubregionsCount;    
+} D3D12_VIDEO_ENCODER_OUTPUT_METADATA;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER
+{
+    ID3D12Resource* pBuffer;
+    UINT64 Offset;
+} D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS
+{
+    D3D12_VIDEO_ENCODER_CODEC EncoderCodec;
+    D3D12_VIDEO_ENCODER_PROFILE_DESC EncoderProfile;
+    DXGI_FORMAT EncoderInputFormat; 
+    D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC EncodedPictureEffectiveResolution;
+    D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER HWLayoutMetadata;
+} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS
+{
+    D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER ResolvedLayoutMetadata;
+} D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS;
+
+typedef struct D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS
+{    
+    D3D12_VIDEO_ENCODER_COMPRESSED_BITSTREAM Bitstream;
+    D3D12_VIDEO_ENCODER_RECONSTRUCTED_PICTURE ReconstructedPicture;
+    D3D12_VIDEO_ENCODER_ENCODE_OPERATION_METADATA_BUFFER EncoderOutputMetadata;
+} D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS;
+
+[uuid(895491e2-e701-46a9-9a1f-8d3480ed867a), object, local, pointer_default(unique)]
+interface ID3D12VideoEncodeCommandList2
+    : ID3D12VideoEncodeCommandList1
+{
+    void EncodeFrame(
+        [annotation("_In_")] ID3D12VideoEncoder* pEncoder,
+        [annotation("_In_")] ID3D12VideoEncoderHeap *pHeap,
+        [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_INPUT_ARGUMENTS *pInputArguments,
+        [annotation("_In_")] const D3D12_VIDEO_ENCODER_ENCODEFRAME_OUTPUT_ARGUMENTS *pOutputArguments);
+
+    void ResolveEncoderOutputMetadata(
+        [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_INPUT_ARGUMENTS* pInputArguments,
+        [annotation("_In_")] const D3D12_VIDEO_ENCODER_RESOLVE_METADATA_OUTPUT_ARGUMENTS* pOutputArguments);
+}
+
+
+[uuid(7f027b22-1515-4e85-aa0d-026486580576), object, local, pointer_default(unique)]
+interface ID3D12VideoEncodeCommandList3
+    : ID3D12VideoEncodeCommandList2
+{
+
+    void Barrier(
+        UINT32 NumBarrierGroups,
+        [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
+    );
+}
+
+cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
+#pragma endregion
+
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap,0x0946B7C9,0xEBF6,0x4047,0xBB,0x73,0x86,0x83,0xE2,0x7D,0xBB,0x1F);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice,0x1F052807,0x0B46,0x4ACC,0x8A,0x89,0x36,0x4F,0x79,0x37,0x18,0xA4);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder,0xC59B6BDC,0x7720,0x4074,0xA1,0x36,0x17,0xA1,0x56,0x03,0x74,0x70);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor,0x304FDB32,0xBEDE,0x410A,0x85,0x45,0x94,0x3A,0xC6,0xA4,0x61,0x38);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList,0x3B60536E,0xAD29,0x4E64,0xA2,0x69,0xF8,0x53,0x83,0x7E,0x5E,0x53);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList,0xAEB2543A,0x167F,0x4682,0xAC,0xC8,0xD1,0x59,0xED,0x4A,0x62,0x09);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList1,0xD52F011B,0xB56E,0x453C,0xA0,0x5A,0xA7,0xF3,0x11,0xC8,0xF4,0x72);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList1,0x542C5C4D,0x7596,0x434F,0x8C,0x93,0x4E,0xFA,0x67,0x66,0xF2,0x67);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionEstimator,0x33FDAE0E,0x098B,0x428F,0x87,0xBB,0x34,0xB6,0x95,0xDE,0x08,0xF8);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoMotionVectorHeap,0x5BE17987,0x743A,0x4061,0x83,0x4B,0x23,0xD2,0x2D,0xAE,0xA5,0x05);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice1,0x981611AD,0xA144,0x4C83,0x98,0x90,0xF3,0x0E,0x26,0xD6,0x58,0xAB);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList,0x8455293A,0x0CBD,0x4831,0x9B,0x39,0xFB,0xDB,0xAB,0x72,0x47,0x23);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoder1,0x79A2E5FB,0xCCD2,0x469A,0x9F,0xDE,0x19,0x5D,0x10,0x95,0x1F,0x7E);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecoderHeap1,0xDA1D98C5,0x539F,0x41B2,0xBF,0x6B,0x11,0x98,0xA0,0x3B,0x6D,0x26);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessor1,0xF3CFE615,0x553F,0x425C,0x86,0xD8,0xEE,0x8C,0x1B,0x1F,0xB0,0x1C);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoExtensionCommand,0x554E41E8,0xAE8E,0x4A8C,0xB7,0xD2,0x5B,0x4F,0x27,0x4A,0x30,0xE4);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice2,0xF019AC49,0xF838,0x4A95,0x9B,0x17,0x57,0x94,0x37,0xC8,0xF5,0x13);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList2,0x6e120880,0xc114,0x4153,0x80,0x36,0xd2,0x47,0x05,0x1e,0x17,0x29);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDecodeCommandList3,0x2aee8c37,0x9562,0x42da,0x8a,0xbf,0x61,0xef,0xeb,0x2e,0x45,0x13);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList2,0xdb525ae4,0x6ad6,0x473c,0xba,0xa7,0x59,0xb2,0xe3,0x70,0x82,0xe4);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoProcessCommandList3,0x1a0a4ca4,0x9f08,0x40ce,0x95,0x58,0xb4,0x11,0xfd,0x26,0x66,0xff);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList1,0x94971eca,0x2bdb,0x4769,0x88,0xcf,0x36,0x75,0xea,0x75,0x7e,0xbc);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoder,0x2E0D212D,0x8DF9,0x44A6,0xA7,0x70,0xBB,0x28,0x9B,0x18,0x27,0x37);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncoderHeap,0x22B35D96,0x876A,0x44C0,0xB2,0x5E,0xFB,0x8C,0x9C,0x7F,0x1C,0x4A);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoDevice3,0x4243ADB4,0x3A32,0x4666,0x97,0x3C,0x0C,0xCC,0x56,0x25,0xDC,0x44);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList2,0x895491e2,0xe701,0x46a9,0x9a,0x1f,0x8d,0x34,0x80,0xed,0x86,0x7a);" )
+cpp_quote( "DEFINE_GUID(IID_ID3D12VideoEncodeCommandList3,0x7f027b22,0x1515,0x4e85,0xaa,0x0d,0x02,0x64,0x86,0x58,0x05,0x76);" )

+ 991 - 991
ThirdParty/AgilitySdk/include/d3dcommon.idl

@@ -1,991 +1,991 @@
-/*-------------------------------------------------------------------------------------
- *
- * Copyright (c) Microsoft Corporation
- * Licensed under the MIT license
- *
- *-------------------------------------------------------------------------------------*/
-import "oaidl.idl";
-import "ocidl.idl";
-
-//----------------------------------------------------------------------------
-//
-// D3D-version-neutral runtime information.
-//
-//----------------------------------------------------------------------------
-
-typedef enum D3D_DRIVER_TYPE
-{
-    D3D_DRIVER_TYPE_UNKNOWN,
-    D3D_DRIVER_TYPE_HARDWARE,
-    D3D_DRIVER_TYPE_REFERENCE,
-    D3D_DRIVER_TYPE_NULL,
-    D3D_DRIVER_TYPE_SOFTWARE,
-    D3D_DRIVER_TYPE_WARP,
-} D3D_DRIVER_TYPE;
-
-typedef enum D3D_FEATURE_LEVEL
-{
-    D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
-    D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
-    D3D_FEATURE_LEVEL_9_1 = 0x9100,
-    D3D_FEATURE_LEVEL_9_2 = 0x9200,
-    D3D_FEATURE_LEVEL_9_3 = 0x9300,
-    D3D_FEATURE_LEVEL_10_0 = 0xa000,
-    D3D_FEATURE_LEVEL_10_1 = 0xa100,
-    D3D_FEATURE_LEVEL_11_0 = 0xb000,
-    D3D_FEATURE_LEVEL_11_1 = 0xb100,
-    D3D_FEATURE_LEVEL_12_0 = 0xc000,
-    D3D_FEATURE_LEVEL_12_1 = 0xc100,
-    D3D_FEATURE_LEVEL_12_2 = 0xc200
-} D3D_FEATURE_LEVEL;
-
-cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION          2048")
-cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION          4096")
-cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION     2048")
-cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION     4096")
-cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION          512")
-cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION          4096")
-cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION   256")
-cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY             2")
-cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT             65535")
-cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT             1048575")
-cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT   1")
-cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT   4")
-cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT                 128")
-cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT                 2048")
-cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT                 8192")
-
-typedef enum D3D_PRIMITIVE_TOPOLOGY
-{
-    D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
-    D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
-    D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
-    D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
-    D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
-    D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
-    D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
-    // Adjacency values should be equal to (0x8 & non-adjacency):
-    D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
-    D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
-    D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
-    D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
-    D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
-    D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
-    D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
-    D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
-    D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
-    D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
-    D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
-    D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
-    D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
-    D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
-    D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
-    D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
-    D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
-    D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
-    D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
-    D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
-    D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
-    D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
-    D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
-    D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
-    D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
-    D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
-    D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
-    D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
-    D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
-    D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
-    D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
-    D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
-    D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
-    D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
-    D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
-    D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
-
-    D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
-    D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
-    D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
-    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
-    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
-
-    D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
-    D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
-    D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
-    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
-    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
-    D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
-    D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
-    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
-    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
-    D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
-    D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
-} D3D_PRIMITIVE_TOPOLOGY;
-
-typedef enum D3D_PRIMITIVE
-{
-    D3D_PRIMITIVE_UNDEFINED = 0,
-    D3D_PRIMITIVE_POINT = 1,
-    D3D_PRIMITIVE_LINE = 2,
-    D3D_PRIMITIVE_TRIANGLE = 3,
-    // Adjacency values should be equal to (0x4 & non-adjacency):
-    D3D_PRIMITIVE_LINE_ADJ = 6,
-    D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
-    D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
-    D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
-    D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
-    D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
-    D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
-    D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
-    D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
-    D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
-    D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
-    D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
-    D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
-    D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
-    D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
-    D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
-    D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
-    D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
-    D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
-    D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
-    D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
-    D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
-    D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
-    D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
-    D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
-    D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
-    D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
-    D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
-    D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
-    D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
-    D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
-    D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
-    D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
-    D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
-
-    D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
-    D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
-    D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
-    D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
-    D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
-    D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
-
-    D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
-    D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
-    D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
-    D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
-    D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
-    D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
-    D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
-    D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
-} D3D_PRIMITIVE;
-
-typedef enum D3D_SRV_DIMENSION
-{
-    D3D_SRV_DIMENSION_UNKNOWN = 0,
-    D3D_SRV_DIMENSION_BUFFER = 1,
-    D3D_SRV_DIMENSION_TEXTURE1D = 2,
-    D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
-    D3D_SRV_DIMENSION_TEXTURE2D = 4,
-    D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
-    D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
-    D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
-    D3D_SRV_DIMENSION_TEXTURE3D = 8,
-    D3D_SRV_DIMENSION_TEXTURECUBE = 9,
-    D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
-    D3D_SRV_DIMENSION_BUFFEREX = 11,
-
-    D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
-    D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
-    D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
-    D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
-    D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
-    D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
-    D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
-    D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
-
-    D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
-    D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
-    D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
-    D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
-    D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
-    D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
-    D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
-    D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
-    D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
-    D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
-    D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
-
-    D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
-    D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
-    D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
-    D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
-    D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
-    D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
-    D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
-    D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
-    D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
-    D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
-    D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
-    D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
-} D3D_SRV_DIMENSION;
-
-// Bits in shaders indicating features they use which the runtime checks against current device support:
-cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES                                                        0x00001")
-cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
-cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE                                            0x00004")
-cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS                                                        0x00008")
-cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION                                              0x00010")
-cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS                                         0x00020")
-cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS                                         0x00040")
-cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING                                   0x00080")
-cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES                                                0x00100")
-cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF                                                    0x00200")
-cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE                                                 0x00400")
-cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS                              0x00800")
-cpp_quote("#define D3D_SHADER_FEATURE_ROVS                                                           0x01000")
-cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
-cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS                                                       0x04000")
-cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS                                                      0x08000")
-cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID                                                        0x10000")
-cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS                                                   0x20000")
-cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS                                               0x40000")
-cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE                                                   0x80000")
-cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1                                            0x100000")
-cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK                                               0x200000")
-cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE                                 0x400000")
-cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED                                   0x800000")
-cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS                  0x1000000")
-cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING                              0x2000000")
-cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING                               0x4000000")
-cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA                                                       0x8000000")
-cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE                       0x10000000")
-cpp_quote("#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS                                           0x20000000")
-cpp_quote("#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES                                        0x40000000")
-cpp_quote("#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS                                    0x80000000")
-cpp_quote("#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO                                          0x100000000ull")
-
-// This section is for flags that do not directly indicate a required feature,
-// but are used to indicate something about the shader.
-
-// Flag for any derivative use.  This allows call-graph validation
-// in the runtime to detect misuse of derivatives for an entry point that cannot
-// support it, or to determine when the flag
-// D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS is required.
-cpp_quote("#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES                                         0x0000010000000000ull")
-
-cpp_quote("#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP                                           0x0000020000000000ull")
-
-
-// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
-// When adding entries here, make sure they don't conflict with what's there.
-
-//----------------------------------------------------------------------------
-//
-// Shader compilation information.
-//
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// D3D_SHADER_MACRO:
-// ----------
-// Preprocessor macro definition.  The application pass in a NULL-terminated
-// array of this structure to various D3D APIs.  This enables the application
-// to #define tokens at runtime, before the file is parsed.
-//----------------------------------------------------------------------------
-
-typedef struct _D3D_SHADER_MACRO
-{
-    LPCSTR Name;
-    LPCSTR Definition;
-} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
-
-//----------------------------------------------------------------------------
-// ID3DBlob:
-// ------------
-// The buffer object is used by D3D to return arbitrary size data.
-// For compatibility with D3D10 this interface is also called ID3D10Blob,
-// but the version-neutral form is preferred.
-//
-// GetBufferPointer -
-//    Returns a pointer to the beginning of the buffer.
-//
-// GetBufferSize -
-//    Returns the size of the buffer, in bytes.
-//----------------------------------------------------------------------------
-
-// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
-cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
-
-[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
-interface ID3D10Blob : IUnknown
-{
-    LPVOID GetBufferPointer();
-    SIZE_T GetBufferSize();
-};
-
-cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
-
-typedef ID3D10Blob ID3DBlob;
-cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
-cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
-
-// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
-typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
-
-[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
-interface ID3DDestructionNotifier
-    : IUnknown
-{
-    HRESULT RegisterDestructionCallback(
-        [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
-        [annotation("_In_")] void* pData,
-        [annotation("_Out_")] UINT* pCallbackID
-        );
-    HRESULT UnregisterDestructionCallback(
-        [annotation("_In_")] UINT callbackID
-        );
-};
-
-typedef enum _D3D_INCLUDE_TYPE
-{
-    D3D_INCLUDE_LOCAL,
-    D3D_INCLUDE_SYSTEM,
-
-    D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
-    D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
-
-    // force 32-bit size enum
-    D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
-} D3D_INCLUDE_TYPE;
-
-//----------------------------------------------------------------------------
-// ID3DInclude:
-// -------------
-// This interface is intended to be implemented by the application, and can
-// be used by various D3D APIs.  This enables application-specific handling
-// of #include directives in source files.
-//
-// Open()
-//    Opens an include file.  If successful, it should fill in ppData and
-//    pBytes.  The data pointer returned must remain valid until Close is
-//    subsequently called.  The name of the file is encoded in UTF-8 format.
-// Close()
-//    Closes an include file.  If Open was successful, Close is guaranteed
-//    to be called before the API using this interface returns.
-//----------------------------------------------------------------------------
-
-cpp_quote("typedef interface ID3DInclude ID3DInclude;")
-
-cpp_quote("#undef INTERFACE")
-cpp_quote("#define INTERFACE ID3DInclude")
-
-cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
-cpp_quote("{")
-cpp_quote("    STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
-cpp_quote("    STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
-cpp_quote("};")
-
-cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
-
-//----------------------------------------------------------------------------
-//
-// Shader reflection information.
-//
-//----------------------------------------------------------------------------
-
-typedef enum _D3D_SHADER_VARIABLE_CLASS
-{
-    D3D_SVC_SCALAR,
-    D3D_SVC_VECTOR,
-    D3D_SVC_MATRIX_ROWS,
-    D3D_SVC_MATRIX_COLUMNS,
-    D3D_SVC_OBJECT,
-    D3D_SVC_STRUCT,
-    D3D_SVC_INTERFACE_CLASS,
-    D3D_SVC_INTERFACE_POINTER,
-
-    D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
-    D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
-    D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
-    D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
-    D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
-    D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
-
-    D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
-    D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
-
-    // force 32-bit size enum
-    D3D_SVC_FORCE_DWORD = 0x7fffffff
-} D3D_SHADER_VARIABLE_CLASS;
-
-typedef enum _D3D_SHADER_VARIABLE_FLAGS
-{
-    D3D_SVF_USERPACKED = 1,
-    D3D_SVF_USED       = 2,
-
-    D3D_SVF_INTERFACE_POINTER = 4,
-    D3D_SVF_INTERFACE_PARAMETER = 8,
-
-    D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
-    D3D10_SVF_USED       = D3D_SVF_USED,
-
-    D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
-    D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
-
-    // force 32-bit size enum
-    D3D_SVF_FORCE_DWORD = 0x7fffffff
-} D3D_SHADER_VARIABLE_FLAGS;
-
-typedef enum _D3D_SHADER_VARIABLE_TYPE
-{
-    D3D_SVT_VOID = 0,
-    D3D_SVT_BOOL = 1,
-    D3D_SVT_INT = 2,
-    D3D_SVT_FLOAT = 3,
-    D3D_SVT_STRING = 4,
-    D3D_SVT_TEXTURE = 5,
-    D3D_SVT_TEXTURE1D = 6,
-    D3D_SVT_TEXTURE2D = 7,
-    D3D_SVT_TEXTURE3D = 8,
-    D3D_SVT_TEXTURECUBE = 9,
-    D3D_SVT_SAMPLER = 10, 
-    D3D_SVT_SAMPLER1D = 11,
-    D3D_SVT_SAMPLER2D = 12,
-    D3D_SVT_SAMPLER3D = 13,
-    D3D_SVT_SAMPLERCUBE = 14,
-    D3D_SVT_PIXELSHADER = 15,
-    D3D_SVT_VERTEXSHADER = 16,
-    D3D_SVT_PIXELFRAGMENT = 17,
-    D3D_SVT_VERTEXFRAGMENT = 18,
-    D3D_SVT_UINT = 19,
-    D3D_SVT_UINT8 = 20,
-    D3D_SVT_GEOMETRYSHADER = 21,
-    D3D_SVT_RASTERIZER = 22,
-    D3D_SVT_DEPTHSTENCIL = 23,
-    D3D_SVT_BLEND = 24,
-    D3D_SVT_BUFFER = 25,
-    D3D_SVT_CBUFFER = 26,
-    D3D_SVT_TBUFFER = 27,
-    D3D_SVT_TEXTURE1DARRAY = 28,
-    D3D_SVT_TEXTURE2DARRAY = 29,
-    D3D_SVT_RENDERTARGETVIEW = 30,
-    D3D_SVT_DEPTHSTENCILVIEW = 31,
-
-    D3D_SVT_TEXTURE2DMS = 32,
-    D3D_SVT_TEXTURE2DMSARRAY = 33,
-
-    D3D_SVT_TEXTURECUBEARRAY = 34,
-
-    D3D_SVT_HULLSHADER = 35,
-    D3D_SVT_DOMAINSHADER = 36,
-
-    D3D_SVT_INTERFACE_POINTER = 37,
-    D3D_SVT_COMPUTESHADER = 38,
-    
-    D3D_SVT_DOUBLE = 39,
-    
-    D3D_SVT_RWTEXTURE1D = 40,
-    D3D_SVT_RWTEXTURE1DARRAY = 41,
-    D3D_SVT_RWTEXTURE2D = 42,
-    D3D_SVT_RWTEXTURE2DARRAY = 43,
-    D3D_SVT_RWTEXTURE3D = 44,
-    D3D_SVT_RWBUFFER = 45,
-
-    D3D_SVT_BYTEADDRESS_BUFFER = 46,
-    D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
-    D3D_SVT_STRUCTURED_BUFFER = 48,
-    D3D_SVT_RWSTRUCTURED_BUFFER = 49,
-    D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
-    D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
-
-    D3D_SVT_MIN8FLOAT = 52,
-    D3D_SVT_MIN10FLOAT = 53,
-    D3D_SVT_MIN16FLOAT = 54,
-    D3D_SVT_MIN12INT = 55,
-    D3D_SVT_MIN16INT = 56,
-    D3D_SVT_MIN16UINT = 57,
-
-    D3D_SVT_INT16 = 58,
-    D3D_SVT_UINT16 = 59,
-    D3D_SVT_FLOAT16 = 60,
-    D3D_SVT_INT64 = 61,
-    D3D_SVT_UINT64 = 62,
-
-    D3D10_SVT_VOID = D3D_SVT_VOID,
-    D3D10_SVT_BOOL = D3D_SVT_BOOL,
-    D3D10_SVT_INT = D3D_SVT_INT,
-    D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
-    D3D10_SVT_STRING = D3D_SVT_STRING,
-    D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
-    D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
-    D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
-    D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
-    D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
-    D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
-    D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
-    D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
-    D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
-    D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
-    D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
-    D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
-    D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
-    D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
-    D3D10_SVT_UINT = D3D_SVT_UINT,
-    D3D10_SVT_UINT8 = D3D_SVT_UINT8,
-    D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
-    D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
-    D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
-    D3D10_SVT_BLEND = D3D_SVT_BLEND,
-    D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
-    D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
-    D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
-    D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
-    D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
-    D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
-    D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
-
-    D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
-    D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
-
-    D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
-
-    D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
-    D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
-
-    D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
-    D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
-
-    D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
-    
-    D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
-    D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
-    D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
-    D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
-    D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
-    D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
-    
-    D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
-    D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
-    D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
-    D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
-    D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
-    D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
-
-    // force 32-bit size enum
-    D3D_SVT_FORCE_DWORD = 0x7fffffff
-} D3D_SHADER_VARIABLE_TYPE;
-
-typedef enum _D3D_SHADER_INPUT_FLAGS
-{
-    D3D_SIF_USERPACKED          = 0x01,
-    D3D_SIF_COMPARISON_SAMPLER  = 0x02, // is this a comparison sampler?
-    D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
-    D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
-    D3D_SIF_TEXTURE_COMPONENTS  = 0x0c,
-    D3D_SIF_UNUSED              = 0x10,
-
-    D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
-    D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
-    D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
-    D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
-    D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
-
-    // force 32-bit size enum
-    D3D_SIF_FORCE_DWORD = 0x7fffffff
-} D3D_SHADER_INPUT_FLAGS;
-
-typedef enum _D3D_SHADER_INPUT_TYPE
-{
-    D3D_SIT_CBUFFER,
-    D3D_SIT_TBUFFER,
-    D3D_SIT_TEXTURE,
-    D3D_SIT_SAMPLER,
-    D3D_SIT_UAV_RWTYPED,
-    D3D_SIT_STRUCTURED,
-    D3D_SIT_UAV_RWSTRUCTURED,
-    D3D_SIT_BYTEADDRESS,
-    D3D_SIT_UAV_RWBYTEADDRESS,
-    D3D_SIT_UAV_APPEND_STRUCTURED,
-    D3D_SIT_UAV_CONSUME_STRUCTURED,
-    D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
-    D3D_SIT_RTACCELERATIONSTRUCTURE,
-    D3D_SIT_UAV_FEEDBACKTEXTURE,
-
-    D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
-    D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
-    D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
-    D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
-
-    D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
-    D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
-    D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
-    D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
-    D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
-    D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
-    D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
-    D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
-} D3D_SHADER_INPUT_TYPE;
-
-typedef enum _D3D_SHADER_CBUFFER_FLAGS
-{
-    D3D_CBF_USERPACKED = 1,
-
-    D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
-
-    // force 32-bit size enum
-    D3D_CBF_FORCE_DWORD = 0x7fffffff
-} D3D_SHADER_CBUFFER_FLAGS;
-
-typedef enum _D3D_CBUFFER_TYPE
-{
-    D3D_CT_CBUFFER,
-    D3D_CT_TBUFFER,
-    D3D_CT_INTERFACE_POINTERS,
-    D3D_CT_RESOURCE_BIND_INFO,
-
-    D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
-    D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
-
-    D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
-    D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
-    D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
-    D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
-}  D3D_CBUFFER_TYPE;
-
-typedef enum D3D_NAME
-{
-    D3D_NAME_UNDEFINED = 0,
-
-    // Names meaningful to both HLSL and hardware
-    D3D_NAME_POSITION = 1,
-    D3D_NAME_CLIP_DISTANCE = 2,
-    D3D_NAME_CULL_DISTANCE = 3,
-    D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
-    D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
-    D3D_NAME_VERTEX_ID = 6,
-    D3D_NAME_PRIMITIVE_ID = 7,
-    D3D_NAME_INSTANCE_ID = 8,
-    D3D_NAME_IS_FRONT_FACE = 9,
-    D3D_NAME_SAMPLE_INDEX = 10,
-    D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11, 
-    D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12, 
-    D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13, 
-    D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14, 
-    D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
-    D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
-    D3D_NAME_BARYCENTRICS = 23,
-    D3D_NAME_SHADINGRATE = 24,
-    D3D_NAME_CULLPRIMITIVE = 25,
-
-    // Names meaningful to HLSL only
-    D3D_NAME_TARGET = 64,
-    D3D_NAME_DEPTH = 65,
-    D3D_NAME_COVERAGE = 66,
-    D3D_NAME_DEPTH_GREATER_EQUAL = 67,
-    D3D_NAME_DEPTH_LESS_EQUAL = 68,
-    D3D_NAME_STENCIL_REF = 69,
-    D3D_NAME_INNER_COVERAGE = 70,
-
-    D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
-    D3D10_NAME_POSITION = D3D_NAME_POSITION,
-    D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
-    D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
-    D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
-    D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
-    D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
-    D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
-    D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
-    D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
-    D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
-    D3D10_NAME_TARGET = D3D_NAME_TARGET,
-    D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
-    D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
-
-    D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR, 
-    D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR, 
-    D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR, 
-    D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR, 
-    D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
-    D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
-    D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
-    D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
-
-    D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
-    D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
-
-    D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
-    D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
-    D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
-} D3D_NAME;
-
-typedef enum D3D_RESOURCE_RETURN_TYPE
-{
-    D3D_RETURN_TYPE_UNORM = 1,
-    D3D_RETURN_TYPE_SNORM = 2,
-    D3D_RETURN_TYPE_SINT = 3,
-    D3D_RETURN_TYPE_UINT = 4,
-    D3D_RETURN_TYPE_FLOAT = 5,
-    D3D_RETURN_TYPE_MIXED = 6,
-    D3D_RETURN_TYPE_DOUBLE = 7,
-    D3D_RETURN_TYPE_CONTINUED = 8,
-
-    D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
-    D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
-    D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
-    D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
-    D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
-    D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
-
-    D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
-    D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
-    D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
-    D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
-    D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
-    D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
-    D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
-    D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
-} D3D_RESOURCE_RETURN_TYPE;
-
-typedef enum D3D_REGISTER_COMPONENT_TYPE
-{
-    D3D_REGISTER_COMPONENT_UNKNOWN = 0,
-    D3D_REGISTER_COMPONENT_UINT32 = 1,
-    D3D_REGISTER_COMPONENT_SINT32 = 2,
-    D3D_REGISTER_COMPONENT_FLOAT32 = 3,
-    D3D_REGISTER_COMPONENT_UINT16 = 4,
-    D3D_REGISTER_COMPONENT_SINT16 = 5,
-    D3D_REGISTER_COMPONENT_FLOAT16 = 6,
-    D3D_REGISTER_COMPONENT_UINT64 = 7,
-    D3D_REGISTER_COMPONENT_SINT64 = 8,
-    D3D_REGISTER_COMPONENT_FLOAT64 = 9,
-
-    D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
-    D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
-    D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
-    D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
-    D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
-    D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
-    D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
-    D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
-    D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
-    D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64,
-} D3D_REGISTER_COMPONENT_TYPE;
-
-typedef enum D3D_TESSELLATOR_DOMAIN
-{
-    D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
-    D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
-    D3D_TESSELLATOR_DOMAIN_TRI = 2,
-    D3D_TESSELLATOR_DOMAIN_QUAD = 3,
-
-    D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
-    D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
-    D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
-    D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
-} D3D_TESSELLATOR_DOMAIN;
-
-typedef enum D3D_TESSELLATOR_PARTITIONING
-{
-    D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
-    D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
-    D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
-    D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
-    D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
-
-    D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
-    D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
-    D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
-    D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
-    D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
-} D3D_TESSELLATOR_PARTITIONING;
-
-typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
-{
-    D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
-    D3D_TESSELLATOR_OUTPUT_POINT = 1,
-    D3D_TESSELLATOR_OUTPUT_LINE = 2,
-    D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
-    D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
-
-    D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
-    D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
-    D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
-    D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
-    D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
-} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
-
-typedef enum D3D_MIN_PRECISION
-{
-    D3D_MIN_PRECISION_DEFAULT    = 0, // Default precision for the shader model
-    D3D_MIN_PRECISION_FLOAT_16   = 1, // Min 16 bit/component float
-    D3D_MIN_PRECISION_FLOAT_2_8  = 2, // Min 10(2.8)bit/comp. float
-    D3D_MIN_PRECISION_RESERVED   = 3, // Reserved for future use
-    D3D_MIN_PRECISION_SINT_16    = 4, // Min 16 bit/comp. signed integer
-    D3D_MIN_PRECISION_UINT_16    = 5, // Min 16 bit/comp. unsigned integer
-
-    // These values are abstractions of width only for use in situations
-    // where a general width is needed instead of specific types.  They
-    // will never be used in shader operands.
-    D3D_MIN_PRECISION_ANY_16     = 0xf0,
-    D3D_MIN_PRECISION_ANY_10     = 0xf1,
-} D3D_MIN_PRECISION;
-
-typedef enum D3D_INTERPOLATION_MODE
-{
-    D3D_INTERPOLATION_UNDEFINED = 0,
-    D3D_INTERPOLATION_CONSTANT = 1,
-    D3D_INTERPOLATION_LINEAR = 2,
-    D3D_INTERPOLATION_LINEAR_CENTROID = 3,
-    D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
-    D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
-    D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
-    D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
-} D3D_INTERPOLATION_MODE;
-
-// Parameter flags.
-typedef enum _D3D_PARAMETER_FLAGS
-{
-    D3D_PF_NONE               = 0x00000000,
-    D3D_PF_IN                 = 0x00000001,
-    D3D_PF_OUT                = 0x00000002,
-    D3D_PF_FORCE_DWORD        = 0x7fffffff
-} D3D_PARAMETER_FLAGS;
-
-// Format Layout Properties
-typedef enum D3D_FORMAT_LAYOUT
-{
-    D3DFL_STANDARD = 0, // standard layout
-    D3DFL_CUSTOM = -1  // custom layout
-    // Note, 1 bit allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
-    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
-} D3D_FORMAT_LAYOUT;
-
-typedef enum D3D_FORMAT_TYPE_LEVEL
-{
-    D3DFTL_NO_TYPE = 0,
-    D3DFTL_PARTIAL_TYPE = -2,
-    D3DFTL_FULL_TYPE = -1,
-    // Note, 2 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
-    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
-} D3D_FORMAT_TYPE_LEVEL;
-
-typedef enum D3D_FORMAT_COMPONENT_NAME
-{
-    D3DFCN_R = -4,
-    D3DFCN_G = -3,
-    D3DFCN_B = -2,
-    D3DFCN_A = -1,
-    D3DFCN_D = 0,
-    D3DFCN_S = 1,
-    D3DFCN_X = 2,
-    // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
-    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
-} D3D_FORMAT_COMPONENT_NAME;
-
-typedef enum D3D_FORMAT_COMPONENT_INTERPRETATION
-{
-    D3DFCI_TYPELESS = 0,
-    D3DFCI_FLOAT = -4,
-    D3DFCI_SNORM = -3,
-    D3DFCI_UNORM = -2,
-    D3DFCI_SINT = -1,
-    D3DFCI_UINT = 1,
-    D3DFCI_UNORM_SRGB = 2,
-    D3DFCI_BIASED_FIXED_2_8 = 3,
-    // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
-    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
-} D3D_FORMAT_COMPONENT_INTERPRETATION;
-
-// Well-Known Private Data IDs (WKPDID_*):
-
-// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
-//
-// const char c_szName[] = "texture.jpg";
-// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
-cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
-cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
-cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
-cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
-
-cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
-cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
-cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
-cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
-
-cpp_quote("#define D3D_COMPONENT_MASK_X   1")
-cpp_quote("#define D3D_COMPONENT_MASK_Y   2")
-cpp_quote("#define D3D_COMPONENT_MASK_Z   4")
-cpp_quote("#define D3D_COMPONENT_MASK_W   8")
-
-cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
-cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
-
+/*-------------------------------------------------------------------------------------
+ *
+ * Copyright (c) Microsoft Corporation
+ * Licensed under the MIT license
+ *
+ *-------------------------------------------------------------------------------------*/
+import "oaidl.idl";
+import "ocidl.idl";
+
+//----------------------------------------------------------------------------
+//
+// D3D-version-neutral runtime information.
+//
+//----------------------------------------------------------------------------
+
+typedef enum D3D_DRIVER_TYPE
+{
+    D3D_DRIVER_TYPE_UNKNOWN,
+    D3D_DRIVER_TYPE_HARDWARE,
+    D3D_DRIVER_TYPE_REFERENCE,
+    D3D_DRIVER_TYPE_NULL,
+    D3D_DRIVER_TYPE_SOFTWARE,
+    D3D_DRIVER_TYPE_WARP,
+} D3D_DRIVER_TYPE;
+
+typedef enum D3D_FEATURE_LEVEL
+{
+    D3D_FEATURE_LEVEL_1_0_GENERIC = 0x100,
+    D3D_FEATURE_LEVEL_1_0_CORE = 0x1000,
+    D3D_FEATURE_LEVEL_9_1 = 0x9100,
+    D3D_FEATURE_LEVEL_9_2 = 0x9200,
+    D3D_FEATURE_LEVEL_9_3 = 0x9300,
+    D3D_FEATURE_LEVEL_10_0 = 0xa000,
+    D3D_FEATURE_LEVEL_10_1 = 0xa100,
+    D3D_FEATURE_LEVEL_11_0 = 0xb000,
+    D3D_FEATURE_LEVEL_11_1 = 0xb100,
+    D3D_FEATURE_LEVEL_12_0 = 0xc000,
+    D3D_FEATURE_LEVEL_12_1 = 0xc100,
+    D3D_FEATURE_LEVEL_12_2 = 0xc200
+} D3D_FEATURE_LEVEL;
+
+cpp_quote("#define D3D_FL9_1_REQ_TEXTURE1D_U_DIMENSION          2048")
+cpp_quote("#define D3D_FL9_3_REQ_TEXTURE1D_U_DIMENSION          4096")
+cpp_quote("#define D3D_FL9_1_REQ_TEXTURE2D_U_OR_V_DIMENSION     2048")
+cpp_quote("#define D3D_FL9_3_REQ_TEXTURE2D_U_OR_V_DIMENSION     4096")
+cpp_quote("#define D3D_FL9_1_REQ_TEXTURECUBE_DIMENSION          512")
+cpp_quote("#define D3D_FL9_3_REQ_TEXTURECUBE_DIMENSION          4096")
+cpp_quote("#define D3D_FL9_1_REQ_TEXTURE3D_U_V_OR_W_DIMENSION   256")
+cpp_quote("#define D3D_FL9_1_DEFAULT_MAX_ANISOTROPY             2")
+cpp_quote("#define D3D_FL9_1_IA_PRIMITIVE_MAX_COUNT             65535")
+cpp_quote("#define D3D_FL9_2_IA_PRIMITIVE_MAX_COUNT             1048575")
+cpp_quote("#define D3D_FL9_1_SIMULTANEOUS_RENDER_TARGET_COUNT   1")
+cpp_quote("#define D3D_FL9_3_SIMULTANEOUS_RENDER_TARGET_COUNT   4")
+cpp_quote("#define D3D_FL9_1_MAX_TEXTURE_REPEAT                 128")
+cpp_quote("#define D3D_FL9_2_MAX_TEXTURE_REPEAT                 2048")
+cpp_quote("#define D3D_FL9_3_MAX_TEXTURE_REPEAT                 8192")
+
+typedef enum D3D_PRIMITIVE_TOPOLOGY
+{
+    D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
+    D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
+    D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
+    D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
+    D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
+    D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
+    D3D_PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 6,
+    // Adjacency values should be equal to (0x8 & non-adjacency):
+    D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
+    D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
+    D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
+    D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
+    D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
+    D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
+    D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
+    D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
+    D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
+    D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
+    D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
+    D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
+    D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
+    D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
+    D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
+    D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
+    D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
+    D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
+    D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
+    D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
+    D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
+    D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
+    D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
+    D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
+    D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
+    D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
+    D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
+    D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
+    D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
+    D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
+    D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
+    D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
+    D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
+    D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
+    D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
+    D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
+
+    D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
+    D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
+    D3D10_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
+    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
+    D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
+    D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
+    D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
+
+    D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = D3D_PRIMITIVE_TOPOLOGY_UNDEFINED,
+    D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = D3D_PRIMITIVE_TOPOLOGY_POINTLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_LINELIST = D3D_PRIMITIVE_TOPOLOGY_LINELIST,
+    D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP,
+    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST,
+    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP,
+    D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ,
+    D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ,
+    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ,
+    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ,
+    D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST,
+    D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST
+} D3D_PRIMITIVE_TOPOLOGY;
+
+typedef enum D3D_PRIMITIVE
+{
+    D3D_PRIMITIVE_UNDEFINED = 0,
+    D3D_PRIMITIVE_POINT = 1,
+    D3D_PRIMITIVE_LINE = 2,
+    D3D_PRIMITIVE_TRIANGLE = 3,
+    // Adjacency values should be equal to (0x4 & non-adjacency):
+    D3D_PRIMITIVE_LINE_ADJ = 6,
+    D3D_PRIMITIVE_TRIANGLE_ADJ = 7,
+    D3D_PRIMITIVE_1_CONTROL_POINT_PATCH = 8,
+    D3D_PRIMITIVE_2_CONTROL_POINT_PATCH = 9,
+    D3D_PRIMITIVE_3_CONTROL_POINT_PATCH = 10,
+    D3D_PRIMITIVE_4_CONTROL_POINT_PATCH = 11,
+    D3D_PRIMITIVE_5_CONTROL_POINT_PATCH = 12,
+    D3D_PRIMITIVE_6_CONTROL_POINT_PATCH = 13,
+    D3D_PRIMITIVE_7_CONTROL_POINT_PATCH = 14,
+    D3D_PRIMITIVE_8_CONTROL_POINT_PATCH = 15,
+    D3D_PRIMITIVE_9_CONTROL_POINT_PATCH = 16,
+    D3D_PRIMITIVE_10_CONTROL_POINT_PATCH = 17,
+    D3D_PRIMITIVE_11_CONTROL_POINT_PATCH = 18,
+    D3D_PRIMITIVE_12_CONTROL_POINT_PATCH = 19,
+    D3D_PRIMITIVE_13_CONTROL_POINT_PATCH = 20,
+    D3D_PRIMITIVE_14_CONTROL_POINT_PATCH = 21,
+    D3D_PRIMITIVE_15_CONTROL_POINT_PATCH = 22,
+    D3D_PRIMITIVE_16_CONTROL_POINT_PATCH = 23,
+    D3D_PRIMITIVE_17_CONTROL_POINT_PATCH = 24,
+    D3D_PRIMITIVE_18_CONTROL_POINT_PATCH = 25,
+    D3D_PRIMITIVE_19_CONTROL_POINT_PATCH = 26,
+    D3D_PRIMITIVE_20_CONTROL_POINT_PATCH = 27,
+    D3D_PRIMITIVE_21_CONTROL_POINT_PATCH = 28,
+    D3D_PRIMITIVE_22_CONTROL_POINT_PATCH = 29,
+    D3D_PRIMITIVE_23_CONTROL_POINT_PATCH = 30,
+    D3D_PRIMITIVE_24_CONTROL_POINT_PATCH = 31,
+    D3D_PRIMITIVE_25_CONTROL_POINT_PATCH = 32,
+    D3D_PRIMITIVE_26_CONTROL_POINT_PATCH = 33,
+    D3D_PRIMITIVE_27_CONTROL_POINT_PATCH = 34,
+    D3D_PRIMITIVE_28_CONTROL_POINT_PATCH = 35,
+    D3D_PRIMITIVE_29_CONTROL_POINT_PATCH = 36,
+    D3D_PRIMITIVE_30_CONTROL_POINT_PATCH = 37,
+    D3D_PRIMITIVE_31_CONTROL_POINT_PATCH = 38,
+    D3D_PRIMITIVE_32_CONTROL_POINT_PATCH = 39,
+
+    D3D10_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
+    D3D10_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
+    D3D10_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
+    D3D10_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
+    D3D10_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
+    D3D10_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
+
+    D3D11_PRIMITIVE_UNDEFINED = D3D_PRIMITIVE_UNDEFINED,
+    D3D11_PRIMITIVE_POINT = D3D_PRIMITIVE_POINT,
+    D3D11_PRIMITIVE_LINE = D3D_PRIMITIVE_LINE,
+    D3D11_PRIMITIVE_TRIANGLE = D3D_PRIMITIVE_TRIANGLE,
+    D3D11_PRIMITIVE_LINE_ADJ = D3D_PRIMITIVE_LINE_ADJ,
+    D3D11_PRIMITIVE_TRIANGLE_ADJ = D3D_PRIMITIVE_TRIANGLE_ADJ,
+    D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH = D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH = D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH = D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH = D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH = D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH = D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH = D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH = D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH = D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH = D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH = D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH = D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH = D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH = D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH = D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH = D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH = D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH = D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH = D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH = D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH = D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH = D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH = D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH = D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH = D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH = D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH = D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH = D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH = D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH = D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH = D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
+    D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH = D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
+} D3D_PRIMITIVE;
+
+typedef enum D3D_SRV_DIMENSION
+{
+    D3D_SRV_DIMENSION_UNKNOWN = 0,
+    D3D_SRV_DIMENSION_BUFFER = 1,
+    D3D_SRV_DIMENSION_TEXTURE1D = 2,
+    D3D_SRV_DIMENSION_TEXTURE1DARRAY = 3,
+    D3D_SRV_DIMENSION_TEXTURE2D = 4,
+    D3D_SRV_DIMENSION_TEXTURE2DARRAY = 5,
+    D3D_SRV_DIMENSION_TEXTURE2DMS = 6,
+    D3D_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
+    D3D_SRV_DIMENSION_TEXTURE3D = 8,
+    D3D_SRV_DIMENSION_TEXTURECUBE = 9,
+    D3D_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
+    D3D_SRV_DIMENSION_BUFFEREX = 11,
+
+    D3D10_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
+    D3D10_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
+    D3D10_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
+    D3D10_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
+    D3D10_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
+    D3D10_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
+    D3D10_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
+    D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
+    D3D10_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
+    D3D10_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
+
+    D3D10_1_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
+    D3D10_1_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
+    D3D10_1_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
+    D3D10_1_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
+    D3D10_1_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
+    D3D10_1_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
+    D3D10_1_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
+    D3D10_1_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
+    D3D10_1_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
+    D3D10_1_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
+    D3D10_1_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
+
+    D3D11_SRV_DIMENSION_UNKNOWN = D3D_SRV_DIMENSION_UNKNOWN,
+    D3D11_SRV_DIMENSION_BUFFER = D3D_SRV_DIMENSION_BUFFER,
+    D3D11_SRV_DIMENSION_TEXTURE1D = D3D_SRV_DIMENSION_TEXTURE1D,
+    D3D11_SRV_DIMENSION_TEXTURE1DARRAY = D3D_SRV_DIMENSION_TEXTURE1DARRAY,
+    D3D11_SRV_DIMENSION_TEXTURE2D = D3D_SRV_DIMENSION_TEXTURE2D,
+    D3D11_SRV_DIMENSION_TEXTURE2DARRAY = D3D_SRV_DIMENSION_TEXTURE2DARRAY,
+    D3D11_SRV_DIMENSION_TEXTURE2DMS = D3D_SRV_DIMENSION_TEXTURE2DMS,
+    D3D11_SRV_DIMENSION_TEXTURE2DMSARRAY = D3D_SRV_DIMENSION_TEXTURE2DMSARRAY,
+    D3D11_SRV_DIMENSION_TEXTURE3D = D3D_SRV_DIMENSION_TEXTURE3D,
+    D3D11_SRV_DIMENSION_TEXTURECUBE = D3D_SRV_DIMENSION_TEXTURECUBE,
+    D3D11_SRV_DIMENSION_TEXTURECUBEARRAY = D3D_SRV_DIMENSION_TEXTURECUBEARRAY,
+    D3D11_SRV_DIMENSION_BUFFEREX = D3D_SRV_DIMENSION_BUFFEREX,
+} D3D_SRV_DIMENSION;
+
+// Bits in shaders indicating features they use which the runtime checks against current device support:
+cpp_quote("#define D3D_SHADER_FEATURE_DOUBLES                                                        0x00001")
+cpp_quote("#define D3D_SHADER_FEATURE_COMPUTE_SHADERS_PLUS_RAW_AND_STRUCTURED_BUFFERS_VIA_SHADER_4_X 0x00002")
+cpp_quote("#define D3D_SHADER_FEATURE_UAVS_AT_EVERY_STAGE                                            0x00004")
+cpp_quote("#define D3D_SHADER_FEATURE_64_UAVS                                                        0x00008")
+cpp_quote("#define D3D_SHADER_FEATURE_MINIMUM_PRECISION                                              0x00010")
+cpp_quote("#define D3D_SHADER_FEATURE_11_1_DOUBLE_EXTENSIONS                                         0x00020")
+cpp_quote("#define D3D_SHADER_FEATURE_11_1_SHADER_EXTENSIONS                                         0x00040")
+cpp_quote("#define D3D_SHADER_FEATURE_LEVEL_9_COMPARISON_FILTERING                                   0x00080")
+cpp_quote("#define D3D_SHADER_FEATURE_TILED_RESOURCES                                                0x00100")
+cpp_quote("#define D3D_SHADER_FEATURE_STENCIL_REF                                                    0x00200")
+cpp_quote("#define D3D_SHADER_FEATURE_INNER_COVERAGE                                                 0x00400")
+cpp_quote("#define D3D_SHADER_FEATURE_TYPED_UAV_LOAD_ADDITIONAL_FORMATS                              0x00800")
+cpp_quote("#define D3D_SHADER_FEATURE_ROVS                                                           0x01000")
+cpp_quote("#define D3D_SHADER_FEATURE_VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER 0x02000")
+cpp_quote("#define D3D_SHADER_FEATURE_WAVE_OPS                                                       0x04000")
+cpp_quote("#define D3D_SHADER_FEATURE_INT64_OPS                                                      0x08000")
+cpp_quote("#define D3D_SHADER_FEATURE_VIEW_ID                                                        0x10000")
+cpp_quote("#define D3D_SHADER_FEATURE_BARYCENTRICS                                                   0x20000")
+cpp_quote("#define D3D_SHADER_FEATURE_NATIVE_16BIT_OPS                                               0x40000")
+cpp_quote("#define D3D_SHADER_FEATURE_SHADING_RATE                                                   0x80000")
+cpp_quote("#define D3D_SHADER_FEATURE_RAYTRACING_TIER_1_1                                            0x100000")
+cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_FEEDBACK                                               0x200000")
+cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_TYPED_RESOURCE                                 0x400000")
+cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_GROUP_SHARED                                   0x800000")
+cpp_quote("#define D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS                  0x1000000")
+cpp_quote("#define D3D_SHADER_FEATURE_RESOURCE_DESCRIPTOR_HEAP_INDEXING                              0x2000000")
+cpp_quote("#define D3D_SHADER_FEATURE_SAMPLER_DESCRIPTOR_HEAP_INDEXING                               0x4000000")
+cpp_quote("#define D3D_SHADER_FEATURE_WAVE_MMA                                                       0x8000000")
+cpp_quote("#define D3D_SHADER_FEATURE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE                       0x10000000")
+cpp_quote("#define D3D_SHADER_FEATURE_ADVANCED_TEXTURE_OPS                                           0x20000000")
+cpp_quote("#define D3D_SHADER_FEATURE_WRITEABLE_MSAA_TEXTURES                                        0x40000000")
+cpp_quote("#define D3D_SHADER_FEATURE_SAMPLE_CMP_GRADIENT_OR_BIAS                                    0x80000000")
+cpp_quote("#define D3D_SHADER_FEATURE_EXTENDED_COMMAND_INFO                                          0x100000000ull")
+
+// This section is for flags that do not directly indicate a required feature,
+// but are used to indicate something about the shader.
+
+// Flag for any derivative use.  This allows call-graph validation
+// in the runtime to detect misuse of derivatives for an entry point that cannot
+// support it, or to determine when the flag
+// D3D_SHADER_FEATURE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS is required.
+cpp_quote("#define D3D_OPT_SHADER_FEATURE_USES_DERIVATIVES                                         0x0000010000000000ull")
+
+cpp_quote("#define D3D_OPT_SHADER_FEATURE_REQUIRES_GROUP                                           0x0000020000000000ull")
+
+
+// Additional internal shader feature flags are listed in dxbcutils.h (not relevant/useful for public to see)
+// When adding entries here, make sure they don't conflict with what's there.
+
+//----------------------------------------------------------------------------
+//
+// Shader compilation information.
+//
+//----------------------------------------------------------------------------
+
+//----------------------------------------------------------------------------
+// D3D_SHADER_MACRO:
+// ----------
+// Preprocessor macro definition.  The application pass in a NULL-terminated
+// array of this structure to various D3D APIs.  This enables the application
+// to #define tokens at runtime, before the file is parsed.
+//----------------------------------------------------------------------------
+
+typedef struct _D3D_SHADER_MACRO
+{
+    LPCSTR Name;
+    LPCSTR Definition;
+} D3D_SHADER_MACRO, *LPD3D_SHADER_MACRO;
+
+//----------------------------------------------------------------------------
+// ID3DBlob:
+// ------------
+// The buffer object is used by D3D to return arbitrary size data.
+// For compatibility with D3D10 this interface is also called ID3D10Blob,
+// but the version-neutral form is preferred.
+//
+// GetBufferPointer -
+//    Returns a pointer to the beginning of the buffer.
+//
+// GetBufferSize -
+//    Returns the size of the buffer, in bytes.
+//----------------------------------------------------------------------------
+
+// {8BA5FB08-5195-40e2-AC58-0D989C3A0102}
+cpp_quote("DEFINE_GUID(IID_ID3D10Blob, 0x8ba5fb08, 0x5195, 0x40e2, 0xac, 0x58, 0xd, 0x98, 0x9c, 0x3a, 0x1, 0x2);")
+
+[ uuid( 8BA5FB08-5195-40e2-AC58-0D989C3A0102 ), object, local, pointer_default( unique ) ]
+interface ID3D10Blob : IUnknown
+{
+    LPVOID GetBufferPointer();
+    SIZE_T GetBufferSize();
+};
+
+cpp_quote("typedef interface ID3D10Blob* LPD3D10BLOB;")
+
+typedef ID3D10Blob ID3DBlob;
+cpp_quote("typedef ID3DBlob* LPD3DBLOB;")
+cpp_quote("#define IID_ID3DBlob IID_ID3D10Blob")
+
+// ID3DDestructionNotifier: An interface to QI for, to set a callback which is triggered when the object is fully destroyed
+typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void* pData);
+
+[uuid(a06eb39a-50da-425b-8c31-4eecd6c270f3), object, local, pointer_default(unique)]
+interface ID3DDestructionNotifier
+    : IUnknown
+{
+    HRESULT RegisterDestructionCallback(
+        [annotation("_In_")] PFN_DESTRUCTION_CALLBACK callbackFn,
+        [annotation("_In_")] void* pData,
+        [annotation("_Out_")] UINT* pCallbackID
+        );
+    HRESULT UnregisterDestructionCallback(
+        [annotation("_In_")] UINT callbackID
+        );
+};
+
+typedef enum _D3D_INCLUDE_TYPE
+{
+    D3D_INCLUDE_LOCAL,
+    D3D_INCLUDE_SYSTEM,
+
+    D3D10_INCLUDE_LOCAL = D3D_INCLUDE_LOCAL,
+    D3D10_INCLUDE_SYSTEM = D3D_INCLUDE_SYSTEM,
+
+    // force 32-bit size enum
+    D3D_INCLUDE_FORCE_DWORD = 0x7fffffff
+} D3D_INCLUDE_TYPE;
+
+//----------------------------------------------------------------------------
+// ID3DInclude:
+// -------------
+// This interface is intended to be implemented by the application, and can
+// be used by various D3D APIs.  This enables application-specific handling
+// of #include directives in source files.
+//
+// Open()
+//    Opens an include file.  If successful, it should fill in ppData and
+//    pBytes.  The data pointer returned must remain valid until Close is
+//    subsequently called.  The name of the file is encoded in UTF-8 format.
+// Close()
+//    Closes an include file.  If Open was successful, Close is guaranteed
+//    to be called before the API using this interface returns.
+//----------------------------------------------------------------------------
+
+cpp_quote("typedef interface ID3DInclude ID3DInclude;")
+
+cpp_quote("#undef INTERFACE")
+cpp_quote("#define INTERFACE ID3DInclude")
+
+cpp_quote("DECLARE_INTERFACE(ID3DInclude)")
+cpp_quote("{")
+cpp_quote("    STDMETHOD(Open)(THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;")
+cpp_quote("    STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;")
+cpp_quote("};")
+
+cpp_quote("typedef ID3DInclude* LPD3DINCLUDE;")
+
+//----------------------------------------------------------------------------
+//
+// Shader reflection information.
+//
+//----------------------------------------------------------------------------
+
+typedef enum _D3D_SHADER_VARIABLE_CLASS
+{
+    D3D_SVC_SCALAR,
+    D3D_SVC_VECTOR,
+    D3D_SVC_MATRIX_ROWS,
+    D3D_SVC_MATRIX_COLUMNS,
+    D3D_SVC_OBJECT,
+    D3D_SVC_STRUCT,
+    D3D_SVC_INTERFACE_CLASS,
+    D3D_SVC_INTERFACE_POINTER,
+
+    D3D10_SVC_SCALAR = D3D_SVC_SCALAR,
+    D3D10_SVC_VECTOR = D3D_SVC_VECTOR,
+    D3D10_SVC_MATRIX_ROWS = D3D_SVC_MATRIX_ROWS,
+    D3D10_SVC_MATRIX_COLUMNS = D3D_SVC_MATRIX_COLUMNS,
+    D3D10_SVC_OBJECT = D3D_SVC_OBJECT,
+    D3D10_SVC_STRUCT = D3D_SVC_STRUCT,
+
+    D3D11_SVC_INTERFACE_CLASS = D3D_SVC_INTERFACE_CLASS,
+    D3D11_SVC_INTERFACE_POINTER = D3D_SVC_INTERFACE_POINTER,
+
+    // force 32-bit size enum
+    D3D_SVC_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_VARIABLE_CLASS;
+
+typedef enum _D3D_SHADER_VARIABLE_FLAGS
+{
+    D3D_SVF_USERPACKED = 1,
+    D3D_SVF_USED       = 2,
+
+    D3D_SVF_INTERFACE_POINTER = 4,
+    D3D_SVF_INTERFACE_PARAMETER = 8,
+
+    D3D10_SVF_USERPACKED = D3D_SVF_USERPACKED,
+    D3D10_SVF_USED       = D3D_SVF_USED,
+
+    D3D11_SVF_INTERFACE_POINTER = D3D_SVF_INTERFACE_POINTER,
+    D3D11_SVF_INTERFACE_PARAMETER = D3D_SVF_INTERFACE_PARAMETER,
+
+    // force 32-bit size enum
+    D3D_SVF_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_VARIABLE_FLAGS;
+
+typedef enum _D3D_SHADER_VARIABLE_TYPE
+{
+    D3D_SVT_VOID = 0,
+    D3D_SVT_BOOL = 1,
+    D3D_SVT_INT = 2,
+    D3D_SVT_FLOAT = 3,
+    D3D_SVT_STRING = 4,
+    D3D_SVT_TEXTURE = 5,
+    D3D_SVT_TEXTURE1D = 6,
+    D3D_SVT_TEXTURE2D = 7,
+    D3D_SVT_TEXTURE3D = 8,
+    D3D_SVT_TEXTURECUBE = 9,
+    D3D_SVT_SAMPLER = 10, 
+    D3D_SVT_SAMPLER1D = 11,
+    D3D_SVT_SAMPLER2D = 12,
+    D3D_SVT_SAMPLER3D = 13,
+    D3D_SVT_SAMPLERCUBE = 14,
+    D3D_SVT_PIXELSHADER = 15,
+    D3D_SVT_VERTEXSHADER = 16,
+    D3D_SVT_PIXELFRAGMENT = 17,
+    D3D_SVT_VERTEXFRAGMENT = 18,
+    D3D_SVT_UINT = 19,
+    D3D_SVT_UINT8 = 20,
+    D3D_SVT_GEOMETRYSHADER = 21,
+    D3D_SVT_RASTERIZER = 22,
+    D3D_SVT_DEPTHSTENCIL = 23,
+    D3D_SVT_BLEND = 24,
+    D3D_SVT_BUFFER = 25,
+    D3D_SVT_CBUFFER = 26,
+    D3D_SVT_TBUFFER = 27,
+    D3D_SVT_TEXTURE1DARRAY = 28,
+    D3D_SVT_TEXTURE2DARRAY = 29,
+    D3D_SVT_RENDERTARGETVIEW = 30,
+    D3D_SVT_DEPTHSTENCILVIEW = 31,
+
+    D3D_SVT_TEXTURE2DMS = 32,
+    D3D_SVT_TEXTURE2DMSARRAY = 33,
+
+    D3D_SVT_TEXTURECUBEARRAY = 34,
+
+    D3D_SVT_HULLSHADER = 35,
+    D3D_SVT_DOMAINSHADER = 36,
+
+    D3D_SVT_INTERFACE_POINTER = 37,
+    D3D_SVT_COMPUTESHADER = 38,
+    
+    D3D_SVT_DOUBLE = 39,
+    
+    D3D_SVT_RWTEXTURE1D = 40,
+    D3D_SVT_RWTEXTURE1DARRAY = 41,
+    D3D_SVT_RWTEXTURE2D = 42,
+    D3D_SVT_RWTEXTURE2DARRAY = 43,
+    D3D_SVT_RWTEXTURE3D = 44,
+    D3D_SVT_RWBUFFER = 45,
+
+    D3D_SVT_BYTEADDRESS_BUFFER = 46,
+    D3D_SVT_RWBYTEADDRESS_BUFFER = 47,
+    D3D_SVT_STRUCTURED_BUFFER = 48,
+    D3D_SVT_RWSTRUCTURED_BUFFER = 49,
+    D3D_SVT_APPEND_STRUCTURED_BUFFER = 50,
+    D3D_SVT_CONSUME_STRUCTURED_BUFFER = 51,
+
+    D3D_SVT_MIN8FLOAT = 52,
+    D3D_SVT_MIN10FLOAT = 53,
+    D3D_SVT_MIN16FLOAT = 54,
+    D3D_SVT_MIN12INT = 55,
+    D3D_SVT_MIN16INT = 56,
+    D3D_SVT_MIN16UINT = 57,
+
+    D3D_SVT_INT16 = 58,
+    D3D_SVT_UINT16 = 59,
+    D3D_SVT_FLOAT16 = 60,
+    D3D_SVT_INT64 = 61,
+    D3D_SVT_UINT64 = 62,
+
+    D3D10_SVT_VOID = D3D_SVT_VOID,
+    D3D10_SVT_BOOL = D3D_SVT_BOOL,
+    D3D10_SVT_INT = D3D_SVT_INT,
+    D3D10_SVT_FLOAT = D3D_SVT_FLOAT,
+    D3D10_SVT_STRING = D3D_SVT_STRING,
+    D3D10_SVT_TEXTURE = D3D_SVT_TEXTURE,
+    D3D10_SVT_TEXTURE1D = D3D_SVT_TEXTURE1D,
+    D3D10_SVT_TEXTURE2D = D3D_SVT_TEXTURE2D,
+    D3D10_SVT_TEXTURE3D = D3D_SVT_TEXTURE3D,
+    D3D10_SVT_TEXTURECUBE = D3D_SVT_TEXTURECUBE,
+    D3D10_SVT_SAMPLER = D3D_SVT_SAMPLER,
+    D3D10_SVT_SAMPLER1D = D3D_SVT_SAMPLER1D,
+    D3D10_SVT_SAMPLER2D = D3D_SVT_SAMPLER2D,
+    D3D10_SVT_SAMPLER3D = D3D_SVT_SAMPLER3D,
+    D3D10_SVT_SAMPLERCUBE = D3D_SVT_SAMPLERCUBE,
+    D3D10_SVT_PIXELSHADER = D3D_SVT_PIXELSHADER,
+    D3D10_SVT_VERTEXSHADER = D3D_SVT_VERTEXSHADER,
+    D3D10_SVT_PIXELFRAGMENT = D3D_SVT_PIXELFRAGMENT,
+    D3D10_SVT_VERTEXFRAGMENT = D3D_SVT_VERTEXFRAGMENT,
+    D3D10_SVT_UINT = D3D_SVT_UINT,
+    D3D10_SVT_UINT8 = D3D_SVT_UINT8,
+    D3D10_SVT_GEOMETRYSHADER = D3D_SVT_GEOMETRYSHADER,
+    D3D10_SVT_RASTERIZER = D3D_SVT_RASTERIZER,
+    D3D10_SVT_DEPTHSTENCIL = D3D_SVT_DEPTHSTENCIL,
+    D3D10_SVT_BLEND = D3D_SVT_BLEND,
+    D3D10_SVT_BUFFER = D3D_SVT_BUFFER,
+    D3D10_SVT_CBUFFER = D3D_SVT_CBUFFER,
+    D3D10_SVT_TBUFFER = D3D_SVT_TBUFFER,
+    D3D10_SVT_TEXTURE1DARRAY = D3D_SVT_TEXTURE1DARRAY,
+    D3D10_SVT_TEXTURE2DARRAY = D3D_SVT_TEXTURE2DARRAY,
+    D3D10_SVT_RENDERTARGETVIEW = D3D_SVT_RENDERTARGETVIEW,
+    D3D10_SVT_DEPTHSTENCILVIEW = D3D_SVT_DEPTHSTENCILVIEW,
+
+    D3D10_SVT_TEXTURE2DMS = D3D_SVT_TEXTURE2DMS,
+    D3D10_SVT_TEXTURE2DMSARRAY = D3D_SVT_TEXTURE2DMSARRAY,
+
+    D3D10_SVT_TEXTURECUBEARRAY = D3D_SVT_TEXTURECUBEARRAY,
+
+    D3D11_SVT_HULLSHADER = D3D_SVT_HULLSHADER,
+    D3D11_SVT_DOMAINSHADER = D3D_SVT_DOMAINSHADER,
+
+    D3D11_SVT_INTERFACE_POINTER = D3D_SVT_INTERFACE_POINTER,
+    D3D11_SVT_COMPUTESHADER = D3D_SVT_COMPUTESHADER,
+
+    D3D11_SVT_DOUBLE = D3D_SVT_DOUBLE,
+    
+    D3D11_SVT_RWTEXTURE1D = D3D_SVT_RWTEXTURE1D,
+    D3D11_SVT_RWTEXTURE1DARRAY = D3D_SVT_RWTEXTURE1DARRAY,
+    D3D11_SVT_RWTEXTURE2D = D3D_SVT_RWTEXTURE2D,
+    D3D11_SVT_RWTEXTURE2DARRAY = D3D_SVT_RWTEXTURE2DARRAY,
+    D3D11_SVT_RWTEXTURE3D = D3D_SVT_RWTEXTURE3D,
+    D3D11_SVT_RWBUFFER = D3D_SVT_RWBUFFER,
+    
+    D3D11_SVT_BYTEADDRESS_BUFFER = D3D_SVT_BYTEADDRESS_BUFFER,
+    D3D11_SVT_RWBYTEADDRESS_BUFFER = D3D_SVT_RWBYTEADDRESS_BUFFER,
+    D3D11_SVT_STRUCTURED_BUFFER = D3D_SVT_STRUCTURED_BUFFER,
+    D3D11_SVT_RWSTRUCTURED_BUFFER = D3D_SVT_RWSTRUCTURED_BUFFER,
+    D3D11_SVT_APPEND_STRUCTURED_BUFFER = D3D_SVT_APPEND_STRUCTURED_BUFFER,
+    D3D11_SVT_CONSUME_STRUCTURED_BUFFER = D3D_SVT_CONSUME_STRUCTURED_BUFFER,
+
+    // force 32-bit size enum
+    D3D_SVT_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_VARIABLE_TYPE;
+
+typedef enum _D3D_SHADER_INPUT_FLAGS
+{
+    D3D_SIF_USERPACKED          = 0x01,
+    D3D_SIF_COMPARISON_SAMPLER  = 0x02, // is this a comparison sampler?
+    D3D_SIF_TEXTURE_COMPONENT_0 = 0x04, // this 2-bit value encodes c - 1, where c
+    D3D_SIF_TEXTURE_COMPONENT_1 = 0x08, // is the number of components in the texture
+    D3D_SIF_TEXTURE_COMPONENTS  = 0x0c,
+    D3D_SIF_UNUSED              = 0x10,
+
+    D3D10_SIF_USERPACKED = D3D_SIF_USERPACKED,
+    D3D10_SIF_COMPARISON_SAMPLER = D3D_SIF_COMPARISON_SAMPLER,
+    D3D10_SIF_TEXTURE_COMPONENT_0 = D3D_SIF_TEXTURE_COMPONENT_0,
+    D3D10_SIF_TEXTURE_COMPONENT_1 = D3D_SIF_TEXTURE_COMPONENT_1,
+    D3D10_SIF_TEXTURE_COMPONENTS = D3D_SIF_TEXTURE_COMPONENTS,
+
+    // force 32-bit size enum
+    D3D_SIF_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_INPUT_FLAGS;
+
+typedef enum _D3D_SHADER_INPUT_TYPE
+{
+    D3D_SIT_CBUFFER,
+    D3D_SIT_TBUFFER,
+    D3D_SIT_TEXTURE,
+    D3D_SIT_SAMPLER,
+    D3D_SIT_UAV_RWTYPED,
+    D3D_SIT_STRUCTURED,
+    D3D_SIT_UAV_RWSTRUCTURED,
+    D3D_SIT_BYTEADDRESS,
+    D3D_SIT_UAV_RWBYTEADDRESS,
+    D3D_SIT_UAV_APPEND_STRUCTURED,
+    D3D_SIT_UAV_CONSUME_STRUCTURED,
+    D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
+    D3D_SIT_RTACCELERATIONSTRUCTURE,
+    D3D_SIT_UAV_FEEDBACKTEXTURE,
+
+    D3D10_SIT_CBUFFER = D3D_SIT_CBUFFER,
+    D3D10_SIT_TBUFFER = D3D_SIT_TBUFFER,
+    D3D10_SIT_TEXTURE = D3D_SIT_TEXTURE,
+    D3D10_SIT_SAMPLER = D3D_SIT_SAMPLER,
+
+    D3D11_SIT_UAV_RWTYPED = D3D_SIT_UAV_RWTYPED,
+    D3D11_SIT_STRUCTURED = D3D_SIT_STRUCTURED,
+    D3D11_SIT_UAV_RWSTRUCTURED = D3D_SIT_UAV_RWSTRUCTURED,
+    D3D11_SIT_BYTEADDRESS = D3D_SIT_BYTEADDRESS,
+    D3D11_SIT_UAV_RWBYTEADDRESS = D3D_SIT_UAV_RWBYTEADDRESS,
+    D3D11_SIT_UAV_APPEND_STRUCTURED = D3D_SIT_UAV_APPEND_STRUCTURED,
+    D3D11_SIT_UAV_CONSUME_STRUCTURED = D3D_SIT_UAV_CONSUME_STRUCTURED,
+    D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER = D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER,
+} D3D_SHADER_INPUT_TYPE;
+
+typedef enum _D3D_SHADER_CBUFFER_FLAGS
+{
+    D3D_CBF_USERPACKED = 1,
+
+    D3D10_CBF_USERPACKED = D3D_CBF_USERPACKED,
+
+    // force 32-bit size enum
+    D3D_CBF_FORCE_DWORD = 0x7fffffff
+} D3D_SHADER_CBUFFER_FLAGS;
+
+typedef enum _D3D_CBUFFER_TYPE
+{
+    D3D_CT_CBUFFER,
+    D3D_CT_TBUFFER,
+    D3D_CT_INTERFACE_POINTERS,
+    D3D_CT_RESOURCE_BIND_INFO,
+
+    D3D10_CT_CBUFFER = D3D_CT_CBUFFER,
+    D3D10_CT_TBUFFER = D3D_CT_TBUFFER,
+
+    D3D11_CT_CBUFFER = D3D_CT_CBUFFER,
+    D3D11_CT_TBUFFER = D3D_CT_TBUFFER,
+    D3D11_CT_INTERFACE_POINTERS = D3D_CT_INTERFACE_POINTERS,
+    D3D11_CT_RESOURCE_BIND_INFO = D3D_CT_RESOURCE_BIND_INFO,
+}  D3D_CBUFFER_TYPE;
+
+typedef enum D3D_NAME
+{
+    D3D_NAME_UNDEFINED = 0,
+
+    // Names meaningful to both HLSL and hardware
+    D3D_NAME_POSITION = 1,
+    D3D_NAME_CLIP_DISTANCE = 2,
+    D3D_NAME_CULL_DISTANCE = 3,
+    D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
+    D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
+    D3D_NAME_VERTEX_ID = 6,
+    D3D_NAME_PRIMITIVE_ID = 7,
+    D3D_NAME_INSTANCE_ID = 8,
+    D3D_NAME_IS_FRONT_FACE = 9,
+    D3D_NAME_SAMPLE_INDEX = 10,
+    D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11, 
+    D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12, 
+    D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13, 
+    D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14, 
+    D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
+    D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
+    D3D_NAME_BARYCENTRICS = 23,
+    D3D_NAME_SHADINGRATE = 24,
+    D3D_NAME_CULLPRIMITIVE = 25,
+
+    // Names meaningful to HLSL only
+    D3D_NAME_TARGET = 64,
+    D3D_NAME_DEPTH = 65,
+    D3D_NAME_COVERAGE = 66,
+    D3D_NAME_DEPTH_GREATER_EQUAL = 67,
+    D3D_NAME_DEPTH_LESS_EQUAL = 68,
+    D3D_NAME_STENCIL_REF = 69,
+    D3D_NAME_INNER_COVERAGE = 70,
+
+    D3D10_NAME_UNDEFINED = D3D_NAME_UNDEFINED,
+    D3D10_NAME_POSITION = D3D_NAME_POSITION,
+    D3D10_NAME_CLIP_DISTANCE = D3D_NAME_CLIP_DISTANCE,
+    D3D10_NAME_CULL_DISTANCE = D3D_NAME_CULL_DISTANCE,
+    D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = D3D_NAME_RENDER_TARGET_ARRAY_INDEX,
+    D3D10_NAME_VIEWPORT_ARRAY_INDEX = D3D_NAME_VIEWPORT_ARRAY_INDEX,
+    D3D10_NAME_VERTEX_ID = D3D_NAME_VERTEX_ID,
+    D3D10_NAME_PRIMITIVE_ID = D3D_NAME_PRIMITIVE_ID,
+    D3D10_NAME_INSTANCE_ID = D3D_NAME_INSTANCE_ID,
+    D3D10_NAME_IS_FRONT_FACE = D3D_NAME_IS_FRONT_FACE,
+    D3D10_NAME_SAMPLE_INDEX = D3D_NAME_SAMPLE_INDEX,
+    D3D10_NAME_TARGET = D3D_NAME_TARGET,
+    D3D10_NAME_DEPTH = D3D_NAME_DEPTH,
+    D3D10_NAME_COVERAGE = D3D_NAME_COVERAGE,
+
+    D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR, 
+    D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR, 
+    D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR, 
+    D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR, 
+    D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
+    D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
+    D3D11_NAME_DEPTH_GREATER_EQUAL = D3D_NAME_DEPTH_GREATER_EQUAL,
+    D3D11_NAME_DEPTH_LESS_EQUAL = D3D_NAME_DEPTH_LESS_EQUAL,
+
+    D3D11_NAME_STENCIL_REF = D3D_NAME_STENCIL_REF,
+    D3D11_NAME_INNER_COVERAGE = D3D_NAME_INNER_COVERAGE,
+
+    D3D12_NAME_BARYCENTRICS = D3D_NAME_BARYCENTRICS,
+    D3D12_NAME_SHADINGRATE = D3D_NAME_SHADINGRATE,
+    D3D12_NAME_CULLPRIMITIVE = D3D_NAME_CULLPRIMITIVE,
+} D3D_NAME;
+
+typedef enum D3D_RESOURCE_RETURN_TYPE
+{
+    D3D_RETURN_TYPE_UNORM = 1,
+    D3D_RETURN_TYPE_SNORM = 2,
+    D3D_RETURN_TYPE_SINT = 3,
+    D3D_RETURN_TYPE_UINT = 4,
+    D3D_RETURN_TYPE_FLOAT = 5,
+    D3D_RETURN_TYPE_MIXED = 6,
+    D3D_RETURN_TYPE_DOUBLE = 7,
+    D3D_RETURN_TYPE_CONTINUED = 8,
+
+    D3D10_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
+    D3D10_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
+    D3D10_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
+    D3D10_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
+    D3D10_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
+    D3D10_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
+
+    D3D11_RETURN_TYPE_UNORM = D3D_RETURN_TYPE_UNORM,
+    D3D11_RETURN_TYPE_SNORM = D3D_RETURN_TYPE_SNORM,
+    D3D11_RETURN_TYPE_SINT = D3D_RETURN_TYPE_SINT,
+    D3D11_RETURN_TYPE_UINT = D3D_RETURN_TYPE_UINT,
+    D3D11_RETURN_TYPE_FLOAT = D3D_RETURN_TYPE_FLOAT,
+    D3D11_RETURN_TYPE_MIXED = D3D_RETURN_TYPE_MIXED,
+    D3D11_RETURN_TYPE_DOUBLE = D3D_RETURN_TYPE_DOUBLE,
+    D3D11_RETURN_TYPE_CONTINUED = D3D_RETURN_TYPE_CONTINUED,
+} D3D_RESOURCE_RETURN_TYPE;
+
+typedef enum D3D_REGISTER_COMPONENT_TYPE
+{
+    D3D_REGISTER_COMPONENT_UNKNOWN = 0,
+    D3D_REGISTER_COMPONENT_UINT32 = 1,
+    D3D_REGISTER_COMPONENT_SINT32 = 2,
+    D3D_REGISTER_COMPONENT_FLOAT32 = 3,
+    D3D_REGISTER_COMPONENT_UINT16 = 4,
+    D3D_REGISTER_COMPONENT_SINT16 = 5,
+    D3D_REGISTER_COMPONENT_FLOAT16 = 6,
+    D3D_REGISTER_COMPONENT_UINT64 = 7,
+    D3D_REGISTER_COMPONENT_SINT64 = 8,
+    D3D_REGISTER_COMPONENT_FLOAT64 = 9,
+
+    D3D10_REGISTER_COMPONENT_UNKNOWN = D3D_REGISTER_COMPONENT_UNKNOWN,
+    D3D10_REGISTER_COMPONENT_UINT32 = D3D_REGISTER_COMPONENT_UINT32,
+    D3D10_REGISTER_COMPONENT_SINT32 = D3D_REGISTER_COMPONENT_SINT32,
+    D3D10_REGISTER_COMPONENT_FLOAT32 = D3D_REGISTER_COMPONENT_FLOAT32,
+    D3D10_REGISTER_COMPONENT_UINT16 = D3D_REGISTER_COMPONENT_UINT16,
+    D3D10_REGISTER_COMPONENT_SINT16 = D3D_REGISTER_COMPONENT_SINT16,
+    D3D10_REGISTER_COMPONENT_FLOAT16 = D3D_REGISTER_COMPONENT_FLOAT16,
+    D3D10_REGISTER_COMPONENT_UINT64 = D3D_REGISTER_COMPONENT_UINT64,
+    D3D10_REGISTER_COMPONENT_SINT64 = D3D_REGISTER_COMPONENT_SINT64,
+    D3D10_REGISTER_COMPONENT_FLOAT64 = D3D_REGISTER_COMPONENT_FLOAT64,
+} D3D_REGISTER_COMPONENT_TYPE;
+
+typedef enum D3D_TESSELLATOR_DOMAIN
+{
+    D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
+    D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
+    D3D_TESSELLATOR_DOMAIN_TRI = 2,
+    D3D_TESSELLATOR_DOMAIN_QUAD = 3,
+
+    D3D11_TESSELLATOR_DOMAIN_UNDEFINED = D3D_TESSELLATOR_DOMAIN_UNDEFINED,
+    D3D11_TESSELLATOR_DOMAIN_ISOLINE = D3D_TESSELLATOR_DOMAIN_ISOLINE,
+    D3D11_TESSELLATOR_DOMAIN_TRI = D3D_TESSELLATOR_DOMAIN_TRI,
+    D3D11_TESSELLATOR_DOMAIN_QUAD = D3D_TESSELLATOR_DOMAIN_QUAD,
+} D3D_TESSELLATOR_DOMAIN;
+
+typedef enum D3D_TESSELLATOR_PARTITIONING
+{
+    D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
+    D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
+    D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
+    D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
+    D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
+
+    D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = D3D_TESSELLATOR_PARTITIONING_UNDEFINED,
+    D3D11_TESSELLATOR_PARTITIONING_INTEGER = D3D_TESSELLATOR_PARTITIONING_INTEGER,
+    D3D11_TESSELLATOR_PARTITIONING_POW2 = D3D_TESSELLATOR_PARTITIONING_POW2,
+    D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD,
+    D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN,
+} D3D_TESSELLATOR_PARTITIONING;
+
+typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE
+{
+    D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
+    D3D_TESSELLATOR_OUTPUT_POINT = 1,
+    D3D_TESSELLATOR_OUTPUT_LINE = 2,
+    D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
+    D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
+
+    D3D11_TESSELLATOR_OUTPUT_UNDEFINED = D3D_TESSELLATOR_OUTPUT_UNDEFINED,
+    D3D11_TESSELLATOR_OUTPUT_POINT = D3D_TESSELLATOR_OUTPUT_POINT,
+    D3D11_TESSELLATOR_OUTPUT_LINE = D3D_TESSELLATOR_OUTPUT_LINE,
+    D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW,
+    D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW,
+} D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
+
+typedef enum D3D_MIN_PRECISION
+{
+    D3D_MIN_PRECISION_DEFAULT    = 0, // Default precision for the shader model
+    D3D_MIN_PRECISION_FLOAT_16   = 1, // Min 16 bit/component float
+    D3D_MIN_PRECISION_FLOAT_2_8  = 2, // Min 10(2.8)bit/comp. float
+    D3D_MIN_PRECISION_RESERVED   = 3, // Reserved for future use
+    D3D_MIN_PRECISION_SINT_16    = 4, // Min 16 bit/comp. signed integer
+    D3D_MIN_PRECISION_UINT_16    = 5, // Min 16 bit/comp. unsigned integer
+
+    // These values are abstractions of width only for use in situations
+    // where a general width is needed instead of specific types.  They
+    // will never be used in shader operands.
+    D3D_MIN_PRECISION_ANY_16     = 0xf0,
+    D3D_MIN_PRECISION_ANY_10     = 0xf1,
+} D3D_MIN_PRECISION;
+
+typedef enum D3D_INTERPOLATION_MODE
+{
+    D3D_INTERPOLATION_UNDEFINED = 0,
+    D3D_INTERPOLATION_CONSTANT = 1,
+    D3D_INTERPOLATION_LINEAR = 2,
+    D3D_INTERPOLATION_LINEAR_CENTROID = 3,
+    D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE = 4,
+    D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_CENTROID = 5,
+    D3D_INTERPOLATION_LINEAR_SAMPLE = 6,
+    D3D_INTERPOLATION_LINEAR_NOPERSPECTIVE_SAMPLE = 7,
+} D3D_INTERPOLATION_MODE;
+
+// Parameter flags.
+typedef enum _D3D_PARAMETER_FLAGS
+{
+    D3D_PF_NONE               = 0x00000000,
+    D3D_PF_IN                 = 0x00000001,
+    D3D_PF_OUT                = 0x00000002,
+    D3D_PF_FORCE_DWORD        = 0x7fffffff
+} D3D_PARAMETER_FLAGS;
+
+// Format Layout Properties
+typedef enum D3D_FORMAT_LAYOUT
+{
+    D3DFL_STANDARD = 0, // standard layout
+    D3DFL_CUSTOM = -1  // custom layout
+    // Note, 1 bit allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
+    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
+} D3D_FORMAT_LAYOUT;
+
+typedef enum D3D_FORMAT_TYPE_LEVEL
+{
+    D3DFTL_NO_TYPE = 0,
+    D3DFTL_PARTIAL_TYPE = -2,
+    D3DFTL_FULL_TYPE = -1,
+    // Note, 2 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
+    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
+} D3D_FORMAT_TYPE_LEVEL;
+
+typedef enum D3D_FORMAT_COMPONENT_NAME
+{
+    D3DFCN_R = -4,
+    D3DFCN_G = -3,
+    D3DFCN_B = -2,
+    D3DFCN_A = -1,
+    D3DFCN_D = 0,
+    D3DFCN_S = 1,
+    D3DFCN_X = 2,
+    // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
+    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
+} D3D_FORMAT_COMPONENT_NAME;
+
+typedef enum D3D_FORMAT_COMPONENT_INTERPRETATION
+{
+    D3DFCI_TYPELESS = 0,
+    D3DFCI_FLOAT = -4,
+    D3DFCI_SNORM = -3,
+    D3DFCI_UNORM = -2,
+    D3DFCI_SINT = -1,
+    D3DFCI_UINT = 1,
+    D3DFCI_UNORM_SRGB = 2,
+    D3DFCI_BIASED_FIXED_2_8 = 3,
+    // Note, 3 bits allocated for this in FORMAT_DETAIL below. If you add fields here, add bits...
+    // NOTE SIGNED VALUES ARE USED SINCE COMPILER MAKES ENUMS SIGNED, AND BITFIELDS ARE SIGN EXTENDED ON READ
+} D3D_FORMAT_COMPONENT_INTERPRETATION;
+
+// Well-Known Private Data IDs (WKPDID_*):
+
+// WKPDID_D3DDebugObjectName provides a unique name to objects in order to assist the developer during debugging.
+//
+// const char c_szName[] = "texture.jpg";
+// pObject->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
+cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectName,0x429b8c22,0x9188,0x4b0c,0x87,0x42,0xac,0xb0,0xbf,0x85,0xc2,0x00);")
+cpp_quote("DEFINE_GUID(WKPDID_D3DDebugObjectNameW,0x4cca5fd8,0x921f,0x42c8,0x85,0x66,0x70,0xca,0xf2,0xa9,0xb7,0x41);")
+cpp_quote("DEFINE_GUID(WKPDID_CommentStringW,0xd0149dc0,0x90e8,0x4ec8,0x81, 0x44, 0xe9, 0x00, 0xad, 0x26, 0x6b, 0xb2);")
+cpp_quote("DEFINE_GUID(WKPDID_D3D12UniqueObjectId, 0x1b39de15, 0xec04, 0x4bae, 0xba, 0x4d, 0x8c, 0xef, 0x79, 0xfc, 0x04, 0xc1);")
+
+cpp_quote("#define D3D_SET_OBJECT_NAME_N_A(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectName, Chars, pName)")
+cpp_quote("#define D3D_SET_OBJECT_NAME_A(pObject, pName) D3D_SET_OBJECT_NAME_N_A(pObject, lstrlenA(pName), pName)")
+cpp_quote("#define D3D_SET_OBJECT_NAME_N_W(pObject, Chars, pName) (pObject)->SetPrivateData(WKPDID_D3DDebugObjectNameW, Chars*2, pName)")
+cpp_quote("#define D3D_SET_OBJECT_NAME_W(pObject, pName) D3D_SET_OBJECT_NAME_N_W(pObject, wcslen(pName), pName)")
+
+cpp_quote("#define D3D_COMPONENT_MASK_X   1")
+cpp_quote("#define D3D_COMPONENT_MASK_Y   2")
+cpp_quote("#define D3D_COMPONENT_MASK_Z   4")
+cpp_quote("#define D3D_COMPONENT_MASK_W   8")
+
+cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_ROW_MAJOR,0xb5dc234f,0x72bb,0x4bec,0x97,0x05,0x8c,0xf2,0x58,0xdf,0x6b,0x6c);") // Feature_D3D1XDisplayable
+cpp_quote("DEFINE_GUID(D3D_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,0x4c0f29e3,0x3f5f,0x4d35,0x84,0xc9,0xbc,0x09,0x83,0xb6,0x2c,0x28);") // Feature_D3D1XDisplayable
+

+ 1 - 1
ThirdParty/AgilitySdk/include/d3dx12/d3dx12_core.h

@@ -1464,7 +1464,7 @@ inline const CD3DX12_RESOURCE_DESC1* D3DX12ConditionallyExpandAPIDesc(
                 }
                 return uiRet;
             };
-            auto Max = [](UINT64 const & a, UINT64 const & b)
+            auto Max = [](UINT64 const& a, UINT64 const& b)
             {
                 return (a < b) ? b : a;
             };

+ 4 - 0
ThirdParty/AgilitySdk/include/d3dx12/d3dx12_property_format_table.h

@@ -62,8 +62,10 @@ public:
     static LPCSTR               GetName                 (DXGI_FORMAT Format, bool bHideInternalFormats = true);
     static bool                 IsSRGBFormat            (DXGI_FORMAT Format);
     static UINT                 GetBitsPerStencil       (DXGI_FORMAT Format);
+    static UINT                 GetBitsPerDepth         (DXGI_FORMAT Format);
     static void                 GetFormatReturnTypes    (DXGI_FORMAT Format, D3D_FORMAT_COMPONENT_INTERPRETATION* pInterpretations); // return array of 4 components
     static UINT                 GetNumComponentsInFormat(DXGI_FORMAT Format);
+    static UINT                 GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB);
 
     // Converts the sequential component index (range from 0 to GetNumComponentsInFormat()) to
     // the absolute component index (range 0 to 3).
@@ -116,6 +118,8 @@ public:
     static UINT                                 GetDetailTableIndex         (DXGI_FORMAT  Format);
     static UINT                                 GetDetailTableIndexNoThrow  (DXGI_FORMAT  Format);
     static UINT                                 GetDetailTableIndexThrow    (DXGI_FORMAT  Format);
+    static bool                                 SupportsDepth               (DXGI_FORMAT Format);
+    static bool                                 SupportsStencil             (DXGI_FORMAT Format);
 private:
     static const FORMAT_DETAIL*                 GetFormatDetail             (DXGI_FORMAT  Format);
 

+ 4 - 1
ThirdParty/AgilitySdk/include/d3dx12/d3dx12_render_pass.h

@@ -60,6 +60,8 @@ inline bool operator==( const D3D12_RENDER_PASS_BEGINNING_ACCESS &a, const D3D12
         if (!(a.PreserveLocal == b.PreserveLocal)) return false;
         break;
 #endif
+    default:
+        break;
     }
     return true;
 }
@@ -79,8 +81,9 @@ inline bool operator==(const D3D12_RENDER_PASS_ENDING_ACCESS& a, const D3D12_REN
         if (!(a.PreserveLocal == b.PreserveLocal)) return false;
         break;
 #endif
+    default:
+        break;
     }
-
     return true;
 }
 

+ 2 - 1
ThirdParty/AgilitySdk/include/d3dx12/d3dx12_resource_helpers.h

@@ -460,7 +460,7 @@ inline bool D3DX12GetCopyableFootprints(
         UINT32 MinPlanePitchWidth, PlaneWidth, PlaneHeight;
         D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetPlaneSubsampledSizeAndFormatForCopyableLayout(PlaneSlice, Format, (UINT)Width, Height, /*_Out_*/ PlaneFormat, /*_Out_*/ MinPlanePitchWidth, /* _Out_ */ PlaneWidth, /*_Out_*/ PlaneHeight);
 
-        D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement;
+        D3D12_SUBRESOURCE_FOOTPRINT LocalPlacement = {};
         auto& Placement = pLayouts ? pLayouts[uSubRes].Footprint : LocalPlacement;
         Placement.Format = PlaneFormat;
         Placement.Width = PlaneWidth;
@@ -600,3 +600,4 @@ inline bool D3DX12GetCopyableFootprints(
 }
 
 #endif // D3D12_SDK_VERSION >= 606
+

+ 56 - 0
ThirdParty/AgilitySdk/include/d3dx12/d3dx12_state_object.h

@@ -71,8 +71,10 @@ public:
             ownedSubobject->Finalize();
         }
 
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
         m_RepointedSubobjectVectors.clear();
         m_RepointedPrograms.clear();
+#endif
         m_RepointedAssociations.clear();
         m_SubobjectArray.clear();
         m_SubobjectArray.reserve(m_Desc.NumSubobjects);
@@ -100,6 +102,7 @@ public:
                 m_RepointedAssociations.push_back(Repointed);
                 m_SubobjectArray[i].pDesc = &m_RepointedAssociations.back();
             }
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
             else if (m_SubobjectArray[i].Type == D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM)
             {
                 auto originalGenericProgramDesc =
@@ -122,6 +125,7 @@ public:
                 m_RepointedPrograms.push_back(Repointed);
                 m_SubobjectArray[i].pDesc = &m_RepointedPrograms.back();
             }
+#endif
         }
         // Below: using ugly way to get pointer in case .data() is not defined
         m_Desc.pSubobjects = m_Desc.NumSubobjects ? &m_SubobjectArray[0] : nullptr;
@@ -185,8 +189,10 @@ private:
         m_SubobjectList.clear();
         m_SubobjectArray.clear();
         m_RepointedAssociations.clear();
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
         m_RepointedSubobjectVectors.clear();
         m_RepointedPrograms.clear();
+#endif
     }
     typedef struct SUBOBJECT_WRAPPER : public D3D12_STATE_SUBOBJECT
     {
@@ -202,10 +208,12 @@ private:
         m_RepointedAssociations; // subobject type that contains pointers to other subobjects,
                                  // repointed to flattened array
 
+#if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 612)
     std::list<std::vector<D3D12_STATE_SUBOBJECT const*>>
         m_RepointedSubobjectVectors;
     std::list<D3D12_GENERIC_PROGRAM_DESC>
         m_RepointedPrograms;
+#endif
 
     template<typename CStr, typename StdStr>
     class StringContainer
@@ -317,6 +325,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_DXIL_LIBRARY_SUBOBJECT(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
+    CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(const CD3DX12_DXIL_LIBRARY_SUBOBJECT& other) = delete;
+    CD3DX12_DXIL_LIBRARY_SUBOBJECT(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
+    CD3DX12_DXIL_LIBRARY_SUBOBJECT& operator=(CD3DX12_DXIL_LIBRARY_SUBOBJECT&& other) = default;
     void SetDXILLibrary(const D3D12_SHADER_BYTECODE* pCode) noexcept
     {
         static const D3D12_SHADER_BYTECODE Default = {};
@@ -383,6 +395,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_EXISTING_COLLECTION_SUBOBJECT(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
+    CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(const CD3DX12_EXISTING_COLLECTION_SUBOBJECT& other) = delete;
+    CD3DX12_EXISTING_COLLECTION_SUBOBJECT(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
+    CD3DX12_EXISTING_COLLECTION_SUBOBJECT& operator=(CD3DX12_EXISTING_COLLECTION_SUBOBJECT&& other) = default;
     void SetExistingCollection(ID3D12StateObject*pExistingCollection) noexcept
     {
         m_Desc.pExistingCollection = pExistingCollection;
@@ -451,6 +467,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
+    CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(const CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& other) = delete;
+    CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
+    CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT& operator=(CD3DX12_SUBOBJECT_TO_EXPORTS_ASSOCIATION_SUBOBJECT&& other) = default;
     void SetSubobjectToAssociate(const D3D12_STATE_SUBOBJECT& SubobjectToAssociate) noexcept
     {
         m_Desc.pSubobjectToAssociate = &SubobjectToAssociate;
@@ -509,6 +529,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
+    CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(const CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& other) = delete;
+    CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
+    CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION& operator=(CD3DX12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION&& other) = default;
     void SetSubobjectNameToAssociate(LPCWSTR SubobjectToAssociate)
     {
         m_Desc.SubobjectToAssociate = m_SubobjectName.LocalCopy(SubobjectToAssociate, true);
@@ -569,6 +593,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_HIT_GROUP_SUBOBJECT(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
+    CD3DX12_HIT_GROUP_SUBOBJECT& operator=(const CD3DX12_HIT_GROUP_SUBOBJECT& other) = delete;
+    CD3DX12_HIT_GROUP_SUBOBJECT(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
+    CD3DX12_HIT_GROUP_SUBOBJECT& operator=(CD3DX12_HIT_GROUP_SUBOBJECT&& other) = default;
     void SetHitGroupExport(LPCWSTR exportName)
     {
         m_Desc.HitGroupExport = m_Strings[0].LocalCopy(exportName, true);
@@ -622,6 +650,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
+    CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& other) = delete;
+    CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
+    CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_SHADER_CONFIG_SUBOBJECT&& other) = default;
     void Config(UINT MaxPayloadSizeInBytes, UINT MaxAttributeSizeInBytes) noexcept
     {
         m_Desc.MaxPayloadSizeInBytes = MaxPayloadSizeInBytes;
@@ -656,6 +688,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& other) = delete;
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG_SUBOBJECT&& other) = default;
     void Config(UINT MaxTraceRecursionDepth) noexcept
     {
         m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
@@ -689,6 +725,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(const CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& other) = delete;
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
+    CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT& operator=(CD3DX12_RAYTRACING_PIPELINE_CONFIG1_SUBOBJECT&& other) = default;
     void Config(UINT MaxTraceRecursionDepth, D3D12_RAYTRACING_PIPELINE_FLAGS Flags) noexcept
     {
         m_Desc.MaxTraceRecursionDepth = MaxTraceRecursionDepth;
@@ -723,6 +763,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+    CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+    CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+    CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_GLOBAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
     void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
     {
         m_pRootSig = pRootSig;
@@ -756,6 +800,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+    CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(const CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& other) = delete;
+    CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
+    CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT& operator=(CD3DX12_LOCAL_ROOT_SIGNATURE_SUBOBJECT&& other) = default;
     void SetRootSignature(ID3D12RootSignature* pRootSig) noexcept
     {
         m_pRootSig = pRootSig;
@@ -789,6 +837,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
+    CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(const CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& other) = delete;
+    CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
+    CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT& operator=(CD3DX12_STATE_OBJECT_CONFIG_SUBOBJECT&& other) = default;
     void SetFlags(D3D12_STATE_OBJECT_FLAGS Flags) noexcept
     {
         m_Desc.Flags = Flags;
@@ -822,6 +874,10 @@ public:
         Init();
         AddToStateObject(ContainingStateObject);
     }
+    CD3DX12_NODE_MASK_SUBOBJECT(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
+    CD3DX12_NODE_MASK_SUBOBJECT& operator=(const CD3DX12_NODE_MASK_SUBOBJECT& other) = delete;
+    CD3DX12_NODE_MASK_SUBOBJECT(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
+    CD3DX12_NODE_MASK_SUBOBJECT& operator=(CD3DX12_NODE_MASK_SUBOBJECT&& other) = default;
     void SetNodeMask(UINT NodeMask) noexcept
     {
         m_Desc.NodeMask = NodeMask;

+ 139 - 139
ThirdParty/AgilitySdk/include/dxgiformat.idl

@@ -1,139 +1,139 @@
-//
-//    Copyright (C) Microsoft Corporation.
-//    Licensed under the MIT license
-//
-
-
-typedef enum DXGI_FORMAT
-{
-    DXGI_FORMAT_UNKNOWN	                                = 0,
-    DXGI_FORMAT_R32G32B32A32_TYPELESS                   = 1,
-    DXGI_FORMAT_R32G32B32A32_FLOAT                      = 2,
-    DXGI_FORMAT_R32G32B32A32_UINT                       = 3,
-    DXGI_FORMAT_R32G32B32A32_SINT                       = 4,
-    DXGI_FORMAT_R32G32B32_TYPELESS                      = 5,
-    DXGI_FORMAT_R32G32B32_FLOAT                         = 6,
-    DXGI_FORMAT_R32G32B32_UINT                          = 7,
-    DXGI_FORMAT_R32G32B32_SINT                          = 8,
-    DXGI_FORMAT_R16G16B16A16_TYPELESS                   = 9,
-    DXGI_FORMAT_R16G16B16A16_FLOAT                      = 10,
-    DXGI_FORMAT_R16G16B16A16_UNORM                      = 11,
-    DXGI_FORMAT_R16G16B16A16_UINT                       = 12,
-    DXGI_FORMAT_R16G16B16A16_SNORM                      = 13,
-    DXGI_FORMAT_R16G16B16A16_SINT                       = 14,
-    DXGI_FORMAT_R32G32_TYPELESS                         = 15,
-    DXGI_FORMAT_R32G32_FLOAT                            = 16,
-    DXGI_FORMAT_R32G32_UINT                             = 17,
-    DXGI_FORMAT_R32G32_SINT                             = 18,
-    DXGI_FORMAT_R32G8X24_TYPELESS                       = 19,
-    DXGI_FORMAT_D32_FLOAT_S8X24_UINT                    = 20,
-    DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS                = 21,
-    DXGI_FORMAT_X32_TYPELESS_G8X24_UINT                 = 22,
-    DXGI_FORMAT_R10G10B10A2_TYPELESS                    = 23,
-    DXGI_FORMAT_R10G10B10A2_UNORM                       = 24,
-    DXGI_FORMAT_R10G10B10A2_UINT                        = 25,
-    DXGI_FORMAT_R11G11B10_FLOAT                         = 26,
-    DXGI_FORMAT_R8G8B8A8_TYPELESS                       = 27,
-    DXGI_FORMAT_R8G8B8A8_UNORM                          = 28,
-    DXGI_FORMAT_R8G8B8A8_UNORM_SRGB                     = 29,
-    DXGI_FORMAT_R8G8B8A8_UINT                           = 30,
-    DXGI_FORMAT_R8G8B8A8_SNORM                          = 31,
-    DXGI_FORMAT_R8G8B8A8_SINT                           = 32,
-    DXGI_FORMAT_R16G16_TYPELESS                         = 33,
-    DXGI_FORMAT_R16G16_FLOAT                            = 34,
-    DXGI_FORMAT_R16G16_UNORM                            = 35,
-    DXGI_FORMAT_R16G16_UINT                             = 36,
-    DXGI_FORMAT_R16G16_SNORM                            = 37,
-    DXGI_FORMAT_R16G16_SINT                             = 38,
-    DXGI_FORMAT_R32_TYPELESS                            = 39,
-    DXGI_FORMAT_D32_FLOAT                               = 40,
-    DXGI_FORMAT_R32_FLOAT                               = 41,
-    DXGI_FORMAT_R32_UINT                                = 42,
-    DXGI_FORMAT_R32_SINT                                = 43,
-    DXGI_FORMAT_R24G8_TYPELESS                          = 44,
-    DXGI_FORMAT_D24_UNORM_S8_UINT                       = 45,
-    DXGI_FORMAT_R24_UNORM_X8_TYPELESS                   = 46,
-    DXGI_FORMAT_X24_TYPELESS_G8_UINT                    = 47,
-    DXGI_FORMAT_R8G8_TYPELESS                           = 48,
-    DXGI_FORMAT_R8G8_UNORM                              = 49,
-    DXGI_FORMAT_R8G8_UINT                               = 50,
-    DXGI_FORMAT_R8G8_SNORM                              = 51,
-    DXGI_FORMAT_R8G8_SINT                               = 52,
-    DXGI_FORMAT_R16_TYPELESS                            = 53,
-    DXGI_FORMAT_R16_FLOAT                               = 54,
-    DXGI_FORMAT_D16_UNORM                               = 55,
-    DXGI_FORMAT_R16_UNORM                               = 56,
-    DXGI_FORMAT_R16_UINT                                = 57,
-    DXGI_FORMAT_R16_SNORM                               = 58,
-    DXGI_FORMAT_R16_SINT                                = 59,
-    DXGI_FORMAT_R8_TYPELESS                             = 60,
-    DXGI_FORMAT_R8_UNORM                                = 61,
-    DXGI_FORMAT_R8_UINT                                 = 62,
-    DXGI_FORMAT_R8_SNORM                                = 63,
-    DXGI_FORMAT_R8_SINT                                 = 64,
-    DXGI_FORMAT_A8_UNORM                                = 65,
-    DXGI_FORMAT_R1_UNORM                                = 66,
-    DXGI_FORMAT_R9G9B9E5_SHAREDEXP                      = 67,
-    DXGI_FORMAT_R8G8_B8G8_UNORM                         = 68,
-    DXGI_FORMAT_G8R8_G8B8_UNORM                         = 69,
-    DXGI_FORMAT_BC1_TYPELESS                            = 70,
-    DXGI_FORMAT_BC1_UNORM                               = 71,
-    DXGI_FORMAT_BC1_UNORM_SRGB                          = 72,
-    DXGI_FORMAT_BC2_TYPELESS                            = 73,
-    DXGI_FORMAT_BC2_UNORM                               = 74,
-    DXGI_FORMAT_BC2_UNORM_SRGB                          = 75,
-    DXGI_FORMAT_BC3_TYPELESS                            = 76,
-    DXGI_FORMAT_BC3_UNORM                               = 77,
-    DXGI_FORMAT_BC3_UNORM_SRGB                          = 78,
-    DXGI_FORMAT_BC4_TYPELESS                            = 79,
-    DXGI_FORMAT_BC4_UNORM                               = 80,
-    DXGI_FORMAT_BC4_SNORM                               = 81,
-    DXGI_FORMAT_BC5_TYPELESS                            = 82,
-    DXGI_FORMAT_BC5_UNORM                               = 83,
-    DXGI_FORMAT_BC5_SNORM                               = 84,
-    DXGI_FORMAT_B5G6R5_UNORM                            = 85,
-    DXGI_FORMAT_B5G5R5A1_UNORM                          = 86,
-    DXGI_FORMAT_B8G8R8A8_UNORM                          = 87,
-    DXGI_FORMAT_B8G8R8X8_UNORM                          = 88,
-    DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM              = 89,
-    DXGI_FORMAT_B8G8R8A8_TYPELESS                       = 90,
-    DXGI_FORMAT_B8G8R8A8_UNORM_SRGB                     = 91,
-    DXGI_FORMAT_B8G8R8X8_TYPELESS                       = 92,
-    DXGI_FORMAT_B8G8R8X8_UNORM_SRGB                     = 93,
-    DXGI_FORMAT_BC6H_TYPELESS                           = 94,
-    DXGI_FORMAT_BC6H_UF16                               = 95,
-    DXGI_FORMAT_BC6H_SF16                               = 96,
-    DXGI_FORMAT_BC7_TYPELESS                            = 97,
-    DXGI_FORMAT_BC7_UNORM                               = 98,
-    DXGI_FORMAT_BC7_UNORM_SRGB                          = 99,
-    DXGI_FORMAT_AYUV                                    = 100,
-    DXGI_FORMAT_Y410                                    = 101,
-    DXGI_FORMAT_Y416                                    = 102,
-    DXGI_FORMAT_NV12                                    = 103,
-    DXGI_FORMAT_P010                                    = 104,
-    DXGI_FORMAT_P016                                    = 105,
-    DXGI_FORMAT_420_OPAQUE                              = 106,
-    DXGI_FORMAT_YUY2                                    = 107,
-    DXGI_FORMAT_Y210                                    = 108,
-    DXGI_FORMAT_Y216                                    = 109,
-    DXGI_FORMAT_NV11                                    = 110,
-    DXGI_FORMAT_AI44                                    = 111,
-    DXGI_FORMAT_IA44                                    = 112,
-    DXGI_FORMAT_P8                                      = 113,
-    DXGI_FORMAT_A8P8                                    = 114,
-    DXGI_FORMAT_B4G4R4A4_UNORM                          = 115,
-
-    DXGI_FORMAT_P208                                    = 130,
-    DXGI_FORMAT_V208                                    = 131,
-    DXGI_FORMAT_V408                                    = 132,
-
-
-    DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE         = 189,
-    DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
-
-    DXGI_FORMAT_A4B4G4R4_UNORM                          = 191,
-
-
-    DXGI_FORMAT_FORCE_UINT                  = 0xffffffff
-} DXGI_FORMAT;
-
+//
+//    Copyright (C) Microsoft Corporation.
+//    Licensed under the MIT license
+//
+
+
+typedef enum DXGI_FORMAT
+{
+    DXGI_FORMAT_UNKNOWN	                                = 0,
+    DXGI_FORMAT_R32G32B32A32_TYPELESS                   = 1,
+    DXGI_FORMAT_R32G32B32A32_FLOAT                      = 2,
+    DXGI_FORMAT_R32G32B32A32_UINT                       = 3,
+    DXGI_FORMAT_R32G32B32A32_SINT                       = 4,
+    DXGI_FORMAT_R32G32B32_TYPELESS                      = 5,
+    DXGI_FORMAT_R32G32B32_FLOAT                         = 6,
+    DXGI_FORMAT_R32G32B32_UINT                          = 7,
+    DXGI_FORMAT_R32G32B32_SINT                          = 8,
+    DXGI_FORMAT_R16G16B16A16_TYPELESS                   = 9,
+    DXGI_FORMAT_R16G16B16A16_FLOAT                      = 10,
+    DXGI_FORMAT_R16G16B16A16_UNORM                      = 11,
+    DXGI_FORMAT_R16G16B16A16_UINT                       = 12,
+    DXGI_FORMAT_R16G16B16A16_SNORM                      = 13,
+    DXGI_FORMAT_R16G16B16A16_SINT                       = 14,
+    DXGI_FORMAT_R32G32_TYPELESS                         = 15,
+    DXGI_FORMAT_R32G32_FLOAT                            = 16,
+    DXGI_FORMAT_R32G32_UINT                             = 17,
+    DXGI_FORMAT_R32G32_SINT                             = 18,
+    DXGI_FORMAT_R32G8X24_TYPELESS                       = 19,
+    DXGI_FORMAT_D32_FLOAT_S8X24_UINT                    = 20,
+    DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS                = 21,
+    DXGI_FORMAT_X32_TYPELESS_G8X24_UINT                 = 22,
+    DXGI_FORMAT_R10G10B10A2_TYPELESS                    = 23,
+    DXGI_FORMAT_R10G10B10A2_UNORM                       = 24,
+    DXGI_FORMAT_R10G10B10A2_UINT                        = 25,
+    DXGI_FORMAT_R11G11B10_FLOAT                         = 26,
+    DXGI_FORMAT_R8G8B8A8_TYPELESS                       = 27,
+    DXGI_FORMAT_R8G8B8A8_UNORM                          = 28,
+    DXGI_FORMAT_R8G8B8A8_UNORM_SRGB                     = 29,
+    DXGI_FORMAT_R8G8B8A8_UINT                           = 30,
+    DXGI_FORMAT_R8G8B8A8_SNORM                          = 31,
+    DXGI_FORMAT_R8G8B8A8_SINT                           = 32,
+    DXGI_FORMAT_R16G16_TYPELESS                         = 33,
+    DXGI_FORMAT_R16G16_FLOAT                            = 34,
+    DXGI_FORMAT_R16G16_UNORM                            = 35,
+    DXGI_FORMAT_R16G16_UINT                             = 36,
+    DXGI_FORMAT_R16G16_SNORM                            = 37,
+    DXGI_FORMAT_R16G16_SINT                             = 38,
+    DXGI_FORMAT_R32_TYPELESS                            = 39,
+    DXGI_FORMAT_D32_FLOAT                               = 40,
+    DXGI_FORMAT_R32_FLOAT                               = 41,
+    DXGI_FORMAT_R32_UINT                                = 42,
+    DXGI_FORMAT_R32_SINT                                = 43,
+    DXGI_FORMAT_R24G8_TYPELESS                          = 44,
+    DXGI_FORMAT_D24_UNORM_S8_UINT                       = 45,
+    DXGI_FORMAT_R24_UNORM_X8_TYPELESS                   = 46,
+    DXGI_FORMAT_X24_TYPELESS_G8_UINT                    = 47,
+    DXGI_FORMAT_R8G8_TYPELESS                           = 48,
+    DXGI_FORMAT_R8G8_UNORM                              = 49,
+    DXGI_FORMAT_R8G8_UINT                               = 50,
+    DXGI_FORMAT_R8G8_SNORM                              = 51,
+    DXGI_FORMAT_R8G8_SINT                               = 52,
+    DXGI_FORMAT_R16_TYPELESS                            = 53,
+    DXGI_FORMAT_R16_FLOAT                               = 54,
+    DXGI_FORMAT_D16_UNORM                               = 55,
+    DXGI_FORMAT_R16_UNORM                               = 56,
+    DXGI_FORMAT_R16_UINT                                = 57,
+    DXGI_FORMAT_R16_SNORM                               = 58,
+    DXGI_FORMAT_R16_SINT                                = 59,
+    DXGI_FORMAT_R8_TYPELESS                             = 60,
+    DXGI_FORMAT_R8_UNORM                                = 61,
+    DXGI_FORMAT_R8_UINT                                 = 62,
+    DXGI_FORMAT_R8_SNORM                                = 63,
+    DXGI_FORMAT_R8_SINT                                 = 64,
+    DXGI_FORMAT_A8_UNORM                                = 65,
+    DXGI_FORMAT_R1_UNORM                                = 66,
+    DXGI_FORMAT_R9G9B9E5_SHAREDEXP                      = 67,
+    DXGI_FORMAT_R8G8_B8G8_UNORM                         = 68,
+    DXGI_FORMAT_G8R8_G8B8_UNORM                         = 69,
+    DXGI_FORMAT_BC1_TYPELESS                            = 70,
+    DXGI_FORMAT_BC1_UNORM                               = 71,
+    DXGI_FORMAT_BC1_UNORM_SRGB                          = 72,
+    DXGI_FORMAT_BC2_TYPELESS                            = 73,
+    DXGI_FORMAT_BC2_UNORM                               = 74,
+    DXGI_FORMAT_BC2_UNORM_SRGB                          = 75,
+    DXGI_FORMAT_BC3_TYPELESS                            = 76,
+    DXGI_FORMAT_BC3_UNORM                               = 77,
+    DXGI_FORMAT_BC3_UNORM_SRGB                          = 78,
+    DXGI_FORMAT_BC4_TYPELESS                            = 79,
+    DXGI_FORMAT_BC4_UNORM                               = 80,
+    DXGI_FORMAT_BC4_SNORM                               = 81,
+    DXGI_FORMAT_BC5_TYPELESS                            = 82,
+    DXGI_FORMAT_BC5_UNORM                               = 83,
+    DXGI_FORMAT_BC5_SNORM                               = 84,
+    DXGI_FORMAT_B5G6R5_UNORM                            = 85,
+    DXGI_FORMAT_B5G5R5A1_UNORM                          = 86,
+    DXGI_FORMAT_B8G8R8A8_UNORM                          = 87,
+    DXGI_FORMAT_B8G8R8X8_UNORM                          = 88,
+    DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM              = 89,
+    DXGI_FORMAT_B8G8R8A8_TYPELESS                       = 90,
+    DXGI_FORMAT_B8G8R8A8_UNORM_SRGB                     = 91,
+    DXGI_FORMAT_B8G8R8X8_TYPELESS                       = 92,
+    DXGI_FORMAT_B8G8R8X8_UNORM_SRGB                     = 93,
+    DXGI_FORMAT_BC6H_TYPELESS                           = 94,
+    DXGI_FORMAT_BC6H_UF16                               = 95,
+    DXGI_FORMAT_BC6H_SF16                               = 96,
+    DXGI_FORMAT_BC7_TYPELESS                            = 97,
+    DXGI_FORMAT_BC7_UNORM                               = 98,
+    DXGI_FORMAT_BC7_UNORM_SRGB                          = 99,
+    DXGI_FORMAT_AYUV                                    = 100,
+    DXGI_FORMAT_Y410                                    = 101,
+    DXGI_FORMAT_Y416                                    = 102,
+    DXGI_FORMAT_NV12                                    = 103,
+    DXGI_FORMAT_P010                                    = 104,
+    DXGI_FORMAT_P016                                    = 105,
+    DXGI_FORMAT_420_OPAQUE                              = 106,
+    DXGI_FORMAT_YUY2                                    = 107,
+    DXGI_FORMAT_Y210                                    = 108,
+    DXGI_FORMAT_Y216                                    = 109,
+    DXGI_FORMAT_NV11                                    = 110,
+    DXGI_FORMAT_AI44                                    = 111,
+    DXGI_FORMAT_IA44                                    = 112,
+    DXGI_FORMAT_P8                                      = 113,
+    DXGI_FORMAT_A8P8                                    = 114,
+    DXGI_FORMAT_B4G4R4A4_UNORM                          = 115,
+
+    DXGI_FORMAT_P208                                    = 130,
+    DXGI_FORMAT_V208                                    = 131,
+    DXGI_FORMAT_V408                                    = 132,
+
+
+    DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE         = 189,
+    DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 190,
+
+    DXGI_FORMAT_A4B4G4R4_UNORM                          = 191,
+
+
+    DXGI_FORMAT_FORCE_UINT                  = 0xffffffff
+} DXGI_FORMAT;
+

+ 168 - 13
ThirdParty/AgilitySdk/src/d3dx12/d3dx12_property_format_table.cpp

@@ -21,9 +21,12 @@
     #include <wsl/winadapter.h>
 #endif
 #include "d3dx12_property_format_table.h"
-#include <assert.h>
 #include <algorithm>
+#include <cassert>
 #include "D3D12TokenizedProgramFormat.hpp"
+#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
+#include <stdexcept>
+#endif
 #if defined(D3D12_SDK_VERSION) && (D3D12_SDK_VERSION >= 606)
 #ifndef ASSUME
   #define ASSUME(x) assert(x)
@@ -197,7 +200,88 @@ const LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::s_FormatNames[] =  // separate
      "AI44",                        
      "IA44",                        
      "P8",                          
-     "A8P8",
+     "A8P8",  
+     "B4G4R4A4_UNORM",
+
+     nullptr, // 116
+     nullptr, // 117
+     nullptr, // 118
+     nullptr, // 119
+     nullptr, // 120
+     nullptr, // 121
+     nullptr, // 122
+     nullptr, // 123
+     nullptr, // 124
+     nullptr, // 125
+     nullptr, // 126
+     nullptr, // 127
+     nullptr, // 128
+     nullptr, // 129
+
+     "P208",
+     "V208",
+     "V408",
+
+     NULL, // 133
+     NULL, // 134
+     NULL, // 135
+     NULL, // 136
+     NULL, // 137
+     NULL, // 138
+     NULL, // 139
+     NULL, // 140
+     NULL, // 141
+     NULL, // 142
+     NULL, // 143
+     NULL, // 144
+     NULL, // 145
+     NULL, // 146
+     NULL, // 147
+     NULL, // 148
+     NULL, // 149
+     NULL, // 150
+     NULL, // 151
+     NULL, // 152
+     NULL, // 153
+     NULL, // 154
+     NULL, // 155
+     NULL, // 156
+     NULL, // 157
+     NULL, // 158
+     NULL, // 159
+     NULL, // 160
+     NULL, // 161
+     NULL, // 162
+     NULL, // 163
+     NULL, // 164
+     NULL, // 165
+     NULL, // 166
+     NULL, // 167
+     NULL, // 168
+     NULL, // 169
+     NULL, // 170
+     NULL, // 171
+     NULL, // 172
+     NULL, // 173
+     NULL, // 174
+     NULL, // 175
+     NULL, // 176
+     NULL, // 177
+     NULL, // 178
+     NULL, // 179
+     NULL, // 180
+     NULL, // 181
+     NULL, // 182
+     NULL, // 183
+     NULL, // 184
+     NULL, // 185
+     NULL, // 186
+     NULL, // 187
+     NULL, // 188
+
+     "SAMPLER_FEEDBACK_MIN_MIP_OPAQUE",
+     "SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE",
+     "A4B4G4R4_UNORM",
 };
 
 // --------------------------------------------------------------------------------------------------------------------------------
@@ -886,7 +970,7 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FormatExistsInHeader(DXGI_FORMAT Format
 LPCSTR D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetName(DXGI_FORMAT Format, bool bHideInternalFormats)
 {
     const UINT Index = GetDetailTableIndex( Format );
-    if (UINT( -1 ) == Index || (bHideInternalFormats && GetFormatDetail( Format )->bInternal))
+    if (UINT( -1 ) == Index || (bHideInternalFormats && GetFormatDetail( Format )->bInternal) || !s_FormatNames[Index])
     {
         return "Unrecognized";
     }
@@ -1002,6 +1086,11 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize(
     _Out_writes_opt_(subresources) D3D12_MEMCPY_DEST *pDst)
 {
     UINT tableIndex = GetDetailTableIndexNoThrow( format );
+    if (tableIndex == UINT(-1))
+        return E_INVALIDARG;
+
+    totalByteSize = 0;
+
     const FORMAT_DETAIL& formatDetail = s_FormatDetail[tableIndex];
 
     bool fIsBlockCompressedFormat = IsBlockCompressFormat(format );
@@ -1069,7 +1158,7 @@ HRESULT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::CalculateResourceSize(
         {
             return INTSAFE_E_ARITHMETIC_OVERFLOW;
         } 
-        SIZE_T subresourceByteSize = subDepth * depthPitch;
+        SIZE_T subresourceByteSize = SIZE_T(UINT64(subDepth) * UINT64(depthPitch));
 
         if (pDst)
         {
@@ -1319,6 +1408,34 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerStencil(DXGI_FORMAT  Format)
     return 0;
 }
 
+//---------------------------------------------------------------------------------------------------------------------------------
+// GetBitsPerDepth
+UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerDepth(DXGI_FORMAT  Format)
+{
+    const UINT Index = GetDetailTableIndexThrow( Format );
+    if( (s_FormatDetail[Index].TypeLevel != D3DFTL_PARTIAL_TYPE) &&
+        (s_FormatDetail[Index].TypeLevel != D3DFTL_FULL_TYPE) )
+    {
+        return 0;
+    }
+    for( UINT comp = 0; comp < 4; comp++ )
+    {
+        D3D_FORMAT_COMPONENT_NAME name = D3DFCN_D;
+        switch(comp)
+        {
+        case 0: name = s_FormatDetail[Index].ComponentName0; break;
+        case 1: name = s_FormatDetail[Index].ComponentName1; break;
+        case 2: name = s_FormatDetail[Index].ComponentName2; break;
+        case 3: name = s_FormatDetail[Index].ComponentName3; break;
+        }
+        if( name == D3DFCN_D )
+        {
+            return s_FormatDetail[Index].BitsPerComponent[comp];
+        }
+    }
+    return 0;
+}
+
 //---------------------------------------------------------------------------------------------------------------------------------
 // GetFormatReturnTypes
 void    D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetFormatReturnTypes(
@@ -1378,6 +1495,16 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetNumComponentsInFormat( DXGI_FORMAT
     return n;
 }
 
+//---------------------------------------------------------------------------------------------------------------------------------
+// GetMinNumComponentsInFormats
+UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetMinNumComponentsInFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
+{
+    UINT NumComponentsFormatA = GetNumComponentsInFormat(FormatA);
+    UINT NumComponentsFormatB = GetNumComponentsInFormat(FormatB);
+    UINT NumComponents = NumComponentsFormatA < NumComponentsFormatB ? NumComponentsFormatA : NumComponentsFormatB;
+    return NumComponents;
+}
+
 //---------------------------------------------------------------------------------------------------------------------------------
 // Sequential2AbsoluteComponentIndex
 UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex( DXGI_FORMAT  Format, UINT SequentialComponentIndex)
@@ -1403,7 +1530,7 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::Sequential2AbsoluteComponentIndex( DXGI
             n++;
         }
     }
-    return UINT(-1);
+    return UINT( -1 );
 }
 
 //---------------------------------------------------------------------------------------------------------------------------------
@@ -1465,14 +1592,18 @@ D3D_FORMAT_LAYOUT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetLayout(DXGI_FORMAT Form
 // GetComponentName
 D3D_FORMAT_COMPONENT_NAME D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetComponentName(DXGI_FORMAT Format, UINT AbsoluteComponentIndex)
 {
-    D3D_FORMAT_COMPONENT_NAME name;
+    D3D_FORMAT_COMPONENT_NAME name = {};
     switch( AbsoluteComponentIndex )
     {
     case 0: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName0; break;
     case 1: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName1; break;
     case 2: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName2; break;
     case 3: name = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentName3; break;
-    default: throw E_FAIL;
+#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
+    default: throw std::invalid_argument("AbsoluteComponentIndex");
+#else
+    default: break;
+#endif
     }
     return name;
 }
@@ -1482,7 +1613,11 @@ UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetBitsPerComponent(DXGI_FORMAT Format,
 {
     if( AbsoluteComponentIndex > 3 )
     {
-        throw E_FAIL;
+#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
+        throw std::invalid_argument("AbsoluteComponentIndex");
+#else
+        return UINT( -1 );
+#endif
     }
     return s_FormatDetail[GetDetailTableIndexNoThrow( Format )].BitsPerComponent[AbsoluteComponentIndex];
 }
@@ -1499,7 +1634,11 @@ D3D_FORMAT_COMPONENT_INTERPRETATION D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetForma
     case 1: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation1; break;
     case 2: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation2; break;
     case 3: interp = s_FormatDetail[GetDetailTableIndexNoThrow( Format )].ComponentInterpretation3; break;
-//    default: throw E_FAIL;
+#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
+    default: throw std::invalid_argument("AbsoluteComponentIndex");
+#else
+    default: break;
+#endif
     }
     return interp;
 }
@@ -1541,13 +1680,15 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FamilySupportsStencil(DXGI_FORMAT Forma
 
 //---------------------------------------------------------------------------------------------------------------------------------
 // GetDetailTableIndexThrow
-UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(DXGI_FORMAT  Format)
+UINT D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::GetDetailTableIndexThrow(DXGI_FORMAT Format)
 {
     UINT Index = GetDetailTableIndex( Format );
+#if defined(__cpp_exceptions) && (!defined(_HAS_EXCEPTIONS) || _HAS_EXCEPTIONS != 0)
     if(UINT( -1 ) == Index )
     {
-        throw E_FAIL;
+        throw std::invalid_argument("Format");
     }
+#endif
     return Index;
 }
 
@@ -2367,7 +2508,7 @@ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::IsSupportedTextureDisplayableFormat
 //---------------------------------------------------------------------------------------------------------------------------------
 bool  D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
 {
-    UINT NumComponents = (std::min)(GetNumComponentsInFormat(FormatA), GetNumComponentsInFormat(FormatB));
+    UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
     for (UINT c = 0; c < NumComponents; c++)
     {
         D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
@@ -2383,7 +2524,7 @@ bool  D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::FloatAndNotFloatFormats(DXGI_FORMAT Fo
 //---------------------------------------------------------------------------------------------------------------------------------
 bool  D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT FormatA, DXGI_FORMAT FormatB)
 {
-    UINT NumComponents = (std::min)(GetNumComponentsInFormat(FormatA), GetNumComponentsInFormat(FormatB));
+    UINT NumComponents = GetMinNumComponentsInFormats(FormatA, FormatB);
     for (UINT c = 0; c < NumComponents; c++)
     {
         D3D_FORMAT_COMPONENT_INTERPRETATION fciA = GetFormatComponentInterpretation(FormatA, c);
@@ -2424,6 +2565,20 @@ bool  D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SNORMAndUNORMFormats(DXGI_FORMAT Forma
      return Format == DXGI_FORMAT_NV12;
  }
 
+//---------------------------------------------------------------------------------------------------------------------------------
+ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsDepth(DXGI_FORMAT Format)
+ {
+    // If the number of bits associated with depth in the format is greater then 0, then the format supports depth
+    return (GetComponentName(Format, 0) == D3DFCN_D);
+ }
+
+ //---------------------------------------------------------------------------------------------------------------------------------
+ bool D3D12_PROPERTY_LAYOUT_FORMAT_TABLE::SupportsStencil(DXGI_FORMAT Format)
+ {
+    // If the number of bits associated with stencil in the format is greater then 0, then the format supports stencil
+    return GetBitsPerStencil(Format) > 0;
+ }
+
 #undef R 
 #undef G 
 #undef B 

BIN
ThirdParty/Pix/bin/ARM64/WinPixEventRuntime.dll


BIN
ThirdParty/Pix/bin/ARM64/WinPixEventRuntime.lib


BIN
ThirdParty/Pix/bin/ARM64/WinPixEventRuntime_UAP.dll


BIN
ThirdParty/Pix/bin/ARM64/WinPixEventRuntime_UAP.lib


BIN
ThirdParty/Pix/bin/x64/WinPixEventRuntime_UAP.dll


BIN
ThirdParty/Pix/bin/x64/WinPixEventRuntime_UAP.lib


+ 68 - 0
ThirdParty/Warp/README.md

@@ -6,6 +6,74 @@ The included **LICENSE.txt** applies to all files under `build/native/bin/`.
 
 ## Changelog
 
+### Version 1.0.14.1
+
+Fix x86 FMA fusing to correctly fuse `a*b-c` into `FMSUB` instead of `FMADD`.
+
+### Version 1.0.14
+
+#### Codegen improvements
+
+x86/x64:
+
+WARP will now detect and use the following x86 architecture extensions: SSE4.2, AVX, AVX2, FMA, F16C, BMI1, BMI2, and AVX512. Specifically:
+
+- When AVX is supported, VEX encoding is used for applicable instructions to increase code density.
+- When AVX2 and FMA are supported, WARP will use 256-bit registers for 64-bit DXIL data types instead of two 128-bit registers.
+- When FMA is supported and precise ops are not requested (or when double-precision FMA instructions are used), WARP will use fused multiply-adds.
+- When AVX512 is supported, WARP will use mask registers for boolean data types, as well as using the additional 16 vector registers for x64.
+- Most instructions were audited for ways to be better-encoded using new instructions available in these instruction sets.
+  Of note, AVX512 fills many gaps in comparisons and conversions.
+- Large improvements were made to the codegen optimizer to simplify expressions involving constants among other optimizations.
+
+arm64:
+
+- Many operations that did not have an equivalent in SSE4.1 and below, but do in SSE4.1 and above, are updated to use more direct translations to the arm64 instruction set.
+- Atomics are upgraded to use arm64 LSE.
+- Note: FMA fusing is not yet applied broadly, but DXBC/DXIL double-precision FMA instructions now use fused instructions.
+
+All:
+
+- 64-bit atomics are now emitted directly into shaders instead of requiring function calls.
+
+#### Other
+
+- Raytracing support has been partially rewritten:
+    - Acceleration structure traversal is JITed, benefitting from SIMD and all of the above codegen improvements.
+	- Shader execution state machine is also JITed, reducing overhead and better aligning DXR1.0 with DXR1.1.
+	- Recursive shader invocation overhead is significantly reduced.
+- Fixed use of SM6.6 descriptor heap indexing in hit/miss/intersection shaders.
+- Fixed PIX timing capture history buffer layout.
+- Support for Visual Studio Graphics Analyzer's shader debugger has been removed.
+- Handle sampling from an integer texture with a linear sampler by using point sampling instead of crashing.
+- Fix calls to `GetDimensions()` on non-uniform resource handles.
+- Fix a race condition in acceleration structure builds.
+- Wave ops reading from inactive lanes now return 0 (to better match real hardware behavior).
+
+### Version 1.0.13
+
+New features:
+
+- Variable Rate Shading (VRS) Tier 2 support
+- Wide wave size emulation support
+- Redesigned barriers, more likely to catch app bugs and with higher throughput
+- Max virtual address space per resource increased to 40 bits, so resources/heaps can be larger than 4GiB
+  - Note: There are some known issues here, but main scenarios should work. Please report bugs to the DirectX Discord (https://discord.com/invite/directx).
+- WARP now claims feature level 12_2, aka DirectX 12 Ultimate!
+- D3D12 video encoding/decoding support using Media Foundation, only on platforms where Media Foundation codec support is present, for H.264/H.265.
+
+Bug fixes:
+
+- Fix incompatibility between new WARP and old D3D12SDKLayers
+- Fixes for work graphs where record reads are done under non-uniform control flow
+- Fix a rare race condition which can deadlock work graph backing store initialization
+- Fix the default blend state for a generic graphics program in state objects to handle multiple render targets
+- Fix ICBs for work graphs (i.e. DXIL global constant data)
+
+### Version 1.0.13-preview
+
+- Work graphs tier 1.1: Mesh nodes
+
 ### Version 1.0.12
 
 New features:

BIN
ThirdParty/Warp/bin/arm64/d3d10warp.dll


BIN
ThirdParty/Warp/bin/arm64/d3d10warp.pdb


BIN
ThirdParty/Warp/bin/x64/d3d10warp.dll


BIN
ThirdParty/Warp/bin/x64/d3d10warp.pdb