/*-------------------------------------------------------------------------------------
 *
 * Copyright (c) Microsoft Corporation
 *
 *-------------------------------------------------------------------------------------*/
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)")

//==================================================================================================================================
//
// Debugging Layer
//
//==================================================================================================================================

[uuid(344488b7-6846-474b-b989-f027448245e0), object, local, pointer_default(unique)]
interface ID3D12Debug
    : IUnknown
{
    void EnableDebugLayer();
}


typedef enum D3D12_DEBUG_FEATURE
{
    D3D12_DEBUG_FEATURE_NONE = 0x0,
    D3D12_DEBUG_FEATURE_TREAT_BUNDLE_AS_DRAW = 0x1,
    D3D12_DEBUG_FEATURE_TREAT_BUNDLE_AS_DISPATCH = 0x2,

} D3D12_DEBUG_FEATURE;
cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEBUG_FEATURE );" )

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

[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 );
}

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( 09e0bf36-54ac-484f-8847-4baeeab6053f ), object, local, pointer_default( unique ) ]
interface ID3D12DebugCommandList
    : IUnknown
{
    BOOL AssertResourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, UINT State );
//  TODO: Stale  BOOL AssertResourceStateThroughView( [annotation("_In_")] ID3D12View* pView, UINT State );
//  TODO: Stale  BOOL AssertResourceStateThroughDescriptor( D3D12_DESCRIPTOR_TYPE DescriptorType, UINT StartSlot, UINT Slots, UINT State );
    HRESULT SetFeatureMask( D3D12_DEBUG_FEATURE Mask );
    D3D12_DEBUG_FEATURE GetFeatureMask();
};


//==================================================================================================================================
//
// 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
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,
    D3D12_MESSAGE_ID_CORRUPTED_THIS,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14,
    D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15,
    D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING,
    D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY,

    D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA,
    D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA,
    D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDIUNKNOWN,
    D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFLAGS,
    D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS,
    D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY,

    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_OUTOFMEMORY_RETURN,

    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_OUTOFMEMORY_RETURN,

    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_OUTOFMEMORY_RETURN,

    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT,

    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE,
    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE,

    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE,

    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDDECL,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_EXPECTEDDECL,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE,

    D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE,
    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE,

    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE,
    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE,
    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP,
    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS,
    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_NULLDESC,

    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC,
    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_NULLDESC,

    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_NULLDESC,

    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDFILTER,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSU,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSV,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDADDRESSW,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMIPLODBIAS,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXANISOTROPY,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDCOMPARISONFUNC,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMINLOD,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_INVALIDMAXLOD,
    D3D12_MESSAGE_ID_CREATESAMPLERSTATE_NULLDESC,

    D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNRECOGNIZED,
    D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNDEFINED,

    D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_INVALIDVIEWPORT,

    D3D12_MESSAGE_ID_DEVICE_RSSETSCISSORRECTS_INVALIDSCISSOR,

    D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_DENORMFLUSH,
    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DENORMFLUSH,
    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID,

    D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCE,
    D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDESTINATIONSTATE,
    D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSOURCESTATE,

    D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSUBRESOURCE,
    D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONBOX,
    D3D12_MESSAGE_ID_UPDATESUBRESOURCE_INVALIDDESTINATIONSTATE,

    D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_INVALID,
    D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_DESTINATION_SUBRESOURCE_INVALID,
    D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_INVALID,
    D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_SOURCE_SUBRESOURCE_INVALID,
    D3D12_MESSAGE_ID_DEVICE_RESOLVESUBRESOURCE_FORMAT_INVALID,

    D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDMAPTYPE,
    D3D12_MESSAGE_ID_BUFFER_MAP_INVALIDFLAGS,
    D3D12_MESSAGE_ID_BUFFER_MAP_ALREADYMAPPED,
    D3D12_MESSAGE_ID_BUFFER_MAP_DEVICEREMOVED_RETURN,
    D3D12_MESSAGE_ID_BUFFER_UNMAP_NOTMAPPED,

    D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDMAPTYPE,
    D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_TEXTURE1D_MAP_INVALIDFLAGS,
    D3D12_MESSAGE_ID_TEXTURE1D_MAP_ALREADYMAPPED,
    D3D12_MESSAGE_ID_TEXTURE1D_MAP_DEVICEREMOVED_RETURN,
    D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_TEXTURE1D_UNMAP_NOTMAPPED,

    D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDMAPTYPE,
    D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_TEXTURE2D_MAP_INVALIDFLAGS,
    D3D12_MESSAGE_ID_TEXTURE2D_MAP_ALREADYMAPPED,
    D3D12_MESSAGE_ID_TEXTURE2D_MAP_DEVICEREMOVED_RETURN,
    D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_TEXTURE2D_UNMAP_NOTMAPPED,

    D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDMAPTYPE,
    D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_TEXTURE3D_MAP_INVALIDFLAGS,
    D3D12_MESSAGE_ID_TEXTURE3D_MAP_ALREADYMAPPED,
    D3D12_MESSAGE_ID_TEXTURE3D_MAP_DEVICEREMOVED_RETURN,
    D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_TEXTURE3D_UNMAP_NOTMAPPED,

    D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_DEPRECATED,
    D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_FORMAT_DEPRECATED,

    D3D12_MESSAGE_ID_SETEXCEPTIONMODE_UNRECOGNIZEDFLAGS,
    D3D12_MESSAGE_ID_SETEXCEPTIONMODE_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_SETEXCEPTIONMODE_DEVICEREMOVED_RETURN,

    D3D12_MESSAGE_ID_REF_SIMULATING_INFINITELY_FAST_HARDWARE,
    D3D12_MESSAGE_ID_REF_THREADING_MODE,
    D3D12_MESSAGE_ID_REF_UMDRIVER_EXCEPTION,
    D3D12_MESSAGE_ID_REF_KMDRIVER_EXCEPTION,
    D3D12_MESSAGE_ID_REF_HARDWARE_EXCEPTION,
    D3D12_MESSAGE_ID_REF_ACCESSING_INDEXABLE_TEMP_OUT_OF_RANGE,
    D3D12_MESSAGE_ID_REF_PROBLEM_PARSING_SHADER,
    D3D12_MESSAGE_ID_REF_OUT_OF_MEMORY,
    D3D12_MESSAGE_ID_REF_INFO,

    //drawtime validation
    D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEXPOS_OVERFLOW,
    D3D12_MESSAGE_ID_DEVICE_DRAWINDEXED_INDEXPOS_OVERFLOW,
    D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_VERTEXPOS_OVERFLOW,
    D3D12_MESSAGE_ID_DEVICE_DRAWINSTANCED_INSTANCEPOS_OVERFLOW,

    D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INSTANCEPOS_OVERFLOW,
    D3D12_MESSAGE_ID_DEVICE_DRAWINDEXEDINSTANCED_INDEXPOS_OVERFLOW,

    D3D12_MESSAGE_ID_DEVICE_DRAW_VERTEX_SHADER_NOT_SET,
    D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND,
    D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERINDEX,
    D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_COMPONENTTYPE,
    D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_REGISTERMASK,
    D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_SYSTEMVALUE,
    D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS,

    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INPUTLAYOUT_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_CONSTANT_BUFFER_TOO_SMALL,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SAMPLER_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SHADERRESOURCEVIEW_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VIEW_DIMENSION_MISMATCH,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_GS_INPUT_PRIMITIVE_MISMATCH,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_RETURN_TYPE_MISMATCH,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_POSITION_NOT_PRESENT,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_NOT_SET,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_BOUND_RESOURCE_MAPPED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_OFFSET_UNALIGNED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OUTPUT_STREAM_OFFSET_UNALIGNED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_LD_UNSUPPORTED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_UNSUPPORTED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_FORMAT_SAMPLE_C_UNSUPPORTED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RESOURCE_MULTISAMPLE_UNSUPPORTED,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_TARGETS_BOUND_WITHOUT_SOURCE,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_SO_STRIDE_LARGER_THAN_BUFFER,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING,
    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0,
    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT,
    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT,
    D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT,

    D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BADINTERFACE_RETURN,

    D3D12_MESSAGE_ID_DEVICE_DRAW_VIEWPORT_NOT_SET,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC,
    D3D12_MESSAGE_ID_DEVICE_RSSETVIEWPORTS_DENORMFLUSH,
    D3D12_MESSAGE_ID_OMSETRENDERTARGETS_INVALIDVIEW,
    D3D12_MESSAGE_ID_DEVICE_SETTEXTFILTERSIZE_INVALIDDIMENSIONS,
    D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLER_MISMATCH,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH,

    D3D12_MESSAGE_ID_BLENDSTATE_GETDESC_LEGACY,
    D3D12_MESSAGE_ID_SHADERRESOURCEVIEW_GETDESC_LEGACY,

    D3D12_MESSAGE_ID_DEVICE_DRAW_PS_OUTPUT_TYPE_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_FORMAT_GATHER_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN,
    D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_STRIDE_TOO_LARGE,
    D3D12_MESSAGE_ID_DEVICE_IASETVERTEXBUFFERS_INVALIDRANGE,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT,
    D3D12_MESSAGE_ID_DEVICE_DRAW_RESOURCE_SAMPLE_COUNT_MISMATCH,

    D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY,
    D3D12_MESSAGE_ID_LIVE_BUFFER,
    D3D12_MESSAGE_ID_LIVE_TEXTURE1D,
    D3D12_MESSAGE_ID_LIVE_TEXTURE2D,
    D3D12_MESSAGE_ID_LIVE_TEXTURE3D,
    D3D12_MESSAGE_ID_LIVE_SHADERRESOURCEVIEW,
    D3D12_MESSAGE_ID_LIVE_RENDERTARGETVIEW,
    D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILVIEW,
    D3D12_MESSAGE_ID_LIVE_VERTEXSHADER,
    D3D12_MESSAGE_ID_LIVE_GEOMETRYSHADER,
    D3D12_MESSAGE_ID_LIVE_PIXELSHADER,
    D3D12_MESSAGE_ID_LIVE_INPUTLAYOUT,
    D3D12_MESSAGE_ID_LIVE_SAMPLER,
    D3D12_MESSAGE_ID_LIVE_BLENDSTATE,
    D3D12_MESSAGE_ID_LIVE_DEPTHSTENCILSTATE,
    D3D12_MESSAGE_ID_LIVE_RASTERIZERSTATE,
    D3D12_MESSAGE_ID_LIVE_QUERY,
    D3D12_MESSAGE_ID_LIVE_PREDICATE,
    D3D12_MESSAGE_ID_LIVE_COUNTER,
    D3D12_MESSAGE_ID_LIVE_DEVICE,
    D3D12_MESSAGE_ID_LIVE_SWAPCHAIN,

    D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS,
    D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTREAMS,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTREAMS,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCLASSLINKAGE,
    D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE,

    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES,
    D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES,

    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCALL,
    D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE,
    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE,
    D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE,

    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCALL,
    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE,
    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE,
    D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE,
    D3D12_MESSAGE_ID_DEVICE_DRAW_HS_XOR_DS_MISMATCH,

    D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_INVALID_ARG_BUFFER,
    D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_UNALIGNED,
    D3D12_MESSAGE_ID_DEVICE_DRAWINDIRECT_OFFSET_OVERFLOW,

    D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDMAPTYPE,
    D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_RESOURCE_MAP_INVALIDFLAGS,
    D3D12_MESSAGE_ID_RESOURCE_MAP_ALREADYMAPPED,
    D3D12_MESSAGE_ID_RESOURCE_MAP_DEVICEREMOVED_RETURN,
    D3D12_MESSAGE_ID_RESOURCE_MAP_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_RESOURCE_MAP_WITHOUT_INITIAL_DISCARD,
    D3D12_MESSAGE_ID_RESOURCE_UNMAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED,

    D3D12_MESSAGE_ID_DEVICE_DRAW_RASTERIZING_CONTROL_POINTS,
    D3D12_MESSAGE_ID_DEVICE_IASETPRIMITIVETOPOLOGY_TOPOLOGY_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_DRAW_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_CONTROL_POINT_COUNT_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_DRAW_HS_DS_TESSELLATOR_DOMAIN_MISMATCH,

    D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_UNRECOGNIZED_FEATURE,
    D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE,
    D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_INVALIDARG_RETURN,

    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCALL,
    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY,
    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE,
    D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE,
    D3D12_MESSAGE_ID_DEVICE_CSSETSHADERRESOURCES_VIEWS_EMPTY,
    D3D12_MESSAGE_ID_CSSETCONSTANTBUFFERS_INVALIDBUFFER,
    D3D12_MESSAGE_ID_DEVICE_CSSETCONSTANTBUFFERS_BUFFERS_EMPTY,
    D3D12_MESSAGE_ID_DEVICE_CSSETSAMPLERS_SAMPLERS_EMPTY,
    D3D12_MESSAGE_ID_DEVICE_CSGETSHADERRESOURCES_VIEWS_EMPTY,
    D3D12_MESSAGE_ID_DEVICE_CSGETCONSTANTBUFFERS_BUFFERS_EMPTY,
    D3D12_MESSAGE_ID_DEVICE_CSGETSAMPLERS_SAMPLERS_EMPTY,

    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED,

    D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDSTRUCTURESTRIDE,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFLAGS,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT,
    D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_OVERLAPPING_OLD_SLOTS,
    D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_NO_OP,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_DENORMFLUSH,
    D3D12_MESSAGE_ID_DEVICE_CSSETUNORDEREDACCESSS_VIEWS_EMPTY,
    D3D12_MESSAGE_ID_DEVICE_CSGETUNORDEREDACCESSS_VIEWS_EMPTY,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS,
    D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_INVALID_ARG_BUFFER,
    D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_UNALIGNED,
    D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_OFFSET_OVERFLOW,

    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_DEPTH_READONLY,
    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_STENCIL_READONLY,
    D3D12_MESSAGE_ID_CHECKFEATURESUPPORT_FORMAT_DEPRECATED,

    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RETURN_TYPE_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET,
    D3D12_MESSAGE_ID_DEVICE_DRAW_UNORDEREDACCESSVIEW_RENDERTARGETVIEW_OVERLAP,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_DIMENSION_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_APPEND_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMICS_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_STRUCTURE_STRIDE_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_BUFFER_TYPE_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_RAW_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_LD_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_FORMAT_STORE_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_ADD_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_BITWISE_OPS_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_CMPSTORE_CMPEXCHANGE_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_EXCHANGE_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_SIGNED_MINMAX_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_ATOMIC_UNSIGNED_MINMAX_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_DISPATCH_BOUND_RESOURCE_MAPPED,
    D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW,
    D3D12_MESSAGE_ID_DEVICE_DISPATCH_THREADGROUPCOUNT_ZERO,
    D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_STRUCTURE_STRIDE_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_BUFFER_TYPE_MISMATCH,
    D3D12_MESSAGE_ID_DEVICE_SHADERRESOURCEVIEW_RAW_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_DISPATCH_UNSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_DISPATCHINDIRECT_UNSUPPORTED,

    D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDOFFSET,
    D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_LARGEOFFSET,
    D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDDESTINATIONSTATE,
    D3D12_MESSAGE_ID_COPYSTRUCTURECOUNT_INVALIDSOURCESTATE,

    D3D12_MESSAGE_ID_CHECKFORMATSUPPORT_FORMAT_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEWFLOAT_INVALIDFORMAT,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_COUNTER_UNSUPPORTED,

    D3D12_MESSAGE_ID_DEVICE_DRAW_PIXEL_SHADER_WITHOUT_RTV_OR_DSV,

    D3D12_MESSAGE_ID_SHADER_ABORT,
    D3D12_MESSAGE_ID_SHADER_MESSAGE,
    D3D12_MESSAGE_ID_SHADER_ERROR,

    D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_ENQUEUESETEVENT_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_ENQUEUESETEVENT_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_ENQUEUESETEVENT_ACCESSDENIED_RETURN,

    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT,

    D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_USE_OF_FORCED_SAMPLE_COUNT,
    D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDARRAYWITHDECODER,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDARRAYWITHDECODER,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDARRAYWITHDECODER,
    D3D12_MESSAGE_ID_DEVICE_LOCKEDOUT_INTERFACE,

    D3D12_MESSAGE_ID_OFFERRESOURCES_INVALIDPRIORITY,

    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDVIEW,

    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_SHADEREXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_SHADEREXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_SHADEREXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_SHADEREXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_SHADEREXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_SHADEREXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_SHADEREXTENSIONSNOTSUPPORTED,

    D3D12_MESSAGE_ID_DEVICE_SHADER_LINKAGE_MINPRECISION,

    D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_INVALIDOFFSET,
    D3D12_MESSAGE_ID_DEVICE_OMSETRENDERTARGETSANDUNORDEREDACCESSVIEWS_TOOMANYVIEWS,

    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_NOTSUPPORTED,

    D3D12_MESSAGE_ID_SWAPDEVICECONTEXTSTATE_NOTSUPPORTED,
    D3D12_MESSAGE_ID_UPDATESUBRESOURCE_PREFERUPDATESUBRESOURCE1,

    D3D12_MESSAGE_ID_GETDC_INACCESSIBLE,

    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDRECT,

    D3D12_MESSAGE_ID_DEVICE_DRAW_SAMPLE_MASK_IGNORED_ON_FL9,

    D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE1_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_DEVICE_OPEN_SHARED_RESOURCE_BY_NAME_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_ENQUEUESETEVENT_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_OFFERRELEASE_NOT_SUPPORTED,

    D3D12_MESSAGE_ID_OFFERRESOURCES_INACCESSIBLE,
    D3D12_MESSAGE_ID_CREATEVIDEOPROCESSORINPUTVIEW_INVALIDMSAA,
    D3D12_MESSAGE_ID_CREATEVIDEOPROCESSOROUTPUTVIEW_INVALIDMSAA,

    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT,
    D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT,
    D3D12_MESSAGE_ID_UPDATESUBRESOURCE_EMPTYDESTBOX,
    D3D12_MESSAGE_ID_COPYSUBRESOURCEREGION_EMPTYSOURCEBOX,
    D3D12_MESSAGE_ID_DEVICE_DRAW_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS,
    D3D12_MESSAGE_ID_DEVICE_DRAW_DEPTHSTENCILVIEW_NOT_SET,
    D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET,
    D3D12_MESSAGE_ID_DEVICE_DRAW_RENDERTARGETVIEW_NOT_SET_DUE_TO_FLIP_PRESENT,
    D3D12_MESSAGE_ID_DEVICE_UNORDEREDACCESSVIEW_NOT_SET_DUE_TO_FLIP_PRESENT,

    D3D12_MESSAGE_ID_GETDATAFORNEWHARDWAREKEY_NULLPARAM,
    D3D12_MESSAGE_ID_CHECKCRYPTOSESSIONSTATUS_NULLPARAM,
    D3D12_MESSAGE_ID_SETEVENTONHARDWARECONTENTPROTECTIONTILT_NULLPARAM,
    D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_NULLPARAM,
    D3D12_MESSAGE_ID_GETVIDEODECODERCAPS_ZEROWIDTHHEIGHT,
    D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_NULLPARAM,
    D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE,
    D3D12_MESSAGE_ID_CHECKVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT,
    D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEODECODERENABLEDOWNSAMPLING_UNSUPPORTED,
    D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEODECODERUPDATEDOWNSAMPLING_UNSUPPORTED,
    D3D12_MESSAGE_ID_CHECKVIDEOPROCESSORFORMATCONVERSION_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTCOLORSPACE1_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTCOLORSPACE1_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMCOLORSPACE1_INVALIDSTREAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_INVALIDSTREAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORSETSTREAMMIRROR_UNSUPPORTED,
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMCOLORSPACE1_NULLPARAM,
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETSTREAMMIRROR_NULLPARAM,
    D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_NULLPARAM, 
    D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_INVALIDCOLORSPACE, 
    D3D12_MESSAGE_ID_RECOMMENDVIDEODECODERDOWNSAMPLING_ZEROWIDTHHEIGHT,
    D3D12_MESSAGE_ID_VIDEOPROCESSORSETOUTPUTSHADERUSAGE_NULLPARAM, 
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETOUTPUTSHADERUSAGE_NULLPARAM, 
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_NULLPARAM, 
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSTREAMCOUNT,
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_TARGETRECT,
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDSOURCERECT, 
    D3D12_MESSAGE_ID_VIDEOPROCESSORGETBEHAVIORHINTS_INVALIDDESTRECT,

    D3D12_MESSAGE_ID_CREATEBUFFER_INVALIDUSAGE,
    D3D12_MESSAGE_ID_CREATETEXTURE1D_INVALIDUSAGE,
    D3D12_MESSAGE_ID_CREATETEXTURE2D_INVALIDUSAGE,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_STEPRATE_NOT_1,
    D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_LEVEL9_INSTANCING_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER,
    D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER,
    D3D12_MESSAGE_ID_COPYTILES_INVALID_PARAMETER,
    D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_WARNING,
    D3D12_MESSAGE_ID_NULL_TILE_MAPPING_ACCESS_ERROR,
    D3D12_MESSAGE_ID_DIRTY_TILE_MAPPING_ACCESS,
    D3D12_MESSAGE_ID_DUPLICATE_TILE_MAPPINGS_IN_COVERED_AREA,
    D3D12_MESSAGE_ID_TILE_MAPPINGS_IN_COVERED_AREA_DUPLICATED_OUTSIDE,
    D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INCOMPATIBLE_RESOURCES,
    D3D12_MESSAGE_ID_TILE_MAPPINGS_SHARED_BETWEEN_INPUT_AND_OUTPUT,
    D3D12_MESSAGE_ID_CHECKMULTISAMPLEQUALITYLEVELS_INVALIDFLAGS,
    D3D12_MESSAGE_ID_GETRESOURCETILING_NONTILED_RESOURCE,
    D3D12_MESSAGE_ID_NEED_TO_CALL_TILEDRESOURCEBARRIER,

    D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS,
    D3D12_MESSAGE_ID_CREATEDEVICE_WARNING,

    D3D12_MESSAGE_ID_TILED_RESOURCE_TIER_1_BUFFER_TEXTURE_MISMATCH,

    D3D12_MESSAGE_ID_CREATE_CRYPTOSESSION,
    D3D12_MESSAGE_ID_CREATE_AUTHENTICATEDCHANNEL,
    D3D12_MESSAGE_ID_LIVE_CRYPTOSESSION,
    D3D12_MESSAGE_ID_LIVE_AUTHENTICATEDCHANNEL,
    D3D12_MESSAGE_ID_DESTROY_CRYPTOSESSION,
    D3D12_MESSAGE_ID_DESTROY_AUTHENTICATEDCHANNEL,

    D3D12_MESSAGE_ID_MAP_INVALID_SUBRESOURCE,
    D3D12_MESSAGE_ID_MAP_INVALID_TYPE,
    D3D12_MESSAGE_ID_MAP_UNSUPPORTED_TYPE,
    D3D12_MESSAGE_ID_UNMAP_INVALID_SUBRESOURCE,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE,    
    D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE,
    D3D12_MESSAGE_ID_INEFFICIENT_PRESENT,
    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION,
    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET,
    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE,
    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET,
    D3D12_MESSAGE_ID_COMMAND_LIST_OPEN,
    D3D12_MESSAGE_ID_QUERY_STATE_MISMATCH,
    D3D12_MESSAGE_ID_INVALID_BUNDLE_API,
    D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED,
    D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED_WITH_INVALID_RESOURCE,
    D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE,
    D3D12_MESSAGE_ID_INVALID_INDIRECT_ARGUMENT_BUFFER,
    D3D12_MESSAGE_ID_COMPUTE_AND_GRAPHICS_PIPELINE,
    D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC,
    D3D12_MESSAGE_ID_COMMAND_LIST_SYNC,
    D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID, 
    D3D12_MESSAGE_ID_CREATE_QUEUE_IMAGE_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_IMAGE_NOT_SUPPORTED,

    D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE,
    D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR,
    D3D12_MESSAGE_ID_CREATE_PIPELINESTATE,
    D3D12_MESSAGE_ID_CREATE_COMMANDLIST12,
    D3D12_MESSAGE_ID_CREATE_IMAGECOMMANDLIST,
    D3D12_MESSAGE_ID_CREATE_RESOURCE,
    D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP,
    D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE,
    D3D12_MESSAGE_ID_CREATE_LIBRARY,
    D3D12_MESSAGE_ID_CREATE_HEAP,
    D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE,
    D3D12_MESSAGE_ID_CREATE_QUERYHEAP,
    D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE,

    D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE,
    D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR,
    D3D12_MESSAGE_ID_LIVE_PIPELINESTATE,
    D3D12_MESSAGE_ID_LIVE_COMMANDLIST12,
    D3D12_MESSAGE_ID_LIVE_IMAGECOMMANDLIST,
    D3D12_MESSAGE_ID_LIVE_RESOURCE,
    D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP,
    D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE,
    D3D12_MESSAGE_ID_LIVE_LIBRARY,
    D3D12_MESSAGE_ID_LIVE_HEAP,
    D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE,
    D3D12_MESSAGE_ID_LIVE_QUERYHEAP,
    D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE,

    D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE,
    D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR,
    D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE,
    D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12,
    D3D12_MESSAGE_ID_DESTROY_IMAGECOMMANDLIST,
    D3D12_MESSAGE_ID_DESTROY_RESOURCE,
    D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP,
    D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE,
    D3D12_MESSAGE_ID_DESTROY_LIBRARY,
    D3D12_MESSAGE_ID_DESTROY_HEAP,
    D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE,
    D3D12_MESSAGE_ID_DESTROY_QUERYHEAP,
    D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE,

    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDHEAPTYPE,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS,
    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDMISCFLAGS,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS,
    D3D12_MESSAGE_ID_CREATERESOURCE_LARGEALLOCATION,
    D3D12_MESSAGE_ID_CREATERESOURCE_SMALLALLOCATION,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDINITIALSTATE,
    D3D12_MESSAGE_ID_RESOURCE_HAS_PENDING_INITIAL_DATA,
    D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE,
    D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE,
    D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE,
    D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH,
    D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE,
    D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_PIPELINE_STATE,
    D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE,
    D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE,
    D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE,
    D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE,
    D3D12_MESSAGE_ID_RENDER_TARGET_NUMBER_MISMATCH_BUNDLE_PIPELINE_STATE,
    D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE,
    D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE,
    D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_BUNDLE_PIPELINE_STATE,
    D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_BUNDLE_PIPELINE_STATE,
    D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE,
    D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC,
    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE,
    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE,
    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES,
    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL,
    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES,
    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT,
    D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS,
    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS,
    D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE,
    D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE,
    D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC,
    D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE,
    D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE,
    D3D12_MESSAGE_ID_DEVICE_DRAW_INVALID_SYSTEMVALUE,
    D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE,
    D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC,
    D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_LARGE_OFFSET,
    D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE,
    D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES,
    D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE,
    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE,
    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH,
    D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE,
    D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE,
    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND,
    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED,
    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION,
    D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES,
    D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP,
    D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS,
    D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY,
    D3D12_MESSAGE_ID_MAKERESIDENT_INVALIDOBJECT,
    D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY,
    D3D12_MESSAGE_ID_EVICT_INVALIDOBJECT,
    D3D12_MESSAGE_ID_HEAPS_UNSUPPORTED,
    D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID,
    D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID,
    D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID,
    D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID,
    D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID,
    D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC,
    D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_LARGE_OFFSET,
    D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC,
    D3D12_MESSAGE_ID_SET_INDEX_BUFFER_LARGE_OFFSET,
    D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC,
    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY,
    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT,
    D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID,
    D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID,
    D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID,
    D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID,
    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS,
    D3D12_MESSAGE_ID_CREATEQUERY_HEAP_JPEG_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS,
    D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY,
    D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS,
    D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS,
    D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED,
    D3D12_MESSAGE_ID_UNSTABLE_POWER_STATE,
    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT,
    D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE,
    D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET,
    D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP,
    D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID,
    D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID,
    D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS,
    D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION,

    D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_INVALIDCONTEXTTYPE,
    D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_DECODENOTSUPPORTED, 
    D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_ENCODENOTSUPPORTED,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANEINDEX,
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANEINDEX, 
    D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_AMBIGUOUSVIDEOPLANEINDEX, 
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANEINDEX,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANEINDEX,
    D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_AMBIGUOUSVIDEOPLANEINDEX, 
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANEINDEX,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANEINDEX,
    D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_AMBIGUOUSVIDEOPLANEINDEX,
    D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSCANDATAOFFSET,
    D3D12_MESSAGE_ID_JPEGDECODE_NOTSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_DIMENSIONSTOOLARGE,
    D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOMPONENTS,
    D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDCOMPONENTS, 
    D3D12_MESSAGE_ID_JPEGDECODE_DESTINATIONNOT2D, 
    D3D12_MESSAGE_ID_JPEGDECODE_TILEDRESOURCESUNSUPPORTED, 
    D3D12_MESSAGE_ID_JPEGDECODE_GUARDRECTSUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_FORMATUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_JPEGDECODE_INVALIDMIPLEVEL,
    D3D12_MESSAGE_ID_JPEGDECODE_EMPTYDESTBOX,
    D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOT2D,
    D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXNOTSUB,
    D3D12_MESSAGE_ID_JPEGDECODE_DESTBOXESINTERSECT,
    D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEMISMATCH,
    D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEMISMATCH,
    D3D12_MESSAGE_ID_JPEGDECODE_XSUBSAMPLEODD,
    D3D12_MESSAGE_ID_JPEGDECODE_YSUBSAMPLEODD,
    D3D12_MESSAGE_ID_JPEGDECODE_UPSCALEUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_TIER4DOWNSCALETOLARGE,
    D3D12_MESSAGE_ID_JPEGDECODE_TIER3DOWNSCALEUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_CHROMASIZEMISMATCH,
    D3D12_MESSAGE_ID_JPEGDECODE_LUMACHROMASIZEMISMATCH,
    D3D12_MESSAGE_ID_JPEGDECODE_INVALIDNUMDESTINATIONS,
    D3D12_MESSAGE_ID_JPEGDECODE_SUBBOXUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_1DESTUNSUPPORTEDFORMAT,
    D3D12_MESSAGE_ID_JPEGDECODE_3DESTUNSUPPORTEDFORMAT,
    D3D12_MESSAGE_ID_JPEGDECODE_SCALEUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_INVALIDSOURCESIZE,
    D3D12_MESSAGE_ID_JPEGDECODE_INVALIDCOPYFLAGS,
    D3D12_MESSAGE_ID_JPEGDECODE_HAZARD,
    D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERUSAGE,
    D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDSRCBUFFERMISCFLAGS,
    D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPORTEDDSTTEXTUREUSAGE,
    D3D12_MESSAGE_ID_JPEGDECODE_BACKBUFFERNOTSUPPORTED,
    D3D12_MESSAGE_ID_JPEGDECODE_UNSUPPRTEDCOPYFLAGS,
    D3D12_MESSAGE_ID_JPEGENCODE_NOTSUPPORTED,
    D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSCANDATAOFFSET,
    D3D12_MESSAGE_ID_JPEGENCODE_INVALIDCOMPONENTS,
    D3D12_MESSAGE_ID_JPEGENCODE_SOURCENOT2D,
    D3D12_MESSAGE_ID_JPEGENCODE_TILEDRESOURCESUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGENCODE_GUARDRECTSUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGENCODE_XSUBSAMPLEMISMATCH,
    D3D12_MESSAGE_ID_JPEGENCODE_YSUBSAMPLEMISMATCH,
    D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDCOMPONENTS,
    D3D12_MESSAGE_ID_JPEGENCODE_FORMATUNSUPPORTED,
    D3D12_MESSAGE_ID_JPEGENCODE_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_JPEGENCODE_INVALIDMIPLEVEL,
    D3D12_MESSAGE_ID_JPEGENCODE_DIMENSIONSTOOLARGE,
    D3D12_MESSAGE_ID_JPEGENCODE_HAZARD,
    D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERUSAGE,
    D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDDSTBUFFERMISCFLAGS,
    D3D12_MESSAGE_ID_JPEGENCODE_UNSUPPORTEDSRCTEXTUREUSAGE,
    D3D12_MESSAGE_ID_JPEGENCODE_BACKBUFFERNOTSUPPORTED,
    D3D12_MESSAGE_ID_CREATEQUERYORPREDICATE_UNSUPPORTEDCONTEXTTTYPEFORQUERY,
    D3D12_MESSAGE_ID_FLUSH1_INVALIDCONTEXTTYPE,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE,
    D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT,
    D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT,
    D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH,
    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALIDDEPTH,
    D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE,
    D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE,
    D3D12_MESSAGE_ID_MAP_INVALIDHEAP,
    D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP,
    D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_MAP_INVALIDRANGE,
    D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE,
    D3D12_MESSAGE_ID_MAP_NULLRANGE,
    D3D12_MESSAGE_ID_UNMAP_NULLRANGE,
    D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER,
    D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN,
    D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN,
    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED,
    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH,
    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST,
    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST,
    D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST,
    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION,
    D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS,
    D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC,
    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION,
    D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS,
    D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX,
    D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS,

    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX,
    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT,
    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH,
    D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT,

    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER,
    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH,
    D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE,

    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB,
    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH,
    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH,
    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH,
    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED,
    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP,
    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX,
    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX,
    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP,
    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX,
    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE,
    D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX,

    D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED,
    D3D12_MESSAGE_ID_INVALID_NODE_INDEX,

    D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE,
    D3D12_MESSAGE_ID_NODE_MASK_MISMATCH,
    D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY,
    D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES,
    D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES,
    D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES,
    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE,
    D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS,
    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE,
    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS,

    D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS,
    D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT,
    D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS,
    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES,
    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE,
    D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT,
    D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT,
    D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY,
    D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE,
    D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY,

    D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE,
    D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS,

    D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE,

    D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED,

    D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT,

    D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS,

    D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED,

    D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_NEEDED,
    D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY,
    D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE,
    D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE,

    D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT,
    D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT,

    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 isnt 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();
};


cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */")
#pragma endregion

cpp_quote( "DEFINE_GUID(IID_ID3D12Debug,0x344488b7,0x6846,0x474b,0xb9,0x89,0xf0,0x27,0x44,0x82,0x45,0xe0);" )
cpp_quote( "DEFINE_GUID(IID_ID3D12DebugDevice,0x3febd6dd,0x4973,0x4787,0x81,0x94,0xe4,0x5f,0x9e,0x28,0x92,0x3e);" )
cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandQueue,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3a);" )
cpp_quote( "DEFINE_GUID(IID_ID3D12DebugCommandList,0x09e0bf36,0x54ac,0x484f,0x88,0x47,0x4b,0xae,0xea,0xb6,0x05,0x3f);" )
cpp_quote( "DEFINE_GUID(IID_ID3D12InfoQueue,0x0742a90b,0xc387,0x483f,0xb9,0x46,0x30,0xa7,0xe4,0xe6,0x14,0x58);" )
