d3d12.idl 280 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803
  1. /*-------------------------------------------------------------------------------------
  2. *
  3. * Copyright (c) Microsoft Corporation
  4. * Licensed under the MIT license
  5. *
  6. *-------------------------------------------------------------------------------------*/
  7. import "oaidl.idl";
  8. import "ocidl.idl";
  9. import "dxgicommon.idl";
  10. import "dxgiformat.idl";
  11. import "d3dcommon.idl";
  12. cpp_quote("#include <winapifamily.h>")
  13. #pragma region App Family
  14. cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES)")
  15. // NOTE: The following constants are generated from the D3D12 hardware spec. Do not edit these values directly.
  16. cpp_quote( "#ifndef _D3D12_CONSTANTS" )
  17. cpp_quote( "#define _D3D12_CONSTANTS" )
  18. const UINT D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff;
  19. const UINT D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff;
  20. const UINT D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff;
  21. const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
  22. const UINT D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9;
  23. const UINT D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8;
  24. const UINT D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2;
  25. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14;
  26. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4;
  27. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32;
  28. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15;
  29. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16;
  30. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
  31. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
  32. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
  33. const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
  34. const UINT D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64;
  35. const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4;
  36. const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1;
  37. const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1;
  38. const UINT D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1;
  39. const UINT D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32;
  40. const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1;
  41. const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128;
  42. const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1;
  43. const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1;
  44. const UINT D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128;
  45. const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1;
  46. const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16;
  47. const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1;
  48. const UINT D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1;
  49. const UINT D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16;
  50. const UINT D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32;
  51. const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4;
  52. const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32;
  53. const UINT D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096;
  54. const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3;
  55. const UINT D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3;
  56. const UINT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10;
  57. const INT D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10;
  58. const INT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8;
  59. const UINT D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7;
  60. const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
  61. const UINT D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256;
  62. const UINT D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64;
  63. const UINT D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240;
  64. const UINT D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68;
  65. const UINT D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224;
  66. const UINT D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72;
  67. const UINT D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208;
  68. const UINT D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76;
  69. const UINT D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192;
  70. const UINT D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84;
  71. const UINT D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176;
  72. const UINT D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92;
  73. const UINT D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160;
  74. const UINT D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100;
  75. const UINT D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144;
  76. const UINT D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112;
  77. const UINT D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128;
  78. const UINT D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128;
  79. const UINT D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112;
  80. const UINT D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144;
  81. const UINT D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96;
  82. const UINT D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168;
  83. const UINT D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80;
  84. const UINT D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204;
  85. const UINT D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64;
  86. const UINT D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256;
  87. const UINT D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48;
  88. const UINT D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340;
  89. const UINT D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32;
  90. const UINT D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512;
  91. const UINT D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16;
  92. const UINT D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768;
  93. const UINT D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1;
  94. const UINT D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256;
  95. const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768;
  96. const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768;
  97. const UINT D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768;
  98. const UINT D3D12_CS_4_X_UAV_REGISTER_COUNT = 1;
  99. const UINT D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535;
  100. const UINT D3D12_CS_TGSM_REGISTER_COUNT = 8192;
  101. const UINT D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1;
  102. const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1;
  103. const UINT D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1;
  104. const UINT D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3;
  105. const UINT D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1;
  106. const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1;
  107. const UINT D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1;
  108. const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3;
  109. const UINT D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1;
  110. const UINT D3D12_CS_THREADID_REGISTER_COMPONENTS = 3;
  111. const UINT D3D12_CS_THREADID_REGISTER_COUNT = 1;
  112. const UINT D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024;
  113. const UINT D3D12_CS_THREAD_GROUP_MAX_X = 1024;
  114. const UINT D3D12_CS_THREAD_GROUP_MAX_Y = 1024;
  115. const UINT D3D12_CS_THREAD_GROUP_MAX_Z = 64;
  116. const UINT D3D12_CS_THREAD_GROUP_MIN_X = 1;
  117. const UINT D3D12_CS_THREAD_GROUP_MIN_Y = 1;
  118. const UINT D3D12_CS_THREAD_GROUP_MIN_Z = 1;
  119. const UINT D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384;
  120. cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )" )
  121. cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )" )
  122. cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )" )
  123. cpp_quote( "#define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )" )
  124. cpp_quote( "#define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )" )
  125. const UINT D3D12_DEFAULT_DEPTH_BIAS = 0;
  126. cpp_quote( "#define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )" )
  127. const UINT D3D12_DEFAULT_MAX_ANISOTROPY = 16;
  128. cpp_quote( "#define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )" )
  129. const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
  130. const UINT D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0;
  131. const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
  132. const UINT D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff;
  133. const UINT D3D12_DEFAULT_SCISSOR_ENDX = 0;
  134. const UINT D3D12_DEFAULT_SCISSOR_ENDY = 0;
  135. const UINT D3D12_DEFAULT_SCISSOR_STARTX = 0;
  136. const UINT D3D12_DEFAULT_SCISSOR_STARTY = 0;
  137. cpp_quote( "#define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )" )
  138. const UINT D3D12_DEFAULT_STENCIL_READ_MASK = 0xff;
  139. const UINT D3D12_DEFAULT_STENCIL_REFERENCE = 0;
  140. const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
  141. const UINT D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0;
  142. const UINT D3D12_DEFAULT_VIEWPORT_HEIGHT = 0;
  143. cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )" )
  144. cpp_quote( "#define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )" )
  145. const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0;
  146. const UINT D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0;
  147. const UINT D3D12_DEFAULT_VIEWPORT_WIDTH = 0;
  148. const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
  149. const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7;
  150. const UINT D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
  151. const UINT D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
  152. const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4;
  153. const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
  154. const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32;
  155. const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
  156. const UINT D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1;
  157. const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3;
  158. const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
  159. const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1;
  160. const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2;
  161. const UINT D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1;
  162. const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
  163. const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
  164. const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
  165. const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
  166. const UINT D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
  167. const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
  168. const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
  169. const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
  170. const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
  171. const UINT D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
  172. const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4;
  173. const UINT D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
  174. const UINT D3D12_DS_OUTPUT_REGISTER_COUNT = 32;
  175. cpp_quote( "#define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )" )
  176. cpp_quote( "#define D3D12_FLOAT32_MAX ( 3.402823466e+38f )" )
  177. cpp_quote( "#define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )" )
  178. cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )" )
  179. cpp_quote( "#define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )" )
  180. cpp_quote( "#define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )" )
  181. cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )" )
  182. cpp_quote( "#define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )" )
  183. cpp_quote( "#define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )" )
  184. cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )" )
  185. cpp_quote( "#define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )" )
  186. cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )" )
  187. cpp_quote( "#define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )" )
  188. const UINT D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2;
  189. const UINT D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1;
  190. const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1;
  191. const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
  192. const UINT D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1;
  193. const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1;
  194. const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32;
  195. const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1;
  196. const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2;
  197. const UINT D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1;
  198. const UINT D3D12_GS_INPUT_REGISTER_COMPONENTS = 4;
  199. const UINT D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
  200. const UINT D3D12_GS_INPUT_REGISTER_COUNT = 32;
  201. const UINT D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2;
  202. const UINT D3D12_GS_INPUT_REGISTER_READ_PORTS = 1;
  203. const UINT D3D12_GS_INPUT_REGISTER_VERTICES = 32;
  204. const UINT D3D12_GS_MAX_INSTANCE_COUNT = 32;
  205. const UINT D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024;
  206. const UINT D3D12_GS_OUTPUT_ELEMENTS = 32;
  207. const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4;
  208. const UINT D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
  209. const UINT D3D12_GS_OUTPUT_REGISTER_COUNT = 32;
  210. const UINT D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32;
  211. const UINT D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32;
  212. const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4;
  213. const UINT D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32;
  214. const UINT D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2;
  215. const UINT D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1;
  216. const UINT D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
  217. const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1;
  218. const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
  219. const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1;
  220. const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
  221. const UINT D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1;
  222. const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1;
  223. const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
  224. const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1;
  225. const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2;
  226. const UINT D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1;
  227. const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1;
  228. const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
  229. const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1;
  230. const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2;
  231. const UINT D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1;
  232. const UINT D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xFFFFFFFF;
  233. cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )" )
  234. cpp_quote( "#define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )" )
  235. const UINT D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968;
  236. const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1;
  237. const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32;
  238. const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1;
  239. const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2;
  240. const UINT D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1;
  241. const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4;
  242. const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32;
  243. const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32;
  244. const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2;
  245. const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1;
  246. const UINT D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128;
  247. const UINT D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0;
  248. const UINT D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0;
  249. const UINT D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0;
  250. const UINT D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1;
  251. const UINT D3D12_IA_INSTANCE_ID_BIT_COUNT = 32;
  252. const UINT D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32;
  253. const UINT D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32;
  254. const UINT D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32;
  255. const UINT D3D12_IA_VERTEX_ID_BIT_COUNT = 32;
  256. const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
  257. const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128;
  258. const UINT D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32;
  259. const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff;
  260. const UINT D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff;
  261. const UINT D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff;
  262. const UINT D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff;
  263. cpp_quote( "#define D3D12_LINEAR_GAMMA ( 1.0f )" )
  264. const UINT D3D12_MAJOR_VERSION = 12;
  265. cpp_quote( "#define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )" )
  266. cpp_quote( "#define D3D12_MAX_DEPTH ( 1.0f )" )
  267. const UINT D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032;
  268. const UINT D3D12_MAX_MAXANISOTROPY = 16;
  269. const UINT D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32;
  270. cpp_quote( "#define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )" )
  271. const UINT D3D12_MAX_ROOT_COST = 64;
  272. const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000;
  273. const UINT D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000;
  274. const UINT D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048;
  275. const UINT D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17;
  276. const UINT D3D12_MAX_VIEW_INSTANCE_COUNT = 4;
  277. const UINT D3D12_MINOR_VERSION = 0;
  278. cpp_quote( "#define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )" )
  279. cpp_quote( "#define D3D12_MIN_DEPTH ( 0.0f )" )
  280. const UINT D3D12_MIN_MAXANISOTROPY = 0;
  281. cpp_quote( "#define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )" )
  282. cpp_quote( "#define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )" )
  283. const UINT D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8;
  284. const UINT D3D12_MIP_LOD_RANGE_BIT_COUNT = 8;
  285. cpp_quote( "#define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )" )
  286. const UINT D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0;
  287. const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
  288. const UINT D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8;
  289. const UINT D3D12_PACKED_TILE = 0xffffffff;
  290. const UINT D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15;
  291. const UINT D3D12_PREVIEW_SDK_VERSION = 717;
  292. const UINT D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16;
  293. const UINT D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1;
  294. const UINT D3D12_PS_CS_UAV_REGISTER_COUNT = 8;
  295. const UINT D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1;
  296. const UINT D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1;
  297. const UINT D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xFFFFFFFF;
  298. const UINT D3D12_PS_FRONTFACING_FALSE_VALUE = 0x00000000;
  299. const UINT D3D12_PS_FRONTFACING_TRUE_VALUE = 0xFFFFFFFF;
  300. const UINT D3D12_PS_INPUT_REGISTER_COMPONENTS = 4;
  301. const UINT D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
  302. const UINT D3D12_PS_INPUT_REGISTER_COUNT = 32;
  303. const UINT D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2;
  304. const UINT D3D12_PS_INPUT_REGISTER_READ_PORTS = 1;
  305. cpp_quote( "#define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )" )
  306. const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1;
  307. const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32;
  308. const UINT D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1;
  309. const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1;
  310. const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32;
  311. const UINT D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1;
  312. const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4;
  313. const UINT D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
  314. const UINT D3D12_PS_OUTPUT_REGISTER_COUNT = 8;
  315. cpp_quote( "#define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )" )
  316. const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
  317. const UINT D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT = 8;
  318. const UINT D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT = 256;
  319. const UINT D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT = 16;
  320. const UINT D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES = 32;
  321. const UINT D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH = 31;
  322. const UINT D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 16777216;
  323. const UINT D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE = 16777216;
  324. const UINT D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE = 536870912;
  325. const UINT D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS = 1073741824;
  326. const UINT D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE = 4096;
  327. const UINT D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT = 32;
  328. const UINT D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT = 64;
  329. const UINT D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT = 16;
  330. const UINT D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096;
  331. const UINT D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27;
  332. const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
  333. const UINT D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096;
  334. const UINT D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32;
  335. const UINT D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32;
  336. const UINT D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384;
  337. const UINT D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024;
  338. const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
  339. const UINT D3D12_REQ_MAXANISOTROPY = 16;
  340. const UINT D3D12_REQ_MIP_LEVELS = 15;
  341. const UINT D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048;
  342. const UINT D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096;
  343. const UINT D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384;
  344. const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128;
  345. cpp_quote( "#define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )" )
  346. const UINT D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048;
  347. const UINT D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20;
  348. const UINT D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096;
  349. const UINT D3D12_REQ_SUBRESOURCES = 30720;
  350. const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
  351. const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
  352. const UINT D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048;
  353. const UINT D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384;
  354. const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
  355. const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
  356. const UINT D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0;
  357. const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
  358. const UINT D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT = 2;
  359. const UINT D3D12_SDK_VERSION = 616;
  360. const UINT D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES = 32;
  361. const UINT D3D12_SHADER_MAJOR_VERSION = 5;
  362. const UINT D3D12_SHADER_MAX_INSTANCES = 65535;
  363. const UINT D3D12_SHADER_MAX_INTERFACES = 253;
  364. const UINT D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096;
  365. const UINT D3D12_SHADER_MAX_TYPES = 65535;
  366. const UINT D3D12_SHADER_MINOR_VERSION = 1;
  367. const UINT D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0;
  368. const UINT D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5;
  369. const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
  370. const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
  371. const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
  372. const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
  373. const UINT D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512;
  374. const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
  375. const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
  376. const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
  377. const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
  378. const UINT D3D12_SO_STREAM_COUNT = 4;
  379. const UINT D3D12_SPEC_DATE_DAY = 14;
  380. const UINT D3D12_SPEC_DATE_MONTH = 11;
  381. const UINT D3D12_SPEC_DATE_YEAR = 2014;
  382. cpp_quote( "#define D3D12_SPEC_VERSION ( 1.16 )" )
  383. cpp_quote( "#define D3D12_SRGB_GAMMA ( 2.2f )" )
  384. cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )" )
  385. cpp_quote( "#define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )" )
  386. cpp_quote( "#define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )" )
  387. cpp_quote( "#define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )" )
  388. cpp_quote( "#define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )" )
  389. cpp_quote( "#define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )" )
  390. const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT = 32;
  391. const UINT D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64;
  392. const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
  393. const UINT D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128;
  394. const UINT D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32;
  395. const UINT D3D12_STANDARD_VECTOR_SIZE = 4;
  396. const UINT D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32;
  397. const UINT D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64;
  398. const UINT D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8;
  399. const UINT D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8;
  400. const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff;
  401. const UINT D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0;
  402. const UINT D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64;
  403. const UINT D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64;
  404. const UINT D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63;
  405. const UINT D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64;
  406. const UINT D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2;
  407. const UINT D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1;
  408. const UINT D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1;
  409. const UINT D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16;
  410. const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
  411. const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
  412. const UINT D3D12_TIGHT_ALIGNMENT_MIN_COMMITTED_RESOURCE_ALIGNEMNT = 4096;
  413. const UINT D3D12_TIGHT_ALIGNMENT_MIN_PLACED_RESOURCE_ALIGNEMNT = 8;
  414. const UINT D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536;
  415. const UINT D3D12_TRACKED_WORKLOAD_MAX_INSTANCES = 32;
  416. const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
  417. const UINT D3D12_UAV_SLOT_COUNT = 64;
  418. const UINT D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0;
  419. const UINT D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10;
  420. const UINT D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS = 4;
  421. const UINT D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT = 256;
  422. const UINT D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT = 256;
  423. const UINT D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff;
  424. const UINT D3D12_VIDEO_ENCODER_AV1_INVALID_DPB_RESOURCE_INDEX = 0xFF;
  425. const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_COLS = 64;
  426. const UINT D3D12_VIDEO_ENCODER_AV1_MAX_TILE_ROWS = 64;
  427. const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_DENOM_MIN = 9;
  428. const UINT D3D12_VIDEO_ENCODER_AV1_SUPERRES_NUM = 8;
  429. const UINT D3D12_VIDEO_PROCESS_MAX_FILTERS = 32;
  430. const UINT D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2;
  431. const UINT D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15;
  432. const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
  433. const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
  434. const INT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
  435. const UINT D3D12_VS_INPUT_REGISTER_COMPONENTS = 4;
  436. const UINT D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
  437. const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
  438. const UINT D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2;
  439. const UINT D3D12_VS_INPUT_REGISTER_READ_PORTS = 1;
  440. const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4;
  441. const UINT D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32;
  442. const UINT D3D12_VS_OUTPUT_REGISTER_COUNT = 32;
  443. const UINT D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10;
  444. const UINT D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25;
  445. const UINT D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25;
  446. const UINT D3D12_WORK_GRAPHS_BACKING_MEMORY_ALIGNMENT_IN_BYTES = 8;
  447. const UINT D3D12_WORK_GRAPHS_MAX_NODE_DEPTH = 32;
  448. cpp_quote( "#endif" )
  449. // Forward declarations
  450. interface ID3D12CommandQueue;
  451. typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
  452. typedef enum D3D12_COMMAND_LIST_TYPE
  453. {
  454. D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
  455. D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
  456. D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
  457. D3D12_COMMAND_LIST_TYPE_COPY = 3,
  458. D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE = 4,
  459. D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5,
  460. D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6,
  461. D3D12_COMMAND_LIST_TYPE_NONE = -1,
  462. } D3D12_COMMAND_LIST_TYPE;
  463. typedef enum D3D12_COMMAND_QUEUE_FLAGS
  464. {
  465. D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0,
  466. D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1,
  467. } D3D12_COMMAND_QUEUE_FLAGS;
  468. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS )" )
  469. typedef enum D3D12_COMMAND_QUEUE_PRIORITY
  470. {
  471. D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
  472. D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
  473. D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
  474. } D3D12_COMMAND_QUEUE_PRIORITY;
  475. typedef struct D3D12_COMMAND_QUEUE_DESC
  476. {
  477. D3D12_COMMAND_LIST_TYPE Type;
  478. INT Priority;
  479. D3D12_COMMAND_QUEUE_FLAGS Flags;
  480. UINT NodeMask;
  481. } D3D12_COMMAND_QUEUE_DESC;
  482. typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
  483. {
  484. D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
  485. D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
  486. D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
  487. D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
  488. D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
  489. } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
  490. typedef enum D3D12_INPUT_CLASSIFICATION
  491. {
  492. D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
  493. D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
  494. } D3D12_INPUT_CLASSIFICATION;
  495. typedef struct D3D12_INPUT_ELEMENT_DESC
  496. {
  497. LPCSTR SemanticName;
  498. UINT SemanticIndex;
  499. DXGI_FORMAT Format;
  500. UINT InputSlot;
  501. UINT AlignedByteOffset;
  502. D3D12_INPUT_CLASSIFICATION InputSlotClass;
  503. UINT InstanceDataStepRate;
  504. } D3D12_INPUT_ELEMENT_DESC;
  505. // Keep FILL_MODE values in sync with earlier DX versions (HW consumes values directly).
  506. typedef enum D3D12_FILL_MODE
  507. {
  508. // 1 was POINT in D3D, unused in D3D12
  509. D3D12_FILL_MODE_WIREFRAME = 2,
  510. D3D12_FILL_MODE_SOLID = 3
  511. } D3D12_FILL_MODE;
  512. typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
  513. typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
  514. // Keep CULL_MODE values in sync with earlier DX versions (HW consumes values directly).
  515. typedef enum D3D12_CULL_MODE
  516. {
  517. D3D12_CULL_MODE_NONE = 1,
  518. D3D12_CULL_MODE_FRONT = 2,
  519. D3D12_CULL_MODE_BACK = 3
  520. } D3D12_CULL_MODE;
  521. typedef struct D3D12_SO_DECLARATION_ENTRY
  522. {
  523. UINT Stream;
  524. LPCSTR SemanticName;
  525. UINT SemanticIndex;
  526. BYTE StartComponent;
  527. BYTE ComponentCount;
  528. BYTE OutputSlot;
  529. } D3D12_SO_DECLARATION_ENTRY;
  530. typedef struct D3D12_VIEWPORT
  531. {
  532. FLOAT TopLeftX;
  533. FLOAT TopLeftY;
  534. FLOAT Width;
  535. FLOAT Height;
  536. FLOAT MinDepth;
  537. FLOAT MaxDepth;
  538. } D3D12_VIEWPORT;
  539. typedef RECT D3D12_RECT;
  540. typedef struct D3D12_BOX
  541. {
  542. UINT left;
  543. UINT top;
  544. UINT front;
  545. UINT right;
  546. UINT bottom;
  547. UINT back;
  548. } D3D12_BOX;
  549. //--------------------------------------------------------------------------------------------------------
  550. // The system LUID struct isn't defined in wtypes, so we repeat it here just
  551. // for the MIDL compiler.
  552. cpp_quote("#ifdef __midl")
  553. cpp_quote("#ifndef LUID_DEFINED")
  554. cpp_quote("#define LUID_DEFINED 1")
  555. typedef struct __LUID {
  556. DWORD LowPart;
  557. LONG HighPart;
  558. } LUID, * PLUID;
  559. cpp_quote("#endif")
  560. cpp_quote("#endif")
  561. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  562. //
  563. // Depth-Stencil State
  564. //
  565. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  566. // Keep COMPARISON_FUNC values in sync with earlier DX versions (HW consumes values directly).
  567. typedef enum D3D12_COMPARISON_FUNC
  568. {
  569. D3D12_COMPARISON_FUNC_NONE = 0,
  570. D3D12_COMPARISON_FUNC_NEVER = 1,
  571. D3D12_COMPARISON_FUNC_LESS = 2,
  572. D3D12_COMPARISON_FUNC_EQUAL = 3,
  573. D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
  574. D3D12_COMPARISON_FUNC_GREATER = 5,
  575. D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
  576. D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
  577. D3D12_COMPARISON_FUNC_ALWAYS = 8
  578. } D3D12_COMPARISON_FUNC;
  579. typedef enum D3D12_DEPTH_WRITE_MASK
  580. {
  581. D3D12_DEPTH_WRITE_MASK_ZERO = 0,
  582. D3D12_DEPTH_WRITE_MASK_ALL = 1
  583. } D3D12_DEPTH_WRITE_MASK;
  584. // Keep STENCILOP values in sync with earlier DX versions (HW consumes values directly).
  585. typedef enum D3D12_STENCIL_OP
  586. {
  587. D3D12_STENCIL_OP_KEEP = 1,
  588. D3D12_STENCIL_OP_ZERO = 2,
  589. D3D12_STENCIL_OP_REPLACE = 3,
  590. D3D12_STENCIL_OP_INCR_SAT = 4,
  591. D3D12_STENCIL_OP_DECR_SAT = 5,
  592. D3D12_STENCIL_OP_INVERT = 6,
  593. D3D12_STENCIL_OP_INCR = 7,
  594. D3D12_STENCIL_OP_DECR = 8
  595. } D3D12_STENCIL_OP;
  596. typedef struct D3D12_DEPTH_STENCILOP_DESC
  597. {
  598. D3D12_STENCIL_OP StencilFailOp;
  599. D3D12_STENCIL_OP StencilDepthFailOp;
  600. D3D12_STENCIL_OP StencilPassOp;
  601. D3D12_COMPARISON_FUNC StencilFunc;
  602. } D3D12_DEPTH_STENCILOP_DESC;
  603. typedef struct D3D12_DEPTH_STENCIL_DESC
  604. {
  605. BOOL DepthEnable;
  606. D3D12_DEPTH_WRITE_MASK DepthWriteMask;
  607. D3D12_COMPARISON_FUNC DepthFunc;
  608. BOOL StencilEnable;
  609. UINT8 StencilReadMask;
  610. UINT8 StencilWriteMask;
  611. D3D12_DEPTH_STENCILOP_DESC FrontFace;
  612. D3D12_DEPTH_STENCILOP_DESC BackFace;
  613. } D3D12_DEPTH_STENCIL_DESC;
  614. typedef struct D3D12_DEPTH_STENCIL_DESC1
  615. {
  616. BOOL DepthEnable;
  617. D3D12_DEPTH_WRITE_MASK DepthWriteMask;
  618. D3D12_COMPARISON_FUNC DepthFunc;
  619. BOOL StencilEnable;
  620. UINT8 StencilReadMask;
  621. UINT8 StencilWriteMask;
  622. D3D12_DEPTH_STENCILOP_DESC FrontFace;
  623. D3D12_DEPTH_STENCILOP_DESC BackFace;
  624. BOOL DepthBoundsTestEnable;
  625. } D3D12_DEPTH_STENCIL_DESC1;
  626. // Front/back face independent stencil masks
  627. typedef struct D3D12_DEPTH_STENCILOP_DESC1
  628. {
  629. D3D12_STENCIL_OP StencilFailOp;
  630. D3D12_STENCIL_OP StencilDepthFailOp;
  631. D3D12_STENCIL_OP StencilPassOp;
  632. D3D12_COMPARISON_FUNC StencilFunc;
  633. UINT8 StencilReadMask;
  634. UINT8 StencilWriteMask;
  635. } D3D12_DEPTH_STENCILOP_DESC1;
  636. typedef struct D3D12_DEPTH_STENCIL_DESC2
  637. {
  638. BOOL DepthEnable;
  639. D3D12_DEPTH_WRITE_MASK DepthWriteMask;
  640. D3D12_COMPARISON_FUNC DepthFunc;
  641. BOOL StencilEnable;
  642. D3D12_DEPTH_STENCILOP_DESC1 FrontFace;
  643. D3D12_DEPTH_STENCILOP_DESC1 BackFace;
  644. BOOL DepthBoundsTestEnable;
  645. } D3D12_DEPTH_STENCIL_DESC2;
  646. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  647. //
  648. // Blend State
  649. //
  650. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  651. // Keep BLEND values in sync with earlier DX versions (HW consumes values directly).
  652. typedef enum D3D12_BLEND
  653. {
  654. D3D12_BLEND_ZERO = 1,
  655. D3D12_BLEND_ONE = 2,
  656. D3D12_BLEND_SRC_COLOR = 3, // PS output oN.rgb (N is current RT being blended)
  657. D3D12_BLEND_INV_SRC_COLOR = 4, // 1.0f - PS output oN.rgb
  658. D3D12_BLEND_SRC_ALPHA = 5, // PS output oN.a
  659. D3D12_BLEND_INV_SRC_ALPHA = 6, // 1.0f - PS output oN.a
  660. D3D12_BLEND_DEST_ALPHA = 7, // RT(N).a (N is current RT being blended)
  661. D3D12_BLEND_INV_DEST_ALPHA = 8, // 1.0f - RT(N).a
  662. D3D12_BLEND_DEST_COLOR = 9, // RT(N).rgb
  663. D3D12_BLEND_INV_DEST_COLOR = 10,// 1.0f - RT(N).rgb
  664. D3D12_BLEND_SRC_ALPHA_SAT = 11,// (f,f,f,1), f = min(1 - RT(N).a, oN.a)
  665. // 12 reserved (was BOTHSRCALPHA)
  666. // 13 reserved (was BOTHSRCALPHA)
  667. D3D12_BLEND_BLEND_FACTOR = 14,
  668. D3D12_BLEND_INV_BLEND_FACTOR = 15,
  669. D3D12_BLEND_SRC1_COLOR = 16, // PS output o1.rgb
  670. D3D12_BLEND_INV_SRC1_COLOR = 17, // 1.0f - PS output o1.rgb
  671. D3D12_BLEND_SRC1_ALPHA = 18, // PS output o1.a
  672. D3D12_BLEND_INV_SRC1_ALPHA = 19, // 1.0f - PS output o1.a
  673. D3D12_BLEND_ALPHA_FACTOR = 20,
  674. D3D12_BLEND_INV_ALPHA_FACTOR = 21
  675. } D3D12_BLEND;
  676. // Keep BLENDOP values in sync with earlier DX versions (HW consumes values directly).
  677. typedef enum D3D12_BLEND_OP
  678. {
  679. D3D12_BLEND_OP_ADD = 1,
  680. D3D12_BLEND_OP_SUBTRACT = 2,
  681. D3D12_BLEND_OP_REV_SUBTRACT = 3,
  682. D3D12_BLEND_OP_MIN = 4, // min semantics are like min shader instruction
  683. D3D12_BLEND_OP_MAX = 5, // max semantics are like max shader instruction
  684. } D3D12_BLEND_OP;
  685. typedef enum D3D12_COLOR_WRITE_ENABLE
  686. {
  687. D3D12_COLOR_WRITE_ENABLE_RED = 1,
  688. D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
  689. D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
  690. D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
  691. D3D12_COLOR_WRITE_ENABLE_ALL = (D3D12_COLOR_WRITE_ENABLE_RED|D3D12_COLOR_WRITE_ENABLE_GREEN|
  692. D3D12_COLOR_WRITE_ENABLE_BLUE|D3D12_COLOR_WRITE_ENABLE_ALPHA),
  693. } D3D12_COLOR_WRITE_ENABLE;
  694. typedef enum D3D12_LOGIC_OP
  695. {
  696. // Operation:
  697. // (s == PS output, d = RTV contents)
  698. D3D12_LOGIC_OP_CLEAR = 0, // 0
  699. D3D12_LOGIC_OP_SET, // 1
  700. D3D12_LOGIC_OP_COPY, // s
  701. D3D12_LOGIC_OP_COPY_INVERTED, // ~s
  702. D3D12_LOGIC_OP_NOOP, // d
  703. D3D12_LOGIC_OP_INVERT, // ~d
  704. D3D12_LOGIC_OP_AND, // s & d
  705. D3D12_LOGIC_OP_NAND, // ~(s & d)
  706. D3D12_LOGIC_OP_OR, // s | d
  707. D3D12_LOGIC_OP_NOR, // ~(s | d)
  708. D3D12_LOGIC_OP_XOR, // s ^ d
  709. D3D12_LOGIC_OP_EQUIV, // ~(s ^ d)
  710. D3D12_LOGIC_OP_AND_REVERSE, // s & ~d
  711. D3D12_LOGIC_OP_AND_INVERTED, // ~s & d
  712. D3D12_LOGIC_OP_OR_REVERSE, // s | ~d
  713. D3D12_LOGIC_OP_OR_INVERTED, // ~s | d
  714. } D3D12_LOGIC_OP;
  715. typedef struct D3D12_RENDER_TARGET_BLEND_DESC
  716. {
  717. BOOL BlendEnable;
  718. BOOL LogicOpEnable; // LogicOpEnable and BlendEnable can't both be true
  719. D3D12_BLEND SrcBlend;
  720. D3D12_BLEND DestBlend;
  721. D3D12_BLEND_OP BlendOp;
  722. D3D12_BLEND SrcBlendAlpha;
  723. D3D12_BLEND DestBlendAlpha;
  724. D3D12_BLEND_OP BlendOpAlpha;
  725. D3D12_LOGIC_OP LogicOp; // applies to RGBA
  726. UINT8 RenderTargetWriteMask; // D3D12_COLOR_WRITE_ENABLE
  727. } D3D12_RENDER_TARGET_BLEND_DESC;
  728. typedef struct D3D12_BLEND_DESC
  729. {
  730. BOOL AlphaToCoverageEnable; // relevant to multisample antialiasing only
  731. BOOL IndependentBlendEnable; // if FALSE, then replicate the first entry in RenderTarget array to other entries
  732. D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
  733. } D3D12_BLEND_DESC;
  734. cpp_quote( "/* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT. ")
  735. cpp_quote( " IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */" )
  736. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  737. //
  738. // Rasterizer State
  739. //
  740. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  741. typedef enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
  742. {
  743. D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, // Default
  744. D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1,
  745. } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
  746. typedef struct D3D12_RASTERIZER_DESC
  747. {
  748. D3D12_FILL_MODE FillMode;
  749. D3D12_CULL_MODE CullMode;
  750. BOOL FrontCounterClockwise;
  751. INT DepthBias;
  752. FLOAT DepthBiasClamp;
  753. FLOAT SlopeScaledDepthBias;
  754. BOOL DepthClipEnable;
  755. BOOL MultisampleEnable;
  756. BOOL AntialiasedLineEnable;
  757. UINT ForcedSampleCount;
  758. D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
  759. } D3D12_RASTERIZER_DESC;
  760. typedef struct D3D12_RASTERIZER_DESC1
  761. {
  762. D3D12_FILL_MODE FillMode;
  763. D3D12_CULL_MODE CullMode;
  764. BOOL FrontCounterClockwise;
  765. FLOAT DepthBias;
  766. FLOAT DepthBiasClamp;
  767. FLOAT SlopeScaledDepthBias;
  768. BOOL DepthClipEnable;
  769. BOOL MultisampleEnable;
  770. BOOL AntialiasedLineEnable;
  771. UINT ForcedSampleCount;
  772. D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
  773. } D3D12_RASTERIZER_DESC1;
  774. typedef enum D3D12_LINE_RASTERIZATION_MODE
  775. {
  776. D3D12_LINE_RASTERIZATION_MODE_ALIASED,
  777. D3D12_LINE_RASTERIZATION_MODE_ALPHA_ANTIALIASED,
  778. D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_WIDE,
  779. D3D12_LINE_RASTERIZATION_MODE_QUADRILATERAL_NARROW,
  780. } D3D12_LINE_RASTERIZATION_MODE;
  781. typedef struct D3D12_RASTERIZER_DESC2
  782. {
  783. D3D12_FILL_MODE FillMode;
  784. D3D12_CULL_MODE CullMode;
  785. BOOL FrontCounterClockwise;
  786. FLOAT DepthBias;
  787. FLOAT DepthBiasClamp;
  788. FLOAT SlopeScaledDepthBias;
  789. BOOL DepthClipEnable;
  790. D3D12_LINE_RASTERIZATION_MODE LineRasterizationMode;
  791. UINT ForcedSampleCount;
  792. D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
  793. } D3D12_RASTERIZER_DESC2;
  794. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  795. //
  796. // Pipeline State v1
  797. //
  798. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  799. [ uuid( c54a6b66-72df-4ee8-8be5-a946a1429214 ), object, local, pointer_default( unique ) ]
  800. interface ID3D12RootSignature
  801. : ID3D12DeviceChild
  802. {
  803. }
  804. typedef struct D3D12_SHADER_BYTECODE
  805. {
  806. [annotation("_Field_size_bytes_full_(BytecodeLength)")] const void* pShaderBytecode;
  807. SIZE_T BytecodeLength;
  808. } D3D12_SHADER_BYTECODE;
  809. typedef struct D3D12_STREAM_OUTPUT_DESC
  810. {
  811. [annotation("_Field_size_full_(NumEntries)")] const D3D12_SO_DECLARATION_ENTRY* pSODeclaration;
  812. UINT NumEntries;
  813. [annotation("_Field_size_full_(NumStrides)")] const UINT* pBufferStrides;
  814. UINT NumStrides;
  815. UINT RasterizedStream;
  816. } D3D12_STREAM_OUTPUT_DESC;
  817. typedef struct D3D12_INPUT_LAYOUT_DESC
  818. {
  819. [annotation("_Field_size_full_(NumElements)")] const D3D12_INPUT_ELEMENT_DESC* pInputElementDescs;
  820. UINT NumElements;
  821. } D3D12_INPUT_LAYOUT_DESC;
  822. typedef enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
  823. {
  824. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
  825. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
  826. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
  827. } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
  828. typedef enum D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS
  829. {
  830. D3D12_STANDARD_MULTISAMPLE_PATTERN = 0xffffffff,
  831. D3D12_CENTER_MULTISAMPLE_PATTERN = 0xfffffffe
  832. } D3D12_STANDARD_MULTISAMPLE_QUALITY_LEVELS;
  833. typedef struct D3D12_CACHED_PIPELINE_STATE
  834. {
  835. [annotation("_Field_size_bytes_full_(CachedBlobSizeInBytes)")] const void* pCachedBlob;
  836. SIZE_T CachedBlobSizeInBytes;
  837. } D3D12_CACHED_PIPELINE_STATE;
  838. typedef enum D3D12_PIPELINE_STATE_FLAGS
  839. {
  840. D3D12_PIPELINE_STATE_FLAG_NONE = 0x0,
  841. D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1,
  842. D3D12_PIPELINE_STATE_FLAG_DYNAMIC_DEPTH_BIAS = 0x4,
  843. D3D12_PIPELINE_STATE_FLAG_DYNAMIC_INDEX_BUFFER_STRIP_CUT = 0x8,
  844. } D3D12_PIPELINE_STATE_FLAGS;
  845. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS )" )
  846. typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
  847. {
  848. ID3D12RootSignature* pRootSignature;
  849. D3D12_SHADER_BYTECODE VS;
  850. D3D12_SHADER_BYTECODE PS;
  851. D3D12_SHADER_BYTECODE DS;
  852. D3D12_SHADER_BYTECODE HS;
  853. D3D12_SHADER_BYTECODE GS;
  854. D3D12_STREAM_OUTPUT_DESC StreamOutput;
  855. D3D12_BLEND_DESC BlendState;
  856. UINT SampleMask;
  857. D3D12_RASTERIZER_DESC RasterizerState;
  858. D3D12_DEPTH_STENCIL_DESC DepthStencilState;
  859. D3D12_INPUT_LAYOUT_DESC InputLayout;
  860. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
  861. D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
  862. UINT NumRenderTargets;
  863. DXGI_FORMAT RTVFormats[ D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ];
  864. DXGI_FORMAT DSVFormat;
  865. DXGI_SAMPLE_DESC SampleDesc;
  866. UINT NodeMask;
  867. D3D12_CACHED_PIPELINE_STATE CachedPSO;
  868. D3D12_PIPELINE_STATE_FLAGS Flags;
  869. } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
  870. typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
  871. {
  872. ID3D12RootSignature* pRootSignature;
  873. D3D12_SHADER_BYTECODE CS;
  874. UINT NodeMask;
  875. D3D12_CACHED_PIPELINE_STATE CachedPSO;
  876. D3D12_PIPELINE_STATE_FLAGS Flags;
  877. } D3D12_COMPUTE_PIPELINE_STATE_DESC;
  878. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  879. //
  880. // Pipeline State v2
  881. //
  882. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  883. struct D3D12_RT_FORMAT_ARRAY
  884. {
  885. DXGI_FORMAT RTFormats[D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT];
  886. UINT NumRenderTargets;
  887. };
  888. typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
  889. {
  890. [annotation("_In_")] SIZE_T SizeInBytes;
  891. [annotation("_In_reads_(_Inexpressible_(\"Dependent on size of subobjects\"))")] void* pPipelineStateSubobjectStream;
  892. } D3D12_PIPELINE_STATE_STREAM_DESC;
  893. typedef enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
  894. {
  895. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE, // ID3D12RootSignature*
  896. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS, // D3D12_SHADER_BYTECODE
  897. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS, // D3D12_SHADER_BYTECODE
  898. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS, // D3D12_SHADER_BYTECODE
  899. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS, // D3D12_SHADER_BYTECODE
  900. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS, // D3D12_SHADER_BYTECODE
  901. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS, // D3D12_SHADER_BYTECODE
  902. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT, // D3D12_STREAM_OUTPUT_DESC
  903. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND, // D3D12_BLEND_DESC
  904. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK, // UINT
  905. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER, // D3D12_RASTERIZER_DESC
  906. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL, // D3D12_DEPTH_STENCIL_DESC
  907. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT, // D3D12_INPUT_LAYOUT_DESC
  908. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
  909. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
  910. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS, // D3D12_RT_FORMAT_ARRAY
  911. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT, // DXGI_FORMAT
  912. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC, // DXGI_SAMPLE_DESC
  913. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK, // UINT
  914. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO, // D3D12_CACHED_PIPELINE_STATE
  915. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS, // D3D12_PIPELINE_STATE_FLAGS
  916. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1, // D3D12_DEPTH_STENCIL_DESC1
  917. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING, // D3D12_VIEW_INSTANCING_DESC
  918. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_AS = 24, // D3D12_SHADER_BYTECODE
  919. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MS = 25, // D3D12_SHADER_BYTECODE
  920. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 26, // D3D12_DEPTH_STENCIL_DESC2
  921. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER1 = 27, // D3D12_RASTERIZER_DESC1
  922. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER2 = 28, // D3D12_RASTERIZER_DESC2
  923. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID,
  924. } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
  925. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  926. //
  927. // D3D12 Caps
  928. //
  929. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  930. typedef enum D3D12_FEATURE
  931. {
  932. D3D12_FEATURE_D3D12_OPTIONS = 0,
  933. D3D12_FEATURE_ARCHITECTURE = 1, // Deprecated by D3D12_FEATURE_ARCHITECTURE1
  934. D3D12_FEATURE_FEATURE_LEVELS = 2,
  935. D3D12_FEATURE_FORMAT_SUPPORT = 3,
  936. D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
  937. D3D12_FEATURE_FORMAT_INFO = 5,
  938. D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
  939. D3D12_FEATURE_SHADER_MODEL = 7,
  940. D3D12_FEATURE_D3D12_OPTIONS1 = 8,
  941. D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
  942. D3D12_FEATURE_ROOT_SIGNATURE = 12,
  943. D3D12_FEATURE_ARCHITECTURE1 = 16,
  944. D3D12_FEATURE_D3D12_OPTIONS2 = 18,
  945. D3D12_FEATURE_SHADER_CACHE = 19,
  946. D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
  947. D3D12_FEATURE_D3D12_OPTIONS3 = 21,
  948. D3D12_FEATURE_EXISTING_HEAPS = 22,
  949. D3D12_FEATURE_D3D12_OPTIONS4 = 23,
  950. D3D12_FEATURE_SERIALIZATION = 24,
  951. D3D12_FEATURE_CROSS_NODE = 25,
  952. D3D12_FEATURE_D3D12_OPTIONS5 = 27,
  953. D3D12_FEATURE_DISPLAYABLE = 28,
  954. D3D12_FEATURE_D3D12_OPTIONS6 = 30,
  955. D3D12_FEATURE_QUERY_META_COMMAND = 31,
  956. D3D12_FEATURE_D3D12_OPTIONS7 = 32,
  957. D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
  958. D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
  959. D3D12_FEATURE_D3D12_OPTIONS8 = 36,
  960. D3D12_FEATURE_D3D12_OPTIONS9 = 37,
  961. D3D12_FEATURE_D3D12_OPTIONS10 = 39,
  962. D3D12_FEATURE_D3D12_OPTIONS11 = 40,
  963. D3D12_FEATURE_D3D12_OPTIONS12 = 41,
  964. D3D12_FEATURE_D3D12_OPTIONS13 = 42,
  965. D3D12_FEATURE_D3D12_OPTIONS14 = 43,
  966. D3D12_FEATURE_D3D12_OPTIONS15 = 44,
  967. D3D12_FEATURE_D3D12_OPTIONS16 = 45,
  968. D3D12_FEATURE_D3D12_OPTIONS17 = 46,
  969. D3D12_FEATURE_D3D12_OPTIONS18 = 47,
  970. D3D12_FEATURE_D3D12_OPTIONS19 = 48,
  971. D3D12_FEATURE_D3D12_OPTIONS20 = 49,
  972. D3D12_FEATURE_PREDICATION = 50,
  973. D3D12_FEATURE_PLACED_RESOURCE_SUPPORT_INFO = 51,
  974. D3D12_FEATURE_HARDWARE_COPY = 52,
  975. D3D12_FEATURE_D3D12_OPTIONS21 = 53,
  976. D3D12_FEATURE_APPLICATION_SPECIFIC_DRIVER_STATE = 56,
  977. D3D12_FEATURE_BYTECODE_BYPASS_HASH_SUPPORTED = 57,
  978. } D3D12_FEATURE;
  979. typedef enum D3D12_SHADER_MIN_PRECISION_SUPPORT
  980. {
  981. D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0x0,
  982. D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
  983. D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
  984. } D3D12_SHADER_MIN_PRECISION_SUPPORT;
  985. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT )" )
  986. typedef enum D3D12_TILED_RESOURCES_TIER
  987. {
  988. D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
  989. D3D12_TILED_RESOURCES_TIER_1 = 1,
  990. D3D12_TILED_RESOURCES_TIER_2 = 2,
  991. D3D12_TILED_RESOURCES_TIER_3 = 3,
  992. D3D12_TILED_RESOURCES_TIER_4 = 4,
  993. } D3D12_TILED_RESOURCES_TIER;
  994. typedef enum D3D12_RESOURCE_BINDING_TIER
  995. {
  996. D3D12_RESOURCE_BINDING_TIER_1 = 1,
  997. D3D12_RESOURCE_BINDING_TIER_2 = 2,
  998. D3D12_RESOURCE_BINDING_TIER_3 = 3,
  999. } D3D12_RESOURCE_BINDING_TIER;
  1000. typedef enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
  1001. D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
  1002. D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
  1003. D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
  1004. D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3,
  1005. } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
  1006. typedef enum D3D12_FORMAT_SUPPORT1
  1007. {
  1008. D3D12_FORMAT_SUPPORT1_NONE = 0,
  1009. D3D12_FORMAT_SUPPORT1_BUFFER = 0x00000001,
  1010. D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x00000002,
  1011. D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x00000004,
  1012. D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x00000008,
  1013. D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x00000010,
  1014. D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x00000020,
  1015. D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x00000040,
  1016. D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x00000080,
  1017. D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x00000100,
  1018. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x00000200,
  1019. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x00000400,
  1020. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x00000800,
  1021. D3D12_FORMAT_SUPPORT1_MIP = 0x00001000,
  1022. D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x00004000,
  1023. D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x00008000,
  1024. D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x00010000,
  1025. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x00040000,
  1026. D3D12_FORMAT_SUPPORT1_DISPLAY = 0x00080000,
  1027. D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x00100000,
  1028. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x00200000,
  1029. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x00400000,
  1030. D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x00800000,
  1031. D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x01000000,
  1032. D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x02000000,
  1033. D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x04000000,
  1034. D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x08000000,
  1035. D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
  1036. D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
  1037. D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000,
  1038. } D3D12_FORMAT_SUPPORT1;
  1039. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 )" )
  1040. typedef enum D3D12_FORMAT_SUPPORT2
  1041. {
  1042. D3D12_FORMAT_SUPPORT2_NONE = 0,
  1043. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x00000001,
  1044. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x00000002,
  1045. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x00000004,
  1046. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x00000008,
  1047. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x00000010,
  1048. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x00000020,
  1049. D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x00000040,
  1050. D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x00000080,
  1051. D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x00000100,
  1052. D3D12_FORMAT_SUPPORT2_TILED = 0x00000200,
  1053. D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
  1054. D3D12_FORMAT_SUPPORT2_SAMPLER_FEEDBACK = 0x00008000,
  1055. } D3D12_FORMAT_SUPPORT2;
  1056. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 )" )
  1057. typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
  1058. {
  1059. D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
  1060. D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
  1061. } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
  1062. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS )" )
  1063. typedef enum D3D12_CROSS_NODE_SHARING_TIER
  1064. {
  1065. D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
  1066. D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
  1067. D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
  1068. D3D12_CROSS_NODE_SHARING_TIER_2 = 3,
  1069. D3D12_CROSS_NODE_SHARING_TIER_3 = 4,
  1070. } D3D12_CROSS_NODE_SHARING_TIER;
  1071. typedef enum D3D12_RESOURCE_HEAP_TIER
  1072. {
  1073. D3D12_RESOURCE_HEAP_TIER_1 = 1,
  1074. D3D12_RESOURCE_HEAP_TIER_2 = 2,
  1075. } D3D12_RESOURCE_HEAP_TIER;
  1076. typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
  1077. {
  1078. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
  1079. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
  1080. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2,
  1081. } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
  1082. typedef enum D3D12_VIEW_INSTANCING_TIER
  1083. {
  1084. D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0,
  1085. D3D12_VIEW_INSTANCING_TIER_1 = 1,
  1086. D3D12_VIEW_INSTANCING_TIER_2 = 2,
  1087. D3D12_VIEW_INSTANCING_TIER_3 = 3,
  1088. } D3D12_VIEW_INSTANCING_TIER;
  1089. typedef enum D3D12_WORK_GRAPHS_TIER {
  1090. D3D12_WORK_GRAPHS_TIER_NOT_SUPPORTED = 0,
  1091. D3D12_WORK_GRAPHS_TIER_1_0 = 10,
  1092. } D3D12_WORK_GRAPHS_TIER;
  1093. // D3D12_FEATURE_D3D12_OPTIONS
  1094. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
  1095. {
  1096. [annotation("_Out_")] BOOL DoublePrecisionFloatShaderOps;
  1097. [annotation("_Out_")] BOOL OutputMergerLogicOp;
  1098. [annotation("_Out_")] D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
  1099. [annotation("_Out_")] D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
  1100. [annotation("_Out_")] D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
  1101. [annotation("_Out_")] BOOL PSSpecifiedStencilRefSupported;
  1102. [annotation("_Out_")] BOOL TypedUAVLoadAdditionalFormats;
  1103. [annotation("_Out_")] BOOL ROVsSupported;
  1104. [annotation("_Out_")] D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
  1105. [annotation("_Out_")] UINT MaxGPUVirtualAddressBitsPerResource;
  1106. [annotation("_Out_")] BOOL StandardSwizzle64KBSupported;
  1107. [annotation("_Out_")] D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
  1108. [annotation("_Out_")] BOOL CrossAdapterRowMajorTextureSupported;
  1109. [annotation("_Out_")] BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
  1110. [annotation("_Out_")] D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
  1111. } D3D12_FEATURE_DATA_D3D12_OPTIONS;
  1112. // D3D12_FEATURE_D3D12_OPTIONS1
  1113. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
  1114. {
  1115. [annotation("_Out_")] BOOL WaveOps;
  1116. [annotation("_Out_")] UINT WaveLaneCountMin;
  1117. [annotation("_Out_")] UINT WaveLaneCountMax;
  1118. [annotation("_Out_")] UINT TotalLaneCount;
  1119. [annotation("_Out_")] BOOL ExpandedComputeResourceStates;
  1120. [annotation("_Out_")] BOOL Int64ShaderOps;
  1121. } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
  1122. // D3D12_FEATURE_D3D12_OPTIONS2
  1123. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
  1124. {
  1125. [annotation("_Out_")] BOOL DepthBoundsTestSupported;
  1126. [annotation("_Out_")] D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
  1127. } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
  1128. // D3D12_FEATURE_ROOT_SIGNATURE
  1129. typedef enum D3D_ROOT_SIGNATURE_VERSION
  1130. {
  1131. D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
  1132. D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
  1133. D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2,
  1134. D3D_ROOT_SIGNATURE_VERSION_1_2 = 0x3,
  1135. } D3D_ROOT_SIGNATURE_VERSION;
  1136. typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
  1137. {
  1138. [annotation("_Inout_")] D3D_ROOT_SIGNATURE_VERSION HighestVersion;
  1139. } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
  1140. // D3D12_FEATURE_ARCHITECTURE
  1141. typedef struct D3D12_FEATURE_DATA_ARCHITECTURE // Deprecated by D3D12_FEATURE_DATA_ARCHITECTURE1
  1142. {
  1143. [annotation("_In_")] UINT NodeIndex;
  1144. [annotation("_Out_")] BOOL TileBasedRenderer;
  1145. [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
  1146. [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
  1147. } D3D12_FEATURE_DATA_ARCHITECTURE;
  1148. // D3D12_FEATURE_ARCHITECTURE1
  1149. typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
  1150. {
  1151. [annotation("_In_")] UINT NodeIndex;
  1152. [annotation("_Out_")] BOOL TileBasedRenderer;
  1153. [annotation("_Out_")] BOOL UMA; // Needed for applications to understand WRITE_COMBINE
  1154. [annotation("_Out_")] BOOL CacheCoherentUMA; // Only TRUE when UMA is also TRUE
  1155. [annotation("_Out_")] BOOL IsolatedMMU; // GPU accesses don't honor the same MMU functionality as the CPU
  1156. } D3D12_FEATURE_DATA_ARCHITECTURE1;
  1157. // D3D12_FEATURE_FEATURE_LEVELS
  1158. typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
  1159. {
  1160. [annotation("_In_")] UINT NumFeatureLevels;
  1161. [annotation("_In_reads_(NumFeatureLevels)")] const D3D_FEATURE_LEVEL* pFeatureLevelsRequested;
  1162. [annotation("_Out_")] D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
  1163. } D3D12_FEATURE_DATA_FEATURE_LEVELS;
  1164. // D3D_SHADER_MODEL
  1165. typedef enum D3D_SHADER_MODEL
  1166. {
  1167. D3D_SHADER_MODEL_NONE = 0x0, // e.g MCDM Generic devices
  1168. D3D_SHADER_MODEL_5_1 = 0x51,
  1169. D3D_SHADER_MODEL_6_0 = 0x60,
  1170. D3D_SHADER_MODEL_6_1 = 0x61,
  1171. D3D_SHADER_MODEL_6_2 = 0x62,
  1172. D3D_SHADER_MODEL_6_3 = 0x63,
  1173. D3D_SHADER_MODEL_6_4 = 0x64,
  1174. D3D_SHADER_MODEL_6_5 = 0x65,
  1175. D3D_SHADER_MODEL_6_6 = 0x66,
  1176. D3D_SHADER_MODEL_6_7 = 0x67,
  1177. D3D_SHADER_MODEL_6_8 = 0x68,
  1178. D3D_SHADER_MODEL_6_9 = 0x69,
  1179. D3D_HIGHEST_SHADER_MODEL = D3D_SHADER_MODEL_6_9
  1180. } D3D_SHADER_MODEL;
  1181. typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
  1182. {
  1183. [annotation("_Inout_")] D3D_SHADER_MODEL HighestShaderModel;
  1184. } D3D12_FEATURE_DATA_SHADER_MODEL;
  1185. // D3D12_FEATURE_FORMAT_SUPPORT
  1186. typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
  1187. {
  1188. [annotation("_In_")] DXGI_FORMAT Format;
  1189. [annotation("_Out_")] D3D12_FORMAT_SUPPORT1 Support1;
  1190. [annotation("_Out_")] D3D12_FORMAT_SUPPORT2 Support2;
  1191. } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
  1192. // D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS
  1193. typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
  1194. {
  1195. [annotation("_In_")] DXGI_FORMAT Format;
  1196. [annotation("_In_")] UINT SampleCount;
  1197. [annotation("_In_")] D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
  1198. [annotation("_Out_")] UINT NumQualityLevels;
  1199. } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
  1200. // D3D12_FEATURE_FORMAT_INFO
  1201. typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
  1202. {
  1203. DXGI_FORMAT Format;
  1204. UINT8 PlaneCount;
  1205. } D3D12_FEATURE_DATA_FORMAT_INFO;
  1206. // D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT
  1207. typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
  1208. {
  1209. UINT MaxGPUVirtualAddressBitsPerResource;
  1210. UINT MaxGPUVirtualAddressBitsPerProcess;
  1211. } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
  1212. typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
  1213. {
  1214. D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
  1215. D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1, // Always supported
  1216. D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
  1217. D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
  1218. D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8,
  1219. D3D12_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10,
  1220. D3D12_SHADER_CACHE_SUPPORT_SHADER_CONTROL_CLEAR = 0x20,
  1221. D3D12_SHADER_CACHE_SUPPORT_SHADER_SESSION_DELETE = 0x40
  1222. } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
  1223. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS )" )
  1224. // D3D12_FEATURE_SHADER_CACHE
  1225. typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
  1226. {
  1227. [annotation("_Out_")] D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
  1228. } D3D12_FEATURE_DATA_SHADER_CACHE;
  1229. // D3D12_FEATURE_COMMAND_QUEUE_PRIORITY
  1230. typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
  1231. {
  1232. [annotation("_In_")] D3D12_COMMAND_LIST_TYPE CommandListType;
  1233. [annotation("_In_")] UINT Priority;
  1234. [annotation("_Out_")] BOOL PriorityForTypeIsSupported;
  1235. } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
  1236. typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
  1237. {
  1238. D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x00000000,
  1239. D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT,
  1240. D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE,
  1241. D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 1 << D3D12_COMMAND_LIST_TYPE_COMPUTE,
  1242. D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 1 << D3D12_COMMAND_LIST_TYPE_COPY,
  1243. D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE,
  1244. D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS,
  1245. D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE,
  1246. } D3D12_COMMAND_LIST_SUPPORT_FLAGS;
  1247. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_SUPPORT_FLAGS )")
  1248. // D3D12_FEATURE_D3D12_OPTIONS3
  1249. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
  1250. {
  1251. [annotation("_Out_")] BOOL CopyQueueTimestampQueriesSupported;
  1252. [annotation("_Out_")] BOOL CastingFullyTypedFormatSupported;
  1253. [annotation("_Out_")] D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
  1254. [annotation("_Out_")] D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
  1255. [annotation("_Out_")] BOOL BarycentricsSupported;
  1256. } D3D12_FEATURE_DATA_D3D12_OPTIONS3;
  1257. // D3D12_FEATURE_EXISTING_HEAPS
  1258. typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
  1259. {
  1260. [annotation("_Out_")] BOOL Supported;
  1261. } D3D12_FEATURE_DATA_EXISTING_HEAPS;
  1262. typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
  1263. {
  1264. D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0,
  1265. D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1,
  1266. D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2,
  1267. } D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
  1268. typedef struct D3D12_FEATURE_DATA_DISPLAYABLE
  1269. {
  1270. [annotation("_Out_")] BOOL DisplayableTexture;
  1271. [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
  1272. } D3D12_FEATURE_DATA_DISPLAYABLE;
  1273. // D3D12_FEATURE_D3D12_OPTIONS4
  1274. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
  1275. {
  1276. [annotation("_Out_")] BOOL MSAA64KBAlignedTextureSupported;
  1277. [annotation("_Out_")] D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
  1278. [annotation("_Out_")] BOOL Native16BitShaderOpsSupported;
  1279. } D3D12_FEATURE_DATA_D3D12_OPTIONS4;
  1280. typedef enum D3D12_HEAP_SERIALIZATION_TIER
  1281. {
  1282. D3D12_HEAP_SERIALIZATION_TIER_0 = 0,
  1283. D3D12_HEAP_SERIALIZATION_TIER_10 = 10,
  1284. } D3D12_HEAP_SERIALIZATION_TIER;
  1285. // D3D12_FEATURE_SERIALIZATION
  1286. typedef struct D3D12_FEATURE_DATA_SERIALIZATION
  1287. {
  1288. [annotation("_In_")] UINT NodeIndex;
  1289. [annotation("_Out_")] D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
  1290. } D3D12_FEATURE_DATA_SERIALIZATION;
  1291. // D3D12_FEATURE_CROSS_NODE
  1292. typedef struct D3D12_FEATURE_DATA_CROSS_NODE
  1293. {
  1294. D3D12_CROSS_NODE_SHARING_TIER SharingTier;
  1295. BOOL AtomicShaderInstructions;
  1296. } D3D12_FEATURE_DATA_CROSS_NODE;
  1297. typedef enum D3D12_RENDER_PASS_TIER
  1298. {
  1299. D3D12_RENDER_PASS_TIER_0 = 0,
  1300. D3D12_RENDER_PASS_TIER_1 = 1,
  1301. D3D12_RENDER_PASS_TIER_2 = 2,
  1302. } D3D12_RENDER_PASS_TIER;
  1303. typedef enum D3D12_RAYTRACING_TIER
  1304. {
  1305. D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
  1306. D3D12_RAYTRACING_TIER_1_0 = 10,
  1307. D3D12_RAYTRACING_TIER_1_1 = 11,
  1308. D3D12_RAYTRACING_TIER_1_2 = 12,
  1309. } D3D12_RAYTRACING_TIER;
  1310. // D3D12_FEATURE_D3D12_OPTIONS5
  1311. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
  1312. {
  1313. [annotation("_Out_")] BOOL SRVOnlyTiledResourceTier3;
  1314. [annotation("_Out_")] D3D12_RENDER_PASS_TIER RenderPassesTier;
  1315. [annotation("_Out_")] D3D12_RAYTRACING_TIER RaytracingTier;
  1316. } D3D12_FEATURE_DATA_D3D12_OPTIONS5;
  1317. typedef enum D3D12_VARIABLE_SHADING_RATE_TIER
  1318. {
  1319. D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED = 0,
  1320. D3D12_VARIABLE_SHADING_RATE_TIER_1 = 1,
  1321. D3D12_VARIABLE_SHADING_RATE_TIER_2 = 2,
  1322. } D3D12_VARIABLE_SHADING_RATE_TIER;
  1323. // D3D12_FEATURE_D3D12_OPTIONS6
  1324. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS6
  1325. {
  1326. [annotation("_Out_")] BOOL AdditionalShadingRatesSupported;
  1327. [annotation("_Out_")] BOOL PerPrimitiveShadingRateSupportedWithViewportIndexing;
  1328. [annotation("_Out_")] D3D12_VARIABLE_SHADING_RATE_TIER VariableShadingRateTier;
  1329. [annotation("_Out_")] UINT ShadingRateImageTileSize;
  1330. [annotation("_Out_")] BOOL BackgroundProcessingSupported;
  1331. } D3D12_FEATURE_DATA_D3D12_OPTIONS6;
  1332. typedef enum D3D12_MESH_SHADER_TIER
  1333. {
  1334. D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0,
  1335. D3D12_MESH_SHADER_TIER_1 = 10,
  1336. } D3D12_MESH_SHADER_TIER;
  1337. typedef enum D3D12_SAMPLER_FEEDBACK_TIER
  1338. {
  1339. D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0,
  1340. D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90,
  1341. D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100
  1342. } D3D12_SAMPLER_FEEDBACK_TIER;
  1343. // D3D12_FEATURE_D3D12_OPTIONS7
  1344. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS7
  1345. {
  1346. [annotation("_Out_")] D3D12_MESH_SHADER_TIER MeshShaderTier;
  1347. [annotation("_Out_")] D3D12_SAMPLER_FEEDBACK_TIER SamplerFeedbackTier;
  1348. } D3D12_FEATURE_DATA_D3D12_OPTIONS7;
  1349. typedef struct D3D12_FEATURE_DATA_QUERY_META_COMMAND
  1350. {
  1351. [annotation("_In_")] GUID CommandId;
  1352. [annotation("_In_")] UINT NodeMask;
  1353. [annotation("_Field_size_bytes_full_opt_( QueryInputDataSizeInBytes )")] const void* pQueryInputData;
  1354. [annotation("_In_")] SIZE_T QueryInputDataSizeInBytes;
  1355. [annotation("_Field_size_bytes_full_( QueryOutputDataSizeInBytes )")] void* pQueryOutputData;
  1356. [annotation("_In_")] SIZE_T QueryOutputDataSizeInBytes;
  1357. } D3D12_FEATURE_DATA_QUERY_META_COMMAND;
  1358. // D3D12_FEATURE_D3D12_OPTIONS8
  1359. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS8
  1360. {
  1361. [annotation("_Out_")] BOOL UnalignedBlockTexturesSupported;
  1362. } D3D12_FEATURE_DATA_D3D12_OPTIONS8;
  1363. typedef enum D3D12_WAVE_MMA_TIER {
  1364. D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0,
  1365. D3D12_WAVE_MMA_TIER_1_0 = 10,
  1366. } D3D12_WAVE_MMA_TIER;
  1367. // D3D12_FEATURE_D3D12_OPTIONS9
  1368. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS9
  1369. {
  1370. [annotation("_Out_")] BOOL MeshShaderPipelineStatsSupported;
  1371. [annotation("_Out_")] BOOL MeshShaderSupportsFullRangeRenderTargetArrayIndex;
  1372. [annotation("_Out_")] BOOL AtomicInt64OnTypedResourceSupported;
  1373. [annotation("_Out_")] BOOL AtomicInt64OnGroupSharedSupported;
  1374. [annotation("_Out_")] BOOL DerivativesInMeshAndAmplificationShadersSupported;
  1375. [annotation("_Out_")] D3D12_WAVE_MMA_TIER WaveMMATier;
  1376. } D3D12_FEATURE_DATA_D3D12_OPTIONS9;
  1377. // D3D12_FEATURE_D3D12_OPTIONS10
  1378. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS10
  1379. {
  1380. [annotation("_Out_")] BOOL VariableRateShadingSumCombinerSupported;
  1381. [annotation("_Out_")] BOOL MeshShaderPerPrimitiveShadingRateSupported;
  1382. } D3D12_FEATURE_DATA_D3D12_OPTIONS10;
  1383. // D3D12_FEATURE_D3D12_OPTIONS11
  1384. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS11
  1385. {
  1386. [annotation("_Out_")] BOOL AtomicInt64OnDescriptorHeapResourceSupported;
  1387. } D3D12_FEATURE_DATA_D3D12_OPTIONS11;
  1388. typedef enum D3D12_TRI_STATE {
  1389. D3D12_TRI_STATE_UNKNOWN = -1,
  1390. D3D12_TRI_STATE_FALSE = 0,
  1391. D3D12_TRI_STATE_TRUE = 1,
  1392. } D3D12_TRI_STATE;
  1393. // D3D12_FEATURE_D3D12_OPTIONS12
  1394. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS12
  1395. {
  1396. [annotation("_Out_")] D3D12_TRI_STATE MSPrimitivesPipelineStatisticIncludesCulledPrimitives;
  1397. [annotation("_Out_")] BOOL EnhancedBarriersSupported;
  1398. [annotation("_Out_")] BOOL RelaxedFormatCastingSupported;
  1399. } D3D12_FEATURE_DATA_D3D12_OPTIONS12;
  1400. // D3D12_FEATURE_D3D12_OPTIONS13
  1401. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS13
  1402. {
  1403. [annotation("_Out_")] BOOL UnrestrictedBufferTextureCopyPitchSupported;
  1404. [annotation("_Out_")] BOOL UnrestrictedVertexElementAlignmentSupported;
  1405. [annotation("_Out_")] BOOL InvertedViewportHeightFlipsYSupported;
  1406. [annotation("_Out_")] BOOL InvertedViewportDepthFlipsZSupported;
  1407. [annotation("_Out_")] BOOL TextureCopyBetweenDimensionsSupported;
  1408. [annotation("_Out_")] BOOL AlphaBlendFactorSupported;
  1409. } D3D12_FEATURE_DATA_D3D12_OPTIONS13;
  1410. // D3D12_FEATURE_D3D12_OPTIONS14
  1411. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS14
  1412. {
  1413. [annotation("_Out_")] BOOL AdvancedTextureOpsSupported;
  1414. [annotation("_Out_")] BOOL WriteableMSAATexturesSupported;
  1415. [annotation("_Out_")] BOOL IndependentFrontAndBackStencilRefMaskSupported;
  1416. } D3D12_FEATURE_DATA_D3D12_OPTIONS14;
  1417. // D3D12_FEATURE_D3D12_OPTIONS15
  1418. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS15
  1419. {
  1420. [annotation("_Out_")] BOOL TriangleFanSupported;
  1421. [annotation("_Out_")] BOOL DynamicIndexBufferStripCutSupported;
  1422. } D3D12_FEATURE_DATA_D3D12_OPTIONS15;
  1423. // D3D12_FEATURE_D3D12_OPTIONS16
  1424. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS16
  1425. {
  1426. [annotation("_Out_")] BOOL DynamicDepthBiasSupported;
  1427. [annotation("_Out_")] BOOL GPUUploadHeapSupported;
  1428. } D3D12_FEATURE_DATA_D3D12_OPTIONS16;
  1429. // D3D12_FEATURE_D3D12_OPTIONS17
  1430. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS17
  1431. {
  1432. [annotation("_Out_")] BOOL NonNormalizedCoordinateSamplersSupported;
  1433. [annotation("_Out_")] BOOL ManualWriteTrackingResourceSupported;
  1434. } D3D12_FEATURE_DATA_D3D12_OPTIONS17;
  1435. // D3D12_FEATURE_D3D12_OPTIONS18
  1436. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS18
  1437. {
  1438. [annotation("_Out_")] BOOL RenderPassesValid;
  1439. } D3D12_FEATURE_DATA_D3D12_OPTIONS18;
  1440. // D3D12_FEATURE_D3D12_OPTIONS19
  1441. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS19
  1442. {
  1443. BOOL MismatchingOutputDimensionsSupported;
  1444. UINT SupportedSampleCountsWithNoOutputs;
  1445. BOOL PointSamplingAddressesNeverRoundUp;
  1446. BOOL RasterizerDesc2Supported;
  1447. BOOL NarrowQuadrilateralLinesSupported;
  1448. BOOL AnisoFilterWithPointMipSupported;
  1449. UINT MaxSamplerDescriptorHeapSize;
  1450. UINT MaxSamplerDescriptorHeapSizeWithStaticSamplers;
  1451. UINT MaxViewDescriptorHeapSize;
  1452. [annotation("_Out_")] BOOL ComputeOnlyCustomHeapSupported;
  1453. } D3D12_FEATURE_DATA_D3D12_OPTIONS19;
  1454. typedef enum D3D12_RECREATE_AT_TIER
  1455. {
  1456. D3D12_RECREATE_AT_TIER_NOT_SUPPORTED = 0,
  1457. // * Supports retrieving resource and heap allocation information
  1458. // with ID3D12PageableTools::GetAllocationInfo
  1459. // * Supports setting resource and heap virtual addresses with
  1460. // ID3D12DeviceTools::SetNextAllocation
  1461. D3D12_RECREATE_AT_TIER_1 = 1,
  1462. } D3D12_RECREATE_AT_TIER;
  1463. // D3D12_FEATURE_D3D12_OPTIONS20
  1464. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS20
  1465. {
  1466. [annotation("_Out_")] BOOL ComputeOnlyWriteWatchSupported;
  1467. D3D12_RECREATE_AT_TIER RecreateAtTier;
  1468. } D3D12_FEATURE_DATA_D3D12_OPTIONS20;
  1469. typedef enum D3D12_EXECUTE_INDIRECT_TIER
  1470. {
  1471. D3D12_EXECUTE_INDIRECT_TIER_1_0 = 10,
  1472. D3D12_EXECUTE_INDIRECT_TIER_1_1 = 11,
  1473. } D3D12_EXECUTE_INDIRECT_TIER;
  1474. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS21
  1475. {
  1476. [annotation("_Out_")] D3D12_WORK_GRAPHS_TIER WorkGraphsTier;
  1477. [annotation("_Out_")] D3D12_EXECUTE_INDIRECT_TIER ExecuteIndirectTier;
  1478. [annotation("_Out_")] BOOL SampleCmpGradientAndBiasSupported;
  1479. [annotation("_Out_")] BOOL ExtendedCommandInfoSupported;
  1480. } D3D12_FEATURE_DATA_D3D12_OPTIONS21;
  1481. typedef struct D3D12_FEATURE_DATA_PREDICATION
  1482. {
  1483. [annotation("_Out_")] BOOL Supported;
  1484. } D3D12_FEATURE_DATA_PREDICATION;
  1485. typedef struct D3D12_FEATURE_DATA_HARDWARE_COPY
  1486. {
  1487. [annotation("_Out_")] BOOL Supported;
  1488. } D3D12_FEATURE_DATA_HARDWARE_COPY;
  1489. typedef struct D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE
  1490. {
  1491. [annotation("_Out_")] BOOL Supported;
  1492. } D3D12_FEATURE_DATA_APPLICATION_SPECIFIC_DRIVER_STATE;
  1493. typedef struct D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED
  1494. {
  1495. [annotation("_Out_")] BOOL Supported;
  1496. } D3D12_FEATURE_DATA_BYTECODE_BYPASS_HASH_SUPPORTED;
  1497. typedef struct D3D12_RESOURCE_ALLOCATION_INFO
  1498. {
  1499. UINT64 SizeInBytes;
  1500. UINT64 Alignment;
  1501. } D3D12_RESOURCE_ALLOCATION_INFO;
  1502. typedef struct D3D12_RESOURCE_ALLOCATION_INFO1
  1503. {
  1504. UINT64 Offset;
  1505. UINT64 Alignment;
  1506. UINT64 SizeInBytes;
  1507. } D3D12_RESOURCE_ALLOCATION_INFO1;
  1508. typedef enum D3D12_HEAP_TYPE
  1509. {
  1510. D3D12_HEAP_TYPE_DEFAULT = 1,
  1511. D3D12_HEAP_TYPE_UPLOAD = 2,
  1512. D3D12_HEAP_TYPE_READBACK = 3,
  1513. D3D12_HEAP_TYPE_CUSTOM = 4,
  1514. D3D12_HEAP_TYPE_GPU_UPLOAD = 5,
  1515. } D3D12_HEAP_TYPE;
  1516. typedef enum D3D12_CPU_PAGE_PROPERTY
  1517. {
  1518. D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
  1519. D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
  1520. D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
  1521. D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3,
  1522. } D3D12_CPU_PAGE_PROPERTY;
  1523. typedef enum D3D12_MEMORY_POOL
  1524. {
  1525. D3D12_MEMORY_POOL_UNKNOWN = 0,
  1526. D3D12_MEMORY_POOL_L0 = 1, // Maximum bandwidth for CPU
  1527. D3D12_MEMORY_POOL_L1 = 2, // More bandwidth for GPU, less for CPU
  1528. } D3D12_MEMORY_POOL;
  1529. typedef struct D3D12_HEAP_PROPERTIES
  1530. {
  1531. D3D12_HEAP_TYPE Type;
  1532. D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
  1533. D3D12_MEMORY_POOL MemoryPoolPreference;
  1534. UINT CreationNodeMask;
  1535. UINT VisibleNodeMask;
  1536. } D3D12_HEAP_PROPERTIES;
  1537. typedef enum D3D12_HEAP_FLAGS
  1538. {
  1539. D3D12_HEAP_FLAG_NONE = 0x0,
  1540. D3D12_HEAP_FLAG_SHARED = 0x1,
  1541. D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
  1542. D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
  1543. D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
  1544. D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
  1545. D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
  1546. D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
  1547. D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
  1548. D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
  1549. D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
  1550. D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
  1551. D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING = 0x2000,
  1552. // These are convenience aliases to manage resource heap tier restrictions. They cannot be bitwise OR'ed together cleanly.
  1553. D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
  1554. D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
  1555. D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
  1556. D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
  1557. } D3D12_HEAP_FLAGS;
  1558. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS )" )
  1559. typedef struct D3D12_HEAP_DESC
  1560. {
  1561. UINT64 SizeInBytes;
  1562. D3D12_HEAP_PROPERTIES Properties;
  1563. UINT64 Alignment;
  1564. D3D12_HEAP_FLAGS Flags;
  1565. } D3D12_HEAP_DESC;
  1566. typedef enum D3D12_RESOURCE_DIMENSION
  1567. {
  1568. D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
  1569. D3D12_RESOURCE_DIMENSION_BUFFER = 1,
  1570. D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
  1571. D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
  1572. D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4,
  1573. } D3D12_RESOURCE_DIMENSION;
  1574. typedef struct D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO
  1575. {
  1576. [annotation("_In_")] DXGI_FORMAT Format;
  1577. [annotation("_In_")] D3D12_RESOURCE_DIMENSION Dimension;
  1578. [annotation("_In_")] D3D12_HEAP_PROPERTIES DestHeapProperties;
  1579. [annotation("_Out_")] BOOL Supported;
  1580. } D3D12_FEATURE_DATA_PLACED_RESOURCE_SUPPORT_INFO;
  1581. typedef enum D3D12_TEXTURE_LAYOUT
  1582. {
  1583. D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
  1584. D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, // Must be used with buffers. Can be used with cross-adapter shared textures.
  1585. D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
  1586. D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3,
  1587. } D3D12_TEXTURE_LAYOUT;
  1588. typedef enum D3D12_RESOURCE_FLAGS
  1589. {
  1590. D3D12_RESOURCE_FLAG_NONE = 0x0,
  1591. D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
  1592. D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
  1593. D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
  1594. D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
  1595. D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
  1596. D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
  1597. D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
  1598. D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
  1599. D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100,
  1600. } D3D12_RESOURCE_FLAGS;
  1601. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS )" )
  1602. typedef struct D3D12_MIP_REGION
  1603. {
  1604. UINT Width;
  1605. UINT Height;
  1606. UINT Depth;
  1607. } D3D12_MIP_REGION;
  1608. typedef struct D3D12_RESOURCE_DESC
  1609. {
  1610. D3D12_RESOURCE_DIMENSION Dimension;
  1611. UINT64 Alignment;
  1612. UINT64 Width;
  1613. UINT Height;
  1614. UINT16 DepthOrArraySize;
  1615. UINT16 MipLevels;
  1616. DXGI_FORMAT Format;
  1617. DXGI_SAMPLE_DESC SampleDesc;
  1618. D3D12_TEXTURE_LAYOUT Layout;
  1619. D3D12_RESOURCE_FLAGS Flags;
  1620. } D3D12_RESOURCE_DESC;
  1621. typedef struct D3D12_RESOURCE_DESC1
  1622. {
  1623. D3D12_RESOURCE_DIMENSION Dimension;
  1624. UINT64 Alignment;
  1625. UINT64 Width;
  1626. UINT Height;
  1627. UINT16 DepthOrArraySize;
  1628. UINT16 MipLevels;
  1629. DXGI_FORMAT Format;
  1630. DXGI_SAMPLE_DESC SampleDesc;
  1631. D3D12_TEXTURE_LAYOUT Layout;
  1632. D3D12_RESOURCE_FLAGS Flags;
  1633. D3D12_MIP_REGION SamplerFeedbackMipRegion;
  1634. } D3D12_RESOURCE_DESC1;
  1635. typedef struct D3D12_DEPTH_STENCIL_VALUE
  1636. {
  1637. FLOAT Depth;
  1638. UINT8 Stencil;
  1639. } D3D12_DEPTH_STENCIL_VALUE;
  1640. typedef struct D3D12_CLEAR_VALUE
  1641. {
  1642. DXGI_FORMAT Format;
  1643. union
  1644. {
  1645. FLOAT Color[4];
  1646. D3D12_DEPTH_STENCIL_VALUE DepthStencil;
  1647. };
  1648. } D3D12_CLEAR_VALUE;
  1649. typedef struct D3D12_RANGE
  1650. {
  1651. SIZE_T Begin;
  1652. SIZE_T End; // One past end, so (End - Begin) = Size
  1653. } D3D12_RANGE;
  1654. typedef struct D3D12_RANGE_UINT64
  1655. {
  1656. UINT64 Begin;
  1657. UINT64 End; // One past end, so (End - Begin) = Size
  1658. } D3D12_RANGE_UINT64;
  1659. typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
  1660. {
  1661. UINT Subresource;
  1662. D3D12_RANGE_UINT64 Range;
  1663. } D3D12_SUBRESOURCE_RANGE_UINT64;
  1664. typedef struct D3D12_SUBRESOURCE_INFO
  1665. {
  1666. UINT64 Offset;
  1667. UINT RowPitch;
  1668. UINT DepthPitch;
  1669. } D3D12_SUBRESOURCE_INFO;
  1670. typedef struct D3D12_TILED_RESOURCE_COORDINATE
  1671. {
  1672. UINT X;
  1673. UINT Y;
  1674. UINT Z;
  1675. UINT Subresource;
  1676. } D3D12_TILED_RESOURCE_COORDINATE;
  1677. typedef struct D3D12_TILE_REGION_SIZE
  1678. {
  1679. UINT NumTiles;
  1680. BOOL UseBox;
  1681. UINT Width;
  1682. UINT16 Height;
  1683. UINT16 Depth;
  1684. } D3D12_TILE_REGION_SIZE;
  1685. typedef enum D3D12_TILE_RANGE_FLAGS
  1686. {
  1687. D3D12_TILE_RANGE_FLAG_NONE = 0,
  1688. D3D12_TILE_RANGE_FLAG_NULL = 1,
  1689. D3D12_TILE_RANGE_FLAG_SKIP = 2,
  1690. D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4,
  1691. } D3D12_TILE_RANGE_FLAGS;
  1692. typedef struct D3D12_SUBRESOURCE_TILING
  1693. {
  1694. UINT WidthInTiles;
  1695. UINT16 HeightInTiles;
  1696. UINT16 DepthInTiles;
  1697. UINT StartTileIndexInOverallResource;
  1698. } D3D12_SUBRESOURCE_TILING;
  1699. typedef struct D3D12_TILE_SHAPE
  1700. {
  1701. UINT WidthInTexels;
  1702. UINT HeightInTexels;
  1703. UINT DepthInTexels;
  1704. } D3D12_TILE_SHAPE;
  1705. typedef struct D3D12_PACKED_MIP_INFO
  1706. {
  1707. UINT8 NumStandardMips;
  1708. UINT8 NumPackedMips;
  1709. UINT NumTilesForPackedMips;
  1710. UINT StartTileIndexInOverallResource;
  1711. } D3D12_PACKED_MIP_INFO;
  1712. typedef enum D3D12_TILE_MAPPING_FLAGS
  1713. {
  1714. D3D12_TILE_MAPPING_FLAG_NONE = 0x0,
  1715. D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1,
  1716. } D3D12_TILE_MAPPING_FLAGS;
  1717. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS )" )
  1718. typedef enum D3D12_TILE_COPY_FLAGS
  1719. {
  1720. D3D12_TILE_COPY_FLAG_NONE = 0x0,
  1721. D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
  1722. D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
  1723. D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4,
  1724. } D3D12_TILE_COPY_FLAGS;
  1725. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS )")
  1726. // Resource Barrier
  1727. typedef enum D3D12_RESOURCE_STATES
  1728. {
  1729. D3D12_RESOURCE_STATE_COMMON = 0,
  1730. D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x00001,
  1731. D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x00002,
  1732. D3D12_RESOURCE_STATE_RENDER_TARGET = 0x00004,
  1733. D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x00008,
  1734. D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x00010,
  1735. D3D12_RESOURCE_STATE_DEPTH_READ = 0x00020,
  1736. D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x00040,
  1737. D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x00080,
  1738. D3D12_RESOURCE_STATE_STREAM_OUT = 0x00100,
  1739. D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x00200,
  1740. D3D12_RESOURCE_STATE_COPY_DEST = 0x00400,
  1741. D3D12_RESOURCE_STATE_COPY_SOURCE = 0x00800,
  1742. D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x01000,
  1743. D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x02000,
  1744. D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
  1745. D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
  1746. D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000 = 0x8000,
  1747. D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000 = 0x4000,
  1748. D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000 = 0x100000,
  1749. D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000 = 0x40000000,
  1750. D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000 = 0x80000000,
  1751. D3D12_RESOURCE_STATE_GENERIC_READ =
  1752. /*D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER*/ 0x0001 |
  1753. /*D3D12_RESOURCE_STATE_INDEX_BUFFER*/ 0x0002 |
  1754. /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x0040 |
  1755. /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x0080 |
  1756. /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200 |
  1757. /*D3D12_RESOURCE_STATE_COPY_SOURCE*/ 0x0800,
  1758. D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE =
  1759. /*D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE*/ 0x40 |
  1760. /*D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE*/ 0x80,
  1761. D3D12_RESOURCE_STATE_PRESENT = 0,
  1762. D3D12_RESOURCE_STATE_PREDICATION = /*D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT*/ 0x0200,
  1763. D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x00010000,
  1764. D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x00020000,
  1765. D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x00040000,
  1766. D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x00080000,
  1767. D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x00200000,
  1768. D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x00800000,
  1769. } D3D12_RESOURCE_STATES;
  1770. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES )" )
  1771. typedef enum D3D12_RESOURCE_BARRIER_TYPE
  1772. {
  1773. D3D12_RESOURCE_BARRIER_TYPE_TRANSITION,
  1774. D3D12_RESOURCE_BARRIER_TYPE_ALIASING,
  1775. D3D12_RESOURCE_BARRIER_TYPE_UAV,
  1776. } D3D12_RESOURCE_BARRIER_TYPE;
  1777. interface ID3D12Resource;
  1778. typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
  1779. {
  1780. ID3D12Resource* pResource;
  1781. UINT Subresource;
  1782. D3D12_RESOURCE_STATES StateBefore;
  1783. D3D12_RESOURCE_STATES StateAfter;
  1784. } D3D12_RESOURCE_TRANSITION_BARRIER;
  1785. typedef struct D3D12_RESOURCE_ALIASING_BARRIER
  1786. {
  1787. ID3D12Resource* pResourceBefore;
  1788. ID3D12Resource* pResourceAfter;
  1789. } D3D12_RESOURCE_ALIASING_BARRIER;
  1790. typedef struct D3D12_RESOURCE_UAV_BARRIER
  1791. {
  1792. ID3D12Resource* pResource;
  1793. } D3D12_RESOURCE_UAV_BARRIER;
  1794. typedef enum D3D12_RESOURCE_BARRIER_FLAGS
  1795. {
  1796. D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0,
  1797. D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
  1798. D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2,
  1799. } D3D12_RESOURCE_BARRIER_FLAGS;
  1800. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS )" )
  1801. typedef struct D3D12_RESOURCE_BARRIER
  1802. {
  1803. D3D12_RESOURCE_BARRIER_TYPE Type;
  1804. D3D12_RESOURCE_BARRIER_FLAGS Flags;
  1805. union
  1806. {
  1807. D3D12_RESOURCE_TRANSITION_BARRIER Transition;
  1808. D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
  1809. D3D12_RESOURCE_UAV_BARRIER UAV;
  1810. };
  1811. } D3D12_RESOURCE_BARRIER;
  1812. typedef struct D3D12_SUBRESOURCE_FOOTPRINT
  1813. {
  1814. DXGI_FORMAT Format;
  1815. UINT Width;
  1816. UINT Height;
  1817. UINT Depth;
  1818. UINT RowPitch; // Must be a multiple of D3D12_TEXTURE_DATA_PITCH_ALIGNMENT
  1819. } D3D12_SUBRESOURCE_FOOTPRINT;
  1820. typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
  1821. {
  1822. UINT64 Offset; // Must be a multiple of D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT
  1823. D3D12_SUBRESOURCE_FOOTPRINT Footprint;
  1824. } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
  1825. typedef enum D3D12_TEXTURE_COPY_TYPE
  1826. {
  1827. D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
  1828. D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1,
  1829. } D3D12_TEXTURE_COPY_TYPE;
  1830. typedef struct D3D12_TEXTURE_COPY_LOCATION
  1831. {
  1832. ID3D12Resource* pResource;
  1833. D3D12_TEXTURE_COPY_TYPE Type;
  1834. union
  1835. {
  1836. D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
  1837. UINT SubresourceIndex;
  1838. };
  1839. } D3D12_TEXTURE_COPY_LOCATION;
  1840. typedef enum D3D12_RESOLVE_MODE
  1841. {
  1842. D3D12_RESOLVE_MODE_DECOMPRESS = 0,
  1843. D3D12_RESOLVE_MODE_MIN = 1,
  1844. D3D12_RESOLVE_MODE_MAX = 2,
  1845. D3D12_RESOLVE_MODE_AVERAGE = 3,
  1846. D3D12_RESOLVE_MODE_ENCODE_SAMPLER_FEEDBACK = 4,
  1847. D3D12_RESOLVE_MODE_DECODE_SAMPLER_FEEDBACK = 5
  1848. } D3D12_RESOLVE_MODE;
  1849. typedef struct D3D12_SAMPLE_POSITION
  1850. {
  1851. INT8 X;
  1852. INT8 Y;
  1853. } D3D12_SAMPLE_POSITION;
  1854. typedef struct D3D12_VIEW_INSTANCE_LOCATION
  1855. {
  1856. UINT ViewportArrayIndex;
  1857. UINT RenderTargetArrayIndex;
  1858. } D3D12_VIEW_INSTANCE_LOCATION;
  1859. typedef enum D3D12_VIEW_INSTANCING_FLAGS
  1860. {
  1861. D3D12_VIEW_INSTANCING_FLAG_NONE = 0x0,
  1862. D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING = 0x1,
  1863. } D3D12_VIEW_INSTANCING_FLAGS;
  1864. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_VIEW_INSTANCING_FLAGS )")
  1865. typedef struct D3D12_VIEW_INSTANCING_DESC
  1866. {
  1867. UINT ViewInstanceCount;
  1868. [annotation("_Field_size_full_(ViewInstanceCount)")] const D3D12_VIEW_INSTANCE_LOCATION* pViewInstanceLocations;
  1869. D3D12_VIEW_INSTANCING_FLAGS Flags;
  1870. } D3D12_VIEW_INSTANCING_DESC;
  1871. // D3D12 view descriptions
  1872. typedef enum D3D12_SHADER_COMPONENT_MAPPING
  1873. {
  1874. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
  1875. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
  1876. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
  1877. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
  1878. D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
  1879. D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5,
  1880. } D3D12_SHADER_COMPONENT_MAPPING;
  1881. cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7 ")
  1882. cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3 ")
  1883. cpp_quote( "#define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) ")
  1884. cpp_quote( "#define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \\")
  1885. cpp_quote( " (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \\")
  1886. cpp_quote( " (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \\")
  1887. cpp_quote( " (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \\")
  1888. cpp_quote( " D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))")
  1889. cpp_quote( "#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
  1890. cpp_quote( "#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) ")
  1891. typedef enum D3D12_BUFFER_SRV_FLAGS
  1892. {
  1893. D3D12_BUFFER_SRV_FLAG_NONE = 0,
  1894. D3D12_BUFFER_SRV_FLAG_RAW = 0x00000001, // allow device multi-component reads with DWORD addressing
  1895. } D3D12_BUFFER_SRV_FLAGS;
  1896. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS )" )
  1897. typedef struct D3D12_BUFFER_SRV
  1898. {
  1899. UINT64 FirstElement;
  1900. UINT NumElements;
  1901. UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
  1902. D3D12_BUFFER_SRV_FLAGS Flags;
  1903. } D3D12_BUFFER_SRV;
  1904. typedef struct D3D12_TEX1D_SRV
  1905. {
  1906. UINT MostDetailedMip;
  1907. UINT MipLevels;
  1908. FLOAT ResourceMinLODClamp;
  1909. } D3D12_TEX1D_SRV;
  1910. typedef struct D3D12_TEX1D_ARRAY_SRV
  1911. {
  1912. UINT MostDetailedMip;
  1913. UINT MipLevels;
  1914. UINT FirstArraySlice;
  1915. UINT ArraySize;
  1916. FLOAT ResourceMinLODClamp;
  1917. } D3D12_TEX1D_ARRAY_SRV;
  1918. typedef struct D3D12_TEX2D_SRV
  1919. {
  1920. UINT MostDetailedMip;
  1921. UINT MipLevels;
  1922. UINT PlaneSlice;
  1923. FLOAT ResourceMinLODClamp;
  1924. } D3D12_TEX2D_SRV;
  1925. typedef struct D3D12_TEX2D_ARRAY_SRV
  1926. {
  1927. UINT MostDetailedMip;
  1928. UINT MipLevels;
  1929. UINT FirstArraySlice;
  1930. UINT ArraySize;
  1931. UINT PlaneSlice;
  1932. FLOAT ResourceMinLODClamp;
  1933. } D3D12_TEX2D_ARRAY_SRV;
  1934. typedef struct D3D12_TEX3D_SRV
  1935. {
  1936. UINT MostDetailedMip;
  1937. UINT MipLevels;
  1938. FLOAT ResourceMinLODClamp;
  1939. } D3D12_TEX3D_SRV;
  1940. typedef struct D3D12_TEXCUBE_SRV
  1941. {
  1942. UINT MostDetailedMip;
  1943. UINT MipLevels;
  1944. FLOAT ResourceMinLODClamp;
  1945. } D3D12_TEXCUBE_SRV;
  1946. typedef struct D3D12_TEXCUBE_ARRAY_SRV
  1947. {
  1948. UINT MostDetailedMip;
  1949. UINT MipLevels;
  1950. UINT First2DArrayFace;
  1951. UINT NumCubes;
  1952. FLOAT ResourceMinLODClamp;
  1953. } D3D12_TEXCUBE_ARRAY_SRV;
  1954. typedef struct D3D12_TEX2DMS_SRV
  1955. {
  1956. // don't need to define anything specific for this view dimension
  1957. UINT UnusedField_NothingToDefine;
  1958. } D3D12_TEX2DMS_SRV;
  1959. typedef struct D3D12_TEX2DMS_ARRAY_SRV
  1960. {
  1961. UINT FirstArraySlice;
  1962. UINT ArraySize;
  1963. } D3D12_TEX2DMS_ARRAY_SRV;
  1964. typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV
  1965. {
  1966. D3D12_GPU_VIRTUAL_ADDRESS Location;
  1967. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV;
  1968. typedef enum D3D12_SRV_DIMENSION {
  1969. D3D12_SRV_DIMENSION_UNKNOWN = 0,
  1970. D3D12_SRV_DIMENSION_BUFFER = 1,
  1971. D3D12_SRV_DIMENSION_TEXTURE1D = 2,
  1972. D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
  1973. D3D12_SRV_DIMENSION_TEXTURE2D = 4,
  1974. D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
  1975. D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
  1976. D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
  1977. D3D12_SRV_DIMENSION_TEXTURE3D = 8,
  1978. D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
  1979. D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10,
  1980. D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11,
  1981. } D3D12_SRV_DIMENSION;
  1982. typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
  1983. {
  1984. DXGI_FORMAT Format;
  1985. D3D12_SRV_DIMENSION ViewDimension;
  1986. UINT Shader4ComponentMapping;
  1987. union
  1988. {
  1989. D3D12_BUFFER_SRV Buffer;
  1990. D3D12_TEX1D_SRV Texture1D;
  1991. D3D12_TEX1D_ARRAY_SRV Texture1DArray;
  1992. D3D12_TEX2D_SRV Texture2D;
  1993. D3D12_TEX2D_ARRAY_SRV Texture2DArray;
  1994. D3D12_TEX2DMS_SRV Texture2DMS;
  1995. D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
  1996. D3D12_TEX3D_SRV Texture3D;
  1997. D3D12_TEXCUBE_SRV TextureCube;
  1998. D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
  1999. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV RaytracingAccelerationStructure;
  2000. };
  2001. } D3D12_SHADER_RESOURCE_VIEW_DESC;
  2002. typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
  2003. {
  2004. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  2005. UINT SizeInBytes;
  2006. } D3D12_CONSTANT_BUFFER_VIEW_DESC;
  2007. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2008. //
  2009. // Sampler
  2010. //
  2011. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2012. typedef enum D3D12_FILTER
  2013. {
  2014. // Bits used in defining enumeration of valid filters:
  2015. // bits [1:0] - mip: 0 == point, 1 == linear, 2,3 unused
  2016. // bits [3:2] - mag: 0 == point, 1 == linear, 2,3 unused
  2017. // bits [5:4] - min: 0 == point, 1 == linear, 2,3 unused
  2018. // bit [6] - aniso
  2019. // bits [8:7] - reduction type:
  2020. // 0 == standard filtering
  2021. // 1 == comparison
  2022. // 2 == min
  2023. // 3 == max
  2024. // bit [31] - mono 1-bit (narrow-purpose filter) [no longer supported in D3D12]
  2025. D3D12_FILTER_MIN_MAG_MIP_POINT = 0x00000000,
  2026. D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x00000001,
  2027. D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000004,
  2028. D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x00000005,
  2029. D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x00000010,
  2030. D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000011,
  2031. D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x00000014,
  2032. D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x00000015,
  2033. D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000054,
  2034. D3D12_FILTER_ANISOTROPIC = 0x00000055,
  2035. D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x00000080,
  2036. D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x00000081,
  2037. D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000084,
  2038. D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x00000085,
  2039. D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x00000090,
  2040. D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000091,
  2041. D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x00000094,
  2042. D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x00000095,
  2043. D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000000d4,
  2044. D3D12_FILTER_COMPARISON_ANISOTROPIC = 0x000000d5,
  2045. D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x00000100,
  2046. D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000101,
  2047. D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000104,
  2048. D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000105,
  2049. D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000110,
  2050. D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000111,
  2051. D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000114,
  2052. D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x00000115,
  2053. D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x00000154,
  2054. D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x00000155,
  2055. D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x00000180,
  2056. D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x00000181,
  2057. D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x00000184,
  2058. D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x00000185,
  2059. D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x00000190,
  2060. D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x00000191,
  2061. D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x00000194,
  2062. D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x00000195,
  2063. D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT = 0x000001d4,
  2064. D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x000001d5
  2065. } D3D12_FILTER;
  2066. typedef enum D3D12_FILTER_TYPE
  2067. {
  2068. D3D12_FILTER_TYPE_POINT = 0,
  2069. D3D12_FILTER_TYPE_LINEAR = 1,
  2070. } D3D12_FILTER_TYPE;
  2071. typedef enum D3D12_FILTER_REDUCTION_TYPE
  2072. {
  2073. D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
  2074. D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
  2075. D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
  2076. D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3,
  2077. } D3D12_FILTER_REDUCTION_TYPE;
  2078. const UINT D3D12_FILTER_REDUCTION_TYPE_MASK = 0x00000003;
  2079. const UINT D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7;
  2080. const UINT D3D12_FILTER_TYPE_MASK = 0x00000003;
  2081. const UINT D3D12_MIN_FILTER_SHIFT = 4;
  2082. const UINT D3D12_MAG_FILTER_SHIFT = 2;
  2083. const UINT D3D12_MIP_FILTER_SHIFT = 0;
  2084. const UINT D3D12_ANISOTROPIC_FILTERING_BIT = 0x00000040;
  2085. // encode enum entry for most filters except anisotropic filtering
  2086. cpp_quote( "#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \\" )
  2087. cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
  2088. cpp_quote( " ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \\" )
  2089. cpp_quote( " ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \\" )
  2090. cpp_quote( " ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \\" )
  2091. cpp_quote( " ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) " )
  2092. // encode enum entry for anisotropic filtering (with or without comparison filtering)
  2093. cpp_quote( "#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \\" )
  2094. cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
  2095. cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
  2096. cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
  2097. cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
  2098. cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
  2099. cpp_quote( " reduction ) ) ) " )
  2100. cpp_quote( "#define D3D12_ENCODE_MIN_MAG_ANISOTROPIC_MIP_POINT_FILTER( reduction ) \\" )
  2101. cpp_quote( " ( ( D3D12_FILTER ) ( \\" )
  2102. cpp_quote( " D3D12_ANISOTROPIC_FILTERING_BIT | \\" )
  2103. cpp_quote( " D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \\" )
  2104. cpp_quote( " D3D12_FILTER_TYPE_LINEAR, \\" )
  2105. cpp_quote( " D3D12_FILTER_TYPE_POINT, \\" )
  2106. cpp_quote( " reduction ) ) ) " )
  2107. cpp_quote( "#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \\" )
  2108. cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
  2109. cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
  2110. cpp_quote( "#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \\" )
  2111. cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
  2112. cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
  2113. cpp_quote( "#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \\" )
  2114. cpp_quote( " ( ( D3D12_FILTER_TYPE ) \\" )
  2115. cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) " )
  2116. cpp_quote( "#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \\" )
  2117. cpp_quote( " ( ( D3D12_FILTER_REDUCTION_TYPE ) \\" )
  2118. cpp_quote( " ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) " )
  2119. cpp_quote( "#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \\" )
  2120. cpp_quote( " ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) " )
  2121. cpp_quote( "#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \\" )
  2122. cpp_quote( " ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \\" )
  2123. cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \\" )
  2124. cpp_quote( " ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) ) " )
  2125. typedef enum D3D12_TEXTURE_ADDRESS_MODE
  2126. {
  2127. D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
  2128. D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
  2129. D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
  2130. D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
  2131. D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
  2132. } D3D12_TEXTURE_ADDRESS_MODE;
  2133. typedef struct D3D12_SAMPLER_DESC
  2134. {
  2135. D3D12_FILTER Filter;
  2136. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  2137. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  2138. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  2139. FLOAT MipLODBias;
  2140. UINT MaxAnisotropy;
  2141. D3D12_COMPARISON_FUNC ComparisonFunc;
  2142. FLOAT BorderColor[4]; // RGBA
  2143. FLOAT MinLOD;
  2144. FLOAT MaxLOD;
  2145. } D3D12_SAMPLER_DESC;
  2146. typedef enum D3D12_SAMPLER_FLAGS
  2147. {
  2148. D3D12_SAMPLER_FLAG_NONE = 0x0,
  2149. D3D12_SAMPLER_FLAG_UINT_BORDER_COLOR = 0x01,
  2150. D3D12_SAMPLER_FLAG_NON_NORMALIZED_COORDINATES = 0x02,
  2151. } D3D12_SAMPLER_FLAGS;
  2152. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SAMPLER_FLAGS )")
  2153. typedef struct D3D12_SAMPLER_DESC2
  2154. {
  2155. D3D12_FILTER Filter;
  2156. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  2157. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  2158. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  2159. FLOAT MipLODBias;
  2160. UINT MaxAnisotropy;
  2161. D3D12_COMPARISON_FUNC ComparisonFunc;
  2162. union
  2163. {
  2164. FLOAT FloatBorderColor[4]; // RGBA
  2165. UINT UintBorderColor[4];
  2166. };
  2167. FLOAT MinLOD;
  2168. FLOAT MaxLOD;
  2169. D3D12_SAMPLER_FLAGS Flags;
  2170. } D3D12_SAMPLER_DESC2;
  2171. typedef enum D3D12_BUFFER_UAV_FLAGS
  2172. {
  2173. D3D12_BUFFER_UAV_FLAG_NONE = 0,
  2174. D3D12_BUFFER_UAV_FLAG_RAW = 0x00000001,
  2175. } D3D12_BUFFER_UAV_FLAGS;
  2176. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS )" )
  2177. typedef struct D3D12_BUFFER_UAV
  2178. {
  2179. UINT64 FirstElement;
  2180. UINT NumElements;
  2181. UINT StructureByteStride; // if nonzero, format must be DXGI_FORMAT_UNKNOWN
  2182. UINT64 CounterOffsetInBytes;
  2183. D3D12_BUFFER_UAV_FLAGS Flags;
  2184. } D3D12_BUFFER_UAV;
  2185. typedef struct D3D12_TEX1D_UAV
  2186. {
  2187. UINT MipSlice;
  2188. } D3D12_TEX1D_UAV;
  2189. typedef struct D3D12_TEX1D_ARRAY_UAV
  2190. {
  2191. UINT MipSlice;
  2192. UINT FirstArraySlice;
  2193. UINT ArraySize;
  2194. } D3D12_TEX1D_ARRAY_UAV;
  2195. typedef struct D3D12_TEX2D_UAV
  2196. {
  2197. UINT MipSlice;
  2198. UINT PlaneSlice;
  2199. } D3D12_TEX2D_UAV;
  2200. typedef struct D3D12_TEX2D_ARRAY_UAV
  2201. {
  2202. UINT MipSlice;
  2203. UINT FirstArraySlice;
  2204. UINT ArraySize;
  2205. UINT PlaneSlice;
  2206. } D3D12_TEX2D_ARRAY_UAV;
  2207. typedef struct D3D12_TEX2DMS_UAV
  2208. {
  2209. // don't need to define anything specific for this view dimension
  2210. UINT UnusedField_NothingToDefine;
  2211. } D3D12_TEX2DMS_UAV;
  2212. typedef struct D3D12_TEX2DMS_ARRAY_UAV
  2213. {
  2214. UINT FirstArraySlice;
  2215. UINT ArraySize;
  2216. } D3D12_TEX2DMS_ARRAY_UAV;
  2217. typedef struct D3D12_TEX3D_UAV
  2218. {
  2219. UINT MipSlice;
  2220. UINT FirstWSlice;
  2221. UINT WSize;
  2222. } D3D12_TEX3D_UAV;
  2223. typedef enum D3D12_UAV_DIMENSION
  2224. {
  2225. D3D12_UAV_DIMENSION_UNKNOWN = 0,
  2226. D3D12_UAV_DIMENSION_BUFFER = 1,
  2227. D3D12_UAV_DIMENSION_TEXTURE1D = 2,
  2228. D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
  2229. D3D12_UAV_DIMENSION_TEXTURE2D = 4,
  2230. D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
  2231. D3D12_UAV_DIMENSION_TEXTURE2DMS = 6,
  2232. D3D12_UAV_DIMENSION_TEXTURE2DMSARRAY = 7,
  2233. D3D12_UAV_DIMENSION_TEXTURE3D = 8,
  2234. } D3D12_UAV_DIMENSION;
  2235. typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
  2236. {
  2237. DXGI_FORMAT Format;
  2238. D3D12_UAV_DIMENSION ViewDimension;
  2239. union
  2240. {
  2241. D3D12_BUFFER_UAV Buffer;
  2242. D3D12_TEX1D_UAV Texture1D;
  2243. D3D12_TEX1D_ARRAY_UAV Texture1DArray;
  2244. D3D12_TEX2D_UAV Texture2D;
  2245. D3D12_TEX2D_ARRAY_UAV Texture2DArray;
  2246. D3D12_TEX2DMS_UAV Texture2DMS;
  2247. D3D12_TEX2DMS_ARRAY_UAV Texture2DMSArray;
  2248. D3D12_TEX3D_UAV Texture3D;
  2249. };
  2250. } D3D12_UNORDERED_ACCESS_VIEW_DESC;
  2251. typedef struct D3D12_BUFFER_RTV
  2252. {
  2253. UINT64 FirstElement;
  2254. UINT NumElements;
  2255. } D3D12_BUFFER_RTV;
  2256. typedef struct D3D12_TEX1D_RTV
  2257. {
  2258. UINT MipSlice;
  2259. } D3D12_TEX1D_RTV;
  2260. typedef struct D3D12_TEX1D_ARRAY_RTV
  2261. {
  2262. UINT MipSlice;
  2263. UINT FirstArraySlice;
  2264. UINT ArraySize;
  2265. } D3D12_TEX1D_ARRAY_RTV;
  2266. typedef struct D3D12_TEX2D_RTV
  2267. {
  2268. UINT MipSlice;
  2269. UINT PlaneSlice;
  2270. } D3D12_TEX2D_RTV;
  2271. typedef struct D3D12_TEX2DMS_RTV
  2272. {
  2273. UINT UnusedField_NothingToDefine;
  2274. } D3D12_TEX2DMS_RTV;
  2275. typedef struct D3D12_TEX2D_ARRAY_RTV
  2276. {
  2277. UINT MipSlice;
  2278. UINT FirstArraySlice;
  2279. UINT ArraySize;
  2280. UINT PlaneSlice;
  2281. } D3D12_TEX2D_ARRAY_RTV;
  2282. typedef struct D3D12_TEX2DMS_ARRAY_RTV
  2283. {
  2284. UINT FirstArraySlice;
  2285. UINT ArraySize;
  2286. } D3D12_TEX2DMS_ARRAY_RTV;
  2287. typedef struct D3D12_TEX3D_RTV
  2288. {
  2289. UINT MipSlice;
  2290. UINT FirstWSlice;
  2291. UINT WSize;
  2292. } D3D12_TEX3D_RTV;
  2293. typedef enum D3D12_RTV_DIMENSION
  2294. {
  2295. D3D12_RTV_DIMENSION_UNKNOWN = 0,
  2296. D3D12_RTV_DIMENSION_BUFFER = 1,
  2297. D3D12_RTV_DIMENSION_TEXTURE1D = 2,
  2298. D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
  2299. D3D12_RTV_DIMENSION_TEXTURE2D = 4,
  2300. D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
  2301. D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
  2302. D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
  2303. D3D12_RTV_DIMENSION_TEXTURE3D = 8,
  2304. } D3D12_RTV_DIMENSION;
  2305. typedef struct D3D12_RENDER_TARGET_VIEW_DESC
  2306. {
  2307. DXGI_FORMAT Format;
  2308. D3D12_RTV_DIMENSION ViewDimension;
  2309. union
  2310. {
  2311. D3D12_BUFFER_RTV Buffer;
  2312. D3D12_TEX1D_RTV Texture1D;
  2313. D3D12_TEX1D_ARRAY_RTV Texture1DArray;
  2314. D3D12_TEX2D_RTV Texture2D;
  2315. D3D12_TEX2D_ARRAY_RTV Texture2DArray;
  2316. D3D12_TEX2DMS_RTV Texture2DMS;
  2317. D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
  2318. D3D12_TEX3D_RTV Texture3D;
  2319. };
  2320. } D3D12_RENDER_TARGET_VIEW_DESC;
  2321. typedef struct D3D12_TEX1D_DSV
  2322. {
  2323. UINT MipSlice;
  2324. } D3D12_TEX1D_DSV;
  2325. typedef struct D3D12_TEX1D_ARRAY_DSV
  2326. {
  2327. UINT MipSlice;
  2328. UINT FirstArraySlice;
  2329. UINT ArraySize;
  2330. } D3D12_TEX1D_ARRAY_DSV;
  2331. typedef struct D3D12_TEX2D_DSV
  2332. {
  2333. UINT MipSlice;
  2334. } D3D12_TEX2D_DSV;
  2335. typedef struct D3D12_TEX2D_ARRAY_DSV
  2336. {
  2337. UINT MipSlice;
  2338. UINT FirstArraySlice;
  2339. UINT ArraySize;
  2340. } D3D12_TEX2D_ARRAY_DSV;
  2341. typedef struct D3D12_TEX2DMS_DSV
  2342. {
  2343. UINT UnusedField_NothingToDefine;
  2344. } D3D12_TEX2DMS_DSV;
  2345. typedef struct D3D12_TEX2DMS_ARRAY_DSV
  2346. {
  2347. UINT FirstArraySlice;
  2348. UINT ArraySize;
  2349. } D3D12_TEX2DMS_ARRAY_DSV;
  2350. typedef enum D3D12_DSV_FLAGS
  2351. {
  2352. D3D12_DSV_FLAG_NONE = 0x0,
  2353. D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
  2354. D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2,
  2355. } D3D12_DSV_FLAGS;
  2356. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS )" )
  2357. typedef enum D3D12_DSV_DIMENSION
  2358. {
  2359. D3D12_DSV_DIMENSION_UNKNOWN = 0,
  2360. D3D12_DSV_DIMENSION_TEXTURE1D = 1,
  2361. D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
  2362. D3D12_DSV_DIMENSION_TEXTURE2D = 3,
  2363. D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
  2364. D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
  2365. D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6,
  2366. } D3D12_DSV_DIMENSION;
  2367. typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
  2368. {
  2369. DXGI_FORMAT Format;
  2370. D3D12_DSV_DIMENSION ViewDimension;
  2371. D3D12_DSV_FLAGS Flags;
  2372. union
  2373. {
  2374. D3D12_TEX1D_DSV Texture1D;
  2375. D3D12_TEX1D_ARRAY_DSV Texture1DArray;
  2376. D3D12_TEX2D_DSV Texture2D;
  2377. D3D12_TEX2D_ARRAY_DSV Texture2DArray;
  2378. D3D12_TEX2DMS_DSV Texture2DMS;
  2379. D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
  2380. };
  2381. } D3D12_DEPTH_STENCIL_VIEW_DESC;
  2382. typedef enum D3D12_CLEAR_FLAGS
  2383. {
  2384. // Intentionally no flag for NONE
  2385. D3D12_CLEAR_FLAG_DEPTH = 0x01,
  2386. D3D12_CLEAR_FLAG_STENCIL = 0x02,
  2387. } D3D12_CLEAR_FLAGS;
  2388. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS )" )
  2389. typedef enum D3D12_FENCE_FLAGS
  2390. {
  2391. D3D12_FENCE_FLAG_NONE = 0x0,
  2392. D3D12_FENCE_FLAG_SHARED = 0x1,
  2393. D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2,
  2394. D3D12_FENCE_FLAG_NON_MONITORED = 0x4,
  2395. } D3D12_FENCE_FLAGS;
  2396. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS )" )
  2397. typedef enum D3D12_DESCRIPTOR_HEAP_TYPE
  2398. {
  2399. D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV,
  2400. D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER,
  2401. D3D12_DESCRIPTOR_HEAP_TYPE_RTV,
  2402. D3D12_DESCRIPTOR_HEAP_TYPE_DSV,
  2403. D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES
  2404. } D3D12_DESCRIPTOR_HEAP_TYPE;
  2405. typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS
  2406. {
  2407. D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0,
  2408. D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1,
  2409. } D3D12_DESCRIPTOR_HEAP_FLAGS;
  2410. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS )" )
  2411. typedef struct D3D12_DESCRIPTOR_HEAP_DESC
  2412. {
  2413. D3D12_DESCRIPTOR_HEAP_TYPE Type;
  2414. UINT NumDescriptors;
  2415. D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
  2416. UINT NodeMask;
  2417. } D3D12_DESCRIPTOR_HEAP_DESC;
  2418. typedef enum D3D12_DESCRIPTOR_RANGE_TYPE
  2419. {
  2420. D3D12_DESCRIPTOR_RANGE_TYPE_SRV,
  2421. D3D12_DESCRIPTOR_RANGE_TYPE_UAV,
  2422. D3D12_DESCRIPTOR_RANGE_TYPE_CBV,
  2423. D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER
  2424. } D3D12_DESCRIPTOR_RANGE_TYPE;
  2425. typedef struct D3D12_DESCRIPTOR_RANGE
  2426. {
  2427. D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
  2428. UINT NumDescriptors;
  2429. UINT BaseShaderRegister;
  2430. UINT RegisterSpace;
  2431. UINT OffsetInDescriptorsFromTableStart;
  2432. } D3D12_DESCRIPTOR_RANGE;
  2433. typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
  2434. {
  2435. UINT NumDescriptorRanges;
  2436. [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE* pDescriptorRanges;
  2437. } D3D12_ROOT_DESCRIPTOR_TABLE;
  2438. typedef struct D3D12_ROOT_CONSTANTS
  2439. {
  2440. UINT ShaderRegister;
  2441. UINT RegisterSpace;
  2442. UINT Num32BitValues;
  2443. } D3D12_ROOT_CONSTANTS;
  2444. typedef struct D3D12_ROOT_DESCRIPTOR
  2445. {
  2446. UINT ShaderRegister;
  2447. UINT RegisterSpace;
  2448. } D3D12_ROOT_DESCRIPTOR;
  2449. typedef enum D3D12_SHADER_VISIBILITY
  2450. {
  2451. D3D12_SHADER_VISIBILITY_ALL = 0,
  2452. D3D12_SHADER_VISIBILITY_VERTEX = 1,
  2453. D3D12_SHADER_VISIBILITY_HULL = 2,
  2454. D3D12_SHADER_VISIBILITY_DOMAIN = 3,
  2455. D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
  2456. D3D12_SHADER_VISIBILITY_PIXEL = 5,
  2457. D3D12_SHADER_VISIBILITY_AMPLIFICATION = 6,
  2458. D3D12_SHADER_VISIBILITY_MESH = 7,
  2459. } D3D12_SHADER_VISIBILITY;
  2460. typedef enum D3D12_ROOT_PARAMETER_TYPE
  2461. {
  2462. D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE,
  2463. D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS,
  2464. D3D12_ROOT_PARAMETER_TYPE_CBV,
  2465. D3D12_ROOT_PARAMETER_TYPE_SRV,
  2466. D3D12_ROOT_PARAMETER_TYPE_UAV
  2467. } D3D12_ROOT_PARAMETER_TYPE;
  2468. typedef struct D3D12_ROOT_PARAMETER
  2469. {
  2470. D3D12_ROOT_PARAMETER_TYPE ParameterType;
  2471. union
  2472. {
  2473. D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
  2474. D3D12_ROOT_CONSTANTS Constants;
  2475. D3D12_ROOT_DESCRIPTOR Descriptor;
  2476. };
  2477. D3D12_SHADER_VISIBILITY ShaderVisibility;
  2478. } D3D12_ROOT_PARAMETER;
  2479. typedef enum D3D12_ROOT_SIGNATURE_FLAGS
  2480. {
  2481. D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0,
  2482. D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
  2483. D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
  2484. D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
  2485. D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
  2486. D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
  2487. D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
  2488. D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40,
  2489. D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE = 0x80,
  2490. D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100,
  2491. D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200,
  2492. D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400,
  2493. D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800,
  2494. } D3D12_ROOT_SIGNATURE_FLAGS;
  2495. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS )" )
  2496. typedef enum D3D12_STATIC_BORDER_COLOR
  2497. {
  2498. D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK, // 0.0f,0.0f,0.0f,0.0f
  2499. D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK, // 0.0f,0.0f,0.0f,1.0f
  2500. D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE, // 1.0f,1.0f,1.0f,1.0f
  2501. D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT, // 0,0,0,1
  2502. D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT, // 1,1,1,1
  2503. } D3D12_STATIC_BORDER_COLOR;
  2504. typedef struct D3D12_STATIC_SAMPLER_DESC
  2505. {
  2506. D3D12_FILTER Filter;
  2507. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  2508. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  2509. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  2510. FLOAT MipLODBias;
  2511. UINT MaxAnisotropy;
  2512. D3D12_COMPARISON_FUNC ComparisonFunc;
  2513. D3D12_STATIC_BORDER_COLOR BorderColor;
  2514. FLOAT MinLOD;
  2515. FLOAT MaxLOD;
  2516. UINT ShaderRegister;
  2517. UINT RegisterSpace;
  2518. D3D12_SHADER_VISIBILITY ShaderVisibility;
  2519. } D3D12_STATIC_SAMPLER_DESC;
  2520. typedef struct D3D12_STATIC_SAMPLER_DESC1
  2521. {
  2522. D3D12_FILTER Filter;
  2523. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  2524. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  2525. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  2526. FLOAT MipLODBias;
  2527. UINT MaxAnisotropy;
  2528. D3D12_COMPARISON_FUNC ComparisonFunc;
  2529. D3D12_STATIC_BORDER_COLOR BorderColor;
  2530. FLOAT MinLOD;
  2531. FLOAT MaxLOD;
  2532. UINT ShaderRegister;
  2533. UINT RegisterSpace;
  2534. D3D12_SHADER_VISIBILITY ShaderVisibility;
  2535. D3D12_SAMPLER_FLAGS Flags;
  2536. } D3D12_STATIC_SAMPLER_DESC1;
  2537. typedef struct D3D12_ROOT_SIGNATURE_DESC
  2538. {
  2539. UINT NumParameters;
  2540. [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER* pParameters;
  2541. UINT NumStaticSamplers;
  2542. [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
  2543. D3D12_ROOT_SIGNATURE_FLAGS Flags;
  2544. } D3D12_ROOT_SIGNATURE_DESC;
  2545. typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
  2546. {
  2547. D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
  2548. D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
  2549. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
  2550. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
  2551. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
  2552. D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000,
  2553. } D3D12_DESCRIPTOR_RANGE_FLAGS;
  2554. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS )")
  2555. typedef struct D3D12_DESCRIPTOR_RANGE1
  2556. {
  2557. D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
  2558. UINT NumDescriptors;
  2559. UINT BaseShaderRegister;
  2560. UINT RegisterSpace;
  2561. D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
  2562. UINT OffsetInDescriptorsFromTableStart;
  2563. } D3D12_DESCRIPTOR_RANGE1;
  2564. typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
  2565. {
  2566. UINT NumDescriptorRanges;
  2567. [annotation("_Field_size_full_(NumDescriptorRanges)")] const D3D12_DESCRIPTOR_RANGE1* pDescriptorRanges;
  2568. } D3D12_ROOT_DESCRIPTOR_TABLE1;
  2569. typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
  2570. {
  2571. D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
  2572. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
  2573. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
  2574. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
  2575. } D3D12_ROOT_DESCRIPTOR_FLAGS;
  2576. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS )")
  2577. typedef struct D3D12_ROOT_DESCRIPTOR1
  2578. {
  2579. UINT ShaderRegister;
  2580. UINT RegisterSpace;
  2581. D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
  2582. } D3D12_ROOT_DESCRIPTOR1;
  2583. typedef struct D3D12_ROOT_PARAMETER1
  2584. {
  2585. D3D12_ROOT_PARAMETER_TYPE ParameterType;
  2586. union
  2587. {
  2588. D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
  2589. D3D12_ROOT_CONSTANTS Constants;
  2590. D3D12_ROOT_DESCRIPTOR1 Descriptor;
  2591. };
  2592. D3D12_SHADER_VISIBILITY ShaderVisibility;
  2593. } D3D12_ROOT_PARAMETER1;
  2594. typedef struct D3D12_ROOT_SIGNATURE_DESC1
  2595. {
  2596. UINT NumParameters;
  2597. [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
  2598. UINT NumStaticSamplers;
  2599. [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC* pStaticSamplers;
  2600. D3D12_ROOT_SIGNATURE_FLAGS Flags;
  2601. } D3D12_ROOT_SIGNATURE_DESC1;
  2602. typedef struct D3D12_ROOT_SIGNATURE_DESC2
  2603. {
  2604. UINT NumParameters;
  2605. [annotation("_Field_size_full_(NumParameters)")] const D3D12_ROOT_PARAMETER1* pParameters;
  2606. UINT NumStaticSamplers;
  2607. [annotation("_Field_size_full_(NumStaticSamplers)")] const D3D12_STATIC_SAMPLER_DESC1* pStaticSamplers;
  2608. D3D12_ROOT_SIGNATURE_FLAGS Flags;
  2609. } D3D12_ROOT_SIGNATURE_DESC2;
  2610. typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
  2611. {
  2612. D3D_ROOT_SIGNATURE_VERSION Version;
  2613. union
  2614. {
  2615. D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
  2616. D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
  2617. D3D12_ROOT_SIGNATURE_DESC2 Desc_1_2;
  2618. };
  2619. } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
  2620. [ uuid( 34AB647B-3CC8-46AC-841B-C0965645C046 ), object, local, pointer_default( unique ) ]
  2621. interface ID3D12RootSignatureDeserializer
  2622. : IUnknown
  2623. {
  2624. const D3D12_ROOT_SIGNATURE_DESC * GetRootSignatureDesc();
  2625. };
  2626. [ uuid( 7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0 ), object, local, pointer_default( unique ) ]
  2627. interface ID3D12VersionedRootSignatureDeserializer
  2628. : IUnknown
  2629. {
  2630. HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, [annotation("_Out_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC** ppDesc);
  2631. const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc();
  2632. };
  2633. cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(")
  2634. cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
  2635. cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
  2636. cpp_quote( " _Out_ ID3DBlob** ppBlob," )
  2637. cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
  2638. cpp_quote( "" )
  2639. cpp_quote( "HRESULT WINAPI D3D12SerializeRootSignature(")
  2640. cpp_quote( " _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature," )
  2641. cpp_quote( " _In_ D3D_ROOT_SIGNATURE_VERSION Version," )
  2642. cpp_quote( " _Out_ ID3DBlob** ppBlob," )
  2643. cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
  2644. cpp_quote( "" )
  2645. cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(")
  2646. cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
  2647. cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
  2648. cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
  2649. cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
  2650. cpp_quote( "" )
  2651. cpp_quote( "HRESULT WINAPI D3D12CreateRootSignatureDeserializer(")
  2652. cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
  2653. cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
  2654. cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
  2655. cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
  2656. cpp_quote( "" )
  2657. cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(" )
  2658. cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
  2659. cpp_quote( " _Out_ ID3DBlob** ppBlob," )
  2660. cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
  2661. cpp_quote( "" )
  2662. cpp_quote( "HRESULT WINAPI D3D12SerializeVersionedRootSignature(" )
  2663. cpp_quote( " _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature," )
  2664. cpp_quote( " _Out_ ID3DBlob** ppBlob," )
  2665. cpp_quote( " _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);" )
  2666. cpp_quote( "" )
  2667. cpp_quote( "typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(" )
  2668. cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
  2669. cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
  2670. cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
  2671. cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
  2672. cpp_quote( "" )
  2673. cpp_quote( "HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(")
  2674. cpp_quote( " _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData," )
  2675. cpp_quote( " _In_ SIZE_T SrcDataSizeInBytes," )
  2676. cpp_quote( " _In_ REFIID pRootSignatureDeserializerInterface," )
  2677. cpp_quote( " _Out_ void** ppRootSignatureDeserializer);" )
  2678. cpp_quote( "" )
  2679. cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER_FROM_SUBOBJECT_IN_LIBRARY)(")
  2680. cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
  2681. cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
  2682. cpp_quote(" _In_ LPCWSTR RootSignatureSubobjectName,")
  2683. cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
  2684. cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
  2685. cpp_quote("")
  2686. cpp_quote("HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(")
  2687. cpp_quote(" _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,")
  2688. cpp_quote(" _In_ SIZE_T SrcDataSizeInBytes,")
  2689. cpp_quote(" _In_opt_ LPCWSTR RootSignatureSubobjectName,")
  2690. cpp_quote(" _In_ REFIID pRootSignatureDeserializerInterface,")
  2691. cpp_quote(" _Out_ void** ppRootSignatureDeserializer);")
  2692. cpp_quote("")
  2693. typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
  2694. {
  2695. SIZE_T ptr;
  2696. } D3D12_CPU_DESCRIPTOR_HANDLE;
  2697. typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
  2698. {
  2699. UINT64 ptr;
  2700. } D3D12_GPU_DESCRIPTOR_HANDLE;
  2701. cpp_quote( "// If rects are supplied in D3D12_DISCARD_REGION, below, the resource " )
  2702. cpp_quote( "// must have 2D subresources with all specified subresources the same dimension." )
  2703. typedef struct D3D12_DISCARD_REGION
  2704. {
  2705. UINT NumRects;
  2706. [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects;
  2707. UINT FirstSubresource;
  2708. UINT NumSubresources;
  2709. } D3D12_DISCARD_REGION;
  2710. typedef enum D3D12_QUERY_HEAP_TYPE
  2711. {
  2712. D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
  2713. D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
  2714. D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
  2715. D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
  2716. D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS = 4,
  2717. D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP = 5,
  2718. D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS1 = 7,
  2719. } D3D12_QUERY_HEAP_TYPE;
  2720. typedef struct D3D12_QUERY_HEAP_DESC
  2721. {
  2722. D3D12_QUERY_HEAP_TYPE Type;
  2723. UINT Count;
  2724. UINT NodeMask;
  2725. } D3D12_QUERY_HEAP_DESC;
  2726. typedef enum D3D12_QUERY_TYPE
  2727. {
  2728. D3D12_QUERY_TYPE_OCCLUSION = 0,
  2729. D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
  2730. D3D12_QUERY_TYPE_TIMESTAMP = 2,
  2731. D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
  2732. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
  2733. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
  2734. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
  2735. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7,
  2736. D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8,
  2737. D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10,
  2738. } D3D12_QUERY_TYPE;
  2739. typedef enum D3D12_PREDICATION_OP
  2740. {
  2741. D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
  2742. D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1,
  2743. } D3D12_PREDICATION_OP;
  2744. typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
  2745. {
  2746. UINT64 IAVertices;
  2747. UINT64 IAPrimitives;
  2748. UINT64 VSInvocations;
  2749. UINT64 GSInvocations;
  2750. UINT64 GSPrimitives;
  2751. UINT64 CInvocations;
  2752. UINT64 CPrimitives;
  2753. UINT64 PSInvocations;
  2754. UINT64 HSInvocations;
  2755. UINT64 DSInvocations;
  2756. UINT64 CSInvocations;
  2757. } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
  2758. typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1
  2759. {
  2760. UINT64 IAVertices;
  2761. UINT64 IAPrimitives;
  2762. UINT64 VSInvocations;
  2763. UINT64 GSInvocations;
  2764. UINT64 GSPrimitives;
  2765. UINT64 CInvocations;
  2766. UINT64 CPrimitives;
  2767. UINT64 PSInvocations;
  2768. UINT64 HSInvocations;
  2769. UINT64 DSInvocations;
  2770. UINT64 CSInvocations;
  2771. UINT64 ASInvocations;
  2772. UINT64 MSInvocations;
  2773. UINT64 MSPrimitives;
  2774. } D3D12_QUERY_DATA_PIPELINE_STATISTICS1;
  2775. typedef struct D3D12_QUERY_DATA_SO_STATISTICS
  2776. {
  2777. UINT64 NumPrimitivesWritten;
  2778. UINT64 PrimitivesStorageNeeded;
  2779. } D3D12_QUERY_DATA_SO_STATISTICS;
  2780. typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
  2781. {
  2782. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  2783. UINT64 SizeInBytes;
  2784. D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
  2785. } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
  2786. typedef struct D3D12_DRAW_ARGUMENTS
  2787. {
  2788. UINT VertexCountPerInstance;
  2789. UINT InstanceCount;
  2790. UINT StartVertexLocation;
  2791. UINT StartInstanceLocation;
  2792. } D3D12_DRAW_ARGUMENTS;
  2793. typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
  2794. {
  2795. UINT IndexCountPerInstance;
  2796. UINT InstanceCount;
  2797. UINT StartIndexLocation;
  2798. INT BaseVertexLocation;
  2799. UINT StartInstanceLocation;
  2800. } D3D12_DRAW_INDEXED_ARGUMENTS;
  2801. typedef struct D3D12_DISPATCH_ARGUMENTS
  2802. {
  2803. UINT ThreadGroupCountX;
  2804. UINT ThreadGroupCountY;
  2805. UINT ThreadGroupCountZ;
  2806. } D3D12_DISPATCH_ARGUMENTS;
  2807. typedef struct D3D12_VERTEX_BUFFER_VIEW
  2808. {
  2809. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  2810. UINT SizeInBytes;
  2811. UINT StrideInBytes;
  2812. } D3D12_VERTEX_BUFFER_VIEW;
  2813. typedef struct D3D12_INDEX_BUFFER_VIEW
  2814. {
  2815. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  2816. UINT SizeInBytes;
  2817. DXGI_FORMAT Format;
  2818. } D3D12_INDEX_BUFFER_VIEW;
  2819. typedef enum D3D12_INDIRECT_ARGUMENT_TYPE
  2820. {
  2821. D3D12_INDIRECT_ARGUMENT_TYPE_DRAW,
  2822. D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED,
  2823. D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH,
  2824. D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW,
  2825. D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW,
  2826. D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT,
  2827. D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW,
  2828. D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW,
  2829. D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW,
  2830. D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_RAYS,
  2831. D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH,
  2832. D3D12_INDIRECT_ARGUMENT_TYPE_INCREMENTING_CONSTANT,
  2833. } D3D12_INDIRECT_ARGUMENT_TYPE;
  2834. typedef struct D3D12_INDIRECT_ARGUMENT_DESC
  2835. {
  2836. D3D12_INDIRECT_ARGUMENT_TYPE Type;
  2837. union
  2838. {
  2839. struct
  2840. {
  2841. UINT Slot;
  2842. } VertexBuffer;
  2843. struct
  2844. {
  2845. UINT RootParameterIndex;
  2846. UINT DestOffsetIn32BitValues;
  2847. UINT Num32BitValuesToSet;
  2848. } Constant;
  2849. struct
  2850. {
  2851. UINT RootParameterIndex;
  2852. } ConstantBufferView;
  2853. struct
  2854. {
  2855. UINT RootParameterIndex;
  2856. } ShaderResourceView;
  2857. struct
  2858. {
  2859. UINT RootParameterIndex;
  2860. } UnorderedAccessView;
  2861. // Tier 1.1 support
  2862. struct
  2863. {
  2864. UINT RootParameterIndex;
  2865. UINT DestOffsetIn32BitValues;
  2866. } IncrementingConstant;
  2867. };
  2868. } D3D12_INDIRECT_ARGUMENT_DESC;
  2869. typedef struct D3D12_COMMAND_SIGNATURE_DESC
  2870. {
  2871. // The number of bytes between each drawing structure
  2872. UINT ByteStride;
  2873. UINT NumArgumentDescs;
  2874. [annotation("_Field_size_full_(NumArgumentDescs)")] const D3D12_INDIRECT_ARGUMENT_DESC* pArgumentDescs;
  2875. UINT NodeMask;
  2876. } D3D12_COMMAND_SIGNATURE_DESC;
  2877. interface ID3D12Device;
  2878. [ uuid( c4fec28f-7966-4e95-9f94-f431cb56c3b8 ), object, local, pointer_default( unique ) ]
  2879. interface ID3D12Object
  2880. : IUnknown
  2881. {
  2882. HRESULT GetPrivateData(
  2883. [annotation("_In_")] REFGUID guid,
  2884. [annotation("_Inout_")] UINT* pDataSize,
  2885. [annotation("_Out_writes_bytes_opt_( *pDataSize )")] void* pData );
  2886. HRESULT SetPrivateData(
  2887. [annotation("_In_")] REFGUID guid,
  2888. [annotation("_In_")] UINT DataSize,
  2889. [annotation("_In_reads_bytes_opt_( DataSize )")] const void* pData );
  2890. HRESULT SetPrivateDataInterface(
  2891. [annotation("_In_")] REFGUID guid,
  2892. [annotation("_In_opt_")] const IUnknown* pData );
  2893. HRESULT SetName(
  2894. [annotation("_In_z_")] LPCWSTR Name );
  2895. }
  2896. [ uuid( 905db94b-a00c-4140-9df5-2b64ca9ea357 ), object, local, pointer_default( unique ) ]
  2897. interface ID3D12DeviceChild
  2898. : ID3D12Object
  2899. {
  2900. HRESULT GetDevice(
  2901. [in] REFIID riid,
  2902. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvDevice
  2903. );
  2904. }
  2905. [ uuid( 63ee58fb-1268-4835-86da-f008ce62f0d6 ), object, local, pointer_default( unique ) ]
  2906. interface ID3D12Pageable
  2907. : ID3D12DeviceChild
  2908. {
  2909. }
  2910. [ uuid( 6b3b2502-6e51-45b3-90ee-9884265e8df3 ), object, local, pointer_default( unique ) ]
  2911. interface ID3D12Heap
  2912. : ID3D12Pageable
  2913. {
  2914. D3D12_HEAP_DESC GetDesc();
  2915. }
  2916. [ uuid( 696442be-a72e-4059-bc79-5b5c98040fad ), object, local, pointer_default( unique ) ]
  2917. interface ID3D12Resource
  2918. : ID3D12Pageable
  2919. {
  2920. HRESULT Map(
  2921. UINT Subresource,
  2922. [annotation("_In_opt_")] const D3D12_RANGE* pReadRange,
  2923. [annotation("_Outptr_opt_result_bytebuffer_(_Inexpressible_(\"Dependent on resource\"))")] void** ppData);
  2924. void Unmap(UINT Subresource, [annotation("_In_opt_")] const D3D12_RANGE* pWrittenRange );
  2925. D3D12_RESOURCE_DESC GetDesc();
  2926. D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress();
  2927. HRESULT WriteToSubresource(
  2928. UINT DstSubresource,
  2929. [annotation("_In_opt_")] const D3D12_BOX* pDstBox,
  2930. [annotation("_In_")] const void* pSrcData,
  2931. UINT SrcRowPitch,
  2932. UINT SrcDepthPitch );
  2933. HRESULT ReadFromSubresource(
  2934. [annotation("_Out_")] void* pDstData,
  2935. UINT DstRowPitch,
  2936. UINT DstDepthPitch,
  2937. UINT SrcSubresource,
  2938. [annotation("_In_opt_")] const D3D12_BOX* pSrcBox );
  2939. HRESULT GetHeapProperties(
  2940. [annotation("_Out_opt_")] D3D12_HEAP_PROPERTIES* pHeapProperties,
  2941. [annotation("_Out_opt_")] D3D12_HEAP_FLAGS* pHeapFlags
  2942. );
  2943. }
  2944. [ uuid( 6102dee4-af59-4b09-b999-b44d73f09b24 ), object, local, pointer_default( unique ) ]
  2945. interface ID3D12CommandAllocator
  2946. : ID3D12Pageable
  2947. {
  2948. HRESULT Reset();
  2949. }
  2950. [ uuid( 0a753dcf-c4d8-4b91-adf6-be5a60d95a76 ), object, local, pointer_default( unique ) ]
  2951. interface ID3D12Fence
  2952. : ID3D12Pageable
  2953. {
  2954. UINT64 GetCompletedValue();
  2955. HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent);
  2956. HRESULT Signal(UINT64 Value);
  2957. };
  2958. [ uuid( 433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a ), object, local, pointer_default( unique ) ]
  2959. interface ID3D12Fence1
  2960. : ID3D12Fence
  2961. {
  2962. D3D12_FENCE_FLAGS GetCreationFlags();
  2963. };
  2964. [ uuid( 765a30f3-f624-4c6f-a828-ace948622445 ), object, local, pointer_default( unique ) ]
  2965. interface ID3D12PipelineState
  2966. : ID3D12Pageable
  2967. {
  2968. HRESULT GetCachedBlob([annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
  2969. }
  2970. [ uuid( 8efb471d-616c-4f49-90f7-127bb763fa51 ), object, local, pointer_default( unique ) ]
  2971. interface ID3D12DescriptorHeap
  2972. : ID3D12Pageable
  2973. {
  2974. D3D12_DESCRIPTOR_HEAP_DESC GetDesc();
  2975. D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart();
  2976. D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart();
  2977. }
  2978. [ uuid( 0d9658ae-ed45-469e-a61d-970ec583cab4 ), object, local, pointer_default( unique ) ]
  2979. interface ID3D12QueryHeap
  2980. : ID3D12Pageable
  2981. {
  2982. };
  2983. [ uuid( c36a797c-ec80-4f0a-8985-a7b2475082d1 ), object, local, pointer_default( unique ) ]
  2984. interface ID3D12CommandSignature
  2985. : ID3D12Pageable
  2986. {
  2987. };
  2988. [ uuid( 7116d91c-e7e4-47ce-b8c6-ec8168f437e5 ), object, local, pointer_default( unique ) ]
  2989. interface ID3D12CommandList
  2990. : ID3D12DeviceChild
  2991. {
  2992. D3D12_COMMAND_LIST_TYPE GetType();
  2993. }
  2994. // Superseded by ID3D12GraphicsCommandList1
  2995. [ uuid( 5b160d0f-ac1b-4185-8ba8-b3ae42a5a455 ), object, local, pointer_default( unique ) ]
  2996. interface ID3D12GraphicsCommandList
  2997. : ID3D12CommandList
  2998. {
  2999. HRESULT Close();
  3000. HRESULT Reset(
  3001. [annotation("_In_")] ID3D12CommandAllocator* pAllocator,
  3002. [annotation("_In_opt_")] ID3D12PipelineState* pInitialState
  3003. );
  3004. void ClearState(
  3005. [annotation("_In_opt_")] ID3D12PipelineState* pPipelineState
  3006. );
  3007. void DrawInstanced(
  3008. [annotation("_In_")] UINT VertexCountPerInstance,
  3009. [annotation("_In_")] UINT InstanceCount,
  3010. [annotation("_In_")] UINT StartVertexLocation,
  3011. [annotation("_In_")] UINT StartInstanceLocation
  3012. );
  3013. void DrawIndexedInstanced(
  3014. [annotation("_In_")] UINT IndexCountPerInstance,
  3015. [annotation("_In_")] UINT InstanceCount,
  3016. [annotation("_In_")] UINT StartIndexLocation,
  3017. [annotation("_In_")] INT BaseVertexLocation,
  3018. [annotation("_In_")] UINT StartInstanceLocation
  3019. );
  3020. void Dispatch(
  3021. [annotation("_In_")] UINT ThreadGroupCountX,
  3022. [annotation("_In_")] UINT ThreadGroupCountY,
  3023. [annotation("_In_")] UINT ThreadGroupCountZ
  3024. );
  3025. void CopyBufferRegion(
  3026. [annotation("_In_")] ID3D12Resource* pDstBuffer,
  3027. UINT64 DstOffset,
  3028. [annotation("_In_")] ID3D12Resource* pSrcBuffer,
  3029. UINT64 SrcOffset,
  3030. UINT64 NumBytes
  3031. );
  3032. void CopyTextureRegion(
  3033. [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pDst,
  3034. UINT DstX, UINT DstY, UINT DstZ,
  3035. [annotation("_In_")] const D3D12_TEXTURE_COPY_LOCATION* pSrc,
  3036. [annotation("_In_opt_")] const D3D12_BOX* pSrcBox
  3037. );
  3038. void CopyResource(
  3039. [annotation("_In_")] ID3D12Resource* pDstResource,
  3040. [annotation("_In_")] ID3D12Resource* pSrcResource
  3041. );
  3042. void CopyTiles(
  3043. [annotation("_In_")] ID3D12Resource* pTiledResource,
  3044. [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pTileRegionStartCoordinate,
  3045. [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pTileRegionSize,
  3046. [annotation("_In_")] ID3D12Resource* pBuffer,
  3047. UINT64 BufferStartOffsetInBytes,
  3048. D3D12_TILE_COPY_FLAGS Flags
  3049. );
  3050. void ResolveSubresource(
  3051. [annotation("_In_")] ID3D12Resource* pDstResource,
  3052. [annotation("_In_")] UINT DstSubresource,
  3053. [annotation("_In_")] ID3D12Resource* pSrcResource,
  3054. [annotation("_In_")] UINT SrcSubresource,
  3055. [annotation("_In_")] DXGI_FORMAT Format
  3056. );
  3057. void IASetPrimitiveTopology(
  3058. [annotation("_In_")] D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology
  3059. );
  3060. void RSSetViewports(
  3061. [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumViewports,
  3062. [annotation("_In_reads_( NumViewports)")] const D3D12_VIEWPORT* pViewports
  3063. );
  3064. void RSSetScissorRects(
  3065. [annotation("_In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)")] UINT NumRects,
  3066. [annotation("_In_reads_( NumRects)")] const D3D12_RECT* pRects
  3067. );
  3068. void OMSetBlendFactor(
  3069. [annotation("_In_reads_opt_(4)")] const FLOAT BlendFactor[ 4 ]
  3070. );
  3071. void OMSetStencilRef(
  3072. [annotation("_In_")] UINT StencilRef
  3073. );
  3074. void SetPipelineState(
  3075. [annotation("_In_")] ID3D12PipelineState* pPipelineState
  3076. );
  3077. void ResourceBarrier(
  3078. [annotation("_In_")] UINT NumBarriers,
  3079. [annotation("_In_reads_(NumBarriers)")] const D3D12_RESOURCE_BARRIER* pBarriers
  3080. );
  3081. void ExecuteBundle(
  3082. [annotation("_In_")] ID3D12GraphicsCommandList* pCommandList
  3083. );
  3084. void SetDescriptorHeaps(
  3085. [annotation("_In_")] UINT NumDescriptorHeaps,
  3086. [annotation("_In_reads_(NumDescriptorHeaps)")] ID3D12DescriptorHeap* const* ppDescriptorHeaps
  3087. );
  3088. void SetComputeRootSignature(
  3089. [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
  3090. );
  3091. void SetGraphicsRootSignature(
  3092. [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature
  3093. );
  3094. void SetComputeRootDescriptorTable(
  3095. [annotation("_In_")] UINT RootParameterIndex,
  3096. [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
  3097. );
  3098. void SetGraphicsRootDescriptorTable(
  3099. [annotation("_In_")] UINT RootParameterIndex,
  3100. [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor
  3101. );
  3102. // Single constant
  3103. void SetComputeRoot32BitConstant(
  3104. [annotation("_In_")] UINT RootParameterIndex,
  3105. [annotation("_In_")] UINT SrcData,
  3106. [annotation("_In_")] UINT DestOffsetIn32BitValues
  3107. );
  3108. void SetGraphicsRoot32BitConstant(
  3109. [annotation("_In_")] UINT RootParameterIndex,
  3110. [annotation("_In_")] UINT SrcData,
  3111. [annotation("_In_")] UINT DestOffsetIn32BitValues
  3112. );
  3113. // Group of constants
  3114. void SetComputeRoot32BitConstants(
  3115. [annotation("_In_")] UINT RootParameterIndex,
  3116. [annotation("_In_")] UINT Num32BitValuesToSet,
  3117. [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
  3118. [annotation("_In_")] UINT DestOffsetIn32BitValues
  3119. );
  3120. void SetGraphicsRoot32BitConstants(
  3121. [annotation("_In_")] UINT RootParameterIndex,
  3122. [annotation("_In_")] UINT Num32BitValuesToSet,
  3123. [annotation("_In_reads_(Num32BitValuesToSet*sizeof(UINT))")] const void* pSrcData,
  3124. [annotation("_In_")] UINT DestOffsetIn32BitValues
  3125. );
  3126. // CBV
  3127. void SetComputeRootConstantBufferView(
  3128. [annotation("_In_")] UINT RootParameterIndex,
  3129. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
  3130. );
  3131. void SetGraphicsRootConstantBufferView(
  3132. [annotation("_In_")] UINT RootParameterIndex,
  3133. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
  3134. );
  3135. // SRV
  3136. void SetComputeRootShaderResourceView(
  3137. [annotation("_In_")] UINT RootParameterIndex,
  3138. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
  3139. );
  3140. void SetGraphicsRootShaderResourceView(
  3141. [annotation("_In_")] UINT RootParameterIndex,
  3142. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
  3143. );
  3144. // UAV
  3145. void SetComputeRootUnorderedAccessView(
  3146. [annotation("_In_")] UINT RootParameterIndex,
  3147. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
  3148. );
  3149. void SetGraphicsRootUnorderedAccessView(
  3150. [annotation("_In_")] UINT RootParameterIndex,
  3151. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS BufferLocation
  3152. );
  3153. void IASetIndexBuffer(
  3154. [annotation("_In_opt_")] const D3D12_INDEX_BUFFER_VIEW* pView
  3155. );
  3156. void IASetVertexBuffers(
  3157. [annotation("_In_")] UINT StartSlot,
  3158. [annotation("_In_")] UINT NumViews,
  3159. [annotation("_In_reads_opt_(NumViews)")] const D3D12_VERTEX_BUFFER_VIEW* pViews
  3160. );
  3161. void SOSetTargets(
  3162. [annotation("_In_")] UINT StartSlot,
  3163. [annotation("_In_")] UINT NumViews,
  3164. [annotation("_In_reads_opt_(NumViews)")] const D3D12_STREAM_OUTPUT_BUFFER_VIEW* pViews
  3165. );
  3166. void OMSetRenderTargets(
  3167. [annotation("_In_")] UINT NumRenderTargetDescriptors,
  3168. [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pRenderTargetDescriptors,
  3169. [annotation("_In_")] BOOL RTsSingleHandleToDescriptorRange,
  3170. [annotation("_In_opt_")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDepthStencilDescriptor
  3171. );
  3172. void ClearDepthStencilView(
  3173. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
  3174. [annotation("_In_")] D3D12_CLEAR_FLAGS ClearFlags,
  3175. [annotation("_In_")] FLOAT Depth,
  3176. [annotation("_In_")] UINT8 Stencil,
  3177. [annotation("_In_")] UINT NumRects,
  3178. [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
  3179. );
  3180. void ClearRenderTargetView(
  3181. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
  3182. [annotation("_In_")] const FLOAT ColorRGBA[4],
  3183. [annotation("_In_")] UINT NumRects,
  3184. [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
  3185. );
  3186. void ClearUnorderedAccessViewUint(
  3187. [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  3188. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  3189. [annotation("_In_")] ID3D12Resource* pResource,
  3190. [annotation("_In_")] const UINT Values[4],
  3191. [annotation("_In_")] UINT NumRects,
  3192. [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
  3193. );
  3194. void ClearUnorderedAccessViewFloat(
  3195. [annotation("_In_")] D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  3196. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  3197. [annotation("_In_")] ID3D12Resource* pResource,
  3198. [annotation("_In_")] const FLOAT Values[4],
  3199. [annotation("_In_")] UINT NumRects,
  3200. [annotation("_In_reads_(NumRects)")] const D3D12_RECT* pRects
  3201. );
  3202. void DiscardResource(
  3203. [annotation("_In_")] ID3D12Resource* pResource,
  3204. [annotation("_In_opt_")] const D3D12_DISCARD_REGION* pRegion
  3205. );
  3206. void BeginQuery(
  3207. [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
  3208. [annotation("_In_")] D3D12_QUERY_TYPE Type,
  3209. [annotation("_In_")] UINT Index
  3210. );
  3211. void EndQuery(
  3212. [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
  3213. [annotation("_In_")] D3D12_QUERY_TYPE Type,
  3214. [annotation("_In_")] UINT Index
  3215. );
  3216. void ResolveQueryData(
  3217. [annotation("_In_")] ID3D12QueryHeap* pQueryHeap,
  3218. [annotation("_In_")] D3D12_QUERY_TYPE Type,
  3219. [annotation("_In_")] UINT StartIndex,
  3220. [annotation("_In_")] UINT NumQueries,
  3221. [annotation("_In_")] ID3D12Resource* pDestinationBuffer,
  3222. [annotation("_In_")] UINT64 AlignedDestinationBufferOffset
  3223. );
  3224. void SetPredication(
  3225. [annotation("_In_opt_")] ID3D12Resource* pBuffer,
  3226. [annotation("_In_")] UINT64 AlignedBufferOffset,
  3227. [annotation("_In_")] D3D12_PREDICATION_OP Operation
  3228. );
  3229. void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
  3230. void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
  3231. void EndEvent();
  3232. void ExecuteIndirect(
  3233. [annotation("_In_")] ID3D12CommandSignature* pCommandSignature,
  3234. [annotation("_In_")] UINT MaxCommandCount,
  3235. [annotation("_In_")] ID3D12Resource* pArgumentBuffer,
  3236. [annotation("_In_")] UINT64 ArgumentBufferOffset,
  3237. [annotation("_In_opt_")] ID3D12Resource* pCountBuffer,
  3238. [annotation("_In_")] UINT64 CountBufferOffset
  3239. );
  3240. }
  3241. [ uuid( 553103fb-1fe7-4557-bb38-946d7d0e7ca7 ), object, local, pointer_default( unique ) ]
  3242. interface ID3D12GraphicsCommandList1
  3243. : ID3D12GraphicsCommandList
  3244. {
  3245. void AtomicCopyBufferUINT(
  3246. [annotation("_In_")] ID3D12Resource* pDstBuffer,
  3247. UINT64 DstOffset,
  3248. [annotation("_In_")] ID3D12Resource* pSrcBuffer,
  3249. UINT64 SrcOffset,
  3250. UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
  3251. [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
  3252. [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
  3253. );
  3254. // UINT64 is only valid on UMA architectures
  3255. void AtomicCopyBufferUINT64(
  3256. [annotation("_In_")] ID3D12Resource* pDstBuffer,
  3257. UINT64 DstOffset,
  3258. [annotation("_In_")] ID3D12Resource* pSrcBuffer,
  3259. UINT64 SrcOffset,
  3260. UINT Dependencies, // 0 Dependencies means only the dst buffer offset is synchronized
  3261. [annotation("_In_reads_(Dependencies)")] ID3D12Resource*const* ppDependentResources,
  3262. [annotation("_In_reads_(Dependencies)")] const D3D12_SUBRESOURCE_RANGE_UINT64* pDependentSubresourceRanges
  3263. );
  3264. void OMSetDepthBounds(
  3265. [annotation("_In_")] FLOAT Min,
  3266. [annotation("_In_")] FLOAT Max
  3267. );
  3268. void SetSamplePositions(
  3269. [annotation("_In_")] UINT NumSamplesPerPixel,
  3270. [annotation("_In_")] UINT NumPixels,
  3271. [annotation("_In_reads_(NumSamplesPerPixel*NumPixels)")] D3D12_SAMPLE_POSITION* pSamplePositions
  3272. );
  3273. void ResolveSubresourceRegion(
  3274. [annotation("_In_")] ID3D12Resource* pDstResource,
  3275. [annotation("_In_")] UINT DstSubresource,
  3276. [annotation("_In_")] UINT DstX,
  3277. [annotation("_In_")] UINT DstY,
  3278. [annotation("_In_")] ID3D12Resource* pSrcResource,
  3279. [annotation("_In_")] UINT SrcSubresource,
  3280. [annotation("_In_opt_")] D3D12_RECT* pSrcRect,
  3281. [annotation("_In_")] DXGI_FORMAT Format,
  3282. [annotation("_In_")] D3D12_RESOLVE_MODE ResolveMode
  3283. );
  3284. void SetViewInstanceMask(
  3285. [annotation("_In_")] UINT Mask
  3286. );
  3287. }
  3288. typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
  3289. {
  3290. D3D12_GPU_VIRTUAL_ADDRESS Dest;
  3291. UINT32 Value;
  3292. } D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
  3293. typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
  3294. {
  3295. D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
  3296. D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
  3297. D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
  3298. } D3D12_WRITEBUFFERIMMEDIATE_MODE;
  3299. [uuid(38C3E585-FF17-412C-9150-4FC6F9D72A28), object, local, pointer_default(unique)]
  3300. interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
  3301. {
  3302. void WriteBufferImmediate(
  3303. UINT Count,
  3304. [annotation("_In_reads_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams,
  3305. [annotation("_In_reads_opt_(Count)")] const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes
  3306. );
  3307. }
  3308. [ uuid( 0ec870a6-5d7e-4c22-8cfc-5baae07616ed ), object, local, pointer_default( unique ) ]
  3309. interface ID3D12CommandQueue
  3310. : ID3D12Pageable
  3311. {
  3312. void UpdateTileMappings(
  3313. [annotation("_In_")] ID3D12Resource* pResource,
  3314. UINT NumResourceRegions,
  3315. [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILED_RESOURCE_COORDINATE* pResourceRegionStartCoordinates,
  3316. [annotation("_In_reads_opt_(NumResourceRegions)")] const D3D12_TILE_REGION_SIZE* pResourceRegionSizes,
  3317. [annotation("_In_opt_")] ID3D12Heap* pHeap,
  3318. UINT NumRanges,
  3319. [annotation("_In_reads_opt_(NumRanges)")] const D3D12_TILE_RANGE_FLAGS* pRangeFlags,
  3320. [annotation("_In_reads_opt_(NumRanges)")] const UINT* pHeapRangeStartOffsets,
  3321. [annotation("_In_reads_opt_(NumRanges)")] const UINT* pRangeTileCounts,
  3322. D3D12_TILE_MAPPING_FLAGS Flags );
  3323. void CopyTileMappings(
  3324. [annotation("_In_")] ID3D12Resource* pDstResource,
  3325. [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pDstRegionStartCoordinate,
  3326. [annotation("_In_")] ID3D12Resource* pSrcResource,
  3327. [annotation("_In_")] const D3D12_TILED_RESOURCE_COORDINATE* pSrcRegionStartCoordinate,
  3328. [annotation("_In_")] const D3D12_TILE_REGION_SIZE* pRegionSize,
  3329. D3D12_TILE_MAPPING_FLAGS Flags );
  3330. void ExecuteCommandLists(
  3331. [annotation("_In_")] UINT NumCommandLists,
  3332. [annotation("_In_reads_(NumCommandLists)")] ID3D12CommandList * const * ppCommandLists
  3333. );
  3334. void SetMarker(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
  3335. void BeginEvent(UINT Metadata, [annotation("_In_reads_bytes_opt_(Size)")] const void* pData, UINT Size);
  3336. void EndEvent();
  3337. HRESULT Signal(ID3D12Fence* pFence, UINT64 Value);
  3338. HRESULT Wait(ID3D12Fence* pFence, UINT64 Value);
  3339. HRESULT GetTimestampFrequency(
  3340. [annotation("_Out_")] UINT64* pFrequency
  3341. );
  3342. HRESULT GetClockCalibration(
  3343. [annotation("_Out_")] UINT64* pGpuTimestamp,
  3344. [annotation("_Out_")] UINT64* pCpuTimestamp
  3345. );
  3346. D3D12_COMMAND_QUEUE_DESC GetDesc();
  3347. }
  3348. [ uuid( 189819f1-1db6-4b57-be54-1821339b85f7 ), object, local, pointer_default( unique ) ]
  3349. interface ID3D12Device
  3350. : ID3D12Object
  3351. {
  3352. UINT GetNodeCount();
  3353. HRESULT CreateCommandQueue(
  3354. [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
  3355. [in] REFIID riid, // Expected: ID3D12CommandQueue
  3356. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
  3357. );
  3358. HRESULT CreateCommandAllocator(
  3359. [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
  3360. [in] REFIID riid, // Expected: ID3D12CommandAllocator
  3361. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandAllocator
  3362. );
  3363. HRESULT CreateGraphicsPipelineState(
  3364. [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
  3365. [in] REFIID riid, // Expected: ID3D12PipelineState
  3366. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
  3367. );
  3368. HRESULT CreateComputePipelineState(
  3369. [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
  3370. [in] REFIID riid, // Expected: ID3D12PipelineState
  3371. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
  3372. );
  3373. HRESULT CreateCommandList(
  3374. [annotation("_In_")] UINT nodeMask,
  3375. [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
  3376. [annotation("_In_")] ID3D12CommandAllocator* pCommandAllocator,
  3377. [annotation("_In_opt_")] ID3D12PipelineState* pInitialState,
  3378. [in] REFIID riid, // Expected: ID3D12CommandList
  3379. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
  3380. );
  3381. HRESULT CheckFeatureSupport(
  3382. D3D12_FEATURE Feature,
  3383. [annotation("_Inout_updates_bytes_(FeatureSupportDataSize)")] void* pFeatureSupportData,
  3384. UINT FeatureSupportDataSize
  3385. );
  3386. HRESULT CreateDescriptorHeap(
  3387. [annotation("_In_")] const D3D12_DESCRIPTOR_HEAP_DESC* pDescriptorHeapDesc,
  3388. [in] REFIID riid, // Expected ID3D12DescriptorHeap
  3389. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap);
  3390. UINT GetDescriptorHandleIncrementSize(
  3391. [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
  3392. HRESULT CreateRootSignature(
  3393. [annotation("_In_")] UINT nodeMask,
  3394. [annotation("_In_reads_(blobLengthInBytes)")] const void* pBlobWithRootSignature,
  3395. [annotation("_In_")] SIZE_T blobLengthInBytes,
  3396. [in] REFIID riid, // Expected ID3D12RootSignature
  3397. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
  3398. void CreateConstantBufferView(
  3399. [annotation("_In_opt_")] const D3D12_CONSTANT_BUFFER_VIEW_DESC* pDesc,
  3400. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  3401. void CreateShaderResourceView(
  3402. [annotation("_In_opt_")] ID3D12Resource* pResource,
  3403. [annotation("_In_opt_")] const D3D12_SHADER_RESOURCE_VIEW_DESC* pDesc,
  3404. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  3405. void CreateUnorderedAccessView(
  3406. [annotation("_In_opt_")] ID3D12Resource* pResource,
  3407. [annotation("_In_opt_")] ID3D12Resource* pCounterResource,
  3408. [annotation("_In_opt_")] const D3D12_UNORDERED_ACCESS_VIEW_DESC* pDesc,
  3409. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  3410. void CreateRenderTargetView(
  3411. [annotation("_In_opt_")] ID3D12Resource* pResource,
  3412. [annotation("_In_opt_")] const D3D12_RENDER_TARGET_VIEW_DESC* pDesc,
  3413. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  3414. void CreateDepthStencilView(
  3415. [annotation("_In_opt_")] ID3D12Resource* pResource,
  3416. [annotation("_In_opt_")] const D3D12_DEPTH_STENCIL_VIEW_DESC* pDesc,
  3417. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  3418. void CreateSampler(
  3419. [annotation("_In_")] const D3D12_SAMPLER_DESC* pDesc,
  3420. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  3421. void CopyDescriptors(
  3422. [annotation("_In_")] UINT NumDestDescriptorRanges,
  3423. [annotation("_In_reads_(NumDestDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pDestDescriptorRangeStarts,
  3424. [annotation("_In_reads_opt_(NumDestDescriptorRanges)")] const UINT* pDestDescriptorRangeSizes, // NULL means all ranges 1
  3425. [annotation("_In_")] UINT NumSrcDescriptorRanges,
  3426. [annotation("_In_reads_(NumSrcDescriptorRanges)")] const D3D12_CPU_DESCRIPTOR_HANDLE* pSrcDescriptorRangeStarts,
  3427. [annotation("_In_reads_opt_(NumSrcDescriptorRanges)")] const UINT* pSrcDescriptorRangeSizes, // NULL means all ranges 1
  3428. [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  3429. void CopyDescriptorsSimple(
  3430. [annotation("_In_")] UINT NumDescriptors,
  3431. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
  3432. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
  3433. [annotation("_In_")] D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  3434. D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(
  3435. [annotation("_In_")] UINT visibleMask,
  3436. [annotation("_In_")] UINT numResourceDescs,
  3437. [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs );
  3438. D3D12_HEAP_PROPERTIES GetCustomHeapProperties(
  3439. [annotation("_In_")] UINT nodeMask,
  3440. D3D12_HEAP_TYPE heapType
  3441. );
  3442. HRESULT CreateCommittedResource(
  3443. [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
  3444. D3D12_HEAP_FLAGS HeapFlags,
  3445. [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
  3446. D3D12_RESOURCE_STATES InitialResourceState,
  3447. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  3448. [in] REFIID riidResource, // Expected: ID3D12Resource*
  3449. [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource );
  3450. HRESULT CreateHeap(
  3451. [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
  3452. [in] REFIID riid, // Expected: ID3D12Heap*
  3453. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap );
  3454. HRESULT CreatePlacedResource(
  3455. [annotation("_In_")] ID3D12Heap* pHeap,
  3456. UINT64 HeapOffset,
  3457. [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
  3458. D3D12_RESOURCE_STATES InitialState,
  3459. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  3460. [in] REFIID riid, // Expected: ID3D12Resource*
  3461. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
  3462. HRESULT CreateReservedResource(
  3463. [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
  3464. D3D12_RESOURCE_STATES InitialState,
  3465. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  3466. [in] REFIID riid, // Expected: ID3D12Resource*
  3467. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource );
  3468. HRESULT CreateSharedHandle(
  3469. [annotation("_In_")] ID3D12DeviceChild* pObject,
  3470. [annotation("_In_opt_")] const SECURITY_ATTRIBUTES* pAttributes,
  3471. DWORD Access,
  3472. [annotation("_In_opt_")] LPCWSTR Name,
  3473. [annotation("_Out_")] HANDLE* pHandle );
  3474. HRESULT OpenSharedHandle(
  3475. [annotation("_In_")] HANDLE NTHandle,
  3476. [in] REFIID riid, // Expected: ID3D12Resource*, ID3D12Heap*, or ID3D12Fence
  3477. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvObj );
  3478. HRESULT OpenSharedHandleByName(
  3479. [annotation("_In_")] LPCWSTR Name,
  3480. DWORD Access,
  3481. [out, annotation("_Out_")] HANDLE* pNTHandle );
  3482. HRESULT MakeResident(
  3483. UINT NumObjects,
  3484. [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
  3485. HRESULT Evict(
  3486. UINT NumObjects,
  3487. [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects );
  3488. HRESULT CreateFence(
  3489. UINT64 InitialValue,
  3490. D3D12_FENCE_FLAGS Flags,
  3491. [in] REFIID riid, // Expected: ID3D12Fence
  3492. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppFence);
  3493. HRESULT GetDeviceRemovedReason();
  3494. void GetCopyableFootprints(
  3495. [annotation("_In_")] const D3D12_RESOURCE_DESC* pResourceDesc,
  3496. [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
  3497. [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
  3498. UINT64 BaseOffset,
  3499. [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
  3500. [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
  3501. [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
  3502. [annotation("_Out_opt_")] UINT64* pTotalBytes );
  3503. HRESULT CreateQueryHeap(
  3504. [annotation("_In_")] const D3D12_QUERY_HEAP_DESC* pDesc,
  3505. [in] REFIID riid, // Expected: ID3D12QueryHeap
  3506. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
  3507. );
  3508. HRESULT SetStablePowerState(BOOL Enable);
  3509. HRESULT CreateCommandSignature(
  3510. [annotation("_In_")] const D3D12_COMMAND_SIGNATURE_DESC* pDesc,
  3511. [annotation("_In_opt_")] ID3D12RootSignature* pRootSignature,
  3512. [in] REFIID riid, // Expected: ID3D12CommandSignature
  3513. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvCommandSignature
  3514. );
  3515. void GetResourceTiling(
  3516. [annotation("_In_")] ID3D12Resource* pTiledResource,
  3517. [annotation("_Out_opt_")] UINT* pNumTilesForEntireResource,
  3518. [annotation("_Out_opt_")] D3D12_PACKED_MIP_INFO* pPackedMipDesc,
  3519. [annotation("_Out_opt_")] D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips,
  3520. [annotation("_Inout_opt_")] UINT* pNumSubresourceTilings,
  3521. [annotation("_In_")] UINT FirstSubresourceTilingToGet,
  3522. [annotation("_Out_writes_(*pNumSubresourceTilings)")] D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips
  3523. );
  3524. LUID GetAdapterLuid();
  3525. }
  3526. // D3D12 Revision 1
  3527. [ uuid( c64226a8-9201-46af-b4cc-53fb9ff7414f ), object, local, pointer_default( unique ) ]
  3528. interface ID3D12PipelineLibrary
  3529. : ID3D12DeviceChild
  3530. {
  3531. HRESULT StorePipeline(
  3532. [annotation("_In_opt_")] LPCWSTR pName,
  3533. [annotation("_In_")] ID3D12PipelineState *pPipeline
  3534. );
  3535. HRESULT LoadGraphicsPipeline(
  3536. [annotation("_In_")] LPCWSTR pName,
  3537. [annotation("_In_")] const D3D12_GRAPHICS_PIPELINE_STATE_DESC* pDesc,
  3538. [in] REFIID riid, // Expected: ID3D12PipelineState
  3539. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
  3540. );
  3541. HRESULT LoadComputePipeline(
  3542. [annotation("_In_")] LPCWSTR pName,
  3543. [annotation("_In_")] const D3D12_COMPUTE_PIPELINE_STATE_DESC* pDesc,
  3544. [in] REFIID riid, // Expected: ID3D12PipelineState
  3545. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
  3546. );
  3547. SIZE_T GetSerializedSize();
  3548. HRESULT Serialize(
  3549. [annotation("_Out_writes_(DataSizeInBytes)")] void* pData,
  3550. SIZE_T DataSizeInBytes
  3551. );
  3552. }
  3553. // Pipeline State v2
  3554. [ uuid( 80eabf42-2568-4e5e-bd82-c37f86961dc3 ), object, local, pointer_default( unique ) ]
  3555. interface ID3D12PipelineLibrary1
  3556. : ID3D12PipelineLibrary
  3557. {
  3558. HRESULT LoadPipeline(
  3559. [annotation("_In_")] LPCWSTR pName,
  3560. [annotation("_In_")] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
  3561. [in] REFIID riid, // Expected: ID3D12PipelineState
  3562. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
  3563. );
  3564. }
  3565. typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
  3566. {
  3567. D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
  3568. D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
  3569. D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0, // Alias, default behavior is ALL
  3570. } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
  3571. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS )" )
  3572. // Applications may use the whole value range of UINT for a priority.
  3573. // These names are merely semantic suggestions.
  3574. typedef enum D3D12_RESIDENCY_PRIORITY
  3575. {
  3576. D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
  3577. D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
  3578. D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
  3579. D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
  3580. D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000,
  3581. } D3D12_RESIDENCY_PRIORITY;
  3582. [uuid(77acce80-638e-4e65-8895-c1f23386863e), object, local, pointer_default(unique)]
  3583. interface ID3D12Device1
  3584. : ID3D12Device
  3585. {
  3586. HRESULT CreatePipelineLibrary(
  3587. [annotation("_In_reads_(BlobLength)")] const void *pLibraryBlob,
  3588. SIZE_T BlobLength,
  3589. [in] REFIID riid, // Expected: ID3D12PipelineLibrary
  3590. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineLibrary
  3591. );
  3592. HRESULT SetEventOnMultipleFenceCompletion(
  3593. [annotation("_In_reads_(NumFences)")] ID3D12Fence* const* ppFences,
  3594. [annotation("_In_reads_(NumFences)")] const UINT64* pFenceValues,
  3595. UINT NumFences,
  3596. D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
  3597. HANDLE hEvent
  3598. );
  3599. HRESULT SetResidencyPriority(
  3600. UINT NumObjects,
  3601. [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
  3602. [annotation("_In_reads_(NumObjects)")] const D3D12_RESIDENCY_PRIORITY* pPriorities );
  3603. }
  3604. [uuid(30baa41e-b15b-475c-a0bb-1af5c5b64328), object, local, pointer_default(unique)]
  3605. interface ID3D12Device2
  3606. : ID3D12Device1
  3607. {
  3608. HRESULT CreatePipelineState(
  3609. [in] const D3D12_PIPELINE_STATE_STREAM_DESC* pDesc,
  3610. [in] REFIID riid, // Can be any pipeline state interface, provided the pipeline subobjects match
  3611. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppPipelineState
  3612. );
  3613. }
  3614. typedef enum D3D12_RESIDENCY_FLAGS
  3615. {
  3616. D3D12_RESIDENCY_FLAG_NONE = 0x0,
  3617. D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1,
  3618. } D3D12_RESIDENCY_FLAGS;
  3619. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESIDENCY_FLAGS )" )
  3620. [uuid(81dadc15-2bad-4392-93c5-101345c4aa98), object, local, pointer_default(unique)]
  3621. interface ID3D12Device3
  3622. : ID3D12Device2
  3623. {
  3624. HRESULT OpenExistingHeapFromAddress(
  3625. [annotation("_In_")] const void* pAddress,
  3626. [in] REFIID riid, // Expected: ID3D12Heap
  3627. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
  3628. );
  3629. HRESULT OpenExistingHeapFromFileMapping(
  3630. [annotation("_In_")] HANDLE hFileMapping,
  3631. [in] REFIID riid, // Expected: ID3D12Heap
  3632. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
  3633. );
  3634. HRESULT EnqueueMakeResident(
  3635. D3D12_RESIDENCY_FLAGS Flags,
  3636. UINT NumObjects,
  3637. [annotation("_In_reads_(NumObjects)")] ID3D12Pageable*const* ppObjects,
  3638. [annotation("_In_")] ID3D12Fence* pFenceToSignal,
  3639. UINT64 FenceValueToSignal
  3640. );
  3641. }
  3642. typedef enum D3D12_COMMAND_LIST_FLAGS
  3643. {
  3644. D3D12_COMMAND_LIST_FLAG_NONE = 0x0,
  3645. } D3D12_COMMAND_LIST_FLAGS;
  3646. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_LIST_FLAGS )")
  3647. typedef enum D3D12_COMMAND_POOL_FLAGS
  3648. {
  3649. D3D12_COMMAND_POOL_FLAG_NONE = 0x0,
  3650. } D3D12_COMMAND_POOL_FLAGS;
  3651. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_POOL_FLAGS )")
  3652. typedef enum D3D12_COMMAND_RECORDER_FLAGS
  3653. {
  3654. D3D12_COMMAND_RECORDER_FLAG_NONE = 0x0,
  3655. } D3D12_COMMAND_RECORDER_FLAGS;
  3656. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_RECORDER_FLAGS )")
  3657. typedef enum D3D12_PROTECTED_SESSION_STATUS
  3658. {
  3659. D3D12_PROTECTED_SESSION_STATUS_OK = 0,
  3660. D3D12_PROTECTED_SESSION_STATUS_INVALID = 1,
  3661. } D3D12_PROTECTED_SESSION_STATUS;
  3662. [uuid(A1533D18-0AC1-4084-85B9-89A96116806B), object, local, pointer_default(unique)]
  3663. interface ID3D12ProtectedSession
  3664. : ID3D12DeviceChild
  3665. {
  3666. HRESULT GetStatusFence(
  3667. [in] REFIID riid,
  3668. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppFence);
  3669. D3D12_PROTECTED_SESSION_STATUS GetSessionStatus();
  3670. }
  3671. typedef enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS
  3672. {
  3673. D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0x0,
  3674. D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1,
  3675. } D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS;
  3676. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS )")
  3677. typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT
  3678. {
  3679. UINT NodeIndex; // input
  3680. D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; // output
  3681. } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT;
  3682. typedef enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS
  3683. {
  3684. D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0,
  3685. } D3D12_PROTECTED_RESOURCE_SESSION_FLAGS;
  3686. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_PROTECTED_RESOURCE_SESSION_FLAGS )")
  3687. typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC
  3688. {
  3689. UINT NodeMask;
  3690. D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
  3691. } D3D12_PROTECTED_RESOURCE_SESSION_DESC;
  3692. [uuid(6CD696F4-F289-40CC-8091-5A6C0A099C3D), object, local, pointer_default(unique)]
  3693. interface ID3D12ProtectedResourceSession
  3694. : ID3D12ProtectedSession
  3695. {
  3696. D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc();
  3697. }
  3698. [uuid(e865df17-a9ee-46f9-a463-3098315aa2e5), object, local, pointer_default(unique)]
  3699. interface ID3D12Device4
  3700. : ID3D12Device3
  3701. {
  3702. HRESULT CreateCommandList1(
  3703. [annotation("_In_")] UINT nodeMask,
  3704. [annotation("_In_")] D3D12_COMMAND_LIST_TYPE type,
  3705. [annotation("_In_")] D3D12_COMMAND_LIST_FLAGS flags,
  3706. [in] REFIID riid, // Expected: ID3D12CommandList
  3707. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandList
  3708. );
  3709. HRESULT CreateProtectedResourceSession(
  3710. [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC* pDesc,
  3711. [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession,
  3712. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
  3713. );
  3714. HRESULT CreateCommittedResource1(
  3715. [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
  3716. D3D12_HEAP_FLAGS HeapFlags,
  3717. [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
  3718. D3D12_RESOURCE_STATES InitialResourceState,
  3719. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  3720. [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
  3721. [in] REFIID riidResource, // Expected: ID3D12Resource1*
  3722. [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource
  3723. );
  3724. HRESULT CreateHeap1(
  3725. [annotation("_In_")] const D3D12_HEAP_DESC* pDesc,
  3726. [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
  3727. [in] REFIID riid, // Expected: ID3D12Heap1*
  3728. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvHeap
  3729. );
  3730. HRESULT CreateReservedResource1(
  3731. [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
  3732. D3D12_RESOURCE_STATES InitialState,
  3733. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  3734. [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
  3735. [in] REFIID riid, // Expected: ID3D12Resource1*
  3736. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
  3737. );
  3738. D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(
  3739. UINT visibleMask,
  3740. UINT numResourceDescs,
  3741. [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC* pResourceDescs,
  3742. [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1
  3743. );
  3744. }
  3745. typedef enum D3D12_LIFETIME_STATE
  3746. {
  3747. D3D12_LIFETIME_STATE_IN_USE,
  3748. D3D12_LIFETIME_STATE_NOT_IN_USE,
  3749. } D3D12_LIFETIME_STATE;
  3750. interface ID3D12LifetimeTracker;
  3751. [uuid(e667af9f-cd56-4f46-83ce-032e595d70a8), object, local, pointer_default(unique)]
  3752. interface ID3D12LifetimeOwner : IUnknown
  3753. {
  3754. void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState);
  3755. }
  3756. [uuid(f1df64b6-57fd-49cd-8807-c0eb88b45c8f), object, local, pointer_default(unique)]
  3757. interface ID3D12SwapChainAssistant
  3758. : IUnknown
  3759. {
  3760. LUID GetLUID();
  3761. HRESULT GetSwapChainObject(REFIID riid, [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppv);
  3762. HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, [out, iid_is(riidResource), annotation("_COM_Outptr_")] void** ppvResource,
  3763. REFIID riidQueue, [out, iid_is(riidQueue), annotation("_COM_Outptr_")] void** ppvQueue);
  3764. HRESULT InsertImplicitSync();
  3765. }
  3766. [uuid(3fd03d36-4eb1-424a-a582-494ecb8ba813), object, local, pointer_default(unique)]
  3767. interface ID3D12LifetimeTracker
  3768. : ID3D12DeviceChild
  3769. {
  3770. HRESULT DestroyOwnedObject([annotation("_In_")] ID3D12DeviceChild* pObject);
  3771. }
  3772. typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
  3773. {
  3774. D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0,
  3775. D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1,
  3776. D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2,
  3777. D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3,
  3778. D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
  3779. } D3D12_META_COMMAND_PARAMETER_TYPE;
  3780. typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
  3781. {
  3782. D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x00000001,
  3783. D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x00000002
  3784. } D3D12_META_COMMAND_PARAMETER_FLAGS;
  3785. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_META_COMMAND_PARAMETER_FLAGS )")
  3786. typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
  3787. {
  3788. D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
  3789. D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1,
  3790. D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2,
  3791. } D3D12_META_COMMAND_PARAMETER_STAGE;
  3792. typedef struct D3D12_META_COMMAND_PARAMETER_DESC
  3793. {
  3794. LPCWSTR Name;
  3795. D3D12_META_COMMAND_PARAMETER_TYPE Type;
  3796. D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
  3797. D3D12_RESOURCE_STATES RequiredResourceState;
  3798. UINT StructureOffset;
  3799. } D3D12_META_COMMAND_PARAMETER_DESC;
  3800. typedef enum D3D12_GRAPHICS_STATES
  3801. {
  3802. D3D12_GRAPHICS_STATE_NONE = 0,
  3803. D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = (1 << 0),
  3804. D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = (1 << 1),
  3805. D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = (1 << 2),
  3806. D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = (1 << 3),
  3807. D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = (1 << 4),
  3808. D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = (1 << 5),
  3809. D3D12_GRAPHICS_STATE_RS_VIEWPORTS = (1 << 6),
  3810. D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = (1 << 7),
  3811. D3D12_GRAPHICS_STATE_PREDICATION = (1 << 8),
  3812. D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = (1 << 9),
  3813. D3D12_GRAPHICS_STATE_OM_STENCIL_REF = (1 << 10),
  3814. D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = (1 << 11),
  3815. D3D12_GRAPHICS_STATE_PIPELINE_STATE = (1 << 12),
  3816. D3D12_GRAPHICS_STATE_SO_TARGETS = (1 << 13),
  3817. D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = (1 << 14),
  3818. D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = (1 << 15),
  3819. D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = (1 << 16),
  3820. } D3D12_GRAPHICS_STATES;
  3821. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_GRAPHICS_STATES )")
  3822. typedef struct D3D12_META_COMMAND_DESC
  3823. {
  3824. GUID Id;
  3825. LPCWSTR Name;
  3826. D3D12_GRAPHICS_STATES InitializationDirtyState;
  3827. D3D12_GRAPHICS_STATES ExecutionDirtyState;
  3828. } D3D12_META_COMMAND_DESC;
  3829. [uuid(47016943-fca8-4594-93ea-af258b55346d), object, local, pointer_default(unique)]
  3830. interface ID3D12StateObject
  3831. : ID3D12Pageable
  3832. {
  3833. }
  3834. [uuid(de5fa827-9bf9-4f26-89ff-d7f56fde3860), object, local, pointer_default(unique)]
  3835. interface ID3D12StateObjectProperties
  3836. : IUnknown
  3837. {
  3838. void* GetShaderIdentifier([annotation("_In_")] LPCWSTR pExportName);
  3839. UINT64 GetShaderStackSize([annotation("_In_")] LPCWSTR pExportName);
  3840. UINT64 GetPipelineStackSize();
  3841. void SetPipelineStackSize(UINT64 PipelineStackSizeInBytes);
  3842. }
  3843. typedef struct D3D12_PROGRAM_IDENTIFIER
  3844. {
  3845. UINT64 OpaqueData[4];
  3846. } D3D12_PROGRAM_IDENTIFIER;
  3847. [uuid(460caac7-1d24-446a-a184-ca67db494138), object, local, pointer_default(unique)]
  3848. interface ID3D12StateObjectProperties1
  3849. : ID3D12StateObjectProperties
  3850. {
  3851. D3D12_PROGRAM_IDENTIFIER GetProgramIdentifier(LPCWSTR pProgramName);
  3852. }
  3853. typedef struct D3D12_NODE_ID
  3854. {
  3855. LPCWSTR Name;
  3856. UINT ArrayIndex;
  3857. } D3D12_NODE_ID;
  3858. typedef struct D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS
  3859. {
  3860. UINT64 MinSizeInBytes;
  3861. UINT64 MaxSizeInBytes;
  3862. UINT SizeGranularityInBytes;
  3863. } D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS;
  3864. [uuid(065acf71-f863-4b89-82f4-02e4d5886757), object, local, pointer_default(unique)]
  3865. interface ID3D12WorkGraphProperties : IUnknown
  3866. {
  3867. UINT GetNumWorkGraphs();
  3868. LPCWSTR GetProgramName(UINT WorkGraphIndex);
  3869. UINT GetWorkGraphIndex(LPCWSTR pProgramName);
  3870. UINT GetNumNodes(UINT WorkGraphIndex);
  3871. D3D12_NODE_ID GetNodeID(UINT WorkGraphIndex, UINT NodeIndex);
  3872. UINT GetNodeIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
  3873. UINT GetNodeLocalRootArgumentsTableIndex(UINT WorkGraphIndex, UINT NodeIndex);
  3874. UINT GetNumEntrypoints(UINT WorkGraphIndex);
  3875. D3D12_NODE_ID GetEntrypointID(UINT WorkGraphIndex, UINT EntrypointIndex);
  3876. UINT GetEntrypointIndex(UINT WorkGraphIndex, D3D12_NODE_ID NodeID);
  3877. UINT GetEntrypointRecordSizeInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
  3878. void GetWorkGraphMemoryRequirements(
  3879. UINT WorkGraphIndex,
  3880. [annotation("_Out_")] D3D12_WORK_GRAPH_MEMORY_REQUIREMENTS* pWorkGraphMemoryRequirements);
  3881. UINT GetEntrypointRecordAlignmentInBytes(UINT WorkGraphIndex, UINT EntrypointIndex);
  3882. }
  3883. typedef enum D3D12_STATE_SUBOBJECT_TYPE
  3884. {
  3885. D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, // D3D12_STATE_OBJECT_CONFIG
  3886. D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, // D3D12_GLOBAL_ROOT_SIGNATURE
  3887. D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, // D3D12_LOCAL_ROOT_SIGNATURE
  3888. D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, // D3D12_NODE_MASK
  3889. // 4 unused
  3890. D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, // D3D12_DXIL_LIBRARY_DESC
  3891. D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, // D3D12_EXISTING_COLLECTION_DESC
  3892. D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, // D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
  3893. D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, // D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
  3894. D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, // D3D12_RAYTRACING_SHADER_CONFIG
  3895. D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, // D3D12_RAYTRACING_PIPELINE_CONFIG
  3896. D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, // D3D12_HIT_GROUP_DESC
  3897. D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 12, // D3D12_RAYTRACING_PIPELINE_CONFIG1
  3898. D3D12_STATE_SUBOBJECT_TYPE_WORK_GRAPH = 13, // D3D12_WORK_GRAPH_DESC
  3899. D3D12_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = 14, // D3D12_STREAM_OUTPUT_DESC
  3900. D3D12_STATE_SUBOBJECT_TYPE_BLEND = 15, // D3D12_BLEND_DESC
  3901. D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = 16, // UINT
  3902. D3D12_STATE_SUBOBJECT_TYPE_RASTERIZER = 17, // D3D12_RASTERIZER_DESC2
  3903. D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = 18, // D3D12_DEPTH_STENCIL_DESC
  3904. D3D12_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = 19, // D3D12_INPUT_LAYOUT_DESC
  3905. D3D12_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = 20, // D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
  3906. D3D12_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = 21, // D3D12_PRIMITIVE_TOPOLOGY_TYPE
  3907. D3D12_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = 22, // D3D12_RT_FORMAT_ARRAY
  3908. D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = 23, // DXGI_FORMAT
  3909. D3D12_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = 24, // DXGI_SAMPLE_DESC
  3910. // 25 is unused
  3911. D3D12_STATE_SUBOBJECT_TYPE_FLAGS = 26, // D3D12_PIPELINE_STATE_FLAGS
  3912. D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 27, // D3D12_DEPTH_STENCIL_DESC1
  3913. D3D12_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = 28, // D3D12_VIEW_INSTANCING_DESC
  3914. D3D12_STATE_SUBOBJECT_TYPE_GENERIC_PROGRAM = 29, // D3D12_GENERIC_PROGRAM_DESC
  3915. D3D12_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL2 = 30, // D3D12_DEPTH_STENCIL_DESC2
  3916. D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID,
  3917. } D3D12_STATE_SUBOBJECT_TYPE;
  3918. typedef struct D3D12_STATE_SUBOBJECT
  3919. {
  3920. D3D12_STATE_SUBOBJECT_TYPE Type;
  3921. const void* pDesc;
  3922. } D3D12_STATE_SUBOBJECT;
  3923. typedef enum D3D12_STATE_OBJECT_FLAGS
  3924. {
  3925. D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
  3926. D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  3927. D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  3928. D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
  3929. } D3D12_STATE_OBJECT_FLAGS;
  3930. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_STATE_OBJECT_FLAGS )")
  3931. typedef struct D3D12_STATE_OBJECT_CONFIG
  3932. {
  3933. D3D12_STATE_OBJECT_FLAGS Flags;
  3934. } D3D12_STATE_OBJECT_CONFIG;
  3935. typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
  3936. {
  3937. ID3D12RootSignature* pGlobalRootSignature;
  3938. } D3D12_GLOBAL_ROOT_SIGNATURE;
  3939. typedef struct D3D12_LOCAL_ROOT_SIGNATURE
  3940. {
  3941. ID3D12RootSignature* pLocalRootSignature;
  3942. } D3D12_LOCAL_ROOT_SIGNATURE;
  3943. typedef struct D3D12_NODE_MASK
  3944. {
  3945. UINT NodeMask;
  3946. } D3D12_NODE_MASK;
  3947. typedef struct D3D12_SAMPLE_MASK
  3948. {
  3949. UINT SampleMask;
  3950. } D3D12_SAMPLE_MASK;
  3951. typedef struct D3D12_IB_STRIP_CUT_VALUE
  3952. {
  3953. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IndexBufferStripCutValue;
  3954. } D3D12_IB_STRIP_CUT_VALUE;
  3955. typedef struct D3D12_PRIMITIVE_TOPOLOGY_DESC
  3956. {
  3957. D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopology;
  3958. } D3D12_PRIMITIVE_TOPOLOGY_DESC;
  3959. typedef struct D3D12_DEPTH_STENCIL_FORMAT
  3960. {
  3961. DXGI_FORMAT DepthStencilFormat;
  3962. } D3D12_DEPTH_STENCIL_FORMAT;
  3963. typedef enum D3D12_EXPORT_FLAGS
  3964. {
  3965. D3D12_EXPORT_FLAG_NONE = 0x0,
  3966. } D3D12_EXPORT_FLAGS;
  3967. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_EXPORT_FLAGS )")
  3968. typedef struct D3D12_EXPORT_DESC
  3969. {
  3970. LPCWSTR Name;
  3971. [annotation("_In_opt_")] LPCWSTR ExportToRename;
  3972. D3D12_EXPORT_FLAGS Flags;
  3973. } D3D12_EXPORT_DESC;
  3974. typedef struct D3D12_DXIL_LIBRARY_DESC
  3975. {
  3976. D3D12_SHADER_BYTECODE DXILLibrary;
  3977. UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
  3978. [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
  3979. } D3D12_DXIL_LIBRARY_DESC;
  3980. typedef struct D3D12_EXISTING_COLLECTION_DESC
  3981. {
  3982. ID3D12StateObject* pExistingCollection;
  3983. UINT NumExports; // Optional, if 0 all exports in the library/collection will be surfaced
  3984. [annotation("_In_reads_(NumExports)")] const D3D12_EXPORT_DESC* pExports;
  3985. } D3D12_EXISTING_COLLECTION_DESC;
  3986. typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
  3987. {
  3988. const D3D12_STATE_SUBOBJECT* pSubobjectToAssociate;
  3989. UINT NumExports;
  3990. [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
  3991. } D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
  3992. typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
  3993. {
  3994. LPCWSTR SubobjectToAssociate;
  3995. UINT NumExports;
  3996. [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
  3997. } D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
  3998. typedef enum D3D12_HIT_GROUP_TYPE
  3999. {
  4000. D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
  4001. D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
  4002. } D3D12_HIT_GROUP_TYPE;
  4003. typedef struct D3D12_HIT_GROUP_DESC
  4004. {
  4005. LPCWSTR HitGroupExport;
  4006. D3D12_HIT_GROUP_TYPE Type;
  4007. [annotation("_In_opt_")] LPCWSTR AnyHitShaderImport;
  4008. [annotation("_In_opt_")] LPCWSTR ClosestHitShaderImport;
  4009. [annotation("_In_opt_")] LPCWSTR IntersectionShaderImport;
  4010. } D3D12_HIT_GROUP_DESC;
  4011. typedef struct D3D12_RAYTRACING_SHADER_CONFIG
  4012. {
  4013. UINT MaxPayloadSizeInBytes;
  4014. UINT MaxAttributeSizeInBytes;
  4015. } D3D12_RAYTRACING_SHADER_CONFIG;
  4016. typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
  4017. {
  4018. UINT MaxTraceRecursionDepth;
  4019. } D3D12_RAYTRACING_PIPELINE_CONFIG;
  4020. typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
  4021. {
  4022. D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
  4023. D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
  4024. D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
  4025. D3D12_RAYTRACING_PIPELINE_FLAG_ALLOW_OPACITY_MICROMAPS = 0x400,
  4026. } D3D12_RAYTRACING_PIPELINE_FLAGS;
  4027. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_PIPELINE_FLAGS )")
  4028. typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
  4029. {
  4030. UINT MaxTraceRecursionDepth;
  4031. D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
  4032. } D3D12_RAYTRACING_PIPELINE_CONFIG1;
  4033. typedef struct D3D12_NODE_OUTPUT_OVERRIDES
  4034. {
  4035. UINT OutputIndex;
  4036. [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
  4037. [annotation("_In_opt_")] const BOOL* pAllowSparseNodes;
  4038. [annotation("_In_opt_")] const UINT* pMaxRecords;
  4039. [annotation("_In_opt_")] const UINT* pMaxRecordsSharedWithOutputIndex;
  4040. } D3D12_NODE_OUTPUT_OVERRIDES;
  4041. typedef struct D3D12_BROADCASTING_LAUNCH_OVERRIDES
  4042. {
  4043. [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
  4044. [annotation("_In_opt_")] const BOOL* pProgramEntry;
  4045. [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
  4046. [annotation("_In_opt_ ")] const D3D12_NODE_ID* pShareInputOf;
  4047. [annotation("_In_reads_opt_(3)")] const UINT* pDispatchGrid;
  4048. [annotation("_In_reads_opt_(3)")] const UINT* pMaxDispatchGrid;
  4049. UINT NumOutputOverrides;
  4050. [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
  4051. } D3D12_BROADCASTING_LAUNCH_OVERRIDES;
  4052. typedef struct D3D12_COALESCING_LAUNCH_OVERRIDES
  4053. {
  4054. [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
  4055. [annotation("_In_opt_")] const BOOL* pProgramEntry;
  4056. [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
  4057. [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
  4058. UINT NumOutputOverrides;
  4059. [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
  4060. } D3D12_COALESCING_LAUNCH_OVERRIDES;
  4061. typedef struct D3D12_THREAD_LAUNCH_OVERRIDES
  4062. {
  4063. [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
  4064. [annotation("_In_opt_")] const BOOL* pProgramEntry;
  4065. [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
  4066. [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
  4067. UINT NumOutputOverrides;
  4068. [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
  4069. } D3D12_THREAD_LAUNCH_OVERRIDES;
  4070. typedef struct D3D12_COMMON_COMPUTE_NODE_OVERRIDES
  4071. {
  4072. [annotation("_In_opt_")] const UINT* pLocalRootArgumentsTableIndex;
  4073. [annotation("_In_opt_")] const BOOL* pProgramEntry;
  4074. [annotation("_In_opt_")] const D3D12_NODE_ID* pNewName;
  4075. [annotation("_In_opt_")] const D3D12_NODE_ID* pShareInputOf;
  4076. UINT NumOutputOverrides;
  4077. [annotation("_In_reads_opt_(NumOutputOverrides)")] const D3D12_NODE_OUTPUT_OVERRIDES* pOutputOverrides;
  4078. } D3D12_COMMON_COMPUTE_NODE_OVERRIDES;
  4079. typedef enum D3D12_NODE_OVERRIDES_TYPE
  4080. {
  4081. D3D12_NODE_OVERRIDES_TYPE_NONE = 0,
  4082. D3D12_NODE_OVERRIDES_TYPE_BROADCASTING_LAUNCH = 1,
  4083. D3D12_NODE_OVERRIDES_TYPE_COALESCING_LAUNCH = 2,
  4084. D3D12_NODE_OVERRIDES_TYPE_THREAD_LAUNCH = 3,
  4085. D3D12_NODE_OVERRIDES_TYPE_COMMON_COMPUTE = 4,
  4086. } D3D12_NODE_OVERRIDES_TYPE;
  4087. typedef struct D3D12_SHADER_NODE
  4088. {
  4089. LPCWSTR Shader;
  4090. D3D12_NODE_OVERRIDES_TYPE OverridesType;
  4091. union
  4092. {
  4093. const D3D12_BROADCASTING_LAUNCH_OVERRIDES* pBroadcastingLaunchOverrides;
  4094. const D3D12_COALESCING_LAUNCH_OVERRIDES* pCoalescingLaunchOverrides;
  4095. const D3D12_THREAD_LAUNCH_OVERRIDES* pThreadLaunchOverrides;
  4096. const D3D12_COMMON_COMPUTE_NODE_OVERRIDES* pCommonComputeNodeOverrides;
  4097. };
  4098. } D3D12_SHADER_NODE;
  4099. typedef enum D3D12_NODE_TYPE
  4100. {
  4101. D3D12_NODE_TYPE_SHADER = 0x0
  4102. } D3D12_NODE_TYPE;
  4103. typedef struct D3D12_NODE
  4104. {
  4105. D3D12_NODE_TYPE NodeType;
  4106. union
  4107. {
  4108. D3D12_SHADER_NODE Shader; // D3D12_NODE_TYPE_SHADER
  4109. };
  4110. } D3D12_NODE;
  4111. typedef enum D3D12_WORK_GRAPH_FLAGS
  4112. {
  4113. D3D12_WORK_GRAPH_FLAG_NONE = 0x0,
  4114. D3D12_WORK_GRAPH_FLAG_INCLUDE_ALL_AVAILABLE_NODES = 0x1,
  4115. } D3D12_WORK_GRAPH_FLAGS;
  4116. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_WORK_GRAPH_FLAGS )")
  4117. typedef struct D3D12_WORK_GRAPH_DESC
  4118. {
  4119. LPCWSTR ProgramName;
  4120. D3D12_WORK_GRAPH_FLAGS Flags;
  4121. UINT NumEntrypoints;
  4122. [annotation("_In_reads_opt_(NumEntrypoints)")] const D3D12_NODE_ID* pEntrypoints;
  4123. UINT NumExplicitlyDefinedNodes;
  4124. [annotation("_In_reads_opt_(NumExplicitlyDefinedNodes)")] const D3D12_NODE* pExplicitlyDefinedNodes;
  4125. } D3D12_WORK_GRAPH_DESC;
  4126. typedef struct D3D12_GENERIC_PROGRAM_DESC
  4127. {
  4128. LPCWSTR ProgramName;
  4129. UINT NumExports;
  4130. [annotation("_In_reads_(NumExports)")] LPCWSTR* pExports;
  4131. UINT NumSubobjects;
  4132. [annotation("_In_reads_opt_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* const* ppSubobjects;
  4133. } D3D12_GENERIC_PROGRAM_DESC;
  4134. typedef enum D3D12_STATE_OBJECT_TYPE
  4135. {
  4136. D3D12_STATE_OBJECT_TYPE_COLLECTION = 0,
  4137. D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3,
  4138. D3D12_STATE_OBJECT_TYPE_EXECUTABLE = 4
  4139. } D3D12_STATE_OBJECT_TYPE;
  4140. typedef struct D3D12_STATE_OBJECT_DESC
  4141. {
  4142. D3D12_STATE_OBJECT_TYPE Type;
  4143. UINT NumSubobjects;
  4144. [annotation("_In_reads_(NumSubobjects)")] const D3D12_STATE_SUBOBJECT* pSubobjects;
  4145. } D3D12_STATE_OBJECT_DESC;
  4146. typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
  4147. {
  4148. D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
  4149. D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
  4150. D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
  4151. } D3D12_RAYTRACING_GEOMETRY_FLAGS;
  4152. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_GEOMETRY_FLAGS )")
  4153. typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
  4154. {
  4155. D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES,
  4156. D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS,
  4157. D3D12_RAYTRACING_GEOMETRY_TYPE_OMM_TRIANGLES
  4158. } D3D12_RAYTRACING_GEOMETRY_TYPE;
  4159. typedef enum D3D12_RAYTRACING_INSTANCE_FLAGS
  4160. {
  4161. D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0x0,
  4162. D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1,
  4163. D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2,
  4164. D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
  4165. D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8,
  4166. D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OMM_2_STATE = 0x10,
  4167. D3D12_RAYTRACING_INSTANCE_FLAG_DISABLE_OMMS = 0x20
  4168. } D3D12_RAYTRACING_INSTANCE_FLAGS;
  4169. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_INSTANCE_FLAGS )")
  4170. typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
  4171. {
  4172. D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
  4173. UINT64 StrideInBytes;
  4174. } D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
  4175. typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
  4176. {
  4177. D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
  4178. UINT64 SizeInBytes;
  4179. } D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
  4180. typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
  4181. {
  4182. D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
  4183. UINT64 SizeInBytes;
  4184. UINT64 StrideInBytes;
  4185. } D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
  4186. typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
  4187. {
  4188. D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
  4189. DXGI_FORMAT IndexFormat;
  4190. DXGI_FORMAT VertexFormat;
  4191. UINT IndexCount;
  4192. UINT VertexCount;
  4193. D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
  4194. D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
  4195. } D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
  4196. typedef struct D3D12_RAYTRACING_AABB
  4197. {
  4198. FLOAT MinX;
  4199. FLOAT MinY;
  4200. FLOAT MinZ;
  4201. FLOAT MaxX;
  4202. FLOAT MaxY;
  4203. FLOAT MaxZ;
  4204. } D3D12_RAYTRACING_AABB;
  4205. typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
  4206. {
  4207. UINT64 AABBCount;
  4208. D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
  4209. } D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
  4210. typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX
  4211. {
  4212. D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT = -1,
  4213. D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE = -2,
  4214. D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT = -3,
  4215. D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE = -4,
  4216. } D3D12_RAYTRACING_OPACITY_MICROMAP_SPECIAL_INDEX;
  4217. typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_STATE
  4218. {
  4219. D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_TRANSPARENT = 0,
  4220. D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_OPAQUE = 1,
  4221. D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_TRANSPARENT = 2,
  4222. D3D12_RAYTRACING_OPACITY_MICROMAP_STATE_UNKNOWN_OPAQUE = 3,
  4223. } D3D12_RAYTRACING_OPACITY_MICROMAP_STATE;
  4224. typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT
  4225. {
  4226. D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_2_STATE = 0x1,
  4227. D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT_OC1_4_STATE = 0x2,
  4228. } D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT;
  4229. cpp_quote("typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_DESC")
  4230. cpp_quote("{")
  4231. cpp_quote(" UINT ByteOffset;")
  4232. cpp_quote(" UINT SubdivisionLevel : 16;")
  4233. cpp_quote(" D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format : 16;")
  4234. cpp_quote("} D3D12_RAYTRACING_OPACITY_MICROMAP_DESC;")
  4235. typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC
  4236. {
  4237. D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE OpacityMicromapIndexBuffer;
  4238. DXGI_FORMAT OpacityMicromapIndexFormat;
  4239. UINT OpacityMicromapBaseLocation;
  4240. D3D12_GPU_VIRTUAL_ADDRESS OpacityMicromapArray;
  4241. } D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC;
  4242. typedef struct D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC
  4243. {
  4244. const D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC* pTriangles;
  4245. const D3D12_RAYTRACING_GEOMETRY_OMM_LINKAGE_DESC* pOmmLinkage;
  4246. } D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC;
  4247. typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
  4248. {
  4249. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
  4250. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
  4251. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
  4252. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
  4253. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
  4254. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
  4255. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
  4256. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_OMM_UPDATE = 0x40,
  4257. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_DISABLE_OMMS = 0x80,
  4258. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
  4259. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS )")
  4260. typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
  4261. {
  4262. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
  4263. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1,
  4264. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2,
  4265. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
  4266. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4,
  4267. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
  4268. typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
  4269. {
  4270. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
  4271. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1,
  4272. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_OPACITY_MICROMAP_ARRAY = 0x2,
  4273. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
  4274. typedef enum D3D12_ELEMENTS_LAYOUT
  4275. {
  4276. D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
  4277. D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
  4278. } D3D12_ELEMENTS_LAYOUT;
  4279. typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
  4280. {
  4281. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
  4282. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
  4283. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
  4284. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
  4285. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
  4286. typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
  4287. {
  4288. D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
  4289. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
  4290. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
  4291. typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC
  4292. {
  4293. UINT64 CompactedSizeInBytes;
  4294. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC;
  4295. typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
  4296. {
  4297. UINT64 DecodedSizeInBytes;
  4298. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
  4299. typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER
  4300. {
  4301. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
  4302. UINT NumDescs;
  4303. } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER;
  4304. cpp_quote("// Regarding D3D12_BUILD_RAY_TRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER above,")
  4305. cpp_quote("// depending on Type field, NumDescs above is followed by either:")
  4306. cpp_quote("// D3D12_RAY_TRACING_INSTANCE_DESC InstanceDescs[NumDescs]")
  4307. cpp_quote("// or D3D12_RAY_TRACING_GEOMETRY_DESC GeometryDescs[NumDescs].")
  4308. cpp_quote("// or D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC (NumDescs == 1 in this case).")
  4309. cpp_quote("//")
  4310. cpp_quote("// For D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC, the pOmmHistogram pointer becomes a GPUVA instead of CPU pointer")
  4311. cpp_quote("//")
  4312. cpp_quote("// There is 4 bytes of padding between GeometryDesc structs in the array so alignment is natural when viewed by CPU.")
  4313. cpp_quote("")
  4314. typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC
  4315. {
  4316. UINT64 SerializedSizeInBytes;
  4317. union
  4318. {
  4319. UINT64 NumBottomLevelAccelerationStructurePointers;
  4320. UINT64 NumBottomLevelAccelerationStructureHeaderAndPointerListPairs;
  4321. };
  4322. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC;
  4323. typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
  4324. {
  4325. GUID DriverOpaqueGUID;
  4326. BYTE DriverOpaqueVersioningData[16];
  4327. } D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
  4328. typedef enum D3D12_SERIALIZED_DATA_TYPE
  4329. {
  4330. D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
  4331. D3D12_SERIALIZED_DATA_APPLICATION_SPECIFIC_DRIVER_STATE = 0x1,
  4332. } D3D12_SERIALIZED_DATA_TYPE;
  4333. typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
  4334. {
  4335. D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
  4336. D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
  4337. D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
  4338. D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
  4339. D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
  4340. } D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
  4341. typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER
  4342. {
  4343. D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
  4344. UINT64 SerializedSizeInBytesIncludingHeader;
  4345. UINT64 DeserializedSizeInBytes;
  4346. UINT64 NumBottomLevelAccelerationStructurePointersAfterHeader;
  4347. } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER;
  4348. typedef enum D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE
  4349. {
  4350. D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_NONE = 0,
  4351. D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BOTTOM_LEVEL_POINTERS = 0,
  4352. D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE_BLOCKS = 0xffffffff
  4353. } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE;
  4354. typedef struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1
  4355. {
  4356. D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier;
  4357. UINT64 SerializedSizeInBytesIncludingHeader;
  4358. UINT64 DeserializedSizeInBytes;
  4359. union
  4360. {
  4361. UINT NumBottomLevelAccelerationStructurePointersAfterHeader;
  4362. UINT NumBlocks;
  4363. };
  4364. D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER_POSTAMBLE_TYPE HeaderPostambleType;
  4365. } D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER1;
  4366. typedef enum D3D12_SERIALIZED_BLOCK_TYPE
  4367. {
  4368. D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE_OPACITY_MICROMAPS = 0x0,
  4369. } D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE;
  4370. typedef struct D3D12_RAYTRACING_SERIALIZED_BLOCK
  4371. {
  4372. D3D12_RAYTRACING_SERIALIZED_BLOCK_TYPE Type;
  4373. UINT64 NumBlockPointersAfterHeader;
  4374. } D3D12_RAYTRACING_SERIALIZED_BLOCK;
  4375. typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC
  4376. {
  4377. UINT64 CurrentSizeInBytes;
  4378. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC;
  4379. typedef struct D3D12_RAYTRACING_INSTANCE_DESC
  4380. {
  4381. FLOAT Transform[3][4];
  4382. UINT InstanceID : 24;
  4383. UINT InstanceMask : 8;
  4384. UINT InstanceContributionToHitGroupIndex : 24;
  4385. UINT Flags : 8;
  4386. D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
  4387. } D3D12_RAYTRACING_INSTANCE_DESC;
  4388. typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
  4389. {
  4390. D3D12_RAYTRACING_GEOMETRY_TYPE Type;
  4391. D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
  4392. union
  4393. {
  4394. D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
  4395. D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
  4396. D3D12_RAYTRACING_GEOMETRY_OMM_TRIANGLES_DESC OmmTriangles;
  4397. };
  4398. } D3D12_RAYTRACING_GEOMETRY_DESC;
  4399. typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY
  4400. {
  4401. UINT Count;
  4402. UINT SubdivisionLevel;
  4403. D3D12_RAYTRACING_OPACITY_MICROMAP_FORMAT Format;
  4404. } D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY;
  4405. typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC
  4406. {
  4407. UINT NumOmmHistogramEntries;
  4408. const D3D12_RAYTRACING_OPACITY_MICROMAP_HISTOGRAM_ENTRY* pOmmHistogram;
  4409. D3D12_GPU_VIRTUAL_ADDRESS InputBuffer;
  4410. D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE PerOmmDescs;
  4411. } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC;
  4412. typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
  4413. {
  4414. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
  4415. D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
  4416. UINT NumDescs;
  4417. D3D12_ELEMENTS_LAYOUT DescsLayout;
  4418. union
  4419. {
  4420. D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
  4421. const D3D12_RAYTRACING_GEOMETRY_DESC* pGeometryDescs;
  4422. const D3D12_RAYTRACING_GEOMETRY_DESC*const* ppGeometryDescs;
  4423. const D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_DESC* pOpacityMicromapArrayDesc;
  4424. };
  4425. } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
  4426. typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
  4427. {
  4428. D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
  4429. D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
  4430. [annotation("_In_opt_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
  4431. D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
  4432. } D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
  4433. typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
  4434. {
  4435. UINT64 ResultDataMaxSizeInBytes;
  4436. UINT64 ScratchDataSizeInBytes;
  4437. UINT64 UpdateScratchDataSizeInBytes;
  4438. } D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
  4439. typedef enum D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE
  4440. {
  4441. D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE = 0x0,
  4442. D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
  4443. } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE;
  4444. typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC
  4445. {
  4446. D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
  4447. D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TYPE InfoType;
  4448. } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_DESC;
  4449. typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC
  4450. {
  4451. UINT64 CurrentSizeInBytes;
  4452. } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_CURRENT_SIZE_DESC;
  4453. typedef struct D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC
  4454. {
  4455. UINT64 DecodedSizeInBytes;
  4456. } D3D12_RAYTRACING_OPACITY_MICROMAP_ARRAY_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC;
  4457. typedef enum D3D12_RAY_FLAGS
  4458. {
  4459. D3D12_RAY_FLAG_NONE = 0x00,
  4460. D3D12_RAY_FLAG_FORCE_OPAQUE = 0x01,
  4461. D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x02,
  4462. D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x04,
  4463. D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08,
  4464. D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10,
  4465. D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20,
  4466. D3D12_RAY_FLAG_CULL_OPAQUE = 0x40,
  4467. D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80,
  4468. D3D12_RAY_FLAG_SKIP_TRIANGLES = 0x100,
  4469. D3D12_RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
  4470. D3D12_RAY_FLAG_FORCE_OMM_2_STATE = 0x400,
  4471. } D3D12_RAY_FLAGS;
  4472. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_RAY_FLAGS )" )
  4473. typedef enum D3D12_HIT_KIND
  4474. {
  4475. D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe,
  4476. D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff,
  4477. } D3D12_HIT_KIND;
  4478. [uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d), object, local, pointer_default(unique)]
  4479. interface ID3D12Device5
  4480. : ID3D12Device4
  4481. {
  4482. HRESULT CreateLifetimeTracker(
  4483. [annotation("_In_")] ID3D12LifetimeOwner* pOwner,
  4484. [in] REFIID riid, // Expected: ID3D12LifetimeTracker*
  4485. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvTracker
  4486. );
  4487. void RemoveDevice();
  4488. HRESULT EnumerateMetaCommands(
  4489. [annotation("_Inout_")] UINT* pNumMetaCommands,
  4490. [annotation("_Out_writes_opt_(*pNumMetaCommands)")] D3D12_META_COMMAND_DESC* pDescs
  4491. );
  4492. HRESULT EnumerateMetaCommandParameters(
  4493. [annotation("_In_")] REFGUID CommandId,
  4494. [annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage,
  4495. [annotation("_Out_opt_")] UINT* pTotalStructureSizeInBytes,
  4496. [annotation("_Inout_")] UINT* pParameterCount,
  4497. [annotation("_Out_writes_opt_(*pParameterCount)")] D3D12_META_COMMAND_PARAMETER_DESC* pParameterDescs
  4498. );
  4499. HRESULT CreateMetaCommand(
  4500. [annotation("_In_")] REFGUID CommandId,
  4501. [annotation("_In_")] UINT NodeMask,
  4502. [annotation("_In_reads_bytes_opt_(CreationParametersDataSizeInBytes)")] const void * pCreationParametersData,
  4503. [annotation("_In_")] SIZE_T CreationParametersDataSizeInBytes,
  4504. [in] REFIID riid,
  4505. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppMetaCommand
  4506. );
  4507. HRESULT CreateStateObject(
  4508. [in] const D3D12_STATE_OBJECT_DESC* pDesc,
  4509. [in] REFIID riid, // ID3D12StateObject
  4510. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppStateObject
  4511. );
  4512. void GetRaytracingAccelerationStructurePrebuildInfo(
  4513. [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS* pDesc,
  4514. [annotation("_Out_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo
  4515. );
  4516. D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
  4517. [annotation("_In_")] D3D12_SERIALIZED_DATA_TYPE SerializedDataType,
  4518. [annotation("_In_")] const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER* pIdentifierToCheck);
  4519. }
  4520. typedef enum D3D12_AUTO_BREADCRUMB_OP
  4521. {
  4522. D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0,
  4523. D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
  4524. D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2,
  4525. D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3,
  4526. D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4,
  4527. D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5,
  4528. D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6,
  4529. D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7,
  4530. D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8,
  4531. D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9,
  4532. D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10,
  4533. D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
  4534. D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12,
  4535. D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13,
  4536. D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14,
  4537. D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15,
  4538. D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16,
  4539. D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17,
  4540. D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18,
  4541. D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19,
  4542. D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20,
  4543. D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21,
  4544. D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22,
  4545. D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23,
  4546. D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24,
  4547. D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25,
  4548. D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26,
  4549. D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27,
  4550. D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28,
  4551. D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29,
  4552. D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30,
  4553. D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31,
  4554. D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32,
  4555. D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33,
  4556. D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34,
  4557. D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35,
  4558. D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
  4559. D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37,
  4560. D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38,
  4561. D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39,
  4562. D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
  4563. D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41,
  4564. D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42,
  4565. D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43,
  4566. D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44,
  4567. D3D12_AUTO_BREADCRUMB_OP_BARRIER = 45,
  4568. D3D12_AUTO_BREADCRUMB_OP_BEGIN_COMMAND_LIST = 46,
  4569. D3D12_AUTO_BREADCRUMB_OP_DISPATCHGRAPH = 47,
  4570. D3D12_AUTO_BREADCRUMB_OP_SETPROGRAM = 48,
  4571. D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES2 = 52,
  4572. } D3D12_AUTO_BREADCRUMB_OP;
  4573. typedef struct D3D12_AUTO_BREADCRUMB_NODE
  4574. {
  4575. const char *pCommandListDebugNameA;
  4576. const wchar_t *pCommandListDebugNameW;
  4577. const char *pCommandQueueDebugNameA;
  4578. const wchar_t *pCommandQueueDebugNameW;
  4579. ID3D12GraphicsCommandList *pCommandList;
  4580. ID3D12CommandQueue *pCommandQueue;
  4581. UINT32 BreadcrumbCount;
  4582. const UINT32 *pLastBreadcrumbValue;
  4583. const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
  4584. const struct D3D12_AUTO_BREADCRUMB_NODE *pNext; // pointer to next node
  4585. } D3D12_AUTO_BREADCRUMB_NODE;
  4586. typedef struct D3D12_DRED_BREADCRUMB_CONTEXT
  4587. {
  4588. UINT BreadcrumbIndex;
  4589. const wchar_t *pContextString;
  4590. } D3D12_DRED_BREADCRUMB_CONTEXT;
  4591. // !!! Must be castable to D3D12_AUTO_BREADCRUMB_NODE
  4592. typedef struct D3D12_AUTO_BREADCRUMB_NODE1
  4593. {
  4594. const char *pCommandListDebugNameA;
  4595. const wchar_t *pCommandListDebugNameW;
  4596. const char *pCommandQueueDebugNameA;
  4597. const wchar_t *pCommandQueueDebugNameW;
  4598. ID3D12GraphicsCommandList *pCommandList;
  4599. ID3D12CommandQueue *pCommandQueue;
  4600. UINT BreadcrumbCount;
  4601. const UINT *pLastBreadcrumbValue;
  4602. const D3D12_AUTO_BREADCRUMB_OP *pCommandHistory;
  4603. const struct D3D12_AUTO_BREADCRUMB_NODE1 *pNext; // pointer to next node
  4604. UINT BreadcrumbContextsCount;
  4605. D3D12_DRED_BREADCRUMB_CONTEXT *pBreadcrumbContexts;
  4606. } D3D12_AUTO_BREADCRUMB_NODE1;
  4607. // D3D12_DRED_VERSION
  4608. typedef enum D3D12_DRED_VERSION
  4609. {
  4610. D3D12_DRED_VERSION_1_0 = 0x1,
  4611. D3D12_DRED_VERSION_1_1 = 0x2,
  4612. D3D12_DRED_VERSION_1_2 = 0x3,
  4613. D3D12_DRED_VERSION_1_3 = 0x4,
  4614. } D3D12_DRED_VERSION;
  4615. typedef enum D3D12_DRED_FLAGS
  4616. {
  4617. D3D12_DRED_FLAG_NONE = 0,
  4618. D3D12_DRED_FLAG_FORCE_ENABLE = 1,
  4619. D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2,
  4620. } D3D12_DRED_FLAGS;
  4621. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_FLAGS )")
  4622. typedef enum D3D12_DRED_ENABLEMENT
  4623. {
  4624. D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0,
  4625. D3D12_DRED_ENABLEMENT_FORCED_OFF = 1,
  4626. D3D12_DRED_ENABLEMENT_FORCED_ON = 2,
  4627. } D3D12_DRED_ENABLEMENT;
  4628. typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA
  4629. {
  4630. [annotation("_In_")] D3D12_DRED_FLAGS Flags; // Dred flags
  4631. [annotation("_Out_")] D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a linked list of auto-breadcrumb data
  4632. } D3D12_DEVICE_REMOVED_EXTENDED_DATA;
  4633. typedef enum D3D12_DRED_ALLOCATION_TYPE
  4634. {
  4635. // Enum starts at 19 and skips 26 to maintain compatibility with older D3D12 drivers
  4636. D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE = 19,
  4637. D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR = 20,
  4638. D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE = 21,
  4639. D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST = 22,
  4640. D3D12_DRED_ALLOCATION_TYPE_FENCE = 23,
  4641. D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP = 24,
  4642. D3D12_DRED_ALLOCATION_TYPE_HEAP = 25,
  4643. D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP = 27,
  4644. D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE = 28,
  4645. D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
  4646. D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER = 30,
  4647. D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR = 32,
  4648. D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
  4649. D3D12_DRED_ALLOCATION_TYPE_PASS = 35,
  4650. D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION = 36,
  4651. D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY = 37,
  4652. D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
  4653. D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP = 39,
  4654. D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL = 40,
  4655. D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
  4656. D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT = 42,
  4657. D3D12_DRED_ALLOCATION_TYPE_METACOMMAND = 43,
  4658. D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP = 44,
  4659. D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR = 45,
  4660. D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
  4661. D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND = 47,
  4662. D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER = 48,
  4663. D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49,
  4664. D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xFFFFFFFF
  4665. } D3D12_DRED_ALLOCATION_TYPE;
  4666. typedef struct D3D12_DRED_ALLOCATION_NODE
  4667. {
  4668. const char *ObjectNameA;
  4669. const wchar_t *ObjectNameW;
  4670. D3D12_DRED_ALLOCATION_TYPE AllocationType;
  4671. const struct D3D12_DRED_ALLOCATION_NODE *pNext;
  4672. } D3D12_DRED_ALLOCATION_NODE;
  4673. typedef struct D3D12_DRED_ALLOCATION_NODE1
  4674. {
  4675. const char *ObjectNameA;
  4676. const wchar_t *ObjectNameW;
  4677. D3D12_DRED_ALLOCATION_TYPE AllocationType;
  4678. const struct D3D12_DRED_ALLOCATION_NODE1 *pNext;
  4679. const IUnknown *pObject;
  4680. } D3D12_DRED_ALLOCATION_NODE1;
  4681. typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT
  4682. {
  4683. [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
  4684. } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT;
  4685. typedef struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1
  4686. {
  4687. [annotation("_Out_")] const D3D12_AUTO_BREADCRUMB_NODE1 *pHeadAutoBreadcrumbNode; // Pointer to head of a null-terminated linked list of auto-breadcrumb data
  4688. } D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1;
  4689. typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT
  4690. {
  4691. D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
  4692. [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadExistingAllocationNode;
  4693. [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE *pHeadRecentFreedAllocationNode;
  4694. } D3D12_DRED_PAGE_FAULT_OUTPUT;
  4695. typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT1
  4696. {
  4697. D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
  4698. [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
  4699. [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
  4700. } D3D12_DRED_PAGE_FAULT_OUTPUT1;
  4701. typedef enum D3D12_DRED_PAGE_FAULT_FLAGS
  4702. {
  4703. D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0,
  4704. } D3D12_DRED_PAGE_FAULT_FLAGS;
  4705. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DRED_PAGE_FAULT_FLAGS )")
  4706. typedef enum D3D12_DRED_DEVICE_STATE
  4707. {
  4708. D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, // Only known if DRED event occurred
  4709. D3D12_DRED_DEVICE_STATE_HUNG = 3,
  4710. D3D12_DRED_DEVICE_STATE_FAULT = 6,
  4711. D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7,
  4712. } D3D12_DRED_DEVICE_STATE;
  4713. typedef struct D3D12_DRED_PAGE_FAULT_OUTPUT2
  4714. {
  4715. D3D12_GPU_VIRTUAL_ADDRESS PageFaultVA; //If the device removal was due to GPU Fault, this contains the VA of the faulting op
  4716. [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadExistingAllocationNode;
  4717. [annotation("_Out_")] const D3D12_DRED_ALLOCATION_NODE1 *pHeadRecentFreedAllocationNode;
  4718. D3D12_DRED_PAGE_FAULT_FLAGS PageFaultFlags;
  4719. } D3D12_DRED_PAGE_FAULT_OUTPUT2;
  4720. typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1
  4721. {
  4722. HRESULT DeviceRemovedReason;
  4723. D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT AutoBreadcrumbsOutput;
  4724. D3D12_DRED_PAGE_FAULT_OUTPUT PageFaultOutput;
  4725. } D3D12_DEVICE_REMOVED_EXTENDED_DATA1;
  4726. typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2
  4727. {
  4728. HRESULT DeviceRemovedReason;
  4729. D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
  4730. D3D12_DRED_PAGE_FAULT_OUTPUT1 PageFaultOutput;
  4731. } D3D12_DEVICE_REMOVED_EXTENDED_DATA2;
  4732. typedef struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3
  4733. {
  4734. HRESULT DeviceRemovedReason;
  4735. D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 AutoBreadcrumbsOutput;
  4736. D3D12_DRED_PAGE_FAULT_OUTPUT2 PageFaultOutput;
  4737. D3D12_DRED_DEVICE_STATE DeviceState;
  4738. } D3D12_DEVICE_REMOVED_EXTENDED_DATA3;
  4739. typedef struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA
  4740. {
  4741. D3D12_DRED_VERSION Version; // Version of the DRED data
  4742. union
  4743. {
  4744. D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0;
  4745. D3D12_DEVICE_REMOVED_EXTENDED_DATA1 Dred_1_1;
  4746. D3D12_DEVICE_REMOVED_EXTENDED_DATA2 Dred_1_2;
  4747. D3D12_DEVICE_REMOVED_EXTENDED_DATA3 Dred_1_3;
  4748. };
  4749. } D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA;
  4750. [uuid(82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63), object, local, pointer_default(unique)]
  4751. interface ID3D12DeviceRemovedExtendedDataSettings
  4752. : IUnknown
  4753. {
  4754. void SetAutoBreadcrumbsEnablement(D3D12_DRED_ENABLEMENT Enablement);
  4755. void SetPageFaultEnablement(D3D12_DRED_ENABLEMENT Enablement);
  4756. void SetWatsonDumpEnablement(D3D12_DRED_ENABLEMENT Enablement);
  4757. };
  4758. [uuid(DBD5AE51-3317-4F0A-ADF9-1D7CEDCAAE0B), object, local, pointer_default(unique)]
  4759. interface ID3D12DeviceRemovedExtendedDataSettings1
  4760. : ID3D12DeviceRemovedExtendedDataSettings
  4761. {
  4762. void SetBreadcrumbContextEnablement(D3D12_DRED_ENABLEMENT Enablement);
  4763. };
  4764. [uuid(61552388-01ab-4008-a436-83db189566ea), object, local, pointer_default(unique)]
  4765. interface ID3D12DeviceRemovedExtendedDataSettings2
  4766. : ID3D12DeviceRemovedExtendedDataSettings1
  4767. {
  4768. void UseMarkersOnlyAutoBreadcrumbs(BOOL MarkersOnly);
  4769. };
  4770. [uuid(98931D33-5AE8-4791-AA3C-1A73A2934E71), object, local, pointer_default(unique)]
  4771. interface ID3D12DeviceRemovedExtendedData
  4772. : IUnknown
  4773. {
  4774. HRESULT GetAutoBreadcrumbsOutput([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT *pOutput);
  4775. HRESULT GetPageFaultAllocationOutput([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT *pOutput);
  4776. };
  4777. [uuid(9727A022-CF1D-4DDA-9EBA-EFFA653FC506), object, local, pointer_default(unique)]
  4778. interface ID3D12DeviceRemovedExtendedData1
  4779. : ID3D12DeviceRemovedExtendedData
  4780. {
  4781. HRESULT GetAutoBreadcrumbsOutput1([annotation("_Out_")] D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 *pOutput);
  4782. HRESULT GetPageFaultAllocationOutput1([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT1 *pOutput);
  4783. };
  4784. [uuid(67FC5816-E4CA-4915-BF18-42541272DA54), object, local, pointer_default(unique)]
  4785. interface ID3D12DeviceRemovedExtendedData2
  4786. : ID3D12DeviceRemovedExtendedData1
  4787. {
  4788. HRESULT GetPageFaultAllocationOutput2([annotation("_Out_")] D3D12_DRED_PAGE_FAULT_OUTPUT2 *pOutput);
  4789. D3D12_DRED_DEVICE_STATE GetDeviceState();
  4790. };
  4791. typedef enum D3D12_BACKGROUND_PROCESSING_MODE
  4792. {
  4793. D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
  4794. D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
  4795. D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK,
  4796. D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM,
  4797. } D3D12_BACKGROUND_PROCESSING_MODE;
  4798. typedef enum D3D12_MEASUREMENTS_ACTION
  4799. {
  4800. D3D12_MEASUREMENTS_ACTION_KEEP_ALL,
  4801. D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
  4802. D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY,
  4803. D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS,
  4804. } D3D12_MEASUREMENTS_ACTION;
  4805. [uuid(c70b221b-40e4-4a17-89af-025a0727a6dc), object, local, pointer_default(unique)]
  4806. interface ID3D12Device6 : ID3D12Device5
  4807. {
  4808. HRESULT SetBackgroundProcessingMode(
  4809. D3D12_BACKGROUND_PROCESSING_MODE Mode,
  4810. D3D12_MEASUREMENTS_ACTION MeasurementsAction,
  4811. [annotation("_In_opt_")] HANDLE hEventToSignalUponCompletion,
  4812. [annotation("_Out_opt_")] BOOL* pbFurtherMeasurementsDesired);
  4813. };
  4814. cpp_quote("DEFINE_GUID(D3D12_PROTECTED_RESOURCES_SESSION_HARDWARE_PROTECTED, 0x62B0084E, 0xC70E, 0x4DAA, 0xA1, 0x09, 0x30, 0xFF, 0x8D, 0x5A, 0x04, 0x82); ")
  4815. // D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
  4816. typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT
  4817. {
  4818. UINT NodeIndex; // input
  4819. UINT Count; // output
  4820. } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT;
  4821. // D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES
  4822. typedef struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES
  4823. {
  4824. UINT NodeIndex; // input
  4825. UINT Count; // input
  4826. GUID* pTypes; // output
  4827. } D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES;
  4828. typedef struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1
  4829. {
  4830. UINT NodeMask;
  4831. D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags;
  4832. GUID ProtectionType;
  4833. } D3D12_PROTECTED_RESOURCE_SESSION_DESC1;
  4834. [uuid(D6F12DD6-76FB-406E-8961-4296EEFC0409), object, local, pointer_default(unique)]
  4835. interface ID3D12ProtectedResourceSession1
  4836. : ID3D12ProtectedResourceSession
  4837. {
  4838. D3D12_PROTECTED_RESOURCE_SESSION_DESC1 GetDesc1();
  4839. };
  4840. [uuid(5c014b53-68a1-4b9b-8bd1-dd6046b9358b), object, local, pointer_default(unique)]
  4841. interface ID3D12Device7 : ID3D12Device6
  4842. {
  4843. HRESULT AddToStateObject(
  4844. [in] const D3D12_STATE_OBJECT_DESC* pAddition,
  4845. [in] ID3D12StateObject* pStateObjectToGrowFrom,
  4846. [in] REFIID riid, // ID3D12StateObject
  4847. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppNewStateObject
  4848. );
  4849. HRESULT CreateProtectedResourceSession1(
  4850. [annotation("_In_")] const D3D12_PROTECTED_RESOURCE_SESSION_DESC1* pDesc,
  4851. [annotation("_In_")] REFIID riid, // Expected: ID3D12ProtectedResourceSession1,
  4852. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppSession
  4853. );
  4854. };
  4855. [uuid(9218E6BB-F944-4F7E-A75C-B1B2C7B701F3), object, local, pointer_default(unique)]
  4856. interface ID3D12Device8 : ID3D12Device7
  4857. {
  4858. D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo2(
  4859. UINT visibleMask,
  4860. UINT numResourceDescs,
  4861. [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
  4862. [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
  4863. HRESULT CreateCommittedResource2(
  4864. [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
  4865. D3D12_HEAP_FLAGS HeapFlags,
  4866. [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
  4867. D3D12_RESOURCE_STATES InitialResourceState,
  4868. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  4869. [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
  4870. [in] REFIID riidResource, // Expected: ID3D12Resource1*
  4871. [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
  4872. HRESULT CreatePlacedResource1(
  4873. [annotation("_In_")] ID3D12Heap* pHeap,
  4874. UINT64 HeapOffset,
  4875. [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
  4876. D3D12_RESOURCE_STATES InitialState,
  4877. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  4878. [in] REFIID riid, // Expected: ID3D12Resource*
  4879. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
  4880. void CreateSamplerFeedbackUnorderedAccessView(
  4881. [annotation("_In_opt_")] ID3D12Resource* pTargetedResource,
  4882. [annotation("_In_opt_")] ID3D12Resource* pFeedbackResource,
  4883. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  4884. void GetCopyableFootprints1(
  4885. [annotation("_In_")] const D3D12_RESOURCE_DESC1* pResourceDesc,
  4886. [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES)")] UINT FirstSubresource,
  4887. [annotation("_In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource)")] UINT NumSubresources,
  4888. UINT64 BaseOffset,
  4889. [annotation("_Out_writes_opt_(NumSubresources)")] D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts,
  4890. [annotation("_Out_writes_opt_(NumSubresources)")] UINT* pNumRows,
  4891. [annotation("_Out_writes_opt_(NumSubresources)")] UINT64* pRowSizeInBytes,
  4892. [annotation("_Out_opt_")] UINT64* pTotalBytes);
  4893. };
  4894. [uuid(9D5E227A-4430-4161-88B3-3ECA6BB16E19), object, local, pointer_default(unique)]
  4895. interface ID3D12Resource1
  4896. : ID3D12Resource
  4897. {
  4898. HRESULT GetProtectedResourceSession(
  4899. [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
  4900. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
  4901. }
  4902. [uuid(BE36EC3B-EA85-4AEB-A45A-E9D76404A495), object, local, pointer_default(unique)]
  4903. interface ID3D12Resource2
  4904. : ID3D12Resource1
  4905. {
  4906. D3D12_RESOURCE_DESC1 GetDesc1();
  4907. }
  4908. [uuid(572F7389-2168-49E3-9693-D6DF5871BF6D), object, local, pointer_default(unique)]
  4909. interface ID3D12Heap1
  4910. : ID3D12Heap
  4911. {
  4912. HRESULT GetProtectedResourceSession(
  4913. [in] REFIID riid, // Expected: ID3D12ProtectedResourceSession
  4914. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppProtectedSession);
  4915. }
  4916. [uuid(6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D), object, local, pointer_default(unique)]
  4917. interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2
  4918. {
  4919. void SetProtectedResourceSession(
  4920. [annotation("_In_opt_")]ID3D12ProtectedResourceSession *pProtectedResourceSession
  4921. );
  4922. }
  4923. // Beginning Access
  4924. typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
  4925. {
  4926. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD,
  4927. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE,
  4928. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR,
  4929. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS,
  4930. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
  4931. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
  4932. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
  4933. } D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
  4934. typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
  4935. {
  4936. D3D12_CLEAR_VALUE ClearValue;
  4937. } D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
  4938. typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS
  4939. {
  4940. UINT AdditionalWidth;
  4941. UINT AdditionalHeight;
  4942. } D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
  4943. typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
  4944. {
  4945. D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
  4946. union
  4947. {
  4948. D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
  4949. D3D12_RENDER_PASS_BEGINNING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
  4950. };
  4951. } D3D12_RENDER_PASS_BEGINNING_ACCESS;
  4952. // Ending Access
  4953. typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
  4954. {
  4955. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD,
  4956. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE,
  4957. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE,
  4958. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS,
  4959. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_RENDER,
  4960. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_SRV,
  4961. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE_LOCAL_UAV
  4962. } D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
  4963. typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
  4964. {
  4965. UINT SrcSubresource;
  4966. UINT DstSubresource;
  4967. UINT DstX;
  4968. UINT DstY;
  4969. D3D12_RECT SrcRect; // (0, 0, 0, 0) == resolve entire resource.
  4970. } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
  4971. typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
  4972. {
  4973. ID3D12Resource* pSrcResource;
  4974. ID3D12Resource* pDstResource;
  4975. // Can be a subset of RT's array slices, but can't target subresources that were't part of RTV/DSV.
  4976. UINT SubresourceCount;
  4977. [annotation("_Field_size_full_(SubresourceCount)")] const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
  4978. DXGI_FORMAT Format;
  4979. D3D12_RESOLVE_MODE ResolveMode;
  4980. BOOL PreserveResolveSource;
  4981. } D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
  4982. typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS
  4983. {
  4984. UINT AdditionalWidth;
  4985. UINT AdditionalHeight;
  4986. } D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS;
  4987. typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
  4988. {
  4989. D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
  4990. union
  4991. {
  4992. D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
  4993. D3D12_RENDER_PASS_ENDING_ACCESS_PRESERVE_LOCAL_PARAMETERS PreserveLocal;
  4994. };
  4995. } D3D12_RENDER_PASS_ENDING_ACCESS;
  4996. // Render Target Desc
  4997. typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
  4998. {
  4999. D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
  5000. D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
  5001. D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
  5002. } D3D12_RENDER_PASS_RENDER_TARGET_DESC;
  5003. // Depth-Stencil Desc
  5004. typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
  5005. {
  5006. D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
  5007. D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
  5008. D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
  5009. D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
  5010. D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
  5011. } D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
  5012. typedef enum D3D12_RENDER_PASS_FLAGS
  5013. {
  5014. D3D12_RENDER_PASS_FLAG_NONE = 0x0,
  5015. D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
  5016. D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
  5017. D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4,
  5018. D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_DEPTH = 0x8,
  5019. D3D12_RENDER_PASS_FLAG_BIND_READ_ONLY_STENCIL = 0x10
  5020. } D3D12_RENDER_PASS_FLAGS;
  5021. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_RENDER_PASS_FLAGS )")
  5022. [uuid(DBB84C27-36CE-4FC9-B801-F048C46AC570), object, local, pointer_default(unique)]
  5023. interface ID3D12MetaCommand : ID3D12Pageable
  5024. {
  5025. UINT64 GetRequiredParameterResourceSize([annotation("_In_")] D3D12_META_COMMAND_PARAMETER_STAGE Stage, [annotation("_In_")] UINT ParameterIndex);
  5026. }
  5027. typedef struct D3D12_DISPATCH_RAYS_DESC
  5028. {
  5029. D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
  5030. D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
  5031. D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
  5032. D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
  5033. UINT Width;
  5034. UINT Height;
  5035. UINT Depth;
  5036. } D3D12_DISPATCH_RAYS_DESC;
  5037. typedef enum D3D12_SET_WORK_GRAPH_FLAGS
  5038. {
  5039. D3D12_SET_WORK_GRAPH_FLAG_NONE = 0x0,
  5040. D3D12_SET_WORK_GRAPH_FLAG_INITIALIZE = 0x1,
  5041. } D3D12_SET_WORK_GRAPH_FLAGS;
  5042. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_SET_WORK_GRAPH_FLAGS )" )
  5043. typedef struct D3D12_SET_WORK_GRAPH_DESC
  5044. {
  5045. D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
  5046. D3D12_SET_WORK_GRAPH_FLAGS Flags;
  5047. D3D12_GPU_VIRTUAL_ADDRESS_RANGE BackingMemory;
  5048. D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE NodeLocalRootArgumentsTable;
  5049. } D3D12_SET_WORK_GRAPH_DESC;
  5050. typedef struct D3D12_SET_RAYTRACING_PIPELINE_DESC
  5051. {
  5052. D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
  5053. } D3D12_SET_RAYTRACING_PIPELINE_DESC;
  5054. typedef struct D3D12_SET_GENERIC_PIPELINE_DESC
  5055. {
  5056. D3D12_PROGRAM_IDENTIFIER ProgramIdentifier;
  5057. } D3D12_SET_GENERIC_PIPELINE_DESC;
  5058. typedef enum D3D12_PROGRAM_TYPE
  5059. {
  5060. D3D12_PROGRAM_TYPE_GENERIC_PIPELINE = 1,
  5061. D3D12_PROGRAM_TYPE_RAYTRACING_PIPELINE = 4,
  5062. D3D12_PROGRAM_TYPE_WORK_GRAPH = 5
  5063. } D3D12_PROGRAM_TYPE;
  5064. typedef struct D3D12_SET_PROGRAM_DESC
  5065. {
  5066. D3D12_PROGRAM_TYPE Type;
  5067. union
  5068. {
  5069. D3D12_SET_GENERIC_PIPELINE_DESC GenericPipeline;
  5070. D3D12_SET_RAYTRACING_PIPELINE_DESC RaytracingPipeline;
  5071. D3D12_SET_WORK_GRAPH_DESC WorkGraph;
  5072. };
  5073. } D3D12_SET_PROGRAM_DESC;
  5074. typedef enum D3D12_DISPATCH_MODE
  5075. {
  5076. D3D12_DISPATCH_MODE_NODE_CPU_INPUT = 0, // D3D12_NODE_CPU_INPUT
  5077. D3D12_DISPATCH_MODE_NODE_GPU_INPUT = 1, // D3D12_NODE_GPU_INPUT in GPU memory
  5078. D3D12_DISPATCH_MODE_MULTI_NODE_CPU_INPUT = 2, // D3D12_MULTI_NODE_CPU_INPUT
  5079. D3D12_DISPATCH_MODE_MULTI_NODE_GPU_INPUT = 3 // D3D12_MULTI_NODE_GPU_INPUT in GPU memory
  5080. } D3D12_DISPATCH_MODE;
  5081. typedef struct D3D12_NODE_CPU_INPUT
  5082. {
  5083. UINT EntrypointIndex;
  5084. UINT NumRecords;
  5085. const void* pRecords;
  5086. UINT64 RecordStrideInBytes;
  5087. } D3D12_NODE_CPU_INPUT;
  5088. typedef struct D3D12_NODE_GPU_INPUT
  5089. {
  5090. UINT EntrypointIndex;
  5091. UINT NumRecords;
  5092. D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE Records;
  5093. } D3D12_NODE_GPU_INPUT;
  5094. typedef struct D3D12_MULTI_NODE_CPU_INPUT
  5095. {
  5096. UINT NumNodeInputs;
  5097. const D3D12_NODE_CPU_INPUT* pNodeInputs;
  5098. UINT64 NodeInputStrideInBytes;
  5099. } D3D12_MULTI_NODE_CPU_INPUT;
  5100. typedef struct D3D12_MULTI_NODE_GPU_INPUT
  5101. {
  5102. UINT NumNodeInputs;
  5103. D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE NodeInputs; // D3D12_GPU_NODE_INPUT array
  5104. } D3D12_MULTI_NODE_GPU_INPUT;
  5105. typedef struct D3D12_DISPATCH_GRAPH_DESC
  5106. {
  5107. D3D12_DISPATCH_MODE Mode;
  5108. union
  5109. {
  5110. D3D12_NODE_CPU_INPUT NodeCPUInput;
  5111. D3D12_GPU_VIRTUAL_ADDRESS NodeGPUInput;
  5112. D3D12_MULTI_NODE_CPU_INPUT MultiNodeCPUInput;
  5113. D3D12_GPU_VIRTUAL_ADDRESS MultiNodeGPUInput;
  5114. };
  5115. } D3D12_DISPATCH_GRAPH_DESC;
  5116. [uuid(8754318e-d3a9-4541-98cf-645b50dc4874), object, local, pointer_default(unique)]
  5117. interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
  5118. {
  5119. void BeginRenderPass(
  5120. [annotation("_In_")] UINT NumRenderTargets,
  5121. [annotation("_In_reads_opt_(NumRenderTargets)")] const D3D12_RENDER_PASS_RENDER_TARGET_DESC* pRenderTargets,
  5122. [annotation("_In_opt_")] const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC* pDepthStencil,
  5123. D3D12_RENDER_PASS_FLAGS Flags
  5124. );
  5125. void EndRenderPass();
  5126. void InitializeMetaCommand(
  5127. [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
  5128. [annotation("_In_reads_bytes_opt_(InitializationParametersDataSizeInBytes)")] const void * pInitializationParametersData,
  5129. [annotation("_In_")] SIZE_T InitializationParametersDataSizeInBytes
  5130. );
  5131. void ExecuteMetaCommand(
  5132. [annotation("_In_")] ID3D12MetaCommand * pMetaCommand,
  5133. [annotation("_In_reads_bytes_opt_(ExecutionParametersDataSizeInBytes)")] const void * pExecutionParametersData,
  5134. [annotation("_In_")] SIZE_T ExecutionParametersDataSizeInBytes
  5135. );
  5136. void BuildRaytracingAccelerationStructure(
  5137. [annotation("_In_")] const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC* pDesc,
  5138. [annotation("_In_")] UINT NumPostbuildInfoDescs,
  5139. [annotation("_In_reads_opt_(NumPostbuildInfoDescs)")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pPostbuildInfoDescs
  5140. );
  5141. void EmitRaytracingAccelerationStructurePostbuildInfo(
  5142. [annotation("_In_")] const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC* pDesc,
  5143. [annotation("_In_")] UINT NumSourceAccelerationStructures,
  5144. [annotation("_In_reads_( NumSourceAccelerationStructures )")] const D3D12_GPU_VIRTUAL_ADDRESS* pSourceAccelerationStructureData);
  5145. void CopyRaytracingAccelerationStructure(
  5146. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData,
  5147. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData,
  5148. [annotation("_In_")] D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode);
  5149. void SetPipelineState1(
  5150. [annotation("_In_")] ID3D12StateObject* pStateObject);
  5151. void DispatchRays(
  5152. [annotation("_In_")] const D3D12_DISPATCH_RAYS_DESC* pDesc);
  5153. }
  5154. typedef enum D3D12_SHADER_CACHE_MODE
  5155. {
  5156. D3D12_SHADER_CACHE_MODE_MEMORY,
  5157. D3D12_SHADER_CACHE_MODE_DISK,
  5158. } D3D12_SHADER_CACHE_MODE;
  5159. typedef enum D3D12_SHADER_CACHE_FLAGS
  5160. {
  5161. D3D12_SHADER_CACHE_FLAG_NONE = 0x0,
  5162. D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1,
  5163. D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2,
  5164. } D3D12_SHADER_CACHE_FLAGS;
  5165. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_FLAGS )")
  5166. typedef struct D3D12_SHADER_CACHE_SESSION_DESC
  5167. {
  5168. GUID Identifier;
  5169. D3D12_SHADER_CACHE_MODE Mode;
  5170. D3D12_SHADER_CACHE_FLAGS Flags;
  5171. UINT MaximumInMemoryCacheSizeBytes;
  5172. UINT MaximumInMemoryCacheEntries;
  5173. UINT MaximumValueFileSizeBytes;
  5174. UINT64 Version;
  5175. } D3D12_SHADER_CACHE_SESSION_DESC;
  5176. typedef enum D3D12_BARRIER_LAYOUT
  5177. {
  5178. D3D12_BARRIER_LAYOUT_UNDEFINED = 0xffffffff,
  5179. D3D12_BARRIER_LAYOUT_COMMON = 0,
  5180. D3D12_BARRIER_LAYOUT_PRESENT = 0,
  5181. D3D12_BARRIER_LAYOUT_GENERIC_READ,
  5182. D3D12_BARRIER_LAYOUT_RENDER_TARGET,
  5183. D3D12_BARRIER_LAYOUT_UNORDERED_ACCESS,
  5184. D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_WRITE,
  5185. D3D12_BARRIER_LAYOUT_DEPTH_STENCIL_READ,
  5186. D3D12_BARRIER_LAYOUT_SHADER_RESOURCE,
  5187. D3D12_BARRIER_LAYOUT_COPY_SOURCE,
  5188. D3D12_BARRIER_LAYOUT_COPY_DEST,
  5189. D3D12_BARRIER_LAYOUT_RESOLVE_SOURCE,
  5190. D3D12_BARRIER_LAYOUT_RESOLVE_DEST,
  5191. D3D12_BARRIER_LAYOUT_SHADING_RATE_SOURCE,
  5192. D3D12_BARRIER_LAYOUT_VIDEO_DECODE_READ,
  5193. D3D12_BARRIER_LAYOUT_VIDEO_DECODE_WRITE,
  5194. D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_READ,
  5195. D3D12_BARRIER_LAYOUT_VIDEO_PROCESS_WRITE,
  5196. D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_READ,
  5197. D3D12_BARRIER_LAYOUT_VIDEO_ENCODE_WRITE,
  5198. D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COMMON,
  5199. D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_GENERIC_READ,
  5200. D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_UNORDERED_ACCESS,
  5201. D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_SHADER_RESOURCE,
  5202. D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_SOURCE,
  5203. D3D12_BARRIER_LAYOUT_DIRECT_QUEUE_COPY_DEST,
  5204. D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COMMON,
  5205. D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_GENERIC_READ,
  5206. D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_UNORDERED_ACCESS,
  5207. D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_SHADER_RESOURCE,
  5208. D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_SOURCE,
  5209. D3D12_BARRIER_LAYOUT_COMPUTE_QUEUE_COPY_DEST,
  5210. D3D12_BARRIER_LAYOUT_VIDEO_QUEUE_COMMON,
  5211. } D3D12_BARRIER_LAYOUT;
  5212. typedef enum D3D12_BARRIER_SYNC
  5213. {
  5214. D3D12_BARRIER_SYNC_NONE = 0x0,
  5215. D3D12_BARRIER_SYNC_ALL = 0x1,
  5216. D3D12_BARRIER_SYNC_DRAW = 0x2,
  5217. D3D12_BARRIER_SYNC_INDEX_INPUT = 0x4,
  5218. D3D12_BARRIER_SYNC_VERTEX_SHADING = 0x8,
  5219. D3D12_BARRIER_SYNC_PIXEL_SHADING = 0x10,
  5220. D3D12_BARRIER_SYNC_DEPTH_STENCIL = 0x20,
  5221. D3D12_BARRIER_SYNC_RENDER_TARGET = 0x40,
  5222. D3D12_BARRIER_SYNC_COMPUTE_SHADING = 0x80,
  5223. D3D12_BARRIER_SYNC_RAYTRACING = 0x100,
  5224. D3D12_BARRIER_SYNC_COPY = 0x200,
  5225. D3D12_BARRIER_SYNC_RESOLVE = 0x400,
  5226. D3D12_BARRIER_SYNC_EXECUTE_INDIRECT = 0x800,
  5227. D3D12_BARRIER_SYNC_PREDICATION = 0x800, // Aliased with SYNC_EXECUTE_INDIRECT
  5228. D3D12_BARRIER_SYNC_ALL_SHADING = 0x1000,
  5229. D3D12_BARRIER_SYNC_NON_PIXEL_SHADING = 0x2000,
  5230. D3D12_BARRIER_SYNC_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO = 0x4000,
  5231. D3D12_BARRIER_SYNC_CLEAR_UNORDERED_ACCESS_VIEW = 0x8000,
  5232. D3D12_BARRIER_SYNC_VIDEO_DECODE = 0x100000,
  5233. D3D12_BARRIER_SYNC_VIDEO_PROCESS = 0x200000,
  5234. D3D12_BARRIER_SYNC_VIDEO_ENCODE = 0x400000,
  5235. D3D12_BARRIER_SYNC_BUILD_RAYTRACING_ACCELERATION_STRUCTURE = 0x800000,
  5236. D3D12_BARRIER_SYNC_COPY_RAYTRACING_ACCELERATION_STRUCTURE = 0x1000000,
  5237. D3D12_BARRIER_SYNC_SPLIT = 0x80000000,
  5238. } D3D12_BARRIER_SYNC;
  5239. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_SYNC )" )
  5240. typedef enum D3D12_BARRIER_ACCESS
  5241. {
  5242. D3D12_BARRIER_ACCESS_COMMON = 0,
  5243. D3D12_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
  5244. D3D12_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
  5245. D3D12_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
  5246. D3D12_BARRIER_ACCESS_RENDER_TARGET = 0x8,
  5247. D3D12_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
  5248. D3D12_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
  5249. D3D12_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
  5250. D3D12_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
  5251. D3D12_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
  5252. D3D12_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
  5253. D3D12_BARRIER_ACCESS_PREDICATION = 0x200, // Aliased with ACCESS_INDIRECT_ARGUMENT
  5254. D3D12_BARRIER_ACCESS_COPY_DEST = 0x400,
  5255. D3D12_BARRIER_ACCESS_COPY_SOURCE = 0x800,
  5256. D3D12_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
  5257. D3D12_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
  5258. D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
  5259. D3D12_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
  5260. D3D12_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
  5261. D3D12_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
  5262. D3D12_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
  5263. D3D12_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
  5264. D3D12_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
  5265. D3D12_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
  5266. D3D12_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
  5267. D3D12_BARRIER_ACCESS_NO_ACCESS = 0x80000000,
  5268. } D3D12_BARRIER_ACCESS;
  5269. cpp_quote( "DEFINE_ENUM_FLAG_OPERATORS( D3D12_BARRIER_ACCESS )" )
  5270. typedef enum D3D12_BARRIER_TYPE
  5271. {
  5272. D3D12_BARRIER_TYPE_GLOBAL,
  5273. D3D12_BARRIER_TYPE_TEXTURE,
  5274. D3D12_BARRIER_TYPE_BUFFER,
  5275. } D3D12_BARRIER_TYPE;
  5276. typedef enum D3D12_TEXTURE_BARRIER_FLAGS
  5277. {
  5278. D3D12_TEXTURE_BARRIER_FLAG_NONE = 0x0,
  5279. D3D12_TEXTURE_BARRIER_FLAG_DISCARD = 0x1,
  5280. } D3D12_TEXTURE_BARRIER_FLAGS;
  5281. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_TEXTURE_BARRIER_FLAGS )")
  5282. typedef struct D3D12_BARRIER_SUBRESOURCE_RANGE
  5283. {
  5284. UINT IndexOrFirstMipLevel;
  5285. UINT NumMipLevels;
  5286. UINT FirstArraySlice;
  5287. UINT NumArraySlices;
  5288. UINT FirstPlane;
  5289. UINT NumPlanes;
  5290. } D3D12_BARRIER_SUBRESOURCE_RANGE;
  5291. typedef struct D3D12_GLOBAL_BARRIER
  5292. {
  5293. D3D12_BARRIER_SYNC SyncBefore;
  5294. D3D12_BARRIER_SYNC SyncAfter;
  5295. D3D12_BARRIER_ACCESS AccessBefore;
  5296. D3D12_BARRIER_ACCESS AccessAfter;
  5297. } D3D12_GLOBAL_BARRIER;
  5298. typedef struct D3D12_TEXTURE_BARRIER
  5299. {
  5300. D3D12_BARRIER_SYNC SyncBefore;
  5301. D3D12_BARRIER_SYNC SyncAfter;
  5302. D3D12_BARRIER_ACCESS AccessBefore;
  5303. D3D12_BARRIER_ACCESS AccessAfter;
  5304. D3D12_BARRIER_LAYOUT LayoutBefore;
  5305. D3D12_BARRIER_LAYOUT LayoutAfter;
  5306. [annotation("_In_")] ID3D12Resource *pResource;
  5307. D3D12_BARRIER_SUBRESOURCE_RANGE Subresources;
  5308. D3D12_TEXTURE_BARRIER_FLAGS Flags;
  5309. } D3D12_TEXTURE_BARRIER;
  5310. typedef struct D3D12_BUFFER_BARRIER
  5311. {
  5312. D3D12_BARRIER_SYNC SyncBefore;
  5313. D3D12_BARRIER_SYNC SyncAfter;
  5314. D3D12_BARRIER_ACCESS AccessBefore;
  5315. D3D12_BARRIER_ACCESS AccessAfter;
  5316. [annotation("_In_")] ID3D12Resource *pResource;
  5317. UINT64 Offset;
  5318. UINT64 Size;
  5319. } D3D12_BUFFER_BARRIER;
  5320. typedef struct D3D12_BARRIER_GROUP
  5321. {
  5322. D3D12_BARRIER_TYPE Type;
  5323. UINT32 NumBarriers;
  5324. union
  5325. {
  5326. [annotation("_In_reads_(NumBarriers)")] const D3D12_GLOBAL_BARRIER *pGlobalBarriers;
  5327. [annotation("_In_reads_(NumBarriers)")] const D3D12_TEXTURE_BARRIER *pTextureBarriers;
  5328. [annotation("_In_reads_(NumBarriers)")] const D3D12_BUFFER_BARRIER *pBufferBarriers;
  5329. };
  5330. } D3D12_BARRIER_GROUP;
  5331. [uuid(28e2495d-0f64-4ae4-a6ec-129255dc49a8), object, local, pointer_default(unique)]
  5332. interface ID3D12ShaderCacheSession
  5333. : ID3D12DeviceChild
  5334. {
  5335. HRESULT FindValue(
  5336. [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
  5337. UINT KeySize,
  5338. [out, annotation("_Out_writes_bytes_(*pValueSize)")] void* pValue,
  5339. [annotation("_Inout_")] UINT* pValueSize);
  5340. HRESULT StoreValue(
  5341. [in, annotation("_In_reads_bytes_(KeySize)")] const void* pKey,
  5342. UINT KeySize,
  5343. [in, annotation("_In_reads_bytes_(ValueSize)")] const void* pValue,
  5344. UINT ValueSize);
  5345. void SetDeleteOnDestroy();
  5346. D3D12_SHADER_CACHE_SESSION_DESC GetDesc();
  5347. };
  5348. typedef enum D3D12_SHADER_CACHE_KIND_FLAGS
  5349. {
  5350. D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1,
  5351. D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2,
  5352. D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4,
  5353. D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8,
  5354. } D3D12_SHADER_CACHE_KIND_FLAGS;
  5355. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_KIND_FLAGS )")
  5356. typedef enum D3D12_SHADER_CACHE_CONTROL_FLAGS
  5357. {
  5358. D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1,
  5359. D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2,
  5360. D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4,
  5361. } D3D12_SHADER_CACHE_CONTROL_FLAGS;
  5362. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_CONTROL_FLAGS )")
  5363. [uuid(4c80e962-f032-4f60-bc9e-ebc2cfa1d83c), object, local, pointer_default(unique)]
  5364. interface ID3D12Device9
  5365. : ID3D12Device8
  5366. {
  5367. HRESULT CreateShaderCacheSession(
  5368. [annotation("_In_")] const D3D12_SHADER_CACHE_SESSION_DESC* pDesc,
  5369. REFIID riid,
  5370. [annotation("_COM_Outptr_opt_")] void** ppvSession);
  5371. HRESULT ShaderCacheControl(
  5372. D3D12_SHADER_CACHE_KIND_FLAGS Kinds,
  5373. D3D12_SHADER_CACHE_CONTROL_FLAGS Control);
  5374. HRESULT CreateCommandQueue1(
  5375. [annotation("_In_")] const D3D12_COMMAND_QUEUE_DESC* pDesc,
  5376. REFIID CreatorID,
  5377. [in] REFIID riid, // Expected: ID3D12CommandQueue
  5378. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppCommandQueue
  5379. );
  5380. };
  5381. [uuid(517f8718-aa66-49f9-b02b-a7ab89c06031), object, local, pointer_default(unique)]
  5382. interface ID3D12Device10
  5383. : ID3D12Device9
  5384. {
  5385. HRESULT CreateCommittedResource3(
  5386. [annotation("_In_")] const D3D12_HEAP_PROPERTIES* pHeapProperties,
  5387. D3D12_HEAP_FLAGS HeapFlags,
  5388. [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
  5389. D3D12_BARRIER_LAYOUT InitialLayout,
  5390. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  5391. [annotation("_In_opt_")] ID3D12ProtectedResourceSession* pProtectedSession,
  5392. UINT32 NumCastableFormats,
  5393. [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
  5394. [in] REFIID riidResource, // Expected: ID3D12Resource1*
  5395. [out, iid_is(riidResource), annotation("_COM_Outptr_opt_")] void** ppvResource);
  5396. HRESULT CreatePlacedResource2(
  5397. [annotation("_In_")] ID3D12Heap* pHeap,
  5398. UINT64 HeapOffset,
  5399. [annotation("_In_")] const D3D12_RESOURCE_DESC1* pDesc,
  5400. D3D12_BARRIER_LAYOUT InitialLayout,
  5401. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  5402. UINT32 NumCastableFormats,
  5403. [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
  5404. [in] REFIID riid, // Expected: ID3D12Resource*
  5405. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource);
  5406. HRESULT CreateReservedResource2(
  5407. [annotation("_In_")] const D3D12_RESOURCE_DESC* pDesc,
  5408. D3D12_BARRIER_LAYOUT InitialLayout,
  5409. [annotation("_In_opt_")] const D3D12_CLEAR_VALUE* pOptimizedClearValue,
  5410. [annotation("_In_opt_")] ID3D12ProtectedResourceSession *pProtectedSession,
  5411. UINT32 NumCastableFormats,
  5412. [annotation("_In_opt_count_(NumCastableFormats)")] const DXGI_FORMAT *pCastableFormats,
  5413. [in] REFIID riid, // Expected: ID3D12Resource1*
  5414. [out, iid_is(riid), annotation("_COM_Outptr_opt_")] void** ppvResource
  5415. );
  5416. };
  5417. [uuid(5405c344-d457-444e-b4dd-2366e45aee39), object, local, pointer_default(unique)]
  5418. interface ID3D12Device11
  5419. : ID3D12Device10
  5420. {
  5421. void CreateSampler2(
  5422. [annotation("_In_")] const D3D12_SAMPLER_DESC2* pDesc,
  5423. [annotation("_In_")] D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5424. };
  5425. [uuid(5af5c532-4c91-4cd0-b541-15a405395fc5), object, local, pointer_default(unique)]
  5426. interface ID3D12Device12
  5427. : ID3D12Device11
  5428. {
  5429. D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo3(
  5430. UINT visibleMask,
  5431. UINT numResourceDescs,
  5432. [annotation("_In_reads_(numResourceDescs)")] const D3D12_RESOURCE_DESC1* pResourceDescs,
  5433. [annotation("_In_opt_count_(numResourceDescs)")] const UINT32* pNumCastableFormats,
  5434. [annotation("_In_opt_count_(numResourceDescs)")] const DXGI_FORMAT *const *ppCastableFormats,
  5435. [annotation("_Out_writes_opt_(numResourceDescs)")] D3D12_RESOURCE_ALLOCATION_INFO1* pResourceAllocationInfo1);
  5436. };
  5437. [uuid(14eecffc-4df8-40f7-a118-5c816f45695e), object, local, pointer_default(unique)]
  5438. interface ID3D12Device13
  5439. : ID3D12Device12
  5440. {
  5441. HRESULT OpenExistingHeapFromAddress1(
  5442. [annotation("_In_")] const void* pAddress,
  5443. SIZE_T size,
  5444. [in] REFIID riid, // Expected: ID3D12Heap
  5445. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvHeap
  5446. );
  5447. };
  5448. [uuid(5f6e592d-d895-44c2-8e4a-88ad4926d323), object, local, pointer_default(unique)]
  5449. interface ID3D12Device14 : ID3D12Device13
  5450. {
  5451. HRESULT CreateRootSignatureFromSubobjectInLibrary(
  5452. [annotation("_In_")] UINT nodeMask,
  5453. [annotation("_In_reads_(blobLengthInBytes)")] const void* pLibraryBlob,
  5454. [annotation("_In_")] SIZE_T blobLengthInBytes,
  5455. [annotation("_In_opt_")] LPCWSTR subobjectName,
  5456. [in] REFIID riid, // Expected ID3D12RootSignature
  5457. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvRootSignature);
  5458. };
  5459. [uuid(bc66d368-7373-4943-8757-fc87dc79e476), object, local, pointer_default(unique)]
  5460. interface ID3D12VirtualizationGuestDevice
  5461. : IUnknown
  5462. {
  5463. HRESULT ShareWithHost(
  5464. [annotation("_In_")] ID3D12DeviceChild* pObject,
  5465. [annotation("_Out_")] HANDLE* pHandle
  5466. );
  5467. HRESULT CreateFenceFd(
  5468. [annotation("_In_")] ID3D12Fence *pFence,
  5469. UINT64 FenceValue,
  5470. [annotation("_Out_")] int *pFenceFd
  5471. );
  5472. };
  5473. [uuid(7071e1f0-e84b-4b33-974f-12fa49de65c5), object, local, pointer_default(unique)]
  5474. interface ID3D12Tools
  5475. : IUnknown
  5476. {
  5477. void EnableShaderInstrumentation(BOOL bEnable);
  5478. BOOL ShaderInstrumentationEnabled();
  5479. }
  5480. [uuid(e4fbc019-dd3c-43e1-8f32-7f649575f0a0), object, local, pointer_default(unique)]
  5481. interface ID3D12Tools1
  5482. : ID3D12Tools
  5483. {
  5484. HRESULT ReserveGPUVARangesAtCreate(
  5485. [annotation("_In_reads_(uiNumRanges)")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pRanges,
  5486. [annotation("_In_")] UINT uiNumRanges);
  5487. void ClearReservedGPUVARangesList();
  5488. }
  5489. [uuid(01d393c5-c9b0-42a1-958c-c26b02d4d097), object, local, pointer_default(unique)]
  5490. interface ID3D12Tools2
  5491. : ID3D12Tools1
  5492. {
  5493. HRESULT SetApplicationSpecificDriverState(
  5494. [annotation("_In_")] IUnknown* pAdapter,
  5495. [annotation("_In_opt_")] ID3DBlob* pBlob);
  5496. };
  5497. [uuid(8f1359db-d8d1-42f9-b5cf-79f4cbad0d3d), object, local, pointer_default(unique)]
  5498. interface ID3D12PageableTools
  5499. : IUnknown
  5500. {
  5501. HRESULT GetAllocation(
  5502. [annotation("_Inout_")] D3D12_GPU_VIRTUAL_ADDRESS_RANGE* pAllocation);
  5503. }
  5504. [uuid(2ea68e9c-19c3-4e47-a109-6cdadff0aca9), object, local, pointer_default(unique)]
  5505. interface ID3D12DeviceTools
  5506. : IUnknown
  5507. {
  5508. void SetNextAllocationAddress(
  5509. [annotation("_In_")] D3D12_GPU_VIRTUAL_ADDRESS nextAllocationVirtualAddress);
  5510. }
  5511. typedef enum D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS
  5512. {
  5513. D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_UNKNOWN = 1,
  5514. D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_USED = 2,
  5515. D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_IGNORED = 3,
  5516. D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_NOT_SPECIFIED = 4,
  5517. } D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS;
  5518. [uuid(e30e9fc7-e641-4d6e-8a81-9dd9206ec47a), object, local, pointer_default(unique)]
  5519. interface ID3D12DeviceTools1
  5520. : ID3D12DeviceTools
  5521. {
  5522. HRESULT GetApplicationSpecificDriverState(
  5523. [annotation("_COM_Outptr_")] ID3DBlob** ppBlob);
  5524. D3D12_APPLICATION_SPECIFIC_DRIVER_BLOB_STATUS GetApplicationSpecificDriverBlobStatus();
  5525. }
  5526. typedef struct D3D12_SUBRESOURCE_DATA
  5527. {
  5528. const void* pData;
  5529. LONG_PTR RowPitch;
  5530. LONG_PTR SlicePitch;
  5531. } D3D12_SUBRESOURCE_DATA;
  5532. typedef struct D3D12_MEMCPY_DEST
  5533. {
  5534. void* pData;
  5535. SIZE_T RowPitch;
  5536. SIZE_T SlicePitch;
  5537. } D3D12_MEMCPY_DEST;
  5538. cpp_quote( "#if !defined( D3D12_IGNORE_SDK_LAYERS ) ")
  5539. cpp_quote( "#include \"d3d12sdklayers.h\" ")
  5540. cpp_quote( "#endif ")
  5541. cpp_quote("")
  5542. cpp_quote("///////////////////////////////////////////////////////////////////////////")
  5543. cpp_quote("// D3D12CreateDevice")
  5544. cpp_quote("// ------------------")
  5545. cpp_quote("//")
  5546. cpp_quote("// pAdapter")
  5547. cpp_quote("// If NULL, D3D12CreateDevice will choose the primary adapter.")
  5548. cpp_quote("// If non-NULL, D3D12CreateDevice will use the provided adapter.")
  5549. cpp_quote("// MinimumFeatureLevel")
  5550. cpp_quote("// The minimum feature level required for successful device creation.")
  5551. cpp_quote("// riid")
  5552. cpp_quote("// The interface IID of the device to be returned. Expected: ID3D12Device.")
  5553. cpp_quote("// ppDevice")
  5554. cpp_quote("// Pointer to returned interface. May be NULL.")
  5555. cpp_quote("//")
  5556. cpp_quote("// Return Values")
  5557. cpp_quote("// Any of those documented for ")
  5558. cpp_quote("// CreateDXGIFactory1")
  5559. cpp_quote("// IDXGIFactory::EnumAdapters")
  5560. cpp_quote("// D3D12CreateDevice")
  5561. cpp_quote("//")
  5562. cpp_quote("///////////////////////////////////////////////////////////////////////////")
  5563. cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*, ")
  5564. cpp_quote(" D3D_FEATURE_LEVEL, ")
  5565. cpp_quote(" _In_ REFIID, _COM_Outptr_opt_ void** );")
  5566. cpp_quote("")
  5567. cpp_quote("HRESULT WINAPI D3D12CreateDevice(")
  5568. cpp_quote(" _In_opt_ IUnknown* pAdapter,")
  5569. cpp_quote(" D3D_FEATURE_LEVEL MinimumFeatureLevel,")
  5570. cpp_quote(" _In_ REFIID riid, // Expected: ID3D12Device")
  5571. cpp_quote(" _COM_Outptr_opt_ void** ppDevice );")
  5572. cpp_quote("")
  5573. cpp_quote("")
  5574. cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );")
  5575. cpp_quote("")
  5576. cpp_quote("HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
  5577. cpp_quote("")
  5578. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5579. cpp_quote("// D3D12EnableExperimentalFeatures")
  5580. cpp_quote("//")
  5581. cpp_quote("// Pass in a list of feature GUIDs to be enabled together.")
  5582. cpp_quote("// ")
  5583. cpp_quote("// If a particular feature requires some configuration information on enablement, it will have")
  5584. cpp_quote("// a configuration struct that can be passed alongside the GUID.")
  5585. cpp_quote("// ")
  5586. cpp_quote("// Some features might use an interface IID as the GUID. For these, once the feature is enabled via")
  5587. cpp_quote("// D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface")
  5588. cpp_quote("// for manipulating the feature. This allows for control that might not cleanly be expressed by just ")
  5589. cpp_quote("// the configuration struct that D3D12EnableExperimentalFeatures provides.")
  5590. cpp_quote("//")
  5591. cpp_quote("// If this method is called and a change to existing feature enablement is made, ")
  5592. cpp_quote("// all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one")
  5593. cpp_quote("// singleton device for a process. Removing the devices when configuration changes prevents")
  5594. cpp_quote("// mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.")
  5595. cpp_quote("//")
  5596. cpp_quote("// The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.")
  5597. cpp_quote("// The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed")
  5598. cpp_quote("// in are known to be incompatible with each other, or other errors.")
  5599. cpp_quote("// Returns S_OK otherwise.")
  5600. cpp_quote("//")
  5601. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5602. cpp_quote("HRESULT WINAPI D3D12EnableExperimentalFeatures(")
  5603. cpp_quote(" UINT NumFeatures,")
  5604. cpp_quote(" _In_count_(NumFeatures) const IID* pIIDs,")
  5605. cpp_quote(" _In_opt_count_(NumFeatures) void* pConfigurationStructs,")
  5606. cpp_quote(" _In_opt_count_(NumFeatures) UINT* pConfigurationStructSizes);")
  5607. cpp_quote("")
  5608. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5609. cpp_quote("// Experimental Feature: D3D12ExperimentalShaderModels")
  5610. cpp_quote("//")
  5611. cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,")
  5612. cpp_quote("// meaning shader models that haven't been finalized for use in retail.")
  5613. cpp_quote("//")
  5614. cpp_quote("// Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.")
  5615. cpp_quote("//")
  5616. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5617. cpp_quote("static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */")
  5618. cpp_quote(" 0x76f5573e,")
  5619. cpp_quote(" 0xf13a,")
  5620. cpp_quote(" 0x40f5,")
  5621. cpp_quote(" { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }")
  5622. cpp_quote("};")
  5623. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5624. cpp_quote("// Experimental Feature: D3D12TiledResourceTier4")
  5625. cpp_quote("//")
  5626. cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable tiled resource tier 4 support,")
  5627. cpp_quote("// meaning texture tile data-inheritance is allowed.")
  5628. cpp_quote("//")
  5629. cpp_quote("// Enabling D3D12TiledResourceTier4 needs no configuration struct, pass NULL in the pConfigurationStructs array.")
  5630. cpp_quote("//")
  5631. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5632. cpp_quote("static const UUID D3D12TiledResourceTier4 = { /* c9c4725f-a81a-4f56-8c5b-c51039d694fb */")
  5633. cpp_quote(" 0xc9c4725f,")
  5634. cpp_quote(" 0xa81a,")
  5635. cpp_quote(" 0x4f56,")
  5636. cpp_quote(" { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb }")
  5637. cpp_quote("};")
  5638. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5639. cpp_quote("// Experimental Feature: D3D12GPUUploadHeapsOnUnsupportedOS")
  5640. cpp_quote("//")
  5641. cpp_quote("// Use with D3D12EnableExperimentalFeatures to enable GPU upload heaps support on an unsupported OS, ")
  5642. cpp_quote("// driver support is still required for this feature.")
  5643. cpp_quote("//")
  5644. cpp_quote("// Enabling D3D12GPUUploadHeapsOnUnsupportedOS needs no configuration struct, pass NULL in the pConfigurationStructs array.")
  5645. cpp_quote("//")
  5646. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5647. cpp_quote("static const UUID D3D12GPUUploadHeapsOnUnsupportedOS = { /* 45dc51f3-767f-4588-b206-0baa2b16fbae */")
  5648. cpp_quote(" 0x45dc51f3,")
  5649. cpp_quote(" 0x767f,")
  5650. cpp_quote(" 0x4588,")
  5651. cpp_quote(" { 0xb2, 0x06, 0x0b, 0xaa, 0x2b, 0x16, 0xfb, 0xae }")
  5652. cpp_quote("};")
  5653. cpp_quote("// --------------------------------------------------------------------------------------------------------------------------------")
  5654. cpp_quote("// D3D12GetInterface")
  5655. cpp_quote("//")
  5656. cpp_quote("// Retrieve Global D3D12 Interface.")
  5657. cpp_quote("//")
  5658. cpp_quote("")
  5659. cpp_quote("DEFINE_GUID(CLSID_D3D12Debug, 0xf2352aeb, 0xdd84, 0x49fe, 0xb9, 0x7b, 0xa9, 0xdc, 0xfd, 0xcc, 0x1b, 0x4f);")
  5660. cpp_quote("DEFINE_GUID(CLSID_D3D12Tools, 0xe38216b1, 0x3c8c, 0x4833, 0xaa, 0x09, 0x0a, 0x06, 0xb6, 0x5d, 0x96, 0xc8);")
  5661. cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceRemovedExtendedData, 0x4a75bbc4, 0x9ff4, 0x4ad8, 0x9f, 0x18, 0xab, 0xae, 0x84, 0xdc, 0x5f, 0xf2);")
  5662. cpp_quote("DEFINE_GUID(CLSID_D3D12SDKConfiguration, 0x7cda6aca, 0xa03e, 0x49c8, 0x94, 0x58, 0x03, 0x34, 0xd2, 0x0e, 0x07, 0xce);")
  5663. cpp_quote("DEFINE_GUID(CLSID_D3D12DeviceFactory, 0x114863bf, 0xc386, 0x4aee, 0xb3, 0x9d, 0x8f, 0x0b, 0xbb, 0x06, 0x29, 0x55);")
  5664. cpp_quote("DEFINE_GUID(CLSID_D3D12DSRDeviceFactory, 0xbb6dd27e, 0x94a9, 0x41a6, 0x9f, 0x1b, 0x13, 0x37, 0x72, 0x17, 0x24, 0x28);")
  5665. cpp_quote("")
  5666. cpp_quote("typedef HRESULT (WINAPI* PFN_D3D12_GET_INTERFACE)( _In_ REFCLSID, _In_ REFIID, _COM_Outptr_opt_ void** );")
  5667. cpp_quote("")
  5668. cpp_quote("HRESULT WINAPI D3D12GetInterface( _In_ REFCLSID rclsid, _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );")
  5669. cpp_quote("")
  5670. //==================================================================================================================================
  5671. //
  5672. // SDK Configuration
  5673. //
  5674. //==================================================================================================================================
  5675. [uuid(e9eb5314-33aa-42b2-a718-d77f58b1f1c7), object, local, pointer_default(unique)]
  5676. interface ID3D12SDKConfiguration
  5677. : IUnknown
  5678. {
  5679. HRESULT SetSDKVersion(
  5680. UINT SDKVersion,
  5681. [annotation("_In_z_")] LPCSTR SDKPath
  5682. );
  5683. }
  5684. [uuid(8aaf9303-ad25-48b9-9a57-d9c37e009d9f), object, local, pointer_default(unique)]
  5685. interface ID3D12SDKConfiguration1
  5686. : ID3D12SDKConfiguration
  5687. {
  5688. HRESULT CreateDeviceFactory(
  5689. UINT SDKVersion,
  5690. [annotation("_In_")] LPCSTR SDKPath,
  5691. REFIID riid, // Expected: ID3D12DeviceFactory
  5692. [annotation("_COM_Outptr_")] void **ppvFactory
  5693. );
  5694. void FreeUnusedSDKs();
  5695. }
  5696. typedef enum D3D12_DEVICE_FACTORY_FLAGS
  5697. {
  5698. D3D12_DEVICE_FACTORY_FLAG_NONE = 0,
  5699. D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_EXISTING_DEVICE = 0x1,
  5700. D3D12_DEVICE_FACTORY_FLAG_ALLOW_RETURNING_INCOMPATIBLE_EXISTING_DEVICE = 0x2,
  5701. D3D12_DEVICE_FACTORY_FLAG_DISALLOW_STORING_NEW_DEVICE_AS_SINGLETON = 0x4,
  5702. } D3D12_DEVICE_FACTORY_FLAGS;
  5703. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FACTORY_FLAGS )")
  5704. [uuid(61f307d3-d34e-4e7c-8374-3ba4de23cccb), object, local, pointer_default(unique)]
  5705. interface ID3D12DeviceFactory
  5706. : IUnknown
  5707. {
  5708. HRESULT InitializeFromGlobalState();
  5709. HRESULT ApplyToGlobalState();
  5710. HRESULT SetFlags(D3D12_DEVICE_FACTORY_FLAGS flags);
  5711. D3D12_DEVICE_FACTORY_FLAGS GetFlags();
  5712. HRESULT GetConfigurationInterface(
  5713. REFCLSID clsid,
  5714. REFIID iid,
  5715. [annotation("_COM_Outptr_")] void **ppv);
  5716. HRESULT EnableExperimentalFeatures(
  5717. UINT NumFeatures,
  5718. [annotation("_In_reads_(NumFeatures)")] const IID *pIIDs,
  5719. [annotation("_In_reads_opt_(NumFeatures)")] void *pConfigurationStructs,
  5720. [annotation("_In_reads_opt_(NumFeatures)")] UINT *pConfigurationStructSizes);
  5721. HRESULT CreateDevice(
  5722. [annotation("_In_opt_")] IUnknown *adapter,
  5723. D3D_FEATURE_LEVEL FeatureLevel,
  5724. REFIID riid,
  5725. [annotation("_COM_Outptr_opt_")] void **ppvDevice);
  5726. };
  5727. typedef enum D3D12_DEVICE_FLAGS
  5728. {
  5729. D3D12_DEVICE_FLAG_NONE = 0,
  5730. D3D12_DEVICE_FLAG_DEBUG_LAYER_ENABLED = 0x1,
  5731. D3D12_DEVICE_FLAG_GPU_BASED_VALIDATION_ENABLED = 0x2,
  5732. D3D12_DEVICE_FLAG_SYNCHRONIZED_COMMAND_QUEUE_VALIDATION_DISABLED = 0x4,
  5733. D3D12_DEVICE_FLAG_DRED_AUTO_BREADCRUMBS_ENABLED = 0x8,
  5734. D3D12_DEVICE_FLAG_DRED_PAGE_FAULT_REPORTING_ENABLED = 0x10,
  5735. D3D12_DEVICE_FLAG_DRED_WATSON_REPORTING_ENABLED = 0x20,
  5736. D3D12_DEVICE_FLAG_DRED_BREADCRUMB_CONTEXT_ENABLED = 0x40,
  5737. D3D12_DEVICE_FLAG_DRED_USE_MARKERS_ONLY_BREADCRUMBS = 0x80,
  5738. D3D12_DEVICE_FLAG_SHADER_INSTRUMENTATION_ENABLED = 0x100,
  5739. D3D12_DEVICE_FLAG_AUTO_DEBUG_NAME_ENABLED = 0x200,
  5740. D3D12_DEVICE_FLAG_FORCE_LEGACY_STATE_VALIDATION = 0x400,
  5741. } D3D12_DEVICE_FLAGS;
  5742. cpp_quote("DEFINE_ENUM_FLAG_OPERATORS( D3D12_DEVICE_FLAGS )")
  5743. typedef struct D3D12_DEVICE_CONFIGURATION_DESC
  5744. {
  5745. D3D12_DEVICE_FLAGS Flags;
  5746. UINT GpuBasedValidationFlags; // D3D12_GPU_BASED_VALIDATION_FLAGS from d3d12sdklayers.h
  5747. UINT SDKVersion;
  5748. UINT NumEnabledExperimentalFeatures;
  5749. } D3D12_DEVICE_CONFIGURATION_DESC;
  5750. [uuid(78dbf87b-f766-422b-a61c-c8c446bdb9ad), object, local, pointer_default(unique)]
  5751. interface ID3D12DeviceConfiguration
  5752. : IUnknown
  5753. {
  5754. D3D12_DEVICE_CONFIGURATION_DESC GetDesc();
  5755. HRESULT GetEnabledExperimentalFeatures([annotation("_Out_writes_(NumGuids)")] GUID *pGuids, UINT NumGuids);
  5756. HRESULT SerializeVersionedRootSignature(
  5757. [annotation("_In_")] const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *pDesc,
  5758. [annotation("_COM_Outptr_")] ID3DBlob **ppResult,
  5759. [annotation("_Always_(_Outptr_opt_result_maybenull_)")] ID3DBlob **ppError);
  5760. HRESULT CreateVersionedRootSignatureDeserializer(
  5761. [annotation("_In_reads_bytes_(Size)")] const void *pBlob,
  5762. SIZE_T Size,
  5763. REFIID riid,
  5764. [annotation("_COM_Outptr_")] void **ppvDeserializer);
  5765. };
  5766. [uuid(ed342442-6343-4e16-bb82-a3a577874e56), object, local, pointer_default(unique)]
  5767. interface ID3D12DeviceConfiguration1
  5768. : ID3D12DeviceConfiguration
  5769. {
  5770. HRESULT CreateVersionedRootSignatureDeserializerFromSubobjectInLibrary(
  5771. [annotation("_In_reads_bytes_(Size)")] const void* pLibraryBlob,
  5772. SIZE_T Size,
  5773. LPCWSTR RootSignatureSubobjectName,
  5774. REFIID riid,
  5775. [annotation("_COM_Outptr_")] void** ppvDeserializer);
  5776. };
  5777. typedef enum D3D12_AXIS_SHADING_RATE
  5778. {
  5779. D3D12_AXIS_SHADING_RATE_1X = 0x0,
  5780. D3D12_AXIS_SHADING_RATE_2X = 0x1,
  5781. D3D12_AXIS_SHADING_RATE_4X = 0x2
  5782. } D3D12_AXIS_SHADING_RATE;
  5783. cpp_quote("#define D3D12_SHADING_RATE_X_AXIS_SHIFT 2")
  5784. cpp_quote("#define D3D12_SHADING_RATE_VALID_MASK 3")
  5785. cpp_quote("#define D3D12_MAKE_COARSE_SHADING_RATE(x,y) ((x) << D3D12_SHADING_RATE_X_AXIS_SHIFT | (y))")
  5786. cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x) (((x) >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK)")
  5787. cpp_quote("#define D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y) ((y) & D3D12_SHADING_RATE_VALID_MASK)")
  5788. typedef enum D3D12_SHADING_RATE
  5789. {
  5790. D3D12_SHADING_RATE_1X1 = 0x0,
  5791. D3D12_SHADING_RATE_1X2 = 0x1,
  5792. D3D12_SHADING_RATE_2X1 = 0x4,
  5793. D3D12_SHADING_RATE_2X2 = 0x5,
  5794. D3D12_SHADING_RATE_2X4 = 0x6,
  5795. D3D12_SHADING_RATE_4X2 = 0x9,
  5796. D3D12_SHADING_RATE_4X4 = 0xA
  5797. } D3D12_SHADING_RATE;
  5798. typedef enum D3D12_SHADING_RATE_COMBINER
  5799. {
  5800. D3D12_SHADING_RATE_COMBINER_PASSTHROUGH = 0,
  5801. D3D12_SHADING_RATE_COMBINER_OVERRIDE = 1,
  5802. D3D12_SHADING_RATE_COMBINER_MIN = 2,
  5803. D3D12_SHADING_RATE_COMBINER_MAX = 3,
  5804. D3D12_SHADING_RATE_COMBINER_SUM = 4,
  5805. } D3D12_SHADING_RATE_COMBINER;
  5806. [uuid(55050859-4024-474c-87f5-6472eaee44ea), object, local, pointer_default(unique)]
  5807. interface ID3D12GraphicsCommandList5 : ID3D12GraphicsCommandList4
  5808. {
  5809. void RSSetShadingRate(
  5810. [annotation("_In_")] D3D12_SHADING_RATE baseShadingRate,
  5811. [annotation("_In_reads_opt_(D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT)")] const D3D12_SHADING_RATE_COMBINER* combiners);
  5812. void RSSetShadingRateImage(
  5813. [annotation("_In_opt_")] ID3D12Resource* shadingRateImage);
  5814. }
  5815. typedef struct D3D12_DISPATCH_MESH_ARGUMENTS
  5816. {
  5817. UINT ThreadGroupCountX;
  5818. UINT ThreadGroupCountY;
  5819. UINT ThreadGroupCountZ;
  5820. } D3D12_DISPATCH_MESH_ARGUMENTS;
  5821. [uuid(c3827890-e548-4cfa-96cf-5689a9370f80), object, local, pointer_default(unique)]
  5822. interface ID3D12GraphicsCommandList6 : ID3D12GraphicsCommandList5
  5823. {
  5824. void DispatchMesh(
  5825. [annotation("_In_")] UINT ThreadGroupCountX,
  5826. [annotation("_In_")] UINT ThreadGroupCountY,
  5827. [annotation("_In_")] UINT ThreadGroupCountZ
  5828. );
  5829. }
  5830. [uuid(dd171223-8b61-4769-90e3-160ccde4e2c1), object, local, pointer_default(unique)]
  5831. interface ID3D12GraphicsCommandList7 : ID3D12GraphicsCommandList6
  5832. {
  5833. void Barrier(
  5834. UINT32 NumBarrierGroups,
  5835. [annotation("_In_reads_(NumBarrierGroups)")] const D3D12_BARRIER_GROUP *pBarrierGroups
  5836. );
  5837. };
  5838. [uuid(ee936ef9-599d-4d28-938e-23c4ad05ce51), object, local, pointer_default(unique)]
  5839. interface ID3D12GraphicsCommandList8 : ID3D12GraphicsCommandList7
  5840. {
  5841. void OMSetFrontAndBackStencilRef(
  5842. [annotation("_In_")] UINT FrontStencilRef,
  5843. [annotation("_In_")] UINT BackStencilRef
  5844. );
  5845. };
  5846. [uuid(34ed2808-ffe6-4c2b-b11a-cabd2b0c59e1), object, local, pointer_default(unique)]
  5847. interface ID3D12GraphicsCommandList9 : ID3D12GraphicsCommandList8
  5848. {
  5849. void RSSetDepthBias(
  5850. [annotation("_In_")] FLOAT DepthBias,
  5851. [annotation("_In_")] FLOAT DepthBiasClamp,
  5852. [annotation("_In_")] FLOAT SlopeScaledDepthBias
  5853. );
  5854. void IASetIndexBufferStripCutValue(
  5855. [annotation("_In_")] D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue
  5856. );
  5857. };
  5858. [uuid(7013c015-d161-4b63-a08c-238552dd8acc), object, local, pointer_default(unique)]
  5859. interface ID3D12GraphicsCommandList10 : ID3D12GraphicsCommandList9
  5860. {
  5861. void SetProgram([annotation("_In_")] const D3D12_SET_PROGRAM_DESC* pDesc);
  5862. void DispatchGraph([annotation("_In_")] const D3D12_DISPATCH_GRAPH_DESC* pDesc);
  5863. };
  5864. [uuid(f343d1a0-afe3-439f-b13d-cd87a43b70ca), object, local, pointer_default(unique)]
  5865. interface ID3D12DSRDeviceFactory : IUnknown
  5866. {
  5867. HRESULT CreateDSRDevice(
  5868. [in] ID3D12Device *pD3D12Device,
  5869. [in] UINT NodeMask,
  5870. [in] REFIID riid, // Expected IDSRDevice
  5871. [out, iid_is(riid), annotation("_COM_Outptr_")] void** ppvDSRDevice);
  5872. }
  5873. [uuid(597985ab-9b75-4dbb-be23-0761195bebee), object, local, pointer_default(unique)]
  5874. interface ID3D12GBVDiagnostics
  5875. : IUnknown
  5876. {
  5877. HRESULT GetGBVEntireSubresourceStatesData( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_writes_bytes_(DataSize)")] int *pData, UINT DataSize );
  5878. HRESULT GetGBVSubresourceState( [annotation("_In_")] ID3D12Resource* pResource, UINT Subresource, [annotation("_Out_")] int *pData );
  5879. HRESULT GetGBVResourceUniformState( [annotation("_In_")] ID3D12Resource* pResource, [annotation("_Out_")] int *pData );
  5880. HRESULT GetGBVResourceInfo( [annotation("_In_")] ID3D12Resource* pResource,
  5881. [annotation("_In_opt_")] D3D12_RESOURCE_DESC* pResourceDesc,
  5882. [annotation("_In_opt_")] UINT32* pResourceHash,
  5883. [annotation("_In_opt_")] UINT32* pSubresourceStatesByteOffset );
  5884. void GBVReserved0();
  5885. void GBVReserved1();
  5886. }
  5887. //----------------------------------------------------------------------------------------------------------
  5888. // Old types which are still supported by the runtime for app-compat
  5889. cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_GAMES) */")
  5890. #pragma endregion
  5891. cpp_quote( "DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);" )
  5892. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);" )
  5893. cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);" )
  5894. cpp_quote( "DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);" )
  5895. cpp_quote( "DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);" )
  5896. cpp_quote( "DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);" )
  5897. cpp_quote( "DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);" )
  5898. cpp_quote( "DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);" )
  5899. cpp_quote( "DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);" )
  5900. cpp_quote( "DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);" )
  5901. cpp_quote( "DEFINE_GUID(IID_ID3D12Fence1,0x433685fe,0xe22b,0x4ca0,0xa8,0xdb,0xb5,0xb4,0xf4,0xdd,0x0e,0x4a);" )
  5902. cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);" )
  5903. cpp_quote( "DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);" )
  5904. cpp_quote( "DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);" )
  5905. cpp_quote( "DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);" )
  5906. cpp_quote( "DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);" )
  5907. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);" )
  5908. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);" )
  5909. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList2,0x38C3E585,0xFF17,0x412C,0x91,0x50,0x4F,0xC6,0xF9,0xD7,0x2A,0x28);" )
  5910. cpp_quote( "DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);" )
  5911. cpp_quote( "DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);" )
  5912. cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);" )
  5913. cpp_quote( "DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);" )
  5914. cpp_quote( "DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);" )
  5915. cpp_quote( "DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);" )
  5916. cpp_quote( "DEFINE_GUID(IID_ID3D12Device3,0x81dadc15,0x2bad,0x4392,0x93,0xc5,0x10,0x13,0x45,0xc4,0xaa,0x98);" )
  5917. cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedSession,0xA1533D18,0x0AC1,0x4084,0x85,0xB9,0x89,0xA9,0x61,0x16,0x80,0x6B);" )
  5918. cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession,0x6CD696F4,0xF289,0x40CC,0x80,0x91,0x5A,0x6C,0x0A,0x09,0x9C,0x3D);" )
  5919. cpp_quote( "DEFINE_GUID(IID_ID3D12Device4,0xe865df17,0xa9ee,0x46f9,0xa4,0x63,0x30,0x98,0x31,0x5a,0xa2,0xe5);" )
  5920. cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeOwner,0xe667af9f,0xcd56,0x4f46,0x83,0xce,0x03,0x2e,0x59,0x5d,0x70,0xa8);" )
  5921. cpp_quote( "DEFINE_GUID(IID_ID3D12SwapChainAssistant,0xf1df64b6,0x57fd,0x49cd,0x88,0x07,0xc0,0xeb,0x88,0xb4,0x5c,0x8f);" )
  5922. cpp_quote( "DEFINE_GUID(IID_ID3D12LifetimeTracker,0x3fd03d36,0x4eb1,0x424a,0xa5,0x82,0x49,0x4e,0xcb,0x8b,0xa8,0x13);" )
  5923. cpp_quote( "DEFINE_GUID(IID_ID3D12StateObject,0x47016943,0xfca8,0x4594,0x93,0xea,0xaf,0x25,0x8b,0x55,0x34,0x6d);" )
  5924. cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties,0xde5fa827,0x9bf9,0x4f26,0x89,0xff,0xd7,0xf5,0x6f,0xde,0x38,0x60);" )
  5925. cpp_quote( "DEFINE_GUID(IID_ID3D12StateObjectProperties1,0x460caac7,0x1d24,0x446a,0xa1,0x84,0xca,0x67,0xdb,0x49,0x41,0x38);" )
  5926. cpp_quote( "DEFINE_GUID(IID_ID3D12WorkGraphProperties,0x065acf71,0xf863,0x4b89,0x82,0xf4,0x02,0xe4,0xd5,0x88,0x67,0x57);" )
  5927. cpp_quote( "DEFINE_GUID(IID_ID3D12Device5,0x8b4f173b,0x2fea,0x4b80,0x8f,0x58,0x43,0x07,0x19,0x1a,0xb9,0x5d);" )
  5928. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings,0x82BC481C,0x6B9B,0x4030,0xAE,0xDB,0x7E,0xE3,0xD1,0xDF,0x1E,0x63);" )
  5929. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings1,0xDBD5AE51,0x3317,0x4F0A,0xAD,0xF9,0x1D,0x7C,0xED,0xCA,0xAE,0x0B);" )
  5930. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedDataSettings2,0x61552388,0x01ab,0x4008,0xa4,0x36,0x83,0xdb,0x18,0x95,0x66,0xea);" )
  5931. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData,0x98931D33,0x5AE8,0x4791,0xAA,0x3C,0x1A,0x73,0xA2,0x93,0x4E,0x71);" )
  5932. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData1,0x9727A022,0xCF1D,0x4DDA,0x9E,0xBA,0xEF,0xFA,0x65,0x3F,0xC5,0x06);" )
  5933. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceRemovedExtendedData2,0x67FC5816,0xE4CA,0x4915,0xBF,0x18,0x42,0x54,0x12,0x72,0xDA,0x54);" )
  5934. cpp_quote( "DEFINE_GUID(IID_ID3D12Device6,0xc70b221b,0x40e4,0x4a17,0x89,0xaf,0x02,0x5a,0x07,0x27,0xa6,0xdc);" )
  5935. cpp_quote( "DEFINE_GUID(IID_ID3D12ProtectedResourceSession1,0xD6F12DD6,0x76FB,0x406E,0x89,0x61,0x42,0x96,0xEE,0xFC,0x04,0x09);" )
  5936. cpp_quote( "DEFINE_GUID(IID_ID3D12Device7,0x5c014b53,0x68a1,0x4b9b,0x8b,0xd1,0xdd,0x60,0x46,0xb9,0x35,0x8b);" )
  5937. cpp_quote( "DEFINE_GUID(IID_ID3D12Device8,0x9218E6BB,0xF944,0x4F7E,0xA7,0x5C,0xB1,0xB2,0xC7,0xB7,0x01,0xF3);" )
  5938. cpp_quote( "DEFINE_GUID(IID_ID3D12Resource1,0x9D5E227A,0x4430,0x4161,0x88,0xB3,0x3E,0xCA,0x6B,0xB1,0x6E,0x19);" )
  5939. cpp_quote( "DEFINE_GUID(IID_ID3D12Resource2,0xBE36EC3B,0xEA85,0x4AEB,0xA4,0x5A,0xE9,0xD7,0x64,0x04,0xA4,0x95);" )
  5940. cpp_quote( "DEFINE_GUID(IID_ID3D12Heap1,0x572F7389,0x2168,0x49E3,0x96,0x93,0xD6,0xDF,0x58,0x71,0xBF,0x6D);" )
  5941. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList3,0x6FDA83A7,0xB84C,0x4E38,0x9A,0xC8,0xC7,0xBD,0x22,0x01,0x6B,0x3D);" )
  5942. cpp_quote( "DEFINE_GUID(IID_ID3D12MetaCommand,0xDBB84C27,0x36CE,0x4FC9,0xB8,0x01,0xF0,0x48,0xC4,0x6A,0xC5,0x70);" )
  5943. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList4,0x8754318e,0xd3a9,0x4541,0x98,0xcf,0x64,0x5b,0x50,0xdc,0x48,0x74);" )
  5944. cpp_quote( "DEFINE_GUID(IID_ID3D12ShaderCacheSession,0x28e2495d,0x0f64,0x4ae4,0xa6,0xec,0x12,0x92,0x55,0xdc,0x49,0xa8);" )
  5945. cpp_quote( "DEFINE_GUID(IID_ID3D12Device9,0x4c80e962,0xf032,0x4f60,0xbc,0x9e,0xeb,0xc2,0xcf,0xa1,0xd8,0x3c);" )
  5946. cpp_quote( "DEFINE_GUID(IID_ID3D12Device10,0x517f8718,0xaa66,0x49f9,0xb0,0x2b,0xa7,0xab,0x89,0xc0,0x60,0x31);" )
  5947. cpp_quote( "DEFINE_GUID(IID_ID3D12Device11,0x5405c344,0xd457,0x444e,0xb4,0xdd,0x23,0x66,0xe4,0x5a,0xee,0x39);" )
  5948. cpp_quote( "DEFINE_GUID(IID_ID3D12Device12,0x5af5c532,0x4c91,0x4cd0,0xb5,0x41,0x15,0xa4,0x05,0x39,0x5f,0xc5);" )
  5949. cpp_quote( "DEFINE_GUID(IID_ID3D12Device13,0x14eecffc,0x4df8,0x40f7,0xa1,0x18,0x5c,0x81,0x6f,0x45,0x69,0x5e);" )
  5950. cpp_quote( "DEFINE_GUID(IID_ID3D12Device14,0x5f6e592d,0xd895,0x44c2,0x8e,0x4a,0x88,0xad,0x49,0x26,0xd3,0x23);" )
  5951. cpp_quote( "DEFINE_GUID(IID_ID3D12VirtualizationGuestDevice,0xbc66d368,0x7373,0x4943,0x87,0x57,0xfc,0x87,0xdc,0x79,0xe4,0x76);" )
  5952. cpp_quote( "DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);" )
  5953. cpp_quote( "DEFINE_GUID(IID_ID3D12Tools1,0xe4fbc019,0xdd3c,0x43e1,0x8f,0x32,0x7f,0x64,0x95,0x75,0xf0,0xa0);" )
  5954. cpp_quote( "DEFINE_GUID(IID_ID3D12Tools2,0x01d393c5,0xc9b0,0x42a1,0x95,0x8c,0xc2,0x6b,0x02,0xd4,0xd0,0x97);" )
  5955. cpp_quote( "DEFINE_GUID(IID_ID3D12PageableTools,0x8f1359db,0xd8d1,0x42f9,0xb5,0xcf,0x79,0xf4,0xcb,0xad,0x0d,0x3d);" )
  5956. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools,0x2ea68e9c,0x19c3,0x4e47,0xa1,0x09,0x6c,0xda,0xdf,0xf0,0xac,0xa9);" )
  5957. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceTools1,0xe30e9fc7,0xe641,0x4d6e,0x8a,0x81,0x9d,0xd9,0x20,0x6e,0xc4,0x7a);" )
  5958. cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration,0xe9eb5314,0x33aa,0x42b2,0xa7,0x18,0xd7,0x7f,0x58,0xb1,0xf1,0xc7);" )
  5959. cpp_quote( "DEFINE_GUID(IID_ID3D12SDKConfiguration1,0x8aaf9303,0xad25,0x48b9,0x9a,0x57,0xd9,0xc3,0x7e,0x00,0x9d,0x9f);" )
  5960. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceFactory,0x61f307d3,0xd34e,0x4e7c,0x83,0x74,0x3b,0xa4,0xde,0x23,0xcc,0xcb);" )
  5961. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration,0x78dbf87b,0xf766,0x422b,0xa6,0x1c,0xc8,0xc4,0x46,0xbd,0xb9,0xad);" )
  5962. cpp_quote( "DEFINE_GUID(IID_ID3D12DeviceConfiguration1,0xed342442,0x6343,0x4e16,0xbb,0x82,0xa3,0xa5,0x77,0x87,0x4e,0x56);" )
  5963. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList5,0x55050859,0x4024,0x474c,0x87,0xf5,0x64,0x72,0xea,0xee,0x44,0xea);" )
  5964. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList6,0xc3827890,0xe548,0x4cfa,0x96,0xcf,0x56,0x89,0xa9,0x37,0x0f,0x80);" )
  5965. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList7,0xdd171223,0x8b61,0x4769,0x90,0xe3,0x16,0x0c,0xcd,0xe4,0xe2,0xc1);" )
  5966. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList8,0xee936ef9,0x599d,0x4d28,0x93,0x8e,0x23,0xc4,0xad,0x05,0xce,0x51);" )
  5967. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList9,0x34ed2808,0xffe6,0x4c2b,0xb1,0x1a,0xca,0xbd,0x2b,0x0c,0x59,0xe1);" )
  5968. cpp_quote( "DEFINE_GUID(IID_ID3D12GraphicsCommandList10,0x7013c015,0xd161,0x4b63,0xa0,0x8c,0x23,0x85,0x52,0xdd,0x8a,0xcc);" )
  5969. cpp_quote( "DEFINE_GUID(IID_ID3D12DSRDeviceFactory,0xf343d1a0,0xafe3,0x439f,0xb1,0x3d,0xcd,0x87,0xa4,0x3b,0x70,0xca);" )
  5970. cpp_quote( "DEFINE_GUID(IID_ID3D12GBVDiagnostics,0x597985ab,0x9b75,0x4dbb,0xbe,0x23,0x07,0x61,0x19,0x5b,0xeb,0xee);" )