Wine-Devel
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 4 participants
- 84544 discussions
[PATCH vkd3d 1/3] vkd3d-compiler: Do not validate the target type if --print-target-types is specified.
by Henri Verbeet Oct. 7, 2020
by Henri Verbeet Oct. 7, 2020
Oct. 7, 2020
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
programs/vkd3d-compiler/main.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/programs/vkd3d-compiler/main.c b/programs/vkd3d-compiler/main.c
index 0b89ba86..7a1a5b0b 100644
--- a/programs/vkd3d-compiler/main.c
+++ b/programs/vkd3d-compiler/main.c
@@ -474,6 +474,9 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
}
}
+ if (options->print_target_types)
+ return true;
+
if (!validate_target_type(options->source_type, options->target_type))
{
fprintf(stderr, "Target type '%s' is invalid for source type '%s'.\n",
@@ -482,9 +485,6 @@ static bool parse_command_line(int argc, char **argv, struct options *options)
return false;
}
- if (options->print_target_types)
- return true;
-
if (optind < argc)
options->filename = argv[argc - 1];
--
2.11.0
2
1
[PATCH vkd3d 3/3] include: Add the D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE enumeration.
by Henri Verbeet Oct. 7, 2020
by Henri Verbeet Oct. 7, 2020
Oct. 7, 2020
From: Biswapriyo Nath <nathbappai(a)gmail.com>
Signed-off-by: Biswapriyo Nath <nathbappai(a)gmail.com>
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
include/vkd3d_d3d12sdklayers.idl | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/include/vkd3d_d3d12sdklayers.idl b/include/vkd3d_d3d12sdklayers.idl
index 31187f7e..027eeaa2 100644
--- a/include/vkd3d_d3d12sdklayers.idl
+++ b/include/vkd3d_d3d12sdklayers.idl
@@ -890,6 +890,15 @@ typedef enum D3D12_MESSAGE_ID
D3D12_MESSAGE_ID_D3D12_MESSAGES_END
} D3D12_MESSAGE_ID;
+typedef enum D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE
+{
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_NONE = 0x0,
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_STATE_TRACKING_ONLY = 0x1,
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_UNGUARDED_VALIDATION = 0x2,
+ D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE_GUARDED_VALIDATION = 0x3,
+ NUM_D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = 0x4,
+} D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE;
+
typedef struct D3D12_MESSAGE
{
D3D12_MESSAGE_CATEGORY Category;
--
2.11.0
1
0
Oct. 7, 2020
From: Biswapriyo Nath <nathbappai(a)gmail.com>
Signed-off-by: Biswapriyo Nath <nathbappai(a)gmail.com>
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
This supersedes patch 194128.
include/vkd3d_d3d12sdklayers.idl | 943 +++++++++++++++++++++++++++++++++++++++
1 file changed, 943 insertions(+)
diff --git a/include/vkd3d_d3d12sdklayers.idl b/include/vkd3d_d3d12sdklayers.idl
index 76634628..31187f7e 100644
--- a/include/vkd3d_d3d12sdklayers.idl
+++ b/include/vkd3d_d3d12sdklayers.idl
@@ -18,6 +18,903 @@
import "vkd3d_d3d12.idl";
+typedef enum D3D12_MESSAGE_CATEGORY
+{
+ D3D12_MESSAGE_CATEGORY_APPLICATION_DEFINED = 0x0,
+ D3D12_MESSAGE_CATEGORY_MISCELLANEOUS = 0x1,
+ D3D12_MESSAGE_CATEGORY_INITIALIZATION = 0x2,
+ D3D12_MESSAGE_CATEGORY_CLEANUP = 0x3,
+ D3D12_MESSAGE_CATEGORY_COMPILATION = 0x4,
+ D3D12_MESSAGE_CATEGORY_STATE_CREATION = 0x5,
+ D3D12_MESSAGE_CATEGORY_STATE_SETTING = 0x6,
+ D3D12_MESSAGE_CATEGORY_STATE_GETTING = 0x7,
+ D3D12_MESSAGE_CATEGORY_RESOURCE_MANIPULATION = 0x8,
+ D3D12_MESSAGE_CATEGORY_EXECUTION = 0x9,
+ D3D12_MESSAGE_CATEGORY_SHADER = 0xa,
+} D3D12_MESSAGE_CATEGORY;
+
+typedef enum D3D12_MESSAGE_SEVERITY
+{
+ D3D12_MESSAGE_SEVERITY_CORRUPTION = 0x0,
+ D3D12_MESSAGE_SEVERITY_ERROR = 0x1,
+ D3D12_MESSAGE_SEVERITY_WARNING = 0x2,
+ D3D12_MESSAGE_SEVERITY_INFO = 0x3,
+ D3D12_MESSAGE_SEVERITY_MESSAGE = 0x4,
+} D3D12_MESSAGE_SEVERITY;
+
+typedef enum D3D12_MESSAGE_ID
+{
+ D3D12_MESSAGE_ID_UNKNOWN = 0x0000,
+ D3D12_MESSAGE_ID_STRING_FROM_APPLICATION = 0x0001,
+ D3D12_MESSAGE_ID_CORRUPTED_THIS = 0x0002,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER1 = 0x0003,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER2 = 0x0004,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER3 = 0x0005,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER4 = 0x0006,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER5 = 0x0007,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER6 = 0x0008,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER7 = 0x0009,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER8 = 0x000a,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER9 = 0x000b,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER10 = 0x000c,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER11 = 0x000d,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER12 = 0x000e,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER13 = 0x000f,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER14 = 0x0010,
+ D3D12_MESSAGE_ID_CORRUPTED_PARAMETER15 = 0x0011,
+ D3D12_MESSAGE_ID_CORRUPTED_MULTITHREADING = 0x0012,
+ D3D12_MESSAGE_ID_MESSAGE_REPORTING_OUTOFMEMORY = 0x0013,
+ D3D12_MESSAGE_ID_GETPRIVATEDATA_MOREDATA = 0x0014,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_INVALIDFREEDATA = 0x0015,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_CHANGINGPARAMS = 0x0018,
+ D3D12_MESSAGE_ID_SETPRIVATEDATA_OUTOFMEMORY = 0x0019,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_UNRECOGNIZEDFORMAT = 0x001a,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDESC = 0x001b,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDFORMAT = 0x001c,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDVIDEOPLANESLICE = 0x001d,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDPLANESLICE = 0x001e,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDDIMENSIONS = 0x001f,
+ D3D12_MESSAGE_ID_CREATESHADERRESOURCEVIEW_INVALIDRESOURCE = 0x0020,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNRECOGNIZEDFORMAT = 0x0023,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_UNSUPPORTEDFORMAT = 0x0024,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDESC = 0x0025,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDFORMAT = 0x0026,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDVIDEOPLANESLICE = 0x0027,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDPLANESLICE = 0x0028,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDDIMENSIONS = 0x0029,
+ D3D12_MESSAGE_ID_CREATERENDERTARGETVIEW_INVALIDRESOURCE = 0x002a,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_UNRECOGNIZEDFORMAT = 0x002d,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDESC = 0x002e,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFORMAT = 0x002f,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDDIMENSIONS = 0x0030,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDRESOURCE = 0x0031,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_OUTOFMEMORY = 0x0034,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TOOMANYELEMENTS = 0x0035,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDFORMAT = 0x0036,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INCOMPATIBLEFORMAT = 0x0037,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOT = 0x0038,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDINPUTSLOTCLASS = 0x0039,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_STEPRATESLOTCLASSMISMATCH = 0x003a,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSLOTCLASSCHANGE = 0x003b,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDSTEPRATECHANGE = 0x003c,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_INVALIDALIGNMENT = 0x003d,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_DUPLICATESEMANTIC = 0x003e,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_UNPARSEABLEINPUTSIGNATURE = 0x003f,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_NULLSEMANTIC = 0x0040,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_MISSINGELEMENT = 0x0041,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_OUTOFMEMORY = 0x0042,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERBYTECODE = 0x0043,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDSHADERTYPE = 0x0044,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_OUTOFMEMORY = 0x0045,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERBYTECODE = 0x0046,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDSHADERTYPE = 0x0047,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTOFMEMORY = 0x0048,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERBYTECODE = 0x0049,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 0x004a,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMENTRIES = 0x004b,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSTREAMSTRIDEUNUSED = 0x004c,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_OUTPUTSLOT0EXPECTED = 0x004f,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSLOT = 0x0050,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_ONLYONEELEMENTPERSLOT = 0x0051,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDCOMPONENTCOUNT = 0x0052,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTARTCOMPONENTANDCOMPONENTCOUNT = 0x0053,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDGAPDEFINITION = 0x0054,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_REPEATEDOUTPUT = 0x0055,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDOUTPUTSTREAMSTRIDE = 0x0056,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGSEMANTIC = 0x0057,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MASKMISMATCH = 0x0058,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_CANTHAVEONLYGAPS = 0x0059,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DECLTOOCOMPLEX = 0x005a,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_MISSINGOUTPUTSIGNATURE = 0x005b,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_OUTOFMEMORY = 0x005c,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERBYTECODE = 0x005d,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDSHADERTYPE = 0x005e,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFILLMODE = 0x005f,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDCULLMODE = 0x0060,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDDEPTHBIASCLAMP = 0x0061,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDSLOPESCALEDDEPTHBIAS = 0x0062,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHWRITEMASK = 0x0064,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDDEPTHFUNC = 0x0065,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFAILOP = 0x0066,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILZFAILOP = 0x0067,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILPASSOP = 0x0068,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDFRONTFACESTENCILFUNC = 0x0069,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFAILOP = 0x006a,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILZFAILOP = 0x006b,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILPASSOP = 0x006c,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_INVALIDBACKFACESTENCILFUNC = 0x006d,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLEND = 0x006f,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLEND = 0x0070,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOP = 0x0071,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDSRCBLENDALPHA = 0x0072,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDDESTBLENDALPHA = 0x0073,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDBLENDOPALPHA = 0x0074,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDRENDERTARGETWRITEMASK = 0x0075,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_INVALID = 0x0087,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_NOT_SET = 0x00c8,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_ROOT_SIGNATURE_MISMATCH = 0x00c9,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_NOT_SET = 0x00ca,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL = 0x00d1,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL = 0x00d2,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_NOT_SET = 0x00d3,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_FORMAT_INVALID = 0x00d4,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_BUFFER_TOO_SMALL = 0x00d5,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INVALID_PRIMITIVETOPOLOGY = 0x00db,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_VERTEX_STRIDE_UNALIGNED = 0x00dd,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_INDEX_OFFSET_UNALIGNED = 0x00de,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_AT_FAULT = 0x00e8,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_POSSIBLY_AT_FAULT = 0x00e9,
+ D3D12_MESSAGE_ID_DEVICE_REMOVAL_PROCESS_NOT_AT_FAULT = 0x00ea,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TRAILING_DIGIT_IN_SEMANTIC = 0x00ef,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_TRAILING_DIGIT_IN_SEMANTIC = 0x00f0,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_TYPE_MISMATCH = 0x00f5,
+ D3D12_MESSAGE_ID_CREATEINPUTLAYOUT_EMPTY_LAYOUT = 0x00fd,
+ D3D12_MESSAGE_ID_LIVE_OBJECT_SUMMARY = 0x00ff,
+ D3D12_MESSAGE_ID_LIVE_DEVICE = 0x0112,
+ D3D12_MESSAGE_ID_LIVE_SWAPCHAIN = 0x0113,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILVIEW_INVALIDFLAGS = 0x0114,
+ D3D12_MESSAGE_ID_CREATEVERTEXSHADER_INVALIDCLASSLINKAGE = 0x0115,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADER_INVALIDCLASSLINKAGE = 0x0116,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAMTORASTERIZER = 0x0118,
+ D3D12_MESSAGE_ID_CREATEPIXELSHADER_INVALIDCLASSLINKAGE = 0x011b,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDSTREAM = 0x011c,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDENTRIES = 0x011d,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UNEXPECTEDSTRIDES = 0x011e,
+ D3D12_MESSAGE_ID_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_INVALIDNUMSTRIDES = 0x011f,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_OUTOFMEMORY = 0x0121,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERBYTECODE = 0x0122,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDSHADERTYPE = 0x0123,
+ D3D12_MESSAGE_ID_CREATEHULLSHADER_INVALIDCLASSLINKAGE = 0x0124,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_OUTOFMEMORY = 0x0126,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERBYTECODE = 0x0127,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDSHADERTYPE = 0x0128,
+ D3D12_MESSAGE_ID_CREATEDOMAINSHADER_INVALIDCLASSLINKAGE = 0x0129,
+ D3D12_MESSAGE_ID_RESOURCE_UNMAP_NOTMAPPED = 0x0136,
+ D3D12_MESSAGE_ID_DEVICE_CHECKFEATURESUPPORT_MISMATCHED_DATA_SIZE = 0x013e,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_OUTOFMEMORY = 0x0141,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDSHADERBYTECODE = 0x0142,
+ D3D12_MESSAGE_ID_CREATECOMPUTESHADER_INVALIDCLASSLINKAGE = 0x0143,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 0x014b,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 0x014c,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 0x014d,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 0x014e,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEFLOATOPSNOTSUPPORTED = 0x014f,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEFLOATOPSNOTSUPPORTED = 0x0150,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEFLOATOPSNOTSUPPORTED = 0x0151,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDRESOURCE = 0x0154,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDESC = 0x0155,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFORMAT = 0x0156,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDVIDEOPLANESLICE = 0x0157,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDPLANESLICE = 0x0158,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDDIMENSIONS = 0x0159,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_UNRECOGNIZEDFORMAT = 0x015a,
+ D3D12_MESSAGE_ID_CREATEUNORDEREDACCESSVIEW_INVALIDFLAGS = 0x0162,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALIDFORCEDSAMPLECOUNT = 0x0191,
+ D3D12_MESSAGE_ID_CREATEBLENDSTATE_INVALIDLOGICOPS = 0x0193,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 0x019a,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 0x019c,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 0x019e,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 0x01a0,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_DOUBLEEXTENSIONSNOTSUPPORTED = 0x01a2,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 0x01a4,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_DOUBLEEXTENSIONSNOTSUPPORTED = 0x01a6,
+ D3D12_MESSAGE_ID_DEVICE_CREATEVERTEXSHADER_UAVSNOTSUPPORTED = 0x01a9,
+ D3D12_MESSAGE_ID_DEVICE_CREATEHULLSHADER_UAVSNOTSUPPORTED = 0x01aa,
+ D3D12_MESSAGE_ID_DEVICE_CREATEDOMAINSHADER_UAVSNOTSUPPORTED = 0x01ab,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADER_UAVSNOTSUPPORTED = 0x01ac,
+ D3D12_MESSAGE_ID_DEVICE_CREATEGEOMETRYSHADERWITHSTREAMOUTPUT_UAVSNOTSUPPORTED = 0x01ad,
+ D3D12_MESSAGE_ID_DEVICE_CREATEPIXELSHADER_UAVSNOTSUPPORTED = 0x01ae,
+ D3D12_MESSAGE_ID_DEVICE_CREATECOMPUTESHADER_UAVSNOTSUPPORTED = 0x01af,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_INVALIDSOURCERECT = 0x01bf,
+ D3D12_MESSAGE_ID_DEVICE_CLEARVIEW_EMPTYRECT = 0x01c0,
+ D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_INVALID_PARAMETER = 0x01ed,
+ D3D12_MESSAGE_ID_COPYTILEMAPPINGS_INVALID_PARAMETER = 0x01ee,
+ D3D12_MESSAGE_ID_CREATEDEVICE_INVALIDARGS = 0x01fa,
+ D3D12_MESSAGE_ID_CREATEDEVICE_WARNING = 0x01fb,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_TYPE = 0x0207,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_NULL_POINTER = 0x0208,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SUBRESOURCE = 0x0209,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_RESERVED_BITS = 0x020a,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISSING_BIND_FLAGS = 0x020b,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_MISC_FLAGS = 0x020c,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MATCHING_STATES = 0x020d,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINATION = 0x020e,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_BEFORE_AFTER_MISMATCH = 0x020f,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_RESOURCE = 0x0210,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_SAMPLE_COUNT = 0x0211,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS = 0x0212,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMBINED_FLAGS = 0x0213,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAGS_FOR_FORMAT = 0x0214,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_SPLIT_BARRIER = 0x0215,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_END = 0x0216,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_UNMATCHED_BEGIN = 0x0217,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_FLAG = 0x0218,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_COMMAND_LIST_TYPE = 0x0219,
+ D3D12_MESSAGE_ID_INVALID_SUBRESOURCE_STATE = 0x021a,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CONTENTION = 0x021c,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET = 0x021d,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_RESET_BUNDLE = 0x021e,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_CANNOT_RESET = 0x021f,
+ D3D12_MESSAGE_ID_COMMAND_LIST_OPEN = 0x0220,
+ D3D12_MESSAGE_ID_INVALID_BUNDLE_API = 0x0222,
+ D3D12_MESSAGE_ID_COMMAND_LIST_CLOSED = 0x0223,
+ D3D12_MESSAGE_ID_WRONG_COMMAND_ALLOCATOR_TYPE = 0x0225,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_SYNC = 0x0228,
+ D3D12_MESSAGE_ID_COMMAND_LIST_SYNC = 0x0229,
+ D3D12_MESSAGE_ID_SET_DESCRIPTOR_HEAP_INVALID = 0x022a,
+ D3D12_MESSAGE_ID_CREATE_COMMANDQUEUE = 0x022d,
+ D3D12_MESSAGE_ID_CREATE_COMMANDALLOCATOR = 0x022e,
+ D3D12_MESSAGE_ID_CREATE_PIPELINESTATE = 0x022f,
+ D3D12_MESSAGE_ID_CREATE_COMMANDLIST12 = 0x0230,
+ D3D12_MESSAGE_ID_CREATE_RESOURCE = 0x0232,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTORHEAP = 0x0233,
+ D3D12_MESSAGE_ID_CREATE_ROOTSIGNATURE = 0x0234,
+ D3D12_MESSAGE_ID_CREATE_LIBRARY = 0x0235,
+ D3D12_MESSAGE_ID_CREATE_HEAP = 0x0236,
+ D3D12_MESSAGE_ID_CREATE_MONITOREDFENCE = 0x0237,
+ D3D12_MESSAGE_ID_CREATE_QUERYHEAP = 0x0238,
+ D3D12_MESSAGE_ID_CREATE_COMMANDSIGNATURE = 0x0239,
+ D3D12_MESSAGE_ID_LIVE_COMMANDQUEUE = 0x023a,
+ D3D12_MESSAGE_ID_LIVE_COMMANDALLOCATOR = 0x023b,
+ D3D12_MESSAGE_ID_LIVE_PIPELINESTATE = 0x023c,
+ D3D12_MESSAGE_ID_LIVE_COMMANDLIST12 = 0x023d,
+ D3D12_MESSAGE_ID_LIVE_RESOURCE = 0x023f,
+ D3D12_MESSAGE_ID_LIVE_DESCRIPTORHEAP = 0x0240,
+ D3D12_MESSAGE_ID_LIVE_ROOTSIGNATURE = 0x0241,
+ D3D12_MESSAGE_ID_LIVE_LIBRARY = 0x0242,
+ D3D12_MESSAGE_ID_LIVE_HEAP = 0x0243,
+ D3D12_MESSAGE_ID_LIVE_MONITOREDFENCE = 0x0244,
+ D3D12_MESSAGE_ID_LIVE_QUERYHEAP = 0x0245,
+ D3D12_MESSAGE_ID_LIVE_COMMANDSIGNATURE = 0x0246,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDQUEUE = 0x0247,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDALLOCATOR = 0x0248,
+ D3D12_MESSAGE_ID_DESTROY_PIPELINESTATE = 0x0249,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDLIST12 = 0x024a,
+ D3D12_MESSAGE_ID_DESTROY_RESOURCE = 0x024c,
+ D3D12_MESSAGE_ID_DESTROY_DESCRIPTORHEAP = 0x024d,
+ D3D12_MESSAGE_ID_DESTROY_ROOTSIGNATURE = 0x024e,
+ D3D12_MESSAGE_ID_DESTROY_LIBRARY = 0x024f,
+ D3D12_MESSAGE_ID_DESTROY_HEAP = 0x0250,
+ D3D12_MESSAGE_ID_DESTROY_MONITOREDFENCE = 0x0251,
+ D3D12_MESSAGE_ID_DESTROY_QUERYHEAP = 0x0252,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDSIGNATURE = 0x0253,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONS = 0x0255,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMISCFLAGS = 0x0257,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDARG_RETURN = 0x025a,
+ D3D12_MESSAGE_ID_CREATERESOURCE_OUTOFMEMORY_RETURN = 0x025b,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDESC = 0x025c,
+ D3D12_MESSAGE_ID_POSSIBLY_INVALID_SUBRESOURCE_STATE = 0x025f,
+ D3D12_MESSAGE_ID_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 0x0260,
+ D3D12_MESSAGE_ID_POSSIBLE_INVALID_USE_OF_NON_RESIDENT_RESOURCE = 0x0261,
+ D3D12_MESSAGE_ID_BUNDLE_PIPELINE_STATE_MISMATCH = 0x0262,
+ D3D12_MESSAGE_ID_PRIMITIVE_TOPOLOGY_MISMATCH_PIPELINE_STATE = 0x0263,
+ D3D12_MESSAGE_ID_RENDER_TARGET_FORMAT_MISMATCH_PIPELINE_STATE = 0x0265,
+ D3D12_MESSAGE_ID_RENDER_TARGET_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 0x0266,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_FORMAT_MISMATCH_PIPELINE_STATE = 0x0267,
+ D3D12_MESSAGE_ID_DEPTH_STENCIL_SAMPLE_DESC_MISMATCH_PIPELINE_STATE = 0x0268,
+ D3D12_MESSAGE_ID_CREATESHADER_INVALIDBYTECODE = 0x026e,
+ D3D12_MESSAGE_ID_CREATEHEAP_NULLDESC = 0x026f,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDSIZE = 0x0270,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDHEAPTYPE = 0x0271,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 0x0272,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMEMORYPOOL = 0x0273,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDPROPERTIES = 0x0274,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDALIGNMENT = 0x0275,
+ D3D12_MESSAGE_ID_CREATEHEAP_UNRECOGNIZEDMISCFLAGS = 0x0276,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDMISCFLAGS = 0x0277,
+ D3D12_MESSAGE_ID_CREATEHEAP_INVALIDARG_RETURN = 0x0278,
+ D3D12_MESSAGE_ID_CREATEHEAP_OUTOFMEMORY_RETURN = 0x0279,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAPPROPERTIES = 0x027a,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPTYPE = 0x027b,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDCPUPAGEPROPERTIES = 0x027c,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDMEMORYPOOL = 0x027d,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPPROPERTIES = 0x027e,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_UNRECOGNIZEDHEAPMISCFLAGS = 0x027f,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDHEAPMISCFLAGS = 0x0280,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_INVALIDARG_RETURN = 0x0281,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_OUTOFMEMORY_RETURN = 0x0282,
+ D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_UNRECOGNIZEDHEAPTYPE = 0x0283,
+ D3D12_MESSAGE_ID_GETCUSTOMHEAPPROPERTIES_INVALIDHEAPTYPE = 0x0284,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_INVALID_DESC = 0x0285,
+ D3D12_MESSAGE_ID_INVALID_DESCRIPTOR_HANDLE = 0x0286,
+ D3D12_MESSAGE_ID_CREATERASTERIZERSTATE_INVALID_CONSERVATIVERASTERMODE = 0x0287,
+ D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_RESOURCE = 0x0289,
+ D3D12_MESSAGE_ID_CREATE_CONSTANT_BUFFER_VIEW_INVALID_DESC = 0x028a,
+ D3D12_MESSAGE_ID_CREATE_UNORDEREDACCESS_VIEW_INVALID_COUNTER_USAGE = 0x028c,
+ D3D12_MESSAGE_ID_COPY_DESCRIPTORS_INVALID_RANGES = 0x028d,
+ D3D12_MESSAGE_ID_COPY_DESCRIPTORS_WRITE_ONLY_DESCRIPTOR = 0x028e,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RTV_FORMAT_NOT_UNKNOWN = 0x028f,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_RENDER_TARGET_COUNT = 0x0290,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VERTEX_SHADER_NOT_SET = 0x0291,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_NOT_SET = 0x0292,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_HS_DS_SIGNATURE_MISMATCH = 0x0293,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERINDEX = 0x0294,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_COMPONENTTYPE = 0x0295,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_REGISTERMASK = 0x0296,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SYSTEMVALUE = 0x0297,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_NEVERWRITTEN_ALWAYSREADS = 0x0298,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_MINPRECISION = 0x0299,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_LINKAGE_SEMANTICNAME_NOT_FOUND = 0x029a,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_XOR_DS_MISMATCH = 0x029b,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HULL_SHADER_INPUT_TOPOLOGY_MISMATCH = 0x029c,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_CONTROL_POINT_COUNT_MISMATCH = 0x029d,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_DS_TESSELLATOR_DOMAIN_MISMATCH = 0x029e,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_CENTER_MULTISAMPLE_PATTERN = 0x029f,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_USE_OF_FORCED_SAMPLE_COUNT = 0x02a0,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_PRIMITIVETOPOLOGY = 0x02a1,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SYSTEMVALUE = 0x02a2,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_DUAL_SOURCE_BLENDING_CAN_ONLY_HAVE_RENDER_TARGET_0 = 0x02a3,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_BLENDING = 0x02a4,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_TYPE_MISMATCH = 0x02a5,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_OM_RENDER_TARGET_DOES_NOT_SUPPORT_LOGIC_OPS = 0x02a6,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RENDERTARGETVIEW_NOT_SET = 0x02a7,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DEPTHSTENCILVIEW_NOT_SET = 0x02a8,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_INPUT_PRIMITIVE_MISMATCH = 0x02a9,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_POSITION_NOT_PRESENT = 0x02aa,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE_FLAGS = 0x02ab,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_INDEX_BUFFER_PROPERTIES = 0x02ac,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INVALID_SAMPLE_DESC = 0x02ad,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_HS_ROOT_SIGNATURE_MISMATCH = 0x02ae,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_DS_ROOT_SIGNATURE_MISMATCH = 0x02af,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VS_ROOT_SIGNATURE_MISMATCH = 0x02b0,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_GS_ROOT_SIGNATURE_MISMATCH = 0x02b1,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_ROOT_SIGNATURE_MISMATCH = 0x02b2,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MISSING_ROOT_SIGNATURE = 0x02b3,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_OPEN_BUNDLE = 0x02b4,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_DESCRIPTOR_HEAP_MISMATCH = 0x02b5,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_TYPE = 0x02b6,
+ D3D12_MESSAGE_ID_DRAW_EMPTY_SCISSOR_RECTANGLE = 0x02b7,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_BLOB_NOT_FOUND = 0x02b8,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_DESERIALIZE_FAILED = 0x02b9,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_INVALID_CONFIGURATION = 0x02ba,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_SUPPORTED_ON_DEVICE = 0x02bb,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLRESOURCEPROPERTIES = 0x02bc,
+ D3D12_MESSAGE_ID_CREATERESOURCEANDHEAP_NULLHEAP = 0x02bd,
+ D3D12_MESSAGE_ID_GETRESOURCEALLOCATIONINFO_INVALIDRDESCS = 0x02be,
+ D3D12_MESSAGE_ID_MAKERESIDENT_NULLOBJECTARRAY = 0x02bf,
+ D3D12_MESSAGE_ID_EVICT_NULLOBJECTARRAY = 0x02c1,
+ D3D12_MESSAGE_ID_SET_DESCRIPTOR_TABLE_INVALID = 0x02c4,
+ D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_INVALID = 0x02c5,
+ D3D12_MESSAGE_ID_SET_ROOT_CONSTANT_BUFFER_VIEW_INVALID = 0x02c6,
+ D3D12_MESSAGE_ID_SET_ROOT_SHADER_RESOURCE_VIEW_INVALID = 0x02c7,
+ D3D12_MESSAGE_ID_SET_ROOT_UNORDERED_ACCESS_VIEW_INVALID = 0x02c8,
+ D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID_DESC = 0x02c9,
+ D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID_DESC = 0x02cb,
+ D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID_DESC = 0x02cd,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDDIMENSIONALITY = 0x02ce,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDLAYOUT = 0x02cf,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDDIMENSIONALITY = 0x02d0,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDALIGNMENT = 0x02d1,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS = 0x02d2,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDSAMPLEDESC = 0x02d3,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDLAYOUT = 0x02d4,
+ D3D12_MESSAGE_ID_SET_INDEX_BUFFER_INVALID = 0x02d5,
+ D3D12_MESSAGE_ID_SET_VERTEX_BUFFERS_INVALID = 0x02d6,
+ D3D12_MESSAGE_ID_SET_STREAM_OUTPUT_BUFFERS_INVALID = 0x02d7,
+ D3D12_MESSAGE_ID_SET_RENDER_TARGETS_INVALID = 0x02d8,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_INVALID_PARAMETERS = 0x02d9,
+ D3D12_MESSAGE_ID_BEGIN_END_QUERY_INVALID_PARAMETERS = 0x02db,
+ D3D12_MESSAGE_ID_CLOSE_COMMAND_LIST_OPEN_QUERY = 0x02dc,
+ D3D12_MESSAGE_ID_RESOLVE_QUERY_DATA_INVALID_PARAMETERS = 0x02dd,
+ D3D12_MESSAGE_ID_SET_PREDICATION_INVALID_PARAMETERS = 0x02de,
+ D3D12_MESSAGE_ID_TIMESTAMPS_NOT_SUPPORTED = 0x02df,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDFORMAT = 0x02e1,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDFORMAT = 0x02e2,
+ D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDSUBRESOURCERANGE = 0x02e3,
+ D3D12_MESSAGE_ID_GETCOPYABLEFOOTPRINTS_INVALIDBASEOFFSET = 0x02e4,
+ D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDSUBRESOURCERANGE = 0x02e3,
+ D3D12_MESSAGE_ID_GETCOPYABLELAYOUT_INVALIDBASEOFFSET = 0x02e4,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_INVALID_HEAP = 0x02e5,
+ D3D12_MESSAGE_ID_CREATE_SAMPLER_INVALID = 0x02e6,
+ D3D12_MESSAGE_ID_CREATECOMMANDSIGNATURE_INVALID = 0x02e7,
+ D3D12_MESSAGE_ID_EXECUTE_INDIRECT_INVALID_PARAMETERS = 0x02e8,
+ D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_RESOURCE_DIMENSION = 0x02e9,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUE = 0x032f,
+ D3D12_MESSAGE_ID_CREATERESOURCE_UNRECOGNIZEDCLEARVALUEFORMAT = 0x0330,
+ D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDCLEARVALUEFORMAT = 0x0331,
+ D3D12_MESSAGE_ID_CREATERESOURCE_CLEARVALUEDENORMFLUSH = 0x0332,
+ D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE = 0x0334,
+ D3D12_MESSAGE_ID_CLEARDEPTHSTENCILVIEW_MISMATCHINGCLEARVALUE = 0x0335,
+ D3D12_MESSAGE_ID_MAP_INVALIDHEAP = 0x0336,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDHEAP = 0x0337,
+ D3D12_MESSAGE_ID_MAP_INVALIDRESOURCE = 0x0338,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDRESOURCE = 0x0339,
+ D3D12_MESSAGE_ID_MAP_INVALIDSUBRESOURCE = 0x033a,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDSUBRESOURCE = 0x033b,
+ D3D12_MESSAGE_ID_MAP_INVALIDRANGE = 0x033c,
+ D3D12_MESSAGE_ID_UNMAP_INVALIDRANGE = 0x033d,
+ D3D12_MESSAGE_ID_MAP_INVALIDDATAPOINTER = 0x0340,
+ D3D12_MESSAGE_ID_MAP_INVALIDARG_RETURN = 0x0341,
+ D3D12_MESSAGE_ID_MAP_OUTOFMEMORY_RETURN = 0x0342,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_BUNDLENOTSUPPORTED = 0x0343,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_COMMANDLISTMISMATCH = 0x0344,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_OPENCOMMANDLIST = 0x0345,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST = 0x0346,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLDST = 0x0347,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDDSTRESOURCEDIMENSION = 0x0348,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_DSTRANGEOUTOFBOUNDS = 0x0349,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_NULLSRC = 0x034a,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDSRCRESOURCEDIMENSION = 0x034b,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_SRCRANGEOUTOFBOUNDS = 0x034c,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALIDCOPYFLAGS = 0x034d,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLDST = 0x034e,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTTYPE = 0x034f,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCEDIMENSION = 0x0350,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTRESOURCE = 0x0351,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTSUBRESOURCE = 0x0352,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTOFFSET = 0x0353,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDDSTFORMAT = 0x0354,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTFORMAT = 0x0355,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDIMENSIONS = 0x0356,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTROWPITCH = 0x0357,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTPLACEMENT = 0x0358,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTDSPLACEDFOOTPRINTFORMAT = 0x0359,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_DSTREGIONOUTOFBOUNDS = 0x035a,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_NULLSRC = 0x035b,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCTYPE = 0x035c,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCEDIMENSION = 0x035d,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCRESOURCE = 0x035e,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCSUBRESOURCE = 0x035f,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCOFFSET = 0x0360,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_UNRECOGNIZEDSRCFORMAT = 0x0361,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCFORMAT = 0x0362,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDIMENSIONS = 0x0363,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCROWPITCH = 0x0364,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCPLACEMENT = 0x0365,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCDSPLACEDFOOTPRINTFORMAT = 0x0366,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_SRCREGIONOUTOFBOUNDS = 0x0367,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDDSTCOORDINATES = 0x0368,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDSRCBOX = 0x0369,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_FORMATMISMATCH = 0x036a,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_EMPTYBOX = 0x036b,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_INVALIDCOPYFLAGS = 0x036c,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SUBRESOURCE_INDEX = 0x036d,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_FORMAT = 0x036e,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_MISMATCH = 0x036f,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALID_SAMPLE_COUNT = 0x0370,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_INVALID_SHADER = 0x0371,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_CS_ROOT_SIGNATURE_MISMATCH = 0x0372,
+ D3D12_MESSAGE_ID_CREATECOMPUTEPIPELINESTATE_MISSING_ROOT_SIGNATURE = 0x0373,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALIDCACHEDBLOB = 0x0374,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBADAPTERMISMATCH = 0x0375,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDRIVERVERSIONMISMATCH = 0x0376,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBDESCMISMATCH = 0x0377,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CACHEDBLOBIGNORED = 0x0378,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDHEAP = 0x0379,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDRESOURCE = 0x037a,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDBOX = 0x037b,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_INVALIDSUBRESOURCE = 0x037c,
+ D3D12_MESSAGE_ID_WRITETOSUBRESOURCE_EMPTYBOX = 0x037d,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDHEAP = 0x037e,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDRESOURCE = 0x037f,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDBOX = 0x0380,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_INVALIDSUBRESOURCE = 0x0381,
+ D3D12_MESSAGE_ID_READFROMSUBRESOURCE_EMPTYBOX = 0x0382,
+ D3D12_MESSAGE_ID_TOO_MANY_NODES_SPECIFIED = 0x0383,
+ D3D12_MESSAGE_ID_INVALID_NODE_INDEX = 0x0384,
+ D3D12_MESSAGE_ID_GETHEAPPROPERTIES_INVALIDRESOURCE = 0x0385,
+ D3D12_MESSAGE_ID_NODE_MASK_MISMATCH = 0x0386,
+ D3D12_MESSAGE_ID_COMMAND_LIST_OUTOFMEMORY = 0x0387,
+ D3D12_MESSAGE_ID_COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES = 0x0388,
+ D3D12_MESSAGE_ID_COMMAND_LIST_TOO_MANY_SWAPCHAIN_REFERENCES = 0x0389,
+ D3D12_MESSAGE_ID_COMMAND_QUEUE_TOO_MANY_SWAPCHAIN_REFERENCES = 0x038a,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_WRONGSWAPCHAINBUFFERREFERENCE = 0x038b,
+ D3D12_MESSAGE_ID_COMMAND_LIST_SETRENDERTARGETS_INVALIDNUMRENDERTARGETS = 0x038c,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_TYPE = 0x038d,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_FLAGS = 0x038e,
+ D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFLAGS = 0x038f,
+ D3D12_MESSAGE_ID_CREATESHAREDRESOURCE_INVALIDFORMAT = 0x0390,
+ D3D12_MESSAGE_ID_CREATESHAREDHEAP_INVALIDFLAGS = 0x0391,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_UNRECOGNIZEDPROPERTIES = 0x0392,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDSIZE = 0x0393,
+ D3D12_MESSAGE_ID_REFLECTSHAREDPROPERTIES_INVALIDOBJECT = 0x0394,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDOBJECT = 0x0395,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_INVALIDKEY = 0x0396,
+ D3D12_MESSAGE_ID_KEYEDMUTEX_WRONGSTATE = 0x0397,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_INVALID_PRIORITY = 0x0398,
+ D3D12_MESSAGE_ID_OBJECT_DELETED_WHILE_STILL_IN_USE = 0x0399,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_FLAGS = 0x039a,
+ D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_HAS_NO_RESOURCE = 0x039b,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DRAW_RENDER_TARGET_DELETED = 0x039c,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_ALL_RENDER_TARGETS_HAVE_UNKNOWN_FORMAT = 0x039d,
+ D3D12_MESSAGE_ID_HEAP_ADDRESS_RANGE_INTERSECTS_MULTIPLE_BUFFERS = 0x039e,
+ D3D12_MESSAGE_ID_EXECUTECOMMANDLISTS_GPU_WRITTEN_READBACK_RESOURCE_MAPPED = 0x039f,
+ D3D12_MESSAGE_ID_UNMAP_RANGE_NOT_EMPTY = 0x03a1,
+ D3D12_MESSAGE_ID_MAP_INVALID_NULLRANGE = 0x03a2,
+ D3D12_MESSAGE_ID_UNMAP_INVALID_NULLRANGE = 0x03a3,
+ D3D12_MESSAGE_ID_NO_GRAPHICS_API_SUPPORT = 0x03a4,
+ D3D12_MESSAGE_ID_NO_COMPUTE_API_SUPPORT = 0x03a5,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_RESOURCE_FLAGS_NOT_SUPPORTED = 0x03a6,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_ARGUMENT_UNINITIALIZED = 0x03a7,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_HEAP_INDEX_OUT_OF_BOUNDS = 0x03a8,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TABLE_REGISTER_INDEX_OUT_OF_BOUNDS = 0x03a9,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_UNINITIALIZED = 0x03aa,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_DESCRIPTOR_TYPE_MISMATCH = 0x03ab,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SRV_RESOURCE_DIMENSION_MISMATCH = 0x03ac,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UAV_RESOURCE_DIMENSION_MISMATCH = 0x03ad,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INCOMPATIBLE_RESOURCE_STATE = 0x03ae,
+ D3D12_MESSAGE_ID_COPYRESOURCE_NULLDST = 0x03af,
+ D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDDSTRESOURCE = 0x03b0,
+ D3D12_MESSAGE_ID_COPYRESOURCE_NULLSRC = 0x03b1,
+ D3D12_MESSAGE_ID_COPYRESOURCE_INVALIDSRCRESOURCE = 0x03b2,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLDST = 0x03b3,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDDSTRESOURCE = 0x03b4,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_NULLSRC = 0x03b5,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_INVALIDSRCRESOURCE = 0x03b6,
+ D3D12_MESSAGE_ID_PIPELINE_STATE_TYPE_MISMATCH = 0x03b7,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_NOT_SET = 0x03b8,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DISPATCH_ROOT_SIGNATURE_MISMATCH = 0x03b9,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_ZERO_BARRIERS = 0x03ba,
+ D3D12_MESSAGE_ID_BEGIN_END_EVENT_MISMATCH = 0x03bb,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_POSSIBLE_BEFORE_AFTER_MISMATCH = 0x03bc,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_BEGIN_END = 0x03bd,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_INVALID_RESOURCE = 0x03be,
+ D3D12_MESSAGE_ID_USE_OF_ZERO_REFCOUNT_OBJECT = 0x03bf,
+ D3D12_MESSAGE_ID_OBJECT_EVICTED_WHILE_STILL_IN_USE = 0x03c0,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_ROOT_DESCRIPTOR_ACCESS_OUT_OF_BOUNDS = 0x03c1,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB = 0x03c2,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_DRIVERVERSIONMISMATCH = 0x03c3,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_ADAPTERVERSIONMISMATCH = 0x03c4,
+ D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_UNSUPPORTED = 0x03c5,
+ D3D12_MESSAGE_ID_CREATE_PIPELINELIBRARY = 0x03c6,
+ D3D12_MESSAGE_ID_LIVE_PIPELINELIBRARY = 0x03c7,
+ D3D12_MESSAGE_ID_DESTROY_PIPELINELIBRARY = 0x03c8,
+ D3D12_MESSAGE_ID_STOREPIPELINE_NONAME = 0x03c9,
+ D3D12_MESSAGE_ID_STOREPIPELINE_DUPLICATENAME = 0x03ca,
+ D3D12_MESSAGE_ID_LOADPIPELINE_NAMENOTFOUND = 0x03cb,
+ D3D12_MESSAGE_ID_LOADPIPELINE_INVALIDDESC = 0x03cc,
+ D3D12_MESSAGE_ID_PIPELINELIBRARY_SERIALIZE_NOTENOUGHMEMORY = 0x03cd,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_PS_OUTPUT_RT_OUTPUT_MISMATCH = 0x03ce,
+ D3D12_MESSAGE_ID_SETEVENTONMULTIPLEFENCECOMPLETION_INVALIDFLAGS = 0x03cf,
+ D3D12_MESSAGE_ID_CREATE_QUEUE_VIDEO_NOT_SUPPORTED = 0x03d0,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_ALLOCATOR_VIDEO_NOT_SUPPORTED = 0x03d1,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_VIDEO_DECODE_STATISTICS_NOT_SUPPORTED = 0x03d2,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDLIST = 0x03d3,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODER = 0x03d4,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODESTREAM = 0x03d5,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDLIST = 0x03d6,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODER = 0x03d7,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODESTREAM = 0x03d8,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDLIST = 0x03d9,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODER = 0x03da,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODESTREAM = 0x03db,
+ D3D12_MESSAGE_ID_DECODE_FRAME_INVALID_PARAMETERS = 0x03dc,
+ D3D12_MESSAGE_ID_DEPRECATED_API = 0x03dd,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE = 0x03de,
+ D3D12_MESSAGE_ID_COMMAND_LIST_DESCRIPTOR_TABLE_NOT_SET = 0x03df,
+ D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_CONSTANT_BUFFER_VIEW_NOT_SET = 0x03e0,
+ D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_SHADER_RESOURCE_VIEW_NOT_SET = 0x03e1,
+ D3D12_MESSAGE_ID_COMMAND_LIST_ROOT_UNORDERED_ACCESS_VIEW_NOT_SET = 0x03e2,
+ D3D12_MESSAGE_ID_DISCARD_INVALID_SUBRESOURCE_RANGE = 0x03e3,
+ D3D12_MESSAGE_ID_DISCARD_ONE_SUBRESOURCE_FOR_MIPS_WITH_RECTS = 0x03e4,
+ D3D12_MESSAGE_ID_DISCARD_NO_RECTS_FOR_NON_TEXTURE2D = 0x03e5,
+ D3D12_MESSAGE_ID_COPY_ON_SAME_SUBRESOURCE = 0x03e6,
+ D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PAGEABLE = 0x03e7,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_UNSUPPORTED = 0x03e8,
+ D3D12_MESSAGE_ID_STATIC_DESCRIPTOR_INVALID_DESCRIPTOR_CHANGE = 0x03e9,
+ D3D12_MESSAGE_ID_DATA_STATIC_DESCRIPTOR_INVALID_DATA_CHANGE = 0x03ea,
+ D3D12_MESSAGE_ID_DATA_STATIC_WHILE_SET_AT_EXECUTE_DESCRIPTOR_INVALID_DATA_CHANGE = 0x03eb,
+ D3D12_MESSAGE_ID_EXECUTE_BUNDLE_STATIC_DESCRIPTOR_DATA_STATIC_NOT_SET = 0x03ec,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_ACCESS_OUT_OF_BOUNDS = 0x03ed,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_SAMPLER_MODE_MISMATCH = 0x03ee,
+ D3D12_MESSAGE_ID_CREATE_FENCE_INVALID_FLAGS = 0x03ef,
+ D3D12_MESSAGE_ID_RESOURCE_BARRIER_DUPLICATE_SUBRESOURCE_TRANSITIONS = 0x03f0,
+ D3D12_MESSAGE_ID_SETRESIDENCYPRIORITY_INVALID_PRIORITY = 0x03f1,
+ D3D12_MESSAGE_ID_CREATE_DESCRIPTOR_HEAP_LARGE_NUM_DESCRIPTORS = 0x03f5,
+ D3D12_MESSAGE_ID_BEGIN_EVENT = 0x03f6,
+ D3D12_MESSAGE_ID_END_EVENT = 0x03f7,
+ D3D12_MESSAGE_ID_CREATEDEVICE_DEBUG_LAYER_STARTUP_OPTIONS = 0x03f8,
+ D3D12_MESSAGE_ID_CREATEDEPTHSTENCILSTATE_DEPTHBOUNDSTEST_UNSUPPORTED = 0x03f9,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_DUPLICATE_SUBOBJECT = 0x03fa,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_UNKNOWN_SUBOBJECT = 0x03fb,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_ZERO_SIZE_STREAM = 0x03fc,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_INVALID_STREAM = 0x03fd,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_CANNOT_DEDUCE_TYPE = 0x03fe,
+ D3D12_MESSAGE_ID_COMMAND_LIST_STATIC_DESCRIPTOR_RESOURCE_DIMENSION_MISMATCH = 0x03ff,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_PRIVILEGE_FOR_GLOBAL_REALTIME = 0x0400,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_QUEUE_INSUFFICIENT_HARDWARE_SUPPORT_FOR_GLOBAL_REALTIME = 0x0401,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_ARCHITECTURE = 0x0402,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DST = 0x0403,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE_DIMENSION = 0x0404,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DST_RANGE_OUT_OF_BOUNDS = 0x0405,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_SRC = 0x0406,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE_DIMENSION = 0x0407,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_SRC_RANGE_OUT_OF_BOUNDS = 0x0408,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_OFFSET_ALIGNMENT = 0x0409,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_RESOURCES = 0x040a,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_NULL_DEPENDENT_SUBRESOURCE_RANGES = 0x040b,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_RESOURCE = 0x040c,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DEPENDENT_SUBRESOURCE_RANGE = 0x040d,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_SUBRESOURCE_OUT_OF_BOUNDS = 0x040e,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_DEPENDENT_RANGE_OUT_OF_BOUNDS = 0x040f,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_ZERO_DEPENDENCIES = 0x0410,
+ D3D12_MESSAGE_ID_DEVICE_CREATE_SHARED_HANDLE_INVALIDARG = 0x0411,
+ D3D12_MESSAGE_ID_DESCRIPTOR_HANDLE_WITH_INVALID_RESOURCE = 0x0412,
+ D3D12_MESSAGE_ID_SETDEPTHBOUNDS_INVALIDARGS = 0x0413,
+ D3D12_MESSAGE_ID_GPU_BASED_VALIDATION_RESOURCE_STATE_IMPRECISE = 0x0414,
+ D3D12_MESSAGE_ID_COMMAND_LIST_PIPELINE_STATE_NOT_SET = 0x0415,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_SHADER_MODEL_MISMATCH = 0x0416,
+ D3D12_MESSAGE_ID_OBJECT_ACCESSED_WHILE_STILL_IN_USE = 0x0417,
+ D3D12_MESSAGE_ID_PROGRAMMABLE_MSAA_UNSUPPORTED = 0x0418,
+ D3D12_MESSAGE_ID_SETSAMPLEPOSITIONS_INVALIDARGS = 0x0419,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCEREGION_INVALID_RECT = 0x041a,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODECOMMANDQUEUE = 0x041b,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDLIST = 0x041c,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSCOMMANDQUEUE = 0x041d,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODECOMMANDQUEUE = 0x041e,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDLIST = 0x041f,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSCOMMANDQUEUE = 0x0420,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODECOMMANDQUEUE = 0x0421,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDLIST = 0x0422,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSCOMMANDQUEUE = 0x0423,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSOR = 0x0424,
+ D3D12_MESSAGE_ID_CREATE_VIDEOPROCESSSTREAM = 0x0425,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSOR = 0x0426,
+ D3D12_MESSAGE_ID_LIVE_VIDEOPROCESSSTREAM = 0x0427,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSOR = 0x0428,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOPROCESSSTREAM = 0x0429,
+ D3D12_MESSAGE_ID_PROCESS_FRAME_INVALID_PARAMETERS = 0x042a,
+ D3D12_MESSAGE_ID_COPY_INVALIDLAYOUT = 0x042b,
+ D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION = 0x042c,
+ D3D12_MESSAGE_ID_CREATE_CRYPTO_SESSION_POLICY = 0x042d,
+ D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION = 0x042e,
+ D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION = 0x042f,
+ D3D12_MESSAGE_ID_LIVE_CRYPTO_SESSION_POLICY = 0x0430,
+ D3D12_MESSAGE_ID_LIVE_PROTECTED_RESOURCE_SESSION = 0x0431,
+ D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION = 0x0432,
+ D3D12_MESSAGE_ID_DESTROY_CRYPTO_SESSION_POLICY = 0x0433,
+ D3D12_MESSAGE_ID_DESTROY_PROTECTED_RESOURCE_SESSION = 0x0434,
+ D3D12_MESSAGE_ID_PROTECTED_RESOURCE_SESSION_UNSUPPORTED = 0x0435,
+ D3D12_MESSAGE_ID_FENCE_INVALIDOPERATION = 0x0436,
+ D3D12_MESSAGE_ID_CREATEQUERY_HEAP_COPY_QUEUE_TIMESTAMPS_NOT_SUPPORTED = 0x0437,
+ D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_DEFERRED = 0x0438,
+ D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMFIRSTUSE = 0x0439,
+ D3D12_MESSAGE_ID_SAMPLEPOSITIONS_MISMATCH_RECORDTIME_ASSUMEDFROMCLEAR = 0x043a,
+ D3D12_MESSAGE_ID_CREATE_VIDEODECODERHEAP = 0x043b,
+ D3D12_MESSAGE_ID_LIVE_VIDEODECODERHEAP = 0x043c,
+ D3D12_MESSAGE_ID_DESTROY_VIDEODECODERHEAP = 0x043d,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDARG_RETURN = 0x043e,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_OUTOFMEMORY_RETURN = 0x043f,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDADDRESS = 0x0440,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_INVALIDHANDLE = 0x0441,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_DEST = 0x0442,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_MODE = 0x0443,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_INVALID_ALIGNMENT = 0x0444,
+ D3D12_MESSAGE_ID_WRITEBUFFERIMMEDIATE_NOT_SUPPORTED = 0x0445,
+ D3D12_MESSAGE_ID_SETVIEWINSTANCEMASK_INVALIDARGS = 0x0446,
+ D3D12_MESSAGE_ID_VIEW_INSTANCING_UNSUPPORTED = 0x0447,
+ D3D12_MESSAGE_ID_VIEW_INSTANCING_INVALIDARGS = 0x0448,
+ D3D12_MESSAGE_ID_COPYTEXTUREREGION_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 0x0449,
+ D3D12_MESSAGE_ID_COPYRESOURCE_MISMATCH_DECODE_REFERENCE_ONLY_FLAG = 0x044a,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_FAILURE = 0x044b,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_DECODE_HEAP_CAPS_UNSUPPORTED = 0x044c,
+ D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_INVALID_INPUT = 0x044d,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_DECODER_UNSUPPORTED = 0x044e,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_METADATA_ERROR = 0x044f,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_VIEW_INSTANCING_VERTEX_SIZE_EXCEEDED = 0x0450,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_RUNTIME_INTERNAL_ERROR = 0x0451,
+ D3D12_MESSAGE_ID_NO_VIDEO_API_SUPPORT = 0x0452,
+ D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_INVALID_INPUT = 0x0453,
+ D3D12_MESSAGE_ID_CREATE_VIDEO_PROCESSOR_CAPS_FAILURE = 0x0454,
+ D3D12_MESSAGE_ID_VIDEO_PROCESS_SUPPORT_UNSUPPORTED_FORMAT = 0x0455,
+ D3D12_MESSAGE_ID_VIDEO_DECODE_FRAME_INVALID_ARGUMENT = 0x0456,
+ D3D12_MESSAGE_ID_ENQUEUE_MAKE_RESIDENT_INVALID_FLAGS = 0x0457,
+ D3D12_MESSAGE_ID_OPENEXISTINGHEAP_UNSUPPORTED = 0x0458,
+ D3D12_MESSAGE_ID_VIDEO_PROCESS_FRAMES_INVALID_ARGUMENT = 0x0459,
+ D3D12_MESSAGE_ID_VIDEO_DECODE_SUPPORT_UNSUPPORTED = 0x045a,
+ D3D12_MESSAGE_ID_CREATE_COMMANDRECORDER = 0x045b,
+ D3D12_MESSAGE_ID_LIVE_COMMANDRECORDER = 0x045c,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDRECORDER = 0x045d,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_VIDEO_NOT_SUPPORTED = 0x045e,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_SUPPORT_FLAGS = 0x045f,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_INVALID_FLAGS = 0x0460,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_RECORDER_MORE_RECORDERS_THAN_LOGICAL_PROCESSORS = 0x0461,
+ D3D12_MESSAGE_ID_CREATE_COMMANDPOOL = 0x0462,
+ D3D12_MESSAGE_ID_LIVE_COMMANDPOOL = 0x0463,
+ D3D12_MESSAGE_ID_DESTROY_COMMANDPOOL = 0x0464,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_POOL_INVALID_FLAGS = 0x0465,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_VIDEO_NOT_SUPPORTED = 0x0466,
+ D3D12_MESSAGE_ID_COMMAND_RECORDER_SUPPORT_FLAGS_MISMATCH = 0x0467,
+ D3D12_MESSAGE_ID_COMMAND_RECORDER_CONTENTION = 0x0468,
+ D3D12_MESSAGE_ID_COMMAND_RECORDER_USAGE_WITH_CREATECOMMANDLIST_COMMAND_LIST = 0x0469,
+ D3D12_MESSAGE_ID_COMMAND_ALLOCATOR_USAGE_WITH_CREATECOMMANDLIST1_COMMAND_LIST = 0x046a,
+ D3D12_MESSAGE_ID_CANNOT_EXECUTE_EMPTY_COMMAND_LIST = 0x046b,
+ D3D12_MESSAGE_ID_CANNOT_RESET_COMMAND_POOL_WITH_OPEN_COMMAND_LISTS = 0x046c,
+ D3D12_MESSAGE_ID_CANNOT_USE_COMMAND_RECORDER_WITHOUT_CURRENT_TARGET = 0x046d,
+ D3D12_MESSAGE_ID_CANNOT_CHANGE_COMMAND_RECORDER_TARGET_WHILE_RECORDING = 0x046e,
+ D3D12_MESSAGE_ID_COMMAND_POOL_SYNC = 0x046f,
+ D3D12_MESSAGE_ID_EVICT_UNDERFLOW = 0x0470,
+ D3D12_MESSAGE_ID_CREATE_META_COMMAND = 0x0471,
+ D3D12_MESSAGE_ID_LIVE_META_COMMAND = 0x0472,
+ D3D12_MESSAGE_ID_DESTROY_META_COMMAND = 0x0473,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_DST_RESOURCE = 0x0474,
+ D3D12_MESSAGE_ID_COPYBUFFERREGION_INVALID_SRC_RESOURCE = 0x0475,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_DST_RESOURCE = 0x0476,
+ D3D12_MESSAGE_ID_ATOMICCOPYBUFFER_INVALID_SRC_RESOURCE = 0x0477,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_BUFFER = 0x0478,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_NULL_RESOURCE_DESC = 0x0479,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_UNSUPPORTED = 0x047a,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_DIMENSION = 0x047b,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_FLAGS = 0x047c,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_BUFFER_OFFSET = 0x047d,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_DIMENSION = 0x047e,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_INVALID_RESOURCE_FLAGS = 0x047f,
+ D3D12_MESSAGE_ID_CREATEPLACEDRESOURCEONBUFFER_OUTOFMEMORY_RETURN = 0x0480,
+ D3D12_MESSAGE_ID_CANNOT_CREATE_GRAPHICS_AND_VIDEO_COMMAND_RECORDER = 0x0481,
+ D3D12_MESSAGE_ID_UPDATETILEMAPPINGS_POSSIBLY_MISMATCHING_PROPERTIES = 0x0482,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE = 0x0483,
+ D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INCOMPATIBLE_WITH_STRUCTURED_BUFFERS = 0x0484,
+ D3D12_MESSAGE_ID_COMPUTE_ONLY_DEVICE_OPERATION_UNSUPPORTED = 0x0485,
+ D3D12_MESSAGE_ID_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 0x0486,
+ D3D12_MESSAGE_ID_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_INVALID = 0x0487,
+ D3D12_MESSAGE_ID_COPY_RAYTRACING_ACCELERATION_STRUCTURE_INVALID = 0x0488,
+ D3D12_MESSAGE_ID_DISPATCH_RAYS_INVALID = 0x0489,
+ D3D12_MESSAGE_ID_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_INVALID = 0x048a,
+ D3D12_MESSAGE_ID_CREATE_LIFETIMETRACKER = 0x048b,
+ D3D12_MESSAGE_ID_LIVE_LIFETIMETRACKER = 0x048c,
+ D3D12_MESSAGE_ID_DESTROY_LIFETIMETRACKER = 0x048d,
+ D3D12_MESSAGE_ID_DESTROYOWNEDOBJECT_OBJECTNOTOWNED = 0x048e,
+ D3D12_MESSAGE_ID_CREATE_TRACKEDWORKLOAD = 0x048f,
+ D3D12_MESSAGE_ID_LIVE_TRACKEDWORKLOAD = 0x0490,
+ D3D12_MESSAGE_ID_DESTROY_TRACKEDWORKLOAD = 0x0491,
+ D3D12_MESSAGE_ID_RENDER_PASS_ERROR = 0x0492,
+ D3D12_MESSAGE_ID_META_COMMAND_ID_INVALID = 0x0493,
+ D3D12_MESSAGE_ID_META_COMMAND_UNSUPPORTED_PARAMS = 0x0494,
+ D3D12_MESSAGE_ID_META_COMMAND_FAILED_ENUMERATION = 0x0495,
+ D3D12_MESSAGE_ID_META_COMMAND_PARAMETER_SIZE_MISMATCH = 0x0496,
+ D3D12_MESSAGE_ID_UNINITIALIZED_META_COMMAND = 0x0497,
+ D3D12_MESSAGE_ID_META_COMMAND_INVALID_GPU_VIRTUAL_ADDRESS = 0x0498,
+ D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDLIST = 0x0499,
+ D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDLIST = 0x049a,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDLIST = 0x049b,
+ D3D12_MESSAGE_ID_CREATE_VIDEOENCODECOMMANDQUEUE = 0x049c,
+ D3D12_MESSAGE_ID_LIVE_VIDEOENCODECOMMANDQUEUE = 0x049d,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOENCODECOMMANDQUEUE = 0x049e,
+ D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONESTIMATOR = 0x049f,
+ D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONESTIMATOR = 0x04a0,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONESTIMATOR = 0x04a1,
+ D3D12_MESSAGE_ID_CREATE_VIDEOMOTIONVECTORHEAP = 0x04a2,
+ D3D12_MESSAGE_ID_LIVE_VIDEOMOTIONVECTORHEAP = 0x04a3,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOMOTIONVECTORHEAP = 0x04a4,
+ D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOADS = 0x04a5,
+ D3D12_MESSAGE_ID_MULTIPLE_TRACKED_WORKLOAD_PAIRS = 0x04a6,
+ D3D12_MESSAGE_ID_OUT_OF_ORDER_TRACKED_WORKLOAD_PAIR = 0x04a7,
+ D3D12_MESSAGE_ID_CANNOT_ADD_TRACKED_WORKLOAD = 0x04a8,
+ D3D12_MESSAGE_ID_INCOMPLETE_TRACKED_WORKLOAD_PAIR = 0x04a9,
+ D3D12_MESSAGE_ID_CREATE_STATE_OBJECT_ERROR = 0x04aa,
+ D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_ERROR = 0x04ab,
+ D3D12_MESSAGE_ID_GET_SHADER_STACK_SIZE_ERROR = 0x04ac,
+ D3D12_MESSAGE_ID_GET_PIPELINE_STACK_SIZE_ERROR = 0x04ad,
+ D3D12_MESSAGE_ID_SET_PIPELINE_STACK_SIZE_ERROR = 0x04ae,
+ D3D12_MESSAGE_ID_GET_SHADER_IDENTIFIER_SIZE_INVALID = 0x04af,
+ D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_INVALID = 0x04b0,
+ D3D12_MESSAGE_ID_CHECK_DRIVER_MATCHING_IDENTIFIER_DRIVER_REPORTED_ISSUE = 0x04b1,
+ D3D12_MESSAGE_ID_RENDER_PASS_INVALID_RESOURCE_BARRIER = 0x04b2,
+ D3D12_MESSAGE_ID_RENDER_PASS_DISALLOWED_API_CALLED = 0x04b3,
+ D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_NEST_RENDER_PASSES = 0x04b4,
+ D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_END_WITHOUT_BEGIN = 0x04b5,
+ D3D12_MESSAGE_ID_RENDER_PASS_CANNOT_CLOSE_COMMAND_LIST = 0x04b6,
+ D3D12_MESSAGE_ID_RENDER_PASS_GPU_WORK_WHILE_SUSPENDED = 0x04b7,
+ D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_SUSPEND_RESUME = 0x04b8,
+ D3D12_MESSAGE_ID_RENDER_PASS_NO_PRIOR_SUSPEND_WITHIN_EXECUTECOMMANDLISTS = 0x04b9,
+ D3D12_MESSAGE_ID_RENDER_PASS_NO_SUBSEQUENT_RESUME_WITHIN_EXECUTECOMMANDLISTS = 0x04ba,
+ D3D12_MESSAGE_ID_TRACKED_WORKLOAD_COMMAND_QUEUE_MISMATCH = 0x04bb,
+ D3D12_MESSAGE_ID_TRACKED_WORKLOAD_NOT_SUPPORTED = 0x04bc,
+ D3D12_MESSAGE_ID_RENDER_PASS_MISMATCHING_NO_ACCESS = 0x04bd,
+ D3D12_MESSAGE_ID_RENDER_PASS_UNSUPPORTED_RESOLVE = 0x04be,
+ D3D12_MESSAGE_ID_CLEARUNORDEREDACCESSVIEW_INVALID_RESOURCE_PTR = 0x04bf,
+ D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_SIGNAL = 0x04c0,
+ D3D12_MESSAGE_ID_WINDOWS7_FENCE_OUTOFORDER_WAIT = 0x04c1,
+ D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_ESTIMATOR_INVALID_ARGUMENT = 0x04c2,
+ D3D12_MESSAGE_ID_VIDEO_CREATE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 0x04c3,
+ D3D12_MESSAGE_ID_ESTIMATE_MOTION_INVALID_ARGUMENT = 0x04c4,
+ D3D12_MESSAGE_ID_RESOLVE_MOTION_VECTOR_HEAP_INVALID_ARGUMENT = 0x04c5,
+ D3D12_MESSAGE_ID_GETGPUVIRTUALADDRESS_INVALID_HEAP_TYPE = 0x04c6,
+ D3D12_MESSAGE_ID_SET_BACKGROUND_PROCESSING_MODE_INVALID_ARGUMENT = 0x04c7,
+ D3D12_MESSAGE_ID_CREATE_COMMAND_LIST_INVALID_COMMAND_LIST_TYPE_FOR_FEATURE_LEVEL = 0x04c8,
+ D3D12_MESSAGE_ID_CREATE_VIDEOEXTENSIONCOMMAND = 0x04c9,
+ D3D12_MESSAGE_ID_LIVE_VIDEOEXTENSIONCOMMAND = 0x04ca,
+ D3D12_MESSAGE_ID_DESTROY_VIDEOEXTENSIONCOMMAND = 0x04cb,
+ D3D12_MESSAGE_ID_INVALID_VIDEO_EXTENSION_COMMAND_ID = 0x04cc,
+ D3D12_MESSAGE_ID_VIDEO_EXTENSION_COMMAND_INVALID_ARGUMENT = 0x04cd,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_NOT_UNIQUE_IN_DXIL_LIBRARY = 0x04ce,
+ D3D12_MESSAGE_ID_VARIABLE_SHADING_RATE_NOT_ALLOWED_WITH_TIR = 0x04cf,
+ D3D12_MESSAGE_ID_GEOMETRY_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 0x04d0,
+ D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_SHADING_RATE = 0x04d1,
+ D3D12_MESSAGE_ID_RSSETSHADING_RATE_SHADING_RATE_NOT_PERMITTED_BY_CAP = 0x04d2,
+ D3D12_MESSAGE_ID_RSSETSHADING_RATE_INVALID_COMBINER = 0x04d3,
+ D3D12_MESSAGE_ID_RSSETSHADINGRATEIMAGE_REQUIRES_TIER_2 = 0x04d4,
+ D3D12_MESSAGE_ID_RSSETSHADINGRATE_REQUIRES_TIER_1 = 0x04d5,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_FORMAT = 0x04d6,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_ARRAY_SIZE = 0x04d7,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_MIP_LEVEL = 0x04d8,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_COUNT = 0x04d9,
+ D3D12_MESSAGE_ID_SHADING_RATE_IMAGE_INCORRECT_SAMPLE_QUALITY = 0x04da,
+ D3D12_MESSAGE_ID_NON_RETAIL_SHADER_MODEL_WONT_VALIDATE = 0x04db,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_ROOT_SIGNATURE_MISMATCH = 0x04dc,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_ROOT_SIGNATURE_MISMATCH = 0x04dd,
+ D3D12_MESSAGE_ID_ADD_TO_STATE_OBJECT_ERROR = 0x04de,
+ D3D12_MESSAGE_ID_CREATE_PROTECTED_RESOURCE_SESSION_INVALID_ARGUMENT = 0x04df,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_PSO_DESC_MISMATCH = 0x04e0,
+ D3D12_MESSAGE_ID_CREATEPIPELINESTATE_MS_INCOMPLETE_TYPE = 0x04e1,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_AS_NOT_MS_MISMATCH = 0x04e2,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_MS_NOT_PS_MISMATCH = 0x04e3,
+ D3D12_MESSAGE_ID_NONZERO_SAMPLER_FEEDBACK_MIP_REGION_WITH_INCOMPATIBLE_FORMAT = 0x04e4,
+ D3D12_MESSAGE_ID_CREATEGRAPHICSPIPELINESTATE_INPUTLAYOUT_SHADER_MISMATCH = 0x04e5,
+ D3D12_MESSAGE_ID_EMPTY_DISPATCH = 0x04e6,
+ D3D12_MESSAGE_ID_RESOURCE_FORMAT_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 0x04e7,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_MIP_REGION = 0x04e8,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_DIMENSION = 0x04e9,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_COUNT = 0x04ea,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_SAMPLE_QUALITY = 0x04eb,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_INVALID_LAYOUT = 0x04ec,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_MAP_REQUIRES_UNORDERED_ACCESS_FLAG = 0x04ed,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_NULL_ARGUMENTS = 0x04ee,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_UAV_REQUIRES_SAMPLER_FEEDBACK_CAPABILITY = 0x04ef,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_REQUIRES_FEEDBACK_MAP_FORMAT = 0x04f0,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_INVALIDSHADERBYTECODE = 0x04f1,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTOFMEMORY = 0x04f2,
+ D3D12_MESSAGE_ID_CREATEMESHSHADERWITHSTREAMOUTPUT_INVALIDSHADERTYPE = 0x04f3,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_INVALID_FORMAT = 0x04f4,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_INVALID_MIP_LEVEL_COUNT = 0x04f5,
+ D3D12_MESSAGE_ID_RESOLVESUBRESOURCE_SAMPLER_FEEDBACK_TRANSCODE_ARRAY_SIZE_MISMATCH = 0x04f6,
+ D3D12_MESSAGE_ID_SAMPLER_FEEDBACK_CREATE_UAV_MISMATCHING_TARGETED_RESOURCE = 0x04f7,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_OUTPUTEXCEEDSMAXSIZE = 0x04f8,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_GROUPSHAREDEXCEEDSMAXSIZE = 0x04f9,
+ D3D12_MESSAGE_ID_VERTEX_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 0x04fa,
+ D3D12_MESSAGE_ID_MESH_SHADER_OUTPUTTING_BOTH_VIEWPORT_ARRAY_INDEX_AND_SHADING_RATE_NOT_SUPPORTED_ON_DEVICE = 0x04fb,
+ D3D12_MESSAGE_ID_CREATEMESHSHADER_MISMATCHEDASMSPAYLOADSIZE = 0x04fc,
+ D3D12_MESSAGE_ID_CREATE_ROOT_SIGNATURE_UNBOUNDED_STATIC_DESCRIPTORS = 0x04fd,
+ D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_INVALIDSHADERBYTECODE = 0x04fe,
+ D3D12_MESSAGE_ID_CREATEAMPLIFICATIONSHADER_OUTOFMEMORY = 0x04ff,
+ 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;
+ const char *pDescription;
+ SIZE_T DescriptionByteLength;
+} D3D12_MESSAGE;
+
+typedef struct D3D12_INFO_QUEUE_FILTER_DESC
+{
+ UINT NumCategories;
+ D3D12_MESSAGE_CATEGORY *pCategoryList;
+ UINT NumSeverities;
+ D3D12_MESSAGE_SEVERITY *pSeverityList;
+ UINT NumIDs;
+ D3D12_MESSAGE_ID *pIDList;
+} D3D12_INFO_QUEUE_FILTER_DESC;
+
+typedef struct D3D12_INFO_QUEUE_FILTER
+{
+ D3D12_INFO_QUEUE_FILTER_DESC AllowList;
+ D3D12_INFO_QUEUE_FILTER_DESC DenyList;
+} D3D12_INFO_QUEUE_FILTER;
+
[
uuid(344488b7-6846-474b-b989-f027448245e0),
object,
@@ -41,3 +938,49 @@ interface ID3D12Debug1 : IUnknown
void SetEnableGPUBasedValidation(BOOL enable);
void SetEnableSynchronizedCommandQueueValidation(BOOL enable);
}
+
+[
+ uuid(0742a90b-c387-483f-b946-30a7e4e61458),
+ object,
+ local,
+ pointer_default(unique)
+]
+interface ID3D12InfoQueue : IUnknown
+{
+ HRESULT SetMessageCountLimit([in] UINT64 limit);
+ void ClearStoredMessages();
+ HRESULT GetMessage([in] UINT64 index, [out] D3D12_MESSAGE *message, [in, out] SIZE_T *length);
+ UINT64 GetNumMessagesAllowedByStorageFilter();
+ UINT64 GetNumMessagesDeniedByStorageFilter();
+ UINT64 GetNumStoredMessages();
+ UINT64 GetNumStoredMessagesAllowedByRetrievalFilter();
+ UINT64 GetNumMessagesDiscardedByMessageCountLimit();
+ UINT64 GetMessageCountLimit();
+ HRESULT AddStorageFilterEntries([in] D3D12_INFO_QUEUE_FILTER *filter);
+ HRESULT GetStorageFilter([out] D3D12_INFO_QUEUE_FILTER *filter, [in, out] SIZE_T *length);
+ void ClearStorageFilter();
+ HRESULT PushEmptyStorageFilter();
+ HRESULT PushCopyOfStorageFilter();
+ HRESULT PushStorageFilter([in] D3D12_INFO_QUEUE_FILTER *filter);
+ void PopStorageFilter();
+ UINT GetStorageFilterStackSize();
+ HRESULT AddRetrievalFilterEntries([in] D3D12_INFO_QUEUE_FILTER *filter);
+ HRESULT GetRetrievalFilter([out] D3D12_INFO_QUEUE_FILTER *filter, [in, out] SIZE_T *length);
+ void ClearRetrievalFilter();
+ HRESULT PushEmptyRetrievalFilter();
+ HRESULT PushCopyOfRetrievalFilter();
+ HRESULT PushRetrievalFilter([in] D3D12_INFO_QUEUE_FILTER *filter);
+ void PopRetrievalFilter();
+ UINT GetRetrievalFilterStackSize();
+ HRESULT AddMessage([in] D3D12_MESSAGE_CATEGORY category, [in] D3D12_MESSAGE_SEVERITY severity,
+ [in] D3D12_MESSAGE_ID id, [in] const char *description);
+ HRESULT AddApplicationMessage([in] D3D12_MESSAGE_SEVERITY severity, [in] const char *description);
+ HRESULT SetBreakOnCategory([in] D3D12_MESSAGE_CATEGORY category, [in] BOOL enable);
+ HRESULT SetBreakOnSeverity([in] D3D12_MESSAGE_SEVERITY severity, [in] BOOL enable);
+ HRESULT SetBreakOnID([in] D3D12_MESSAGE_ID id, [in] BOOL enable);
+ BOOL GetBreakOnCategory([in] D3D12_MESSAGE_CATEGORY category);
+ BOOL GetBreakOnSeverity([in] D3D12_MESSAGE_SEVERITY severity);
+ BOOL GetBreakOnID([in] D3D12_MESSAGE_ID id);
+ void SetMuteDebugOutput([in] BOOL mute);
+ BOOL GetMuteDebugOutput();
+}
--
2.11.0
1
0
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/dssenh/main.c | 12 +++++++++++-
dlls/dssenh/tests/dssenh.c | 24 ++++++++++++------------
2 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c
index e406117e97..77b5570fc5 100644
--- a/dlls/dssenh/main.c
+++ b/dlls/dssenh/main.c
@@ -1,5 +1,6 @@
/*
* Copyright 2008 Maarten Lankhorst
+ * Copyright 2020 Hans Leidekker for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -413,7 +414,16 @@ BOOL WINAPI CPDestroyHash( HCRYPTPROV hprov, HCRYPTHASH hhash )
BOOL WINAPI CPHashData( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *data, DWORD len, DWORD flags )
{
- return FALSE;
+ struct hash *hash = (struct hash *)hhash;
+
+ TRACE("%p, %p, %p, %u, %08x\n", hprov, hhash, data, len, flags );
+
+ if (hash->magic != MAGIC_HASH) return FALSE;
+
+ if (hash->finished || BCryptHashData( hash->handle, (UCHAR *)data, len, 0 )) return FALSE;
+
+ hash->finished = TRUE;
+ return TRUE;
}
BOOL WINAPI CPGetHashParam( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD param, BYTE *data, DWORD *len, DWORD flags )
diff --git a/dlls/dssenh/tests/dssenh.c b/dlls/dssenh/tests/dssenh.c
index f06cdd1433..cc4650b2c8 100644
--- a/dlls/dssenh/tests/dssenh.c
+++ b/dlls/dssenh/tests/dssenh.c
@@ -449,15 +449,15 @@ static void test_hash(const struct hash_test *tests, int testLen)
ok(result, "Expected creation of a hash.\n");
result = CryptHashData(hHash, data, dataLen, 0);
+ ok(result, "Expected data to be added to hash.\n");
+
+ dataLen = sizeof(DWORD);
+ result = CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE *)&hashLen, &dataLen, 0);
if (!result)
{
skip("skipping hash tests\n");
return;
}
- ok(result, "Expected data to be added to hash.\n");
-
- dataLen = sizeof(DWORD);
- result = CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE *)&hashLen, &dataLen, 0);
ok(result && (hashLen == tests[i].hashLen), "Expected %d hash len, got %d.Error: %x\n",
tests[i].hashLen, hashLen, GetLastError());
@@ -608,15 +608,15 @@ static void test_data_encryption(const struct encrypt_test *tests, int testLen)
ok(result, "Expected creation of a MD5 hash for key derivation.\n");
result = CryptHashData(hHash, (BYTE *)dataToHash, sizeof(dataToHash), 0);
+ ok(result, "Expected data to be added to hash for key derivation.\n");
+
+ /* Derive key */
+ result = CryptDeriveKey(hProv, tests[i].algid, hHash, tests[i].keyLength, &pKey);
if (!result)
{
skip("skipping encryption tests\n");
return;
}
- ok(result, "Expected data to be added to hash for key derivation.\n");
-
- /* Derive key */
- result = CryptDeriveKey(hProv, tests[i].algid, hHash, tests[i].keyLength, &pKey);
ok(result, "Expected a derived key.\n");
result = CryptDestroyHash(hHash);
@@ -698,15 +698,15 @@ static void test_cipher_modes(const struct ciphermode_test *tests, int testLen)
ok(result, "Expected creation of a MD5 hash for key derivation.\n");
result = CryptHashData(hHash, (BYTE *)dataToHash, sizeof(dataToHash), 0);
+ ok(result, "Expected data to be added to hash for key derivation.\n");
+
+ /* Derive a CALG_RC2 key, but could be any other encryption cipher */
+ result = CryptDeriveKey(hProv, CALG_RC2, hHash, 40 << 16, &pKey);
if (!result)
{
skip("skipping ciper modes tests\n");
return;
}
- ok(result, "Expected data to be added to hash for key derivation.\n");
-
- /* Derive a CALG_RC2 key, but could be any other encryption cipher */
- result = CryptDeriveKey(hProv, CALG_RC2, hHash, 40 << 16, &pKey);
ok(result, "Expected a derived key.\n");
result = CryptDestroyHash(hHash);
--
2.28.0
2
1
Oct. 7, 2020
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/dssenh/main.c | 90 +++++++++++++++++++++++++++++++++++++-
dlls/dssenh/tests/dssenh.c | 18 ++++----
2 files changed, 97 insertions(+), 11 deletions(-)
diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c
index ea082b29e3..e406117e97 100644
--- a/dlls/dssenh/main.c
+++ b/dlls/dssenh/main.c
@@ -54,6 +54,17 @@ struct container
char name[MAX_PATH];
};
+#define MAGIC_HASH (('H' << 24) | ('A' << 16) | ('S' << 8) | 'H')
+struct hash
+{
+ DWORD magic;
+ BCRYPT_ALG_HANDLE alg_handle;
+ BCRYPT_HASH_HANDLE handle;
+ DWORD len;
+ UCHAR value[64];
+ BOOL finished;
+};
+
static const char dss_path_fmt[] = "Software\\Wine\\Crypto\\DSS\\%s";
static BOOL create_container_regkey( struct container *container, REGSAM sam, HKEY *hkey )
@@ -315,14 +326,89 @@ BOOL WINAPI CPExportKey( HCRYPTPROV hprov, HCRYPTKEY hkey, HCRYPTKEY hexpkey, DW
return FALSE;
}
+static struct hash *create_hash( ALG_ID algid )
+{
+ struct hash *ret;
+ const WCHAR *alg;
+ DWORD len;
+
+ switch (algid)
+ {
+ case CALG_MD5:
+ alg = BCRYPT_MD5_ALGORITHM;
+ len = 16;
+ break;
+
+ case CALG_SHA1:
+ alg = BCRYPT_SHA1_ALGORITHM;
+ len = 20;
+ break;
+
+ default:
+ FIXME( "unhandled algorithm %u\n", algid );
+ return 0;
+ }
+
+ if (!(ret = heap_alloc_zero( sizeof(*ret) ))) return 0;
+
+ ret->magic = MAGIC_HASH;
+ ret->len = len;
+ if (BCryptOpenAlgorithmProvider( &ret->alg_handle, alg, MS_PRIMITIVE_PROVIDER, 0 ))
+ {
+ heap_free( ret );
+ return 0;
+ }
+ if (BCryptCreateHash( ret->alg_handle, &ret->handle, NULL, 0, NULL, 0, 0 ))
+ {
+ BCryptCloseAlgorithmProvider( ret->alg_handle, 0 );
+ heap_free( ret );
+ return 0;
+ }
+ return ret;
+}
+
BOOL WINAPI CPCreateHash( HCRYPTPROV hprov, ALG_ID algid, HCRYPTKEY hkey, DWORD flags, HCRYPTHASH *ret_hash )
{
- return FALSE;
+ struct hash *hash;
+
+ TRACE( "%p, %08x, %p, %08x, %p\n", hprov, algid, hkey, flags, ret_hash );
+
+ switch (algid)
+ {
+ case CALG_MD5:
+ case CALG_SHA1:
+ break;
+
+ default:
+ FIXME( "algorithm %u not supported\n", algid );
+ SetLastError( NTE_BAD_ALGID );
+ return FALSE;
+ }
+
+ if (!(hash = create_hash( algid ))) return FALSE;
+
+ *ret_hash = (HCRYPTHASH)hash;
+ return TRUE;
}
BOOL WINAPI CPDestroyHash( HCRYPTPROV hprov, HCRYPTHASH hhash )
{
- return FALSE;
+ struct hash *hash = (struct hash *)hhash;
+
+ TRACE( "%p, %p\n", hprov, hhash);
+
+ if (hash->magic != MAGIC_HASH)
+ {
+ SetLastError( NTE_BAD_HASH );
+ return FALSE;
+ }
+
+ BCryptDestroyHash( hash->handle );
+ BCryptCloseAlgorithmProvider( hash->alg_handle, 0 );
+
+ hash->magic = 0;
+ heap_free( hash );
+ return TRUE;
}
BOOL WINAPI CPHashData( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *data, DWORD len, DWORD flags )
diff --git a/dlls/dssenh/tests/dssenh.c b/dlls/dssenh/tests/dssenh.c
index d549b985d6..f06cdd1433 100644
--- a/dlls/dssenh/tests/dssenh.c
+++ b/dlls/dssenh/tests/dssenh.c
@@ -446,14 +446,14 @@ static void test_hash(const struct hash_test *tests, int testLen)
/* test algid hash */
result = CryptCreateHash(hProv, tests[i].algid, 0, 0, &hHash);
+ ok(result, "Expected creation of a hash.\n");
+
+ result = CryptHashData(hHash, data, dataLen, 0);
if (!result)
{
skip("skipping hash tests\n");
return;
}
- ok(result, "Expected creation of a hash.\n");
-
- result = CryptHashData(hHash, data, dataLen, 0);
ok(result, "Expected data to be added to hash.\n");
dataLen = sizeof(DWORD);
@@ -605,14 +605,14 @@ static void test_data_encryption(const struct encrypt_test *tests, int testLen)
SetLastError(0xdeadbeef);
result = CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
+ ok(result, "Expected creation of a MD5 hash for key derivation.\n");
+
+ result = CryptHashData(hHash, (BYTE *)dataToHash, sizeof(dataToHash), 0);
if (!result)
{
skip("skipping encryption tests\n");
return;
}
- ok(result, "Expected creation of a MD5 hash for key derivation.\n");
-
- result = CryptHashData(hHash, (BYTE *)dataToHash, sizeof(dataToHash), 0);
ok(result, "Expected data to be added to hash for key derivation.\n");
/* Derive key */
@@ -695,14 +695,14 @@ static void test_cipher_modes(const struct ciphermode_test *tests, int testLen)
SetLastError(0xdeadbeef);
result = CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
+ ok(result, "Expected creation of a MD5 hash for key derivation.\n");
+
+ result = CryptHashData(hHash, (BYTE *)dataToHash, sizeof(dataToHash), 0);
if (!result)
{
skip("skipping ciper modes tests\n");
return;
}
- ok(result, "Expected creation of a MD5 hash for key derivation.\n");
-
- result = CryptHashData(hHash, (BYTE *)dataToHash, sizeof(dataToHash), 0);
ok(result, "Expected data to be added to hash for key derivation.\n");
/* Derive a CALG_RC2 key, but could be any other encryption cipher */
--
2.28.0
2
1
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/dssenh/Makefile.in | 2 ++
dlls/dssenh/dssenh.rgs | 56 ++++++++++++++++++++++++++++++++++++++
dlls/dssenh/main.c | 22 +++++++++------
dlls/dssenh/rsrc.rc | 22 +++++++++++++++
dlls/dssenh/tests/dssenh.c | 5 ++--
5 files changed, 95 insertions(+), 12 deletions(-)
create mode 100644 dlls/dssenh/dssenh.rgs
create mode 100644 dlls/dssenh/rsrc.rc
diff --git a/dlls/dssenh/Makefile.in b/dlls/dssenh/Makefile.in
index 4f05beee51..8015768f99 100644
--- a/dlls/dssenh/Makefile.in
+++ b/dlls/dssenh/Makefile.in
@@ -4,3 +4,5 @@ EXTRADLLFLAGS = -mno-cygwin
C_SRCS = \
main.c
+
+RC_SRCS = rsrc.rc
diff --git a/dlls/dssenh/dssenh.rgs b/dlls/dssenh/dssenh.rgs
new file mode 100644
index 0000000000..0e9bad7c17
--- /dev/null
+++ b/dlls/dssenh/dssenh.rgs
@@ -0,0 +1,56 @@
+HKLM
+{
+ NoRemove Software
+ {
+ NoRemove Microsoft
+ {
+ NoRemove Cryptography
+ {
+ NoRemove Defaults
+ {
+ NoRemove Provider
+ {
+ ForceRemove 'Microsoft Base DSS Cryptographic Provider'
+ {
+ val 'Image Path' = s '%MODULE%'
+ val 'Type' = d 3
+ }
+ ForceRemove 'Microsoft Base DSS and Diffie-Hellman Cryptographic Provider'
+ {
+ val 'Image Path' = s '%MODULE%'
+ val 'Type' = d 13
+ }
+ ForceRemove 'Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider'
+ {
+ val 'Image Path' = s '%MODULE%'
+ val 'Type' = d 13
+ }
+ ForceRemove 'Microsoft DH SChannel Cryptographic Provider'
+ {
+ val 'Image Path' = s '%MODULE%'
+ val 'Type' = d 18
+ }
+ }
+ NoRemove 'Provider Types'
+ {
+ ForceRemove 'Type 003'
+ {
+ val 'Name' = s 'Microsoft Base DSS Cryptographic Provider'
+ val 'TypeName' = s 'DSS Signature'
+ }
+ ForceRemove 'Type 013'
+ {
+ val 'Name' = s 'Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider'
+ val 'TypeName' = s 'DSS Signature with Diffie-Hellman Key Exchange'
+ }
+ ForceRemove 'Type 018'
+ {
+ val 'Name' = s 'Microsoft DH SChannel Cryptographic Provider'
+ val 'TypeName' = s 'Diffie-Hellman SChannel'
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c
index b8dab20751..3d5e8d97d6 100644
--- a/dlls/dssenh/main.c
+++ b/dlls/dssenh/main.c
@@ -22,8 +22,13 @@
#include "windef.h"
#include "winbase.h"
#include "wincrypt.h"
+#include "objbase.h"
+#include "rpcproxy.h"
+
#include "wine/debug.h"
+static HINSTANCE instance;
+
WINE_DEFAULT_DEBUG_CHANNEL(dssenh);
BOOL WINAPI CPAcquireContext( HCRYPTPROV *ret_prov, LPSTR container, DWORD flags, PVTableProvStruc vtable )
@@ -101,11 +106,12 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
switch (fdwReason)
{
- case DLL_WINE_PREATTACH:
- return FALSE; /* prefer native version */
- case DLL_PROCESS_ATTACH:
- DisableThreadLibraryCalls(hinstDLL);
- break;
+ case DLL_WINE_PREATTACH:
+ return FALSE; /* prefer native version */
+ case DLL_PROCESS_ATTACH:
+ instance = hinstDLL;
+ DisableThreadLibraryCalls(hinstDLL);
+ break;
}
return TRUE;
}
@@ -115,8 +121,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
*/
HRESULT WINAPI DllRegisterServer(void)
{
- FIXME("Not implemented.\n");
- return E_UNEXPECTED;
+ return __wine_register_resources( instance );
}
/*****************************************************
@@ -124,6 +129,5 @@ HRESULT WINAPI DllRegisterServer(void)
*/
HRESULT WINAPI DllUnregisterServer(void)
{
- FIXME("Not implemented.\n");
- return E_UNEXPECTED;
+ return __wine_unregister_resources( instance );
}
diff --git a/dlls/dssenh/rsrc.rc b/dlls/dssenh/rsrc.rc
new file mode 100644
index 0000000000..ac5ba6258e
--- /dev/null
+++ b/dlls/dssenh/rsrc.rc
@@ -0,0 +1,22 @@
+/*
+ * Resources for dssenh
+ *
+ * Copyright 2020 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* @makedep: dssenh.rgs */
+1 WINE_REGISTRY dssenh.rgs
diff --git a/dlls/dssenh/tests/dssenh.c b/dlls/dssenh/tests/dssenh.c
index 7a16acc679..c88fcd1466 100644
--- a/dlls/dssenh/tests/dssenh.c
+++ b/dlls/dssenh/tests/dssenh.c
@@ -54,7 +54,6 @@ static void test_acquire_context(void)
/* cannot acquire along with PROV_RSA_SIG, not compatible */
SetLastError(0xdeadbeef);
result = CryptAcquireContextA(&hProv, NULL, MS_DEF_DSS_PROV_A, PROV_RSA_SIG, 0);
- todo_wine
ok(!result && GetLastError() == NTE_PROV_TYPE_NO_MATCH,
"Expected NTE_PROV_TYPE_NO_MATCH, got %08x\n", GetLastError());
@@ -574,7 +573,7 @@ static void test_data_encryption(const struct encrypt_test *tests, int testLen)
SetLastError(0xdeadbeef);
result = CryptAcquireContextA(
&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, CRYPT_VERIFYCONTEXT);
- if(!result && GetLastError() == NTE_KEYSET_NOT_DEF)
+ if (!result)
{
skip("DSSENH is currently not available, skipping encryption tests.\n");
return;
@@ -665,7 +664,7 @@ static void test_cipher_modes(const struct ciphermode_test *tests, int testLen)
SetLastError(0xdeadbeef);
result = CryptAcquireContextA(
&hProv, NULL, MS_ENH_DSS_DH_PROV_A, PROV_DSS_DH, CRYPT_VERIFYCONTEXT);
- if(!result && GetLastError() == NTE_KEYSET_NOT_DEF)
+ if (!result)
{
skip("DSSENH is currently not available, skipping block cipher mode tests.\n");
return;
--
2.28.0
2
1
[PATCH 1/5] dssenh: Add stub implementations for a couple of functions.
by Hans Leidekker Oct. 7, 2020
by Hans Leidekker Oct. 7, 2020
Oct. 7, 2020
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/dssenh/dssenh.spec | 26 +++++++--------
dlls/dssenh/main.c | 70 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 83 insertions(+), 13 deletions(-)
diff --git a/dlls/dssenh/dssenh.spec b/dlls/dssenh/dssenh.spec
index c5c2545281..e40f398681 100644
--- a/dlls/dssenh/dssenh.spec
+++ b/dlls/dssenh/dssenh.spec
@@ -1,27 +1,27 @@
-@ stub CPAcquireContext
-@ stub CPCreateHash
+@ stdcall CPAcquireContext(ptr str long ptr)
+@ stdcall CPCreateHash(ptr long ptr long ptr)
@ stub CPDecrypt
-@ stub CPDeriveKey
-@ stub CPDestroyHash
-@ stub CPDestroyKey
+@ stdcall CPDeriveKey(ptr long ptr long ptr)
+@ stdcall CPDestroyHash(ptr ptr)
+@ stdcall CPDestroyKey(ptr ptr)
@ stub CPDuplicateHash
@ stub CPDuplicateKey
@ stub CPEncrypt
-@ stub CPExportKey
-@ stub CPGenKey
+@ stdcall CPExportKey(ptr ptr ptr long long ptr ptr)
+@ stdcall CPGenKey(ptr long long ptr)
@ stub CPGenRandom
-@ stub CPGetHashParam
+@ stdcall CPGetHashParam(ptr ptr long ptr ptr long)
@ stub CPGetKeyParam
@ stub CPGetProvParam
@ stub CPGetUserKey
-@ stub CPHashData
+@ stdcall CPHashData(ptr ptr ptr long long)
@ stub CPHashSessionKey
-@ stub CPImportKey
-@ stub CPReleaseContext
+@ stdcall CPImportKey(ptr ptr long ptr long ptr)
+@ stdcall CPReleaseContext(ptr long)
@ stub CPSetHashParam
@ stub CPSetKeyParam
@ stub CPSetProvParam
-@ stub CPSignHash
-@ stub CPVerifySignature
+@ stdcall CPSignHash(ptr ptr long wstr long ptr ptr)
+@ stdcall CPVerifySignature(ptr ptr ptr long ptr wstr long)
@ stdcall -private DllRegisterServer()
@ stdcall -private DllUnregisterServer()
diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c
index b60b3447a3..b8dab20751 100644
--- a/dlls/dssenh/main.c
+++ b/dlls/dssenh/main.c
@@ -21,10 +21,80 @@
#include "windef.h"
#include "winbase.h"
+#include "wincrypt.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(dssenh);
+BOOL WINAPI CPAcquireContext( HCRYPTPROV *ret_prov, LPSTR container, DWORD flags, PVTableProvStruc vtable )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPReleaseContext( HCRYPTPROV hprov, DWORD flags )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPGenKey( HCRYPTPROV hprov, ALG_ID algid, DWORD flags, HCRYPTKEY *ret_key )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPDestroyKey( HCRYPTPROV hprov, HCRYPTKEY hkey )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPImportKey( HCRYPTPROV hprov, const BYTE *data, DWORD len, HCRYPTKEY hpubkey, DWORD flags,
+ HCRYPTKEY *ret_key )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPExportKey( HCRYPTPROV hprov, HCRYPTKEY hkey, HCRYPTKEY hexpkey, DWORD blobtype, DWORD flags,
+ BYTE *data, DWORD *len )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPCreateHash( HCRYPTPROV hprov, ALG_ID algid, HCRYPTKEY hkey, DWORD flags, HCRYPTHASH *ret_hash )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPDestroyHash( HCRYPTPROV hprov, HCRYPTHASH hhash )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPHashData( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *data, DWORD len, DWORD flags )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPGetHashParam( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD param, BYTE *data, DWORD *len, DWORD flags )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPDeriveKey( HCRYPTPROV hprov, ALG_ID algid, HCRYPTHASH hhash, DWORD flags, HCRYPTKEY *ret_key )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPSignHash( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD keyspec, const WCHAR *desc, DWORD flags, BYTE *sig,
+ DWORD *siglen )
+{
+ return FALSE;
+}
+
+BOOL WINAPI CPVerifySignature( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *sig, DWORD siglen, HCRYPTKEY hpubkey,
+ const WCHAR *desc, DWORD flags )
+{
+ return FALSE;
+}
+
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
TRACE("(0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
--
2.28.0
1
0
[PATCH 7/7] wined3d: Implement stream output queries for the Vulkan adapter.
by Henri Verbeet Oct. 7, 2020
by Henri Verbeet Oct. 7, 2020
Oct. 7, 2020
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/wined3d/context_vk.c | 10 ++++++++
dlls/wined3d/query.c | 46 ++++++++++++++++++++++++++++++++--
dlls/wined3d/wined3d_private.h | 1 +
3 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index a4e394e811f..fa5aac28fd1 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -1240,6 +1240,14 @@ bool wined3d_context_vk_allocate_query(struct wined3d_context_vk *context_vk,
free_pools = &context_vk->free_pipeline_statistics_query_pools;
break;
+ case WINED3D_QUERY_TYPE_SO_STATISTICS:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3:
+ free_pools = &context_vk->free_stream_output_statistics_query_pools;
+ break;
+
default:
FIXME("Unhandled query type %#x.\n", type);
return false;
@@ -1303,6 +1311,7 @@ void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk)
wined3d_context_vk_destroy_query_pools(context_vk, &context_vk->free_occlusion_query_pools);
wined3d_context_vk_destroy_query_pools(context_vk, &context_vk->free_timestamp_query_pools);
wined3d_context_vk_destroy_query_pools(context_vk, &context_vk->free_pipeline_statistics_query_pools);
+ wined3d_context_vk_destroy_query_pools(context_vk, &context_vk->free_stream_output_statistics_query_pools);
wine_rb_destroy(&context_vk->bo_slab_available, wined3d_context_vk_destroy_bo_slab, context_vk);
heap_free(context_vk->pending_queries.queries);
heap_free(context_vk->submitted.buffers);
@@ -3159,6 +3168,7 @@ HRESULT wined3d_context_vk_init(struct wined3d_context_vk *context_vk, struct wi
list_init(&context_vk->free_occlusion_query_pools);
list_init(&context_vk->free_timestamp_query_pools);
list_init(&context_vk->free_pipeline_statistics_query_pools);
+ list_init(&context_vk->free_stream_output_statistics_query_pools);
wine_rb_init(&context_vk->render_passes, wined3d_render_pass_vk_compare);
wine_rb_init(&context_vk->pipeline_layouts, wined3d_pipeline_layout_vk_compare);
diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
index bb860db4ebb..5aca4a2c5a4 100644
--- a/dlls/wined3d/query.c
+++ b/dlls/wined3d/query.c
@@ -1423,6 +1423,15 @@ bool wined3d_query_pool_vk_init(struct wined3d_query_pool_vk *pool_vk,
| VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT;
break;
+ case WINED3D_QUERY_TYPE_SO_STATISTICS:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3:
+ pool_info.queryType = VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT;
+ pool_info.pipelineStatistics = 0;
+ break;
+
default:
FIXME("Unhandled query type %#x.\n", type);
return false;
@@ -1452,6 +1461,7 @@ bool wined3d_query_vk_accumulate_data(struct wined3d_query_vk *query_vk,
uint64_t occlusion;
uint64_t timestamp;
struct wined3d_query_data_pipeline_statistics pipeline_statistics;
+ struct wined3d_query_data_so_statistics so_statistics;
} tmp, *result;
if ((vr = VK_CALL(vkGetQueryPoolResults(device_vk->vk_device, pool_idx->pool_vk->vk_query_pool,
@@ -1491,6 +1501,15 @@ bool wined3d_query_vk_accumulate_data(struct wined3d_query_vk *query_vk,
ps_result->cs_invocations += ps_tmp->cs_invocations;
break;
+ case WINED3D_QUERY_TYPE_SO_STATISTICS:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3:
+ result->so_statistics.primitives_written += tmp.so_statistics.primitives_written;
+ result->so_statistics.primitives_generated += tmp.so_statistics.primitives_generated;
+ break;
+
default:
FIXME("Unhandled query type %#x.\n", query_vk->q.type);
return false;
@@ -1516,7 +1535,12 @@ static void wined3d_query_vk_begin(struct wined3d_query_vk *query_vk,
idx = query_vk->pool_idx.idx;
VK_CALL(vkCmdResetQueryPool(vk_command_buffer, pool_vk->vk_query_pool, idx, 1));
- VK_CALL(vkCmdBeginQuery(vk_command_buffer, pool_vk->vk_query_pool, idx, query_vk->control_flags));
+ if (query_vk->q.type >= WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1
+ && query_vk->q.type <= WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3)
+ VK_CALL(vkCmdBeginQueryIndexedEXT(vk_command_buffer, pool_vk->vk_query_pool, idx,
+ query_vk->control_flags, query_vk->q.type - WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0));
+ else
+ VK_CALL(vkCmdBeginQuery(vk_command_buffer, pool_vk->vk_query_pool, idx, query_vk->control_flags));
wined3d_context_vk_reference_query(context_vk, query_vk);
}
@@ -1530,7 +1554,12 @@ static void wined3d_query_vk_end(struct wined3d_query_vk *query_vk,
pool_vk = query_vk->pool_idx.pool_vk;
idx = query_vk->pool_idx.idx;
- VK_CALL(vkCmdEndQuery(vk_command_buffer, pool_vk->vk_query_pool, idx));
+ if (query_vk->q.type >= WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1
+ && query_vk->q.type <= WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3)
+ VK_CALL(vkCmdEndQueryIndexedEXT(vk_command_buffer, pool_vk->vk_query_pool,
+ idx, query_vk->q.type - WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0));
+ else
+ VK_CALL(vkCmdEndQuery(vk_command_buffer, pool_vk->vk_query_pool, idx));
}
void wined3d_query_vk_resume(struct wined3d_query_vk *query_vk, struct wined3d_context_vk *context_vk)
@@ -1803,6 +1832,19 @@ HRESULT wined3d_query_vk_create(struct wined3d_device *device, enum wined3d_quer
data_size = sizeof(struct wined3d_query_data_pipeline_statistics);
break;
+ case WINED3D_QUERY_TYPE_SO_STATISTICS:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2:
+ case WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3:
+ if (!wined3d_adapter_vk(device->adapter)->vk_info.supported[WINED3D_VK_EXT_TRANSFORM_FEEDBACK])
+ {
+ WARN("Stream output queries not supported.\n");
+ return WINED3DERR_NOTAVAILABLE;
+ }
+ data_size = sizeof(struct wined3d_query_data_so_statistics);
+ break;
+
default:
FIXME("Unhandled query type %#x.\n", type);
return WINED3DERR_NOTAVAILABLE;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index ae16545a772..d932f60fa95 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2515,6 +2515,7 @@ struct wined3d_context_vk
struct list free_occlusion_query_pools;
struct list free_timestamp_query_pools;
struct list free_pipeline_statistics_query_pools;
+ struct list free_stream_output_statistics_query_pools;
struct wined3d_retired_objects_vk retired;
struct wine_rb_tree render_passes;
--
2.20.1
1
0
Oct. 7, 2020
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/wined3d/adapter_vk.c | 86 +++++++++++++++++++++++++++++++---
dlls/wined3d/buffer.c | 13 ++++-
dlls/wined3d/context_vk.c | 74 +++++++++++++++++++++++++++++
dlls/wined3d/wined3d_private.h | 7 ++-
dlls/wined3d/wined3d_vk.h | 9 ++++
5 files changed, 181 insertions(+), 8 deletions(-)
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index e589699bcd9..5c219d45d3e 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -311,6 +311,7 @@ static HRESULT wined3d_select_vulkan_queue_family(const struct wined3d_adapter_v
struct wined3d_physical_device_info
{
+ VkPhysicalDeviceTransformFeedbackFeaturesEXT xfb_features;
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT vertex_divisor_features;
VkPhysicalDeviceFeatures2 features2;
@@ -406,6 +407,7 @@ static HRESULT adapter_vk_create_device(struct wined3d *wined3d, const struct wi
const struct wined3d_adapter_vk *adapter_vk = wined3d_adapter_vk_const(adapter);
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *vertex_divisor_features;
const struct wined3d_vk_info *vk_info = &adapter_vk->vk_info;
+ VkPhysicalDeviceTransformFeedbackFeaturesEXT *xfb_features;
struct wined3d_physical_device_info physical_device_info;
static const float priorities[] = {1.0f};
VkPhysicalDeviceFeatures2 *features2;
@@ -429,8 +431,12 @@ static HRESULT adapter_vk_create_device(struct wined3d *wined3d, const struct wi
memset(&physical_device_info, 0, sizeof(physical_device_info));
+ xfb_features = &physical_device_info.xfb_features;
+ xfb_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
+
vertex_divisor_features = &physical_device_info.vertex_divisor_features;
vertex_divisor_features->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT;
+ vertex_divisor_features->pNext = xfb_features;
features2 = &physical_device_info.features2;
features2->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
@@ -482,15 +488,17 @@ static HRESULT adapter_vk_create_device(struct wined3d *wined3d, const struct wi
device_vk->timestamp_bits = timestamp_bits;
device_vk->vk_info = *vk_info;
-#define LOAD_DEVICE_PFN(name) \
+#define VK_DEVICE_PFN(name) \
if (!(device_vk->vk_info.vk_ops.name = (void *)VK_CALL(vkGetDeviceProcAddr(vk_device, #name)))) \
{ \
WARN("Could not get device proc addr for '" #name "'.\n"); \
hr = E_FAIL; \
goto fail; \
}
-#define VK_DEVICE_PFN LOAD_DEVICE_PFN
+#define VK_DEVICE_EXT_PFN(name) \
+ device_vk->vk_info.vk_ops.name = (void *)VK_CALL(vkGetDeviceProcAddr(vk_device, #name));
VK_DEVICE_FUNCS()
+#undef VK_DEVICE_EXT_PFN
#undef VK_DEVICE_PFN
if (!wined3d_allocator_init(&device_vk->allocator,
@@ -838,6 +846,11 @@ static VkAccessFlags vk_access_mask_from_buffer_usage(VkBufferUsageFlags usage)
flags |= VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT;
if (usage & VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)
flags |= VK_ACCESS_INDIRECT_COMMAND_READ_BIT;
+ if (usage & VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT)
+ flags |= VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT;
+ if (usage & VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT)
+ flags |= VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
+ | VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT;
return flags;
}
@@ -1572,6 +1585,7 @@ static void adapter_vk_draw_primitive(struct wined3d_device *device,
struct wined3d_context_vk *context_vk;
VkCommandBuffer vk_command_buffer;
uint32_t instance_count;
+ unsigned int i;
TRACE("device %p, state %p, parameters %p.\n", device, state, parameters);
@@ -1589,6 +1603,30 @@ static void adapter_vk_draw_primitive(struct wined3d_device *device,
return;
}
+ if (context_vk->c.transform_feedback_active)
+ {
+ if (!context_vk->vk_so_counter_bo.vk_buffer)
+ {
+ struct wined3d_bo_vk *bo = &context_vk->vk_so_counter_bo;
+
+ if (!wined3d_context_vk_create_bo(context_vk, ARRAY_SIZE(context_vk->vk_so_counters) * sizeof(uint32_t) * 2,
+ VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, bo))
+ ERR("Failed to create counter BO.\n");
+ for (i = 0; i < ARRAY_SIZE(context_vk->vk_so_counters); ++i)
+ {
+ context_vk->vk_so_counters[i] = bo->vk_buffer;
+ context_vk->vk_so_offsets[i] = bo->buffer_offset + i * sizeof(uint32_t) * 2;
+ }
+ }
+
+ wined3d_context_vk_reference_bo(context_vk, &context_vk->vk_so_counter_bo);
+ if (context_vk->c.transform_feedback_paused)
+ VK_CALL(vkCmdBeginTransformFeedbackEXT(vk_command_buffer, 0, ARRAY_SIZE(context_vk->vk_so_counters),
+ context_vk->vk_so_counters, context_vk->vk_so_offsets));
+ else
+ VK_CALL(vkCmdBeginTransformFeedbackEXT(vk_command_buffer, 0, 0, NULL, NULL));
+ }
+
if (parameters->indirect)
{
struct wined3d_bo_vk *bo = &indirect_vk->bo;
@@ -1627,6 +1665,14 @@ static void adapter_vk_draw_primitive(struct wined3d_device *device,
parameters->u.direct.start_idx, parameters->u.direct.start_instance));
}
+ if (context_vk->c.transform_feedback_active)
+ {
+ VK_CALL(vkCmdEndTransformFeedbackEXT(vk_command_buffer, 0, ARRAY_SIZE(context_vk->vk_so_counters),
+ context_vk->vk_so_counters, context_vk->vk_so_offsets));
+ context_vk->c.transform_feedback_paused = 1;
+ context_vk->c.transform_feedback_active = 0;
+ }
+
context_release(&context_vk->c);
}
@@ -1882,11 +1928,13 @@ static BOOL wined3d_init_vulkan(struct wined3d_vk_info *vk_info)
#define VK_INSTANCE_PFN LOAD_INSTANCE_PFN
#define VK_INSTANCE_EXT_PFN LOAD_INSTANCE_OPT_PFN
#define VK_DEVICE_PFN LOAD_INSTANCE_PFN
+#define VK_DEVICE_EXT_PFN LOAD_INSTANCE_OPT_PFN
VK_INSTANCE_FUNCS()
VK_DEVICE_FUNCS()
#undef VK_INSTANCE_PFN
#undef VK_INSTANCE_EXT_PFN
#undef VK_DEVICE_PFN
+#undef VK_DEVICE_EXT_PFN
#define MAP_INSTANCE_FUNCTION(core_pfn, ext_pfn) \
if (!vk_ops->core_pfn) \
@@ -2087,13 +2135,25 @@ static bool wined3d_adapter_vk_init_device_extensions(struct wined3d_adapter_vk
{
const char *name;
unsigned int core_since_version;
+ bool required;
}
info[] =
{
- {VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, ~0u},
- {VK_KHR_MAINTENANCE1_EXTENSION_NAME, VK_API_VERSION_1_1},
- {VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_API_VERSION_1_1},
- {VK_KHR_SWAPCHAIN_EXTENSION_NAME, ~0u},
+ {VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, ~0u},
+ {VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME, ~0u, true},
+ {VK_KHR_MAINTENANCE1_EXTENSION_NAME, VK_API_VERSION_1_1, true},
+ {VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_API_VERSION_1_1, true},
+ {VK_KHR_SWAPCHAIN_EXTENSION_NAME, ~0u, true},
+ };
+
+ static const struct
+ {
+ const char *name;
+ enum wined3d_vk_extension extension;
+ }
+ map[] =
+ {
+ {VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, WINED3D_VK_EXT_TRANSFORM_FEEDBACK},
};
if ((vr = VK_CALL(vkEnumerateDeviceExtensionProperties(physical_device, NULL, &count, NULL))) < 0)
@@ -2130,6 +2190,8 @@ static bool wined3d_adapter_vk_init_device_extensions(struct wined3d_adapter_vk
if (!found)
{
+ if (!info[i].required)
+ continue;
WARN("Required extension '%s' is not available.\n", info[i].name);
goto done;
}
@@ -2145,6 +2207,18 @@ static bool wined3d_adapter_vk_init_device_extensions(struct wined3d_adapter_vk
}
success = true;
+ for (i = 0; i < ARRAY_SIZE(map); ++i)
+ {
+ for (j = 0; j < enable_count; ++j)
+ {
+ if (!strcmp(enabled_extensions[j], map[i].name))
+ {
+ vk_info->supported[map[i].extension] = TRUE;
+ break;
+ }
+ }
+ }
+
done:
if (success)
{
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index b32d0160cc1..f2817eeee04 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -1579,11 +1579,13 @@ static BOOL wined3d_buffer_vk_create_buffer_object(struct wined3d_buffer_vk *buf
usage |= VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
if (bind_flags & WINED3D_BIND_SHADER_RESOURCE)
usage |= VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT;
+ if (bind_flags & WINED3D_BIND_STREAM_OUTPUT)
+ usage |= VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT;
if (bind_flags & WINED3D_BIND_UNORDERED_ACCESS)
usage |= VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
if (bind_flags & WINED3D_BIND_INDIRECT_BUFFER)
usage |= VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT;
- if (bind_flags & (WINED3D_BIND_STREAM_OUTPUT | WINED3D_BIND_RENDER_TARGET | WINED3D_BIND_DEPTH_STENCIL))
+ if (bind_flags & (WINED3D_BIND_RENDER_TARGET | WINED3D_BIND_DEPTH_STENCIL))
FIXME("Ignoring some bind flags %#x.\n", bind_flags);
memory_type = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
| VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
@@ -1711,9 +1713,18 @@ HRESULT wined3d_buffer_vk_init(struct wined3d_buffer_vk *buffer_vk, struct wined
const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data,
void *parent, const struct wined3d_parent_ops *parent_ops)
{
+ const struct wined3d_vk_info *vk_info = &wined3d_adapter_vk(device->adapter)->vk_info;
+
TRACE("buffer_vk %p, device %p, desc %p, data %p, parent %p, parent_ops %p.\n",
buffer_vk, device, desc, data, parent, parent_ops);
+ if ((desc->bind_flags & WINED3D_BIND_STREAM_OUTPUT)
+ && !vk_info->supported[WINED3D_VK_EXT_TRANSFORM_FEEDBACK])
+ {
+ WARN("The Vulkan implementation does not support transform feedback.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
if (desc->access & WINED3D_RESOURCE_ACCESS_GPU)
buffer_vk->b.flags |= WINED3D_BUFFER_USE_BO;
diff --git a/dlls/wined3d/context_vk.c b/dlls/wined3d/context_vk.c
index 20a4522df56..a4e394e811f 100644
--- a/dlls/wined3d/context_vk.c
+++ b/dlls/wined3d/context_vk.c
@@ -1297,6 +1297,8 @@ void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk)
if (context_vk->vk_framebuffer)
VK_CALL(vkDestroyFramebuffer(device_vk->vk_device, context_vk->vk_framebuffer, NULL));
VK_CALL(vkDestroyCommandPool(device_vk->vk_device, context_vk->vk_command_pool, NULL));
+ if (context_vk->vk_so_counter_bo.vk_buffer)
+ wined3d_context_vk_destroy_bo(context_vk, &context_vk->vk_so_counter_bo);
wined3d_context_vk_cleanup_resources(context_vk);
wined3d_context_vk_destroy_query_pools(context_vk, &context_vk->free_occlusion_query_pools);
wined3d_context_vk_destroy_query_pools(context_vk, &context_vk->free_timestamp_query_pools);
@@ -1466,6 +1468,7 @@ void wined3d_context_vk_submit_command_buffer(struct wined3d_context_vk *context
wined3d_context_vk_end_current_render_pass(context_vk);
context_vk->graphics.vk_pipeline = VK_NULL_HANDLE;
context_vk->update_compute_pipeline = 1;
+ context_vk->update_stream_output = 1;
context_vk->c.update_shader_resource_bindings = 1;
context_vk->c.update_compute_shader_resource_bindings = 1;
context_vk->c.update_unordered_access_view_bindings = 1;
@@ -2238,6 +2241,51 @@ static void wined3d_context_vk_bind_vertex_buffers(struct wined3d_context_vk *co
VK_CALL(vkCmdBindVertexBuffers(vk_command_buffer, first, count, buffers, offsets));
}
+static void wined3d_context_vk_bind_stream_output_buffers(struct wined3d_context_vk *context_vk,
+ VkCommandBuffer vk_command_buffer, const struct wined3d_state *state, const struct wined3d_vk_info *vk_info)
+{
+ VkDeviceSize offsets[ARRAY_SIZE(state->stream_output)];
+ VkDeviceSize sizes[ARRAY_SIZE(state->stream_output)];
+ VkBuffer buffers[ARRAY_SIZE(state->stream_output)];
+ const struct wined3d_stream_output *stream;
+ const VkDescriptorBufferInfo *buffer_info;
+ struct wined3d_buffer_vk *buffer_vk;
+ struct wined3d_buffer *buffer;
+ unsigned int i, first, count;
+
+ first = 0;
+ count = 0;
+ for (i = 0; i < ARRAY_SIZE(state->stream_output); ++i)
+ {
+ stream = &state->stream_output[i];
+
+ if ((buffer = stream->buffer))
+ {
+ buffer_vk = wined3d_buffer_vk(buffer);
+ buffer_info = wined3d_buffer_vk_get_buffer_info(buffer_vk);
+ wined3d_context_vk_reference_bo(context_vk, &buffer_vk->bo);
+ buffers[count] = buffer_info->buffer;
+ if ((offsets[count] = stream->offset) == ~0u)
+ {
+ FIXME("Appending to stream output buffers not implemented.\n");
+ offsets[count] = 0;
+ }
+ sizes[count] = buffer_info->range - offsets[count];
+ offsets[count] += buffer_info->offset;
+ ++count;
+ continue;
+ }
+
+ if (count)
+ VK_CALL(vkCmdBindTransformFeedbackBuffersEXT(vk_command_buffer, first, count, buffers, offsets, sizes));
+ first = i + 1;
+ count = 0;
+ }
+
+ if (count)
+ VK_CALL(vkCmdBindTransformFeedbackBuffersEXT(vk_command_buffer, first, count, buffers, offsets, sizes));
+}
+
static VkResult wined3d_context_vk_create_descriptor_pool(struct wined3d_device_vk *device_vk,
const struct wined3d_vk_info *vk_info, VkDescriptorPool *vk_pool)
{
@@ -2892,6 +2940,21 @@ VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *c
context_invalidate_state(&context_vk->c, STATE_STREAMSRC);
}
+ if (use_transform_feedback(state) && vk_info->supported[WINED3D_VK_EXT_TRANSFORM_FEEDBACK])
+ {
+ for (i = 0; i < ARRAY_SIZE(state->stream_output); ++i)
+ {
+ if (!(buffer = state->stream_output[i].buffer))
+ continue;
+
+ wined3d_buffer_load(buffer, &context_vk->c, state);
+ wined3d_buffer_invalidate_location(buffer, ~WINED3D_LOCATION_BUFFER);
+ if (!wined3d_buffer_vk(buffer)->bo_user.valid)
+ context_vk->update_stream_output = 1;
+ }
+ context_vk->c.transform_feedback_active = 1;
+ }
+
if (indexed || (wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_INDEXBUFFER) && state->index_buffer))
{
wined3d_buffer_load(state->index_buffer, &context_vk->c, state);
@@ -2932,6 +2995,17 @@ VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *c
if (wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_STREAMSRC))
wined3d_context_vk_bind_vertex_buffers(context_vk, vk_command_buffer, state, vk_info);
+ if (wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_STREAM_OUTPUT))
+ {
+ context_vk->update_stream_output = 1;
+ context_vk->c.transform_feedback_paused = 0;
+ }
+ if (context_vk->c.transform_feedback_active && context_vk->update_stream_output)
+ {
+ wined3d_context_vk_bind_stream_output_buffers(context_vk, vk_command_buffer, state, vk_info);
+ context_vk->update_stream_output = 0;
+ }
+
if (wined3d_context_is_graphics_state_dirty(&context_vk->c, STATE_INDEXBUFFER) && state->index_buffer)
{
struct wined3d_buffer_vk *buffer_vk = wined3d_buffer_vk(state->index_buffer);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 778b26a6757..ae16545a772 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2465,7 +2465,8 @@ struct wined3d_context_vk
const struct wined3d_vk_info *vk_info;
uint32_t update_compute_pipeline : 1;
- uint32_t padding : 31;
+ uint32_t update_stream_output : 1;
+ uint32_t padding : 30;
struct
{
@@ -2505,6 +2506,10 @@ struct wined3d_context_vk
VkSampleCountFlagBits sample_count;
unsigned int rt_count;
+ VkBuffer vk_so_counters[WINED3D_MAX_STREAM_OUTPUT_BUFFERS];
+ VkDeviceSize vk_so_offsets[WINED3D_MAX_STREAM_OUTPUT_BUFFERS];
+ struct wined3d_bo_vk vk_so_counter_bo;
+
struct list active_queries;
struct wined3d_pending_queries_vk pending_queries;
struct list free_occlusion_query_pools;
diff --git a/dlls/wined3d/wined3d_vk.h b/dlls/wined3d/wined3d_vk.h
index ae81fe945ee..0b6748ed0cf 100644
--- a/dlls/wined3d/wined3d_vk.h
+++ b/dlls/wined3d/wined3d_vk.h
@@ -172,6 +172,12 @@
VK_DEVICE_PFN(vkUnmapMemory) \
VK_DEVICE_PFN(vkUpdateDescriptorSets) \
VK_DEVICE_PFN(vkWaitForFences) \
+ /* VK_EXT_transform_feedback */ \
+ VK_DEVICE_EXT_PFN(vkCmdBeginQueryIndexedEXT) \
+ VK_DEVICE_EXT_PFN(vkCmdBeginTransformFeedbackEXT) \
+ VK_DEVICE_EXT_PFN(vkCmdBindTransformFeedbackBuffersEXT) \
+ VK_DEVICE_EXT_PFN(vkCmdEndQueryIndexedEXT) \
+ VK_DEVICE_EXT_PFN(vkCmdEndTransformFeedbackEXT) \
/* VK_KHR_swapchain */ \
VK_DEVICE_PFN(vkAcquireNextImageKHR) \
VK_DEVICE_PFN(vkCreateSwapchainKHR) \
@@ -186,11 +192,13 @@ struct vulkan_ops
#define VK_INSTANCE_PFN DECLARE_VK_PFN
#define VK_INSTANCE_EXT_PFN DECLARE_VK_PFN
#define VK_DEVICE_PFN DECLARE_VK_PFN
+#define VK_DEVICE_EXT_PFN DECLARE_VK_PFN
VK_DEVICE_FUNCS()
VK_INSTANCE_FUNCS()
#undef VK_INSTANCE_PFN
#undef VK_INSTANCE_EXT_PFN
#undef VK_DEVICE_PFN
+#undef VK_DEVICE_EXT_PFN
PFN_vkCreateInstance vkCreateInstance;
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
@@ -199,6 +207,7 @@ struct vulkan_ops
enum wined3d_vk_extension
{
WINED3D_VK_EXT_NONE,
+ WINED3D_VK_EXT_TRANSFORM_FEEDBACK,
WINED3D_VK_EXT_COUNT,
};
--
2.20.1
1
0
[PATCH 5/7] wined3d: Implement vertex shader stream output in the SPIR-V shader backend.
by Henri Verbeet Oct. 7, 2020
by Henri Verbeet Oct. 7, 2020
Oct. 7, 2020
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
dlls/wined3d/shader_spirv.c | 38 ++++++++++++++++++++++++-------------
1 file changed, 25 insertions(+), 13 deletions(-)
diff --git a/dlls/wined3d/shader_spirv.c b/dlls/wined3d/shader_spirv.c
index d729bf5c390..eb2647db12d 100644
--- a/dlls/wined3d/shader_spirv.c
+++ b/dlls/wined3d/shader_spirv.c
@@ -54,6 +54,7 @@ struct shader_spirv_resource_bindings
SIZE_T vk_bindings_size, vk_binding_count;
size_t binding_base[WINED3D_SHADER_TYPE_COUNT];
+ enum wined3d_shader_type so_stage;
};
struct shader_spirv_priv
@@ -80,6 +81,7 @@ struct shader_spirv_compile_arguments
struct shader_spirv_graphics_program_variant_vk
{
struct shader_spirv_compile_arguments compile_args;
+ const struct wined3d_stream_output_desc *so_desc;
size_t binding_base;
VkShaderModule vk_module;
@@ -276,17 +278,14 @@ static const char *get_line(const char **ptr)
}
static void shader_spirv_init_shader_interface_vk(struct wined3d_shader_spirv_shader_interface *iface,
- struct wined3d_shader *shader, const struct shader_spirv_resource_bindings *b)
+ struct wined3d_shader *shader, const struct shader_spirv_resource_bindings *b,
+ const struct wined3d_stream_output_desc *so_desc)
{
- enum wined3d_shader_type shader_type = shader->reg_maps.shader_version.type;
-
memset(iface, 0, sizeof(*iface));
iface->vkd3d_interface.type = VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO;
- if (shader_type == WINED3D_SHADER_TYPE_GEOMETRY && shader->u.gs.so_desc)
+ if (so_desc)
{
- const struct wined3d_stream_output_desc *so_desc = shader->u.gs.so_desc;
-
iface->xfb_info.type = VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO;
iface->xfb_info.next = NULL;
@@ -307,7 +306,7 @@ static void shader_spirv_init_shader_interface_vk(struct wined3d_shader_spirv_sh
static VkShaderModule shader_spirv_compile(struct wined3d_context_vk *context_vk,
struct wined3d_shader *shader, const struct shader_spirv_compile_arguments *args,
- const struct shader_spirv_resource_bindings *bindings)
+ const struct shader_spirv_resource_bindings *bindings, const struct wined3d_stream_output_desc *so_desc)
{
struct wined3d_shader_spirv_compile_args compile_args;
struct wined3d_shader_spirv_shader_interface iface;
@@ -322,7 +321,7 @@ static VkShaderModule shader_spirv_compile(struct wined3d_context_vk *context_vk
VkResult vr;
int ret;
- shader_spirv_init_shader_interface_vk(&iface, shader, bindings);
+ shader_spirv_init_shader_interface_vk(&iface, shader, bindings, so_desc);
shader_type = shader->reg_maps.shader_version.type;
shader_spirv_init_compile_args(&compile_args, &iface.vkd3d_interface,
VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0, shader_type, args);
@@ -383,13 +382,17 @@ static struct shader_spirv_graphics_program_variant_vk *shader_spirv_find_graphi
struct shader_spirv_priv *priv, struct wined3d_context_vk *context_vk, struct wined3d_shader *shader,
const struct wined3d_state *state, const struct shader_spirv_resource_bindings *bindings)
{
- size_t binding_base = bindings->binding_base[shader->reg_maps.shader_version.type];
+ enum wined3d_shader_type shader_type = shader->reg_maps.shader_version.type;
struct shader_spirv_graphics_program_variant_vk *variant_vk;
+ size_t binding_base = bindings->binding_base[shader_type];
+ const struct wined3d_stream_output_desc *so_desc = NULL;
struct shader_spirv_graphics_program_vk *program_vk;
struct shader_spirv_compile_arguments args;
size_t variant_count, i;
shader_spirv_compile_arguments_init(&args, &context_vk->c, shader, state, context_vk->sample_count);
+ if (bindings->so_stage == shader_type)
+ so_desc = state->shader[WINED3D_SHADER_TYPE_GEOMETRY]->u.gs.so_desc;
if (!(program_vk = shader->backend_data))
return NULL;
@@ -398,7 +401,7 @@ static struct shader_spirv_graphics_program_variant_vk *shader_spirv_find_graphi
for (i = 0; i < variant_count; ++i)
{
variant_vk = &program_vk->variants[i];
- if (variant_vk->binding_base == binding_base
+ if (variant_vk->so_desc == so_desc && variant_vk->binding_base == binding_base
&& !memcmp(&variant_vk->compile_args, &args, sizeof(args)))
return variant_vk;
}
@@ -410,7 +413,7 @@ static struct shader_spirv_graphics_program_variant_vk *shader_spirv_find_graphi
variant_vk = &program_vk->variants[variant_count];
variant_vk->compile_args = args;
variant_vk->binding_base = binding_base;
- if (!(variant_vk->vk_module = shader_spirv_compile(context_vk, shader, &args, bindings)))
+ if (!(variant_vk->vk_module = shader_spirv_compile(context_vk, shader, &args, bindings, so_desc)))
return NULL;
++program_vk->variant_count;
@@ -434,7 +437,7 @@ static struct shader_spirv_compute_program_vk *shader_spirv_find_compute_program
if (program->vk_module)
return program;
- if (!(program->vk_module = shader_spirv_compile(context_vk, shader, NULL, bindings)))
+ if (!(program->vk_module = shader_spirv_compile(context_vk, shader, NULL, bindings, NULL)))
return NULL;
if (!(layout = wined3d_context_vk_get_pipeline_layout(context_vk,
@@ -671,6 +674,7 @@ static bool shader_spirv_resource_bindings_init(struct shader_spirv_resource_bin
bindings->binding_count = 0;
bindings->uav_counter_count = 0;
bindings->vk_binding_count = 0;
+ bindings->so_stage = WINED3D_SHADER_TYPE_GEOMETRY;
wined3d_bindings->count = 0;
for (shader_type = 0; shader_type < WINED3D_SHADER_TYPE_COUNT; ++shader_type)
@@ -681,9 +685,15 @@ static bool shader_spirv_resource_bindings_init(struct shader_spirv_resource_bin
continue;
if (shader_type == WINED3D_SHADER_TYPE_COMPUTE)
+ {
descriptor_info = &((struct shader_spirv_compute_program_vk *)shader->backend_data)->descriptor_info;
+ }
else
+ {
descriptor_info = &((struct shader_spirv_graphics_program_vk *)shader->backend_data)->descriptor_info;
+ if (shader_type == WINED3D_SHADER_TYPE_GEOMETRY && !shader->function)
+ bindings->so_stage = WINED3D_SHADER_TYPE_VERTEX;
+ }
vk_stage = vk_shader_stage_from_wined3d(shader_type);
shader_visibility = vkd3d_shader_visibility_from_wined3d(shader_type);
@@ -829,6 +839,8 @@ static void shader_spirv_select(void *shader_priv, struct wined3d_context *conte
ERR("Failed to initialise shader resource bindings.\n");
goto fail;
}
+ if (context->shader_update_mask & (1u << WINED3D_SHADER_TYPE_GEOMETRY))
+ context->shader_update_mask |= 1u << bindings->so_stage;
layout_vk = wined3d_context_vk_get_pipeline_layout(context_vk, bindings->vk_bindings, bindings->vk_binding_count);
context_vk->graphics.vk_set_layout = layout_vk->vk_set_layout;
@@ -840,7 +852,7 @@ static void shader_spirv_select(void *shader_priv, struct wined3d_context *conte
|| binding_base[shader_type] == bindings->binding_base[shader_type]))
continue;
- if (!(shader = state->shader[shader_type]))
+ if (!(shader = state->shader[shader_type]) || !shader->function)
{
context_vk->graphics.vk_modules[shader_type] = VK_NULL_HANDLE;
continue;
--
2.20.1
1
0