d3d12.idl 80 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591
  1. /*
  2. * Copyright 2016 Józef Kucia for CodeWeavers
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  17. */
  18. import "oaidl.idl";
  19. import "ocidl.idl";
  20. import "dxgi.idl";
  21. import "d3dcommon.idl";
  22. cpp_quote("#ifndef _D3D12_CONSTANTS")
  23. cpp_quote("#define _D3D12_CONSTANTS")
  24. const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
  25. const UINT D3D12_MAX_ROOT_COST = 64;
  26. const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
  27. const UINT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
  28. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
  29. const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
  30. cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA (1.0f)")
  31. cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_BLUE (1.0f)")
  32. cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_GREEN (1.0f)")
  33. cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_RED (1.0f)")
  34. const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
  35. cpp_quote("#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP (0.0f)")
  36. cpp_quote("#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS (0.0f)")
  37. const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
  38. const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
  39. const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
  40. cpp_quote("#define D3D12_FLOAT32_MAX (3.402823466e+38f)")
  41. const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
  42. const UINT D3D12_UAV_SLOT_COUNT = 64;
  43. const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
  44. const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
  45. const UINT D3D12_REQ_MIP_LEVELS = 15;
  46. const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
  47. const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
  48. const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
  49. const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
  50. const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
  51. const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
  52. const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
  53. const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
  54. const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
  55. const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
  56. const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
  57. const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
  58. const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
  59. const UINT D3D12_SO_STREAM_COUNT = 4;
  60. const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
  61. const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
  62. const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
  63. const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
  64. const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
  65. const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
  66. const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
  67. const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
  68. const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
  69. const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
  70. const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
  71. const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
  72. cpp_quote("#endif")
  73. const UINT D3D12_SHADER_COMPONENT_MAPPING_MASK = 0x7;
  74. const UINT D3D12_SHADER_COMPONENT_MAPPING_SHIFT = 3;
  75. const UINT D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES
  76. = 1 << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 4);
  77. typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
  78. {
  79. D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
  80. D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
  81. D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2,
  82. } D3D12_SHADER_MIN_PRECISION_SUPPORT;
  83. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_MIN_PRECISION_SUPPORT);")
  84. typedef enum D3D12_TILED_RESOURCES_TIER
  85. {
  86. D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
  87. D3D12_TILED_RESOURCES_TIER_1 = 1,
  88. D3D12_TILED_RESOURCES_TIER_2 = 2,
  89. D3D12_TILED_RESOURCES_TIER_3 = 3,
  90. } D3D12_TILED_RESOURCES_TIER;
  91. typedef enum D3D12_RESOURCE_BINDING_TIER
  92. {
  93. D3D12_RESOURCE_BINDING_TIER_1 = 1,
  94. D3D12_RESOURCE_BINDING_TIER_2 = 2,
  95. D3D12_RESOURCE_BINDING_TIER_3 = 3,
  96. } D3D12_RESOURCE_BINDING_TIER;
  97. typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
  98. {
  99. D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
  100. D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
  101. D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
  102. D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
  103. } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
  104. typedef enum D3D12_CROSS_NODE_SHARING_TIER
  105. {
  106. D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
  107. D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
  108. D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
  109. D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
  110. } D3D12_CROSS_NODE_SHARING_TIER;
  111. typedef enum D3D12_RESOURCE_HEAP_TIER
  112. {
  113. D3D12_RESOURCE_HEAP_TIER_1 = 1,
  114. D3D12_RESOURCE_HEAP_TIER_2 = 2,
  115. } D3D12_RESOURCE_HEAP_TIER;
  116. typedef enum D3D12_FORMAT_SUPPORT1
  117. {
  118. D3D12_FORMAT_SUPPORT1_NONE = 0x00000000,
  119. D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
  120. D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
  121. D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
  122. D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
  123. D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
  124. D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
  125. D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
  126. D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
  127. D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
  128. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
  129. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
  130. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
  131. D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
  132. D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
  133. D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
  134. D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
  135. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
  136. D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
  137. D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
  138. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
  139. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
  140. D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
  141. D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
  142. D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
  143. D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
  144. D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
  145. D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
  146. D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
  147. D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
  148. } D3D12_FORMAT_SUPPORT1;
  149. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_FORMAT_SUPPORT1);")
  150. typedef enum D3D12_FORMAT_SUPPORT2
  151. {
  152. D3D12_FORMAT_SUPPORT2_NONE = 0x00000000,
  153. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
  154. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
  155. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
  156. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
  157. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
  158. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
  159. D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
  160. D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
  161. D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
  162. D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
  163. D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
  164. } D3D12_FORMAT_SUPPORT2;
  165. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_FORMAT_SUPPORT2);")
  166. typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
  167. {
  168. D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
  169. D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
  170. D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
  171. } D3D12_WRITEBUFFERIMMEDIATE_MODE;
  172. typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
  173. {
  174. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0x0,
  175. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 0x1,
  176. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 0x2,
  177. } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
  178. typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
  179. {
  180. D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
  181. D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
  182. D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
  183. D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
  184. D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
  185. } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
  186. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_SHADER_CACHE_SUPPORT_FLAGS);")
  187. typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
  188. {
  189. D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x0,
  190. D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 0x1,
  191. D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 0x2,
  192. D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 0x4,
  193. D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 0x8,
  194. D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 0x10,
  195. D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 0x20,
  196. D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 0x40,
  197. } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
  198. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_LIST_SUPPORT_FLAGS);")
  199. typedef enum D3D12_VIEW_INSTANCING_TIER
  200. {
  201. D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0x0,
  202. D3D12_VIEW_INSTANCING_TIER_1 = 0x1,
  203. D3D12_VIEW_INSTANCING_TIER_2 = 0x2,
  204. D3D12_VIEW_INSTANCING_TIER_3 = 0x3,
  205. } D3D12_VIEW_INSTANCING_TIER;
  206. typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
  207. {
  208. D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0x0,
  209. D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = 0x1,
  210. } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
  211. typedef enum D3D12_HEAP_SERIALIZATION_TIER
  212. {
  213. D3D12_HEAP_SERIALIZATION_TIER_0 = 0x0,
  214. D3D12_HEAP_SERIALIZATION_TIER_10 = 0xa,
  215. } D3D12_HEAP_SERIALIZATION_TIER;
  216. typedef enum D3D12_RENDER_PASS_TIER
  217. {
  218. D3D12_RENDER_PASS_TIER_0 = 0x0,
  219. D3D12_RENDER_PASS_TIER_1 = 0x1,
  220. D3D12_RENDER_PASS_TIER_2 = 0x2,
  221. } D3D12_RENDER_PASS_TIER;
  222. typedef enum D3D12_RAYTRACING_TIER
  223. {
  224. D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0x0,
  225. D3D12_RAYTRACING_TIER_1_0 = 0xa,
  226. } D3D12_RAYTRACING_TIER;
  227. interface ID3D12Fence;
  228. interface ID3D12RootSignature;
  229. interface ID3D12Heap;
  230. interface ID3D12DescriptorHeap;
  231. interface ID3D12Resource;
  232. interface ID3D12CommandAllocator;
  233. interface ID3D12GraphicsCommandList;
  234. interface ID3D12CommandQueue;
  235. interface ID3D12PipelineState;
  236. interface ID3D12Device;
  237. typedef RECT D3D12_RECT;
  238. typedef struct D3D12_BOX
  239. {
  240. UINT left;
  241. UINT top;
  242. UINT front;
  243. UINT right;
  244. UINT bottom;
  245. UINT back;
  246. } D3D12_BOX;
  247. typedef struct D3D12_VIEWPORT
  248. {
  249. FLOAT TopLeftX;
  250. FLOAT TopLeftY;
  251. FLOAT Width;
  252. FLOAT Height;
  253. FLOAT MinDepth;
  254. FLOAT MaxDepth;
  255. } D3D12_VIEWPORT;
  256. typedef struct D3D12_RANGE
  257. {
  258. SIZE_T Begin;
  259. SIZE_T End;
  260. } D3D12_RANGE;
  261. typedef struct D3D12_RANGE_UINT64
  262. {
  263. UINT64 Begin;
  264. UINT64 End;
  265. } D3D12_RANGE_UINT64;
  266. typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
  267. {
  268. UINT Subresource;
  269. D3D12_RANGE_UINT64 Range;
  270. } D3D12_SUBRESOURCE_RANGE_UINT64;
  271. typedef struct D3D12_RESOURCE_ALLOCATION_INFO
  272. {
  273. UINT64 SizeInBytes;
  274. UINT64 Alignment;
  275. } D3D12_RESOURCE_ALLOCATION_INFO;
  276. typedef struct D3D12_DRAW_ARGUMENTS
  277. {
  278. UINT VertexCountPerInstance;
  279. UINT InstanceCount;
  280. UINT StartVertexLocation;
  281. UINT StartInstanceLocation;
  282. } D3D12_DRAW_ARGUMENTS;
  283. typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
  284. {
  285. UINT IndexCountPerInstance;
  286. UINT InstanceCount;
  287. UINT StartIndexLocation;
  288. INT BaseVertexLocation;
  289. UINT StartInstanceLocation;
  290. } D3D12_DRAW_INDEXED_ARGUMENTS;
  291. typedef struct D3D12_DISPATCH_ARGUMENTS
  292. {
  293. UINT ThreadGroupCountX;
  294. UINT ThreadGroupCountY;
  295. UINT ThreadGroupCountZ;
  296. } D3D12_DISPATCH_ARGUMENTS;
  297. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
  298. {
  299. BOOL DoublePrecisionFloatShaderOps;
  300. BOOL OutputMergerLogicOp;
  301. D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
  302. D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
  303. D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
  304. BOOL PSSpecifiedStencilRefSupported;
  305. BOOL TypedUAVLoadAdditionalFormats;
  306. BOOL ROVsSupported;
  307. D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
  308. UINT MaxGPUVirtualAddressBitsPerResource;
  309. BOOL StandardSwizzle64KBSupported;
  310. D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
  311. BOOL CrossAdapterRowMajorTextureSupported;
  312. BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
  313. D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
  314. } D3D12_FEATURE_DATA_D3D12_OPTIONS;
  315. typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
  316. {
  317. DXGI_FORMAT Format;
  318. D3D12_FORMAT_SUPPORT1 Support1;
  319. D3D12_FORMAT_SUPPORT2 Support2;
  320. } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
  321. typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
  322. {
  323. D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0x00000000,
  324. D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
  325. } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
  326. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS);")
  327. typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
  328. {
  329. DXGI_FORMAT Format;
  330. UINT SampleCount;
  331. D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
  332. UINT NumQualityLevels;
  333. } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
  334. typedef enum D3D12_HEAP_TYPE
  335. {
  336. D3D12_HEAP_TYPE_DEFAULT = 1,
  337. D3D12_HEAP_TYPE_UPLOAD = 2,
  338. D3D12_HEAP_TYPE_READBACK = 3,
  339. D3D12_HEAP_TYPE_CUSTOM = 4,
  340. } D3D12_HEAP_TYPE;
  341. typedef enum D3D12_CPU_PAGE_PROPERTY
  342. {
  343. D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
  344. D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
  345. D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
  346. D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
  347. } D3D12_CPU_PAGE_PROPERTY;
  348. typedef enum D3D12_MEMORY_POOL
  349. {
  350. D3D12_MEMORY_POOL_UNKNOWN = 0,
  351. D3D12_MEMORY_POOL_L0 = 1,
  352. D3D12_MEMORY_POOL_L1 = 2,
  353. } D3D12_MEMORY_POOL;
  354. typedef struct D3D12_HEAP_PROPERTIES
  355. {
  356. D3D12_HEAP_TYPE Type;
  357. D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
  358. D3D12_MEMORY_POOL MemoryPoolPreference;
  359. UINT CreationNodeMask;
  360. UINT VisibleNodeMask;
  361. } D3D12_HEAP_PROPERTIES;
  362. typedef enum D3D12_HEAP_FLAGS
  363. {
  364. D3D12_HEAP_FLAG_NONE = 0x00,
  365. D3D12_HEAP_FLAG_SHARED = 0x01,
  366. D3D12_HEAP_FLAG_DENY_BUFFERS = 0x04,
  367. D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x08,
  368. D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
  369. D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
  370. D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
  371. D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x00,
  372. D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
  373. D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
  374. D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
  375. } D3D12_HEAP_FLAGS;
  376. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_HEAP_FLAGS);")
  377. typedef struct D3D12_HEAP_DESC
  378. {
  379. UINT64 SizeInBytes;
  380. D3D12_HEAP_PROPERTIES Properties;
  381. UINT64 Alignment;
  382. D3D12_HEAP_FLAGS Flags;
  383. } D3D12_HEAP_DESC;
  384. typedef struct D3D12_TILED_RESOURCE_COORDINATE
  385. {
  386. UINT X;
  387. UINT Y;
  388. UINT Z;
  389. UINT Subresource;
  390. } D3D12_TILED_RESOURCE_COORDINATE;
  391. typedef struct D3D12_TILE_REGION_SIZE
  392. {
  393. UINT NumTiles;
  394. BOOL UseBox;
  395. UINT Width;
  396. UINT16 Height;
  397. UINT16 Depth;
  398. } D3D12_TILE_REGION_SIZE;
  399. typedef struct D3D12_SUBRESOURCE_TILING
  400. {
  401. UINT WidthInTiles;
  402. UINT16 HeightInTiles;
  403. UINT16 DepthInTiles;
  404. UINT StartTileIndexInOverallResource;
  405. } D3D12_SUBRESOURCE_TILING;
  406. typedef struct D3D12_TILE_SHAPE
  407. {
  408. UINT WidthInTexels;
  409. UINT HeightInTexels;
  410. UINT DepthInTexels;
  411. } D3D12_TILE_SHAPE;
  412. typedef struct D3D12_SHADER_BYTECODE
  413. {
  414. const void *pShaderBytecode;
  415. SIZE_T BytecodeLength;
  416. } D3D12_SHADER_BYTECODE;
  417. typedef struct D3D12_DEPTH_STENCIL_VALUE
  418. {
  419. FLOAT Depth;
  420. UINT8 Stencil;
  421. } D3D12_DEPTH_STENCIL_VALUE;
  422. typedef struct D3D12_CLEAR_VALUE
  423. {
  424. DXGI_FORMAT Format;
  425. union
  426. {
  427. FLOAT Color[4];
  428. D3D12_DEPTH_STENCIL_VALUE DepthStencil;
  429. };
  430. } D3D12_CLEAR_VALUE;
  431. typedef struct D3D12_PACKED_MIP_INFO
  432. {
  433. UINT8 NumStandardMips;
  434. UINT8 NumPackedMips;
  435. UINT NumTilesForPackedMips;
  436. UINT StartTileIndexInOverallResource;
  437. } D3D12_PACKED_MIP_INFO;
  438. typedef enum D3D12_RESOURCE_STATES
  439. {
  440. D3D12_RESOURCE_STATE_COMMON = 0,
  441. D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  442. D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  443. D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  444. D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  445. D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  446. D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  447. D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  448. D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  449. D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  450. D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  451. D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  452. D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  453. D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  454. D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  455. D3D12_RESOURCE_STATE_GENERIC_READ = 0x1 | 0x2 | 0x40 | 0x80 | 0x200 | 0x800,
  456. D3D12_RESOURCE_STATE_PRESENT = 0x0,
  457. D3D12_RESOURCE_STATE_PREDICATION = 0x200,
  458. D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
  459. D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
  460. D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
  461. D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
  462. D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
  463. D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000,
  464. } D3D12_RESOURCE_STATES;
  465. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_STATES);")
  466. typedef enum D3D12_RESOURCE_BARRIER_TYPE
  467. {
  468. D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
  469. D3D12_RESOURCE_BARRIER_TYPE_ALIASING = 1,
  470. D3D12_RESOURCE_BARRIER_TYPE_UAV = 2,
  471. } D3D12_RESOURCE_BARRIER_TYPE;
  472. typedef enum D3D12_RESOURCE_BARRIER_FLAGS
  473. {
  474. D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
  475. D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
  476. D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
  477. } D3D12_RESOURCE_BARRIER_FLAGS;
  478. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_BARRIER_FLAGS);")
  479. typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
  480. {
  481. ID3D12Resource *pResource;
  482. UINT Subresource;
  483. D3D12_RESOURCE_STATES StateBefore;
  484. D3D12_RESOURCE_STATES StateAfter;
  485. } D3D12_RESOURCE_TRANSITION_BARRIER;
  486. typedef struct D3D12_RESOURCE_ALIASING_BARRIER_ALIASING
  487. {
  488. ID3D12Resource *pResourceBefore;
  489. ID3D12Resource *pResourceAfter;
  490. } D3D12_RESOURCE_ALIASING_BARRIER;
  491. typedef struct D3D12_RESOURCE_UAV_BARRIER
  492. {
  493. ID3D12Resource *pResource;
  494. } D3D12_RESOURCE_UAV_BARRIER;
  495. typedef struct D3D12_RESOURCE_BARRIER
  496. {
  497. D3D12_RESOURCE_BARRIER_TYPE Type;
  498. D3D12_RESOURCE_BARRIER_FLAGS Flags;
  499. union
  500. {
  501. D3D12_RESOURCE_TRANSITION_BARRIER Transition;
  502. D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
  503. D3D12_RESOURCE_UAV_BARRIER UAV;
  504. };
  505. } D3D12_RESOURCE_BARRIER;
  506. typedef enum D3D12_RESOURCE_DIMENSION
  507. {
  508. D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
  509. D3D12_RESOURCE_DIMENSION_BUFFER = 1,
  510. D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
  511. D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
  512. D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
  513. } D3D12_RESOURCE_DIMENSION;
  514. typedef enum D3D12_TEXTURE_LAYOUT
  515. {
  516. D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
  517. D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
  518. D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
  519. D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
  520. } D3D12_TEXTURE_LAYOUT;
  521. typedef enum D3D12_RESOURCE_FLAGS
  522. {
  523. D3D12_RESOURCE_FLAG_NONE = 0x0,
  524. D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
  525. D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
  526. D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
  527. D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
  528. D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
  529. D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
  530. } D3D12_RESOURCE_FLAGS;
  531. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RESOURCE_FLAGS);")
  532. typedef struct D3D12_RESOURCE_DESC
  533. {
  534. D3D12_RESOURCE_DIMENSION Dimension;
  535. UINT64 Alignment;
  536. UINT64 Width;
  537. UINT Height;
  538. UINT16 DepthOrArraySize;
  539. UINT16 MipLevels;
  540. DXGI_FORMAT Format;
  541. DXGI_SAMPLE_DESC SampleDesc;
  542. D3D12_TEXTURE_LAYOUT Layout;
  543. D3D12_RESOURCE_FLAGS Flags;
  544. } D3D12_RESOURCE_DESC;
  545. typedef enum D3D12_RESOLVE_MODE
  546. {
  547. D3D12_RESOLVE_MODE_DECOMPRESS = 0,
  548. D3D12_RESOLVE_MODE_MIN = 1,
  549. D3D12_RESOLVE_MODE_MAX = 2,
  550. D3D12_RESOLVE_MODE_AVERAGE = 3,
  551. } D3D12_RESOLVE_MODE;
  552. typedef struct D3D12_SAMPLE_POSITION
  553. {
  554. INT8 X;
  555. INT8 Y;
  556. } D3D12_SAMPLE_POSITION;
  557. typedef enum D3D12_TEXTURE_COPY_TYPE
  558. {
  559. D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
  560. D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
  561. } D3D12_TEXTURE_COPY_TYPE;
  562. typedef struct D3D12_SUBRESOURCE_FOOTPRINT
  563. {
  564. DXGI_FORMAT Format;
  565. UINT Width;
  566. UINT Height;
  567. UINT Depth;
  568. UINT RowPitch;
  569. } D3D12_SUBRESOURCE_FOOTPRINT;
  570. typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
  571. {
  572. UINT64 Offset;
  573. D3D12_SUBRESOURCE_FOOTPRINT Footprint;
  574. } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
  575. typedef struct D3D12_TEXTURE_COPY_LOCATION
  576. {
  577. ID3D12Resource *pResource;
  578. D3D12_TEXTURE_COPY_TYPE Type;
  579. union
  580. {
  581. D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
  582. UINT SubresourceIndex;
  583. };
  584. } D3D12_TEXTURE_COPY_LOCATION;
  585. typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
  586. {
  587. D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
  588. D3D12_DESCRIPTOR_RANGE_TYPE_UAV = 1,
  589. D3D12_DESCRIPTOR_RANGE_TYPE_CBV = 2,
  590. D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = 3,
  591. } D3D12_DESCRIPTOR_RANGE_TYPE;
  592. typedef struct D3D12_DESCRIPTOR_RANGE
  593. {
  594. D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
  595. UINT NumDescriptors;
  596. UINT BaseShaderRegister;
  597. UINT RegisterSpace;
  598. UINT OffsetInDescriptorsFromTableStart;
  599. } D3D12_DESCRIPTOR_RANGE;
  600. typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
  601. {
  602. D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
  603. D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
  604. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
  605. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
  606. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
  607. } D3D12_DESCRIPTOR_RANGE_FLAGS;
  608. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DESCRIPTOR_RANGE_FLAGS);")
  609. typedef struct D3D12_DESCRIPTOR_RANGE1
  610. {
  611. D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
  612. UINT NumDescriptors;
  613. UINT BaseShaderRegister;
  614. UINT RegisterSpace;
  615. D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
  616. UINT OffsetInDescriptorsFromTableStart;
  617. } D3D12_DESCRIPTOR_RANGE1;
  618. typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
  619. {
  620. UINT NumDescriptorRanges;
  621. const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
  622. } D3D12_ROOT_DESCRIPTOR_TABLE;
  623. typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
  624. {
  625. UINT NumDescriptorRanges;
  626. const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
  627. } D3D12_ROOT_DESCRIPTOR_TABLE1;
  628. typedef struct D3D12_ROOT_CONSTANTS
  629. {
  630. UINT ShaderRegister;
  631. UINT RegisterSpace;
  632. UINT Num32BitValues;
  633. } D3D12_ROOT_CONSTANTS;
  634. typedef struct D3D12_ROOT_DESCRIPTOR
  635. {
  636. UINT ShaderRegister;
  637. UINT RegisterSpace;
  638. } D3D12_ROOT_DESCRIPTOR;
  639. typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
  640. {
  641. D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
  642. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
  643. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
  644. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
  645. } D3D12_ROOT_DESCRIPTOR_FLAGS;
  646. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_ROOT_DESCRIPTOR_FLAGS);")
  647. typedef struct D3D12_ROOT_DESCRIPTOR1
  648. {
  649. UINT ShaderRegister;
  650. UINT RegisterSpace;
  651. D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
  652. } D3D12_ROOT_DESCRIPTOR1;
  653. typedef enum D3D12_ROOT_PARAMETER_TYPE
  654. {
  655. D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
  656. D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 1,
  657. D3D12_ROOT_PARAMETER_TYPE_CBV = 2,
  658. D3D12_ROOT_PARAMETER_TYPE_SRV = 3,
  659. D3D12_ROOT_PARAMETER_TYPE_UAV = 4,
  660. } D3D12_ROOT_PARAMETER_TYPE;
  661. typedef enum D3D12_SHADER_VISIBILITY
  662. {
  663. D3D12_SHADER_VISIBILITY_ALL = 0,
  664. D3D12_SHADER_VISIBILITY_VERTEX = 1,
  665. D3D12_SHADER_VISIBILITY_HULL = 2,
  666. D3D12_SHADER_VISIBILITY_DOMAIN = 3,
  667. D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
  668. D3D12_SHADER_VISIBILITY_PIXEL = 5,
  669. } D3D12_SHADER_VISIBILITY;
  670. typedef struct D3D12_ROOT_PARAMETER
  671. {
  672. D3D12_ROOT_PARAMETER_TYPE ParameterType;
  673. union
  674. {
  675. D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
  676. D3D12_ROOT_CONSTANTS Constants;
  677. D3D12_ROOT_DESCRIPTOR Descriptor;
  678. };
  679. D3D12_SHADER_VISIBILITY ShaderVisibility;
  680. } D3D12_ROOT_PARAMETER;
  681. typedef struct D3D12_ROOT_PARAMETER1
  682. {
  683. D3D12_ROOT_PARAMETER_TYPE ParameterType;
  684. union
  685. {
  686. D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
  687. D3D12_ROOT_CONSTANTS Constants;
  688. D3D12_ROOT_DESCRIPTOR1 Descriptor;
  689. };
  690. D3D12_SHADER_VISIBILITY ShaderVisibility;
  691. } D3D12_ROOT_PARAMETER1;
  692. typedef enum D3D12_STATIC_BORDER_COLOR
  693. {
  694. D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
  695. D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = 1,
  696. D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = 2,
  697. } D3D12_STATIC_BORDER_COLOR;
  698. typedef enum D3D12_FILTER
  699. {
  700. D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00,
  701. D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x01,
  702. D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x04,
  703. D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x05,
  704. D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
  705. D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
  706. D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
  707. D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
  708. D3D12_FILTER_ANISOTROPIC = 0x55,
  709. D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
  710. D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
  711. D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
  712. D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
  713. D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
  714. D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
  715. D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
  716. D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
  717. D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
  718. D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
  719. D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
  720. D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
  721. D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
  722. D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
  723. D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
  724. D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
  725. D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
  726. D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
  727. D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
  728. D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
  729. D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
  730. D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
  731. D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
  732. D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
  733. D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
  734. D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
  735. D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5,
  736. } D3D12_FILTER;
  737. typedef enum D3D12_FILTER_TYPE
  738. {
  739. D3D12_FILTER_TYPE_POINT = 0,
  740. D3D12_FILTER_TYPE_LINEAR = 1,
  741. } D3D12_FILTER_TYPE;
  742. const UINT D3D12_MIP_FILTER_SHIFT = 0;
  743. const UINT D3D12_MAG_FILTER_SHIFT = 2;
  744. const UINT D3D12_MIN_FILTER_SHIFT = 4;
  745. const UINT D3D12_FILTER_TYPE_MASK = 0x3;
  746. const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x40;
  747. typedef enum D3D12_FILTER_REDUCTION_TYPE
  748. {
  749. D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
  750. D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
  751. D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
  752. D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
  753. } D3D12_FILTER_REDUCTION_TYPE;
  754. const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x3;
  755. const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
  756. cpp_quote("#define D3D12_DECODE_MAG_FILTER(filter) \\")
  757. cpp_quote(" ((D3D12_FILTER_TYPE)(((filter) >> D3D12_MAG_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK))")
  758. cpp_quote("#define D3D12_DECODE_MIN_FILTER(filter) \\")
  759. cpp_quote(" ((D3D12_FILTER_TYPE)(((filter) >> D3D12_MIN_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK))")
  760. cpp_quote("#define D3D12_DECODE_MIP_FILTER(filter) \\")
  761. cpp_quote(" ((D3D12_FILTER_TYPE)(((filter) >> D3D12_MIP_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK))")
  762. cpp_quote("#define D3D12_DECODE_IS_ANISOTROPIC_FILTER(filter) \\")
  763. cpp_quote(" (((filter) & D3D12_ANISOTROPIC_FILTERING_BIT) \\")
  764. cpp_quote(" && (D3D12_DECODE_MIN_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) \\")
  765. cpp_quote(" && (D3D12_DECODE_MAG_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) \\")
  766. cpp_quote(" && (D3D12_DECODE_MIP_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR))")
  767. cpp_quote("#define D3D12_DECODE_FILTER_REDUCTION(filter) \\")
  768. cpp_quote(" ((D3D12_FILTER_REDUCTION_TYPE)(((filter) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT) \\")
  769. cpp_quote(" & D3D12_FILTER_REDUCTION_TYPE_MASK))")
  770. cpp_quote("#define D3D12_DECODE_IS_COMPARISON_FILTER(filter) \\")
  771. cpp_quote(" (D3D12_DECODE_FILTER_REDUCTION(filter) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON)")
  772. typedef enum D3D12_TEXTURE_ADDRESS_MODE
  773. {
  774. D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
  775. D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
  776. D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
  777. D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
  778. D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5,
  779. } D3D12_TEXTURE_ADDRESS_MODE;
  780. typedef enum D3D12_COMPARISON_FUNC
  781. {
  782. D3D12_COMPARISON_FUNC_NEVER = 1,
  783. D3D12_COMPARISON_FUNC_LESS = 2,
  784. D3D12_COMPARISON_FUNC_EQUAL = 3,
  785. D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
  786. D3D12_COMPARISON_FUNC_GREATER = 5,
  787. D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
  788. D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
  789. D3D12_COMPARISON_FUNC_ALWAYS = 8,
  790. } D3D12_COMPARISON_FUNC;
  791. typedef struct D3D12_STATIC_SAMPLER_DESC
  792. {
  793. D3D12_FILTER Filter;
  794. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  795. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  796. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  797. FLOAT MipLODBias;
  798. UINT MaxAnisotropy;
  799. D3D12_COMPARISON_FUNC ComparisonFunc;
  800. D3D12_STATIC_BORDER_COLOR BorderColor;
  801. FLOAT MinLOD;
  802. FLOAT MaxLOD;
  803. UINT ShaderRegister;
  804. UINT RegisterSpace;
  805. D3D12_SHADER_VISIBILITY ShaderVisibility;
  806. } D3D12_STATIC_SAMPLER_DESC;
  807. typedef enum D3D12_ROOT_SIGNATURE_FLAGS
  808. {
  809. D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x00,
  810. D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x01,
  811. D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x02,
  812. D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x04,
  813. D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x08,
  814. D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
  815. D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
  816. D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
  817. } D3D12_ROOT_SIGNATURE_FLAGS;
  818. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_ROOT_SIGNATURE_FLAGS);")
  819. typedef struct D3D12_ROOT_SIGNATURE_DESC
  820. {
  821. UINT NumParameters;
  822. const D3D12_ROOT_PARAMETER *pParameters;
  823. UINT NumStaticSamplers;
  824. const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
  825. D3D12_ROOT_SIGNATURE_FLAGS Flags;
  826. } D3D12_ROOT_SIGNATURE_DESC;
  827. typedef struct D3D12_ROOT_SIGNATURE_DESC1
  828. {
  829. UINT NumParameters;
  830. const D3D12_ROOT_PARAMETER1 *pParameters;
  831. UINT NumStaticSamplers;
  832. const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
  833. D3D12_ROOT_SIGNATURE_FLAGS Flags;
  834. } D3D12_ROOT_SIGNATURE_DESC1;
  835. typedef enum D3D_ROOT_SIGNATURE_VERSION
  836. {
  837. D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
  838. D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
  839. D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
  840. } D3D_ROOT_SIGNATURE_VERSION;
  841. typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
  842. {
  843. D3D_ROOT_SIGNATURE_VERSION Version;
  844. union
  845. {
  846. D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
  847. D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
  848. };
  849. } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
  850. typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
  851. {
  852. D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
  853. D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
  854. D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
  855. D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
  856. D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES,
  857. } D3D12_DESCRIPTOR_HEAP_TYPE;
  858. typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
  859. {
  860. D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
  861. D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
  862. } D3D12_DESCRIPTOR_HEAP_FLAGS;
  863. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DESCRIPTOR_HEAP_FLAGS);")
  864. typedef struct D3D12_DESCRIPTOR_HEAP_DESC
  865. {
  866. D3D12_DESCRIPTOR_HEAP_TYPE Type;
  867. UINT NumDescriptors;
  868. D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
  869. UINT NodeMask;
  870. } D3D12_DESCRIPTOR_HEAP_DESC;
  871. typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
  872. typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
  873. {
  874. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  875. UINT SizeInBytes;
  876. } D3D12_CONSTANT_BUFFER_VIEW_DESC;
  877. typedef enum D3D12_SRV_DIMENSION
  878. {
  879. D3D12_SRV_DIMENSION_UNKNOWN = 0,
  880. D3D12_SRV_DIMENSION_BUFFER = 1,
  881. D3D12_SRV_DIMENSION_TEXTURE1D = 2,
  882. D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
  883. D3D12_SRV_DIMENSION_TEXTURE2D = 4,
  884. D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
  885. D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
  886. D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
  887. D3D12_SRV_DIMENSION_TEXTURE3D = 8,
  888. D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
  889. D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
  890. } D3D12_SRV_DIMENSION;
  891. typedef enum D3D12_BUFFER_SRV_FLAGS
  892. {
  893. D3D12_BUFFER_SRV_FLAG_NONE = 0x0,
  894. D3D12_BUFFER_SRV_FLAG_RAW = 0x1,
  895. } D3D12_BUFFER_SRV_FLAGS;
  896. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_BUFFER_SRV_FLAGS);")
  897. typedef enum D3D12_SHADER_COMPONENT_MAPPING
  898. {
  899. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
  900. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
  901. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
  902. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
  903. D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
  904. D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
  905. } D3D12_SHADER_COMPONENT_MAPPING;
  906. cpp_quote("#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(x, y, z, w) \\")
  907. cpp_quote(" (((x) & D3D12_SHADER_COMPONENT_MAPPING_MASK) \\")
  908. cpp_quote(" | (((y) & D3D12_SHADER_COMPONENT_MAPPING_MASK) << D3D12_SHADER_COMPONENT_MAPPING_SHIFT) \\")
  909. cpp_quote(" | (((z) & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 2)) \\")
  910. cpp_quote(" | (((w) & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 3)) \\")
  911. cpp_quote(" | D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES)")
  912. cpp_quote("#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0, 1, 2, 3)")
  913. cpp_quote("#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(i, mapping) \\")
  914. cpp_quote(" ((D3D12_SHADER_COMPONENT_MAPPING)(mapping >> (i * D3D12_SHADER_COMPONENT_MAPPING_SHIFT) \\")
  915. cpp_quote(" & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
  916. typedef struct D3D12_BUFFER_SRV
  917. {
  918. UINT64 FirstElement;
  919. UINT NumElements;
  920. UINT StructureByteStride;
  921. D3D12_BUFFER_SRV_FLAGS Flags;
  922. } D3D12_BUFFER_SRV;
  923. typedef struct D3D12_TEX1D_SRV
  924. {
  925. UINT MostDetailedMip;
  926. UINT MipLevels;
  927. FLOAT ResourceMinLODClamp;
  928. } D3D12_TEX1D_SRV;
  929. typedef struct D3D12_TEX1D_ARRAY_SRV
  930. {
  931. UINT MostDetailedMip;
  932. UINT MipLevels;
  933. UINT FirstArraySlice;
  934. UINT ArraySize;
  935. FLOAT ResourceMinLODClamp;
  936. } D3D12_TEX1D_ARRAY_SRV;
  937. typedef struct D3D12_TEX2D_SRV
  938. {
  939. UINT MostDetailedMip;
  940. UINT MipLevels;
  941. UINT PlaneSlice;
  942. FLOAT ResourceMinLODClamp;
  943. } D3D12_TEX2D_SRV;
  944. typedef struct D3D12_TEX2D_ARRAY_SRV
  945. {
  946. UINT MostDetailedMip;
  947. UINT MipLevels;
  948. UINT FirstArraySlice;
  949. UINT ArraySize;
  950. UINT PlaneSlice;
  951. FLOAT ResourceMinLODClamp;
  952. } D3D12_TEX2D_ARRAY_SRV;
  953. typedef struct D3D12_TEX2DMS_SRV
  954. {
  955. UINT UnusedField_NothingToDefine;
  956. } D3D12_TEX2DMS_SRV;
  957. typedef struct D3D12_TEX2DMS_ARRAY_SRV
  958. {
  959. UINT FirstArraySlice;
  960. UINT ArraySize;
  961. } D3D12_TEX2DMS_ARRAY_SRV;
  962. typedef struct D3D12_TEX3D_SRV
  963. {
  964. UINT MostDetailedMip;
  965. UINT MipLevels;
  966. FLOAT ResourceMinLODClamp;
  967. } D3D12_TEX3D_SRV;
  968. typedef struct D3D12_TEXCUBE_SRV
  969. {
  970. UINT MostDetailedMip;
  971. UINT MipLevels;
  972. FLOAT ResourceMinLODClamp;
  973. } D3D12_TEXCUBE_SRV;
  974. typedef struct D3D12_TEXCUBE_ARRAY_SRV
  975. {
  976. UINT MostDetailedMip;
  977. UINT MipLevels;
  978. UINT First2DArrayFace;
  979. UINT NumCubes;
  980. FLOAT ResourceMinLODClamp;
  981. } D3D12_TEXCUBE_ARRAY_SRV;
  982. typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
  983. {
  984. DXGI_FORMAT Format;
  985. D3D12_SRV_DIMENSION ViewDimension;
  986. UINT Shader4ComponentMapping;
  987. union
  988. {
  989. D3D12_BUFFER_SRV Buffer;
  990. D3D12_TEX1D_SRV Texture1D;
  991. D3D12_TEX1D_ARRAY_SRV Texture1DArray;
  992. D3D12_TEX2D_SRV Texture2D;
  993. D3D12_TEX2D_ARRAY_SRV Texture2DArray;
  994. D3D12_TEX2DMS_SRV Texture2DMS;
  995. D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
  996. D3D12_TEX3D_SRV Texture3D;
  997. D3D12_TEXCUBE_SRV TextureCube;
  998. D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
  999. };
  1000. } D3D12_SHADER_RESOURCE_VIEW_DESC;
  1001. typedef enum D3D12_UAV_DIMENSION
  1002. {
  1003. D3D12_UAV_DIMENSION_UNKNOWN = 0,
  1004. D3D12_UAV_DIMENSION_BUFFER = 1,
  1005. D3D12_UAV_DIMENSION_TEXTURE1D = 2,
  1006. D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
  1007. D3D12_UAV_DIMENSION_TEXTURE2D = 4,
  1008. D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
  1009. D3D12_UAV_DIMENSION_TEXTURE3D = 8,
  1010. } D3D12_UAV_DIMENSION;
  1011. typedef enum D3D12_BUFFER_UAV_FLAGS
  1012. {
  1013. D3D12_BUFFER_UAV_FLAG_NONE = 0x0,
  1014. D3D12_BUFFER_UAV_FLAG_RAW = 0x1,
  1015. } D3D12_BUFFER_UAV_FLAGS;
  1016. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_BUFFER_UAV_FLAGS);")
  1017. typedef struct D3D12_BUFFER_UAV
  1018. {
  1019. UINT64 FirstElement;
  1020. UINT NumElements;
  1021. UINT StructureByteStride;
  1022. UINT64 CounterOffsetInBytes;
  1023. D3D12_BUFFER_UAV_FLAGS Flags;
  1024. } D3D12_BUFFER_UAV;
  1025. typedef struct D3D12_TEX1D_UAV
  1026. {
  1027. UINT MipSlice;
  1028. } D3D12_TEX1D_UAV;
  1029. typedef struct D3D12_TEX1D_ARRAY_UAV
  1030. {
  1031. UINT MipSlice;
  1032. UINT FirstArraySlice;
  1033. UINT ArraySize;
  1034. } D3D12_TEX1D_ARRAY_UAV;
  1035. typedef struct D3D12_TEX2D_UAV
  1036. {
  1037. UINT MipSlice;
  1038. UINT PlaneSlice;
  1039. } D3D12_TEX2D_UAV;
  1040. typedef struct D3D12_TEX2D_ARRAY_UAV
  1041. {
  1042. UINT MipSlice;
  1043. UINT FirstArraySlice;
  1044. UINT ArraySize;
  1045. UINT PlaneSlice;
  1046. } D3D12_TEX2D_ARRAY_UAV;
  1047. typedef struct D3D12_TEX3D_UAV
  1048. {
  1049. UINT MipSlice;
  1050. UINT FirstWSlice;
  1051. UINT WSize;
  1052. } D3D12_TEX3D_UAV;
  1053. typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
  1054. {
  1055. DXGI_FORMAT Format;
  1056. D3D12_UAV_DIMENSION ViewDimension;
  1057. union
  1058. {
  1059. D3D12_BUFFER_UAV Buffer;
  1060. D3D12_TEX1D_UAV Texture1D;
  1061. D3D12_TEX1D_ARRAY_UAV Texture1DArray;
  1062. D3D12_TEX2D_UAV Texture2D;
  1063. D3D12_TEX2D_ARRAY_UAV Texture2DArray;
  1064. D3D12_TEX3D_UAV Texture3D;
  1065. };
  1066. } D3D12_UNORDERED_ACCESS_VIEW_DESC;
  1067. typedef enum D3D12_RTV_DIMENSION
  1068. {
  1069. D3D12_RTV_DIMENSION_UNKNOWN = 0,
  1070. D3D12_RTV_DIMENSION_BUFFER = 1,
  1071. D3D12_RTV_DIMENSION_TEXTURE1D = 2,
  1072. D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
  1073. D3D12_RTV_DIMENSION_TEXTURE2D = 4,
  1074. D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
  1075. D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
  1076. D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
  1077. D3D12_RTV_DIMENSION_TEXTURE3D = 8,
  1078. } D3D12_RTV_DIMENSION;
  1079. typedef struct D3D12_BUFFER_RTV
  1080. {
  1081. UINT64 FirstElement;
  1082. UINT NumElements;
  1083. } D3D12_BUFFER_RTV;
  1084. typedef struct D3D12_TEX1D_RTV
  1085. {
  1086. UINT MipSlice;
  1087. } D3D12_TEX1D_RTV;
  1088. typedef struct D3D12_TEX1D_ARRAY_RTV
  1089. {
  1090. UINT MipSlice;
  1091. UINT FirstArraySlice;
  1092. UINT ArraySize;
  1093. } D3D12_TEX1D_ARRAY_RTV;
  1094. typedef struct D3D12_TEX2D_RTV
  1095. {
  1096. UINT MipSlice;
  1097. UINT PlaneSlice;
  1098. } D3D12_TEX2D_RTV;
  1099. typedef struct D3D12_TEX2D_ARRAY_RTV
  1100. {
  1101. UINT MipSlice;
  1102. UINT FirstArraySlice;
  1103. UINT ArraySize;
  1104. UINT PlaneSlice;
  1105. } D3D12_TEX2D_ARRAY_RTV;
  1106. typedef struct D3D12_TEX2DMS_RTV
  1107. {
  1108. UINT UnusedField_NothingToDefine;
  1109. } D3D12_TEX2DMS_RTV;
  1110. typedef struct D3D12_TEX2DMS_ARRAY_RTV
  1111. {
  1112. UINT FirstArraySlice;
  1113. UINT ArraySize;
  1114. } D3D12_TEX2DMS_ARRAY_RTV;
  1115. typedef struct D3D12_TEX3D_RTV
  1116. {
  1117. UINT MipSlice;
  1118. UINT FirstWSlice;
  1119. UINT WSize;
  1120. } D3D12_TEX3D_RTV;
  1121. typedef struct D3D12_RENDER_TARGET_VIEW_DESC
  1122. {
  1123. DXGI_FORMAT Format;
  1124. D3D12_RTV_DIMENSION ViewDimension;
  1125. union
  1126. {
  1127. D3D12_BUFFER_RTV Buffer;
  1128. D3D12_TEX1D_RTV Texture1D;
  1129. D3D12_TEX1D_ARRAY_RTV Texture1DArray;
  1130. D3D12_TEX2D_RTV Texture2D;
  1131. D3D12_TEX2D_ARRAY_RTV Texture2DArray;
  1132. D3D12_TEX2DMS_RTV Texture2DMS;
  1133. D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
  1134. D3D12_TEX3D_RTV Texture3D;
  1135. };
  1136. } D3D12_RENDER_TARGET_VIEW_DESC;
  1137. typedef enum D3D12_DSV_DIMENSION
  1138. {
  1139. D3D12_DSV_DIMENSION_UNKNOWN = 0,
  1140. D3D12_DSV_DIMENSION_TEXTURE1D = 1,
  1141. D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
  1142. D3D12_DSV_DIMENSION_TEXTURE2D = 3,
  1143. D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
  1144. D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
  1145. D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
  1146. } D3D12_DSV_DIMENSION;
  1147. typedef enum D3D12_DSV_FLAGS
  1148. {
  1149. D3D12_DSV_FLAG_NONE = 0x0,
  1150. D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
  1151. D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
  1152. } D3D12_DSV_FLAGS;
  1153. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_DSV_FLAGS);")
  1154. typedef struct D3D12_TEX1D_DSV
  1155. {
  1156. UINT MipSlice;
  1157. } D3D12_TEX1D_DSV;
  1158. typedef struct D3D12_TEX1D_ARRAY_DSV
  1159. {
  1160. UINT MipSlice;
  1161. UINT FirstArraySlice;
  1162. UINT ArraySize;
  1163. } D3D12_TEX1D_ARRAY_DSV;
  1164. typedef struct D3D12_TEX2D_DSV
  1165. {
  1166. UINT MipSlice;
  1167. } D3D12_TEX2D_DSV;
  1168. typedef struct D3D12_TEX2D_ARRAY_DSV
  1169. {
  1170. UINT MipSlice;
  1171. UINT FirstArraySlice;
  1172. UINT ArraySize;
  1173. } D3D12_TEX2D_ARRAY_DSV;
  1174. typedef struct D3D12_TEX2DMS_DSV
  1175. {
  1176. UINT UnusedField_NothingToDefine;
  1177. } D3D12_TEX2DMS_DSV;
  1178. typedef struct D3D12_TEX2DMS_ARRAY_DSV
  1179. {
  1180. UINT FirstArraySlice;
  1181. UINT ArraySize;
  1182. } D3D12_TEX2DMS_ARRAY_DSV;
  1183. typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
  1184. {
  1185. DXGI_FORMAT Format;
  1186. D3D12_DSV_DIMENSION ViewDimension;
  1187. D3D12_DSV_FLAGS Flags;
  1188. union
  1189. {
  1190. D3D12_TEX1D_DSV Texture1D;
  1191. D3D12_TEX1D_ARRAY_DSV Texture1DArray;
  1192. D3D12_TEX2D_DSV Texture2D;
  1193. D3D12_TEX2D_ARRAY_DSV Texture2DArray;
  1194. D3D12_TEX2DMS_DSV Texture2DMS;
  1195. D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
  1196. };
  1197. } D3D12_DEPTH_STENCIL_VIEW_DESC;
  1198. typedef struct D3D12_SAMPLER_DESC
  1199. {
  1200. D3D12_FILTER Filter;
  1201. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  1202. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  1203. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  1204. FLOAT MipLODBias;
  1205. UINT MaxAnisotropy;
  1206. D3D12_COMPARISON_FUNC ComparisonFunc;
  1207. FLOAT BorderColor[4];
  1208. FLOAT MinLOD;
  1209. FLOAT MaxLOD;
  1210. } D3D12_SAMPLER_DESC;
  1211. typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
  1212. {
  1213. SIZE_T ptr;
  1214. } D3D12_CPU_DESCRIPTOR_HANDLE;
  1215. typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
  1216. {
  1217. UINT64 ptr;
  1218. } D3D12_GPU_DESCRIPTOR_HANDLE;
  1219. typedef enum D3D12_STENCIL_OP
  1220. {
  1221. D3D12_STENCIL_OP_KEEP = 1,
  1222. D3D12_STENCIL_OP_ZERO = 2,
  1223. D3D12_STENCIL_OP_REPLACE = 3,
  1224. D3D12_STENCIL_OP_INCR_SAT = 4,
  1225. D3D12_STENCIL_OP_DECR_SAT = 5,
  1226. D3D12_STENCIL_OP_INVERT = 6,
  1227. D3D12_STENCIL_OP_INCR = 7,
  1228. D3D12_STENCIL_OP_DECR = 8,
  1229. } D3D12_STENCIL_OP;
  1230. typedef struct D3D12_DEPTH_STENCILOP_DESC
  1231. {
  1232. D3D12_STENCIL_OP StencilFailOp;
  1233. D3D12_STENCIL_OP StencilDepthFailOp;
  1234. D3D12_STENCIL_OP StencilPassOp;
  1235. D3D12_COMPARISON_FUNC StencilFunc;
  1236. } D3D12_DEPTH_STENCILOP_DESC;
  1237. typedef enum D3D12_DEPTH_WRITE_MASK
  1238. {
  1239. D3D12_DEPTH_WRITE_MASK_ZERO = 0,
  1240. D3D12_DEPTH_WRITE_MASK_ALL = 1,
  1241. } D3D12_DEPTH_WRITE_MASK;
  1242. typedef struct D3D12_DEPTH_STENCIL_DESC
  1243. {
  1244. BOOL DepthEnable;
  1245. D3D12_DEPTH_WRITE_MASK DepthWriteMask;
  1246. D3D12_COMPARISON_FUNC DepthFunc;
  1247. BOOL StencilEnable;
  1248. UINT8 StencilReadMask;
  1249. UINT8 StencilWriteMask;
  1250. D3D12_DEPTH_STENCILOP_DESC FrontFace;
  1251. D3D12_DEPTH_STENCILOP_DESC BackFace;
  1252. } D3D12_DEPTH_STENCIL_DESC;
  1253. typedef enum D3D12_BLEND
  1254. {
  1255. D3D12_BLEND_ZERO = 1,
  1256. D3D12_BLEND_ONE = 2,
  1257. D3D12_BLEND_SRC_COLOR = 3,
  1258. D3D12_BLEND_INV_SRC_COLOR = 4,
  1259. D3D12_BLEND_SRC_ALPHA = 5,
  1260. D3D12_BLEND_INV_SRC_ALPHA = 6,
  1261. D3D12_BLEND_DEST_ALPHA = 7,
  1262. D3D12_BLEND_INV_DEST_ALPHA = 8,
  1263. D3D12_BLEND_DEST_COLOR = 9,
  1264. D3D12_BLEND_INV_DEST_COLOR = 10,
  1265. D3D12_BLEND_SRC_ALPHA_SAT = 11,
  1266. D3D12_BLEND_BLEND_FACTOR = 14,
  1267. D3D12_BLEND_INV_BLEND_FACTOR = 15,
  1268. D3D12_BLEND_SRC1_COLOR = 16,
  1269. D3D12_BLEND_INV_SRC1_COLOR = 17,
  1270. D3D12_BLEND_SRC1_ALPHA = 18,
  1271. D3D12_BLEND_INV_SRC1_ALPHA = 19,
  1272. } D3D12_BLEND;
  1273. typedef enum D3D12_BLEND_OP
  1274. {
  1275. D3D12_BLEND_OP_ADD = 1,
  1276. D3D12_BLEND_OP_SUBTRACT = 2,
  1277. D3D12_BLEND_OP_REV_SUBTRACT = 3,
  1278. D3D12_BLEND_OP_MIN = 4,
  1279. D3D12_BLEND_OP_MAX = 5,
  1280. } D3D12_BLEND_OP;
  1281. typedef enum D3D12_LOGIC_OP
  1282. {
  1283. D3D12_LOGIC_OP_CLEAR = 0,
  1284. D3D12_LOGIC_OP_SET = 1,
  1285. D3D12_LOGIC_OP_COPY = 2,
  1286. D3D12_LOGIC_OP_COPY_INVERTED = 3,
  1287. D3D12_LOGIC_OP_NOOP = 4,
  1288. D3D12_LOGIC_OP_INVERT = 5,
  1289. D3D12_LOGIC_OP_AND = 6,
  1290. D3D12_LOGIC_OP_NAND = 7,
  1291. D3D12_LOGIC_OP_OR = 8,
  1292. D3D12_LOGIC_OP_NOR = 9,
  1293. D3D12_LOGIC_OP_XOR = 10,
  1294. D3D12_LOGIC_OP_EQUIV = 11,
  1295. D3D12_LOGIC_OP_AND_REVERSE = 12,
  1296. D3D12_LOGIC_OP_AND_INVERTED = 13,
  1297. D3D12_LOGIC_OP_OR_REVERSE = 14,
  1298. D3D12_LOGIC_OP_OR_INVERTED = 15,
  1299. } D3D12_LOGIC_OP;
  1300. typedef enum D3D12_COLOR_WRITE_ENABLE
  1301. {
  1302. D3D12_COLOR_WRITE_ENABLE_RED = 0x1,
  1303. D3D12_COLOR_WRITE_ENABLE_GREEN = 0x2,
  1304. D3D12_COLOR_WRITE_ENABLE_BLUE = 0x4,
  1305. D3D12_COLOR_WRITE_ENABLE_ALPHA = 0x8,
  1306. D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED
  1307. | D3D12_COLOR_WRITE_ENABLE_GREEN | D3D12_COLOR_WRITE_ENABLE_BLUE
  1308. | D3D12_COLOR_WRITE_ENABLE_ALPHA),
  1309. } D3D12_COLOR_WRITE_ENABLE;
  1310. typedef struct D3D12_RENDER_TARGET_BLEND_DESC
  1311. {
  1312. BOOL BlendEnable;
  1313. BOOL LogicOpEnable;
  1314. D3D12_BLEND SrcBlend;
  1315. D3D12_BLEND DestBlend;
  1316. D3D12_BLEND_OP BlendOp;
  1317. D3D12_BLEND SrcBlendAlpha;
  1318. D3D12_BLEND DestBlendAlpha;
  1319. D3D12_BLEND_OP BlendOpAlpha;
  1320. D3D12_LOGIC_OP LogicOp;
  1321. UINT8 RenderTargetWriteMask;
  1322. } D3D12_RENDER_TARGET_BLEND_DESC;
  1323. typedef struct D3D12_BLEND_DESC
  1324. {
  1325. BOOL AlphaToCoverageEnable;
  1326. BOOL IndependentBlendEnable;
  1327. D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
  1328. } D3D12_BLEND_DESC;
  1329. typedef enum D3D12_FILL_MODE
  1330. {
  1331. D3D12_FILL_MODE_WIREFRAME = 2,
  1332. D3D12_FILL_MODE_SOLID = 3,
  1333. } D3D12_FILL_MODE;
  1334. typedef enum D3D12_CULL_MODE
  1335. {
  1336. D3D12_CULL_MODE_NONE = 1,
  1337. D3D12_CULL_MODE_FRONT = 2,
  1338. D3D12_CULL_MODE_BACK = 3,
  1339. } D3D12_CULL_MODE;
  1340. typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
  1341. {
  1342. D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
  1343. D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
  1344. } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
  1345. typedef struct D3D12_RASTERIZER_DESC
  1346. {
  1347. D3D12_FILL_MODE FillMode;
  1348. D3D12_CULL_MODE CullMode;
  1349. BOOL FrontCounterClockwise;
  1350. INT DepthBias;
  1351. FLOAT DepthBiasClamp;
  1352. FLOAT SlopeScaledDepthBias;
  1353. BOOL DepthClipEnable;
  1354. BOOL MultisampleEnable;
  1355. BOOL AntialiasedLineEnable;
  1356. UINT ForcedSampleCount;
  1357. D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
  1358. } D3D12_RASTERIZER_DESC;
  1359. typedef struct D3D12_SO_DECLARATION_ENTRY
  1360. {
  1361. UINT Stream;
  1362. const char *SemanticName;
  1363. UINT SemanticIndex;
  1364. BYTE StartComponent;
  1365. BYTE ComponentCount;
  1366. BYTE OutputSlot;
  1367. } D3D12_SO_DECLARATION_ENTRY;
  1368. typedef struct D3D12_STREAM_OUTPUT_DESC
  1369. {
  1370. const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
  1371. UINT NumEntries;
  1372. const UINT *pBufferStrides;
  1373. UINT NumStrides;
  1374. UINT RasterizedStream;
  1375. } D3D12_STREAM_OUTPUT_DESC;
  1376. typedef enum D3D12_INPUT_CLASSIFICATION
  1377. {
  1378. D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
  1379. D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1,
  1380. } D3D12_INPUT_CLASSIFICATION;
  1381. typedef struct D3D12_INPUT_ELEMENT_DESC
  1382. {
  1383. const char *SemanticName;
  1384. UINT SemanticIndex;
  1385. DXGI_FORMAT Format;
  1386. UINT InputSlot;
  1387. UINT AlignedByteOffset;
  1388. D3D12_INPUT_CLASSIFICATION InputSlotClass;
  1389. UINT InstanceDataStepRate;
  1390. } D3D12_INPUT_ELEMENT_DESC;
  1391. typedef struct D3D12_INPUT_LAYOUT_DESC
  1392. {
  1393. const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
  1394. UINT NumElements;
  1395. } D3D12_INPUT_LAYOUT_DESC;
  1396. typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
  1397. {
  1398. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
  1399. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
  1400. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2,
  1401. } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
  1402. typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
  1403. typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
  1404. {
  1405. D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
  1406. D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
  1407. D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
  1408. D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
  1409. D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4,
  1410. } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
  1411. typedef struct D3D12_CACHED_PIPELINE_STATE
  1412. {
  1413. const void *pCachedBlob;
  1414. SIZE_T CachedBlobSizeInBytes;
  1415. } D3D12_CACHED_PIPELINE_STATE;
  1416. typedef enum D3D12_PIPELINE_STATE_FLAGS
  1417. {
  1418. D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
  1419. D3D12_PIPELINE_STATE_FLAG_DEBUG = 0x1,
  1420. } D3D12_PIPELINE_STATE_FLAGS;
  1421. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_PIPELINE_STATE_FLAGS);")
  1422. typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
  1423. {
  1424. ID3D12RootSignature *pRootSignature;
  1425. D3D12_SHADER_BYTECODE VS;
  1426. D3D12_SHADER_BYTECODE PS;
  1427. D3D12_SHADER_BYTECODE DS;
  1428. D3D12_SHADER_BYTECODE HS;
  1429. D3D12_SHADER_BYTECODE GS;
  1430. D3D12_STREAM_OUTPUT_DESC StreamOutput;
  1431. D3D12_BLEND_DESC BlendState;
  1432. UINT SampleMask;
  1433. D3D12_RASTERIZER_DESC RasterizerState;
  1434. D3D12_DEPTH_STENCIL_DESC DepthStencilState;
  1435. D3D12_INPUT_LAYOUT_DESC InputLayout;
  1436. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
  1437. D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
  1438. UINT NumRenderTargets;
  1439. DXGI_FORMAT RTVFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
  1440. DXGI_FORMAT DSVFormat;
  1441. DXGI_SAMPLE_DESC SampleDesc;
  1442. UINT NodeMask;
  1443. D3D12_CACHED_PIPELINE_STATE CachedPSO;
  1444. D3D12_PIPELINE_STATE_FLAGS Flags;
  1445. } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
  1446. typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
  1447. {
  1448. ID3D12RootSignature *pRootSignature;
  1449. D3D12_SHADER_BYTECODE CS;
  1450. UINT NodeMask;
  1451. D3D12_CACHED_PIPELINE_STATE CachedPSO;
  1452. D3D12_PIPELINE_STATE_FLAGS Flags;
  1453. } D3D12_COMPUTE_PIPELINE_STATE_DESC;
  1454. typedef enum D3D12_COMMAND_LIST_TYPE
  1455. {
  1456. D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
  1457. D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
  1458. D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
  1459. D3D12_COMMAND_LIST_TYPE_COPY = 3,
  1460. } D3D12_COMMAND_LIST_TYPE;
  1461. typedef enum D3D12_COMMAND_QUEUE_PRIORITY
  1462. {
  1463. D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
  1464. D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
  1465. D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000,
  1466. } D3D12_COMMAND_QUEUE_PRIORITY;
  1467. typedef enum D3D12_COMMAND_QUEUE_FLAGS
  1468. {
  1469. D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
  1470. D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
  1471. } D3D12_COMMAND_QUEUE_FLAGS;
  1472. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_COMMAND_QUEUE_FLAGS);")
  1473. typedef struct D3D12_COMMAND_QUEUE_DESC
  1474. {
  1475. D3D12_COMMAND_LIST_TYPE Type;
  1476. INT Priority;
  1477. D3D12_COMMAND_QUEUE_FLAGS Flags;
  1478. UINT NodeMask;
  1479. } D3D12_COMMAND_QUEUE_DESC;
  1480. typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
  1481. {
  1482. UINT NodeIndex;
  1483. BOOL TileBasedRenderer;
  1484. BOOL UMA;
  1485. BOOL CacheCoherentUMA;
  1486. } D3D12_FEATURE_DATA_ARCHITECTURE;
  1487. typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
  1488. {
  1489. DXGI_FORMAT Format;
  1490. UINT8 PlaneCount;
  1491. } D3D12_FEATURE_DATA_FORMAT_INFO;
  1492. typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
  1493. {
  1494. UINT NumFeatureLevels;
  1495. const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
  1496. D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
  1497. } D3D12_FEATURE_DATA_FEATURE_LEVELS;
  1498. typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
  1499. {
  1500. D3D_ROOT_SIGNATURE_VERSION HighestVersion;
  1501. } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
  1502. typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
  1503. {
  1504. UINT MaxGPUVirtualAddressBitsPerResource;
  1505. UINT MaxGPUVirtualAddressBitsPerProcess;
  1506. } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
  1507. typedef enum D3D_SHADER_MODEL
  1508. {
  1509. D3D_SHADER_MODEL_5_1 = 0x51,
  1510. D3D_SHADER_MODEL_6_0 = 0x60,
  1511. } D3D_SHADER_MODEL;
  1512. typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
  1513. {
  1514. D3D_SHADER_MODEL HighestShaderModel;
  1515. } D3D12_FEATURE_DATA_SHADER_MODEL;
  1516. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
  1517. {
  1518. BOOL WaveOps;
  1519. UINT WaveLaneCountMin;
  1520. UINT WaveLaneCountMax;
  1521. UINT TotalLaneCount;
  1522. BOOL ExpandedComputeResourceStates;
  1523. BOOL Int64ShaderOps;
  1524. } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
  1525. typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
  1526. {
  1527. UINT NodeIndex;
  1528. BOOL TileBasedRenderer;
  1529. BOOL UMA;
  1530. BOOL CacheCoherentUMA;
  1531. BOOL IsolatedMMU;
  1532. } D3D12_FEATURE_DATA_ARCHITECTURE1;
  1533. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
  1534. {
  1535. BOOL DepthBoundsTestSupported;
  1536. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
  1537. } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
  1538. typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
  1539. {
  1540. D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
  1541. } D3D12_FEATURE_DATA_SHADER_CACHE;
  1542. typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
  1543. {
  1544. D3D12_COMMAND_LIST_TYPE CommandListType;
  1545. UINT Priority;
  1546. BOOL PriorityForTypeIsSupported;
  1547. } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
  1548. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
  1549. {
  1550. BOOL CopyQueueTimestampQueriesSupported;
  1551. BOOL CastingFullyTypedFormatSupported;
  1552. D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
  1553. D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
  1554. BOOL BarycentricsSupported;
  1555. } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
  1556. typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
  1557. {
  1558. BOOL Supported;
  1559. } D3D12_FEATURE_DATA_EXISTING_HEAPS;
  1560. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
  1561. {
  1562. BOOL MSAA64KBAlignedTextureSupported;
  1563. D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
  1564. BOOL Native16BitShaderOpsSupported;
  1565. } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
  1566. typedef struct D3D12_FEATURE_DATA_SERIALIZATION
  1567. {
  1568. UINT NodeIndex;
  1569. D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
  1570. } D3D12_FEATURE_DATA_SERIALIZATION;
  1571. typedef struct D3D12_FEATURE_DATA_CROSS_NODE
  1572. {
  1573. D3D12_CROSS_NODE_SHARING_TIER SharingTier;
  1574. BOOL AtomicShaderInstructions;
  1575. } D3D12_FEATURE_DATA_CROSS_NODE;
  1576. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
  1577. {
  1578. BOOL SRVOnlyTiledResourceTier3;
  1579. D3D12_RENDER_PASS_TIER RenderPassesTier;
  1580. D3D12_RAYTRACING_TIER RaytracingTier;
  1581. } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
  1582. typedef enum D3D12_FEATURE
  1583. {
  1584. D3D12_FEATURE_D3D12_OPTIONS = 0,
  1585. D3D12_FEATURE_ARCHITECTURE = 1,
  1586. D3D12_FEATURE_FEATURE_LEVELS = 2,
  1587. D3D12_FEATURE_FORMAT_SUPPORT = 3,
  1588. D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
  1589. D3D12_FEATURE_FORMAT_INFO = 5,
  1590. D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
  1591. D3D12_FEATURE_SHADER_MODEL = 7,
  1592. D3D12_FEATURE_D3D12_OPTIONS1 = 8,
  1593. D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
  1594. D3D12_FEATURE_ROOT_SIGNATURE = 12,
  1595. D3D12_FEATURE_ARCHITECTURE1 = 16,
  1596. D3D12_FEATURE_D3D12_OPTIONS2 = 18,
  1597. D3D12_FEATURE_SHADER_CACHE = 19,
  1598. D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
  1599. D3D12_FEATURE_D3D12_OPTIONS3 = 21,
  1600. D3D12_FEATURE_EXISTING_HEAPS = 22,
  1601. D3D12_FEATURE_D3D12_OPTIONS4 = 23,
  1602. D3D12_FEATURE_SERIALIZATION = 24,
  1603. D3D12_FEATURE_CROSS_NODE = 25,
  1604. D3D12_FEATURE_D3D12_OPTIONS5 = 27,
  1605. D3D12_FEATURE_D3D12_OPTIONS6 = 30,
  1606. D3D12_FEATURE_QUERY_META_COMMAND = 31,
  1607. D3D12_FEATURE_D3D12_OPTIONS7 = 32,
  1608. D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
  1609. D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
  1610. } D3D12_FEATURE;
  1611. typedef struct D3D12_MEMCPY_DEST
  1612. {
  1613. void *pData;
  1614. SIZE_T RowPitch;
  1615. SIZE_T SlicePitch;
  1616. } D3D12_MEMCPY_DEST;
  1617. typedef struct D3D12_SUBRESOURCE_DATA
  1618. {
  1619. const void *pData;
  1620. LONG_PTR RowPitch;
  1621. LONG_PTR SlicePitch;
  1622. } D3D12_SUBRESOURCE_DATA;
  1623. typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
  1624. {
  1625. D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
  1626. D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
  1627. D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0,
  1628. } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
  1629. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTIPLE_FENCE_WAIT_FLAGS);")
  1630. typedef enum D3D12_RESIDENCY_PRIORITY
  1631. {
  1632. D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
  1633. D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
  1634. D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
  1635. D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
  1636. D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
  1637. } D3D12_RESIDENCY_PRIORITY;
  1638. typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
  1639. {
  1640. D3D12_GPU_VIRTUAL_ADDRESS Dest;
  1641. UINT32 Value;
  1642. } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
  1643. [
  1644. uuid(c4fec28f-7966-4e95-9f94-f431cb56c3b8),
  1645. object,
  1646. local,
  1647. pointer_default(unique)
  1648. ]
  1649. interface ID3D12Object : IUnknown
  1650. {
  1651. HRESULT GetPrivateData(REFGUID guid, UINT *data_size, void *data);
  1652. HRESULT SetPrivateData(REFGUID guid, UINT data_size, const void *data);
  1653. HRESULT SetPrivateDataInterface(REFGUID guid, const IUnknown *data);
  1654. HRESULT SetName(const WCHAR *name);
  1655. }
  1656. [
  1657. uuid(905db94b-a00c-4140-9df5-2b64ca9ea357),
  1658. object,
  1659. local,
  1660. pointer_default(unique)
  1661. ]
  1662. interface ID3D12DeviceChild : ID3D12Object
  1663. {
  1664. HRESULT GetDevice(REFIID riid, void **device);
  1665. }
  1666. [
  1667. uuid(63ee58fb-1268-4835-86da-f008ce62f0d6),
  1668. object,
  1669. local,
  1670. pointer_default(unique)
  1671. ]
  1672. interface ID3D12Pageable : ID3D12DeviceChild
  1673. {
  1674. }
  1675. [
  1676. uuid(6b3b2502-6e51-45b3-90ee-9884265e8df3),
  1677. object,
  1678. local,
  1679. pointer_default(unique)
  1680. ]
  1681. interface ID3D12Heap : ID3D12Pageable
  1682. {
  1683. D3D12_HEAP_DESC GetDesc();
  1684. }
  1685. [
  1686. uuid(696442be-a72e-4059-bc79-5b5c98040fad),
  1687. object,
  1688. local,
  1689. pointer_default(unique)
  1690. ]
  1691. interface ID3D12Resource : ID3D12Pageable
  1692. {
  1693. HRESULT Map(UINT sub_resource, const D3D12_RANGE *read_range, void **data);
  1694. void Unmap(UINT sub_resource, const D3D12_RANGE *written_range);
  1695. D3D12_RESOURCE_DESC GetDesc();
  1696. D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
  1697. HRESULT WriteToSubresource(UINT dst_sub_resource, const D3D12_BOX *dst_box,
  1698. const void *src_data, UINT src_row_pitch, UINT src_slice_pitch);
  1699. HRESULT ReadFromSubresource(void *dst_data, UINT dst_row_pitch, UINT dst_slice_pitch,
  1700. UINT src_sub_resource, const D3D12_BOX *src_box);
  1701. HRESULT GetHeapProperties(D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS *flags);
  1702. }
  1703. [
  1704. uuid(7116d91c-e7e4-47ce-b8c6-ec8168f437e5),
  1705. object,
  1706. local,
  1707. pointer_default(unique)
  1708. ]
  1709. interface ID3D12CommandList : ID3D12DeviceChild
  1710. {
  1711. D3D12_COMMAND_LIST_TYPE GetType();
  1712. }
  1713. typedef enum D3D12_TILE_COPY_FLAGS
  1714. {
  1715. D3D12_TILE_COPY_FLAG_NONE = 0x0,
  1716. D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
  1717. D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
  1718. D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
  1719. } D3D12_TILE_COPY_FLAGS;
  1720. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_TILE_COPY_FLAGS);")
  1721. typedef struct D3D12_INDEX_BUFFER_VIEW
  1722. {
  1723. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  1724. UINT SizeInBytes;
  1725. DXGI_FORMAT Format;
  1726. } D3D12_INDEX_BUFFER_VIEW;
  1727. typedef struct D3D12_VERTEX_BUFFER_VIEW
  1728. {
  1729. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  1730. UINT SizeInBytes;
  1731. UINT StrideInBytes;
  1732. } D3D12_VERTEX_BUFFER_VIEW;
  1733. typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
  1734. {
  1735. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  1736. UINT64 SizeInBytes;
  1737. D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
  1738. } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
  1739. typedef enum D3D12_CLEAR_FLAGS
  1740. {
  1741. D3D12_CLEAR_FLAG_DEPTH = 0x1,
  1742. D3D12_CLEAR_FLAG_STENCIL = 0x2,
  1743. } D3D12_CLEAR_FLAGS;
  1744. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_CLEAR_FLAGS);")
  1745. typedef struct D3D12_DISCARD_REGION
  1746. {
  1747. UINT NumRects;
  1748. const D3D12_RECT *pRects;
  1749. UINT FirstSubresource;
  1750. UINT NumSubresources;
  1751. } D3D12_DISCARD_REGION;
  1752. typedef enum D3D12_QUERY_TYPE
  1753. {
  1754. D3D12_QUERY_TYPE_OCCLUSION = 0,
  1755. D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
  1756. D3D12_QUERY_TYPE_TIMESTAMP = 2,
  1757. D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
  1758. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
  1759. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
  1760. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
  1761. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
  1762. } D3D12_QUERY_TYPE;
  1763. typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
  1764. {
  1765. UINT64 IAVertices;
  1766. UINT64 IAPrimitives;
  1767. UINT64 VSInvocations;
  1768. UINT64 GSInvocations;
  1769. UINT64 GSPrimitives;
  1770. UINT64 CInvocations;
  1771. UINT64 CPrimitives;
  1772. UINT64 PSInvocations;
  1773. UINT64 HSInvocations;
  1774. UINT64 DSInvocations;
  1775. UINT64 CSInvocations;
  1776. } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
  1777. typedef struct D3D12_QUERY_DATA_SO_STATISTICS
  1778. {
  1779. UINT64 NumPrimitivesWritten;
  1780. UINT64 PrimitivesStorageNeeded;
  1781. } D3D12_QUERY_DATA_SO_STATISTICS;
  1782. typedef enum D3D12_PREDICATION_OP
  1783. {
  1784. D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
  1785. D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
  1786. } D3D12_PREDICATION_OP;
  1787. [
  1788. uuid(8efb471d-616c-4f49-90f7-127bb763fa51),
  1789. object,
  1790. local,
  1791. pointer_default(unique)
  1792. ]
  1793. interface ID3D12DescriptorHeap : ID3D12Pageable
  1794. {
  1795. D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
  1796. D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
  1797. D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
  1798. }
  1799. [
  1800. uuid(0d9658ae-ed45-469e-a61d-970ec583cab4),
  1801. object,
  1802. local,
  1803. pointer_default(unique)
  1804. ]
  1805. interface ID3D12QueryHeap : ID3D12Pageable
  1806. {
  1807. }
  1808. [
  1809. uuid(c36a797c-ec80-4f0a-8985-a7b2475082d1),
  1810. object,
  1811. local,
  1812. pointer_default(unique)
  1813. ]
  1814. interface ID3D12CommandSignature : ID3D12Pageable
  1815. {
  1816. }
  1817. [
  1818. uuid(5b160d0f-ac1b-4185-8ba8-b3ae42a5a455),
  1819. object,
  1820. local,
  1821. pointer_default(unique)
  1822. ]
  1823. interface ID3D12GraphicsCommandList : ID3D12CommandList
  1824. {
  1825. HRESULT Close();
  1826. HRESULT Reset(ID3D12CommandAllocator *allocator, ID3D12PipelineState *initial_state);
  1827. void ClearState(ID3D12PipelineState *pipeline_state);
  1828. void DrawInstanced(UINT vertex_count_per_instance, UINT instance_count,
  1829. UINT start_vertex_location, UINT start_instance_location);
  1830. void DrawIndexedInstanced(UINT index_count_per_instance, UINT instance_count,
  1831. UINT start_vertex_location, INT base_vertex_location, UINT start_instance_location);
  1832. void Dispatch(UINT x, UINT u, UINT z);
  1833. void CopyBufferRegion(ID3D12Resource *dst_buffer, UINT64 dst_offset,
  1834. ID3D12Resource *src_buffer, UINT64 src_offset, UINT64 byte_count);
  1835. void CopyTextureRegion(const D3D12_TEXTURE_COPY_LOCATION *dst,
  1836. UINT dst_x, UINT dst_y, UINT dst_z,
  1837. const D3D12_TEXTURE_COPY_LOCATION *src, const D3D12_BOX *src_box);
  1838. void CopyResource(ID3D12Resource *dst_resource, ID3D12Resource *src_resource);
  1839. void CopyTiles(ID3D12Resource *tiled_resource,
  1840. const D3D12_TILED_RESOURCE_COORDINATE *tile_region_start_coordinate,
  1841. const D3D12_TILE_REGION_SIZE *tile_region_size,
  1842. ID3D12Resource *buffer,
  1843. UINT64 buffer_offset,
  1844. D3D12_TILE_COPY_FLAGS flags);
  1845. void ResolveSubresource(ID3D12Resource *dst_resource, UINT dst_sub_resource,
  1846. ID3D12Resource *src_resource, UINT src_sub_resource,
  1847. DXGI_FORMAT format);
  1848. void IASetPrimitiveTopology(D3D12_PRIMITIVE_TOPOLOGY primitive_topology);
  1849. void RSSetViewports(UINT viewport_count, const D3D12_VIEWPORT *viewports);
  1850. void RSSetScissorRects(UINT rect_count, const D3D12_RECT *rects);
  1851. void OMSetBlendFactor(const FLOAT blend_factor[4]);
  1852. void OMSetStencilRef(UINT stencil_ref);
  1853. void SetPipelineState(ID3D12PipelineState *pipeline_state);
  1854. void ResourceBarrier(UINT barrier_count, const D3D12_RESOURCE_BARRIER *barriers);
  1855. void ExecuteBundle(ID3D12GraphicsCommandList *command_list);
  1856. void SetDescriptorHeaps(UINT heap_count, ID3D12DescriptorHeap * const *heaps);
  1857. void SetComputeRootSignature(ID3D12RootSignature *root_signature);
  1858. void SetGraphicsRootSignature(ID3D12RootSignature *root_signature);
  1859. void SetComputeRootDescriptorTable(UINT root_parameter_index, D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  1860. void SetGraphicsRootDescriptorTable(UINT root_parameter_index, D3D12_GPU_DESCRIPTOR_HANDLE base_descriptor);
  1861. void SetComputeRoot32BitConstant(UINT root_parameter_index, UINT data, UINT dst_offset);
  1862. void SetGraphicsRoot32BitConstant(UINT root_parameter_index, UINT data, UINT dst_offset);
  1863. void SetComputeRoot32BitConstants(UINT root_parameter_index, UINT constant_count, const void *data,
  1864. UINT dst_offset);
  1865. void SetGraphicsRoot32BitConstants(UINT root_parameter_index, UINT constant_count, const void *data,
  1866. UINT dst_offset);
  1867. void SetComputeRootConstantBufferView(UINT root_parameter_index, D3D12_GPU_VIRTUAL_ADDRESS address);
  1868. void SetGraphicsRootConstantBufferView(UINT root_parameter_index, D3D12_GPU_VIRTUAL_ADDRESS address);
  1869. void SetComputeRootShaderResourceView(UINT root_parameter_index, D3D12_GPU_VIRTUAL_ADDRESS address);
  1870. void SetGraphicsRootShaderResourceView(UINT root_parameter_index, D3D12_GPU_VIRTUAL_ADDRESS address);
  1871. void SetComputeRootUnorderedAccessView(UINT root_parameter_index, D3D12_GPU_VIRTUAL_ADDRESS address);
  1872. void SetGraphicsRootUnorderedAccessView(UINT root_parameter_index, D3D12_GPU_VIRTUAL_ADDRESS address);
  1873. void IASetIndexBuffer(const D3D12_INDEX_BUFFER_VIEW *view);
  1874. void IASetVertexBuffers(UINT start_slot, UINT view_count, const D3D12_VERTEX_BUFFER_VIEW *views);
  1875. void SOSetTargets(UINT start_slot, UINT view_count, const D3D12_STREAM_OUTPUT_BUFFER_VIEW *views);
  1876. void OMSetRenderTargets(UINT render_target_descriptor_count,
  1877. const D3D12_CPU_DESCRIPTOR_HANDLE *render_target_descriptors,
  1878. BOOL single_descriptor_handle,
  1879. const D3D12_CPU_DESCRIPTOR_HANDLE *depth_stencil_descriptor);
  1880. void ClearDepthStencilView(D3D12_CPU_DESCRIPTOR_HANDLE dsv, D3D12_CLEAR_FLAGS flags,
  1881. FLOAT depth, UINT8 stencil, UINT rect_count, const D3D12_RECT *rects);
  1882. void ClearRenderTargetView(D3D12_CPU_DESCRIPTOR_HANDLE rtv, const FLOAT color[4],
  1883. UINT rect_count, const D3D12_RECT *rects);
  1884. void ClearUnorderedAccessViewUint(D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  1885. D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle, ID3D12Resource *resource, const UINT values[4],
  1886. UINT rect_count, const D3D12_RECT *rects);
  1887. void ClearUnorderedAccessViewFloat(D3D12_GPU_DESCRIPTOR_HANDLE gpu_handle,
  1888. D3D12_CPU_DESCRIPTOR_HANDLE cpu_handle, ID3D12Resource *resource, const float values[4],
  1889. UINT rect_count, const D3D12_RECT *rects);
  1890. void DiscardResource(ID3D12Resource *resource, const D3D12_DISCARD_REGION *region);
  1891. void BeginQuery(ID3D12QueryHeap *heap, D3D12_QUERY_TYPE type, UINT index);
  1892. void EndQuery(ID3D12QueryHeap *heap, D3D12_QUERY_TYPE type, UINT index);
  1893. void ResolveQueryData(ID3D12QueryHeap *heap, D3D12_QUERY_TYPE type,
  1894. UINT start_index, UINT query_count,
  1895. ID3D12Resource *dst_buffer, UINT64 aligned_dst_buffer_offset);
  1896. void SetPredication(ID3D12Resource *buffer, UINT64 aligned_buffer_offset,
  1897. D3D12_PREDICATION_OP operation);
  1898. void SetMarker(UINT metadata, const void *data, UINT size);
  1899. void BeginEvent(UINT metadata, const void *data, UINT size);
  1900. void EndEvent();
  1901. void ExecuteIndirect(ID3D12CommandSignature *command_signature,
  1902. UINT max_command_count, ID3D12Resource *arg_buffer, UINT64 arg_buffer_offset,
  1903. ID3D12Resource *count_buffer, UINT64 count_buffer_offset);
  1904. }
  1905. [
  1906. uuid(553103fb-1fe7-4557-bb38-946d7d0e7ca7),
  1907. object,
  1908. local,
  1909. pointer_default(unique)
  1910. ]
  1911. interface ID3D12GraphicsCommandList1 : ID3D12GraphicsCommandList
  1912. {
  1913. void AtomicCopyBufferUINT(ID3D12Resource *dst_buffer, UINT64 dst_offset,
  1914. ID3D12Resource *src_buffer, UINT64 src_offset,
  1915. UINT dependent_resource_count, ID3D12Resource * const *dependent_resources,
  1916. const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  1917. void AtomicCopyBufferUINT64(ID3D12Resource *dst_buffer, UINT64 dst_offset,
  1918. ID3D12Resource *src_buffer, UINT64 src_offset,
  1919. UINT dependent_resource_count, ID3D12Resource * const *dependent_resources,
  1920. const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
  1921. void OMSetDepthBounds(FLOAT min, FLOAT max);
  1922. void SetSamplePositions(UINT sample_count, UINT pixel_count,
  1923. D3D12_SAMPLE_POSITION *sample_positions);
  1924. void ResolveSubresourceRegion(ID3D12Resource *dst_resource,
  1925. UINT dst_sub_resource_idx, UINT dst_x, UINT dst_y,
  1926. ID3D12Resource *src_resource, UINT src_sub_resource_idx,
  1927. D3D12_RECT *src_rect, DXGI_FORMAT format, D3D12_RESOLVE_MODE mode);
  1928. void SetViewInstanceMask(UINT mask);
  1929. }
  1930. [
  1931. uuid(38c3e585-ff17-412c-9150-4fc6f9d72a28),
  1932. object,
  1933. local,
  1934. pointer_default(unique)
  1935. ]
  1936. interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
  1937. {
  1938. void WriteBufferImmediate(UINT count,
  1939. const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
  1940. const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
  1941. }
  1942. typedef enum D3D12_TILE_RANGE_FLAGS
  1943. {
  1944. D3D12_TILE_RANGE_FLAG_NONE = 0x0,
  1945. D3D12_TILE_RANGE_FLAG_NULL = 0x1,
  1946. D3D12_TILE_RANGE_FLAG_SKIP = 0x2,
  1947. D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 0x4
  1948. } D3D12_TILE_RANGE_FLAGS;
  1949. typedef enum D3D12_TILE_MAPPING_FLAGS
  1950. {
  1951. D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
  1952. D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
  1953. } D3D12_TILE_MAPPING_FLAGS;
  1954. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_TILE_MAPPING_FLAGS);")
  1955. [
  1956. uuid(0ec870a6-5d7e-4c22-8cfc-5baae07616ed),
  1957. object,
  1958. local,
  1959. pointer_default(unique)
  1960. ]
  1961. interface ID3D12CommandQueue : ID3D12Pageable
  1962. {
  1963. void UpdateTileMappings(ID3D12Resource *resource, UINT region_count,
  1964. const D3D12_TILED_RESOURCE_COORDINATE *region_start_coordinates,
  1965. const D3D12_TILE_REGION_SIZE *region_sizes,
  1966. UINT range_count,
  1967. const D3D12_TILE_RANGE_FLAGS *range_flags,
  1968. UINT *heap_range_offsets,
  1969. UINT *range_tile_counts,
  1970. D3D12_TILE_MAPPING_FLAGS flags);
  1971. void CopyTileMappings(ID3D12Resource *dst_resource,
  1972. const D3D12_TILED_RESOURCE_COORDINATE *dst_region_start_coordinate,
  1973. ID3D12Resource *src_resource,
  1974. const D3D12_TILED_RESOURCE_COORDINATE *src_region_start_coordinate,
  1975. const D3D12_TILE_REGION_SIZE *region_size,
  1976. D3D12_TILE_MAPPING_FLAGS flags);
  1977. void ExecuteCommandLists(UINT command_list_count,
  1978. ID3D12CommandList * const * command_lists);
  1979. void SetMarker(UINT metadata, const void *data, UINT size);
  1980. void BeginEvent(UINT metadata, const void *data, UINT size);
  1981. void EndEvent();
  1982. HRESULT Signal(ID3D12Fence *fence, UINT64 value);
  1983. HRESULT Wait(ID3D12Fence *fence, UINT64 value);
  1984. HRESULT GetTimestampFrequency(UINT64 *frequency);
  1985. HRESULT GetClockCalibration(UINT64 *gpu_timestamp, UINT64 *cpu_timestamp);
  1986. D3D12_COMMAND_QUEUE_DESC GetDesc();
  1987. }
  1988. typedef enum D3D12_FENCE_FLAGS
  1989. {
  1990. D3D12_FENCE_FLAG_NONE = 0x0,
  1991. D3D12_FENCE_FLAG_SHARED = 0x1,
  1992. D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
  1993. } D3D12_FENCE_FLAGS;
  1994. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_FENCE_FLAGS);")
  1995. typedef enum D3D12_QUERY_HEAP_TYPE
  1996. {
  1997. D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
  1998. D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
  1999. D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
  2000. D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
  2001. } D3D12_QUERY_HEAP_TYPE;
  2002. typedef struct D3D12_QUERY_HEAP_DESC
  2003. {
  2004. D3D12_QUERY_HEAP_TYPE Type;
  2005. UINT Count;
  2006. UINT NodeMask;
  2007. } D3D12_QUERY_HEAP_DESC;
  2008. typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
  2009. {
  2010. D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
  2011. D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
  2012. D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
  2013. D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
  2014. D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
  2015. D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
  2016. D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
  2017. D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
  2018. D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
  2019. } D3D12_INDIRECT_ARGUMENT_TYPE;
  2020. typedef struct D3D12_INDIRECT_ARGUMENT_DESC
  2021. {
  2022. D3D12_INDIRECT_ARGUMENT_TYPE Type;
  2023. union
  2024. {
  2025. struct
  2026. {
  2027. UINT Slot;
  2028. } VertexBuffer;
  2029. struct
  2030. {
  2031. UINT RootParameterIndex;
  2032. UINT DestOffsetIn32BitValues;
  2033. UINT Num32BitValuesToSet;
  2034. } Constant;
  2035. struct
  2036. {
  2037. UINT RootParameterIndex;
  2038. } ConstantBufferView;
  2039. struct
  2040. {
  2041. UINT RootParameterIndex;
  2042. } ShaderResourceView;
  2043. struct
  2044. {
  2045. UINT RootParameterIndex;
  2046. } UnorderedAccessView;
  2047. };
  2048. } D3D12_INDIRECT_ARGUMENT_DESC;
  2049. typedef struct D3D12_COMMAND_SIGNATURE_DESC
  2050. {
  2051. UINT ByteStride;
  2052. UINT NumArgumentDescs;
  2053. const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
  2054. UINT NodeMask;
  2055. } D3D12_COMMAND_SIGNATURE_DESC;
  2056. [
  2057. uuid(c54a6b66-72df-4ee8-8be5-a946a1429214),
  2058. object,
  2059. local,
  2060. pointer_default(unique)
  2061. ]
  2062. interface ID3D12RootSignature : ID3D12DeviceChild
  2063. {
  2064. }
  2065. [
  2066. uuid(765a30f3-f624-4c6f-a828-ace948622445),
  2067. object,
  2068. local,
  2069. pointer_default(unique)
  2070. ]
  2071. interface ID3D12PipelineState : ID3D12Pageable
  2072. {
  2073. HRESULT GetCachedBlob(ID3DBlob **blob);
  2074. }
  2075. [
  2076. uuid(0a753dcf-c4d8-4b91-adf6-be5a60d95a76),
  2077. object,
  2078. local,
  2079. pointer_default(unique)
  2080. ]
  2081. interface ID3D12Fence : ID3D12Pageable
  2082. {
  2083. UINT64 GetCompletedValue();
  2084. HRESULT SetEventOnCompletion(UINT64 value, HANDLE event);
  2085. HRESULT Signal(UINT64 value);
  2086. }
  2087. [
  2088. uuid(6102dee4-af59-4b09-b999-b44d73f09b24),
  2089. object,
  2090. local,
  2091. pointer_default(unique)
  2092. ]
  2093. interface ID3D12CommandAllocator : ID3D12Pageable
  2094. {
  2095. HRESULT Reset();
  2096. }
  2097. [
  2098. uuid(189819f1-1db6-4b57-be54-1821339b85f7),
  2099. object,
  2100. local,
  2101. pointer_default(unique)
  2102. ]
  2103. interface ID3D12Device : ID3D12Object
  2104. {
  2105. UINT GetNodeCount();
  2106. HRESULT CreateCommandQueue(const D3D12_COMMAND_QUEUE_DESC *desc,
  2107. REFIID riid, void **command_queue);
  2108. HRESULT CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE type,
  2109. REFIID riid, void **command_allocator);
  2110. HRESULT CreateGraphicsPipelineState(const D3D12_GRAPHICS_PIPELINE_STATE_DESC *desc,
  2111. REFIID riid, void **pipeline_state);
  2112. HRESULT CreateComputePipelineState(const D3D12_COMPUTE_PIPELINE_STATE_DESC *desc,
  2113. REFIID riid, void **pipeline_state);
  2114. HRESULT CreateCommandList(UINT node_mask,
  2115. D3D12_COMMAND_LIST_TYPE type,
  2116. ID3D12CommandAllocator *command_allocator,
  2117. ID3D12PipelineState *initial_pipeline_state,
  2118. REFIID riid, void **command_list);
  2119. HRESULT CheckFeatureSupport(D3D12_FEATURE feature,
  2120. void *feature_data, UINT feature_data_size);
  2121. HRESULT CreateDescriptorHeap(const D3D12_DESCRIPTOR_HEAP_DESC *desc,
  2122. REFIID riid, void **descriptor_heap);
  2123. UINT GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  2124. HRESULT CreateRootSignature(UINT node_mask,
  2125. const void *bytecode, SIZE_T bytecode_length,
  2126. REFIID riid, void **root_signature);
  2127. void CreateConstantBufferView(const D3D12_CONSTANT_BUFFER_VIEW_DESC *desc,
  2128. D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  2129. void CreateShaderResourceView(ID3D12Resource *resource,
  2130. const D3D12_SHADER_RESOURCE_VIEW_DESC *desc,
  2131. D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  2132. void CreateUnorderedAccessView(ID3D12Resource *resource, ID3D12Resource *counter_resource,
  2133. const D3D12_UNORDERED_ACCESS_VIEW_DESC *desc,
  2134. D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  2135. void CreateRenderTargetView(ID3D12Resource *resource,
  2136. const D3D12_RENDER_TARGET_VIEW_DESC *desc,
  2137. D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  2138. void CreateDepthStencilView(ID3D12Resource *resource,
  2139. const D3D12_DEPTH_STENCIL_VIEW_DESC *desc,
  2140. D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  2141. void CreateSampler(const D3D12_SAMPLER_DESC *desc,
  2142. D3D12_CPU_DESCRIPTOR_HANDLE descriptor);
  2143. void CopyDescriptors(UINT dst_descriptor_range_count,
  2144. const D3D12_CPU_DESCRIPTOR_HANDLE *dst_descriptor_range_offsets,
  2145. const UINT *dst_descriptor_range_sizes,
  2146. UINT src_descriptor_range_count,
  2147. const D3D12_CPU_DESCRIPTOR_HANDLE *src_descriptor_range_offsets,
  2148. const UINT *src_descriptor_range_sizes,
  2149. D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  2150. void CopyDescriptorsSimple(UINT descriptor_count,
  2151. const D3D12_CPU_DESCRIPTOR_HANDLE dst_descriptor_range_offset,
  2152. const D3D12_CPU_DESCRIPTOR_HANDLE src_descriptor_range_offset,
  2153. D3D12_DESCRIPTOR_HEAP_TYPE descriptor_heap_type);
  2154. D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(UINT visible_mask,
  2155. UINT reource_desc_count, const D3D12_RESOURCE_DESC *resource_descs);
  2156. D3D12_HEAP_PROPERTIES GetCustomHeapProperties(UINT node_mask,
  2157. D3D12_HEAP_TYPE heap_type);
  2158. HRESULT CreateCommittedResource(const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags,
  2159. const D3D12_RESOURCE_DESC *desc, D3D12_RESOURCE_STATES initial_state,
  2160. const D3D12_CLEAR_VALUE *optimized_clear_value,
  2161. REFIID riid, void **resource);
  2162. HRESULT CreateHeap(const D3D12_HEAP_DESC *desc, REFIID riid, void **heap);
  2163. HRESULT CreatePlacedResource(ID3D12Heap *heap, UINT64 heap_offset,
  2164. const D3D12_RESOURCE_DESC *desc, D3D12_RESOURCE_STATES initial_state,
  2165. const D3D12_CLEAR_VALUE *optimized_clear_value,
  2166. REFIID riid, void **resource);
  2167. HRESULT CreateReservedResource(const D3D12_RESOURCE_DESC *desc, D3D12_RESOURCE_STATES initial_state,
  2168. const D3D12_CLEAR_VALUE *optimized_clear_value,
  2169. REFIID riid, void **resource);
  2170. HRESULT CreateSharedHandle(ID3D12DeviceChild *object,
  2171. const SECURITY_ATTRIBUTES *attributes, DWORD access,
  2172. const WCHAR *name, HANDLE *handle);
  2173. HRESULT OpenSharedHandle(HANDLE handle,
  2174. REFIID riid, void **object);
  2175. HRESULT OpenSharedHandleByName(const WCHAR *name, DWORD access, HANDLE *handle);
  2176. HRESULT MakeResident(UINT object_count, ID3D12Pageable * const *objects);
  2177. HRESULT Evict(UINT object_count, ID3D12Pageable * const *objects);
  2178. HRESULT CreateFence(UINT64 initial_value, D3D12_FENCE_FLAGS flags, REFIID riid, void **fence);
  2179. HRESULT GetDeviceRemovedReason();
  2180. void GetCopyableFootprints(const D3D12_RESOURCE_DESC *desc,
  2181. UINT first_sub_resource,
  2182. UINT sub_resource_count,
  2183. UINT64 base_offset,
  2184. D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts,
  2185. UINT *row_count,
  2186. UINT64 *row_size,
  2187. UINT64 *total_bytes);
  2188. HRESULT CreateQueryHeap(const D3D12_QUERY_HEAP_DESC *desc,
  2189. REFIID riid, void **heap);
  2190. HRESULT SetStablePowerState(BOOL enable);
  2191. HRESULT CreateCommandSignature(const D3D12_COMMAND_SIGNATURE_DESC *desc,
  2192. ID3D12RootSignature *root_signature,
  2193. REFIID riid, void **command_signature);
  2194. void GetResourceTiling(ID3D12Resource *resource,
  2195. UINT *total_tile_count,
  2196. D3D12_PACKED_MIP_INFO *packed_mip_info,
  2197. D3D12_TILE_SHAPE *standard_tile_shape,
  2198. UINT *sub_resource_tiling_count,
  2199. UINT first_sub_resource_tiling,
  2200. D3D12_SUBRESOURCE_TILING *sub_resource_tilings);
  2201. LUID GetAdapterLuid();
  2202. }
  2203. [
  2204. uuid(77acce80-638e-4e65-8895-c1f23386863e),
  2205. object,
  2206. local,
  2207. pointer_default(unique)
  2208. ]
  2209. interface ID3D12Device1 : ID3D12Device
  2210. {
  2211. HRESULT CreatePipelineLibrary(const void *blob, SIZE_T blob_size, REFIID iid, void **lib);
  2212. HRESULT SetEventOnMultipleFenceCompletion(ID3D12Fence * const *fences,
  2213. const UINT64 *values, UINT fence_count, D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags, HANDLE event);
  2214. HRESULT SetResidencyPriority(UINT object_count, ID3D12Pageable * const *objects,
  2215. const D3D12_RESIDENCY_PRIORITY *priorities);
  2216. }
  2217. [
  2218. uuid(34ab647b-3cc8-46ac-841b-c0965645c046),
  2219. object,
  2220. local,
  2221. pointer_default(unique)
  2222. ]
  2223. interface ID3D12RootSignatureDeserializer : IUnknown
  2224. {
  2225. const D3D12_ROOT_SIGNATURE_DESC *GetRootSignatureDesc();
  2226. }
  2227. [
  2228. uuid(7f91ce67-090c-4bb7-b78e-ed8ff2e31da0),
  2229. object,
  2230. local,
  2231. pointer_default(unique)
  2232. ]
  2233. interface ID3D12VersionedRootSignatureDeserializer : IUnknown
  2234. {
  2235. HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION version,
  2236. const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **desc);
  2237. const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *GetUnconvertedRootSignatureDesc();
  2238. };
  2239. [local] HRESULT __stdcall D3D12CreateRootSignatureDeserializer(
  2240. const void *data, SIZE_T data_size, REFIID iid, void **deserializer);
  2241. typedef HRESULT (__stdcall *PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
  2242. const void *data, SIZE_T data_size, REFIID iid, void **deserializer);
  2243. [local] HRESULT __stdcall D3D12CreateVersionedRootSignatureDeserializer(
  2244. const void *data, SIZE_T data_size, REFIID iid, void **deserializer);
  2245. [local] HRESULT __stdcall D3D12SerializeRootSignature(
  2246. const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc,
  2247. D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob);
  2248. typedef HRESULT (__stdcall *PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
  2249. const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc, ID3DBlob **blob, ID3DBlob **error_blob);
  2250. [local] HRESULT __stdcall D3D12SerializeVersionedRootSignature(
  2251. const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *root_signature_desc,
  2252. ID3DBlob **blob, ID3DBlob **error_blob);
  2253. typedef HRESULT (__stdcall *PFN_D3D12_CREATE_DEVICE)(IUnknown *adapter,
  2254. D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device);
  2255. [local] HRESULT __stdcall D3D12CreateDevice(IUnknown *adapter,
  2256. D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device);
  2257. typedef HRESULT (__stdcall *PFN_D3D12_GET_DEBUG_INTERFACE)(REFIID iid, void **debug);
  2258. [local] HRESULT __stdcall D3D12GetDebugInterface(REFIID iid, void **debug);
  2259. [local] HRESULT __stdcall D3D12EnableExperimentalFeatures(UINT feature_count,
  2260. const IID *iids, void *configurations, UINT *configurations_sizes);