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
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
programs/conhost/conhost.h | 21 +++++++++++++++++
programs/conhost/conhost.rc | 30 +++++++++++++++++++++++++
programs/conhost/window.c | 45 +++++++++++++++++++++++++++++++++++++
3 files changed, 96 insertions(+)
1
0
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
---
programs/conhost/Makefile.in | 2 +-
programs/conhost/{version.rc => conhost.rc} | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename programs/conhost/{version.rc => conhost.rc} (100%)
1
0
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
Mentioned as missing in https://bugs.winehq.org/show_bug.cgi?id=39298,
current Windows 10 provides it.
dlls/kernelbase/kernelbase.rgs | 1 +
nls/c_708.nls | Bin 0 -> 66082 bytes
tools/make_unicode | 1 +
3 files changed, 2 insertions(+)
create mode 100644 nls/c_708.nls
diff --git a/dlls/kernelbase/kernelbase.rgs b/dlls/kernelbase/kernelbase.rgs
index 82a3cecb3c1..629f98ebafa 100644
--- a/dlls/kernelbase/kernelbase.rgs
+++ b/dlls/kernelbase/kernelbase.rgs
@@ -13,6 +13,7 @@ HKLM
val '37' = s 'c_037.nls'
val '437' = s 'c_437.nls'
val '500' = s 'c_500.nls'
+ val '708' = s 'c_708.nls'
val '737' = s 'c_737.nls'
val '775' = s 'c_775.nls'
val '850' = s 'c_850.nls'
diff --git a/nls/c_708.nls b/nls/c_708.nls
new file mode 100644
index 0000000000000000000000000000000000000000..bfab7c9538aa3cb0ca8ec6619741cd80edfec1fc
GIT binary patch
literal 66082
zcmeIwXK<879LMor0xT``-dmO$dg$e$B=nMm-b3%bcT`kVREm|ZV8yQ3u%!`t?>0IK
zfdmls5EVBNGw?!(S2E*#zc+jT-MO86Za#B46zlINFYTo}%HSvY$zK_iQJG|vSy_}-
z*_2%Y%AuUfrQFJ+yvnEiDxiWYq{1qqqAI51Dxs1prP3;+vMQ%QS(R4>Ra7NaRuu)Q
zs;a5FYN)1askVYuM|D+C_0>QP)kuxiL`~f<YNqCDp_U3!s9LGD+NiDCsl7U=qdKXx
z!W6Cubx~J!Q+M(a)HPxVr7^-*8-Q-2Lmqy}n`25X3hYM6#=ghpzVMr(}5YMjPvf+lK`
zCTohOYMQ2NhGuG(W^0b-YM$oH-v-)5ozg&iLWAsiT~Lw|l%iyHx83Yu8*Y2pe)gLB
z+CKJ%t}D0AZ&zrgR%x}?Xsx1r!8XViw;Lqe*!H&rY;W7uj<f-0nBAz&T56Zs<u=lW
z*)evw9bt#qp|+PTW_sEP+r^eLqiq>e)|4}W#+ve`f~jaKnaZY$2{KhpHB;TxFf~mr
zQ`-caI;O6vXX={<rlDD67uv;kiCtiundYX2X=y(a)CsA*+dn>MDcX=mD-4yL2&WICHL
z6K*0*v(a)gaN>x=Vk(a)x}W_*}^u!Zqj<Kv+Mr;FZlUq$e77w&XP4-_JABYbLGyHH(&k&
z1q&4}QnXm{5+zHOE>pH#pe<jaVx`Jef~r=lUZZBM+QD_|)~ny3VWY-PntIKew`ds>
z+NyP%w(Z(?=-8=qSa?L2uHCx#=-I1xpT7P24~QH%Xz-As!-kI-IcoHnvE#;1m^f+j
zl&RCE&zL!D_MEx%=6nCxij}KYuUUK3^ZwXy`_4P*SAV~?dpG_3FPn$Ghf+U%^zjE5
zJ?43fpGZ9{PknpddoFbl0tg_0fakq+H^OFj{Mw6(j){%i62EoZ_8mKS?cTF(a)-~Iy!
z4;?;o^w{xRw@;irb^6TNbLSHhFC<;Ol$>(;%GJBSg%bh(a)Ab<b(a)2q1s}0tg_000Iag
zfB*srAb<b(a)2q1s}0tg_000RGkz$@N@^rzf#yBFMg(XHRyTJKhB58NK!%W3nawE1e<
zymNfC<jb$#eCo-iUwr<?v(GGh?ez~AKJxUZpS}I(a)CmXMSv+2%@Y5O1D{LZa!-TL0G
zAKrWa12(a)w9GkwPf0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~
z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**
z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0
z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{
z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL
zKmY**5I_I{1Q0;rz6h-Q>Dte~{OY?e&*q^BAb<b(a)_biZ<bkV!yB`2q(T)uqe%GIk;
z(a|w6v9WP+TU_z+TV30>ZFlW(?R4#O?RM?ivv=>lef#$xa2<3VavgRZaUFFXa~*e`
ebe(dYcAasZb)9pacO(a)hwCSGve^RNB?U;GQ{mG*xC
literal 0
HcmV?d00001
diff --git a/tools/make_unicode b/tools/make_unicode
index e18ec0a206f..7aae54ccbb3 100755
--- a/tools/make_unicode
+++ b/tools/make_unicode
@@ -44,6 +44,7 @@ my @allfiles =
"CodpageFiles/037.txt",
"CodpageFiles/437.txt",
"CodpageFiles/500.txt",
+ "CodpageFiles/708.txt",
"CodpageFiles/737.txt",
"CodpageFiles/775.txt",
"CodpageFiles/850.txt",
--
2.28.0
2
1
This corresponds to vkd3d as of commit
4eadd917c7cdbbcdf802a3475cdbc05aab7eaf77.
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
---
include/d3d12sdklayers.idl | 956 +++++++++++++++++++++++++++++++++++++
1 file changed, 956 insertions(+)
diff --git a/include/d3d12sdklayers.idl b/include/d3d12sdklayers.idl
index 50103f3b35d..59b67ebe830 100644
--- a/include/d3d12sdklayers.idl
+++ b/include/d3d12sdklayers.idl
@@ -18,6 +18,916 @@
import "d3d12.idl";
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef GetMessage")
+cpp_quote("#endif")
+
+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 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;
+ 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 +951,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.20.1
1
0
[PATCH v3 2/2] dxgi: Update swapchain containing output after Alt+Enter was used to exit fullscreen.
by Zhiyi Zhang Oct. 9, 2020
by Zhiyi Zhang Oct. 9, 2020
Oct. 9, 2020
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
v2: Supersede 194122. Put a struct wined3d_swapchain_state_parent in d3d/dxgi swapchains.
struct wined3d_swapchain_state_parent is passed to wined3d_swapchain_create as a parameter
and not in struct wined3d_swapchain_desc because puttting it in there will make some
swapchain description struct conversion ugly. For example, wined3d_swapchain_desc_from_dxgi()
needs to take in account of whether it's a d3d11 or d3d12 swapchain and then set corresponding
wined3d_swapchain_state_parent unless we set the field outside of wined3d_swapchain_desc_from_dxgi(),
which doesn't seem nice also.
v3: Supersede 194317. Fix a test failures.
dlls/d3d8/d3d8_private.h | 1 +
dlls/d3d8/swapchain.c | 16 ++++++++--
dlls/d3d9/d3d9_private.h | 1 +
dlls/d3d9/swapchain.c | 16 ++++++++--
dlls/ddraw/ddraw.c | 16 ++++++++--
dlls/ddraw/ddraw_private.h | 1 +
dlls/dxgi/dxgi_private.h | 1 +
dlls/dxgi/swapchain.c | 57 ++++++++++++++++++++++++++++++++--
dlls/dxgi/tests/dxgi.c | 13 ++++----
dlls/wined3d/adapter_gl.c | 9 +++---
dlls/wined3d/adapter_vk.c | 10 +++---
dlls/wined3d/directx.c | 10 +++---
dlls/wined3d/swapchain.c | 52 ++++++++++++++++++++-----------
dlls/wined3d/wined3d.spec | 4 +--
dlls/wined3d/wined3d_private.h | 16 +++++++---
include/wine/wined3d.h | 20 ++++++++++--
16 files changed, 187 insertions(+), 56 deletions(-)
diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h
index e98746a13bd..bb25be16de0 100644
--- a/dlls/d3d8/d3d8_private.h
+++ b/dlls/d3d8/d3d8_private.h
@@ -185,6 +185,7 @@ struct d3d8_swapchain
IDirect3DSwapChain8 IDirect3DSwapChain8_iface;
LONG refcount;
struct wined3d_swapchain *wined3d_swapchain;
+ struct wined3d_swapchain_state_parent state_parent;
IDirect3DDevice8 *parent_device;
unsigned int swap_interval;
};
diff --git a/dlls/d3d8/swapchain.c b/dlls/d3d8/swapchain.c
index f08a19ca238..78db4fcaf24 100644
--- a/dlls/d3d8/swapchain.c
+++ b/dlls/d3d8/swapchain.c
@@ -156,6 +156,17 @@ static const struct wined3d_parent_ops d3d8_swapchain_wined3d_parent_ops =
d3d8_swapchain_wined3d_object_released,
};
+static void CDECL d3d8_swapchain_windowed_state_changed(struct wined3d_swapchain_state_parent *parent,
+ BOOL windowed)
+{
+ TRACE("parent %p, windowed %d.\n", parent, windowed);
+}
+
+static const struct wined3d_swapchain_state_parent_ops d3d8_swapchain_state_parent_ops =
+{
+ d3d8_swapchain_windowed_state_changed,
+};
+
static HRESULT swapchain_init(struct d3d8_swapchain *swapchain, struct d3d8_device *device,
struct wined3d_swapchain_desc *desc, unsigned int swap_interval)
{
@@ -163,10 +174,11 @@ static HRESULT swapchain_init(struct d3d8_swapchain *swapchain, struct d3d8_devi
swapchain->refcount = 1;
swapchain->IDirect3DSwapChain8_iface.lpVtbl = &d3d8_swapchain_vtbl;
+ swapchain->state_parent.ops = &d3d8_swapchain_state_parent_ops;
swapchain->swap_interval = swap_interval;
- if (FAILED(hr = wined3d_swapchain_create(device->wined3d_device, desc, swapchain,
- &d3d8_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain)))
+ if (FAILED(hr = wined3d_swapchain_create(device->wined3d_device, desc, &swapchain->state_parent,
+ swapchain, &d3d8_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain)))
{
WARN("Failed to create wined3d swapchain, hr %#x.\n", hr);
return hr;
diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h
index e78ce75a2f0..03ab10ad01b 100644
--- a/dlls/d3d9/d3d9_private.h
+++ b/dlls/d3d9/d3d9_private.h
@@ -162,6 +162,7 @@ struct d3d9_swapchain
IDirect3DSwapChain9Ex IDirect3DSwapChain9Ex_iface;
LONG refcount;
struct wined3d_swapchain *wined3d_swapchain;
+ struct wined3d_swapchain_state_parent state_parent;
IDirect3DDevice9Ex *parent_device;
unsigned int swap_interval;
};
diff --git a/dlls/d3d9/swapchain.c b/dlls/d3d9/swapchain.c
index 8d6cff982d3..0955b672c79 100644
--- a/dlls/d3d9/swapchain.c
+++ b/dlls/d3d9/swapchain.c
@@ -356,6 +356,17 @@ static const struct wined3d_parent_ops d3d9_swapchain_wined3d_parent_ops =
d3d9_swapchain_wined3d_object_released,
};
+static void CDECL d3d9_swapchain_windowed_state_changed(struct wined3d_swapchain_state_parent *parent,
+ BOOL windowed)
+{
+ TRACE("parent %p, windowed %d.\n", parent, windowed);
+}
+
+static const struct wined3d_swapchain_state_parent_ops d3d9_swapchain_state_parent_ops =
+{
+ d3d9_swapchain_windowed_state_changed,
+};
+
static HRESULT swapchain_init(struct d3d9_swapchain *swapchain, struct d3d9_device *device,
struct wined3d_swapchain_desc *desc, unsigned int swap_interval)
{
@@ -363,10 +374,11 @@ static HRESULT swapchain_init(struct d3d9_swapchain *swapchain, struct d3d9_devi
swapchain->refcount = 1;
swapchain->IDirect3DSwapChain9Ex_iface.lpVtbl = &d3d9_swapchain_vtbl;
+ swapchain->state_parent.ops = &d3d9_swapchain_state_parent_ops;
swapchain->swap_interval = swap_interval;
- if (FAILED(hr = wined3d_swapchain_create(device->wined3d_device, desc, swapchain,
- &d3d9_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain)))
+ if (FAILED(hr = wined3d_swapchain_create(device->wined3d_device, desc, &swapchain->state_parent,
+ swapchain, &d3d9_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain)))
{
WARN("Failed to create wined3d swapchain, hr %#x.\n", hr);
return hr;
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index c3c335d978e..11a16f8d535 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -80,6 +80,17 @@ const struct wined3d_parent_ops ddraw_null_wined3d_parent_ops =
ddraw_null_wined3d_object_destroyed,
};
+static void CDECL ddraw_swapchain_windowed_state_changed(struct wined3d_swapchain_state_parent *parent,
+ BOOL windowed)
+{
+ TRACE("parent %p, windowed %d.\n", parent, windowed);
+}
+
+static const struct wined3d_swapchain_state_parent_ops ddraw_swapchain_state_parent_ops =
+{
+ ddraw_swapchain_windowed_state_changed,
+};
+
static inline struct ddraw *impl_from_IDirectDraw(IDirectDraw *iface)
{
return CONTAINING_RECORD(iface, struct ddraw, IDirectDraw_iface);
@@ -577,7 +588,7 @@ static HRESULT ddraw_attach_d3d_device(struct ddraw *ddraw, HWND window,
if (ddraw->flags & DDRAW_NO3D)
return wined3d_swapchain_create(ddraw->wined3d_device, &swapchain_desc,
- NULL, &ddraw_null_wined3d_parent_ops, wined3d_swapchain);
+ &ddraw->state_parent, NULL, &ddraw_null_wined3d_parent_ops, wined3d_swapchain);
if (!window || window == GetDesktopWindow())
{
@@ -605,7 +616,7 @@ static HRESULT ddraw_attach_d3d_device(struct ddraw *ddraw, HWND window,
* recursive loop until ram or emulated video memory is full. */
ddraw->flags |= DDRAW_D3D_INITIALIZED;
if (FAILED(hr = wined3d_swapchain_create(ddraw->wined3d_device, &swapchain_desc,
- NULL, &ddraw_null_wined3d_parent_ops, wined3d_swapchain)))
+ &ddraw->state_parent, NULL, &ddraw_null_wined3d_parent_ops, wined3d_swapchain)))
{
ddraw->flags &= ~DDRAW_D3D_INITIALIZED;
DestroyWindow(window);
@@ -5105,6 +5116,7 @@ HRESULT ddraw_init(struct ddraw *ddraw, DWORD flags, enum wined3d_device_type de
ddraw->IDirect3D3_iface.lpVtbl = &d3d3_vtbl;
ddraw->IDirect3D7_iface.lpVtbl = &d3d7_vtbl;
ddraw->device_parent.ops = &ddraw_wined3d_device_parent_ops;
+ ddraw->state_parent.ops = &ddraw_swapchain_state_parent_ops;
ddraw->numIfaces = 1;
ddraw->ref7 = 1;
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 776f61e1024..6bbd62949ac 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -105,6 +105,7 @@ struct ddraw
struct wined3d_texture *wined3d_frontbuffer;
struct wined3d_texture *gdi_surface;
struct wined3d_swapchain *wined3d_swapchain;
+ struct wined3d_swapchain_state_parent state_parent;
HWND swapchain_window;
/* DirectDraw things, which are not handled by WineD3D */
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h
index e43ee59461c..acba3544e39 100644
--- a/dlls/dxgi/dxgi_private.h
+++ b/dlls/dxgi/dxgi_private.h
@@ -177,6 +177,7 @@ struct d3d11_swapchain
LONG refcount;
struct wined3d_private_store private_store;
struct wined3d_swapchain *wined3d_swapchain;
+ struct wined3d_swapchain_state_parent state_parent;
IWineDXGIDevice *device;
IDXGIFactory *factory;
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index 36beb84aa28..0f335a71cb7 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -811,6 +811,30 @@ static const struct wined3d_parent_ops d3d11_swapchain_wined3d_parent_ops =
d3d11_swapchain_wined3d_object_released,
};
+static inline struct d3d11_swapchain *d3d11_swapchain_from_wined3d_swapchain_state_parent(struct wined3d_swapchain_state_parent *parent)
+{
+ return CONTAINING_RECORD(parent, struct d3d11_swapchain, state_parent);
+}
+
+static void CDECL d3d11_swapchain_windowed_state_changed(struct wined3d_swapchain_state_parent *parent,
+ BOOL windowed)
+{
+ struct d3d11_swapchain *swapchain = d3d11_swapchain_from_wined3d_swapchain_state_parent(parent);
+
+ TRACE("parent %p, windowed %d.\n", parent, windowed);
+
+ if (windowed && swapchain->target)
+ {
+ IDXGIOutput_Release(swapchain->target);
+ swapchain->target = NULL;
+ }
+}
+
+static const struct wined3d_swapchain_state_parent_ops d3d11_swapchain_state_parent_ops =
+{
+ d3d11_swapchain_windowed_state_changed,
+};
+
HRESULT d3d11_swapchain_init(struct d3d11_swapchain *swapchain, struct dxgi_device *device,
struct wined3d_swapchain_desc *desc)
{
@@ -840,6 +864,7 @@ HRESULT d3d11_swapchain_init(struct d3d11_swapchain *swapchain, struct dxgi_devi
}
swapchain->IDXGISwapChain1_iface.lpVtbl = &d3d11_swapchain_vtbl;
+ swapchain->state_parent.ops = &d3d11_swapchain_state_parent_ops;
swapchain->refcount = 1;
wined3d_mutex_lock();
wined3d_private_store_init(&swapchain->private_store);
@@ -849,8 +874,8 @@ HRESULT d3d11_swapchain_init(struct d3d11_swapchain *swapchain, struct dxgi_devi
fullscreen = !desc->windowed;
desc->windowed = TRUE;
- if (FAILED(hr = wined3d_swapchain_create(device->wined3d_device, desc, swapchain,
- &d3d11_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain)))
+ if (FAILED(hr = wined3d_swapchain_create(device->wined3d_device, desc, &swapchain->state_parent,
+ swapchain, &d3d11_swapchain_wined3d_parent_ops, &swapchain->wined3d_swapchain)))
{
WARN("Failed to create wined3d swapchain, hr %#x.\n", hr);
goto cleanup;
@@ -1037,6 +1062,7 @@ struct d3d12_swapchain
struct wined3d_private_store private_store;
struct wined3d_swapchain_state *state;
+ struct wined3d_swapchain_state_parent state_parent;
VkSwapchainKHR vk_swapchain;
VkSurfaceKHR vk_surface;
@@ -2938,6 +2964,30 @@ static BOOL init_vk_funcs(struct dxgi_vk_funcs *dxgi, VkInstance vk_instance, Vk
return TRUE;
}
+static inline struct d3d12_swapchain *d3d12_swapchain_from_wined3d_swapchain_state_parent(struct wined3d_swapchain_state_parent *parent)
+{
+ return CONTAINING_RECORD(parent, struct d3d12_swapchain, state_parent);
+}
+
+static void CDECL d3d12_swapchain_windowed_state_changed(struct wined3d_swapchain_state_parent *parent,
+ BOOL windowed)
+{
+ struct d3d12_swapchain *swapchain = d3d12_swapchain_from_wined3d_swapchain_state_parent(parent);
+
+ TRACE("parent %p, windowed %d.\n", parent, windowed);
+
+ if (windowed && swapchain->target)
+ {
+ IDXGIOutput_Release(swapchain->target);
+ swapchain->target = NULL;
+ }
+}
+
+static const struct wined3d_swapchain_state_parent_ops d3d12_swapchain_state_parent_ops =
+{
+ d3d12_swapchain_windowed_state_changed,
+};
+
static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGIFactory *factory,
ID3D12Device *device, ID3D12CommandQueue *queue, HWND window,
const DXGI_SWAP_CHAIN_DESC1 *swapchain_desc, const DXGI_SWAP_CHAIN_FULLSCREEN_DESC *fullscreen_desc)
@@ -2967,6 +3017,7 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI
}
swapchain->IDXGISwapChain4_iface.lpVtbl = &d3d12_swapchain_vtbl;
+ swapchain->state_parent.ops = &d3d12_swapchain_state_parent_ops;
swapchain->refcount = 1;
swapchain->window = window;
@@ -3024,7 +3075,7 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI
dxgi_factory = unsafe_impl_from_IDXGIFactory((IDXGIFactory *)factory);
if (FAILED(hr = wined3d_swapchain_state_create(&wined3d_desc, window, dxgi_factory->wined3d,
- &swapchain->state)))
+ &swapchain->state_parent, &swapchain->state)))
{
IDXGIOutput_Release(output);
return hr;
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index 2838a025e57..bf798508a6d 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -2431,7 +2431,7 @@ static void test_get_containing_output(IUnknown *device, BOOL is_d3d12)
flush_events();
hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, NULL);
ok(hr == S_OK, "GetFullscreenState failed, hr %#x.\n", hr);
- todo_wine_if(is_d3d12) ok(!fullscreen, "Expect swapchain not full screen.\n");
+ ok(!fullscreen, "Expect swapchain not full screen.\n");
/* Move the swapchain output window to the second output */
hr = IDXGIOutput_GetDesc(output2, &output_desc2);
@@ -2453,7 +2453,7 @@ static void test_get_containing_output(IUnknown *device, BOOL is_d3d12)
ok(hr == S_OK, "GetDesc failed, hr %#x.\n", hr);
hr = IDXGIOutput_GetDesc(output2, &output_desc2);
ok(hr == S_OK, "GetDesc failed, hr %#x.\n", hr);
- todo_wine ok(!lstrcmpW(output_desc.DeviceName, output_desc2.DeviceName),
+ ok(!lstrcmpW(output_desc.DeviceName, output_desc2.DeviceName),
"Expect device name %s, got %s.\n", wine_dbgstr_w(output_desc2.DeviceName),
wine_dbgstr_w(output_desc.DeviceName));
IDXGIOutput_Release(output);
@@ -2465,7 +2465,7 @@ static void test_get_containing_output(IUnknown *device, BOOL is_d3d12)
ok(hr == S_OK, "GetDesc failed, hr %#x.\n", hr);
hr = IDXGIOutput_GetDesc(output2, &output_desc2);
ok(hr == S_OK, "GetDesc failed, hr %#x.\n", hr);
- todo_wine ok(!lstrcmpW(output_desc.DeviceName, output_desc2.DeviceName),
+ ok(!lstrcmpW(output_desc.DeviceName, output_desc2.DeviceName),
"Expect device name %s, got %s.\n", wine_dbgstr_w(output_desc2.DeviceName),
wine_dbgstr_w(output_desc.DeviceName));
@@ -6148,7 +6148,6 @@ static void test_window_association(IUnknown *device, BOOL is_d3d12)
UINT flag;
BOOL expect_fullscreen;
BOOL broken_d3d10;
- BOOL todo_on_d3d12;
}
tests[] =
{
@@ -6162,15 +6161,15 @@ static void test_window_association(IUnknown *device, BOOL is_d3d12)
* - Posting them hangs the posting thread. Another thread that keeps
* sending input is needed to avoid the hang. The hang is not
* because of flush_events(). */
- {0, TRUE, FALSE, TRUE},
+ {0, TRUE},
{0, FALSE},
{DXGI_MWA_NO_WINDOW_CHANGES, FALSE},
{DXGI_MWA_NO_WINDOW_CHANGES, FALSE},
{DXGI_MWA_NO_ALT_ENTER, FALSE, TRUE},
{DXGI_MWA_NO_ALT_ENTER, FALSE},
- {DXGI_MWA_NO_PRINT_SCREEN, TRUE, FALSE, TRUE},
+ {DXGI_MWA_NO_PRINT_SCREEN, TRUE},
{DXGI_MWA_NO_PRINT_SCREEN, FALSE},
- {0, TRUE, FALSE, TRUE},
+ {0, TRUE},
{0, FALSE}
};
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 5bf9d179e4d..140948beb6d 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -4590,19 +4590,20 @@ static void adapter_gl_copy_bo_address(struct wined3d_context *context,
wined3d_context_gl_copy_bo_address(wined3d_context_gl(context), dst, src, size);
}
-static HRESULT adapter_gl_create_swapchain(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
+static HRESULT adapter_gl_create_swapchain(struct wined3d_device *device,
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
{
struct wined3d_swapchain_gl *swapchain_gl;
HRESULT hr;
- TRACE("device %p, desc %p, parent %p, parent_ops %p, swapchain %p.\n",
- device, desc, parent, parent_ops, swapchain);
+ TRACE("device %p, desc %p, state_parent %p, parent %p, parent_ops %p, swapchain %p.\n",
+ device, desc, state_parent, parent, parent_ops, swapchain);
if (!(swapchain_gl = heap_alloc_zero(sizeof(*swapchain_gl))))
return E_OUTOFMEMORY;
- if (FAILED(hr = wined3d_swapchain_gl_init(swapchain_gl, device, desc, parent, parent_ops)))
+ if (FAILED(hr = wined3d_swapchain_gl_init(swapchain_gl, device, desc, state_parent, parent, parent_ops)))
{
WARN("Failed to initialise swapchain, hr %#x.\n", hr);
heap_free(swapchain_gl);
diff --git a/dlls/wined3d/adapter_vk.c b/dlls/wined3d/adapter_vk.c
index 5c219d45d3e..64850944040 100644
--- a/dlls/wined3d/adapter_vk.c
+++ b/dlls/wined3d/adapter_vk.c
@@ -1103,19 +1103,21 @@ static void adapter_vk_copy_bo_address(struct wined3d_context *context,
adapter_vk_unmap_bo_address(context, src, 0, NULL);
}
-static HRESULT adapter_vk_create_swapchain(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
+static HRESULT adapter_vk_create_swapchain(struct wined3d_device *device,
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
{
struct wined3d_swapchain_vk *swapchain_vk;
HRESULT hr;
- TRACE("device %p, desc %p, parent %p, parent_ops %p, swapchain %p.\n",
- device, desc, parent, parent_ops, swapchain);
+ TRACE("device %p, desc %p, state_parent %p, parent %p, parent_ops %p, swapchain %p.\n",
+ device, desc, state_parent, parent, parent_ops, swapchain);
if (!(swapchain_vk = heap_alloc_zero(sizeof(*swapchain_vk))))
return E_OUTOFMEMORY;
- if (FAILED(hr = wined3d_swapchain_vk_init(swapchain_vk, device, desc, parent, parent_ops)))
+ if (FAILED(hr = wined3d_swapchain_vk_init(swapchain_vk, device, desc, state_parent, parent,
+ parent_ops)))
{
WARN("Failed to initialise swapchain, hr %#x.\n", hr);
heap_free(swapchain_vk);
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 0fa05a06be6..108a190bf61 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -2665,19 +2665,21 @@ static void adapter_no3d_copy_bo_address(struct wined3d_context *context,
memcpy(dst->addr, src->addr, size);
}
-static HRESULT adapter_no3d_create_swapchain(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
+static HRESULT adapter_no3d_create_swapchain(struct wined3d_device *device,
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
{
struct wined3d_swapchain *swapchain_no3d;
HRESULT hr;
- TRACE("device %p, desc %p, parent %p, parent_ops %p, swapchain %p.\n",
- device, desc, parent, parent_ops, swapchain);
+ TRACE("device %p, desc %p, state_parent %p, parent %p, parent_ops %p, swapchain %p.\n",
+ device, desc, state_parent, parent, parent_ops, swapchain);
if (!(swapchain_no3d = heap_alloc_zero(sizeof(*swapchain_no3d))))
return E_OUTOFMEMORY;
- if (FAILED(hr = wined3d_swapchain_no3d_init(swapchain_no3d, device, desc, parent, parent_ops)))
+ if (FAILED(hr = wined3d_swapchain_no3d_init(swapchain_no3d, device, desc, state_parent, parent,
+ parent_ops)))
{
WARN("Failed to initialise swapchain, hr %#x.\n", hr);
heap_free(swapchain_no3d);
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index b35fb5af65a..f8214379971 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -1288,7 +1288,8 @@ static enum wined3d_format_id adapter_format_from_backbuffer_format(const struct
}
static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *state,
- const struct wined3d_swapchain_desc *desc, HWND window, struct wined3d *wined3d)
+ const struct wined3d_swapchain_desc *desc, HWND window, struct wined3d *wined3d,
+ struct wined3d_swapchain_state_parent *parent)
{
HRESULT hr;
@@ -1319,6 +1320,7 @@ static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *stat
GetWindowRect(window, &state->original_window_rect);
state->device_window = window;
+ state->parent = parent;
if (desc->flags & WINED3D_SWAPCHAIN_REGISTER_STATE)
wined3d_swapchain_state_register(state, wined3d);
@@ -1327,7 +1329,8 @@ static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *stat
}
static HRESULT wined3d_swapchain_init(struct wined3d_swapchain *swapchain, struct wined3d_device *device,
- struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops,
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
+ void *parent, const struct wined3d_parent_ops *parent_ops,
const struct wined3d_swapchain_ops *swapchain_ops)
{
struct wined3d_resource_desc texture_desc;
@@ -1353,7 +1356,7 @@ static HRESULT wined3d_swapchain_init(struct wined3d_swapchain *swapchain, struc
FIXME("Unimplemented swap effect %#x.\n", desc->swap_effect);
window = desc->device_window ? desc->device_window : device->create_parms.focus_window;
- if (FAILED(hr = wined3d_swapchain_state_init(&swapchain->state, desc, window, device->wined3d)))
+ if (FAILED(hr = wined3d_swapchain_state_init(&swapchain->state, desc, window, device->wined3d, state_parent)))
{
ERR("Failed to initialise swapchain state, hr %#x.\n", hr);
goto err;
@@ -1568,23 +1571,27 @@ err:
}
HRESULT wined3d_swapchain_no3d_init(struct wined3d_swapchain *swapchain_no3d, struct wined3d_device *device,
- struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops)
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
+ void *parent, const struct wined3d_parent_ops *parent_ops)
{
- TRACE("swapchain_no3d %p, device %p, desc %p, parent %p, parent_ops %p.\n",
- swapchain_no3d, device, desc, parent, parent_ops);
+ TRACE("swapchain_no3d %p, device %p, desc %p, state_parent %p, parent %p, parent_ops %p.\n",
+ swapchain_no3d, device, desc, state_parent, parent, parent_ops);
- return wined3d_swapchain_init(swapchain_no3d, device, desc, parent, parent_ops, &swapchain_no3d_ops);
+ return wined3d_swapchain_init(swapchain_no3d, device, desc, state_parent, parent, parent_ops,
+ &swapchain_no3d_ops);
}
HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain_gl *swapchain_gl, struct wined3d_device *device,
- struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops)
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
+ void *parent, const struct wined3d_parent_ops *parent_ops)
{
HRESULT hr;
- TRACE("swapchain_gl %p, device %p, desc %p, parent %p, parent_ops %p.\n",
- swapchain_gl, device, desc, parent, parent_ops);
+ TRACE("swapchain_gl %p, device %p, desc %p, state_parent %p, parent %p, parent_ops %p.\n",
+ swapchain_gl, device, desc, state_parent, parent, parent_ops);
- if (FAILED(hr = wined3d_swapchain_init(&swapchain_gl->s, device, desc, parent, parent_ops, &swapchain_gl_ops)))
+ if (FAILED(hr = wined3d_swapchain_init(&swapchain_gl->s, device, desc, state_parent, parent,
+ parent_ops, &swapchain_gl_ops)))
{
/* Cleanup any context that may have been created for the swapchain. */
wined3d_cs_destroy_object(device->cs, wined3d_swapchain_gl_destroy_object, swapchain_gl);
@@ -1595,14 +1602,16 @@ HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain_gl *swapchain_gl, str
}
HRESULT wined3d_swapchain_vk_init(struct wined3d_swapchain_vk *swapchain_vk, struct wined3d_device *device,
- struct wined3d_swapchain_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops)
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
+ void *parent, const struct wined3d_parent_ops *parent_ops)
{
HRESULT hr;
TRACE("swapchain_vk %p, device %p, desc %p, parent %p, parent_ops %p.\n",
swapchain_vk, device, desc, parent, parent_ops);
- if (FAILED(hr = wined3d_swapchain_init(&swapchain_vk->s, device, desc, parent, parent_ops, &swapchain_vk_ops)))
+ if (FAILED(hr = wined3d_swapchain_init(&swapchain_vk->s, device, desc, state_parent, parent,
+ parent_ops, &swapchain_vk_ops)))
return hr;
if (swapchain_vk->s.win_handle == GetDesktopWindow())
@@ -1620,14 +1629,16 @@ HRESULT wined3d_swapchain_vk_init(struct wined3d_swapchain_vk *swapchain_vk, str
return hr;
}
-HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
- void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
+HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device,
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
+ void *parent, const struct wined3d_parent_ops *parent_ops,
+ struct wined3d_swapchain **swapchain)
{
struct wined3d_swapchain *object;
HRESULT hr;
if (FAILED(hr = device->adapter->adapter_ops->adapter_create_swapchain(device,
- desc, parent, parent_ops, &object)))
+ desc, state_parent, parent, parent_ops, &object)))
return hr;
if (desc->flags & WINED3D_SWAPCHAIN_IMPLICIT)
@@ -2175,6 +2186,7 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
{
struct wined3d_display_mode actual_mode;
struct wined3d_output_desc output_desc;
+ BOOL windowed = state->desc.windowed;
HRESULT hr;
TRACE("state %p, swapchain_desc %p, mode %p.\n", state, swapchain_desc, mode);
@@ -2263,6 +2275,9 @@ HRESULT CDECL wined3d_swapchain_state_set_fullscreen(struct wined3d_swapchain_st
state->desc.output = swapchain_desc->output;
state->desc.windowed = swapchain_desc->windowed;
+ if (windowed != state->desc.windowed)
+ state->parent->ops->windowed_state_changed(state->parent, state->desc.windowed);
+
return WINED3D_OK;
}
@@ -2280,7 +2295,8 @@ void CDECL wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state
}
HRESULT CDECL wined3d_swapchain_state_create(const struct wined3d_swapchain_desc *desc,
- HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state **state)
+ HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state_parent *state_parent,
+ struct wined3d_swapchain_state **state)
{
struct wined3d_swapchain_state *s;
HRESULT hr;
@@ -2290,7 +2306,7 @@ HRESULT CDECL wined3d_swapchain_state_create(const struct wined3d_swapchain_desc
if (!(s = heap_alloc_zero(sizeof(*s))))
return E_OUTOFMEMORY;
- if (FAILED(hr = wined3d_swapchain_state_init(s, desc, window, wined3d)))
+ if (FAILED(hr = wined3d_swapchain_state_init(s, desc, window, wined3d, state_parent)))
{
heap_free(s);
return hr;
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index 77b22b3c907..e4ff1161bce 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -271,7 +271,7 @@
@ cdecl wined3d_stateblock_set_vs_consts_f(ptr long long ptr)
@ cdecl wined3d_stateblock_set_vs_consts_i(ptr long long ptr)
-@ cdecl wined3d_swapchain_create(ptr ptr ptr ptr ptr)
+@ cdecl wined3d_swapchain_create(ptr ptr ptr ptr ptr ptr)
@ cdecl wined3d_swapchain_decref(ptr)
@ cdecl wined3d_swapchain_get_back_buffer(ptr long)
@ cdecl wined3d_swapchain_get_device(ptr)
@@ -289,7 +289,7 @@
@ cdecl wined3d_swapchain_set_palette(ptr ptr)
@ cdecl wined3d_swapchain_set_window(ptr ptr)
-@ cdecl wined3d_swapchain_state_create(ptr ptr ptr ptr)
+@ cdecl wined3d_swapchain_state_create(ptr ptr ptr ptr ptr)
@ cdecl wined3d_swapchain_state_destroy(ptr)
@ cdecl wined3d_swapchain_state_is_windowed(ptr)
@ cdecl wined3d_swapchain_state_resize_target(ptr ptr)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index bbb0a60d7bb..4c2204cd86e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3245,8 +3245,10 @@ struct wined3d_adapter_ops
unsigned int range_count, const struct wined3d_range *ranges);
void (*adapter_copy_bo_address)(struct wined3d_context *context,
const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, size_t size);
- HRESULT (*adapter_create_swapchain)(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
- void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain);
+ HRESULT (*adapter_create_swapchain)(struct wined3d_device *device,
+ struct wined3d_swapchain_desc *desc,
+ struct wined3d_swapchain_state_parent *state_parent, void *parent,
+ const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain);
void (*adapter_destroy_swapchain)(struct wined3d_swapchain *swapchain);
HRESULT (*adapter_create_buffer)(struct wined3d_device *device, const struct wined3d_buffer_desc *desc,
const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops,
@@ -5070,6 +5072,7 @@ void wined3d_unordered_access_view_vk_update(struct wined3d_unordered_access_vie
struct wined3d_swapchain_state
{
struct wined3d_swapchain_desc desc;
+ struct wined3d_swapchain_state_parent *parent;
struct wined3d_display_mode original_mode, d3d_mode;
RECT original_window_rect;
@@ -5128,7 +5131,8 @@ void swapchain_set_max_frame_latency(struct wined3d_swapchain *swapchain,
HRESULT wined3d_swapchain_no3d_init(struct wined3d_swapchain *swapchain_no3d,
struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
- void *parent, const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
+ struct wined3d_swapchain_state_parent *state_parent, void *parent,
+ const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
struct wined3d_swapchain_gl
{
@@ -5153,7 +5157,8 @@ HDC wined3d_swapchain_gl_get_backup_dc(struct wined3d_swapchain_gl *swapchain_gl
struct wined3d_context_gl *wined3d_swapchain_gl_get_context(struct wined3d_swapchain_gl *swapchain_gl) DECLSPEC_HIDDEN;
HRESULT wined3d_swapchain_gl_init(struct wined3d_swapchain_gl *swapchain_gl,
struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
- void *parent, const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
+ struct wined3d_swapchain_state_parent *state_parent, void *parent,
+ const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
struct wined3d_swapchain_vk
{
@@ -5179,7 +5184,8 @@ static inline struct wined3d_swapchain_vk *wined3d_swapchain_vk(struct wined3d_s
void wined3d_swapchain_vk_cleanup(struct wined3d_swapchain_vk *swapchain_vk) DECLSPEC_HIDDEN;
HRESULT wined3d_swapchain_vk_init(struct wined3d_swapchain_vk *swapchain_vk,
struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
- void *parent, const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
+ struct wined3d_swapchain_state_parent *state_parent, void *parent,
+ const struct wined3d_parent_ops *parent_ops) DECLSPEC_HIDDEN;
/*****************************************************************************
* Utility function prototypes
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 61ab0e90953..62ea3960118 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2248,6 +2248,17 @@ struct wined3d_device_parent_ops
const struct wined3d_resource_desc *desc, DWORD texture_flags, struct wined3d_texture **texture);
};
+struct wined3d_swapchain_state_parent
+{
+ const struct wined3d_swapchain_state_parent_ops *ops;
+};
+
+struct wined3d_swapchain_state_parent_ops
+{
+ void (__cdecl *windowed_state_changed)(struct wined3d_swapchain_state_parent *state_parent,
+ BOOL windowed);
+};
+
struct wined3d_private_store
{
struct list content;
@@ -2774,8 +2785,10 @@ HRESULT __cdecl wined3d_stateblock_set_vs_consts_f(struct wined3d_stateblock *st
HRESULT __cdecl wined3d_stateblock_set_vs_consts_i(struct wined3d_stateblock *stateblock,
unsigned int start_idx, unsigned int count, const struct wined3d_ivec4 *constants);
-HRESULT __cdecl wined3d_swapchain_create(struct wined3d_device *device, struct wined3d_swapchain_desc *desc,
- void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain);
+HRESULT __cdecl wined3d_swapchain_create(struct wined3d_device *device,
+ struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent,
+ void *parent, const struct wined3d_parent_ops *parent_ops,
+ struct wined3d_swapchain **swapchain);
ULONG __cdecl wined3d_swapchain_decref(struct wined3d_swapchain *swapchain);
struct wined3d_texture * __cdecl wined3d_swapchain_get_back_buffer(const struct wined3d_swapchain *swapchain,
UINT backbuffer_idx);
@@ -2804,7 +2817,8 @@ void __cdecl wined3d_swapchain_set_palette(struct wined3d_swapchain *swapchain,
void __cdecl wined3d_swapchain_set_window(struct wined3d_swapchain *swapchain, HWND window);
HRESULT __cdecl wined3d_swapchain_state_create(const struct wined3d_swapchain_desc *desc,
- HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state **state);
+ HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state_parent *state_parent,
+ struct wined3d_swapchain_state **state);
void __cdecl wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state);
BOOL __cdecl wined3d_swapchain_state_is_windowed(const struct wined3d_swapchain_state *state);
HRESULT __cdecl wined3d_swapchain_state_resize_target(struct wined3d_swapchain_state *state,
--
2.25.1
2
1
Oct. 9, 2020
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
v2: Supersede 194121 and 194123. Make wined3d_swapchain_state_register/unregister
private in wined3d.
v3: Supersede 194316.
dlls/dxgi/swapchain.c | 32 +++++++++--
dlls/dxgi/tests/dxgi.c | 1 -
dlls/dxgi/utils.c | 2 +-
dlls/wined3d/swapchain.c | 19 +++----
dlls/wined3d/wined3d.spec | 2 +-
dlls/wined3d/wined3d_main.c | 99 +++++++++++++++++-----------------
dlls/wined3d/wined3d_private.h | 5 +-
include/wine/wined3d.h | 4 +-
8 files changed, 95 insertions(+), 69 deletions(-)
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index f3b74389d29..36beb84aa28 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -2272,18 +2272,37 @@ static HRESULT STDMETHODCALLTYPE d3d12_swapchain_GetFullscreenState(IDXGISwapCha
BOOL *fullscreen, IDXGIOutput **target)
{
struct d3d12_swapchain *swapchain = d3d12_swapchain_from_IDXGISwapChain4(iface);
+ BOOL windowed;
+ HRESULT hr;
TRACE("iface %p, fullscreen %p, target %p.\n", iface, fullscreen, target);
- if (fullscreen)
+ if (fullscreen || target)
{
wined3d_mutex_lock();
- *fullscreen = !wined3d_swapchain_state_is_windowed(swapchain->state);
+ windowed = wined3d_swapchain_state_is_windowed(swapchain->state);
wined3d_mutex_unlock();
}
- if (target && (*target = swapchain->target))
- IDXGIOutput_AddRef(*target);
+ if (fullscreen)
+ *fullscreen = !windowed;
+
+ if (target)
+ {
+ if (!windowed)
+ {
+ if (!swapchain->target && FAILED(hr = IDXGISwapChain4_GetContainingOutput(iface,
+ &swapchain->target)))
+ return hr;
+
+ *target = swapchain->target;
+ IDXGIOutput_AddRef(*target);
+ }
+ else
+ {
+ *target = NULL;
+ }
+ }
return S_OK;
}
@@ -2927,6 +2946,7 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI
struct wined3d_swapchain_desc wined3d_desc;
VkWin32SurfaceCreateInfoKHR surface_desc;
VkPhysicalDevice vk_physical_device;
+ struct dxgi_factory *dxgi_factory;
VkFenceCreateInfo fence_desc;
uint32_t queue_family_index;
VkSurfaceKHR vk_surface;
@@ -3002,7 +3022,9 @@ static HRESULT d3d12_swapchain_init(struct d3d12_swapchain *swapchain, IWineDXGI
return hr;
}
- if (FAILED(hr = wined3d_swapchain_state_create(&wined3d_desc, window, &swapchain->state)))
+ dxgi_factory = unsafe_impl_from_IDXGIFactory((IDXGIFactory *)factory);
+ if (FAILED(hr = wined3d_swapchain_state_create(&wined3d_desc, window, dxgi_factory->wined3d,
+ &swapchain->state)))
{
IDXGIOutput_Release(output);
return hr;
diff --git a/dlls/dxgi/tests/dxgi.c b/dlls/dxgi/tests/dxgi.c
index f747e236f31..2838a025e57 100644
--- a/dlls/dxgi/tests/dxgi.c
+++ b/dlls/dxgi/tests/dxgi.c
@@ -6272,7 +6272,6 @@ static void test_window_association(IUnknown *device, BOOL is_d3d12)
output = NULL;
hr = IDXGISwapChain_GetFullscreenState(swapchain, &fullscreen, &output);
ok(hr == S_OK, "Test %u: Got unexpected hr %#x.\n", i, hr);
- todo_wine_if(is_d3d12 && tests[i].todo_on_d3d12)
ok(fullscreen == tests[i].expect_fullscreen
|| broken(tests[i].broken_d3d10 && fullscreen),
"Test %u: Got unexpected fullscreen %#x.\n", i, fullscreen);
diff --git a/dlls/dxgi/utils.c b/dlls/dxgi/utils.c
index 665413e4c62..af72f83b6b0 100644
--- a/dlls/dxgi/utils.c
+++ b/dlls/dxgi/utils.c
@@ -520,7 +520,7 @@ unsigned int wined3d_bind_flags_from_dxgi_usage(DXGI_USAGE dxgi_usage)
#define DXGI_WINED3D_SWAPCHAIN_FLAGS \
(WINED3D_SWAPCHAIN_USE_CLOSEST_MATCHING_MODE | WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT \
- | WINED3D_SWAPCHAIN_HOOK | WINED3D_SWAPCHAIN_RESTORE_WINDOW_STATE)
+ | WINED3D_SWAPCHAIN_REGISTER_STATE | WINED3D_SWAPCHAIN_RESTORE_WINDOW_STATE)
unsigned int dxgi_swapchain_flags_from_wined3d(unsigned int wined3d_flags)
{
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index d0d93417a18..b35fb5af65a 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -34,7 +34,7 @@ void wined3d_swapchain_cleanup(struct wined3d_swapchain *swapchain)
TRACE("Destroying swapchain %p.\n", swapchain);
- wined3d_unhook_swapchain(swapchain);
+ wined3d_swapchain_state_unregister(&swapchain->state);
wined3d_swapchain_set_gamma_ramp(swapchain, 0, &swapchain->orig_gamma);
/* Release the swapchain's draw buffers. Make sure swapchain->back_buffers[0]
@@ -1288,7 +1288,7 @@ static enum wined3d_format_id adapter_format_from_backbuffer_format(const struct
}
static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *state,
- const struct wined3d_swapchain_desc *desc, HWND window)
+ const struct wined3d_swapchain_desc *desc, HWND window, struct wined3d *wined3d)
{
HRESULT hr;
@@ -1320,6 +1320,9 @@ static HRESULT wined3d_swapchain_state_init(struct wined3d_swapchain_state *stat
GetWindowRect(window, &state->original_window_rect);
state->device_window = window;
+ if (desc->flags & WINED3D_SWAPCHAIN_REGISTER_STATE)
+ wined3d_swapchain_state_register(state, wined3d);
+
return hr;
}
@@ -1350,7 +1353,7 @@ static HRESULT wined3d_swapchain_init(struct wined3d_swapchain *swapchain, struc
FIXME("Unimplemented swap effect %#x.\n", desc->swap_effect);
window = desc->device_window ? desc->device_window : device->create_parms.focus_window;
- if (FAILED(hr = wined3d_swapchain_state_init(&swapchain->state, desc, window)))
+ if (FAILED(hr = wined3d_swapchain_state_init(&swapchain->state, desc, window, device->wined3d)))
{
ERR("Failed to initialise swapchain state, hr %#x.\n", hr);
goto err;
@@ -1627,9 +1630,6 @@ HRESULT CDECL wined3d_swapchain_create(struct wined3d_device *device, struct win
desc, parent, parent_ops, &object)))
return hr;
- if (desc->flags & WINED3D_SWAPCHAIN_HOOK)
- wined3d_hook_swapchain(object);
-
if (desc->flags & WINED3D_SWAPCHAIN_IMPLICIT)
{
wined3d_mutex_lock();
@@ -2275,21 +2275,22 @@ BOOL CDECL wined3d_swapchain_state_is_windowed(const struct wined3d_swapchain_st
void CDECL wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state)
{
+ wined3d_swapchain_state_unregister(state);
heap_free(state);
}
HRESULT CDECL wined3d_swapchain_state_create(const struct wined3d_swapchain_desc *desc,
- HWND window, struct wined3d_swapchain_state **state)
+ HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state **state)
{
struct wined3d_swapchain_state *s;
HRESULT hr;
- TRACE("desc %p, window %p, state %p.\n", desc, window, state);
+ TRACE("desc %p, window %p, wined3d %p, state %p.\n", desc, window, wined3d, state);
if (!(s = heap_alloc_zero(sizeof(*s))))
return E_OUTOFMEMORY;
- if (FAILED(hr = wined3d_swapchain_state_init(s, desc, window)))
+ if (FAILED(hr = wined3d_swapchain_state_init(s, desc, window, wined3d)))
{
heap_free(s);
return hr;
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index d11e06d0c34..77b22b3c907 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -289,7 +289,7 @@
@ cdecl wined3d_swapchain_set_palette(ptr ptr)
@ cdecl wined3d_swapchain_set_window(ptr ptr)
-@ cdecl wined3d_swapchain_state_create(ptr ptr ptr)
+@ cdecl wined3d_swapchain_state_create(ptr ptr ptr ptr)
@ cdecl wined3d_swapchain_state_destroy(ptr)
@ cdecl wined3d_swapchain_state_is_windowed(ptr)
@ cdecl wined3d_swapchain_state_resize_target(ptr ptr)
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
index c98aee18bdd..001b7dd1255 100644
--- a/dlls/wined3d/wined3d_main.c
+++ b/dlls/wined3d/wined3d_main.c
@@ -56,25 +56,26 @@ struct wined3d_window_hook
unsigned int count;
};
-struct wined3d_hooked_swapchain
+struct wined3d_registered_swapchain_state
{
- struct wined3d_swapchain *swapchain;
+ struct wined3d_swapchain_state *state;
+ struct wined3d *wined3d;
DWORD thread_id;
};
-struct wined3d_hook_table
+struct wined3d_swapchain_state_table
{
struct wined3d_window_hook *hooks;
SIZE_T hooks_size;
SIZE_T hook_count;
- struct wined3d_hooked_swapchain *swapchains;
- SIZE_T swapchains_size;
- SIZE_T swapchain_count;
+ struct wined3d_registered_swapchain_state *states;
+ SIZE_T states_size;
+ SIZE_T state_count;
};
static struct wined3d_wndproc_table wndproc_table;
-static struct wined3d_hook_table hook_table;
+static struct wined3d_swapchain_state_table swapchain_state_table;
static CRITICAL_SECTION wined3d_cs;
static CRITICAL_SECTION_DEBUG wined3d_cs_debug =
@@ -425,13 +426,13 @@ static BOOL wined3d_dll_destroy(HINSTANCE hInstDLL)
}
heap_free(wndproc_table.entries);
- heap_free(hook_table.swapchains);
- for (i = 0; i < hook_table.hook_count; ++i)
+ heap_free(swapchain_state_table.states);
+ for (i = 0; i < swapchain_state_table.hook_count; ++i)
{
- WARN("Leftover hook table entry %p.\n", &hook_table.hooks[i]);
- UnhookWindowsHookEx(hook_table.hooks[i].hook);
+ WARN("Leftover swapchain state hook %p.\n", &swapchain_state_table.hooks[i]);
+ UnhookWindowsHookEx(swapchain_state_table.hooks[i].hook);
}
- heap_free(hook_table.hooks);
+ heap_free(swapchain_state_table.hooks);
heap_free(wined3d_settings.logo);
UnregisterClassA(WINED3D_OPENGL_WINDOW_CLASS_NAME, hInstDLL);
@@ -573,8 +574,8 @@ static LRESULT CALLBACK wined3d_wndproc(HWND window, UINT message, WPARAM wparam
static LRESULT CALLBACK wined3d_hook_proc(int code, WPARAM wparam, LPARAM lparam)
{
+ struct wined3d_registered_swapchain_state *registered_state;
struct wined3d_swapchain_desc swapchain_desc;
- struct wined3d_swapchain *swapchain;
struct wined3d_wndproc *entry;
struct wined3d_output *output;
MSG *msg = (MSG *)lparam;
@@ -586,28 +587,28 @@ static LRESULT CALLBACK wined3d_hook_proc(int code, WPARAM wparam, LPARAM lparam
{
wined3d_wndproc_mutex_lock();
- for (i = 0; i < hook_table.swapchain_count; ++i)
+ for (i = 0; i < swapchain_state_table.state_count; ++i)
{
- swapchain = hook_table.swapchains[i].swapchain;
+ registered_state = &swapchain_state_table.states[i];
- if (swapchain->state.device_window != msg->hwnd)
+ if (registered_state->state->device_window != msg->hwnd)
continue;
- if ((entry = wined3d_find_wndproc(msg->hwnd, swapchain->device->wined3d))
+ if ((entry = wined3d_find_wndproc(msg->hwnd, registered_state->wined3d))
&& (entry->flags & (WINED3D_REGISTER_WINDOW_NO_WINDOW_CHANGES
| WINED3D_REGISTER_WINDOW_NO_ALT_ENTER)))
continue;
- wined3d_swapchain_get_desc(swapchain, &swapchain_desc);
+ swapchain_desc = registered_state->state->desc;
swapchain_desc.windowed = !swapchain_desc.windowed;
- if (!(output = wined3d_get_output_from_window(swapchain->device->wined3d,
- swapchain->state.device_window)))
+ if (!(output = wined3d_get_output_from_window(registered_state->wined3d,
+ registered_state->state->device_window)))
{
- ERR("Failed to get output from window %p.\n", swapchain->state.device_window);
+ ERR("Failed to get output from window %p.\n", registered_state->state->device_window);
break;
}
swapchain_desc.output = output;
- wined3d_swapchain_state_set_fullscreen(&swapchain->state, &swapchain_desc, NULL);
+ wined3d_swapchain_state_set_fullscreen(registered_state->state, &swapchain_desc, NULL);
wined3d_wndproc_mutex_unlock();
@@ -764,82 +765,84 @@ static struct wined3d_window_hook *wined3d_find_hook(DWORD thread_id)
{
unsigned int i;
- for (i = 0; i < hook_table.hook_count; ++i)
+ for (i = 0; i < swapchain_state_table.hook_count; ++i)
{
- if (hook_table.hooks[i].thread_id == thread_id)
- return &hook_table.hooks[i];
+ if (swapchain_state_table.hooks[i].thread_id == thread_id)
+ return &swapchain_state_table.hooks[i];
}
return NULL;
}
-void wined3d_hook_swapchain(struct wined3d_swapchain *swapchain)
+void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state,
+ struct wined3d *wined3d)
{
- struct wined3d_hooked_swapchain *swapchain_entry;
+ struct wined3d_registered_swapchain_state *state_entry;
struct wined3d_window_hook *hook;
wined3d_wndproc_mutex_lock();
- if (!wined3d_array_reserve((void **)&hook_table.swapchains, &hook_table.swapchains_size,
- hook_table.swapchain_count + 1, sizeof(*swapchain_entry)))
+ if (!wined3d_array_reserve((void **)&swapchain_state_table.states, &swapchain_state_table.states_size,
+ swapchain_state_table.state_count + 1, sizeof(*state_entry)))
{
wined3d_wndproc_mutex_unlock();
return;
}
- swapchain_entry = &hook_table.swapchains[hook_table.swapchain_count++];
- swapchain_entry->swapchain = swapchain;
- swapchain_entry->thread_id = GetWindowThreadProcessId(swapchain->state.device_window, NULL);
+ state_entry = &swapchain_state_table.states[swapchain_state_table.state_count++];
+ state_entry->state = state;
+ state_entry->wined3d = wined3d;
+ state_entry->thread_id = GetWindowThreadProcessId(state->device_window, NULL);
- if ((hook = wined3d_find_hook(swapchain_entry->thread_id)))
+ if ((hook = wined3d_find_hook(state_entry->thread_id)))
{
++hook->count;
wined3d_wndproc_mutex_unlock();
return;
}
- if (!wined3d_array_reserve((void **)&hook_table.hooks, &hook_table.hooks_size,
- hook_table.hook_count + 1, sizeof(*hook)))
+ if (!wined3d_array_reserve((void **)&swapchain_state_table.hooks, &swapchain_state_table.hooks_size,
+ swapchain_state_table.hook_count + 1, sizeof(*hook)))
{
- --hook_table.swapchain_count;
+ --swapchain_state_table.state_count;
wined3d_wndproc_mutex_unlock();
return;
}
- hook = &hook_table.hooks[hook_table.hook_count++];
- hook->thread_id = swapchain_entry->thread_id;
+ hook = &swapchain_state_table.hooks[swapchain_state_table.hook_count++];
+ hook->thread_id = state_entry->thread_id;
hook->hook = SetWindowsHookExW(WH_GETMESSAGE, wined3d_hook_proc, 0, hook->thread_id);
hook->count = 1;
wined3d_wndproc_mutex_unlock();
}
-void wined3d_unhook_swapchain(struct wined3d_swapchain *swapchain)
+void wined3d_swapchain_state_unregister(struct wined3d_swapchain_state *state)
{
- struct wined3d_hooked_swapchain *swapchain_entry, *last_swapchain_entry;
+ struct wined3d_registered_swapchain_state *state_entry, *last_state_entry;
struct wined3d_window_hook *hook, *last_hook;
unsigned int i;
wined3d_wndproc_mutex_lock();
- for (i = 0; i < hook_table.swapchain_count; ++i)
+ for (i = 0; i < swapchain_state_table.state_count; ++i)
{
- swapchain_entry = &hook_table.swapchains[i];
+ state_entry = &swapchain_state_table.states[i];
- if (swapchain_entry->swapchain != swapchain)
+ if (state_entry->state != state)
continue;
- if ((hook = wined3d_find_hook(swapchain_entry->thread_id)) && !--hook->count)
+ if ((hook = wined3d_find_hook(state_entry->thread_id)) && !--hook->count)
{
UnhookWindowsHookEx(hook->hook);
- last_hook = &hook_table.hooks[--hook_table.hook_count];
+ last_hook = &swapchain_state_table.hooks[--swapchain_state_table.hook_count];
if (hook != last_hook)
*hook = *last_hook;
}
- last_swapchain_entry = &hook_table.swapchains[--hook_table.swapchain_count];
- if (swapchain_entry != last_swapchain_entry)
- *swapchain_entry = *last_swapchain_entry;
+ last_state_entry = &swapchain_state_table.states[--swapchain_state_table.state_count];
+ if (state_entry != last_state_entry)
+ *state_entry = *last_state_entry;
break;
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index d932f60fa95..bbb0a60d7bb 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3522,9 +3522,7 @@ struct wined3d
};
BOOL wined3d_filter_messages(HWND window, BOOL filter) DECLSPEC_HIDDEN;
-void wined3d_hook_swapchain(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
HRESULT wined3d_init(struct wined3d *wined3d, DWORD flags) DECLSPEC_HIDDEN;
-void wined3d_unhook_swapchain(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
void wined3d_unregister_window(HWND window) DECLSPEC_HIDDEN;
BOOL wined3d_get_app_name(char *app_name, unsigned int app_name_size) DECLSPEC_HIDDEN;
@@ -5082,10 +5080,13 @@ struct wined3d_swapchain_state
HWND device_window;
};
+void wined3d_swapchain_state_register(struct wined3d_swapchain_state *state,
+ struct wined3d *wined3d) DECLSPEC_HIDDEN;
void wined3d_swapchain_state_restore_from_fullscreen(struct wined3d_swapchain_state *state,
HWND window, const RECT *window_rect) DECLSPEC_HIDDEN;
HRESULT wined3d_swapchain_state_setup_fullscreen(struct wined3d_swapchain_state *state,
HWND window, int x, int y, int width, int height) DECLSPEC_HIDDEN;
+void wined3d_swapchain_state_unregister(struct wined3d_swapchain_state *state) DECLSPEC_HIDDEN;
struct wined3d_swapchain_ops
{
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 238961006a0..61ab0e90953 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -904,7 +904,7 @@ enum wined3d_shader_type
#define WINED3D_SWAPCHAIN_RESTORE_WINDOW_RECT 0x00004000u
#define WINED3D_SWAPCHAIN_GDI_COMPATIBLE 0x00008000u
#define WINED3D_SWAPCHAIN_IMPLICIT 0x00010000u
-#define WINED3D_SWAPCHAIN_HOOK 0x00020000u
+#define WINED3D_SWAPCHAIN_REGISTER_STATE 0x00020000u
#define WINED3D_SWAPCHAIN_NO_WINDOW_CHANGES 0x00040000u
#define WINED3D_SWAPCHAIN_RESTORE_WINDOW_STATE 0x00080000u
@@ -2804,7 +2804,7 @@ void __cdecl wined3d_swapchain_set_palette(struct wined3d_swapchain *swapchain,
void __cdecl wined3d_swapchain_set_window(struct wined3d_swapchain *swapchain, HWND window);
HRESULT __cdecl wined3d_swapchain_state_create(const struct wined3d_swapchain_desc *desc,
- HWND window, struct wined3d_swapchain_state **state);
+ HWND window, struct wined3d *wined3d, struct wined3d_swapchain_state **state);
void __cdecl wined3d_swapchain_state_destroy(struct wined3d_swapchain_state *state);
BOOL __cdecl wined3d_swapchain_state_is_windowed(const struct wined3d_swapchain_state *state);
HRESULT __cdecl wined3d_swapchain_state_resize_target(struct wined3d_swapchain_state *state,
--
2.25.1
2
1
[PATCH vkd3d v2 1/3] vkd3d-shader: Pass the output pointer to vkd3d_shader_message_context_copy_messages().
by Zebediah Figura Oct. 9, 2020
by Zebediah Figura Oct. 9, 2020
Oct. 9, 2020
Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com>
---
libs/vkd3d-shader/dxbc.c | 4 ++--
libs/vkd3d-shader/vkd3d_shader_main.c | 20 +++++++++++++-------
libs/vkd3d-shader/vkd3d_shader_private.h | 3 ++-
3 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
index 93e7eaf5..3ddca1e9 100644
--- a/libs/vkd3d-shader/dxbc.c
+++ b/libs/vkd3d-shader/dxbc.c
@@ -2786,7 +2786,7 @@ int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
ret = parse_dxbc(dxbc->code, dxbc->size, &message_context, rts0_handler, root_signature);
vkd3d_shader_message_context_trace_messages(&message_context);
- if (messages && !(*messages = vkd3d_shader_message_context_copy_messages(&message_context)))
+ if (!vkd3d_shader_message_context_copy_messages(&message_context, messages))
ret = VKD3D_ERROR_OUT_OF_MEMORY;
vkd3d_shader_message_context_cleanup(&message_context);
@@ -3390,7 +3390,7 @@ int vkd3d_shader_serialize_root_signature(const struct vkd3d_shader_versioned_ro
done:
vkd3d_shader_message_context_trace_messages(&context.message_context);
- if (messages && !(*messages = vkd3d_shader_message_context_copy_messages(&context.message_context)))
+ if (!vkd3d_shader_message_context_copy_messages(&context.message_context, messages))
ret = VKD3D_ERROR_OUT_OF_MEMORY;
vkd3d_shader_message_context_cleanup(&context.message_context);
return ret;
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c
index c2fe2c8e..d3d86ed7 100644
--- a/libs/vkd3d-shader/vkd3d_shader_main.c
+++ b/libs/vkd3d-shader/vkd3d_shader_main.c
@@ -140,14 +140,20 @@ void vkd3d_shader_message_context_trace_messages_(const struct vkd3d_shader_mess
vkd3d_string_buffer_trace_(&context->messages, function);
}
-char *vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context)
+bool vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context, char **out)
{
char *messages;
- if ((messages = vkd3d_malloc(context->messages.content_size + 1)))
- memcpy(messages, context->messages.buffer, context->messages.content_size + 1);
+ if (!out)
+ return true;
- return messages;
+ *out = NULL;
+
+ if (!(messages = vkd3d_malloc(context->messages.content_size + 1)))
+ return false;
+ memcpy(messages, context->messages.buffer, context->messages.content_size + 1);
+ *out = messages;
+ return true;
}
void vkd3d_shader_verror(struct vkd3d_shader_message_context *context,
@@ -842,7 +848,7 @@ int vkd3d_shader_scan(const struct vkd3d_shader_compile_info *compile_info, char
ret = scan_dxbc(compile_info, &message_context);
vkd3d_shader_message_context_trace_messages(&message_context);
- if (messages && !(*messages = vkd3d_shader_message_context_copy_messages(&message_context)))
+ if (!vkd3d_shader_message_context_copy_messages(&message_context, messages))
ret = VKD3D_ERROR_OUT_OF_MEMORY;
vkd3d_shader_message_context_cleanup(&message_context);
return ret;
@@ -956,7 +962,7 @@ int vkd3d_shader_compile(const struct vkd3d_shader_compile_info *compile_info,
}
vkd3d_shader_message_context_trace_messages(&message_context);
- if (messages && !(*messages = vkd3d_shader_message_context_copy_messages(&message_context)))
+ if (!vkd3d_shader_message_context_copy_messages(&message_context, messages))
ret = VKD3D_ERROR_OUT_OF_MEMORY;
vkd3d_shader_message_context_cleanup(&message_context);
return ret;
@@ -1046,7 +1052,7 @@ int vkd3d_shader_parse_input_signature(const struct vkd3d_shader_code *dxbc,
ret = shader_parse_input_signature(dxbc->code, dxbc->size, &message_context, signature);
vkd3d_shader_message_context_trace_messages(&message_context);
- if (messages && !(*messages = vkd3d_shader_message_context_copy_messages(&message_context)))
+ if (!vkd3d_shader_message_context_copy_messages(&message_context, messages))
ret = VKD3D_ERROR_OUT_OF_MEMORY;
vkd3d_shader_message_context_cleanup(&message_context);
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
index f88ea69a..98b5fbc4 100644
--- a/libs/vkd3d-shader/vkd3d_shader_private.h
+++ b/libs/vkd3d-shader/vkd3d_shader_private.h
@@ -848,7 +848,8 @@ struct vkd3d_shader_message_context
};
void vkd3d_shader_message_context_cleanup(struct vkd3d_shader_message_context *context) DECLSPEC_HIDDEN;
-char *vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context) DECLSPEC_HIDDEN;
+bool vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context,
+ char **out) DECLSPEC_HIDDEN;
bool vkd3d_shader_message_context_init(struct vkd3d_shader_message_context *context,
enum vkd3d_shader_log_level log_level, const char *source_name) DECLSPEC_HIDDEN;
void vkd3d_shader_message_context_trace_messages_(const struct vkd3d_shader_message_context *context,
--
2.28.0
2
5
[PATCH 1/3] ntdll: Support AVX registers for other thread in Nt{Get|Set}ContextThread().
by Paul Gofman Oct. 9, 2020
by Paul Gofman Oct. 9, 2020
Oct. 9, 2020
Signed-off-by: Paul Gofman <pgofman(a)codeweavers.com>
---
dlls/ntdll/unix/server.c | 7 +++++
dlls/ntdll/unix/signal_i386.c | 31 +++++++++++-------
dlls/ntdll/unix/signal_x86_64.c | 35 ++++++++++++++-------
dlls/ntdll/unix/thread.c | 36 ++++++++++++++++++---
dlls/ntdll/unix/unix_private.h | 56 ++++++++++++++++++++++++++++-----
include/wine/server_protocol.h | 5 +++
server/protocol.def | 5 +++
server/thread.c | 1 +
server/trace.c | 6 ++++
9 files changed, 148 insertions(+), 34 deletions(-)
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index 81a903ca77a..7236f0acb83 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -631,8 +631,15 @@ unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT
if (wine_server_reply_size( reply ))
{
DWORD context_flags = context->ContextFlags; /* unchanged registers are still available */
+ XSTATE *xs = xstate_from_context( context );
+ ULONG64 mask;
+
+ if (xs)
+ mask = xs->Mask;
context_from_server( context, &server_context );
context->ContextFlags |= context_flags;
+ if (xs)
+ xs->Mask |= mask;
}
}
SERVER_END_REQ;
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
index e0ba27d3e94..4d8eeb2072c 100644
--- a/dlls/ntdll/unix/signal_i386.c
+++ b/dlls/ntdll/unix/signal_i386.c
@@ -886,14 +886,16 @@ static inline void save_context( struct xcontext *xcontext, const ucontext_t *si
}
if (fpux)
{
+ XSTATE *xs;
+
context->ContextFlags |= CONTEXT_FLOATING_POINT | CONTEXT_EXTENDED_REGISTERS;
memcpy( context->ExtendedRegisters, fpux, sizeof(*fpux) );
if (!fpu) fpux_to_fpu( &context->FloatSave, fpux );
- xcontext->xstate = XState_sig(fpux);
- }
- else
- {
- xcontext->xstate = NULL;
+ if ((xs = XState_sig(fpux)))
+ {
+ context_init_xstate( context, xs );
+ xcontext->host_compaction_mask = xs->CompactionMask;
+ }
}
if (!fpu && !fpux) save_fpu( context );
}
@@ -944,6 +946,7 @@ static inline void restore_context( const struct xcontext *xcontext, ucontext_t
{
memcpy( &dst_xs->YmmContext, &src_xs->YmmContext, sizeof(dst_xs->YmmContext) );
dst_xs->Mask |= src_xs->Mask;
+ dst_xs->CompactionMask = xcontext->host_compaction_mask;
}
}
if (!fpu && !fpux) restore_fpu( context );
@@ -1023,6 +1026,7 @@ static unsigned int get_server_context_flags( DWORD flags )
if (flags & CONTEXT_FLOATING_POINT) ret |= SERVER_CTX_FLOATING_POINT;
if (flags & CONTEXT_DEBUG_REGISTERS) ret |= SERVER_CTX_DEBUG_REGISTERS;
if (flags & CONTEXT_EXTENDED_REGISTERS) ret |= SERVER_CTX_EXTENDED_REGISTERS;
+ if (flags & CONTEXT_XSTATE) ret |= SERVER_CTX_YMM_REGISTERS;
return ret;
}
@@ -1095,6 +1099,7 @@ NTSTATUS context_to_server( context_t *to, const CONTEXT *from )
to->flags |= SERVER_CTX_EXTENDED_REGISTERS;
memcpy( to->ext.i386_regs, from->ExtendedRegisters, sizeof(to->ext.i386_regs) );
}
+ xstate_to_server( to, xstate_from_context( from ) );
return STATUS_SUCCESS;
}
@@ -1108,7 +1113,7 @@ NTSTATUS context_from_server( CONTEXT *to, const context_t *from )
{
if (from->cpu != CPU_x86) return STATUS_INVALID_PARAMETER;
- to->ContextFlags = CONTEXT_i386;
+ to->ContextFlags = CONTEXT_i386 | (to->ContextFlags & 0x40);
if (from->flags & SERVER_CTX_CONTROL)
{
to->ContextFlags |= CONTEXT_CONTROL;
@@ -1165,6 +1170,7 @@ NTSTATUS context_from_server( CONTEXT *to, const context_t *from )
to->ContextFlags |= CONTEXT_EXTENDED_REGISTERS;
memcpy( to->ExtendedRegisters, from->ext.i386_regs, sizeof(to->ExtendedRegisters) );
}
+ xstate_from_server( xstate_from_context( to ), from );
return STATUS_SUCCESS;
}
@@ -1246,7 +1252,7 @@ NTSTATUS WINAPI NtGetContextThread( HANDLE handle, CONTEXT *context )
/* Save xstate before any calls which can potentially change volatile ymm registers.
* E. g., debug output will clobber ymm registers. */
- xsave_status = self ? save_xstate( context ) : STATUS_SUCCESS; /* FIXME: other thread. */
+ xsave_status = self ? save_xstate( context ) : STATUS_SUCCESS;
/* debug registers require a server call */
if (needed_flags & CONTEXT_DEBUG_REGISTERS) self = FALSE;
@@ -1293,7 +1299,6 @@ NTSTATUS WINAPI NtGetContextThread( HANDLE handle, CONTEXT *context )
}
if (needed_flags & CONTEXT_FLOATING_POINT) save_fpu( context );
if (needed_flags & CONTEXT_EXTENDED_REGISTERS) save_fpux( context );
- /* FIXME: xstate */
/* update the cached version of the debug registers */
if (context->ContextFlags & (CONTEXT_DEBUG_REGISTERS & ~CONTEXT_i386))
{
@@ -1579,6 +1584,7 @@ static void setup_raise_exception( ucontext_t *sigcontext, void *stack_ptr,
{
CONTEXT *context = &xcontext->c;
size_t stack_size;
+ XSTATE *src_xs;
struct stack_layout
{
@@ -1606,7 +1612,7 @@ C_ASSERT( (offsetof(struct stack_layout, xstate) == sizeof(struct stack_layout))
if (rec->ExceptionCode == EXCEPTION_BREAKPOINT) context->Eip--;
stack_size = sizeof(*stack);
- if (xcontext->xstate)
+ if ((src_xs = xstate_from_context( context )))
{
stack_size += (ULONG_PTR)stack_ptr - (((ULONG_PTR)stack_ptr
- sizeof(XSTATE)) & ~(ULONG_PTR)63);
@@ -1616,17 +1622,18 @@ C_ASSERT( (offsetof(struct stack_layout, xstate) == sizeof(struct stack_layout))
stack->rec = *rec;
stack->context = *context;
- if (xcontext->xstate)
+ if (src_xs)
{
XSTATE *dst_xs = (XSTATE *)stack->xstate;
assert(!((ULONG_PTR)dst_xs & 63));
context_init_xstate( &stack->context, stack->xstate );
+ memset( dst_xs, 0, offsetof(XSTATE, YmmContext) );
dst_xs->CompactionMask = user_shared_data->XState.CompactionEnabled ? 0x8000000000000004 : 0;
- if (xcontext->xstate->Mask & 4)
+ if (src_xs->Mask & 4)
{
dst_xs->Mask = 4;
- memcpy( &dst_xs->YmmContext, &xcontext->xstate->YmmContext, sizeof(dst_xs->YmmContext) );
+ memcpy( &dst_xs->YmmContext, &src_xs->YmmContext, sizeof(dst_xs->YmmContext) );
}
}
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index e11b2c70b59..030f8cc6feb 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -1461,14 +1461,19 @@ static void save_context( struct xcontext *xcontext, const ucontext_t *sigcontex
context->Dr7 = amd64_thread_data()->dr7;
if (FPU_sig(sigcontext))
{
+ XSTATE *xs;
+
context->ContextFlags |= CONTEXT_FLOATING_POINT;
context->u.FltSave = *FPU_sig(sigcontext);
context->MxCsr = context->u.FltSave.MxCsr;
- xcontext->xstate = XState_sig(FPU_sig(sigcontext));
- }
- else
- {
- xcontext->xstate = NULL;
+ if ((xs = XState_sig(FPU_sig(sigcontext))))
+ {
+ /* xcontext and sigcontext are both on the signal stack, so we can
+ * just reference sigcontext without overflowing 32 bit XState.Offset */
+ context_init_xstate( context, xs );
+ assert( xcontext->c_ex.XState.Offset == (BYTE *)xs - (BYTE *)&xcontext->c_ex );
+ xcontext->host_compaction_mask = xs->CompactionMask;
+ }
}
}
@@ -1531,6 +1536,7 @@ static inline NTSTATUS save_xstate( CONTEXT *context )
static void restore_context( const struct xcontext *xcontext, ucontext_t *sigcontext )
{
const CONTEXT *context = &xcontext->c;
+ XSTATE *xs;
amd64_thread_data()->dr0 = context->Dr0;
amd64_thread_data()->dr1 = context->Dr1;
@@ -1540,6 +1546,8 @@ static void restore_context( const struct xcontext *xcontext, ucontext_t *sigcon
amd64_thread_data()->dr7 = context->Dr7;
set_sigcontext( context, sigcontext );
if (FPU_sig(sigcontext)) *FPU_sig(sigcontext) = context->u.FltSave;
+ if ((xs = XState_sig(FPU_sig(sigcontext))))
+ xs->CompactionMask = xcontext->host_compaction_mask;
}
@@ -1628,6 +1636,7 @@ static unsigned int get_server_context_flags( DWORD flags )
if (flags & CONTEXT_SEGMENTS) ret |= SERVER_CTX_SEGMENTS;
if (flags & CONTEXT_FLOATING_POINT) ret |= SERVER_CTX_FLOATING_POINT;
if (flags & CONTEXT_DEBUG_REGISTERS) ret |= SERVER_CTX_DEBUG_REGISTERS;
+ if (flags & CONTEXT_XSTATE) ret |= SERVER_CTX_YMM_REGISTERS;
return ret;
}
@@ -1695,6 +1704,7 @@ NTSTATUS context_to_server( context_t *to, const CONTEXT *from )
to->debug.x86_64_regs.dr6 = from->Dr6;
to->debug.x86_64_regs.dr7 = from->Dr7;
}
+ xstate_to_server( to, xstate_from_context( from ) );
return STATUS_SUCCESS;
}
@@ -1708,7 +1718,7 @@ NTSTATUS context_from_server( CONTEXT *to, const context_t *from )
{
if (from->cpu != CPU_x86_64) return STATUS_INVALID_PARAMETER;
- to->ContextFlags = CONTEXT_AMD64;
+ to->ContextFlags = CONTEXT_AMD64 | (to->ContextFlags & 0x40);
if (from->flags & SERVER_CTX_CONTROL)
{
to->ContextFlags |= CONTEXT_CONTROL;
@@ -1762,6 +1772,7 @@ NTSTATUS context_from_server( CONTEXT *to, const context_t *from )
to->Dr6 = from->debug.x86_64_regs.dr6;
to->Dr7 = from->debug.x86_64_regs.dr7;
}
+ xstate_from_server( xstate_from_context( to ), from );
return STATUS_SUCCESS;
}
@@ -1831,7 +1842,7 @@ NTSTATUS WINAPI NtGetContextThread( HANDLE handle, CONTEXT *context )
/* Save xstate before any calls which can potentially change volatile ymm registers.
* E. g., debug output will clobber ymm registers. */
- xsave_status = self ? save_xstate( context ) : STATUS_SUCCESS; /* FIXME: other thread. */
+ xsave_status = self ? save_xstate( context ) : STATUS_SUCCESS;
needed_flags = context->ContextFlags & ~CONTEXT_AMD64;
@@ -1924,6 +1935,7 @@ static void setup_raise_exception( ucontext_t *sigcontext, EXCEPTION_RECORD *rec
struct stack_layout *stack;
size_t stack_size;
NTSTATUS status;
+ XSTATE *src_xs;
if (rec->ExceptionCode == EXCEPTION_SINGLE_STEP)
{
@@ -1953,7 +1965,7 @@ static void setup_raise_exception( ucontext_t *sigcontext, EXCEPTION_RECORD *rec
if (rec->ExceptionCode == EXCEPTION_BREAKPOINT) context->Rip--;
stack_size = sizeof(*stack);
- if (xcontext->xstate)
+ if ((src_xs = xstate_from_context( context )))
{
stack_size += (ULONG_PTR)stack_ptr - (((ULONG_PTR)stack_ptr
- sizeof(XSTATE)) & ~(ULONG_PTR)63);
@@ -1962,17 +1974,18 @@ static void setup_raise_exception( ucontext_t *sigcontext, EXCEPTION_RECORD *rec
stack = virtual_setup_exception( stack_ptr, stack_size, rec );
stack->rec = *rec;
stack->context = *context;
- if (xcontext->xstate)
+ if (src_xs)
{
XSTATE *dst_xs = (XSTATE *)stack->xstate;
assert( !((ULONG_PTR)dst_xs & 63) );
context_init_xstate( &stack->context, stack->xstate );
+ memset( dst_xs, 0, offsetof(XSTATE, YmmContext) );
dst_xs->CompactionMask = user_shared_data->XState.CompactionEnabled ? 0x8000000000000004 : 0;
- if (xcontext->xstate->Mask & 4)
+ if (src_xs->Mask & 4)
{
dst_xs->Mask = 4;
- memcpy( &dst_xs->YmmContext, &xcontext->xstate->YmmContext, sizeof(dst_xs->YmmContext) );
+ memcpy( &dst_xs->YmmContext, &src_xs->YmmContext, sizeof(dst_xs->YmmContext) );
}
}
diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
index ded4b33eb01..a161c5d1c90 100644
--- a/dlls/ntdll/unix/thread.c
+++ b/dlls/ntdll/unix/thread.c
@@ -344,7 +344,6 @@ NTSTATUS send_debug_event( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL first_c
DWORD i;
obj_handle_t handle = 0;
client_ptr_t params[EXCEPTION_MAXIMUM_PARAMETERS];
- CONTEXT exception_context = *context;
select_op_t select_op;
sigset_t old_set;
@@ -370,10 +369,22 @@ NTSTATUS send_debug_event( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL first_c
if (handle)
{
+ struct xcontext exception_context;
+ DECLSPEC_ALIGN(64) XSTATE xs;
+ XSTATE *src_xs;
+
select_op.wait.op = SELECT_WAIT;
select_op.wait.handles[0] = handle;
+
+ exception_context.c = *context;
+ if ((src_xs = xstate_from_context( context )))
+ {
+ context_init_xstate( &exception_context.c, &xs );
+ memcpy( &xs, src_xs, sizeof(xs) );
+ }
+
server_select( &select_op, offsetof( select_op_t, wait.handles[1] ), SELECT_INTERRUPTIBLE,
- TIMEOUT_INFINITE, &exception_context, NULL, NULL );
+ TIMEOUT_INFINITE, &exception_context.c, NULL, NULL );
SERVER_START_REQ( get_exception_status )
{
@@ -381,7 +392,12 @@ NTSTATUS send_debug_event( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL first_c
ret = wine_server_call( req );
}
SERVER_END_REQ;
- if (ret >= 0) *context = exception_context;
+ if (ret >= 0)
+ {
+ *context = exception_context.c;
+ if (src_xs)
+ memcpy( src_xs, &xs, sizeof(xs) );
+ }
}
pthread_sigmask( SIG_SETMASK, &old_set, NULL );
@@ -632,7 +648,7 @@ static NTSTATUS wow64_context_from_server( WOW64_CONTEXT *to, const context_t *f
{
if (from->cpu != CPU_x86) return STATUS_INVALID_PARAMETER;
- to->ContextFlags = WOW64_CONTEXT_i386;
+ to->ContextFlags = WOW64_CONTEXT_i386 | (to->ContextFlags & 0x40);
if (from->flags & SERVER_CTX_CONTROL)
{
to->ContextFlags |= WOW64_CONTEXT_CONTROL;
@@ -689,6 +705,12 @@ static NTSTATUS wow64_context_from_server( WOW64_CONTEXT *to, const context_t *f
to->ContextFlags |= WOW64_CONTEXT_EXTENDED_REGISTERS;
memcpy( to->ExtendedRegisters, from->ext.i386_regs, sizeof(to->ExtendedRegisters) );
}
+ if ((to->ContextFlags & WOW64_CONTEXT_XSTATE) == WOW64_CONTEXT_XSTATE)
+ {
+ CONTEXT_EX *c_ex = (CONTEXT_EX *)(to + 1);
+
+ xstate_from_server( (XSTATE *)((BYTE *)c_ex + c_ex->XState.Offset), from );
+ }
return STATUS_SUCCESS;
}
@@ -758,6 +780,12 @@ static void wow64_context_to_server( context_t *to, const WOW64_CONTEXT *from )
to->flags |= SERVER_CTX_EXTENDED_REGISTERS;
memcpy( to->ext.i386_regs, from->ExtendedRegisters, sizeof(to->ext.i386_regs) );
}
+ if (flags & WOW64_CONTEXT_XSTATE)
+ {
+ CONTEXT_EX *c_ex = (CONTEXT_EX *)(from + 1);
+
+ xstate_to_server( to, (XSTATE *)((BYTE *)c_ex + c_ex->XState.Offset) );
+ }
}
#endif /* __x86_64__ */
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index f99c13fe2ad..c3ad0a41098 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -288,13 +288,14 @@ static inline void mutex_unlock( pthread_mutex_t *mutex )
static inline TEB64 *NtCurrentTeb64(void) { return (TEB64 *)NtCurrentTeb()->GdiBatchCount; }
#endif
-#if defined(__i386__) || defined(__x86_64__)
struct xcontext
{
CONTEXT c;
- XSTATE *xstate; /* points to xstate in sigcontext */
+ CONTEXT_EX c_ex;
+ ULONG64 host_compaction_mask;
};
+#if defined(__i386__) || defined(__x86_64__)
static inline XSTATE *xstate_from_context( const CONTEXT *context )
{
CONTEXT_EX *xctx = (CONTEXT_EX *)(context + 1);
@@ -308,21 +309,62 @@ static inline XSTATE *xstate_from_context( const CONTEXT *context )
static inline void context_init_xstate( CONTEXT *context, void *xstate_buffer )
{
CONTEXT_EX *xctx;
- XSTATE *xs;
xctx = (CONTEXT_EX *)(context + 1);
xctx->Legacy.Length = sizeof(CONTEXT);
xctx->Legacy.Offset = -(LONG)sizeof(CONTEXT);
xctx->XState.Length = sizeof(XSTATE);
- xctx->XState.Offset = xstate_buffer ? (((ULONG_PTR)xstate_buffer + 63) & ~63) - (ULONG_PTR)xctx
- : (((ULONG_PTR)context + sizeof(CONTEXT) + sizeof(CONTEXT_EX) + 63) & ~63) - (ULONG_PTR)xctx;
+ xctx->XState.Offset = (BYTE *)xstate_buffer - (BYTE *)xctx;
+
xctx->All.Length = sizeof(CONTEXT) + xctx->XState.Offset + xctx->XState.Length;
xctx->All.Offset = -(LONG)sizeof(CONTEXT);
context->ContextFlags |= 0x40;
+}
- xs = xstate_from_context(context);
- memset( xs, 0, offsetof(XSTATE, YmmContext) );
+static inline void xstate_to_server( context_t *to, const XSTATE *xs )
+{
+ if (!xs)
+ return;
+
+ to->flags |= SERVER_CTX_YMM_REGISTERS;
+ if (xs->Mask & 4)
+ memcpy(&to->ymm.ymm_high_regs.ymm_high, &xs->YmmContext, sizeof(xs->YmmContext));
+ else
+ memset(&to->ymm.ymm_high_regs.ymm_high, 0, sizeof(xs->YmmContext));
+}
+
+static inline void xstate_from_server_( XSTATE *xs, const context_t *from, BOOL compaction_enabled)
+{
+ if (!xs)
+ return;
+
+ xs->Mask = 0;
+ xs->CompactionMask = compaction_enabled ? 0x8000000000000004 : 0;
+
+ if (from->flags & SERVER_CTX_YMM_REGISTERS)
+ {
+ unsigned long *src = (unsigned long *)&from->ymm.ymm_high_regs.ymm_high;
+ unsigned int i;
+
+ for (i = 0; i < sizeof(xs->YmmContext) / sizeof(unsigned long); ++i)
+ if (src[i])
+ {
+ memcpy( &xs->YmmContext, &from->ymm.ymm_high_regs.ymm_high, sizeof(xs->YmmContext) );
+ xs->Mask = 4;
+ break;
+ }
+ }
+}
+#define xstate_from_server( xs, from ) xstate_from_server_( xs, from, user_shared_data->XState.CompactionEnabled )
+
+#else
+static inline XSTATE *xstate_from_context( const CONTEXT *context )
+{
+ return NULL;
+}
+static inline void context_init_xstate( CONTEXT *context, void *xstate_buffer )
+{
}
#endif
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 751ca59ad6b..5e267195f20 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -170,6 +170,10 @@ typedef struct
{
unsigned char i386_regs[512];
} ext;
+ union
+ {
+ struct { struct { unsigned __int64 low, high; } ymm_high[16]; } ymm_high_regs;
+ } ymm;
} context_t;
#define SERVER_CTX_CONTROL 0x01
@@ -178,6 +182,7 @@ typedef struct
#define SERVER_CTX_FLOATING_POINT 0x08
#define SERVER_CTX_DEBUG_REGISTERS 0x10
#define SERVER_CTX_EXTENDED_REGISTERS 0x20
+#define SERVER_CTX_YMM_REGISTERS 0x40
struct send_fd
diff --git a/server/protocol.def b/server/protocol.def
index 16c0b936743..305a1d0186f 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -186,6 +186,10 @@ typedef struct
{
unsigned char i386_regs[512];
} ext; /* selected by SERVER_CTX_EXTENDED_REGISTERS */
+ union
+ {
+ struct { struct { unsigned __int64 low, high; } ymm_high[16]; } ymm_high_regs;
+ } ymm; /* selected by SERVER_CTX_YMM_REGISTERS */
} context_t;
#define SERVER_CTX_CONTROL 0x01
@@ -194,6 +198,7 @@ typedef struct
#define SERVER_CTX_FLOATING_POINT 0x08
#define SERVER_CTX_DEBUG_REGISTERS 0x10
#define SERVER_CTX_EXTENDED_REGISTERS 0x20
+#define SERVER_CTX_YMM_REGISTERS 0x40
/* structure used in sending an fd from client to server */
struct send_fd
diff --git a/server/thread.c b/server/thread.c
index eb138079739..942a8ff8389 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -1285,6 +1285,7 @@ static void copy_context( context_t *to, const context_t *from, unsigned int fla
if (flags & SERVER_CTX_FLOATING_POINT) to->fp = from->fp;
if (flags & SERVER_CTX_DEBUG_REGISTERS) to->debug = from->debug;
if (flags & SERVER_CTX_EXTENDED_REGISTERS) to->ext = from->ext;
+ if (flags & SERVER_CTX_YMM_REGISTERS) to->ymm = from->ymm;
}
/* return the context flags that correspond to system regs */
diff --git a/server/trace.c b/server/trace.c
index 17dd415b958..8ee0bc8c3e3 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -620,6 +620,9 @@ static void dump_varargs_context( const char *prefix, data_size_t size )
if (ctx.flags & SERVER_CTX_EXTENDED_REGISTERS)
dump_uints( ",extended=", (const unsigned int *)ctx.ext.i386_regs,
sizeof(ctx.ext.i386_regs) / sizeof(int) );
+ if (ctx.flags & SERVER_CTX_YMM_REGISTERS)
+ dump_uints( ",ymm_high=", (const unsigned int *)ctx.ymm.ymm_high_regs.ymm_high,
+ sizeof(ctx.ymm.ymm_high_regs) / sizeof(int) );
break;
case CPU_x86_64:
if (ctx.flags & SERVER_CTX_CONTROL)
@@ -669,6 +672,9 @@ static void dump_varargs_context( const char *prefix, data_size_t size )
(unsigned int)(ctx.fp.x86_64_regs.fpregs[i].low >> 32),
(unsigned int)ctx.fp.x86_64_regs.fpregs[i].low );
}
+ if (ctx.flags & SERVER_CTX_YMM_REGISTERS)
+ dump_uints( ",ymm_high=", (const unsigned int *)ctx.ymm.ymm_high_regs.ymm_high,
+ sizeof(ctx.ymm.ymm_high_regs) / sizeof(int) );
break;
case CPU_POWERPC:
if (ctx.flags & SERVER_CTX_CONTROL)
--
2.26.2
1
2
Oct. 9, 2020
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=48861
Signed-off-by: Myah Caron <qsniyg(a)protonmail.com>
---
dlls/kernelbase/process.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
index d5fedb4495c..0f707f82d11 100644
--- a/dlls/kernelbase/process.c
+++ b/dlls/kernelbase/process.c
@@ -1278,7 +1278,7 @@ BOOL WINAPI BaseFlushAppcompatCache(void)
/***********************************************************************
* GetCommandLineA (kernelbase.@)
*/
-LPSTR WINAPI DECLSPEC_HOTPATCH GetCommandLineA(void)
+LPSTR WINAPI GetCommandLineA(void)
{
return command_lineA;
}
@@ -1287,7 +1287,7 @@ LPSTR WINAPI DECLSPEC_HOTPATCH GetCommandLineA(void)
/***********************************************************************
* GetCommandLineW (kernelbase.@)
*/
-LPWSTR WINAPI DECLSPEC_HOTPATCH GetCommandLineW(void)
+LPWSTR WINAPI GetCommandLineW(void)
{
return command_lineW;
}
--
2.28.0
1
0
[PATCH 5/5] riched20: Use ME_Paragraph ptrs in a few of the table functions.
by Huw Davies Oct. 9, 2020
by Huw Davies Oct. 9, 2020
Oct. 9, 2020
Signed-off-by: Huw Davies <huw(a)codeweavers.com>
---
dlls/riched20/caret.c | 6 ++---
dlls/riched20/editor.h | 8 +++---
dlls/riched20/paint.c | 4 +--
dlls/riched20/para.c | 13 ++++++++++
dlls/riched20/table.c | 57 ++++++++++++++++++------------------------
dlls/riched20/wrap.c | 9 +++----
dlls/riched20/writer.c | 4 +--
7 files changed, 54 insertions(+), 47 deletions(-)
diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c
index 89fd9d7326c..e9ea64ed1bc 100644
--- a/dlls/riched20/caret.c
+++ b/dlls/riched20/caret.c
@@ -1033,7 +1033,7 @@ static BOOL ME_FindPixelPos(ME_TextEditor *editor, int x, int y,
}
else if (p->member.para.nFlags & MEPF_ROWSTART)
{
- p = ME_GetTableRowEnd(p);
+ p = para_get_di( table_row_end( &p->member.para ) );
}
}
/* find row */
@@ -1304,7 +1304,7 @@ ME_MoveCursorLines(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs, BOOL
pOldPara->member.para.pCell != pNewPara->member.para.pCell))
{
/* Brought out of a cell */
- pNewPara = ME_GetTableRowStart(pOldPara)->member.para.prev_para;
+ pNewPara = table_row_start( &pOldPara->member.para )->prev_para;
if (pNewPara->type == diTextStart)
return; /* At the top, so don't go anywhere. */
pItem = ME_FindItemFwd(pNewPara, diStartRow);
@@ -1335,7 +1335,7 @@ ME_MoveCursorLines(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs, BOOL
pOldPara->member.para.pCell != pNewPara->member.para.pCell))
{
/* Brought out of a cell */
- pNewPara = ME_GetTableRowEnd(pOldPara)->member.para.next_para;
+ pNewPara = table_row_end( &pOldPara->member.para )->next_para;
if (pNewPara->type == diTextEnd)
return; /* At the bottom, so don't go anywhere. */
pItem = ME_FindItemFwd(pNewPara, diStartRow);
diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h
index e7687272510..910a87c33c4 100644
--- a/dlls/riched20/editor.h
+++ b/dlls/riched20/editor.h
@@ -211,6 +211,8 @@ int get_total_width(ME_TextEditor *editor) DECLSPEC_HIDDEN;
void para_mark_rewrap( ME_TextEditor *editor, ME_Paragraph *para ) DECLSPEC_HIDDEN;
void para_mark_add( ME_TextEditor *editor, ME_Paragraph *para ) DECLSPEC_HIDDEN;
void para_mark_remove( ME_TextEditor *editor, ME_Paragraph *para ) DECLSPEC_HIDDEN;
+ME_Paragraph *para_next( ME_Paragraph *para ) DECLSPEC_HIDDEN;
+ME_Paragraph *para_prev( ME_Paragraph *para ) DECLSPEC_HIDDEN;
ME_Run *para_first_run( ME_Paragraph *para ) DECLSPEC_HIDDEN;
static inline ME_DisplayItem *para_get_di(ME_Paragraph *para)
{
@@ -273,9 +275,9 @@ ME_DisplayItem *ME_InsertTableRowStartAtParagraph(ME_TextEditor *editor,
ME_DisplayItem *para) DECLSPEC_HIDDEN;
ME_DisplayItem *ME_InsertTableCellFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN;
ME_DisplayItem *ME_InsertTableRowEndFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN;
-ME_DisplayItem *ME_GetTableRowEnd(ME_DisplayItem *para) DECLSPEC_HIDDEN;
-ME_DisplayItem *ME_GetTableRowStart(ME_DisplayItem *para) DECLSPEC_HIDDEN;
-ME_DisplayItem *ME_GetOuterParagraph(ME_DisplayItem *para) DECLSPEC_HIDDEN;
+ME_Paragraph *table_row_end( ME_Paragraph *para ) DECLSPEC_HIDDEN;
+ME_Paragraph *table_row_start( ME_Paragraph *para ) DECLSPEC_HIDDEN;
+ME_Paragraph *table_outer_para( ME_Paragraph *para ) DECLSPEC_HIDDEN;
void ME_CheckTablesForCorruption(ME_TextEditor *editor) DECLSPEC_HIDDEN;
void ME_ProtectPartialTableDeletion(ME_TextEditor *editor, ME_Cursor *c, int *nChars) DECLSPEC_HIDDEN;
ME_DisplayItem* ME_AppendTableRow(ME_TextEditor *editor, ME_DisplayItem *table_row) DECLSPEC_HIDDEN;
diff --git a/dlls/riched20/paint.c b/dlls/riched20/paint.c
index 72128072380..53583de21ce 100644
--- a/dlls/riched20/paint.c
+++ b/dlls/riched20/paint.c
@@ -778,10 +778,10 @@ static void ME_DrawTableBorders(ME_Context *c, ME_DisplayItem *paragraph)
if (atBottom) {
int oldLeft = rc.left;
width = max(ME_twips2pointsY(c, cell->border.bottom.width), 1);
- paraAfterRow = ME_GetTableRowEnd(paragraph)->member.para.next_para;
+ paraAfterRow = table_row_end( ¶graph->member.para )->next_para;
if (paraAfterRow->member.para.nFlags & MEPF_ROWSTART) {
ME_DisplayItem *nextEndCell;
- nextEndCell = ME_FindItemBack(ME_GetTableRowEnd(paraAfterRow), diCell);
+ nextEndCell = ME_FindItemBack( para_get_di( table_row_end( ¶AfterRow->member.para ) ), diCell );
assert(nextEndCell && !nextEndCell->member.cell.next_cell);
rc.left = c->pt.x + nextEndCell->member.cell.pt.x;
/* FIXME: Native draws FROM the bottom of the table rather than
diff --git a/dlls/riched20/para.c b/dlls/riched20/para.c
index 58dcfc8e712..0f8b76f76d0 100644
--- a/dlls/riched20/para.c
+++ b/dlls/riched20/para.c
@@ -55,6 +55,19 @@ void destroy_para(ME_TextEditor *editor, ME_DisplayItem *item)
ME_DestroyDisplayItem(item);
}
+/* Note para_next/prev will return the start and end doc nodes */
+ME_Paragraph *para_next( ME_Paragraph *para )
+{
+ if (para->next_para) return ¶->next_para->member.para;
+ return NULL;
+}
+
+ME_Paragraph *para_prev( ME_Paragraph *para )
+{
+ if (para->prev_para) return ¶->prev_para->member.para;
+ return NULL;
+}
+
int get_total_width(ME_TextEditor *editor)
{
ME_Paragraph *para;
diff --git a/dlls/riched20/table.c b/dlls/riched20/table.c
index 1b4b9143d16..615145b85e8 100644
--- a/dlls/riched20/table.c
+++ b/dlls/riched20/table.c
@@ -133,52 +133,46 @@ ME_DisplayItem* ME_InsertTableRowEndFromCursor(ME_TextEditor *editor)
return para->member.para.prev_para;
}
-ME_DisplayItem* ME_GetTableRowEnd(ME_DisplayItem *para)
+ME_Paragraph* table_row_end( ME_Paragraph *para )
{
ME_DisplayItem *cell;
- assert(para);
- if (para->member.para.nFlags & MEPF_ROWEND)
- return para;
- if (para->member.para.nFlags & MEPF_ROWSTART)
- para = para->member.para.next_para;
- cell = para->member.para.pCell;
+ assert( para );
+ if (para->nFlags & MEPF_ROWEND) return para;
+ if (para->nFlags & MEPF_ROWSTART) para = para_next( para );
+ cell = para->pCell;
assert(cell && cell->type == diCell);
while (cell->member.cell.next_cell)
cell = cell->member.cell.next_cell;
- para = ME_FindItemFwd(cell, diParagraph);
- assert(para && para->member.para.nFlags & MEPF_ROWEND);
+ para = &ME_FindItemFwd( cell, diParagraph )->member.para;
+ assert( para && para->nFlags & MEPF_ROWEND );
return para;
}
-ME_DisplayItem* ME_GetTableRowStart(ME_DisplayItem *para)
+ME_Paragraph* table_row_start( ME_Paragraph *para )
{
ME_DisplayItem *cell;
- assert(para);
- if (para->member.para.nFlags & MEPF_ROWSTART)
- return para;
- if (para->member.para.nFlags & MEPF_ROWEND)
- para = para->member.para.prev_para;
- cell = para->member.para.pCell;
+ assert( para );
+ if (para->nFlags & MEPF_ROWSTART) return para;
+ if (para->nFlags & MEPF_ROWEND) para = para_prev( para );
+ cell = para->pCell;
assert(cell && cell->type == diCell);
while (cell->member.cell.prev_cell)
cell = cell->member.cell.prev_cell;
- para = ME_FindItemBack(cell, diParagraph);
- assert(para && para->member.para.nFlags & MEPF_ROWSTART);
+ para = &ME_FindItemBack( cell, diParagraph )->member.para;
+ assert( para && para->nFlags & MEPF_ROWSTART );
return para;
}
-ME_DisplayItem* ME_GetOuterParagraph(ME_DisplayItem *para)
+ME_Paragraph* table_outer_para( ME_Paragraph *para )
{
- if (para->member.para.nFlags & MEPF_ROWEND)
- para = para->member.para.prev_para;
- while (para->member.para.pCell)
+ if (para->nFlags & MEPF_ROWEND) para = para_prev( para );
+ while (para->pCell)
{
- para = ME_GetTableRowStart(para);
- if (!para->member.para.pCell)
- break;
- para = ME_FindItemBack(para->member.para.pCell, diParagraph);
+ para = table_row_start( para );
+ if (!para->pCell) break;
+ para = &ME_FindItemBack( para->pCell, diParagraph )->member.para;
}
return para;
}
@@ -330,7 +324,7 @@ void ME_ProtectPartialTableDeletion(ME_TextEditor *editor, ME_Cursor *c, int *nC
while (!bTruancateDeletion &&
next_para->member.para.nFlags & MEPF_ROWSTART)
{
- next_para = ME_GetTableRowEnd(next_para)->member.para.next_para;
+ next_para = table_row_end( &next_para->member.para )->next_para;
if (next_para->member.para.nCharOfs > nOfs + *nChars)
{
/* End of deletion is not past the end of the table row. */
@@ -416,8 +410,8 @@ ME_DisplayItem* ME_AppendTableRow(ME_TextEditor *editor,
assert(table_row->type == diParagraph);
if (!editor->bEmulateVersion10) { /* v4.1 */
ME_DisplayItem *insertedCell, *para, *cell, *prevTableEnd;
- cell = ME_FindItemFwd(ME_GetTableRowStart(table_row), diCell);
- prevTableEnd = ME_GetTableRowEnd(table_row);
+ cell = ME_FindItemFwd( para_get_di( table_row_start( &table_row->member.para ) ), diCell );
+ prevTableEnd = para_get_di( table_row_end( &table_row->member.para ) );
para = prevTableEnd->member.para.next_para;
run = ME_FindItemFwd(para, diRun);
editor->pCursors[0].pPara = para;
@@ -484,15 +478,14 @@ static void ME_SelectOrInsertNextCell(ME_TextEditor *editor,
{
cell = cell->member.cell.next_cell;
} else {
- para = ME_GetTableRowEnd(ME_FindItemFwd(cell, diParagraph));
- para = para->member.para.next_para;
+ para = table_row_end( &ME_FindItemFwd( cell, diParagraph )->member.para )->next_para;
assert(para);
if (para->member.para.nFlags & MEPF_ROWSTART) {
cell = para->member.para.next_para->member.para.pCell;
} else {
/* Insert row */
para = para->member.para.prev_para;
- para = ME_AppendTableRow(editor, ME_GetTableRowStart(para));
+ para = ME_AppendTableRow( editor, para_get_di( table_row_start( ¶->member.para ) ) );
/* Put cursor at the start of the new table row */
para = para->member.para.next_para;
editor->pCursors[0].pPara = para;
diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c
index 5ff9623e336..a84f738e925 100644
--- a/dlls/riched20/wrap.c
+++ b/dlls/riched20/wrap.c
@@ -209,7 +209,7 @@ static void ME_BeginRow(ME_WrapContext *wc)
width -= cell->prev_cell->member.cell.nRightBoundary;
if (!cell->prev_cell)
{
- int rowIndent = ME_GetTableRowEnd( para_get_di( wc->para ) )->member.para.fmt.dxStartIndent;
+ int rowIndent = table_row_end( wc->para )->fmt.dxStartIndent;
width -= rowIndent;
}
cell->nWidth = max(ME_twips2pointsX(wc->context, width), 0);
@@ -843,8 +843,7 @@ static void ME_WrapTextParagraph( ME_TextEditor *editor, ME_Context *c, ME_Parag
else
{
int dxStartIndent = para->fmt.dxStartIndent;
- if (para->pCell)
- dxStartIndent += ME_GetTableRowEnd( para_get_di( para ) )->member.para.fmt.dxOffset;
+ if (para->pCell) dxStartIndent += table_row_end( para )->fmt.dxOffset;
wc.nLeftMargin = ME_twips2pointsX( c, dxStartIndent + para->fmt.dxOffset );
wc.nFirstMargin = ME_twips2pointsX( c, dxStartIndent );
@@ -1101,8 +1100,8 @@ void ME_InvalidateParagraphRange(ME_TextEditor *editor,
if (start_para)
{
- start_para = ME_GetOuterParagraph(start_para);
- last_para = ME_GetOuterParagraph(last_para);
+ start_para = para_get_di( table_outer_para( &start_para->member.para ) );
+ last_para = para_get_di( table_outer_para( &last_para->member.para ) );
rc.top += start_para->member.para.pt.y - ofs;
} else {
rc.top += editor->nTotalLength - ofs;
diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c
index 94001ee44b2..6f5bb4e1f83 100644
--- a/dlls/riched20/writer.c
+++ b/dlls/riched20/writer.c
@@ -400,8 +400,8 @@ ME_StreamOutRTFTableProps(ME_TextEditor *editor, ME_OutStream *pStream,
if (!ME_StreamOutPrint(pStream, "\\trowd"))
return FALSE;
if (!editor->bEmulateVersion10) { /* v4.1 */
- PARAFORMAT2 *pFmt = &ME_GetTableRowEnd(para)->member.para.fmt;
- para = ME_GetTableRowStart(para);
+ PARAFORMAT2 *pFmt = &table_row_end( ¶->member.para )->fmt;
+ para = para_get_di( table_row_start( ¶->member.para ) );
cell = para->member.para.next_para->member.para.pCell;
assert(cell);
if (pFmt->dxOffset)
--
2.23.0
1
0