d3d12.h 317 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869
  1. /*-------------------------------------------------------------------------------------
  2. *
  3. * Copyright (c) Microsoft Corporation
  4. *
  5. *-------------------------------------------------------------------------------------*/
  6. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  7. /* File created by MIDL compiler version 8.01.0622 */
  8. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  9. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  10. #define __REQUIRED_RPCNDR_H_VERSION__ 500
  11. #endif
  12. /* verify that the <rpcsal.h> version is high enough to compile this file*/
  13. #ifndef __REQUIRED_RPCSAL_H_VERSION__
  14. #define __REQUIRED_RPCSAL_H_VERSION__ 100
  15. #endif
  16. #include "rpc.h"
  17. #include "rpcndr.h"
  18. #ifndef __RPCNDR_H_VERSION__
  19. #error this stub requires an updated version of <rpcndr.h>
  20. #endif /* __RPCNDR_H_VERSION__ */
  21. #ifndef COM_NO_WINDOWS_H
  22. #include "windows.h"
  23. #include "ole2.h"
  24. #endif /*COM_NO_WINDOWS_H*/
  25. #ifndef __d3d12_h__
  26. #define __d3d12_h__
  27. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  28. #pragma once
  29. #endif
  30. /* Forward Declarations */
  31. #ifndef __ID3D12Object_FWD_DEFINED__
  32. #define __ID3D12Object_FWD_DEFINED__
  33. typedef interface ID3D12Object ID3D12Object;
  34. #endif /* __ID3D12Object_FWD_DEFINED__ */
  35. #ifndef __ID3D12DeviceChild_FWD_DEFINED__
  36. #define __ID3D12DeviceChild_FWD_DEFINED__
  37. typedef interface ID3D12DeviceChild ID3D12DeviceChild;
  38. #endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
  39. #ifndef __ID3D12RootSignature_FWD_DEFINED__
  40. #define __ID3D12RootSignature_FWD_DEFINED__
  41. typedef interface ID3D12RootSignature ID3D12RootSignature;
  42. #endif /* __ID3D12RootSignature_FWD_DEFINED__ */
  43. #ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
  44. #define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
  45. typedef interface ID3D12RootSignatureDeserializer ID3D12RootSignatureDeserializer;
  46. #endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
  47. #ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
  48. #define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
  49. typedef interface ID3D12VersionedRootSignatureDeserializer ID3D12VersionedRootSignatureDeserializer;
  50. #endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
  51. #ifndef __ID3D12Pageable_FWD_DEFINED__
  52. #define __ID3D12Pageable_FWD_DEFINED__
  53. typedef interface ID3D12Pageable ID3D12Pageable;
  54. #endif /* __ID3D12Pageable_FWD_DEFINED__ */
  55. #ifndef __ID3D12Heap_FWD_DEFINED__
  56. #define __ID3D12Heap_FWD_DEFINED__
  57. typedef interface ID3D12Heap ID3D12Heap;
  58. #endif /* __ID3D12Heap_FWD_DEFINED__ */
  59. #ifndef __ID3D12Resource_FWD_DEFINED__
  60. #define __ID3D12Resource_FWD_DEFINED__
  61. typedef interface ID3D12Resource ID3D12Resource;
  62. #endif /* __ID3D12Resource_FWD_DEFINED__ */
  63. #ifndef __ID3D12CommandAllocator_FWD_DEFINED__
  64. #define __ID3D12CommandAllocator_FWD_DEFINED__
  65. typedef interface ID3D12CommandAllocator ID3D12CommandAllocator;
  66. #endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
  67. #ifndef __ID3D12Fence_FWD_DEFINED__
  68. #define __ID3D12Fence_FWD_DEFINED__
  69. typedef interface ID3D12Fence ID3D12Fence;
  70. #endif /* __ID3D12Fence_FWD_DEFINED__ */
  71. #ifndef __ID3D12PipelineState_FWD_DEFINED__
  72. #define __ID3D12PipelineState_FWD_DEFINED__
  73. typedef interface ID3D12PipelineState ID3D12PipelineState;
  74. #endif /* __ID3D12PipelineState_FWD_DEFINED__ */
  75. #ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
  76. #define __ID3D12DescriptorHeap_FWD_DEFINED__
  77. typedef interface ID3D12DescriptorHeap ID3D12DescriptorHeap;
  78. #endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
  79. #ifndef __ID3D12QueryHeap_FWD_DEFINED__
  80. #define __ID3D12QueryHeap_FWD_DEFINED__
  81. typedef interface ID3D12QueryHeap ID3D12QueryHeap;
  82. #endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
  83. #ifndef __ID3D12CommandSignature_FWD_DEFINED__
  84. #define __ID3D12CommandSignature_FWD_DEFINED__
  85. typedef interface ID3D12CommandSignature ID3D12CommandSignature;
  86. #endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
  87. #ifndef __ID3D12CommandList_FWD_DEFINED__
  88. #define __ID3D12CommandList_FWD_DEFINED__
  89. typedef interface ID3D12CommandList ID3D12CommandList;
  90. #endif /* __ID3D12CommandList_FWD_DEFINED__ */
  91. #ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
  92. #define __ID3D12GraphicsCommandList_FWD_DEFINED__
  93. typedef interface ID3D12GraphicsCommandList ID3D12GraphicsCommandList;
  94. #endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
  95. #ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
  96. #define __ID3D12GraphicsCommandList1_FWD_DEFINED__
  97. typedef interface ID3D12GraphicsCommandList1 ID3D12GraphicsCommandList1;
  98. #endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
  99. #ifndef __ID3D12CommandQueue_FWD_DEFINED__
  100. #define __ID3D12CommandQueue_FWD_DEFINED__
  101. typedef interface ID3D12CommandQueue ID3D12CommandQueue;
  102. #endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
  103. #ifndef __ID3D12Device_FWD_DEFINED__
  104. #define __ID3D12Device_FWD_DEFINED__
  105. typedef interface ID3D12Device ID3D12Device;
  106. #endif /* __ID3D12Device_FWD_DEFINED__ */
  107. #ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
  108. #define __ID3D12PipelineLibrary_FWD_DEFINED__
  109. typedef interface ID3D12PipelineLibrary ID3D12PipelineLibrary;
  110. #endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
  111. #ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
  112. #define __ID3D12PipelineLibrary1_FWD_DEFINED__
  113. typedef interface ID3D12PipelineLibrary1 ID3D12PipelineLibrary1;
  114. #endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
  115. #ifndef __ID3D12Device1_FWD_DEFINED__
  116. #define __ID3D12Device1_FWD_DEFINED__
  117. typedef interface ID3D12Device1 ID3D12Device1;
  118. #endif /* __ID3D12Device1_FWD_DEFINED__ */
  119. #ifndef __ID3D12Device2_FWD_DEFINED__
  120. #define __ID3D12Device2_FWD_DEFINED__
  121. typedef interface ID3D12Device2 ID3D12Device2;
  122. #endif /* __ID3D12Device2_FWD_DEFINED__ */
  123. #ifndef __ID3D12Tools_FWD_DEFINED__
  124. #define __ID3D12Tools_FWD_DEFINED__
  125. typedef interface ID3D12Tools ID3D12Tools;
  126. #endif /* __ID3D12Tools_FWD_DEFINED__ */
  127. /* header files for imported files */
  128. #include "oaidl.h"
  129. #include "ocidl.h"
  130. #include "dxgicommon.h"
  131. #include "dxgiformat.h"
  132. #include "d3dcommon.h"
  133. #ifdef __cplusplus
  134. extern "C"{
  135. #endif
  136. /* interface __MIDL_itf_d3d12_0000_0000 */
  137. /* [local] */
  138. #include <winapifamily.h>
  139. #pragma region App Family
  140. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  141. #ifndef _D3D12_CONSTANTS
  142. #define _D3D12_CONSTANTS
  143. #define D3D12_16BIT_INDEX_STRIP_CUT_VALUE ( 0xffff )
  144. #define D3D12_32BIT_INDEX_STRIP_CUT_VALUE ( 0xffffffff )
  145. #define D3D12_8BIT_INDEX_STRIP_CUT_VALUE ( 0xff )
  146. #define D3D12_APPEND_ALIGNED_ELEMENT ( 0xffffffff )
  147. #define D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT ( 9 )
  148. #define D3D12_CLIP_OR_CULL_DISTANCE_COUNT ( 8 )
  149. #define D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT ( 2 )
  150. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ( 14 )
  151. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS ( 4 )
  152. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT ( 32 )
  153. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT ( 15 )
  154. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT ( 16 )
  155. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
  156. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT ( 15 )
  157. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
  158. #define D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
  159. #define D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT ( 64 )
  160. #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS ( 4 )
  161. #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT ( 1 )
  162. #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST ( 1 )
  163. #define D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS ( 1 )
  164. #define D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT ( 32 )
  165. #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS ( 1 )
  166. #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT ( 128 )
  167. #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST ( 1 )
  168. #define D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS ( 1 )
  169. #define D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT ( 128 )
  170. #define D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS ( 1 )
  171. #define D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT ( 16 )
  172. #define D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST ( 1 )
  173. #define D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS ( 1 )
  174. #define D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT ( 16 )
  175. #define D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT ( 32 )
  176. #define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS ( 4 )
  177. #define D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  178. #define D3D12_COMMONSHADER_TEMP_REGISTER_COUNT ( 4096 )
  179. #define D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST ( 3 )
  180. #define D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS ( 3 )
  181. #define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX ( 10 )
  182. #define D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN ( -10 )
  183. #define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE ( -8 )
  184. #define D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE ( 7 )
  185. #define D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT ( 256 )
  186. #define D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 256 )
  187. #define D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP ( 64 )
  188. #define D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 240 )
  189. #define D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP ( 68 )
  190. #define D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 224 )
  191. #define D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP ( 72 )
  192. #define D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 208 )
  193. #define D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP ( 76 )
  194. #define D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 192 )
  195. #define D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP ( 84 )
  196. #define D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 176 )
  197. #define D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP ( 92 )
  198. #define D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 160 )
  199. #define D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP ( 100 )
  200. #define D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 144 )
  201. #define D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP ( 112 )
  202. #define D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 128 )
  203. #define D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP ( 128 )
  204. #define D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 112 )
  205. #define D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP ( 144 )
  206. #define D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 96 )
  207. #define D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP ( 168 )
  208. #define D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 80 )
  209. #define D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP ( 204 )
  210. #define D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 64 )
  211. #define D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP ( 256 )
  212. #define D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 48 )
  213. #define D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP ( 340 )
  214. #define D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 32 )
  215. #define D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP ( 512 )
  216. #define D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD ( 16 )
  217. #define D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP ( 768 )
  218. #define D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION ( 1 )
  219. #define D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT ( 256 )
  220. #define D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 768 )
  221. #define D3D12_CS_4_X_THREAD_GROUP_MAX_X ( 768 )
  222. #define D3D12_CS_4_X_THREAD_GROUP_MAX_Y ( 768 )
  223. #define D3D12_CS_4_X_UAV_REGISTER_COUNT ( 1 )
  224. #define D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION ( 65535 )
  225. #define D3D12_CS_TGSM_REGISTER_COUNT ( 8192 )
  226. #define D3D12_CS_TGSM_REGISTER_READS_PER_INST ( 1 )
  227. #define D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS ( 1 )
  228. #define D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS ( 1 )
  229. #define D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS ( 3 )
  230. #define D3D12_CS_THREADGROUPID_REGISTER_COUNT ( 1 )
  231. #define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS ( 1 )
  232. #define D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT ( 1 )
  233. #define D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS ( 3 )
  234. #define D3D12_CS_THREADIDINGROUP_REGISTER_COUNT ( 1 )
  235. #define D3D12_CS_THREADID_REGISTER_COMPONENTS ( 3 )
  236. #define D3D12_CS_THREADID_REGISTER_COUNT ( 1 )
  237. #define D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP ( 1024 )
  238. #define D3D12_CS_THREAD_GROUP_MAX_X ( 1024 )
  239. #define D3D12_CS_THREAD_GROUP_MAX_Y ( 1024 )
  240. #define D3D12_CS_THREAD_GROUP_MAX_Z ( 64 )
  241. #define D3D12_CS_THREAD_GROUP_MIN_X ( 1 )
  242. #define D3D12_CS_THREAD_GROUP_MIN_Y ( 1 )
  243. #define D3D12_CS_THREAD_GROUP_MIN_Z ( 1 )
  244. #define D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL ( 16384 )
  245. #define D3D12_DEFAULT_BLEND_FACTOR_ALPHA ( 1.0f )
  246. #define D3D12_DEFAULT_BLEND_FACTOR_BLUE ( 1.0f )
  247. #define D3D12_DEFAULT_BLEND_FACTOR_GREEN ( 1.0f )
  248. #define D3D12_DEFAULT_BLEND_FACTOR_RED ( 1.0f )
  249. #define D3D12_DEFAULT_BORDER_COLOR_COMPONENT ( 0.0f )
  250. #define D3D12_DEFAULT_DEPTH_BIAS ( 0 )
  251. #define D3D12_DEFAULT_DEPTH_BIAS_CLAMP ( 0.0f )
  252. #define D3D12_DEFAULT_MAX_ANISOTROPY ( 16 )
  253. #define D3D12_DEFAULT_MIP_LOD_BIAS ( 0.0f )
  254. #define D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 4194304 )
  255. #define D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX ( 0 )
  256. #define D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
  257. #define D3D12_DEFAULT_SAMPLE_MASK ( 0xffffffff )
  258. #define D3D12_DEFAULT_SCISSOR_ENDX ( 0 )
  259. #define D3D12_DEFAULT_SCISSOR_ENDY ( 0 )
  260. #define D3D12_DEFAULT_SCISSOR_STARTX ( 0 )
  261. #define D3D12_DEFAULT_SCISSOR_STARTY ( 0 )
  262. #define D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS ( 0.0f )
  263. #define D3D12_DEFAULT_STENCIL_READ_MASK ( 0xff )
  264. #define D3D12_DEFAULT_STENCIL_REFERENCE ( 0 )
  265. #define D3D12_DEFAULT_STENCIL_WRITE_MASK ( 0xff )
  266. #define D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX ( 0 )
  267. #define D3D12_DEFAULT_VIEWPORT_HEIGHT ( 0 )
  268. #define D3D12_DEFAULT_VIEWPORT_MAX_DEPTH ( 0.0f )
  269. #define D3D12_DEFAULT_VIEWPORT_MIN_DEPTH ( 0.0f )
  270. #define D3D12_DEFAULT_VIEWPORT_TOPLEFTX ( 0 )
  271. #define D3D12_DEFAULT_VIEWPORT_TOPLEFTY ( 0 )
  272. #define D3D12_DEFAULT_VIEWPORT_WIDTH ( 0 )
  273. #define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND ( 0xffffffff )
  274. #define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END ( 0xfffffff7 )
  275. #define D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
  276. #define D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
  277. #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
  278. #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  279. #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT ( 32 )
  280. #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
  281. #define D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
  282. #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS ( 3 )
  283. #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  284. #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT ( 1 )
  285. #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST ( 2 )
  286. #define D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS ( 1 )
  287. #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
  288. #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  289. #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
  290. #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
  291. #define D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
  292. #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
  293. #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  294. #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
  295. #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
  296. #define D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
  297. #define D3D12_DS_OUTPUT_REGISTER_COMPONENTS ( 4 )
  298. #define D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  299. #define D3D12_DS_OUTPUT_REGISTER_COUNT ( 32 )
  300. #define D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP ( 0.6 )
  301. #define D3D12_FLOAT32_MAX ( 3.402823466e+38f )
  302. #define D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP ( 0.6f )
  303. #define D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR ( 2.4f )
  304. #define D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR ( 1.0f )
  305. #define D3D12_FLOAT_TO_SRGB_OFFSET ( 0.055f )
  306. #define D3D12_FLOAT_TO_SRGB_SCALE_1 ( 12.92f )
  307. #define D3D12_FLOAT_TO_SRGB_SCALE_2 ( 1.055f )
  308. #define D3D12_FLOAT_TO_SRGB_THRESHOLD ( 0.0031308f )
  309. #define D3D12_FTOI_INSTRUCTION_MAX_INPUT ( 2147483647.999f )
  310. #define D3D12_FTOI_INSTRUCTION_MIN_INPUT ( -2147483648.999f )
  311. #define D3D12_FTOU_INSTRUCTION_MAX_INPUT ( 4294967295.999f )
  312. #define D3D12_FTOU_INSTRUCTION_MIN_INPUT ( 0.0f )
  313. #define D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST ( 2 )
  314. #define D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS ( 1 )
  315. #define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
  316. #define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  317. #define D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT ( 1 )
  318. #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS ( 1 )
  319. #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  320. #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT ( 1 )
  321. #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST ( 2 )
  322. #define D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS ( 1 )
  323. #define D3D12_GS_INPUT_REGISTER_COMPONENTS ( 4 )
  324. #define D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  325. #define D3D12_GS_INPUT_REGISTER_COUNT ( 32 )
  326. #define D3D12_GS_INPUT_REGISTER_READS_PER_INST ( 2 )
  327. #define D3D12_GS_INPUT_REGISTER_READ_PORTS ( 1 )
  328. #define D3D12_GS_INPUT_REGISTER_VERTICES ( 32 )
  329. #define D3D12_GS_MAX_INSTANCE_COUNT ( 32 )
  330. #define D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES ( 1024 )
  331. #define D3D12_GS_OUTPUT_ELEMENTS ( 32 )
  332. #define D3D12_GS_OUTPUT_REGISTER_COMPONENTS ( 4 )
  333. #define D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  334. #define D3D12_GS_OUTPUT_REGISTER_COUNT ( 32 )
  335. #define D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT ( 32 )
  336. #define D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT ( 32 )
  337. #define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS ( 4 )
  338. #define D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  339. #define D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST ( 2 )
  340. #define D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS ( 1 )
  341. #define D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
  342. #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
  343. #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  344. #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT ( 1 )
  345. #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
  346. #define D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
  347. #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS ( 1 )
  348. #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  349. #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT ( 1 )
  350. #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST ( 2 )
  351. #define D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS ( 1 )
  352. #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS ( 1 )
  353. #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  354. #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT ( 1 )
  355. #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST ( 2 )
  356. #define D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS ( 1 )
  357. #define D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND ( 0xffffffff )
  358. #define D3D12_HS_MAXTESSFACTOR_LOWER_BOUND ( 1.0f )
  359. #define D3D12_HS_MAXTESSFACTOR_UPPER_BOUND ( 64.0f )
  360. #define D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS ( 3968 )
  361. #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS ( 1 )
  362. #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  363. #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT ( 1 )
  364. #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST ( 2 )
  365. #define D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS ( 1 )
  366. #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS ( 4 )
  367. #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  368. #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT ( 32 )
  369. #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST ( 2 )
  370. #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS ( 1 )
  371. #define D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS ( 128 )
  372. #define D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES ( 0 )
  373. #define D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY ( 0 )
  374. #define D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES ( 0 )
  375. #define D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT ( 1 )
  376. #define D3D12_IA_INSTANCE_ID_BIT_COUNT ( 32 )
  377. #define D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT ( 32 )
  378. #define D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT ( 32 )
  379. #define D3D12_IA_PRIMITIVE_ID_BIT_COUNT ( 32 )
  380. #define D3D12_IA_VERTEX_ID_BIT_COUNT ( 32 )
  381. #define D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT ( 32 )
  382. #define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS ( 128 )
  383. #define D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT ( 32 )
  384. #define D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT ( 0xffffffff )
  385. #define D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER ( 0xffffffff )
  386. #define D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL ( 0xffffffff )
  387. #define D3D12_KEEP_UNORDERED_ACCESS_VIEWS ( 0xffffffff )
  388. #define D3D12_LINEAR_GAMMA ( 1.0f )
  389. #define D3D12_MAJOR_VERSION ( 12 )
  390. #define D3D12_MAX_BORDER_COLOR_COMPONENT ( 1.0f )
  391. #define D3D12_MAX_DEPTH ( 1.0f )
  392. #define D3D12_MAX_LIVE_STATIC_SAMPLERS ( 2032 )
  393. #define D3D12_MAX_MAXANISOTROPY ( 16 )
  394. #define D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT ( 32 )
  395. #define D3D12_MAX_POSITION_VALUE ( 3.402823466e+34f )
  396. #define D3D12_MAX_ROOT_COST ( 64 )
  397. #define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 ( 1000000 )
  398. #define D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 ( 1000000 )
  399. #define D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE ( 2048 )
  400. #define D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP ( 17 )
  401. #define D3D12_MINOR_VERSION ( 0 )
  402. #define D3D12_MIN_BORDER_COLOR_COMPONENT ( 0.0f )
  403. #define D3D12_MIN_DEPTH ( 0.0f )
  404. #define D3D12_MIN_MAXANISOTROPY ( 0 )
  405. #define D3D12_MIP_LOD_BIAS_MAX ( 15.99f )
  406. #define D3D12_MIP_LOD_BIAS_MIN ( -16.0f )
  407. #define D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT ( 8 )
  408. #define D3D12_MIP_LOD_RANGE_BIT_COUNT ( 8 )
  409. #define D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH ( 1.4f )
  410. #define D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT ( 0 )
  411. #define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
  412. #define D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff8 )
  413. #define D3D12_PACKED_TILE ( 0xffffffff )
  414. #define D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 15 )
  415. #define D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
  416. #define D3D12_PS_CS_UAV_REGISTER_COMPONENTS ( 1 )
  417. #define D3D12_PS_CS_UAV_REGISTER_COUNT ( 8 )
  418. #define D3D12_PS_CS_UAV_REGISTER_READS_PER_INST ( 1 )
  419. #define D3D12_PS_CS_UAV_REGISTER_READ_PORTS ( 1 )
  420. #define D3D12_PS_FRONTFACING_DEFAULT_VALUE ( 0xffffffff )
  421. #define D3D12_PS_FRONTFACING_FALSE_VALUE ( 0 )
  422. #define D3D12_PS_FRONTFACING_TRUE_VALUE ( 0xffffffff )
  423. #define D3D12_PS_INPUT_REGISTER_COMPONENTS ( 4 )
  424. #define D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  425. #define D3D12_PS_INPUT_REGISTER_COUNT ( 32 )
  426. #define D3D12_PS_INPUT_REGISTER_READS_PER_INST ( 2 )
  427. #define D3D12_PS_INPUT_REGISTER_READ_PORTS ( 1 )
  428. #define D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.0f )
  429. #define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS ( 1 )
  430. #define D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  431. #define D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT ( 1 )
  432. #define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS ( 1 )
  433. #define D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  434. #define D3D12_PS_OUTPUT_MASK_REGISTER_COUNT ( 1 )
  435. #define D3D12_PS_OUTPUT_REGISTER_COMPONENTS ( 4 )
  436. #define D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  437. #define D3D12_PS_OUTPUT_REGISTER_COUNT ( 8 )
  438. #define D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT ( 0.5f )
  439. #define D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT ( 16 )
  440. #define D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE ( 4096 )
  441. #define D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP ( 27 )
  442. #define D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
  443. #define D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE ( 4096 )
  444. #define D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 32 )
  445. #define D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP ( 32 )
  446. #define D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION ( 16384 )
  447. #define D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT ( 1024 )
  448. #define D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT ( 4096 )
  449. #define D3D12_REQ_MAXANISOTROPY ( 16 )
  450. #define D3D12_REQ_MIP_LEVELS ( 15 )
  451. #define D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES ( 2048 )
  452. #define D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE ( 4096 )
  453. #define D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH ( 16384 )
  454. #define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM ( 128 )
  455. #define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM ( 0.25f )
  456. #define D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM ( 2048 )
  457. #define D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP ( 20 )
  458. #define D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE ( 4096 )
  459. #define D3D12_REQ_SUBRESOURCES ( 30720 )
  460. #define D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION ( 2048 )
  461. #define D3D12_REQ_TEXTURE1D_U_DIMENSION ( 16384 )
  462. #define D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION ( 2048 )
  463. #define D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION ( 16384 )
  464. #define D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION ( 2048 )
  465. #define D3D12_REQ_TEXTURECUBE_DIMENSION ( 16384 )
  466. #define D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL ( 0 )
  467. #define D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES ( 0xffffffff )
  468. #define D3D12_SHADER_MAJOR_VERSION ( 5 )
  469. #define D3D12_SHADER_MAX_INSTANCES ( 65535 )
  470. #define D3D12_SHADER_MAX_INTERFACES ( 253 )
  471. #define D3D12_SHADER_MAX_INTERFACE_CALL_SITES ( 4096 )
  472. #define D3D12_SHADER_MAX_TYPES ( 65535 )
  473. #define D3D12_SHADER_MINOR_VERSION ( 1 )
  474. #define D3D12_SHIFT_INSTRUCTION_PAD_VALUE ( 0 )
  475. #define D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT ( 5 )
  476. #define D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT ( 8 )
  477. #define D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT ( 65536 )
  478. #define D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT ( 4096 )
  479. #define D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES ( 2048 )
  480. #define D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES ( 512 )
  481. #define D3D12_SO_BUFFER_SLOT_COUNT ( 4 )
  482. #define D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP ( 0xffffffff )
  483. #define D3D12_SO_NO_RASTERIZED_STREAM ( 0xffffffff )
  484. #define D3D12_SO_OUTPUT_COMPONENT_COUNT ( 128 )
  485. #define D3D12_SO_STREAM_COUNT ( 4 )
  486. #define D3D12_SPEC_DATE_DAY ( 14 )
  487. #define D3D12_SPEC_DATE_MONTH ( 11 )
  488. #define D3D12_SPEC_DATE_YEAR ( 2014 )
  489. #define D3D12_SPEC_VERSION ( 1.16 )
  490. #define D3D12_SRGB_GAMMA ( 2.2f )
  491. #define D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 ( 12.92f )
  492. #define D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 ( 1.055f )
  493. #define D3D12_SRGB_TO_FLOAT_EXPONENT ( 2.4f )
  494. #define D3D12_SRGB_TO_FLOAT_OFFSET ( 0.055f )
  495. #define D3D12_SRGB_TO_FLOAT_THRESHOLD ( 0.04045f )
  496. #define D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP ( 0.5f )
  497. #define D3D12_STANDARD_COMPONENT_BIT_COUNT ( 32 )
  498. #define D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED ( 64 )
  499. #define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )
  500. #define D3D12_STANDARD_PIXEL_COMPONENT_COUNT ( 128 )
  501. #define D3D12_STANDARD_PIXEL_ELEMENT_COUNT ( 32 )
  502. #define D3D12_STANDARD_VECTOR_SIZE ( 4 )
  503. #define D3D12_STANDARD_VERTEX_ELEMENT_COUNT ( 32 )
  504. #define D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT ( 64 )
  505. #define D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT ( 8 )
  506. #define D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT ( 8 )
  507. #define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END ( 0xffffffff )
  508. #define D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START ( 0xfffffff0 )
  509. #define D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR ( 64 )
  510. #define D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 64 )
  511. #define D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR ( 63 )
  512. #define D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR ( 64 )
  513. #define D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR ( 2 )
  514. #define D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR ( 1 )
  515. #define D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR ( 1 )
  516. #define D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT ( 16 )
  517. #define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )
  518. #define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )
  519. #define D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES ( 65536 )
  520. #define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )
  521. #define D3D12_UAV_SLOT_COUNT ( 64 )
  522. #define D3D12_UNBOUND_MEMORY_ACCESS_RESULT ( 0 )
  523. #define D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX ( 15 )
  524. #define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE ( 16 )
  525. #define D3D12_VIEWPORT_BOUNDS_MAX ( 32767 )
  526. #define D3D12_VIEWPORT_BOUNDS_MIN ( -32768 )
  527. #define D3D12_VS_INPUT_REGISTER_COMPONENTS ( 4 )
  528. #define D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  529. #define D3D12_VS_INPUT_REGISTER_COUNT ( 32 )
  530. #define D3D12_VS_INPUT_REGISTER_READS_PER_INST ( 2 )
  531. #define D3D12_VS_INPUT_REGISTER_READ_PORTS ( 1 )
  532. #define D3D12_VS_OUTPUT_REGISTER_COMPONENTS ( 4 )
  533. #define D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT ( 32 )
  534. #define D3D12_VS_OUTPUT_REGISTER_COUNT ( 32 )
  535. #define D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT ( 10 )
  536. #define D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP ( 25 )
  537. #define D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP ( 25 )
  538. #endif
  539. typedef UINT64 D3D12_GPU_VIRTUAL_ADDRESS;
  540. typedef
  541. enum D3D12_COMMAND_LIST_TYPE
  542. {
  543. D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
  544. D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
  545. D3D12_COMMAND_LIST_TYPE_COMPUTE = 2,
  546. D3D12_COMMAND_LIST_TYPE_COPY = 3
  547. } D3D12_COMMAND_LIST_TYPE;
  548. typedef
  549. enum D3D12_COMMAND_QUEUE_FLAGS
  550. {
  551. D3D12_COMMAND_QUEUE_FLAG_NONE = 0,
  552. D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1
  553. } D3D12_COMMAND_QUEUE_FLAGS;
  554. DEFINE_ENUM_FLAG_OPERATORS( D3D12_COMMAND_QUEUE_FLAGS );
  555. typedef
  556. enum D3D12_COMMAND_QUEUE_PRIORITY
  557. {
  558. D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
  559. D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
  560. D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000
  561. } D3D12_COMMAND_QUEUE_PRIORITY;
  562. typedef struct D3D12_COMMAND_QUEUE_DESC
  563. {
  564. D3D12_COMMAND_LIST_TYPE Type;
  565. INT Priority;
  566. D3D12_COMMAND_QUEUE_FLAGS Flags;
  567. UINT NodeMask;
  568. } D3D12_COMMAND_QUEUE_DESC;
  569. typedef
  570. enum D3D12_PRIMITIVE_TOPOLOGY_TYPE
  571. {
  572. D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
  573. D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
  574. D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
  575. D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
  576. D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
  577. } D3D12_PRIMITIVE_TOPOLOGY_TYPE;
  578. typedef
  579. enum D3D12_INPUT_CLASSIFICATION
  580. {
  581. D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0,
  582. D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1
  583. } D3D12_INPUT_CLASSIFICATION;
  584. typedef struct D3D12_INPUT_ELEMENT_DESC
  585. {
  586. LPCSTR SemanticName;
  587. UINT SemanticIndex;
  588. DXGI_FORMAT Format;
  589. UINT InputSlot;
  590. UINT AlignedByteOffset;
  591. D3D12_INPUT_CLASSIFICATION InputSlotClass;
  592. UINT InstanceDataStepRate;
  593. } D3D12_INPUT_ELEMENT_DESC;
  594. typedef
  595. enum D3D12_FILL_MODE
  596. {
  597. D3D12_FILL_MODE_WIREFRAME = 2,
  598. D3D12_FILL_MODE_SOLID = 3
  599. } D3D12_FILL_MODE;
  600. typedef D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY;
  601. typedef D3D_PRIMITIVE D3D12_PRIMITIVE;
  602. typedef
  603. enum D3D12_CULL_MODE
  604. {
  605. D3D12_CULL_MODE_NONE = 1,
  606. D3D12_CULL_MODE_FRONT = 2,
  607. D3D12_CULL_MODE_BACK = 3
  608. } D3D12_CULL_MODE;
  609. typedef struct D3D12_SO_DECLARATION_ENTRY
  610. {
  611. UINT Stream;
  612. LPCSTR SemanticName;
  613. UINT SemanticIndex;
  614. BYTE StartComponent;
  615. BYTE ComponentCount;
  616. BYTE OutputSlot;
  617. } D3D12_SO_DECLARATION_ENTRY;
  618. typedef struct D3D12_VIEWPORT
  619. {
  620. FLOAT TopLeftX;
  621. FLOAT TopLeftY;
  622. FLOAT Width;
  623. FLOAT Height;
  624. FLOAT MinDepth;
  625. FLOAT MaxDepth;
  626. } D3D12_VIEWPORT;
  627. typedef RECT D3D12_RECT;
  628. typedef struct D3D12_BOX
  629. {
  630. UINT left;
  631. UINT top;
  632. UINT front;
  633. UINT right;
  634. UINT bottom;
  635. UINT back;
  636. } D3D12_BOX;
  637. typedef
  638. enum D3D12_COMPARISON_FUNC
  639. {
  640. D3D12_COMPARISON_FUNC_NEVER = 1,
  641. D3D12_COMPARISON_FUNC_LESS = 2,
  642. D3D12_COMPARISON_FUNC_EQUAL = 3,
  643. D3D12_COMPARISON_FUNC_LESS_EQUAL = 4,
  644. D3D12_COMPARISON_FUNC_GREATER = 5,
  645. D3D12_COMPARISON_FUNC_NOT_EQUAL = 6,
  646. D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
  647. D3D12_COMPARISON_FUNC_ALWAYS = 8
  648. } D3D12_COMPARISON_FUNC;
  649. typedef
  650. enum D3D12_DEPTH_WRITE_MASK
  651. {
  652. D3D12_DEPTH_WRITE_MASK_ZERO = 0,
  653. D3D12_DEPTH_WRITE_MASK_ALL = 1
  654. } D3D12_DEPTH_WRITE_MASK;
  655. typedef
  656. enum D3D12_STENCIL_OP
  657. {
  658. D3D12_STENCIL_OP_KEEP = 1,
  659. D3D12_STENCIL_OP_ZERO = 2,
  660. D3D12_STENCIL_OP_REPLACE = 3,
  661. D3D12_STENCIL_OP_INCR_SAT = 4,
  662. D3D12_STENCIL_OP_DECR_SAT = 5,
  663. D3D12_STENCIL_OP_INVERT = 6,
  664. D3D12_STENCIL_OP_INCR = 7,
  665. D3D12_STENCIL_OP_DECR = 8
  666. } D3D12_STENCIL_OP;
  667. typedef struct D3D12_DEPTH_STENCILOP_DESC
  668. {
  669. D3D12_STENCIL_OP StencilFailOp;
  670. D3D12_STENCIL_OP StencilDepthFailOp;
  671. D3D12_STENCIL_OP StencilPassOp;
  672. D3D12_COMPARISON_FUNC StencilFunc;
  673. } D3D12_DEPTH_STENCILOP_DESC;
  674. typedef struct D3D12_DEPTH_STENCIL_DESC
  675. {
  676. BOOL DepthEnable;
  677. D3D12_DEPTH_WRITE_MASK DepthWriteMask;
  678. D3D12_COMPARISON_FUNC DepthFunc;
  679. BOOL StencilEnable;
  680. UINT8 StencilReadMask;
  681. UINT8 StencilWriteMask;
  682. D3D12_DEPTH_STENCILOP_DESC FrontFace;
  683. D3D12_DEPTH_STENCILOP_DESC BackFace;
  684. } D3D12_DEPTH_STENCIL_DESC;
  685. typedef struct D3D12_DEPTH_STENCIL_DESC1
  686. {
  687. BOOL DepthEnable;
  688. D3D12_DEPTH_WRITE_MASK DepthWriteMask;
  689. D3D12_COMPARISON_FUNC DepthFunc;
  690. BOOL StencilEnable;
  691. UINT8 StencilReadMask;
  692. UINT8 StencilWriteMask;
  693. D3D12_DEPTH_STENCILOP_DESC FrontFace;
  694. D3D12_DEPTH_STENCILOP_DESC BackFace;
  695. BOOL DepthBoundsTestEnable;
  696. } D3D12_DEPTH_STENCIL_DESC1;
  697. typedef
  698. enum D3D12_BLEND
  699. {
  700. D3D12_BLEND_ZERO = 1,
  701. D3D12_BLEND_ONE = 2,
  702. D3D12_BLEND_SRC_COLOR = 3,
  703. D3D12_BLEND_INV_SRC_COLOR = 4,
  704. D3D12_BLEND_SRC_ALPHA = 5,
  705. D3D12_BLEND_INV_SRC_ALPHA = 6,
  706. D3D12_BLEND_DEST_ALPHA = 7,
  707. D3D12_BLEND_INV_DEST_ALPHA = 8,
  708. D3D12_BLEND_DEST_COLOR = 9,
  709. D3D12_BLEND_INV_DEST_COLOR = 10,
  710. D3D12_BLEND_SRC_ALPHA_SAT = 11,
  711. D3D12_BLEND_BLEND_FACTOR = 14,
  712. D3D12_BLEND_INV_BLEND_FACTOR = 15,
  713. D3D12_BLEND_SRC1_COLOR = 16,
  714. D3D12_BLEND_INV_SRC1_COLOR = 17,
  715. D3D12_BLEND_SRC1_ALPHA = 18,
  716. D3D12_BLEND_INV_SRC1_ALPHA = 19
  717. } D3D12_BLEND;
  718. typedef
  719. enum D3D12_BLEND_OP
  720. {
  721. D3D12_BLEND_OP_ADD = 1,
  722. D3D12_BLEND_OP_SUBTRACT = 2,
  723. D3D12_BLEND_OP_REV_SUBTRACT = 3,
  724. D3D12_BLEND_OP_MIN = 4,
  725. D3D12_BLEND_OP_MAX = 5
  726. } D3D12_BLEND_OP;
  727. typedef
  728. enum D3D12_COLOR_WRITE_ENABLE
  729. {
  730. D3D12_COLOR_WRITE_ENABLE_RED = 1,
  731. D3D12_COLOR_WRITE_ENABLE_GREEN = 2,
  732. D3D12_COLOR_WRITE_ENABLE_BLUE = 4,
  733. D3D12_COLOR_WRITE_ENABLE_ALPHA = 8,
  734. D3D12_COLOR_WRITE_ENABLE_ALL = ( ( ( D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN ) | D3D12_COLOR_WRITE_ENABLE_BLUE ) | D3D12_COLOR_WRITE_ENABLE_ALPHA )
  735. } D3D12_COLOR_WRITE_ENABLE;
  736. typedef
  737. enum D3D12_LOGIC_OP
  738. {
  739. D3D12_LOGIC_OP_CLEAR = 0,
  740. D3D12_LOGIC_OP_SET = ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
  741. D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
  742. D3D12_LOGIC_OP_COPY_INVERTED = ( D3D12_LOGIC_OP_COPY + 1 ) ,
  743. D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
  744. D3D12_LOGIC_OP_INVERT = ( D3D12_LOGIC_OP_NOOP + 1 ) ,
  745. D3D12_LOGIC_OP_AND = ( D3D12_LOGIC_OP_INVERT + 1 ) ,
  746. D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
  747. D3D12_LOGIC_OP_OR = ( D3D12_LOGIC_OP_NAND + 1 ) ,
  748. D3D12_LOGIC_OP_NOR = ( D3D12_LOGIC_OP_OR + 1 ) ,
  749. D3D12_LOGIC_OP_XOR = ( D3D12_LOGIC_OP_NOR + 1 ) ,
  750. D3D12_LOGIC_OP_EQUIV = ( D3D12_LOGIC_OP_XOR + 1 ) ,
  751. D3D12_LOGIC_OP_AND_REVERSE = ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
  752. D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
  753. D3D12_LOGIC_OP_OR_REVERSE = ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
  754. D3D12_LOGIC_OP_OR_INVERTED = ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
  755. } D3D12_LOGIC_OP;
  756. typedef struct D3D12_RENDER_TARGET_BLEND_DESC
  757. {
  758. BOOL BlendEnable;
  759. BOOL LogicOpEnable;
  760. D3D12_BLEND SrcBlend;
  761. D3D12_BLEND DestBlend;
  762. D3D12_BLEND_OP BlendOp;
  763. D3D12_BLEND SrcBlendAlpha;
  764. D3D12_BLEND DestBlendAlpha;
  765. D3D12_BLEND_OP BlendOpAlpha;
  766. D3D12_LOGIC_OP LogicOp;
  767. UINT8 RenderTargetWriteMask;
  768. } D3D12_RENDER_TARGET_BLEND_DESC;
  769. typedef struct D3D12_BLEND_DESC
  770. {
  771. BOOL AlphaToCoverageEnable;
  772. BOOL IndependentBlendEnable;
  773. D3D12_RENDER_TARGET_BLEND_DESC RenderTarget[ 8 ];
  774. } D3D12_BLEND_DESC;
  775. /* Note, the array size for RenderTarget[] above is D3D12_SIMULTANEOUS_RENDERTARGET_COUNT.
  776. IDL processing/generation of this header replaces the define; this comment is merely explaining what happened. */
  777. typedef
  778. enum D3D12_CONSERVATIVE_RASTERIZATION_MODE
  779. {
  780. D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0,
  781. D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1
  782. } D3D12_CONSERVATIVE_RASTERIZATION_MODE;
  783. typedef struct D3D12_RASTERIZER_DESC
  784. {
  785. D3D12_FILL_MODE FillMode;
  786. D3D12_CULL_MODE CullMode;
  787. BOOL FrontCounterClockwise;
  788. INT DepthBias;
  789. FLOAT DepthBiasClamp;
  790. FLOAT SlopeScaledDepthBias;
  791. BOOL DepthClipEnable;
  792. BOOL MultisampleEnable;
  793. BOOL AntialiasedLineEnable;
  794. UINT ForcedSampleCount;
  795. D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
  796. } D3D12_RASTERIZER_DESC;
  797. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_c_ifspec;
  798. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0000_v0_0_s_ifspec;
  799. #ifndef __ID3D12Object_INTERFACE_DEFINED__
  800. #define __ID3D12Object_INTERFACE_DEFINED__
  801. /* interface ID3D12Object */
  802. /* [unique][local][object][uuid] */
  803. EXTERN_C const IID IID_ID3D12Object;
  804. #if defined(__cplusplus) && !defined(CINTERFACE)
  805. MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
  806. ID3D12Object : public IUnknown
  807. {
  808. public:
  809. virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
  810. _In_ REFGUID guid,
  811. _Inout_ UINT *pDataSize,
  812. _Out_writes_bytes_opt_( *pDataSize ) void *pData) = 0;
  813. virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
  814. _In_ REFGUID guid,
  815. _In_ UINT DataSize,
  816. _In_reads_bytes_opt_( DataSize ) const void *pData) = 0;
  817. virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
  818. _In_ REFGUID guid,
  819. _In_opt_ const IUnknown *pData) = 0;
  820. virtual HRESULT STDMETHODCALLTYPE SetName(
  821. _In_z_ LPCWSTR Name) = 0;
  822. };
  823. #else /* C style interface */
  824. typedef struct ID3D12ObjectVtbl
  825. {
  826. BEGIN_INTERFACE
  827. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  828. ID3D12Object * This,
  829. REFIID riid,
  830. _COM_Outptr_ void **ppvObject);
  831. ULONG ( STDMETHODCALLTYPE *AddRef )(
  832. ID3D12Object * This);
  833. ULONG ( STDMETHODCALLTYPE *Release )(
  834. ID3D12Object * This);
  835. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  836. ID3D12Object * This,
  837. _In_ REFGUID guid,
  838. _Inout_ UINT *pDataSize,
  839. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  840. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  841. ID3D12Object * This,
  842. _In_ REFGUID guid,
  843. _In_ UINT DataSize,
  844. _In_reads_bytes_opt_( DataSize ) const void *pData);
  845. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  846. ID3D12Object * This,
  847. _In_ REFGUID guid,
  848. _In_opt_ const IUnknown *pData);
  849. HRESULT ( STDMETHODCALLTYPE *SetName )(
  850. ID3D12Object * This,
  851. _In_z_ LPCWSTR Name);
  852. END_INTERFACE
  853. } ID3D12ObjectVtbl;
  854. interface ID3D12Object
  855. {
  856. CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
  857. };
  858. #ifdef COBJMACROS
  859. #define ID3D12Object_QueryInterface(This,riid,ppvObject) \
  860. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  861. #define ID3D12Object_AddRef(This) \
  862. ( (This)->lpVtbl -> AddRef(This) )
  863. #define ID3D12Object_Release(This) \
  864. ( (This)->lpVtbl -> Release(This) )
  865. #define ID3D12Object_GetPrivateData(This,guid,pDataSize,pData) \
  866. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  867. #define ID3D12Object_SetPrivateData(This,guid,DataSize,pData) \
  868. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  869. #define ID3D12Object_SetPrivateDataInterface(This,guid,pData) \
  870. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  871. #define ID3D12Object_SetName(This,Name) \
  872. ( (This)->lpVtbl -> SetName(This,Name) )
  873. #endif /* COBJMACROS */
  874. #endif /* C style interface */
  875. #endif /* __ID3D12Object_INTERFACE_DEFINED__ */
  876. #ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
  877. #define __ID3D12DeviceChild_INTERFACE_DEFINED__
  878. /* interface ID3D12DeviceChild */
  879. /* [unique][local][object][uuid] */
  880. EXTERN_C const IID IID_ID3D12DeviceChild;
  881. #if defined(__cplusplus) && !defined(CINTERFACE)
  882. MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
  883. ID3D12DeviceChild : public ID3D12Object
  884. {
  885. public:
  886. virtual HRESULT STDMETHODCALLTYPE GetDevice(
  887. REFIID riid,
  888. _COM_Outptr_opt_ void **ppvDevice) = 0;
  889. };
  890. #else /* C style interface */
  891. typedef struct ID3D12DeviceChildVtbl
  892. {
  893. BEGIN_INTERFACE
  894. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  895. ID3D12DeviceChild * This,
  896. REFIID riid,
  897. _COM_Outptr_ void **ppvObject);
  898. ULONG ( STDMETHODCALLTYPE *AddRef )(
  899. ID3D12DeviceChild * This);
  900. ULONG ( STDMETHODCALLTYPE *Release )(
  901. ID3D12DeviceChild * This);
  902. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  903. ID3D12DeviceChild * This,
  904. _In_ REFGUID guid,
  905. _Inout_ UINT *pDataSize,
  906. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  907. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  908. ID3D12DeviceChild * This,
  909. _In_ REFGUID guid,
  910. _In_ UINT DataSize,
  911. _In_reads_bytes_opt_( DataSize ) const void *pData);
  912. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  913. ID3D12DeviceChild * This,
  914. _In_ REFGUID guid,
  915. _In_opt_ const IUnknown *pData);
  916. HRESULT ( STDMETHODCALLTYPE *SetName )(
  917. ID3D12DeviceChild * This,
  918. _In_z_ LPCWSTR Name);
  919. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  920. ID3D12DeviceChild * This,
  921. REFIID riid,
  922. _COM_Outptr_opt_ void **ppvDevice);
  923. END_INTERFACE
  924. } ID3D12DeviceChildVtbl;
  925. interface ID3D12DeviceChild
  926. {
  927. CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
  928. };
  929. #ifdef COBJMACROS
  930. #define ID3D12DeviceChild_QueryInterface(This,riid,ppvObject) \
  931. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  932. #define ID3D12DeviceChild_AddRef(This) \
  933. ( (This)->lpVtbl -> AddRef(This) )
  934. #define ID3D12DeviceChild_Release(This) \
  935. ( (This)->lpVtbl -> Release(This) )
  936. #define ID3D12DeviceChild_GetPrivateData(This,guid,pDataSize,pData) \
  937. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  938. #define ID3D12DeviceChild_SetPrivateData(This,guid,DataSize,pData) \
  939. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  940. #define ID3D12DeviceChild_SetPrivateDataInterface(This,guid,pData) \
  941. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  942. #define ID3D12DeviceChild_SetName(This,Name) \
  943. ( (This)->lpVtbl -> SetName(This,Name) )
  944. #define ID3D12DeviceChild_GetDevice(This,riid,ppvDevice) \
  945. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  946. #endif /* COBJMACROS */
  947. #endif /* C style interface */
  948. #endif /* __ID3D12DeviceChild_INTERFACE_DEFINED__ */
  949. #ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
  950. #define __ID3D12RootSignature_INTERFACE_DEFINED__
  951. /* interface ID3D12RootSignature */
  952. /* [unique][local][object][uuid] */
  953. EXTERN_C const IID IID_ID3D12RootSignature;
  954. #if defined(__cplusplus) && !defined(CINTERFACE)
  955. MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
  956. ID3D12RootSignature : public ID3D12DeviceChild
  957. {
  958. public:
  959. };
  960. #else /* C style interface */
  961. typedef struct ID3D12RootSignatureVtbl
  962. {
  963. BEGIN_INTERFACE
  964. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  965. ID3D12RootSignature * This,
  966. REFIID riid,
  967. _COM_Outptr_ void **ppvObject);
  968. ULONG ( STDMETHODCALLTYPE *AddRef )(
  969. ID3D12RootSignature * This);
  970. ULONG ( STDMETHODCALLTYPE *Release )(
  971. ID3D12RootSignature * This);
  972. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  973. ID3D12RootSignature * This,
  974. _In_ REFGUID guid,
  975. _Inout_ UINT *pDataSize,
  976. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  977. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  978. ID3D12RootSignature * This,
  979. _In_ REFGUID guid,
  980. _In_ UINT DataSize,
  981. _In_reads_bytes_opt_( DataSize ) const void *pData);
  982. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  983. ID3D12RootSignature * This,
  984. _In_ REFGUID guid,
  985. _In_opt_ const IUnknown *pData);
  986. HRESULT ( STDMETHODCALLTYPE *SetName )(
  987. ID3D12RootSignature * This,
  988. _In_z_ LPCWSTR Name);
  989. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  990. ID3D12RootSignature * This,
  991. REFIID riid,
  992. _COM_Outptr_opt_ void **ppvDevice);
  993. END_INTERFACE
  994. } ID3D12RootSignatureVtbl;
  995. interface ID3D12RootSignature
  996. {
  997. CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
  998. };
  999. #ifdef COBJMACROS
  1000. #define ID3D12RootSignature_QueryInterface(This,riid,ppvObject) \
  1001. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  1002. #define ID3D12RootSignature_AddRef(This) \
  1003. ( (This)->lpVtbl -> AddRef(This) )
  1004. #define ID3D12RootSignature_Release(This) \
  1005. ( (This)->lpVtbl -> Release(This) )
  1006. #define ID3D12RootSignature_GetPrivateData(This,guid,pDataSize,pData) \
  1007. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  1008. #define ID3D12RootSignature_SetPrivateData(This,guid,DataSize,pData) \
  1009. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  1010. #define ID3D12RootSignature_SetPrivateDataInterface(This,guid,pData) \
  1011. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  1012. #define ID3D12RootSignature_SetName(This,Name) \
  1013. ( (This)->lpVtbl -> SetName(This,Name) )
  1014. #define ID3D12RootSignature_GetDevice(This,riid,ppvDevice) \
  1015. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  1016. #endif /* COBJMACROS */
  1017. #endif /* C style interface */
  1018. #endif /* __ID3D12RootSignature_INTERFACE_DEFINED__ */
  1019. /* interface __MIDL_itf_d3d12_0000_0001 */
  1020. /* [local] */
  1021. typedef struct D3D12_SHADER_BYTECODE
  1022. {
  1023. _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
  1024. SIZE_T BytecodeLength;
  1025. } D3D12_SHADER_BYTECODE;
  1026. typedef struct D3D12_STREAM_OUTPUT_DESC
  1027. {
  1028. _Field_size_full_(NumEntries) const D3D12_SO_DECLARATION_ENTRY *pSODeclaration;
  1029. UINT NumEntries;
  1030. _Field_size_full_(NumStrides) const UINT *pBufferStrides;
  1031. UINT NumStrides;
  1032. UINT RasterizedStream;
  1033. } D3D12_STREAM_OUTPUT_DESC;
  1034. typedef struct D3D12_INPUT_LAYOUT_DESC
  1035. {
  1036. _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
  1037. UINT NumElements;
  1038. } D3D12_INPUT_LAYOUT_DESC;
  1039. typedef
  1040. enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE
  1041. {
  1042. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
  1043. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1,
  1044. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2
  1045. } D3D12_INDEX_BUFFER_STRIP_CUT_VALUE;
  1046. typedef struct D3D12_CACHED_PIPELINE_STATE
  1047. {
  1048. _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
  1049. SIZE_T CachedBlobSizeInBytes;
  1050. } D3D12_CACHED_PIPELINE_STATE;
  1051. typedef
  1052. enum D3D12_PIPELINE_STATE_FLAGS
  1053. {
  1054. D3D12_PIPELINE_STATE_FLAG_NONE = 0,
  1055. D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1
  1056. } D3D12_PIPELINE_STATE_FLAGS;
  1057. DEFINE_ENUM_FLAG_OPERATORS( D3D12_PIPELINE_STATE_FLAGS );
  1058. typedef struct D3D12_GRAPHICS_PIPELINE_STATE_DESC
  1059. {
  1060. ID3D12RootSignature *pRootSignature;
  1061. D3D12_SHADER_BYTECODE VS;
  1062. D3D12_SHADER_BYTECODE PS;
  1063. D3D12_SHADER_BYTECODE DS;
  1064. D3D12_SHADER_BYTECODE HS;
  1065. D3D12_SHADER_BYTECODE GS;
  1066. D3D12_STREAM_OUTPUT_DESC StreamOutput;
  1067. D3D12_BLEND_DESC BlendState;
  1068. UINT SampleMask;
  1069. D3D12_RASTERIZER_DESC RasterizerState;
  1070. D3D12_DEPTH_STENCIL_DESC DepthStencilState;
  1071. D3D12_INPUT_LAYOUT_DESC InputLayout;
  1072. D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue;
  1073. D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType;
  1074. UINT NumRenderTargets;
  1075. DXGI_FORMAT RTVFormats[ 8 ];
  1076. DXGI_FORMAT DSVFormat;
  1077. DXGI_SAMPLE_DESC SampleDesc;
  1078. UINT NodeMask;
  1079. D3D12_CACHED_PIPELINE_STATE CachedPSO;
  1080. D3D12_PIPELINE_STATE_FLAGS Flags;
  1081. } D3D12_GRAPHICS_PIPELINE_STATE_DESC;
  1082. typedef struct D3D12_COMPUTE_PIPELINE_STATE_DESC
  1083. {
  1084. ID3D12RootSignature *pRootSignature;
  1085. D3D12_SHADER_BYTECODE CS;
  1086. UINT NodeMask;
  1087. D3D12_CACHED_PIPELINE_STATE CachedPSO;
  1088. D3D12_PIPELINE_STATE_FLAGS Flags;
  1089. } D3D12_COMPUTE_PIPELINE_STATE_DESC;
  1090. struct D3D12_RT_FORMAT_ARRAY
  1091. {
  1092. DXGI_FORMAT RTFormats[ 8 ];
  1093. UINT NumRenderTargets;
  1094. } ;
  1095. typedef struct D3D12_PIPELINE_STATE_STREAM_DESC
  1096. {
  1097. _In_ SIZE_T SizeInBytes;
  1098. _In_reads_(_Inexpressible_("Dependent on size of subobjects")) void *pPipelineStateSubobjectStream;
  1099. } D3D12_PIPELINE_STATE_STREAM_DESC;
  1100. typedef
  1101. enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE
  1102. {
  1103. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0,
  1104. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
  1105. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
  1106. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
  1107. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
  1108. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
  1109. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
  1110. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
  1111. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
  1112. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
  1113. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
  1114. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
  1115. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
  1116. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
  1117. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
  1118. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
  1119. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
  1120. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
  1121. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
  1122. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
  1123. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
  1124. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
  1125. D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 )
  1126. } D3D12_PIPELINE_STATE_SUBOBJECT_TYPE;
  1127. typedef
  1128. enum D3D12_FEATURE
  1129. {
  1130. D3D12_FEATURE_D3D12_OPTIONS = 0,
  1131. D3D12_FEATURE_ARCHITECTURE = 1,
  1132. D3D12_FEATURE_FEATURE_LEVELS = 2,
  1133. D3D12_FEATURE_FORMAT_SUPPORT = 3,
  1134. D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
  1135. D3D12_FEATURE_FORMAT_INFO = 5,
  1136. D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
  1137. D3D12_FEATURE_SHADER_MODEL = 7,
  1138. D3D12_FEATURE_D3D12_OPTIONS1 = 8,
  1139. D3D12_FEATURE_ROOT_SIGNATURE = 12,
  1140. D3D12_FEATURE_ARCHITECTURE1 = 16,
  1141. D3D12_FEATURE_D3D12_OPTIONS2 = 18,
  1142. D3D12_FEATURE_SHADER_CACHE = 19,
  1143. D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20
  1144. } D3D12_FEATURE;
  1145. typedef
  1146. enum D3D12_SHADER_MIN_PRECISION_SUPPORT
  1147. {
  1148. D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0,
  1149. D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1,
  1150. D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2
  1151. } D3D12_SHADER_MIN_PRECISION_SUPPORT;
  1152. DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_MIN_PRECISION_SUPPORT );
  1153. typedef
  1154. enum D3D12_TILED_RESOURCES_TIER
  1155. {
  1156. D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0,
  1157. D3D12_TILED_RESOURCES_TIER_1 = 1,
  1158. D3D12_TILED_RESOURCES_TIER_2 = 2,
  1159. D3D12_TILED_RESOURCES_TIER_3 = 3
  1160. } D3D12_TILED_RESOURCES_TIER;
  1161. typedef
  1162. enum D3D12_RESOURCE_BINDING_TIER
  1163. {
  1164. D3D12_RESOURCE_BINDING_TIER_1 = 1,
  1165. D3D12_RESOURCE_BINDING_TIER_2 = 2,
  1166. D3D12_RESOURCE_BINDING_TIER_3 = 3
  1167. } D3D12_RESOURCE_BINDING_TIER;
  1168. typedef
  1169. enum D3D12_CONSERVATIVE_RASTERIZATION_TIER
  1170. {
  1171. D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
  1172. D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1,
  1173. D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2,
  1174. D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3
  1175. } D3D12_CONSERVATIVE_RASTERIZATION_TIER;
  1176. typedef
  1177. enum D3D12_FORMAT_SUPPORT1
  1178. {
  1179. D3D12_FORMAT_SUPPORT1_NONE = 0,
  1180. D3D12_FORMAT_SUPPORT1_BUFFER = 0x1,
  1181. D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2,
  1182. D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4,
  1183. D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8,
  1184. D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10,
  1185. D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20,
  1186. D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40,
  1187. D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80,
  1188. D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100,
  1189. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
  1190. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400,
  1191. D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800,
  1192. D3D12_FORMAT_SUPPORT1_MIP = 0x1000,
  1193. D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
  1194. D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000,
  1195. D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
  1196. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000,
  1197. D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000,
  1198. D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000,
  1199. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000,
  1200. D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000,
  1201. D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
  1202. D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000,
  1203. D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000,
  1204. D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000,
  1205. D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000,
  1206. D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000,
  1207. D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
  1208. D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
  1209. } D3D12_FORMAT_SUPPORT1;
  1210. DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT1 );
  1211. typedef
  1212. enum D3D12_FORMAT_SUPPORT2
  1213. {
  1214. D3D12_FORMAT_SUPPORT2_NONE = 0,
  1215. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1,
  1216. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2,
  1217. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4,
  1218. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8,
  1219. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10,
  1220. D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20,
  1221. D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40,
  1222. D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80,
  1223. D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100,
  1224. D3D12_FORMAT_SUPPORT2_TILED = 0x200,
  1225. D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000
  1226. } D3D12_FORMAT_SUPPORT2;
  1227. DEFINE_ENUM_FLAG_OPERATORS( D3D12_FORMAT_SUPPORT2 );
  1228. typedef
  1229. enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
  1230. {
  1231. D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0,
  1232. D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1
  1233. } D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
  1234. DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS );
  1235. typedef
  1236. enum D3D12_CROSS_NODE_SHARING_TIER
  1237. {
  1238. D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
  1239. D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1,
  1240. D3D12_CROSS_NODE_SHARING_TIER_1 = 2,
  1241. D3D12_CROSS_NODE_SHARING_TIER_2 = 3
  1242. } D3D12_CROSS_NODE_SHARING_TIER;
  1243. typedef
  1244. enum D3D12_RESOURCE_HEAP_TIER
  1245. {
  1246. D3D12_RESOURCE_HEAP_TIER_1 = 1,
  1247. D3D12_RESOURCE_HEAP_TIER_2 = 2
  1248. } D3D12_RESOURCE_HEAP_TIER;
  1249. typedef
  1250. enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
  1251. {
  1252. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0,
  1253. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 1,
  1254. D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 2
  1255. } D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
  1256. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS
  1257. {
  1258. _Out_ BOOL DoublePrecisionFloatShaderOps;
  1259. _Out_ BOOL OutputMergerLogicOp;
  1260. _Out_ D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport;
  1261. _Out_ D3D12_TILED_RESOURCES_TIER TiledResourcesTier;
  1262. _Out_ D3D12_RESOURCE_BINDING_TIER ResourceBindingTier;
  1263. _Out_ BOOL PSSpecifiedStencilRefSupported;
  1264. _Out_ BOOL TypedUAVLoadAdditionalFormats;
  1265. _Out_ BOOL ROVsSupported;
  1266. _Out_ D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier;
  1267. _Out_ UINT MaxGPUVirtualAddressBitsPerResource;
  1268. _Out_ BOOL StandardSwizzle64KBSupported;
  1269. _Out_ D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier;
  1270. _Out_ BOOL CrossAdapterRowMajorTextureSupported;
  1271. _Out_ BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation;
  1272. _Out_ D3D12_RESOURCE_HEAP_TIER ResourceHeapTier;
  1273. } D3D12_FEATURE_DATA_D3D12_OPTIONS;
  1274. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
  1275. {
  1276. _Out_ BOOL WaveOps;
  1277. _Out_ UINT WaveLaneCountMin;
  1278. _Out_ UINT WaveLaneCountMax;
  1279. _Out_ UINT TotalLaneCount;
  1280. _Out_ BOOL ExpandedComputeResourceStates;
  1281. _Out_ BOOL Int64ShaderOps;
  1282. } D3D12_FEATURE_DATA_D3D12_OPTIONS1;
  1283. typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
  1284. {
  1285. _Out_ BOOL DepthBoundsTestSupported;
  1286. _Out_ D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
  1287. } D3D12_FEATURE_DATA_D3D12_OPTIONS2;
  1288. typedef
  1289. enum D3D_ROOT_SIGNATURE_VERSION
  1290. {
  1291. D3D_ROOT_SIGNATURE_VERSION_1 = 0x1,
  1292. D3D_ROOT_SIGNATURE_VERSION_1_0 = 0x1,
  1293. D3D_ROOT_SIGNATURE_VERSION_1_1 = 0x2
  1294. } D3D_ROOT_SIGNATURE_VERSION;
  1295. typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
  1296. {
  1297. _Inout_ D3D_ROOT_SIGNATURE_VERSION HighestVersion;
  1298. } D3D12_FEATURE_DATA_ROOT_SIGNATURE;
  1299. typedef struct D3D12_FEATURE_DATA_ARCHITECTURE
  1300. {
  1301. _In_ UINT NodeIndex;
  1302. _Out_ BOOL TileBasedRenderer;
  1303. _Out_ BOOL UMA;
  1304. _Out_ BOOL CacheCoherentUMA;
  1305. } D3D12_FEATURE_DATA_ARCHITECTURE;
  1306. typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
  1307. {
  1308. _In_ UINT NodeIndex;
  1309. _Out_ BOOL TileBasedRenderer;
  1310. _Out_ BOOL UMA;
  1311. _Out_ BOOL CacheCoherentUMA;
  1312. _Out_ BOOL IsolatedMMU;
  1313. } D3D12_FEATURE_DATA_ARCHITECTURE1;
  1314. typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
  1315. {
  1316. _In_ UINT NumFeatureLevels;
  1317. _In_reads_(NumFeatureLevels) const D3D_FEATURE_LEVEL *pFeatureLevelsRequested;
  1318. _Out_ D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
  1319. } D3D12_FEATURE_DATA_FEATURE_LEVELS;
  1320. typedef
  1321. enum D3D_SHADER_MODEL
  1322. {
  1323. D3D_SHADER_MODEL_5_1 = 0x51,
  1324. D3D_SHADER_MODEL_6_0 = 0x60
  1325. } D3D_SHADER_MODEL;
  1326. typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
  1327. {
  1328. _Inout_ D3D_SHADER_MODEL HighestShaderModel;
  1329. } D3D12_FEATURE_DATA_SHADER_MODEL;
  1330. typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
  1331. {
  1332. _In_ DXGI_FORMAT Format;
  1333. _Out_ D3D12_FORMAT_SUPPORT1 Support1;
  1334. _Out_ D3D12_FORMAT_SUPPORT2 Support2;
  1335. } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
  1336. typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
  1337. {
  1338. _In_ DXGI_FORMAT Format;
  1339. _In_ UINT SampleCount;
  1340. _In_ D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
  1341. _Out_ UINT NumQualityLevels;
  1342. } D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
  1343. typedef struct D3D12_FEATURE_DATA_FORMAT_INFO
  1344. {
  1345. DXGI_FORMAT Format;
  1346. UINT8 PlaneCount;
  1347. } D3D12_FEATURE_DATA_FORMAT_INFO;
  1348. typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
  1349. {
  1350. UINT MaxGPUVirtualAddressBitsPerResource;
  1351. UINT MaxGPUVirtualAddressBitsPerProcess;
  1352. } D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
  1353. typedef
  1354. enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
  1355. {
  1356. D3D12_SHADER_CACHE_SUPPORT_NONE = 0,
  1357. D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO = 0x1,
  1358. D3D12_SHADER_CACHE_SUPPORT_LIBRARY = 0x2,
  1359. D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE = 0x4,
  1360. D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE = 0x8
  1361. } D3D12_SHADER_CACHE_SUPPORT_FLAGS;
  1362. DEFINE_ENUM_FLAG_OPERATORS( D3D12_SHADER_CACHE_SUPPORT_FLAGS );
  1363. typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
  1364. {
  1365. _Out_ D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
  1366. } D3D12_FEATURE_DATA_SHADER_CACHE;
  1367. typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
  1368. {
  1369. _In_ D3D12_COMMAND_LIST_TYPE CommandListType;
  1370. _In_ UINT Priority;
  1371. _Out_ BOOL PriorityForTypeIsSupported;
  1372. } D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
  1373. typedef struct D3D12_RESOURCE_ALLOCATION_INFO
  1374. {
  1375. UINT64 SizeInBytes;
  1376. UINT64 Alignment;
  1377. } D3D12_RESOURCE_ALLOCATION_INFO;
  1378. typedef
  1379. enum D3D12_HEAP_TYPE
  1380. {
  1381. D3D12_HEAP_TYPE_DEFAULT = 1,
  1382. D3D12_HEAP_TYPE_UPLOAD = 2,
  1383. D3D12_HEAP_TYPE_READBACK = 3,
  1384. D3D12_HEAP_TYPE_CUSTOM = 4
  1385. } D3D12_HEAP_TYPE;
  1386. typedef
  1387. enum D3D12_CPU_PAGE_PROPERTY
  1388. {
  1389. D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0,
  1390. D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1,
  1391. D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2,
  1392. D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3
  1393. } D3D12_CPU_PAGE_PROPERTY;
  1394. typedef
  1395. enum D3D12_MEMORY_POOL
  1396. {
  1397. D3D12_MEMORY_POOL_UNKNOWN = 0,
  1398. D3D12_MEMORY_POOL_L0 = 1,
  1399. D3D12_MEMORY_POOL_L1 = 2
  1400. } D3D12_MEMORY_POOL;
  1401. typedef struct D3D12_HEAP_PROPERTIES
  1402. {
  1403. D3D12_HEAP_TYPE Type;
  1404. D3D12_CPU_PAGE_PROPERTY CPUPageProperty;
  1405. D3D12_MEMORY_POOL MemoryPoolPreference;
  1406. UINT CreationNodeMask;
  1407. UINT VisibleNodeMask;
  1408. } D3D12_HEAP_PROPERTIES;
  1409. typedef
  1410. enum D3D12_HEAP_FLAGS
  1411. {
  1412. D3D12_HEAP_FLAG_NONE = 0,
  1413. D3D12_HEAP_FLAG_SHARED = 0x1,
  1414. D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
  1415. D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
  1416. D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
  1417. D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
  1418. D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
  1419. D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
  1420. D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
  1421. D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
  1422. D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
  1423. D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
  1424. D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
  1425. } D3D12_HEAP_FLAGS;
  1426. DEFINE_ENUM_FLAG_OPERATORS( D3D12_HEAP_FLAGS );
  1427. typedef struct D3D12_HEAP_DESC
  1428. {
  1429. UINT64 SizeInBytes;
  1430. D3D12_HEAP_PROPERTIES Properties;
  1431. UINT64 Alignment;
  1432. D3D12_HEAP_FLAGS Flags;
  1433. } D3D12_HEAP_DESC;
  1434. typedef
  1435. enum D3D12_RESOURCE_DIMENSION
  1436. {
  1437. D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
  1438. D3D12_RESOURCE_DIMENSION_BUFFER = 1,
  1439. D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
  1440. D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
  1441. D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
  1442. } D3D12_RESOURCE_DIMENSION;
  1443. typedef
  1444. enum D3D12_TEXTURE_LAYOUT
  1445. {
  1446. D3D12_TEXTURE_LAYOUT_UNKNOWN = 0,
  1447. D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1,
  1448. D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
  1449. D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3
  1450. } D3D12_TEXTURE_LAYOUT;
  1451. typedef
  1452. enum D3D12_RESOURCE_FLAGS
  1453. {
  1454. D3D12_RESOURCE_FLAG_NONE = 0,
  1455. D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
  1456. D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
  1457. D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
  1458. D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
  1459. D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
  1460. D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20
  1461. } D3D12_RESOURCE_FLAGS;
  1462. DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_FLAGS );
  1463. typedef struct D3D12_RESOURCE_DESC
  1464. {
  1465. D3D12_RESOURCE_DIMENSION Dimension;
  1466. UINT64 Alignment;
  1467. UINT64 Width;
  1468. UINT Height;
  1469. UINT16 DepthOrArraySize;
  1470. UINT16 MipLevels;
  1471. DXGI_FORMAT Format;
  1472. DXGI_SAMPLE_DESC SampleDesc;
  1473. D3D12_TEXTURE_LAYOUT Layout;
  1474. D3D12_RESOURCE_FLAGS Flags;
  1475. } D3D12_RESOURCE_DESC;
  1476. typedef struct D3D12_DEPTH_STENCIL_VALUE
  1477. {
  1478. FLOAT Depth;
  1479. UINT8 Stencil;
  1480. } D3D12_DEPTH_STENCIL_VALUE;
  1481. typedef struct D3D12_CLEAR_VALUE
  1482. {
  1483. DXGI_FORMAT Format;
  1484. union
  1485. {
  1486. FLOAT Color[ 4 ];
  1487. D3D12_DEPTH_STENCIL_VALUE DepthStencil;
  1488. } ;
  1489. } D3D12_CLEAR_VALUE;
  1490. typedef struct D3D12_RANGE
  1491. {
  1492. SIZE_T Begin;
  1493. SIZE_T End;
  1494. } D3D12_RANGE;
  1495. typedef struct D3D12_RANGE_UINT64
  1496. {
  1497. UINT64 Begin;
  1498. UINT64 End;
  1499. } D3D12_RANGE_UINT64;
  1500. typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
  1501. {
  1502. UINT Subresource;
  1503. D3D12_RANGE_UINT64 Range;
  1504. } D3D12_SUBRESOURCE_RANGE_UINT64;
  1505. typedef struct D3D12_SUBRESOURCE_INFO
  1506. {
  1507. UINT64 Offset;
  1508. UINT RowPitch;
  1509. UINT DepthPitch;
  1510. } D3D12_SUBRESOURCE_INFO;
  1511. typedef struct D3D12_TILED_RESOURCE_COORDINATE
  1512. {
  1513. UINT X;
  1514. UINT Y;
  1515. UINT Z;
  1516. UINT Subresource;
  1517. } D3D12_TILED_RESOURCE_COORDINATE;
  1518. typedef struct D3D12_TILE_REGION_SIZE
  1519. {
  1520. UINT NumTiles;
  1521. BOOL UseBox;
  1522. UINT Width;
  1523. UINT16 Height;
  1524. UINT16 Depth;
  1525. } D3D12_TILE_REGION_SIZE;
  1526. typedef
  1527. enum D3D12_TILE_RANGE_FLAGS
  1528. {
  1529. D3D12_TILE_RANGE_FLAG_NONE = 0,
  1530. D3D12_TILE_RANGE_FLAG_NULL = 1,
  1531. D3D12_TILE_RANGE_FLAG_SKIP = 2,
  1532. D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4
  1533. } D3D12_TILE_RANGE_FLAGS;
  1534. typedef struct D3D12_SUBRESOURCE_TILING
  1535. {
  1536. UINT WidthInTiles;
  1537. UINT16 HeightInTiles;
  1538. UINT16 DepthInTiles;
  1539. UINT StartTileIndexInOverallResource;
  1540. } D3D12_SUBRESOURCE_TILING;
  1541. typedef struct D3D12_TILE_SHAPE
  1542. {
  1543. UINT WidthInTexels;
  1544. UINT HeightInTexels;
  1545. UINT DepthInTexels;
  1546. } D3D12_TILE_SHAPE;
  1547. typedef struct D3D12_PACKED_MIP_INFO
  1548. {
  1549. UINT8 NumStandardMips;
  1550. UINT8 NumPackedMips;
  1551. UINT NumTilesForPackedMips;
  1552. UINT StartTileIndexInOverallResource;
  1553. } D3D12_PACKED_MIP_INFO;
  1554. typedef
  1555. enum D3D12_TILE_MAPPING_FLAGS
  1556. {
  1557. D3D12_TILE_MAPPING_FLAG_NONE = 0,
  1558. D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1
  1559. } D3D12_TILE_MAPPING_FLAGS;
  1560. DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_MAPPING_FLAGS );
  1561. typedef
  1562. enum D3D12_TILE_COPY_FLAGS
  1563. {
  1564. D3D12_TILE_COPY_FLAG_NONE = 0,
  1565. D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1,
  1566. D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
  1567. D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4
  1568. } D3D12_TILE_COPY_FLAGS;
  1569. DEFINE_ENUM_FLAG_OPERATORS( D3D12_TILE_COPY_FLAGS );
  1570. typedef
  1571. enum D3D12_RESOURCE_STATES
  1572. {
  1573. D3D12_RESOURCE_STATE_COMMON = 0,
  1574. D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  1575. D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  1576. D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  1577. D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  1578. D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  1579. D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  1580. D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  1581. D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  1582. D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  1583. D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  1584. D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  1585. D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  1586. D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  1587. D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  1588. D3D12_RESOURCE_STATE_GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) ,
  1589. D3D12_RESOURCE_STATE_PRESENT = 0,
  1590. D3D12_RESOURCE_STATE_PREDICATION = 0x200
  1591. } D3D12_RESOURCE_STATES;
  1592. DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_STATES );
  1593. typedef
  1594. enum D3D12_RESOURCE_BARRIER_TYPE
  1595. {
  1596. D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0,
  1597. D3D12_RESOURCE_BARRIER_TYPE_ALIASING = ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
  1598. D3D12_RESOURCE_BARRIER_TYPE_UAV = ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
  1599. } D3D12_RESOURCE_BARRIER_TYPE;
  1600. typedef struct D3D12_RESOURCE_TRANSITION_BARRIER
  1601. {
  1602. ID3D12Resource *pResource;
  1603. UINT Subresource;
  1604. D3D12_RESOURCE_STATES StateBefore;
  1605. D3D12_RESOURCE_STATES StateAfter;
  1606. } D3D12_RESOURCE_TRANSITION_BARRIER;
  1607. typedef struct D3D12_RESOURCE_ALIASING_BARRIER
  1608. {
  1609. ID3D12Resource *pResourceBefore;
  1610. ID3D12Resource *pResourceAfter;
  1611. } D3D12_RESOURCE_ALIASING_BARRIER;
  1612. typedef struct D3D12_RESOURCE_UAV_BARRIER
  1613. {
  1614. ID3D12Resource *pResource;
  1615. } D3D12_RESOURCE_UAV_BARRIER;
  1616. typedef
  1617. enum D3D12_RESOURCE_BARRIER_FLAGS
  1618. {
  1619. D3D12_RESOURCE_BARRIER_FLAG_NONE = 0,
  1620. D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1,
  1621. D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2
  1622. } D3D12_RESOURCE_BARRIER_FLAGS;
  1623. DEFINE_ENUM_FLAG_OPERATORS( D3D12_RESOURCE_BARRIER_FLAGS );
  1624. typedef struct D3D12_RESOURCE_BARRIER
  1625. {
  1626. D3D12_RESOURCE_BARRIER_TYPE Type;
  1627. D3D12_RESOURCE_BARRIER_FLAGS Flags;
  1628. union
  1629. {
  1630. D3D12_RESOURCE_TRANSITION_BARRIER Transition;
  1631. D3D12_RESOURCE_ALIASING_BARRIER Aliasing;
  1632. D3D12_RESOURCE_UAV_BARRIER UAV;
  1633. } ;
  1634. } D3D12_RESOURCE_BARRIER;
  1635. typedef struct D3D12_SUBRESOURCE_FOOTPRINT
  1636. {
  1637. DXGI_FORMAT Format;
  1638. UINT Width;
  1639. UINT Height;
  1640. UINT Depth;
  1641. UINT RowPitch;
  1642. } D3D12_SUBRESOURCE_FOOTPRINT;
  1643. typedef struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT
  1644. {
  1645. UINT64 Offset;
  1646. D3D12_SUBRESOURCE_FOOTPRINT Footprint;
  1647. } D3D12_PLACED_SUBRESOURCE_FOOTPRINT;
  1648. typedef
  1649. enum D3D12_TEXTURE_COPY_TYPE
  1650. {
  1651. D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
  1652. D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1
  1653. } D3D12_TEXTURE_COPY_TYPE;
  1654. typedef struct D3D12_TEXTURE_COPY_LOCATION
  1655. {
  1656. ID3D12Resource *pResource;
  1657. D3D12_TEXTURE_COPY_TYPE Type;
  1658. union
  1659. {
  1660. D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint;
  1661. UINT SubresourceIndex;
  1662. } ;
  1663. } D3D12_TEXTURE_COPY_LOCATION;
  1664. typedef
  1665. enum D3D12_RESOLVE_MODE
  1666. {
  1667. D3D12_RESOLVE_MODE_DECOMPRESS = 0,
  1668. D3D12_RESOLVE_MODE_MIN = 1,
  1669. D3D12_RESOLVE_MODE_MAX = 2,
  1670. D3D12_RESOLVE_MODE_AVERAGE = 3
  1671. } D3D12_RESOLVE_MODE;
  1672. typedef struct D3D12_SAMPLE_POSITION
  1673. {
  1674. INT8 X;
  1675. INT8 Y;
  1676. } D3D12_SAMPLE_POSITION;
  1677. typedef
  1678. enum D3D12_SHADER_COMPONENT_MAPPING
  1679. {
  1680. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0,
  1681. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1,
  1682. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2,
  1683. D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3,
  1684. D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4,
  1685. D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5
  1686. } D3D12_SHADER_COMPONENT_MAPPING;
  1687. #define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
  1688. #define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
  1689. #define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))
  1690. #define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \
  1691. (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \
  1692. (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \
  1693. (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \
  1694. D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
  1695. #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))
  1696. #define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)
  1697. typedef
  1698. enum D3D12_BUFFER_SRV_FLAGS
  1699. {
  1700. D3D12_BUFFER_SRV_FLAG_NONE = 0,
  1701. D3D12_BUFFER_SRV_FLAG_RAW = 0x1
  1702. } D3D12_BUFFER_SRV_FLAGS;
  1703. DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_SRV_FLAGS );
  1704. typedef struct D3D12_BUFFER_SRV
  1705. {
  1706. UINT64 FirstElement;
  1707. UINT NumElements;
  1708. UINT StructureByteStride;
  1709. D3D12_BUFFER_SRV_FLAGS Flags;
  1710. } D3D12_BUFFER_SRV;
  1711. typedef struct D3D12_TEX1D_SRV
  1712. {
  1713. UINT MostDetailedMip;
  1714. UINT MipLevels;
  1715. FLOAT ResourceMinLODClamp;
  1716. } D3D12_TEX1D_SRV;
  1717. typedef struct D3D12_TEX1D_ARRAY_SRV
  1718. {
  1719. UINT MostDetailedMip;
  1720. UINT MipLevels;
  1721. UINT FirstArraySlice;
  1722. UINT ArraySize;
  1723. FLOAT ResourceMinLODClamp;
  1724. } D3D12_TEX1D_ARRAY_SRV;
  1725. typedef struct D3D12_TEX2D_SRV
  1726. {
  1727. UINT MostDetailedMip;
  1728. UINT MipLevels;
  1729. UINT PlaneSlice;
  1730. FLOAT ResourceMinLODClamp;
  1731. } D3D12_TEX2D_SRV;
  1732. typedef struct D3D12_TEX2D_ARRAY_SRV
  1733. {
  1734. UINT MostDetailedMip;
  1735. UINT MipLevels;
  1736. UINT FirstArraySlice;
  1737. UINT ArraySize;
  1738. UINT PlaneSlice;
  1739. FLOAT ResourceMinLODClamp;
  1740. } D3D12_TEX2D_ARRAY_SRV;
  1741. typedef struct D3D12_TEX3D_SRV
  1742. {
  1743. UINT MostDetailedMip;
  1744. UINT MipLevels;
  1745. FLOAT ResourceMinLODClamp;
  1746. } D3D12_TEX3D_SRV;
  1747. typedef struct D3D12_TEXCUBE_SRV
  1748. {
  1749. UINT MostDetailedMip;
  1750. UINT MipLevels;
  1751. FLOAT ResourceMinLODClamp;
  1752. } D3D12_TEXCUBE_SRV;
  1753. typedef struct D3D12_TEXCUBE_ARRAY_SRV
  1754. {
  1755. UINT MostDetailedMip;
  1756. UINT MipLevels;
  1757. UINT First2DArrayFace;
  1758. UINT NumCubes;
  1759. FLOAT ResourceMinLODClamp;
  1760. } D3D12_TEXCUBE_ARRAY_SRV;
  1761. typedef struct D3D12_TEX2DMS_SRV
  1762. {
  1763. UINT UnusedField_NothingToDefine;
  1764. } D3D12_TEX2DMS_SRV;
  1765. typedef struct D3D12_TEX2DMS_ARRAY_SRV
  1766. {
  1767. UINT FirstArraySlice;
  1768. UINT ArraySize;
  1769. } D3D12_TEX2DMS_ARRAY_SRV;
  1770. typedef
  1771. enum D3D12_SRV_DIMENSION
  1772. {
  1773. D3D12_SRV_DIMENSION_UNKNOWN = 0,
  1774. D3D12_SRV_DIMENSION_BUFFER = 1,
  1775. D3D12_SRV_DIMENSION_TEXTURE1D = 2,
  1776. D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3,
  1777. D3D12_SRV_DIMENSION_TEXTURE2D = 4,
  1778. D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5,
  1779. D3D12_SRV_DIMENSION_TEXTURE2DMS = 6,
  1780. D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7,
  1781. D3D12_SRV_DIMENSION_TEXTURE3D = 8,
  1782. D3D12_SRV_DIMENSION_TEXTURECUBE = 9,
  1783. D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10
  1784. } D3D12_SRV_DIMENSION;
  1785. typedef struct D3D12_SHADER_RESOURCE_VIEW_DESC
  1786. {
  1787. DXGI_FORMAT Format;
  1788. D3D12_SRV_DIMENSION ViewDimension;
  1789. UINT Shader4ComponentMapping;
  1790. union
  1791. {
  1792. D3D12_BUFFER_SRV Buffer;
  1793. D3D12_TEX1D_SRV Texture1D;
  1794. D3D12_TEX1D_ARRAY_SRV Texture1DArray;
  1795. D3D12_TEX2D_SRV Texture2D;
  1796. D3D12_TEX2D_ARRAY_SRV Texture2DArray;
  1797. D3D12_TEX2DMS_SRV Texture2DMS;
  1798. D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray;
  1799. D3D12_TEX3D_SRV Texture3D;
  1800. D3D12_TEXCUBE_SRV TextureCube;
  1801. D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray;
  1802. } ;
  1803. } D3D12_SHADER_RESOURCE_VIEW_DESC;
  1804. typedef struct D3D12_CONSTANT_BUFFER_VIEW_DESC
  1805. {
  1806. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  1807. UINT SizeInBytes;
  1808. } D3D12_CONSTANT_BUFFER_VIEW_DESC;
  1809. typedef
  1810. enum D3D12_FILTER
  1811. {
  1812. D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
  1813. D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
  1814. D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
  1815. D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
  1816. D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
  1817. D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
  1818. D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
  1819. D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
  1820. D3D12_FILTER_ANISOTROPIC = 0x55,
  1821. D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
  1822. D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
  1823. D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
  1824. D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
  1825. D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
  1826. D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
  1827. D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
  1828. D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
  1829. D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
  1830. D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
  1831. D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
  1832. D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
  1833. D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
  1834. D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
  1835. D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
  1836. D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
  1837. D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
  1838. D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
  1839. D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
  1840. D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
  1841. D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
  1842. D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
  1843. D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
  1844. D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
  1845. D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
  1846. D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
  1847. D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
  1848. } D3D12_FILTER;
  1849. typedef
  1850. enum D3D12_FILTER_TYPE
  1851. {
  1852. D3D12_FILTER_TYPE_POINT = 0,
  1853. D3D12_FILTER_TYPE_LINEAR = 1
  1854. } D3D12_FILTER_TYPE;
  1855. typedef
  1856. enum D3D12_FILTER_REDUCTION_TYPE
  1857. {
  1858. D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0,
  1859. D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1,
  1860. D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
  1861. D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
  1862. } D3D12_FILTER_REDUCTION_TYPE;
  1863. #define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
  1864. #define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
  1865. #define D3D12_FILTER_TYPE_MASK ( 0x3 )
  1866. #define D3D12_MIN_FILTER_SHIFT ( 4 )
  1867. #define D3D12_MAG_FILTER_SHIFT ( 2 )
  1868. #define D3D12_MIP_FILTER_SHIFT ( 0 )
  1869. #define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
  1870. #define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
  1871. ( ( D3D12_FILTER ) ( \
  1872. ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
  1873. ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
  1874. ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
  1875. ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
  1876. #define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
  1877. ( ( D3D12_FILTER ) ( \
  1878. D3D12_ANISOTROPIC_FILTERING_BIT | \
  1879. D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
  1880. D3D12_FILTER_TYPE_LINEAR, \
  1881. D3D12_FILTER_TYPE_LINEAR, \
  1882. reduction ) ) )
  1883. #define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
  1884. ( ( D3D12_FILTER_TYPE ) \
  1885. ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
  1886. #define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
  1887. ( ( D3D12_FILTER_TYPE ) \
  1888. ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
  1889. #define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
  1890. ( ( D3D12_FILTER_TYPE ) \
  1891. ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
  1892. #define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
  1893. ( ( D3D12_FILTER_REDUCTION_TYPE ) \
  1894. ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
  1895. #define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
  1896. ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
  1897. #define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
  1898. ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
  1899. ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
  1900. ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \
  1901. ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) )
  1902. typedef
  1903. enum D3D12_TEXTURE_ADDRESS_MODE
  1904. {
  1905. D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1,
  1906. D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2,
  1907. D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3,
  1908. D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4,
  1909. D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
  1910. } D3D12_TEXTURE_ADDRESS_MODE;
  1911. typedef struct D3D12_SAMPLER_DESC
  1912. {
  1913. D3D12_FILTER Filter;
  1914. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  1915. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  1916. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  1917. FLOAT MipLODBias;
  1918. UINT MaxAnisotropy;
  1919. D3D12_COMPARISON_FUNC ComparisonFunc;
  1920. FLOAT BorderColor[ 4 ];
  1921. FLOAT MinLOD;
  1922. FLOAT MaxLOD;
  1923. } D3D12_SAMPLER_DESC;
  1924. typedef
  1925. enum D3D12_BUFFER_UAV_FLAGS
  1926. {
  1927. D3D12_BUFFER_UAV_FLAG_NONE = 0,
  1928. D3D12_BUFFER_UAV_FLAG_RAW = 0x1
  1929. } D3D12_BUFFER_UAV_FLAGS;
  1930. DEFINE_ENUM_FLAG_OPERATORS( D3D12_BUFFER_UAV_FLAGS );
  1931. typedef struct D3D12_BUFFER_UAV
  1932. {
  1933. UINT64 FirstElement;
  1934. UINT NumElements;
  1935. UINT StructureByteStride;
  1936. UINT64 CounterOffsetInBytes;
  1937. D3D12_BUFFER_UAV_FLAGS Flags;
  1938. } D3D12_BUFFER_UAV;
  1939. typedef struct D3D12_TEX1D_UAV
  1940. {
  1941. UINT MipSlice;
  1942. } D3D12_TEX1D_UAV;
  1943. typedef struct D3D12_TEX1D_ARRAY_UAV
  1944. {
  1945. UINT MipSlice;
  1946. UINT FirstArraySlice;
  1947. UINT ArraySize;
  1948. } D3D12_TEX1D_ARRAY_UAV;
  1949. typedef struct D3D12_TEX2D_UAV
  1950. {
  1951. UINT MipSlice;
  1952. UINT PlaneSlice;
  1953. } D3D12_TEX2D_UAV;
  1954. typedef struct D3D12_TEX2D_ARRAY_UAV
  1955. {
  1956. UINT MipSlice;
  1957. UINT FirstArraySlice;
  1958. UINT ArraySize;
  1959. UINT PlaneSlice;
  1960. } D3D12_TEX2D_ARRAY_UAV;
  1961. typedef struct D3D12_TEX3D_UAV
  1962. {
  1963. UINT MipSlice;
  1964. UINT FirstWSlice;
  1965. UINT WSize;
  1966. } D3D12_TEX3D_UAV;
  1967. typedef
  1968. enum D3D12_UAV_DIMENSION
  1969. {
  1970. D3D12_UAV_DIMENSION_UNKNOWN = 0,
  1971. D3D12_UAV_DIMENSION_BUFFER = 1,
  1972. D3D12_UAV_DIMENSION_TEXTURE1D = 2,
  1973. D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3,
  1974. D3D12_UAV_DIMENSION_TEXTURE2D = 4,
  1975. D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5,
  1976. D3D12_UAV_DIMENSION_TEXTURE3D = 8
  1977. } D3D12_UAV_DIMENSION;
  1978. typedef struct D3D12_UNORDERED_ACCESS_VIEW_DESC
  1979. {
  1980. DXGI_FORMAT Format;
  1981. D3D12_UAV_DIMENSION ViewDimension;
  1982. union
  1983. {
  1984. D3D12_BUFFER_UAV Buffer;
  1985. D3D12_TEX1D_UAV Texture1D;
  1986. D3D12_TEX1D_ARRAY_UAV Texture1DArray;
  1987. D3D12_TEX2D_UAV Texture2D;
  1988. D3D12_TEX2D_ARRAY_UAV Texture2DArray;
  1989. D3D12_TEX3D_UAV Texture3D;
  1990. } ;
  1991. } D3D12_UNORDERED_ACCESS_VIEW_DESC;
  1992. typedef struct D3D12_BUFFER_RTV
  1993. {
  1994. UINT64 FirstElement;
  1995. UINT NumElements;
  1996. } D3D12_BUFFER_RTV;
  1997. typedef struct D3D12_TEX1D_RTV
  1998. {
  1999. UINT MipSlice;
  2000. } D3D12_TEX1D_RTV;
  2001. typedef struct D3D12_TEX1D_ARRAY_RTV
  2002. {
  2003. UINT MipSlice;
  2004. UINT FirstArraySlice;
  2005. UINT ArraySize;
  2006. } D3D12_TEX1D_ARRAY_RTV;
  2007. typedef struct D3D12_TEX2D_RTV
  2008. {
  2009. UINT MipSlice;
  2010. UINT PlaneSlice;
  2011. } D3D12_TEX2D_RTV;
  2012. typedef struct D3D12_TEX2DMS_RTV
  2013. {
  2014. UINT UnusedField_NothingToDefine;
  2015. } D3D12_TEX2DMS_RTV;
  2016. typedef struct D3D12_TEX2D_ARRAY_RTV
  2017. {
  2018. UINT MipSlice;
  2019. UINT FirstArraySlice;
  2020. UINT ArraySize;
  2021. UINT PlaneSlice;
  2022. } D3D12_TEX2D_ARRAY_RTV;
  2023. typedef struct D3D12_TEX2DMS_ARRAY_RTV
  2024. {
  2025. UINT FirstArraySlice;
  2026. UINT ArraySize;
  2027. } D3D12_TEX2DMS_ARRAY_RTV;
  2028. typedef struct D3D12_TEX3D_RTV
  2029. {
  2030. UINT MipSlice;
  2031. UINT FirstWSlice;
  2032. UINT WSize;
  2033. } D3D12_TEX3D_RTV;
  2034. typedef
  2035. enum D3D12_RTV_DIMENSION
  2036. {
  2037. D3D12_RTV_DIMENSION_UNKNOWN = 0,
  2038. D3D12_RTV_DIMENSION_BUFFER = 1,
  2039. D3D12_RTV_DIMENSION_TEXTURE1D = 2,
  2040. D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3,
  2041. D3D12_RTV_DIMENSION_TEXTURE2D = 4,
  2042. D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5,
  2043. D3D12_RTV_DIMENSION_TEXTURE2DMS = 6,
  2044. D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7,
  2045. D3D12_RTV_DIMENSION_TEXTURE3D = 8
  2046. } D3D12_RTV_DIMENSION;
  2047. typedef struct D3D12_RENDER_TARGET_VIEW_DESC
  2048. {
  2049. DXGI_FORMAT Format;
  2050. D3D12_RTV_DIMENSION ViewDimension;
  2051. union
  2052. {
  2053. D3D12_BUFFER_RTV Buffer;
  2054. D3D12_TEX1D_RTV Texture1D;
  2055. D3D12_TEX1D_ARRAY_RTV Texture1DArray;
  2056. D3D12_TEX2D_RTV Texture2D;
  2057. D3D12_TEX2D_ARRAY_RTV Texture2DArray;
  2058. D3D12_TEX2DMS_RTV Texture2DMS;
  2059. D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray;
  2060. D3D12_TEX3D_RTV Texture3D;
  2061. } ;
  2062. } D3D12_RENDER_TARGET_VIEW_DESC;
  2063. typedef struct D3D12_TEX1D_DSV
  2064. {
  2065. UINT MipSlice;
  2066. } D3D12_TEX1D_DSV;
  2067. typedef struct D3D12_TEX1D_ARRAY_DSV
  2068. {
  2069. UINT MipSlice;
  2070. UINT FirstArraySlice;
  2071. UINT ArraySize;
  2072. } D3D12_TEX1D_ARRAY_DSV;
  2073. typedef struct D3D12_TEX2D_DSV
  2074. {
  2075. UINT MipSlice;
  2076. } D3D12_TEX2D_DSV;
  2077. typedef struct D3D12_TEX2D_ARRAY_DSV
  2078. {
  2079. UINT MipSlice;
  2080. UINT FirstArraySlice;
  2081. UINT ArraySize;
  2082. } D3D12_TEX2D_ARRAY_DSV;
  2083. typedef struct D3D12_TEX2DMS_DSV
  2084. {
  2085. UINT UnusedField_NothingToDefine;
  2086. } D3D12_TEX2DMS_DSV;
  2087. typedef struct D3D12_TEX2DMS_ARRAY_DSV
  2088. {
  2089. UINT FirstArraySlice;
  2090. UINT ArraySize;
  2091. } D3D12_TEX2DMS_ARRAY_DSV;
  2092. typedef
  2093. enum D3D12_DSV_FLAGS
  2094. {
  2095. D3D12_DSV_FLAG_NONE = 0,
  2096. D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1,
  2097. D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2
  2098. } D3D12_DSV_FLAGS;
  2099. DEFINE_ENUM_FLAG_OPERATORS( D3D12_DSV_FLAGS );
  2100. typedef
  2101. enum D3D12_DSV_DIMENSION
  2102. {
  2103. D3D12_DSV_DIMENSION_UNKNOWN = 0,
  2104. D3D12_DSV_DIMENSION_TEXTURE1D = 1,
  2105. D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2,
  2106. D3D12_DSV_DIMENSION_TEXTURE2D = 3,
  2107. D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4,
  2108. D3D12_DSV_DIMENSION_TEXTURE2DMS = 5,
  2109. D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6
  2110. } D3D12_DSV_DIMENSION;
  2111. typedef struct D3D12_DEPTH_STENCIL_VIEW_DESC
  2112. {
  2113. DXGI_FORMAT Format;
  2114. D3D12_DSV_DIMENSION ViewDimension;
  2115. D3D12_DSV_FLAGS Flags;
  2116. union
  2117. {
  2118. D3D12_TEX1D_DSV Texture1D;
  2119. D3D12_TEX1D_ARRAY_DSV Texture1DArray;
  2120. D3D12_TEX2D_DSV Texture2D;
  2121. D3D12_TEX2D_ARRAY_DSV Texture2DArray;
  2122. D3D12_TEX2DMS_DSV Texture2DMS;
  2123. D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray;
  2124. } ;
  2125. } D3D12_DEPTH_STENCIL_VIEW_DESC;
  2126. typedef
  2127. enum D3D12_CLEAR_FLAGS
  2128. {
  2129. D3D12_CLEAR_FLAG_DEPTH = 0x1,
  2130. D3D12_CLEAR_FLAG_STENCIL = 0x2
  2131. } D3D12_CLEAR_FLAGS;
  2132. DEFINE_ENUM_FLAG_OPERATORS( D3D12_CLEAR_FLAGS );
  2133. typedef
  2134. enum D3D12_FENCE_FLAGS
  2135. {
  2136. D3D12_FENCE_FLAG_NONE = 0,
  2137. D3D12_FENCE_FLAG_SHARED = 0x1,
  2138. D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2
  2139. } D3D12_FENCE_FLAGS;
  2140. DEFINE_ENUM_FLAG_OPERATORS( D3D12_FENCE_FLAGS );
  2141. typedef
  2142. enum D3D12_DESCRIPTOR_HEAP_TYPE
  2143. {
  2144. D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0,
  2145. D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
  2146. D3D12_DESCRIPTOR_HEAP_TYPE_RTV = ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
  2147. D3D12_DESCRIPTOR_HEAP_TYPE_DSV = ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
  2148. D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
  2149. } D3D12_DESCRIPTOR_HEAP_TYPE;
  2150. typedef
  2151. enum D3D12_DESCRIPTOR_HEAP_FLAGS
  2152. {
  2153. D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
  2154. D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
  2155. } D3D12_DESCRIPTOR_HEAP_FLAGS;
  2156. DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_HEAP_FLAGS );
  2157. typedef struct D3D12_DESCRIPTOR_HEAP_DESC
  2158. {
  2159. D3D12_DESCRIPTOR_HEAP_TYPE Type;
  2160. UINT NumDescriptors;
  2161. D3D12_DESCRIPTOR_HEAP_FLAGS Flags;
  2162. UINT NodeMask;
  2163. } D3D12_DESCRIPTOR_HEAP_DESC;
  2164. typedef
  2165. enum D3D12_DESCRIPTOR_RANGE_TYPE
  2166. {
  2167. D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0,
  2168. D3D12_DESCRIPTOR_RANGE_TYPE_UAV = ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
  2169. D3D12_DESCRIPTOR_RANGE_TYPE_CBV = ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
  2170. D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
  2171. } D3D12_DESCRIPTOR_RANGE_TYPE;
  2172. typedef struct D3D12_DESCRIPTOR_RANGE
  2173. {
  2174. D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
  2175. UINT NumDescriptors;
  2176. UINT BaseShaderRegister;
  2177. UINT RegisterSpace;
  2178. UINT OffsetInDescriptorsFromTableStart;
  2179. } D3D12_DESCRIPTOR_RANGE;
  2180. typedef struct D3D12_ROOT_DESCRIPTOR_TABLE
  2181. {
  2182. UINT NumDescriptorRanges;
  2183. _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges;
  2184. } D3D12_ROOT_DESCRIPTOR_TABLE;
  2185. typedef struct D3D12_ROOT_CONSTANTS
  2186. {
  2187. UINT ShaderRegister;
  2188. UINT RegisterSpace;
  2189. UINT Num32BitValues;
  2190. } D3D12_ROOT_CONSTANTS;
  2191. typedef struct D3D12_ROOT_DESCRIPTOR
  2192. {
  2193. UINT ShaderRegister;
  2194. UINT RegisterSpace;
  2195. } D3D12_ROOT_DESCRIPTOR;
  2196. typedef
  2197. enum D3D12_SHADER_VISIBILITY
  2198. {
  2199. D3D12_SHADER_VISIBILITY_ALL = 0,
  2200. D3D12_SHADER_VISIBILITY_VERTEX = 1,
  2201. D3D12_SHADER_VISIBILITY_HULL = 2,
  2202. D3D12_SHADER_VISIBILITY_DOMAIN = 3,
  2203. D3D12_SHADER_VISIBILITY_GEOMETRY = 4,
  2204. D3D12_SHADER_VISIBILITY_PIXEL = 5
  2205. } D3D12_SHADER_VISIBILITY;
  2206. typedef
  2207. enum D3D12_ROOT_PARAMETER_TYPE
  2208. {
  2209. D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0,
  2210. D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
  2211. D3D12_ROOT_PARAMETER_TYPE_CBV = ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
  2212. D3D12_ROOT_PARAMETER_TYPE_SRV = ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
  2213. D3D12_ROOT_PARAMETER_TYPE_UAV = ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
  2214. } D3D12_ROOT_PARAMETER_TYPE;
  2215. typedef struct D3D12_ROOT_PARAMETER
  2216. {
  2217. D3D12_ROOT_PARAMETER_TYPE ParameterType;
  2218. union
  2219. {
  2220. D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable;
  2221. D3D12_ROOT_CONSTANTS Constants;
  2222. D3D12_ROOT_DESCRIPTOR Descriptor;
  2223. } ;
  2224. D3D12_SHADER_VISIBILITY ShaderVisibility;
  2225. } D3D12_ROOT_PARAMETER;
  2226. typedef
  2227. enum D3D12_ROOT_SIGNATURE_FLAGS
  2228. {
  2229. D3D12_ROOT_SIGNATURE_FLAG_NONE = 0,
  2230. D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1,
  2231. D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2,
  2232. D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4,
  2233. D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8,
  2234. D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10,
  2235. D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20,
  2236. D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40
  2237. } D3D12_ROOT_SIGNATURE_FLAGS;
  2238. DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_SIGNATURE_FLAGS );
  2239. typedef
  2240. enum D3D12_STATIC_BORDER_COLOR
  2241. {
  2242. D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
  2243. D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
  2244. D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 )
  2245. } D3D12_STATIC_BORDER_COLOR;
  2246. typedef struct D3D12_STATIC_SAMPLER_DESC
  2247. {
  2248. D3D12_FILTER Filter;
  2249. D3D12_TEXTURE_ADDRESS_MODE AddressU;
  2250. D3D12_TEXTURE_ADDRESS_MODE AddressV;
  2251. D3D12_TEXTURE_ADDRESS_MODE AddressW;
  2252. FLOAT MipLODBias;
  2253. UINT MaxAnisotropy;
  2254. D3D12_COMPARISON_FUNC ComparisonFunc;
  2255. D3D12_STATIC_BORDER_COLOR BorderColor;
  2256. FLOAT MinLOD;
  2257. FLOAT MaxLOD;
  2258. UINT ShaderRegister;
  2259. UINT RegisterSpace;
  2260. D3D12_SHADER_VISIBILITY ShaderVisibility;
  2261. } D3D12_STATIC_SAMPLER_DESC;
  2262. typedef struct D3D12_ROOT_SIGNATURE_DESC
  2263. {
  2264. UINT NumParameters;
  2265. _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER *pParameters;
  2266. UINT NumStaticSamplers;
  2267. _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
  2268. D3D12_ROOT_SIGNATURE_FLAGS Flags;
  2269. } D3D12_ROOT_SIGNATURE_DESC;
  2270. typedef
  2271. enum D3D12_DESCRIPTOR_RANGE_FLAGS
  2272. {
  2273. D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
  2274. D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
  2275. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
  2276. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
  2277. D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8
  2278. } D3D12_DESCRIPTOR_RANGE_FLAGS;
  2279. DEFINE_ENUM_FLAG_OPERATORS( D3D12_DESCRIPTOR_RANGE_FLAGS );
  2280. typedef struct D3D12_DESCRIPTOR_RANGE1
  2281. {
  2282. D3D12_DESCRIPTOR_RANGE_TYPE RangeType;
  2283. UINT NumDescriptors;
  2284. UINT BaseShaderRegister;
  2285. UINT RegisterSpace;
  2286. D3D12_DESCRIPTOR_RANGE_FLAGS Flags;
  2287. UINT OffsetInDescriptorsFromTableStart;
  2288. } D3D12_DESCRIPTOR_RANGE1;
  2289. typedef struct D3D12_ROOT_DESCRIPTOR_TABLE1
  2290. {
  2291. UINT NumDescriptorRanges;
  2292. _Field_size_full_(NumDescriptorRanges) const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges;
  2293. } D3D12_ROOT_DESCRIPTOR_TABLE1;
  2294. typedef
  2295. enum D3D12_ROOT_DESCRIPTOR_FLAGS
  2296. {
  2297. D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
  2298. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
  2299. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
  2300. D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8
  2301. } D3D12_ROOT_DESCRIPTOR_FLAGS;
  2302. DEFINE_ENUM_FLAG_OPERATORS( D3D12_ROOT_DESCRIPTOR_FLAGS );
  2303. typedef struct D3D12_ROOT_DESCRIPTOR1
  2304. {
  2305. UINT ShaderRegister;
  2306. UINT RegisterSpace;
  2307. D3D12_ROOT_DESCRIPTOR_FLAGS Flags;
  2308. } D3D12_ROOT_DESCRIPTOR1;
  2309. typedef struct D3D12_ROOT_PARAMETER1
  2310. {
  2311. D3D12_ROOT_PARAMETER_TYPE ParameterType;
  2312. union
  2313. {
  2314. D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable;
  2315. D3D12_ROOT_CONSTANTS Constants;
  2316. D3D12_ROOT_DESCRIPTOR1 Descriptor;
  2317. } ;
  2318. D3D12_SHADER_VISIBILITY ShaderVisibility;
  2319. } D3D12_ROOT_PARAMETER1;
  2320. typedef struct D3D12_ROOT_SIGNATURE_DESC1
  2321. {
  2322. UINT NumParameters;
  2323. _Field_size_full_(NumParameters) const D3D12_ROOT_PARAMETER1 *pParameters;
  2324. UINT NumStaticSamplers;
  2325. _Field_size_full_(NumStaticSamplers) const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers;
  2326. D3D12_ROOT_SIGNATURE_FLAGS Flags;
  2327. } D3D12_ROOT_SIGNATURE_DESC1;
  2328. typedef struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC
  2329. {
  2330. D3D_ROOT_SIGNATURE_VERSION Version;
  2331. union
  2332. {
  2333. D3D12_ROOT_SIGNATURE_DESC Desc_1_0;
  2334. D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1;
  2335. } ;
  2336. } D3D12_VERSIONED_ROOT_SIGNATURE_DESC;
  2337. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_c_ifspec;
  2338. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0001_v0_0_s_ifspec;
  2339. #ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
  2340. #define __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
  2341. /* interface ID3D12RootSignatureDeserializer */
  2342. /* [unique][local][object][uuid] */
  2343. EXTERN_C const IID IID_ID3D12RootSignatureDeserializer;
  2344. #if defined(__cplusplus) && !defined(CINTERFACE)
  2345. MIDL_INTERFACE("34AB647B-3CC8-46AC-841B-C0965645C046")
  2346. ID3D12RootSignatureDeserializer : public IUnknown
  2347. {
  2348. public:
  2349. virtual const D3D12_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetRootSignatureDesc( void) = 0;
  2350. };
  2351. #else /* C style interface */
  2352. typedef struct ID3D12RootSignatureDeserializerVtbl
  2353. {
  2354. BEGIN_INTERFACE
  2355. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2356. ID3D12RootSignatureDeserializer * This,
  2357. REFIID riid,
  2358. _COM_Outptr_ void **ppvObject);
  2359. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2360. ID3D12RootSignatureDeserializer * This);
  2361. ULONG ( STDMETHODCALLTYPE *Release )(
  2362. ID3D12RootSignatureDeserializer * This);
  2363. const D3D12_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetRootSignatureDesc )(
  2364. ID3D12RootSignatureDeserializer * This);
  2365. END_INTERFACE
  2366. } ID3D12RootSignatureDeserializerVtbl;
  2367. interface ID3D12RootSignatureDeserializer
  2368. {
  2369. CONST_VTBL struct ID3D12RootSignatureDeserializerVtbl *lpVtbl;
  2370. };
  2371. #ifdef COBJMACROS
  2372. #define ID3D12RootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
  2373. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2374. #define ID3D12RootSignatureDeserializer_AddRef(This) \
  2375. ( (This)->lpVtbl -> AddRef(This) )
  2376. #define ID3D12RootSignatureDeserializer_Release(This) \
  2377. ( (This)->lpVtbl -> Release(This) )
  2378. #define ID3D12RootSignatureDeserializer_GetRootSignatureDesc(This) \
  2379. ( (This)->lpVtbl -> GetRootSignatureDesc(This) )
  2380. #endif /* COBJMACROS */
  2381. #endif /* C style interface */
  2382. #endif /* __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ */
  2383. #ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
  2384. #define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
  2385. /* interface ID3D12VersionedRootSignatureDeserializer */
  2386. /* [unique][local][object][uuid] */
  2387. EXTERN_C const IID IID_ID3D12VersionedRootSignatureDeserializer;
  2388. #if defined(__cplusplus) && !defined(CINTERFACE)
  2389. MIDL_INTERFACE("7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")
  2390. ID3D12VersionedRootSignatureDeserializer : public IUnknown
  2391. {
  2392. public:
  2393. virtual HRESULT STDMETHODCALLTYPE GetRootSignatureDescAtVersion(
  2394. D3D_ROOT_SIGNATURE_VERSION convertToVersion,
  2395. _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc) = 0;
  2396. virtual const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *STDMETHODCALLTYPE GetUnconvertedRootSignatureDesc( void) = 0;
  2397. };
  2398. #else /* C style interface */
  2399. typedef struct ID3D12VersionedRootSignatureDeserializerVtbl
  2400. {
  2401. BEGIN_INTERFACE
  2402. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2403. ID3D12VersionedRootSignatureDeserializer * This,
  2404. REFIID riid,
  2405. _COM_Outptr_ void **ppvObject);
  2406. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2407. ID3D12VersionedRootSignatureDeserializer * This);
  2408. ULONG ( STDMETHODCALLTYPE *Release )(
  2409. ID3D12VersionedRootSignatureDeserializer * This);
  2410. HRESULT ( STDMETHODCALLTYPE *GetRootSignatureDescAtVersion )(
  2411. ID3D12VersionedRootSignatureDeserializer * This,
  2412. D3D_ROOT_SIGNATURE_VERSION convertToVersion,
  2413. _Out_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc);
  2414. const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *( STDMETHODCALLTYPE *GetUnconvertedRootSignatureDesc )(
  2415. ID3D12VersionedRootSignatureDeserializer * This);
  2416. END_INTERFACE
  2417. } ID3D12VersionedRootSignatureDeserializerVtbl;
  2418. interface ID3D12VersionedRootSignatureDeserializer
  2419. {
  2420. CONST_VTBL struct ID3D12VersionedRootSignatureDeserializerVtbl *lpVtbl;
  2421. };
  2422. #ifdef COBJMACROS
  2423. #define ID3D12VersionedRootSignatureDeserializer_QueryInterface(This,riid,ppvObject) \
  2424. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2425. #define ID3D12VersionedRootSignatureDeserializer_AddRef(This) \
  2426. ( (This)->lpVtbl -> AddRef(This) )
  2427. #define ID3D12VersionedRootSignatureDeserializer_Release(This) \
  2428. ( (This)->lpVtbl -> Release(This) )
  2429. #define ID3D12VersionedRootSignatureDeserializer_GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) \
  2430. ( (This)->lpVtbl -> GetRootSignatureDescAtVersion(This,convertToVersion,ppDesc) )
  2431. #define ID3D12VersionedRootSignatureDeserializer_GetUnconvertedRootSignatureDesc(This) \
  2432. ( (This)->lpVtbl -> GetUnconvertedRootSignatureDesc(This) )
  2433. #endif /* COBJMACROS */
  2434. #endif /* C style interface */
  2435. #endif /* __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__ */
  2436. /* interface __MIDL_itf_d3d12_0000_0003 */
  2437. /* [local] */
  2438. typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_ROOT_SIGNATURE)(
  2439. _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
  2440. _In_ D3D_ROOT_SIGNATURE_VERSION Version,
  2441. _Out_ ID3DBlob** ppBlob,
  2442. _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
  2443. HRESULT WINAPI D3D12SerializeRootSignature(
  2444. _In_ const D3D12_ROOT_SIGNATURE_DESC* pRootSignature,
  2445. _In_ D3D_ROOT_SIGNATURE_VERSION Version,
  2446. _Out_ ID3DBlob** ppBlob,
  2447. _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
  2448. typedef HRESULT (WINAPI* PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
  2449. _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
  2450. _In_ SIZE_T SrcDataSizeInBytes,
  2451. _In_ REFIID pRootSignatureDeserializerInterface,
  2452. _Out_ void** ppRootSignatureDeserializer);
  2453. HRESULT WINAPI D3D12CreateRootSignatureDeserializer(
  2454. _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
  2455. _In_ SIZE_T SrcDataSizeInBytes,
  2456. _In_ REFIID pRootSignatureDeserializerInterface,
  2457. _Out_ void** ppRootSignatureDeserializer);
  2458. typedef HRESULT (WINAPI* PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
  2459. _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
  2460. _Out_ ID3DBlob** ppBlob,
  2461. _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
  2462. HRESULT WINAPI D3D12SerializeVersionedRootSignature(
  2463. _In_ const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature,
  2464. _Out_ ID3DBlob** ppBlob,
  2465. _Always_(_Outptr_opt_result_maybenull_) ID3DBlob** ppErrorBlob);
  2466. typedef HRESULT (WINAPI* PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
  2467. _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
  2468. _In_ SIZE_T SrcDataSizeInBytes,
  2469. _In_ REFIID pRootSignatureDeserializerInterface,
  2470. _Out_ void** ppRootSignatureDeserializer);
  2471. HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(
  2472. _In_reads_bytes_(SrcDataSizeInBytes) LPCVOID pSrcData,
  2473. _In_ SIZE_T SrcDataSizeInBytes,
  2474. _In_ REFIID pRootSignatureDeserializerInterface,
  2475. _Out_ void** ppRootSignatureDeserializer);
  2476. typedef struct D3D12_CPU_DESCRIPTOR_HANDLE
  2477. {
  2478. SIZE_T ptr;
  2479. } D3D12_CPU_DESCRIPTOR_HANDLE;
  2480. typedef struct D3D12_GPU_DESCRIPTOR_HANDLE
  2481. {
  2482. UINT64 ptr;
  2483. } D3D12_GPU_DESCRIPTOR_HANDLE;
  2484. // If rects are supplied in D3D12_DISCARD_REGION, below, the resource
  2485. // must have 2D subresources with all specified subresources the same dimension.
  2486. typedef struct D3D12_DISCARD_REGION
  2487. {
  2488. UINT NumRects;
  2489. _In_reads_(NumRects) const D3D12_RECT *pRects;
  2490. UINT FirstSubresource;
  2491. UINT NumSubresources;
  2492. } D3D12_DISCARD_REGION;
  2493. typedef
  2494. enum D3D12_QUERY_HEAP_TYPE
  2495. {
  2496. D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0,
  2497. D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1,
  2498. D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2,
  2499. D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3
  2500. } D3D12_QUERY_HEAP_TYPE;
  2501. typedef struct D3D12_QUERY_HEAP_DESC
  2502. {
  2503. D3D12_QUERY_HEAP_TYPE Type;
  2504. UINT Count;
  2505. UINT NodeMask;
  2506. } D3D12_QUERY_HEAP_DESC;
  2507. typedef
  2508. enum D3D12_QUERY_TYPE
  2509. {
  2510. D3D12_QUERY_TYPE_OCCLUSION = 0,
  2511. D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1,
  2512. D3D12_QUERY_TYPE_TIMESTAMP = 2,
  2513. D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3,
  2514. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4,
  2515. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5,
  2516. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6,
  2517. D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7
  2518. } D3D12_QUERY_TYPE;
  2519. typedef
  2520. enum D3D12_PREDICATION_OP
  2521. {
  2522. D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
  2523. D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
  2524. } D3D12_PREDICATION_OP;
  2525. typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
  2526. {
  2527. UINT64 IAVertices;
  2528. UINT64 IAPrimitives;
  2529. UINT64 VSInvocations;
  2530. UINT64 GSInvocations;
  2531. UINT64 GSPrimitives;
  2532. UINT64 CInvocations;
  2533. UINT64 CPrimitives;
  2534. UINT64 PSInvocations;
  2535. UINT64 HSInvocations;
  2536. UINT64 DSInvocations;
  2537. UINT64 CSInvocations;
  2538. } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
  2539. typedef struct D3D12_QUERY_DATA_SO_STATISTICS
  2540. {
  2541. UINT64 NumPrimitivesWritten;
  2542. UINT64 PrimitivesStorageNeeded;
  2543. } D3D12_QUERY_DATA_SO_STATISTICS;
  2544. typedef struct D3D12_STREAM_OUTPUT_BUFFER_VIEW
  2545. {
  2546. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  2547. UINT64 SizeInBytes;
  2548. D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation;
  2549. } D3D12_STREAM_OUTPUT_BUFFER_VIEW;
  2550. typedef struct D3D12_DRAW_ARGUMENTS
  2551. {
  2552. UINT VertexCountPerInstance;
  2553. UINT InstanceCount;
  2554. UINT StartVertexLocation;
  2555. UINT StartInstanceLocation;
  2556. } D3D12_DRAW_ARGUMENTS;
  2557. typedef struct D3D12_DRAW_INDEXED_ARGUMENTS
  2558. {
  2559. UINT IndexCountPerInstance;
  2560. UINT InstanceCount;
  2561. UINT StartIndexLocation;
  2562. INT BaseVertexLocation;
  2563. UINT StartInstanceLocation;
  2564. } D3D12_DRAW_INDEXED_ARGUMENTS;
  2565. typedef struct D3D12_DISPATCH_ARGUMENTS
  2566. {
  2567. UINT ThreadGroupCountX;
  2568. UINT ThreadGroupCountY;
  2569. UINT ThreadGroupCountZ;
  2570. } D3D12_DISPATCH_ARGUMENTS;
  2571. typedef struct D3D12_VERTEX_BUFFER_VIEW
  2572. {
  2573. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  2574. UINT SizeInBytes;
  2575. UINT StrideInBytes;
  2576. } D3D12_VERTEX_BUFFER_VIEW;
  2577. typedef struct D3D12_INDEX_BUFFER_VIEW
  2578. {
  2579. D3D12_GPU_VIRTUAL_ADDRESS BufferLocation;
  2580. UINT SizeInBytes;
  2581. DXGI_FORMAT Format;
  2582. } D3D12_INDEX_BUFFER_VIEW;
  2583. typedef
  2584. enum D3D12_INDIRECT_ARGUMENT_TYPE
  2585. {
  2586. D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0,
  2587. D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
  2588. D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
  2589. D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
  2590. D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
  2591. D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
  2592. D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
  2593. D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
  2594. D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 )
  2595. } D3D12_INDIRECT_ARGUMENT_TYPE;
  2596. typedef struct D3D12_INDIRECT_ARGUMENT_DESC
  2597. {
  2598. D3D12_INDIRECT_ARGUMENT_TYPE Type;
  2599. union
  2600. {
  2601. struct
  2602. {
  2603. UINT Slot;
  2604. } VertexBuffer;
  2605. struct
  2606. {
  2607. UINT RootParameterIndex;
  2608. UINT DestOffsetIn32BitValues;
  2609. UINT Num32BitValuesToSet;
  2610. } Constant;
  2611. struct
  2612. {
  2613. UINT RootParameterIndex;
  2614. } ConstantBufferView;
  2615. struct
  2616. {
  2617. UINT RootParameterIndex;
  2618. } ShaderResourceView;
  2619. struct
  2620. {
  2621. UINT RootParameterIndex;
  2622. } UnorderedAccessView;
  2623. } ;
  2624. } D3D12_INDIRECT_ARGUMENT_DESC;
  2625. typedef struct D3D12_COMMAND_SIGNATURE_DESC
  2626. {
  2627. UINT ByteStride;
  2628. UINT NumArgumentDescs;
  2629. _Field_size_full_(NumArgumentDescs) const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs;
  2630. UINT NodeMask;
  2631. } D3D12_COMMAND_SIGNATURE_DESC;
  2632. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_c_ifspec;
  2633. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0003_v0_0_s_ifspec;
  2634. #ifndef __ID3D12Pageable_INTERFACE_DEFINED__
  2635. #define __ID3D12Pageable_INTERFACE_DEFINED__
  2636. /* interface ID3D12Pageable */
  2637. /* [unique][local][object][uuid] */
  2638. EXTERN_C const IID IID_ID3D12Pageable;
  2639. #if defined(__cplusplus) && !defined(CINTERFACE)
  2640. MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
  2641. ID3D12Pageable : public ID3D12DeviceChild
  2642. {
  2643. public:
  2644. };
  2645. #else /* C style interface */
  2646. typedef struct ID3D12PageableVtbl
  2647. {
  2648. BEGIN_INTERFACE
  2649. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2650. ID3D12Pageable * This,
  2651. REFIID riid,
  2652. _COM_Outptr_ void **ppvObject);
  2653. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2654. ID3D12Pageable * This);
  2655. ULONG ( STDMETHODCALLTYPE *Release )(
  2656. ID3D12Pageable * This);
  2657. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  2658. ID3D12Pageable * This,
  2659. _In_ REFGUID guid,
  2660. _Inout_ UINT *pDataSize,
  2661. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  2662. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  2663. ID3D12Pageable * This,
  2664. _In_ REFGUID guid,
  2665. _In_ UINT DataSize,
  2666. _In_reads_bytes_opt_( DataSize ) const void *pData);
  2667. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  2668. ID3D12Pageable * This,
  2669. _In_ REFGUID guid,
  2670. _In_opt_ const IUnknown *pData);
  2671. HRESULT ( STDMETHODCALLTYPE *SetName )(
  2672. ID3D12Pageable * This,
  2673. _In_z_ LPCWSTR Name);
  2674. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  2675. ID3D12Pageable * This,
  2676. REFIID riid,
  2677. _COM_Outptr_opt_ void **ppvDevice);
  2678. END_INTERFACE
  2679. } ID3D12PageableVtbl;
  2680. interface ID3D12Pageable
  2681. {
  2682. CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
  2683. };
  2684. #ifdef COBJMACROS
  2685. #define ID3D12Pageable_QueryInterface(This,riid,ppvObject) \
  2686. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2687. #define ID3D12Pageable_AddRef(This) \
  2688. ( (This)->lpVtbl -> AddRef(This) )
  2689. #define ID3D12Pageable_Release(This) \
  2690. ( (This)->lpVtbl -> Release(This) )
  2691. #define ID3D12Pageable_GetPrivateData(This,guid,pDataSize,pData) \
  2692. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  2693. #define ID3D12Pageable_SetPrivateData(This,guid,DataSize,pData) \
  2694. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  2695. #define ID3D12Pageable_SetPrivateDataInterface(This,guid,pData) \
  2696. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  2697. #define ID3D12Pageable_SetName(This,Name) \
  2698. ( (This)->lpVtbl -> SetName(This,Name) )
  2699. #define ID3D12Pageable_GetDevice(This,riid,ppvDevice) \
  2700. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  2701. #endif /* COBJMACROS */
  2702. #endif /* C style interface */
  2703. #endif /* __ID3D12Pageable_INTERFACE_DEFINED__ */
  2704. #ifndef __ID3D12Heap_INTERFACE_DEFINED__
  2705. #define __ID3D12Heap_INTERFACE_DEFINED__
  2706. /* interface ID3D12Heap */
  2707. /* [unique][local][object][uuid] */
  2708. EXTERN_C const IID IID_ID3D12Heap;
  2709. #if defined(__cplusplus) && !defined(CINTERFACE)
  2710. MIDL_INTERFACE("6b3b2502-6e51-45b3-90ee-9884265e8df3")
  2711. ID3D12Heap : public ID3D12Pageable
  2712. {
  2713. public:
  2714. virtual D3D12_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
  2715. };
  2716. #else /* C style interface */
  2717. typedef struct ID3D12HeapVtbl
  2718. {
  2719. BEGIN_INTERFACE
  2720. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2721. ID3D12Heap * This,
  2722. REFIID riid,
  2723. _COM_Outptr_ void **ppvObject);
  2724. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2725. ID3D12Heap * This);
  2726. ULONG ( STDMETHODCALLTYPE *Release )(
  2727. ID3D12Heap * This);
  2728. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  2729. ID3D12Heap * This,
  2730. _In_ REFGUID guid,
  2731. _Inout_ UINT *pDataSize,
  2732. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  2733. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  2734. ID3D12Heap * This,
  2735. _In_ REFGUID guid,
  2736. _In_ UINT DataSize,
  2737. _In_reads_bytes_opt_( DataSize ) const void *pData);
  2738. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  2739. ID3D12Heap * This,
  2740. _In_ REFGUID guid,
  2741. _In_opt_ const IUnknown *pData);
  2742. HRESULT ( STDMETHODCALLTYPE *SetName )(
  2743. ID3D12Heap * This,
  2744. _In_z_ LPCWSTR Name);
  2745. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  2746. ID3D12Heap * This,
  2747. REFIID riid,
  2748. _COM_Outptr_opt_ void **ppvDevice);
  2749. D3D12_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
  2750. ID3D12Heap * This);
  2751. END_INTERFACE
  2752. } ID3D12HeapVtbl;
  2753. interface ID3D12Heap
  2754. {
  2755. CONST_VTBL struct ID3D12HeapVtbl *lpVtbl;
  2756. };
  2757. #ifdef COBJMACROS
  2758. #define ID3D12Heap_QueryInterface(This,riid,ppvObject) \
  2759. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2760. #define ID3D12Heap_AddRef(This) \
  2761. ( (This)->lpVtbl -> AddRef(This) )
  2762. #define ID3D12Heap_Release(This) \
  2763. ( (This)->lpVtbl -> Release(This) )
  2764. #define ID3D12Heap_GetPrivateData(This,guid,pDataSize,pData) \
  2765. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  2766. #define ID3D12Heap_SetPrivateData(This,guid,DataSize,pData) \
  2767. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  2768. #define ID3D12Heap_SetPrivateDataInterface(This,guid,pData) \
  2769. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  2770. #define ID3D12Heap_SetName(This,Name) \
  2771. ( (This)->lpVtbl -> SetName(This,Name) )
  2772. #define ID3D12Heap_GetDevice(This,riid,ppvDevice) \
  2773. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  2774. #define ID3D12Heap_GetDesc(This) \
  2775. ( (This)->lpVtbl -> GetDesc(This) )
  2776. #endif /* COBJMACROS */
  2777. #endif /* C style interface */
  2778. #endif /* __ID3D12Heap_INTERFACE_DEFINED__ */
  2779. #ifndef __ID3D12Resource_INTERFACE_DEFINED__
  2780. #define __ID3D12Resource_INTERFACE_DEFINED__
  2781. /* interface ID3D12Resource */
  2782. /* [unique][local][object][uuid] */
  2783. EXTERN_C const IID IID_ID3D12Resource;
  2784. #if defined(__cplusplus) && !defined(CINTERFACE)
  2785. MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
  2786. ID3D12Resource : public ID3D12Pageable
  2787. {
  2788. public:
  2789. virtual HRESULT STDMETHODCALLTYPE Map(
  2790. UINT Subresource,
  2791. _In_opt_ const D3D12_RANGE *pReadRange,
  2792. _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
  2793. virtual void STDMETHODCALLTYPE Unmap(
  2794. UINT Subresource,
  2795. _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
  2796. virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
  2797. virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress( void) = 0;
  2798. virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
  2799. UINT DstSubresource,
  2800. _In_opt_ const D3D12_BOX *pDstBox,
  2801. _In_ const void *pSrcData,
  2802. UINT SrcRowPitch,
  2803. UINT SrcDepthPitch) = 0;
  2804. virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
  2805. _Out_ void *pDstData,
  2806. UINT DstRowPitch,
  2807. UINT DstDepthPitch,
  2808. UINT SrcSubresource,
  2809. _In_opt_ const D3D12_BOX *pSrcBox) = 0;
  2810. virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
  2811. _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
  2812. _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags) = 0;
  2813. };
  2814. #else /* C style interface */
  2815. typedef struct ID3D12ResourceVtbl
  2816. {
  2817. BEGIN_INTERFACE
  2818. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2819. ID3D12Resource * This,
  2820. REFIID riid,
  2821. _COM_Outptr_ void **ppvObject);
  2822. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2823. ID3D12Resource * This);
  2824. ULONG ( STDMETHODCALLTYPE *Release )(
  2825. ID3D12Resource * This);
  2826. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  2827. ID3D12Resource * This,
  2828. _In_ REFGUID guid,
  2829. _Inout_ UINT *pDataSize,
  2830. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  2831. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  2832. ID3D12Resource * This,
  2833. _In_ REFGUID guid,
  2834. _In_ UINT DataSize,
  2835. _In_reads_bytes_opt_( DataSize ) const void *pData);
  2836. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  2837. ID3D12Resource * This,
  2838. _In_ REFGUID guid,
  2839. _In_opt_ const IUnknown *pData);
  2840. HRESULT ( STDMETHODCALLTYPE *SetName )(
  2841. ID3D12Resource * This,
  2842. _In_z_ LPCWSTR Name);
  2843. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  2844. ID3D12Resource * This,
  2845. REFIID riid,
  2846. _COM_Outptr_opt_ void **ppvDevice);
  2847. HRESULT ( STDMETHODCALLTYPE *Map )(
  2848. ID3D12Resource * This,
  2849. UINT Subresource,
  2850. _In_opt_ const D3D12_RANGE *pReadRange,
  2851. _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
  2852. void ( STDMETHODCALLTYPE *Unmap )(
  2853. ID3D12Resource * This,
  2854. UINT Subresource,
  2855. _In_opt_ const D3D12_RANGE *pWrittenRange);
  2856. D3D12_RESOURCE_DESC ( STDMETHODCALLTYPE *GetDesc )(
  2857. ID3D12Resource * This);
  2858. D3D12_GPU_VIRTUAL_ADDRESS ( STDMETHODCALLTYPE *GetGPUVirtualAddress )(
  2859. ID3D12Resource * This);
  2860. HRESULT ( STDMETHODCALLTYPE *WriteToSubresource )(
  2861. ID3D12Resource * This,
  2862. UINT DstSubresource,
  2863. _In_opt_ const D3D12_BOX *pDstBox,
  2864. _In_ const void *pSrcData,
  2865. UINT SrcRowPitch,
  2866. UINT SrcDepthPitch);
  2867. HRESULT ( STDMETHODCALLTYPE *ReadFromSubresource )(
  2868. ID3D12Resource * This,
  2869. _Out_ void *pDstData,
  2870. UINT DstRowPitch,
  2871. UINT DstDepthPitch,
  2872. UINT SrcSubresource,
  2873. _In_opt_ const D3D12_BOX *pSrcBox);
  2874. HRESULT ( STDMETHODCALLTYPE *GetHeapProperties )(
  2875. ID3D12Resource * This,
  2876. _Out_opt_ D3D12_HEAP_PROPERTIES *pHeapProperties,
  2877. _Out_opt_ D3D12_HEAP_FLAGS *pHeapFlags);
  2878. END_INTERFACE
  2879. } ID3D12ResourceVtbl;
  2880. interface ID3D12Resource
  2881. {
  2882. CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
  2883. };
  2884. #ifdef COBJMACROS
  2885. #define ID3D12Resource_QueryInterface(This,riid,ppvObject) \
  2886. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2887. #define ID3D12Resource_AddRef(This) \
  2888. ( (This)->lpVtbl -> AddRef(This) )
  2889. #define ID3D12Resource_Release(This) \
  2890. ( (This)->lpVtbl -> Release(This) )
  2891. #define ID3D12Resource_GetPrivateData(This,guid,pDataSize,pData) \
  2892. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  2893. #define ID3D12Resource_SetPrivateData(This,guid,DataSize,pData) \
  2894. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  2895. #define ID3D12Resource_SetPrivateDataInterface(This,guid,pData) \
  2896. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  2897. #define ID3D12Resource_SetName(This,Name) \
  2898. ( (This)->lpVtbl -> SetName(This,Name) )
  2899. #define ID3D12Resource_GetDevice(This,riid,ppvDevice) \
  2900. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  2901. #define ID3D12Resource_Map(This,Subresource,pReadRange,ppData) \
  2902. ( (This)->lpVtbl -> Map(This,Subresource,pReadRange,ppData) )
  2903. #define ID3D12Resource_Unmap(This,Subresource,pWrittenRange) \
  2904. ( (This)->lpVtbl -> Unmap(This,Subresource,pWrittenRange) )
  2905. #define ID3D12Resource_GetDesc(This) \
  2906. ( (This)->lpVtbl -> GetDesc(This) )
  2907. #define ID3D12Resource_GetGPUVirtualAddress(This) \
  2908. ( (This)->lpVtbl -> GetGPUVirtualAddress(This) )
  2909. #define ID3D12Resource_WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) \
  2910. ( (This)->lpVtbl -> WriteToSubresource(This,DstSubresource,pDstBox,pSrcData,SrcRowPitch,SrcDepthPitch) )
  2911. #define ID3D12Resource_ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) \
  2912. ( (This)->lpVtbl -> ReadFromSubresource(This,pDstData,DstRowPitch,DstDepthPitch,SrcSubresource,pSrcBox) )
  2913. #define ID3D12Resource_GetHeapProperties(This,pHeapProperties,pHeapFlags) \
  2914. ( (This)->lpVtbl -> GetHeapProperties(This,pHeapProperties,pHeapFlags) )
  2915. #endif /* COBJMACROS */
  2916. #endif /* C style interface */
  2917. #endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
  2918. #ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
  2919. #define __ID3D12CommandAllocator_INTERFACE_DEFINED__
  2920. /* interface ID3D12CommandAllocator */
  2921. /* [unique][local][object][uuid] */
  2922. EXTERN_C const IID IID_ID3D12CommandAllocator;
  2923. #if defined(__cplusplus) && !defined(CINTERFACE)
  2924. MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
  2925. ID3D12CommandAllocator : public ID3D12Pageable
  2926. {
  2927. public:
  2928. virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
  2929. };
  2930. #else /* C style interface */
  2931. typedef struct ID3D12CommandAllocatorVtbl
  2932. {
  2933. BEGIN_INTERFACE
  2934. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  2935. ID3D12CommandAllocator * This,
  2936. REFIID riid,
  2937. _COM_Outptr_ void **ppvObject);
  2938. ULONG ( STDMETHODCALLTYPE *AddRef )(
  2939. ID3D12CommandAllocator * This);
  2940. ULONG ( STDMETHODCALLTYPE *Release )(
  2941. ID3D12CommandAllocator * This);
  2942. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  2943. ID3D12CommandAllocator * This,
  2944. _In_ REFGUID guid,
  2945. _Inout_ UINT *pDataSize,
  2946. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  2947. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  2948. ID3D12CommandAllocator * This,
  2949. _In_ REFGUID guid,
  2950. _In_ UINT DataSize,
  2951. _In_reads_bytes_opt_( DataSize ) const void *pData);
  2952. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  2953. ID3D12CommandAllocator * This,
  2954. _In_ REFGUID guid,
  2955. _In_opt_ const IUnknown *pData);
  2956. HRESULT ( STDMETHODCALLTYPE *SetName )(
  2957. ID3D12CommandAllocator * This,
  2958. _In_z_ LPCWSTR Name);
  2959. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  2960. ID3D12CommandAllocator * This,
  2961. REFIID riid,
  2962. _COM_Outptr_opt_ void **ppvDevice);
  2963. HRESULT ( STDMETHODCALLTYPE *Reset )(
  2964. ID3D12CommandAllocator * This);
  2965. END_INTERFACE
  2966. } ID3D12CommandAllocatorVtbl;
  2967. interface ID3D12CommandAllocator
  2968. {
  2969. CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
  2970. };
  2971. #ifdef COBJMACROS
  2972. #define ID3D12CommandAllocator_QueryInterface(This,riid,ppvObject) \
  2973. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  2974. #define ID3D12CommandAllocator_AddRef(This) \
  2975. ( (This)->lpVtbl -> AddRef(This) )
  2976. #define ID3D12CommandAllocator_Release(This) \
  2977. ( (This)->lpVtbl -> Release(This) )
  2978. #define ID3D12CommandAllocator_GetPrivateData(This,guid,pDataSize,pData) \
  2979. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  2980. #define ID3D12CommandAllocator_SetPrivateData(This,guid,DataSize,pData) \
  2981. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  2982. #define ID3D12CommandAllocator_SetPrivateDataInterface(This,guid,pData) \
  2983. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  2984. #define ID3D12CommandAllocator_SetName(This,Name) \
  2985. ( (This)->lpVtbl -> SetName(This,Name) )
  2986. #define ID3D12CommandAllocator_GetDevice(This,riid,ppvDevice) \
  2987. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  2988. #define ID3D12CommandAllocator_Reset(This) \
  2989. ( (This)->lpVtbl -> Reset(This) )
  2990. #endif /* COBJMACROS */
  2991. #endif /* C style interface */
  2992. #endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
  2993. #ifndef __ID3D12Fence_INTERFACE_DEFINED__
  2994. #define __ID3D12Fence_INTERFACE_DEFINED__
  2995. /* interface ID3D12Fence */
  2996. /* [unique][local][object][uuid] */
  2997. EXTERN_C const IID IID_ID3D12Fence;
  2998. #if defined(__cplusplus) && !defined(CINTERFACE)
  2999. MIDL_INTERFACE("0a753dcf-c4d8-4b91-adf6-be5a60d95a76")
  3000. ID3D12Fence : public ID3D12Pageable
  3001. {
  3002. public:
  3003. virtual UINT64 STDMETHODCALLTYPE GetCompletedValue( void) = 0;
  3004. virtual HRESULT STDMETHODCALLTYPE SetEventOnCompletion(
  3005. UINT64 Value,
  3006. HANDLE hEvent) = 0;
  3007. virtual HRESULT STDMETHODCALLTYPE Signal(
  3008. UINT64 Value) = 0;
  3009. };
  3010. #else /* C style interface */
  3011. typedef struct ID3D12FenceVtbl
  3012. {
  3013. BEGIN_INTERFACE
  3014. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3015. ID3D12Fence * This,
  3016. REFIID riid,
  3017. _COM_Outptr_ void **ppvObject);
  3018. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3019. ID3D12Fence * This);
  3020. ULONG ( STDMETHODCALLTYPE *Release )(
  3021. ID3D12Fence * This);
  3022. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  3023. ID3D12Fence * This,
  3024. _In_ REFGUID guid,
  3025. _Inout_ UINT *pDataSize,
  3026. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  3027. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  3028. ID3D12Fence * This,
  3029. _In_ REFGUID guid,
  3030. _In_ UINT DataSize,
  3031. _In_reads_bytes_opt_( DataSize ) const void *pData);
  3032. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  3033. ID3D12Fence * This,
  3034. _In_ REFGUID guid,
  3035. _In_opt_ const IUnknown *pData);
  3036. HRESULT ( STDMETHODCALLTYPE *SetName )(
  3037. ID3D12Fence * This,
  3038. _In_z_ LPCWSTR Name);
  3039. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  3040. ID3D12Fence * This,
  3041. REFIID riid,
  3042. _COM_Outptr_opt_ void **ppvDevice);
  3043. UINT64 ( STDMETHODCALLTYPE *GetCompletedValue )(
  3044. ID3D12Fence * This);
  3045. HRESULT ( STDMETHODCALLTYPE *SetEventOnCompletion )(
  3046. ID3D12Fence * This,
  3047. UINT64 Value,
  3048. HANDLE hEvent);
  3049. HRESULT ( STDMETHODCALLTYPE *Signal )(
  3050. ID3D12Fence * This,
  3051. UINT64 Value);
  3052. END_INTERFACE
  3053. } ID3D12FenceVtbl;
  3054. interface ID3D12Fence
  3055. {
  3056. CONST_VTBL struct ID3D12FenceVtbl *lpVtbl;
  3057. };
  3058. #ifdef COBJMACROS
  3059. #define ID3D12Fence_QueryInterface(This,riid,ppvObject) \
  3060. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3061. #define ID3D12Fence_AddRef(This) \
  3062. ( (This)->lpVtbl -> AddRef(This) )
  3063. #define ID3D12Fence_Release(This) \
  3064. ( (This)->lpVtbl -> Release(This) )
  3065. #define ID3D12Fence_GetPrivateData(This,guid,pDataSize,pData) \
  3066. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  3067. #define ID3D12Fence_SetPrivateData(This,guid,DataSize,pData) \
  3068. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  3069. #define ID3D12Fence_SetPrivateDataInterface(This,guid,pData) \
  3070. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  3071. #define ID3D12Fence_SetName(This,Name) \
  3072. ( (This)->lpVtbl -> SetName(This,Name) )
  3073. #define ID3D12Fence_GetDevice(This,riid,ppvDevice) \
  3074. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  3075. #define ID3D12Fence_GetCompletedValue(This) \
  3076. ( (This)->lpVtbl -> GetCompletedValue(This) )
  3077. #define ID3D12Fence_SetEventOnCompletion(This,Value,hEvent) \
  3078. ( (This)->lpVtbl -> SetEventOnCompletion(This,Value,hEvent) )
  3079. #define ID3D12Fence_Signal(This,Value) \
  3080. ( (This)->lpVtbl -> Signal(This,Value) )
  3081. #endif /* COBJMACROS */
  3082. #endif /* C style interface */
  3083. #endif /* __ID3D12Fence_INTERFACE_DEFINED__ */
  3084. #ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
  3085. #define __ID3D12PipelineState_INTERFACE_DEFINED__
  3086. /* interface ID3D12PipelineState */
  3087. /* [unique][local][object][uuid] */
  3088. EXTERN_C const IID IID_ID3D12PipelineState;
  3089. #if defined(__cplusplus) && !defined(CINTERFACE)
  3090. MIDL_INTERFACE("765a30f3-f624-4c6f-a828-ace948622445")
  3091. ID3D12PipelineState : public ID3D12Pageable
  3092. {
  3093. public:
  3094. virtual HRESULT STDMETHODCALLTYPE GetCachedBlob(
  3095. _COM_Outptr_ ID3DBlob **ppBlob) = 0;
  3096. };
  3097. #else /* C style interface */
  3098. typedef struct ID3D12PipelineStateVtbl
  3099. {
  3100. BEGIN_INTERFACE
  3101. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3102. ID3D12PipelineState * This,
  3103. REFIID riid,
  3104. _COM_Outptr_ void **ppvObject);
  3105. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3106. ID3D12PipelineState * This);
  3107. ULONG ( STDMETHODCALLTYPE *Release )(
  3108. ID3D12PipelineState * This);
  3109. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  3110. ID3D12PipelineState * This,
  3111. _In_ REFGUID guid,
  3112. _Inout_ UINT *pDataSize,
  3113. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  3114. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  3115. ID3D12PipelineState * This,
  3116. _In_ REFGUID guid,
  3117. _In_ UINT DataSize,
  3118. _In_reads_bytes_opt_( DataSize ) const void *pData);
  3119. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  3120. ID3D12PipelineState * This,
  3121. _In_ REFGUID guid,
  3122. _In_opt_ const IUnknown *pData);
  3123. HRESULT ( STDMETHODCALLTYPE *SetName )(
  3124. ID3D12PipelineState * This,
  3125. _In_z_ LPCWSTR Name);
  3126. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  3127. ID3D12PipelineState * This,
  3128. REFIID riid,
  3129. _COM_Outptr_opt_ void **ppvDevice);
  3130. HRESULT ( STDMETHODCALLTYPE *GetCachedBlob )(
  3131. ID3D12PipelineState * This,
  3132. _COM_Outptr_ ID3DBlob **ppBlob);
  3133. END_INTERFACE
  3134. } ID3D12PipelineStateVtbl;
  3135. interface ID3D12PipelineState
  3136. {
  3137. CONST_VTBL struct ID3D12PipelineStateVtbl *lpVtbl;
  3138. };
  3139. #ifdef COBJMACROS
  3140. #define ID3D12PipelineState_QueryInterface(This,riid,ppvObject) \
  3141. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3142. #define ID3D12PipelineState_AddRef(This) \
  3143. ( (This)->lpVtbl -> AddRef(This) )
  3144. #define ID3D12PipelineState_Release(This) \
  3145. ( (This)->lpVtbl -> Release(This) )
  3146. #define ID3D12PipelineState_GetPrivateData(This,guid,pDataSize,pData) \
  3147. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  3148. #define ID3D12PipelineState_SetPrivateData(This,guid,DataSize,pData) \
  3149. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  3150. #define ID3D12PipelineState_SetPrivateDataInterface(This,guid,pData) \
  3151. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  3152. #define ID3D12PipelineState_SetName(This,Name) \
  3153. ( (This)->lpVtbl -> SetName(This,Name) )
  3154. #define ID3D12PipelineState_GetDevice(This,riid,ppvDevice) \
  3155. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  3156. #define ID3D12PipelineState_GetCachedBlob(This,ppBlob) \
  3157. ( (This)->lpVtbl -> GetCachedBlob(This,ppBlob) )
  3158. #endif /* COBJMACROS */
  3159. #endif /* C style interface */
  3160. #endif /* __ID3D12PipelineState_INTERFACE_DEFINED__ */
  3161. #ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
  3162. #define __ID3D12DescriptorHeap_INTERFACE_DEFINED__
  3163. /* interface ID3D12DescriptorHeap */
  3164. /* [unique][local][object][uuid] */
  3165. EXTERN_C const IID IID_ID3D12DescriptorHeap;
  3166. #if defined(__cplusplus) && !defined(CINTERFACE)
  3167. MIDL_INTERFACE("8efb471d-616c-4f49-90f7-127bb763fa51")
  3168. ID3D12DescriptorHeap : public ID3D12Pageable
  3169. {
  3170. public:
  3171. virtual D3D12_DESCRIPTOR_HEAP_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
  3172. virtual D3D12_CPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetCPUDescriptorHandleForHeapStart( void) = 0;
  3173. virtual D3D12_GPU_DESCRIPTOR_HANDLE STDMETHODCALLTYPE GetGPUDescriptorHandleForHeapStart( void) = 0;
  3174. };
  3175. #else /* C style interface */
  3176. typedef struct ID3D12DescriptorHeapVtbl
  3177. {
  3178. BEGIN_INTERFACE
  3179. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3180. ID3D12DescriptorHeap * This,
  3181. REFIID riid,
  3182. _COM_Outptr_ void **ppvObject);
  3183. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3184. ID3D12DescriptorHeap * This);
  3185. ULONG ( STDMETHODCALLTYPE *Release )(
  3186. ID3D12DescriptorHeap * This);
  3187. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  3188. ID3D12DescriptorHeap * This,
  3189. _In_ REFGUID guid,
  3190. _Inout_ UINT *pDataSize,
  3191. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  3192. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  3193. ID3D12DescriptorHeap * This,
  3194. _In_ REFGUID guid,
  3195. _In_ UINT DataSize,
  3196. _In_reads_bytes_opt_( DataSize ) const void *pData);
  3197. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  3198. ID3D12DescriptorHeap * This,
  3199. _In_ REFGUID guid,
  3200. _In_opt_ const IUnknown *pData);
  3201. HRESULT ( STDMETHODCALLTYPE *SetName )(
  3202. ID3D12DescriptorHeap * This,
  3203. _In_z_ LPCWSTR Name);
  3204. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  3205. ID3D12DescriptorHeap * This,
  3206. REFIID riid,
  3207. _COM_Outptr_opt_ void **ppvDevice);
  3208. D3D12_DESCRIPTOR_HEAP_DESC ( STDMETHODCALLTYPE *GetDesc )(
  3209. ID3D12DescriptorHeap * This);
  3210. D3D12_CPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetCPUDescriptorHandleForHeapStart )(
  3211. ID3D12DescriptorHeap * This);
  3212. D3D12_GPU_DESCRIPTOR_HANDLE ( STDMETHODCALLTYPE *GetGPUDescriptorHandleForHeapStart )(
  3213. ID3D12DescriptorHeap * This);
  3214. END_INTERFACE
  3215. } ID3D12DescriptorHeapVtbl;
  3216. interface ID3D12DescriptorHeap
  3217. {
  3218. CONST_VTBL struct ID3D12DescriptorHeapVtbl *lpVtbl;
  3219. };
  3220. #ifdef COBJMACROS
  3221. #define ID3D12DescriptorHeap_QueryInterface(This,riid,ppvObject) \
  3222. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3223. #define ID3D12DescriptorHeap_AddRef(This) \
  3224. ( (This)->lpVtbl -> AddRef(This) )
  3225. #define ID3D12DescriptorHeap_Release(This) \
  3226. ( (This)->lpVtbl -> Release(This) )
  3227. #define ID3D12DescriptorHeap_GetPrivateData(This,guid,pDataSize,pData) \
  3228. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  3229. #define ID3D12DescriptorHeap_SetPrivateData(This,guid,DataSize,pData) \
  3230. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  3231. #define ID3D12DescriptorHeap_SetPrivateDataInterface(This,guid,pData) \
  3232. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  3233. #define ID3D12DescriptorHeap_SetName(This,Name) \
  3234. ( (This)->lpVtbl -> SetName(This,Name) )
  3235. #define ID3D12DescriptorHeap_GetDevice(This,riid,ppvDevice) \
  3236. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  3237. #define ID3D12DescriptorHeap_GetDesc(This) \
  3238. ( (This)->lpVtbl -> GetDesc(This) )
  3239. #define ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(This) \
  3240. ( (This)->lpVtbl -> GetCPUDescriptorHandleForHeapStart(This) )
  3241. #define ID3D12DescriptorHeap_GetGPUDescriptorHandleForHeapStart(This) \
  3242. ( (This)->lpVtbl -> GetGPUDescriptorHandleForHeapStart(This) )
  3243. #endif /* COBJMACROS */
  3244. #endif /* C style interface */
  3245. #endif /* __ID3D12DescriptorHeap_INTERFACE_DEFINED__ */
  3246. #ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
  3247. #define __ID3D12QueryHeap_INTERFACE_DEFINED__
  3248. /* interface ID3D12QueryHeap */
  3249. /* [unique][local][object][uuid] */
  3250. EXTERN_C const IID IID_ID3D12QueryHeap;
  3251. #if defined(__cplusplus) && !defined(CINTERFACE)
  3252. MIDL_INTERFACE("0d9658ae-ed45-469e-a61d-970ec583cab4")
  3253. ID3D12QueryHeap : public ID3D12Pageable
  3254. {
  3255. public:
  3256. };
  3257. #else /* C style interface */
  3258. typedef struct ID3D12QueryHeapVtbl
  3259. {
  3260. BEGIN_INTERFACE
  3261. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3262. ID3D12QueryHeap * This,
  3263. REFIID riid,
  3264. _COM_Outptr_ void **ppvObject);
  3265. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3266. ID3D12QueryHeap * This);
  3267. ULONG ( STDMETHODCALLTYPE *Release )(
  3268. ID3D12QueryHeap * This);
  3269. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  3270. ID3D12QueryHeap * This,
  3271. _In_ REFGUID guid,
  3272. _Inout_ UINT *pDataSize,
  3273. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  3274. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  3275. ID3D12QueryHeap * This,
  3276. _In_ REFGUID guid,
  3277. _In_ UINT DataSize,
  3278. _In_reads_bytes_opt_( DataSize ) const void *pData);
  3279. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  3280. ID3D12QueryHeap * This,
  3281. _In_ REFGUID guid,
  3282. _In_opt_ const IUnknown *pData);
  3283. HRESULT ( STDMETHODCALLTYPE *SetName )(
  3284. ID3D12QueryHeap * This,
  3285. _In_z_ LPCWSTR Name);
  3286. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  3287. ID3D12QueryHeap * This,
  3288. REFIID riid,
  3289. _COM_Outptr_opt_ void **ppvDevice);
  3290. END_INTERFACE
  3291. } ID3D12QueryHeapVtbl;
  3292. interface ID3D12QueryHeap
  3293. {
  3294. CONST_VTBL struct ID3D12QueryHeapVtbl *lpVtbl;
  3295. };
  3296. #ifdef COBJMACROS
  3297. #define ID3D12QueryHeap_QueryInterface(This,riid,ppvObject) \
  3298. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3299. #define ID3D12QueryHeap_AddRef(This) \
  3300. ( (This)->lpVtbl -> AddRef(This) )
  3301. #define ID3D12QueryHeap_Release(This) \
  3302. ( (This)->lpVtbl -> Release(This) )
  3303. #define ID3D12QueryHeap_GetPrivateData(This,guid,pDataSize,pData) \
  3304. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  3305. #define ID3D12QueryHeap_SetPrivateData(This,guid,DataSize,pData) \
  3306. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  3307. #define ID3D12QueryHeap_SetPrivateDataInterface(This,guid,pData) \
  3308. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  3309. #define ID3D12QueryHeap_SetName(This,Name) \
  3310. ( (This)->lpVtbl -> SetName(This,Name) )
  3311. #define ID3D12QueryHeap_GetDevice(This,riid,ppvDevice) \
  3312. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  3313. #endif /* COBJMACROS */
  3314. #endif /* C style interface */
  3315. #endif /* __ID3D12QueryHeap_INTERFACE_DEFINED__ */
  3316. #ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
  3317. #define __ID3D12CommandSignature_INTERFACE_DEFINED__
  3318. /* interface ID3D12CommandSignature */
  3319. /* [unique][local][object][uuid] */
  3320. EXTERN_C const IID IID_ID3D12CommandSignature;
  3321. #if defined(__cplusplus) && !defined(CINTERFACE)
  3322. MIDL_INTERFACE("c36a797c-ec80-4f0a-8985-a7b2475082d1")
  3323. ID3D12CommandSignature : public ID3D12Pageable
  3324. {
  3325. public:
  3326. };
  3327. #else /* C style interface */
  3328. typedef struct ID3D12CommandSignatureVtbl
  3329. {
  3330. BEGIN_INTERFACE
  3331. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3332. ID3D12CommandSignature * This,
  3333. REFIID riid,
  3334. _COM_Outptr_ void **ppvObject);
  3335. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3336. ID3D12CommandSignature * This);
  3337. ULONG ( STDMETHODCALLTYPE *Release )(
  3338. ID3D12CommandSignature * This);
  3339. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  3340. ID3D12CommandSignature * This,
  3341. _In_ REFGUID guid,
  3342. _Inout_ UINT *pDataSize,
  3343. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  3344. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  3345. ID3D12CommandSignature * This,
  3346. _In_ REFGUID guid,
  3347. _In_ UINT DataSize,
  3348. _In_reads_bytes_opt_( DataSize ) const void *pData);
  3349. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  3350. ID3D12CommandSignature * This,
  3351. _In_ REFGUID guid,
  3352. _In_opt_ const IUnknown *pData);
  3353. HRESULT ( STDMETHODCALLTYPE *SetName )(
  3354. ID3D12CommandSignature * This,
  3355. _In_z_ LPCWSTR Name);
  3356. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  3357. ID3D12CommandSignature * This,
  3358. REFIID riid,
  3359. _COM_Outptr_opt_ void **ppvDevice);
  3360. END_INTERFACE
  3361. } ID3D12CommandSignatureVtbl;
  3362. interface ID3D12CommandSignature
  3363. {
  3364. CONST_VTBL struct ID3D12CommandSignatureVtbl *lpVtbl;
  3365. };
  3366. #ifdef COBJMACROS
  3367. #define ID3D12CommandSignature_QueryInterface(This,riid,ppvObject) \
  3368. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3369. #define ID3D12CommandSignature_AddRef(This) \
  3370. ( (This)->lpVtbl -> AddRef(This) )
  3371. #define ID3D12CommandSignature_Release(This) \
  3372. ( (This)->lpVtbl -> Release(This) )
  3373. #define ID3D12CommandSignature_GetPrivateData(This,guid,pDataSize,pData) \
  3374. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  3375. #define ID3D12CommandSignature_SetPrivateData(This,guid,DataSize,pData) \
  3376. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  3377. #define ID3D12CommandSignature_SetPrivateDataInterface(This,guid,pData) \
  3378. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  3379. #define ID3D12CommandSignature_SetName(This,Name) \
  3380. ( (This)->lpVtbl -> SetName(This,Name) )
  3381. #define ID3D12CommandSignature_GetDevice(This,riid,ppvDevice) \
  3382. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  3383. #endif /* COBJMACROS */
  3384. #endif /* C style interface */
  3385. #endif /* __ID3D12CommandSignature_INTERFACE_DEFINED__ */
  3386. #ifndef __ID3D12CommandList_INTERFACE_DEFINED__
  3387. #define __ID3D12CommandList_INTERFACE_DEFINED__
  3388. /* interface ID3D12CommandList */
  3389. /* [unique][local][object][uuid] */
  3390. EXTERN_C const IID IID_ID3D12CommandList;
  3391. #if defined(__cplusplus) && !defined(CINTERFACE)
  3392. MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
  3393. ID3D12CommandList : public ID3D12DeviceChild
  3394. {
  3395. public:
  3396. virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType( void) = 0;
  3397. };
  3398. #else /* C style interface */
  3399. typedef struct ID3D12CommandListVtbl
  3400. {
  3401. BEGIN_INTERFACE
  3402. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3403. ID3D12CommandList * This,
  3404. REFIID riid,
  3405. _COM_Outptr_ void **ppvObject);
  3406. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3407. ID3D12CommandList * This);
  3408. ULONG ( STDMETHODCALLTYPE *Release )(
  3409. ID3D12CommandList * This);
  3410. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  3411. ID3D12CommandList * This,
  3412. _In_ REFGUID guid,
  3413. _Inout_ UINT *pDataSize,
  3414. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  3415. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  3416. ID3D12CommandList * This,
  3417. _In_ REFGUID guid,
  3418. _In_ UINT DataSize,
  3419. _In_reads_bytes_opt_( DataSize ) const void *pData);
  3420. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  3421. ID3D12CommandList * This,
  3422. _In_ REFGUID guid,
  3423. _In_opt_ const IUnknown *pData);
  3424. HRESULT ( STDMETHODCALLTYPE *SetName )(
  3425. ID3D12CommandList * This,
  3426. _In_z_ LPCWSTR Name);
  3427. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  3428. ID3D12CommandList * This,
  3429. REFIID riid,
  3430. _COM_Outptr_opt_ void **ppvDevice);
  3431. D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
  3432. ID3D12CommandList * This);
  3433. END_INTERFACE
  3434. } ID3D12CommandListVtbl;
  3435. interface ID3D12CommandList
  3436. {
  3437. CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
  3438. };
  3439. #ifdef COBJMACROS
  3440. #define ID3D12CommandList_QueryInterface(This,riid,ppvObject) \
  3441. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3442. #define ID3D12CommandList_AddRef(This) \
  3443. ( (This)->lpVtbl -> AddRef(This) )
  3444. #define ID3D12CommandList_Release(This) \
  3445. ( (This)->lpVtbl -> Release(This) )
  3446. #define ID3D12CommandList_GetPrivateData(This,guid,pDataSize,pData) \
  3447. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  3448. #define ID3D12CommandList_SetPrivateData(This,guid,DataSize,pData) \
  3449. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  3450. #define ID3D12CommandList_SetPrivateDataInterface(This,guid,pData) \
  3451. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  3452. #define ID3D12CommandList_SetName(This,Name) \
  3453. ( (This)->lpVtbl -> SetName(This,Name) )
  3454. #define ID3D12CommandList_GetDevice(This,riid,ppvDevice) \
  3455. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  3456. #define ID3D12CommandList_GetType(This) \
  3457. ( (This)->lpVtbl -> GetType(This) )
  3458. #endif /* COBJMACROS */
  3459. #endif /* C style interface */
  3460. #endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
  3461. #ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
  3462. #define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
  3463. /* interface ID3D12GraphicsCommandList */
  3464. /* [unique][local][object][uuid] */
  3465. EXTERN_C const IID IID_ID3D12GraphicsCommandList;
  3466. #if defined(__cplusplus) && !defined(CINTERFACE)
  3467. MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
  3468. ID3D12GraphicsCommandList : public ID3D12CommandList
  3469. {
  3470. public:
  3471. virtual HRESULT STDMETHODCALLTYPE Close( void) = 0;
  3472. virtual HRESULT STDMETHODCALLTYPE Reset(
  3473. _In_ ID3D12CommandAllocator *pAllocator,
  3474. _In_opt_ ID3D12PipelineState *pInitialState) = 0;
  3475. virtual void STDMETHODCALLTYPE ClearState(
  3476. _In_opt_ ID3D12PipelineState *pPipelineState) = 0;
  3477. virtual void STDMETHODCALLTYPE DrawInstanced(
  3478. _In_ UINT VertexCountPerInstance,
  3479. _In_ UINT InstanceCount,
  3480. _In_ UINT StartVertexLocation,
  3481. _In_ UINT StartInstanceLocation) = 0;
  3482. virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
  3483. _In_ UINT IndexCountPerInstance,
  3484. _In_ UINT InstanceCount,
  3485. _In_ UINT StartIndexLocation,
  3486. _In_ INT BaseVertexLocation,
  3487. _In_ UINT StartInstanceLocation) = 0;
  3488. virtual void STDMETHODCALLTYPE Dispatch(
  3489. _In_ UINT ThreadGroupCountX,
  3490. _In_ UINT ThreadGroupCountY,
  3491. _In_ UINT ThreadGroupCountZ) = 0;
  3492. virtual void STDMETHODCALLTYPE CopyBufferRegion(
  3493. _In_ ID3D12Resource *pDstBuffer,
  3494. UINT64 DstOffset,
  3495. _In_ ID3D12Resource *pSrcBuffer,
  3496. UINT64 SrcOffset,
  3497. UINT64 NumBytes) = 0;
  3498. virtual void STDMETHODCALLTYPE CopyTextureRegion(
  3499. _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
  3500. UINT DstX,
  3501. UINT DstY,
  3502. UINT DstZ,
  3503. _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
  3504. _In_opt_ const D3D12_BOX *pSrcBox) = 0;
  3505. virtual void STDMETHODCALLTYPE CopyResource(
  3506. _In_ ID3D12Resource *pDstResource,
  3507. _In_ ID3D12Resource *pSrcResource) = 0;
  3508. virtual void STDMETHODCALLTYPE CopyTiles(
  3509. _In_ ID3D12Resource *pTiledResource,
  3510. _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  3511. _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
  3512. _In_ ID3D12Resource *pBuffer,
  3513. UINT64 BufferStartOffsetInBytes,
  3514. D3D12_TILE_COPY_FLAGS Flags) = 0;
  3515. virtual void STDMETHODCALLTYPE ResolveSubresource(
  3516. _In_ ID3D12Resource *pDstResource,
  3517. _In_ UINT DstSubresource,
  3518. _In_ ID3D12Resource *pSrcResource,
  3519. _In_ UINT SrcSubresource,
  3520. _In_ DXGI_FORMAT Format) = 0;
  3521. virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
  3522. _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
  3523. virtual void STDMETHODCALLTYPE RSSetViewports(
  3524. _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
  3525. _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
  3526. virtual void STDMETHODCALLTYPE RSSetScissorRects(
  3527. _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
  3528. _In_reads_( NumRects) const D3D12_RECT *pRects) = 0;
  3529. virtual void STDMETHODCALLTYPE OMSetBlendFactor(
  3530. _In_opt_ const FLOAT BlendFactor[ 4 ]) = 0;
  3531. virtual void STDMETHODCALLTYPE OMSetStencilRef(
  3532. _In_ UINT StencilRef) = 0;
  3533. virtual void STDMETHODCALLTYPE SetPipelineState(
  3534. _In_ ID3D12PipelineState *pPipelineState) = 0;
  3535. virtual void STDMETHODCALLTYPE ResourceBarrier(
  3536. _In_ UINT NumBarriers,
  3537. _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
  3538. virtual void STDMETHODCALLTYPE ExecuteBundle(
  3539. _In_ ID3D12GraphicsCommandList *pCommandList) = 0;
  3540. virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
  3541. _In_ UINT NumDescriptorHeaps,
  3542. _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
  3543. virtual void STDMETHODCALLTYPE SetComputeRootSignature(
  3544. _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
  3545. virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
  3546. _In_opt_ ID3D12RootSignature *pRootSignature) = 0;
  3547. virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
  3548. _In_ UINT RootParameterIndex,
  3549. _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
  3550. virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
  3551. _In_ UINT RootParameterIndex,
  3552. _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
  3553. virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
  3554. _In_ UINT RootParameterIndex,
  3555. _In_ UINT SrcData,
  3556. _In_ UINT DestOffsetIn32BitValues) = 0;
  3557. virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
  3558. _In_ UINT RootParameterIndex,
  3559. _In_ UINT SrcData,
  3560. _In_ UINT DestOffsetIn32BitValues) = 0;
  3561. virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
  3562. _In_ UINT RootParameterIndex,
  3563. _In_ UINT Num32BitValuesToSet,
  3564. _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
  3565. _In_ UINT DestOffsetIn32BitValues) = 0;
  3566. virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
  3567. _In_ UINT RootParameterIndex,
  3568. _In_ UINT Num32BitValuesToSet,
  3569. _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
  3570. _In_ UINT DestOffsetIn32BitValues) = 0;
  3571. virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
  3572. _In_ UINT RootParameterIndex,
  3573. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
  3574. virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
  3575. _In_ UINT RootParameterIndex,
  3576. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
  3577. virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
  3578. _In_ UINT RootParameterIndex,
  3579. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
  3580. virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
  3581. _In_ UINT RootParameterIndex,
  3582. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
  3583. virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
  3584. _In_ UINT RootParameterIndex,
  3585. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
  3586. virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
  3587. _In_ UINT RootParameterIndex,
  3588. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
  3589. virtual void STDMETHODCALLTYPE IASetIndexBuffer(
  3590. _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
  3591. virtual void STDMETHODCALLTYPE IASetVertexBuffers(
  3592. _In_ UINT StartSlot,
  3593. _In_ UINT NumViews,
  3594. _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
  3595. virtual void STDMETHODCALLTYPE SOSetTargets(
  3596. _In_ UINT StartSlot,
  3597. _In_ UINT NumViews,
  3598. _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
  3599. virtual void STDMETHODCALLTYPE OMSetRenderTargets(
  3600. _In_ UINT NumRenderTargetDescriptors,
  3601. _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
  3602. _In_ BOOL RTsSingleHandleToDescriptorRange,
  3603. _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
  3604. virtual void STDMETHODCALLTYPE ClearDepthStencilView(
  3605. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
  3606. _In_ D3D12_CLEAR_FLAGS ClearFlags,
  3607. _In_ FLOAT Depth,
  3608. _In_ UINT8 Stencil,
  3609. _In_ UINT NumRects,
  3610. _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
  3611. virtual void STDMETHODCALLTYPE ClearRenderTargetView(
  3612. _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
  3613. _In_ const FLOAT ColorRGBA[ 4 ],
  3614. _In_ UINT NumRects,
  3615. _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
  3616. virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
  3617. _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  3618. _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  3619. _In_ ID3D12Resource *pResource,
  3620. _In_ const UINT Values[ 4 ],
  3621. _In_ UINT NumRects,
  3622. _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
  3623. virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
  3624. _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  3625. _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  3626. _In_ ID3D12Resource *pResource,
  3627. _In_ const FLOAT Values[ 4 ],
  3628. _In_ UINT NumRects,
  3629. _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
  3630. virtual void STDMETHODCALLTYPE DiscardResource(
  3631. _In_ ID3D12Resource *pResource,
  3632. _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
  3633. virtual void STDMETHODCALLTYPE BeginQuery(
  3634. _In_ ID3D12QueryHeap *pQueryHeap,
  3635. _In_ D3D12_QUERY_TYPE Type,
  3636. _In_ UINT Index) = 0;
  3637. virtual void STDMETHODCALLTYPE EndQuery(
  3638. _In_ ID3D12QueryHeap *pQueryHeap,
  3639. _In_ D3D12_QUERY_TYPE Type,
  3640. _In_ UINT Index) = 0;
  3641. virtual void STDMETHODCALLTYPE ResolveQueryData(
  3642. _In_ ID3D12QueryHeap *pQueryHeap,
  3643. _In_ D3D12_QUERY_TYPE Type,
  3644. _In_ UINT StartIndex,
  3645. _In_ UINT NumQueries,
  3646. _In_ ID3D12Resource *pDestinationBuffer,
  3647. _In_ UINT64 AlignedDestinationBufferOffset) = 0;
  3648. virtual void STDMETHODCALLTYPE SetPredication(
  3649. _In_opt_ ID3D12Resource *pBuffer,
  3650. _In_ UINT64 AlignedBufferOffset,
  3651. _In_ D3D12_PREDICATION_OP Operation) = 0;
  3652. virtual void STDMETHODCALLTYPE SetMarker(
  3653. UINT Metadata,
  3654. _In_reads_bytes_opt_(Size) const void *pData,
  3655. UINT Size) = 0;
  3656. virtual void STDMETHODCALLTYPE BeginEvent(
  3657. UINT Metadata,
  3658. _In_reads_bytes_opt_(Size) const void *pData,
  3659. UINT Size) = 0;
  3660. virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
  3661. virtual void STDMETHODCALLTYPE ExecuteIndirect(
  3662. _In_ ID3D12CommandSignature *pCommandSignature,
  3663. _In_ UINT MaxCommandCount,
  3664. _In_ ID3D12Resource *pArgumentBuffer,
  3665. _In_ UINT64 ArgumentBufferOffset,
  3666. _In_opt_ ID3D12Resource *pCountBuffer,
  3667. _In_ UINT64 CountBufferOffset) = 0;
  3668. };
  3669. #else /* C style interface */
  3670. typedef struct ID3D12GraphicsCommandListVtbl
  3671. {
  3672. BEGIN_INTERFACE
  3673. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  3674. ID3D12GraphicsCommandList * This,
  3675. REFIID riid,
  3676. _COM_Outptr_ void **ppvObject);
  3677. ULONG ( STDMETHODCALLTYPE *AddRef )(
  3678. ID3D12GraphicsCommandList * This);
  3679. ULONG ( STDMETHODCALLTYPE *Release )(
  3680. ID3D12GraphicsCommandList * This);
  3681. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  3682. ID3D12GraphicsCommandList * This,
  3683. _In_ REFGUID guid,
  3684. _Inout_ UINT *pDataSize,
  3685. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  3686. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  3687. ID3D12GraphicsCommandList * This,
  3688. _In_ REFGUID guid,
  3689. _In_ UINT DataSize,
  3690. _In_reads_bytes_opt_( DataSize ) const void *pData);
  3691. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  3692. ID3D12GraphicsCommandList * This,
  3693. _In_ REFGUID guid,
  3694. _In_opt_ const IUnknown *pData);
  3695. HRESULT ( STDMETHODCALLTYPE *SetName )(
  3696. ID3D12GraphicsCommandList * This,
  3697. _In_z_ LPCWSTR Name);
  3698. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  3699. ID3D12GraphicsCommandList * This,
  3700. REFIID riid,
  3701. _COM_Outptr_opt_ void **ppvDevice);
  3702. D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
  3703. ID3D12GraphicsCommandList * This);
  3704. HRESULT ( STDMETHODCALLTYPE *Close )(
  3705. ID3D12GraphicsCommandList * This);
  3706. HRESULT ( STDMETHODCALLTYPE *Reset )(
  3707. ID3D12GraphicsCommandList * This,
  3708. _In_ ID3D12CommandAllocator *pAllocator,
  3709. _In_opt_ ID3D12PipelineState *pInitialState);
  3710. void ( STDMETHODCALLTYPE *ClearState )(
  3711. ID3D12GraphicsCommandList * This,
  3712. _In_opt_ ID3D12PipelineState *pPipelineState);
  3713. void ( STDMETHODCALLTYPE *DrawInstanced )(
  3714. ID3D12GraphicsCommandList * This,
  3715. _In_ UINT VertexCountPerInstance,
  3716. _In_ UINT InstanceCount,
  3717. _In_ UINT StartVertexLocation,
  3718. _In_ UINT StartInstanceLocation);
  3719. void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
  3720. ID3D12GraphicsCommandList * This,
  3721. _In_ UINT IndexCountPerInstance,
  3722. _In_ UINT InstanceCount,
  3723. _In_ UINT StartIndexLocation,
  3724. _In_ INT BaseVertexLocation,
  3725. _In_ UINT StartInstanceLocation);
  3726. void ( STDMETHODCALLTYPE *Dispatch )(
  3727. ID3D12GraphicsCommandList * This,
  3728. _In_ UINT ThreadGroupCountX,
  3729. _In_ UINT ThreadGroupCountY,
  3730. _In_ UINT ThreadGroupCountZ);
  3731. void ( STDMETHODCALLTYPE *CopyBufferRegion )(
  3732. ID3D12GraphicsCommandList * This,
  3733. _In_ ID3D12Resource *pDstBuffer,
  3734. UINT64 DstOffset,
  3735. _In_ ID3D12Resource *pSrcBuffer,
  3736. UINT64 SrcOffset,
  3737. UINT64 NumBytes);
  3738. void ( STDMETHODCALLTYPE *CopyTextureRegion )(
  3739. ID3D12GraphicsCommandList * This,
  3740. _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
  3741. UINT DstX,
  3742. UINT DstY,
  3743. UINT DstZ,
  3744. _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
  3745. _In_opt_ const D3D12_BOX *pSrcBox);
  3746. void ( STDMETHODCALLTYPE *CopyResource )(
  3747. ID3D12GraphicsCommandList * This,
  3748. _In_ ID3D12Resource *pDstResource,
  3749. _In_ ID3D12Resource *pSrcResource);
  3750. void ( STDMETHODCALLTYPE *CopyTiles )(
  3751. ID3D12GraphicsCommandList * This,
  3752. _In_ ID3D12Resource *pTiledResource,
  3753. _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  3754. _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
  3755. _In_ ID3D12Resource *pBuffer,
  3756. UINT64 BufferStartOffsetInBytes,
  3757. D3D12_TILE_COPY_FLAGS Flags);
  3758. void ( STDMETHODCALLTYPE *ResolveSubresource )(
  3759. ID3D12GraphicsCommandList * This,
  3760. _In_ ID3D12Resource *pDstResource,
  3761. _In_ UINT DstSubresource,
  3762. _In_ ID3D12Resource *pSrcResource,
  3763. _In_ UINT SrcSubresource,
  3764. _In_ DXGI_FORMAT Format);
  3765. void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
  3766. ID3D12GraphicsCommandList * This,
  3767. _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
  3768. void ( STDMETHODCALLTYPE *RSSetViewports )(
  3769. ID3D12GraphicsCommandList * This,
  3770. _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
  3771. _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
  3772. void ( STDMETHODCALLTYPE *RSSetScissorRects )(
  3773. ID3D12GraphicsCommandList * This,
  3774. _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
  3775. _In_reads_( NumRects) const D3D12_RECT *pRects);
  3776. void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
  3777. ID3D12GraphicsCommandList * This,
  3778. _In_opt_ const FLOAT BlendFactor[ 4 ]);
  3779. void ( STDMETHODCALLTYPE *OMSetStencilRef )(
  3780. ID3D12GraphicsCommandList * This,
  3781. _In_ UINT StencilRef);
  3782. void ( STDMETHODCALLTYPE *SetPipelineState )(
  3783. ID3D12GraphicsCommandList * This,
  3784. _In_ ID3D12PipelineState *pPipelineState);
  3785. void ( STDMETHODCALLTYPE *ResourceBarrier )(
  3786. ID3D12GraphicsCommandList * This,
  3787. _In_ UINT NumBarriers,
  3788. _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
  3789. void ( STDMETHODCALLTYPE *ExecuteBundle )(
  3790. ID3D12GraphicsCommandList * This,
  3791. _In_ ID3D12GraphicsCommandList *pCommandList);
  3792. void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
  3793. ID3D12GraphicsCommandList * This,
  3794. _In_ UINT NumDescriptorHeaps,
  3795. _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
  3796. void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
  3797. ID3D12GraphicsCommandList * This,
  3798. _In_opt_ ID3D12RootSignature *pRootSignature);
  3799. void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
  3800. ID3D12GraphicsCommandList * This,
  3801. _In_opt_ ID3D12RootSignature *pRootSignature);
  3802. void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
  3803. ID3D12GraphicsCommandList * This,
  3804. _In_ UINT RootParameterIndex,
  3805. _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
  3806. void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
  3807. ID3D12GraphicsCommandList * This,
  3808. _In_ UINT RootParameterIndex,
  3809. _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
  3810. void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
  3811. ID3D12GraphicsCommandList * This,
  3812. _In_ UINT RootParameterIndex,
  3813. _In_ UINT SrcData,
  3814. _In_ UINT DestOffsetIn32BitValues);
  3815. void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
  3816. ID3D12GraphicsCommandList * This,
  3817. _In_ UINT RootParameterIndex,
  3818. _In_ UINT SrcData,
  3819. _In_ UINT DestOffsetIn32BitValues);
  3820. void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
  3821. ID3D12GraphicsCommandList * This,
  3822. _In_ UINT RootParameterIndex,
  3823. _In_ UINT Num32BitValuesToSet,
  3824. _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
  3825. _In_ UINT DestOffsetIn32BitValues);
  3826. void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
  3827. ID3D12GraphicsCommandList * This,
  3828. _In_ UINT RootParameterIndex,
  3829. _In_ UINT Num32BitValuesToSet,
  3830. _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
  3831. _In_ UINT DestOffsetIn32BitValues);
  3832. void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
  3833. ID3D12GraphicsCommandList * This,
  3834. _In_ UINT RootParameterIndex,
  3835. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  3836. void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
  3837. ID3D12GraphicsCommandList * This,
  3838. _In_ UINT RootParameterIndex,
  3839. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  3840. void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
  3841. ID3D12GraphicsCommandList * This,
  3842. _In_ UINT RootParameterIndex,
  3843. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  3844. void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
  3845. ID3D12GraphicsCommandList * This,
  3846. _In_ UINT RootParameterIndex,
  3847. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  3848. void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
  3849. ID3D12GraphicsCommandList * This,
  3850. _In_ UINT RootParameterIndex,
  3851. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  3852. void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
  3853. ID3D12GraphicsCommandList * This,
  3854. _In_ UINT RootParameterIndex,
  3855. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  3856. void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
  3857. ID3D12GraphicsCommandList * This,
  3858. _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
  3859. void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
  3860. ID3D12GraphicsCommandList * This,
  3861. _In_ UINT StartSlot,
  3862. _In_ UINT NumViews,
  3863. _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
  3864. void ( STDMETHODCALLTYPE *SOSetTargets )(
  3865. ID3D12GraphicsCommandList * This,
  3866. _In_ UINT StartSlot,
  3867. _In_ UINT NumViews,
  3868. _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
  3869. void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
  3870. ID3D12GraphicsCommandList * This,
  3871. _In_ UINT NumRenderTargetDescriptors,
  3872. _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
  3873. _In_ BOOL RTsSingleHandleToDescriptorRange,
  3874. _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
  3875. void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
  3876. ID3D12GraphicsCommandList * This,
  3877. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
  3878. _In_ D3D12_CLEAR_FLAGS ClearFlags,
  3879. _In_ FLOAT Depth,
  3880. _In_ UINT8 Stencil,
  3881. _In_ UINT NumRects,
  3882. _In_reads_(NumRects) const D3D12_RECT *pRects);
  3883. void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
  3884. ID3D12GraphicsCommandList * This,
  3885. _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
  3886. _In_ const FLOAT ColorRGBA[ 4 ],
  3887. _In_ UINT NumRects,
  3888. _In_reads_(NumRects) const D3D12_RECT *pRects);
  3889. void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
  3890. ID3D12GraphicsCommandList * This,
  3891. _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  3892. _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  3893. _In_ ID3D12Resource *pResource,
  3894. _In_ const UINT Values[ 4 ],
  3895. _In_ UINT NumRects,
  3896. _In_reads_(NumRects) const D3D12_RECT *pRects);
  3897. void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
  3898. ID3D12GraphicsCommandList * This,
  3899. _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  3900. _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  3901. _In_ ID3D12Resource *pResource,
  3902. _In_ const FLOAT Values[ 4 ],
  3903. _In_ UINT NumRects,
  3904. _In_reads_(NumRects) const D3D12_RECT *pRects);
  3905. void ( STDMETHODCALLTYPE *DiscardResource )(
  3906. ID3D12GraphicsCommandList * This,
  3907. _In_ ID3D12Resource *pResource,
  3908. _In_opt_ const D3D12_DISCARD_REGION *pRegion);
  3909. void ( STDMETHODCALLTYPE *BeginQuery )(
  3910. ID3D12GraphicsCommandList * This,
  3911. _In_ ID3D12QueryHeap *pQueryHeap,
  3912. _In_ D3D12_QUERY_TYPE Type,
  3913. _In_ UINT Index);
  3914. void ( STDMETHODCALLTYPE *EndQuery )(
  3915. ID3D12GraphicsCommandList * This,
  3916. _In_ ID3D12QueryHeap *pQueryHeap,
  3917. _In_ D3D12_QUERY_TYPE Type,
  3918. _In_ UINT Index);
  3919. void ( STDMETHODCALLTYPE *ResolveQueryData )(
  3920. ID3D12GraphicsCommandList * This,
  3921. _In_ ID3D12QueryHeap *pQueryHeap,
  3922. _In_ D3D12_QUERY_TYPE Type,
  3923. _In_ UINT StartIndex,
  3924. _In_ UINT NumQueries,
  3925. _In_ ID3D12Resource *pDestinationBuffer,
  3926. _In_ UINT64 AlignedDestinationBufferOffset);
  3927. void ( STDMETHODCALLTYPE *SetPredication )(
  3928. ID3D12GraphicsCommandList * This,
  3929. _In_opt_ ID3D12Resource *pBuffer,
  3930. _In_ UINT64 AlignedBufferOffset,
  3931. _In_ D3D12_PREDICATION_OP Operation);
  3932. void ( STDMETHODCALLTYPE *SetMarker )(
  3933. ID3D12GraphicsCommandList * This,
  3934. UINT Metadata,
  3935. _In_reads_bytes_opt_(Size) const void *pData,
  3936. UINT Size);
  3937. void ( STDMETHODCALLTYPE *BeginEvent )(
  3938. ID3D12GraphicsCommandList * This,
  3939. UINT Metadata,
  3940. _In_reads_bytes_opt_(Size) const void *pData,
  3941. UINT Size);
  3942. void ( STDMETHODCALLTYPE *EndEvent )(
  3943. ID3D12GraphicsCommandList * This);
  3944. void ( STDMETHODCALLTYPE *ExecuteIndirect )(
  3945. ID3D12GraphicsCommandList * This,
  3946. _In_ ID3D12CommandSignature *pCommandSignature,
  3947. _In_ UINT MaxCommandCount,
  3948. _In_ ID3D12Resource *pArgumentBuffer,
  3949. _In_ UINT64 ArgumentBufferOffset,
  3950. _In_opt_ ID3D12Resource *pCountBuffer,
  3951. _In_ UINT64 CountBufferOffset);
  3952. END_INTERFACE
  3953. } ID3D12GraphicsCommandListVtbl;
  3954. interface ID3D12GraphicsCommandList
  3955. {
  3956. CONST_VTBL struct ID3D12GraphicsCommandListVtbl *lpVtbl;
  3957. };
  3958. #ifdef COBJMACROS
  3959. #define ID3D12GraphicsCommandList_QueryInterface(This,riid,ppvObject) \
  3960. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  3961. #define ID3D12GraphicsCommandList_AddRef(This) \
  3962. ( (This)->lpVtbl -> AddRef(This) )
  3963. #define ID3D12GraphicsCommandList_Release(This) \
  3964. ( (This)->lpVtbl -> Release(This) )
  3965. #define ID3D12GraphicsCommandList_GetPrivateData(This,guid,pDataSize,pData) \
  3966. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  3967. #define ID3D12GraphicsCommandList_SetPrivateData(This,guid,DataSize,pData) \
  3968. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  3969. #define ID3D12GraphicsCommandList_SetPrivateDataInterface(This,guid,pData) \
  3970. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  3971. #define ID3D12GraphicsCommandList_SetName(This,Name) \
  3972. ( (This)->lpVtbl -> SetName(This,Name) )
  3973. #define ID3D12GraphicsCommandList_GetDevice(This,riid,ppvDevice) \
  3974. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  3975. #define ID3D12GraphicsCommandList_GetType(This) \
  3976. ( (This)->lpVtbl -> GetType(This) )
  3977. #define ID3D12GraphicsCommandList_Close(This) \
  3978. ( (This)->lpVtbl -> Close(This) )
  3979. #define ID3D12GraphicsCommandList_Reset(This,pAllocator,pInitialState) \
  3980. ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
  3981. #define ID3D12GraphicsCommandList_ClearState(This,pPipelineState) \
  3982. ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
  3983. #define ID3D12GraphicsCommandList_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
  3984. ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
  3985. #define ID3D12GraphicsCommandList_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
  3986. ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
  3987. #define ID3D12GraphicsCommandList_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
  3988. ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
  3989. #define ID3D12GraphicsCommandList_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
  3990. ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
  3991. #define ID3D12GraphicsCommandList_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
  3992. ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
  3993. #define ID3D12GraphicsCommandList_CopyResource(This,pDstResource,pSrcResource) \
  3994. ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
  3995. #define ID3D12GraphicsCommandList_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
  3996. ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
  3997. #define ID3D12GraphicsCommandList_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
  3998. ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
  3999. #define ID3D12GraphicsCommandList_IASetPrimitiveTopology(This,PrimitiveTopology) \
  4000. ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
  4001. #define ID3D12GraphicsCommandList_RSSetViewports(This,NumViewports,pViewports) \
  4002. ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
  4003. #define ID3D12GraphicsCommandList_RSSetScissorRects(This,NumRects,pRects) \
  4004. ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
  4005. #define ID3D12GraphicsCommandList_OMSetBlendFactor(This,BlendFactor) \
  4006. ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
  4007. #define ID3D12GraphicsCommandList_OMSetStencilRef(This,StencilRef) \
  4008. ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
  4009. #define ID3D12GraphicsCommandList_SetPipelineState(This,pPipelineState) \
  4010. ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
  4011. #define ID3D12GraphicsCommandList_ResourceBarrier(This,NumBarriers,pBarriers) \
  4012. ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
  4013. #define ID3D12GraphicsCommandList_ExecuteBundle(This,pCommandList) \
  4014. ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
  4015. #define ID3D12GraphicsCommandList_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
  4016. ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
  4017. #define ID3D12GraphicsCommandList_SetComputeRootSignature(This,pRootSignature) \
  4018. ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
  4019. #define ID3D12GraphicsCommandList_SetGraphicsRootSignature(This,pRootSignature) \
  4020. ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
  4021. #define ID3D12GraphicsCommandList_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
  4022. ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
  4023. #define ID3D12GraphicsCommandList_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
  4024. ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
  4025. #define ID3D12GraphicsCommandList_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
  4026. ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
  4027. #define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
  4028. ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
  4029. #define ID3D12GraphicsCommandList_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
  4030. ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
  4031. #define ID3D12GraphicsCommandList_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
  4032. ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
  4033. #define ID3D12GraphicsCommandList_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
  4034. ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
  4035. #define ID3D12GraphicsCommandList_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
  4036. ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
  4037. #define ID3D12GraphicsCommandList_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
  4038. ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
  4039. #define ID3D12GraphicsCommandList_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
  4040. ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
  4041. #define ID3D12GraphicsCommandList_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
  4042. ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
  4043. #define ID3D12GraphicsCommandList_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
  4044. ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
  4045. #define ID3D12GraphicsCommandList_IASetIndexBuffer(This,pView) \
  4046. ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
  4047. #define ID3D12GraphicsCommandList_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
  4048. ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
  4049. #define ID3D12GraphicsCommandList_SOSetTargets(This,StartSlot,NumViews,pViews) \
  4050. ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
  4051. #define ID3D12GraphicsCommandList_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
  4052. ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
  4053. #define ID3D12GraphicsCommandList_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
  4054. ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
  4055. #define ID3D12GraphicsCommandList_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
  4056. ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
  4057. #define ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
  4058. ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
  4059. #define ID3D12GraphicsCommandList_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
  4060. ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
  4061. #define ID3D12GraphicsCommandList_DiscardResource(This,pResource,pRegion) \
  4062. ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
  4063. #define ID3D12GraphicsCommandList_BeginQuery(This,pQueryHeap,Type,Index) \
  4064. ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
  4065. #define ID3D12GraphicsCommandList_EndQuery(This,pQueryHeap,Type,Index) \
  4066. ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
  4067. #define ID3D12GraphicsCommandList_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
  4068. ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
  4069. #define ID3D12GraphicsCommandList_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
  4070. ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
  4071. #define ID3D12GraphicsCommandList_SetMarker(This,Metadata,pData,Size) \
  4072. ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
  4073. #define ID3D12GraphicsCommandList_BeginEvent(This,Metadata,pData,Size) \
  4074. ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
  4075. #define ID3D12GraphicsCommandList_EndEvent(This) \
  4076. ( (This)->lpVtbl -> EndEvent(This) )
  4077. #define ID3D12GraphicsCommandList_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
  4078. ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
  4079. #endif /* COBJMACROS */
  4080. #endif /* C style interface */
  4081. #endif /* __ID3D12GraphicsCommandList_INTERFACE_DEFINED__ */
  4082. #ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
  4083. #define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
  4084. /* interface ID3D12GraphicsCommandList1 */
  4085. /* [unique][local][object][uuid] */
  4086. EXTERN_C const IID IID_ID3D12GraphicsCommandList1;
  4087. #if defined(__cplusplus) && !defined(CINTERFACE)
  4088. MIDL_INTERFACE("553103fb-1fe7-4557-bb38-946d7d0e7ca7")
  4089. ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList
  4090. {
  4091. public:
  4092. virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT(
  4093. _In_ ID3D12Resource *pDstBuffer,
  4094. UINT64 DstOffset,
  4095. _In_ ID3D12Resource *pSrcBuffer,
  4096. UINT64 SrcOffset,
  4097. UINT Dependencies,
  4098. _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
  4099. _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
  4100. virtual void STDMETHODCALLTYPE AtomicCopyBufferUINT64(
  4101. _In_ ID3D12Resource *pDstBuffer,
  4102. UINT64 DstOffset,
  4103. _In_ ID3D12Resource *pSrcBuffer,
  4104. UINT64 SrcOffset,
  4105. UINT Dependencies,
  4106. _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
  4107. _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges) = 0;
  4108. virtual void STDMETHODCALLTYPE OMSetDepthBounds(
  4109. _In_ FLOAT Min,
  4110. _In_ FLOAT Max) = 0;
  4111. virtual void STDMETHODCALLTYPE SetSamplePositions(
  4112. _In_ UINT NumSamplesPerPixel,
  4113. _In_ UINT NumPixels,
  4114. _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions) = 0;
  4115. virtual void STDMETHODCALLTYPE ResolveSubresourceRegion(
  4116. _In_ ID3D12Resource *pDstResource,
  4117. _In_ UINT DstSubresource,
  4118. _In_ UINT DstX,
  4119. _In_ UINT DstY,
  4120. _In_ ID3D12Resource *pSrcResource,
  4121. _In_ UINT SrcSubresource,
  4122. _In_opt_ D3D12_RECT *pSrcRect,
  4123. _In_ DXGI_FORMAT Format,
  4124. _In_ D3D12_RESOLVE_MODE ResolveMode) = 0;
  4125. };
  4126. #else /* C style interface */
  4127. typedef struct ID3D12GraphicsCommandList1Vtbl
  4128. {
  4129. BEGIN_INTERFACE
  4130. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4131. ID3D12GraphicsCommandList1 * This,
  4132. REFIID riid,
  4133. _COM_Outptr_ void **ppvObject);
  4134. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4135. ID3D12GraphicsCommandList1 * This);
  4136. ULONG ( STDMETHODCALLTYPE *Release )(
  4137. ID3D12GraphicsCommandList1 * This);
  4138. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  4139. ID3D12GraphicsCommandList1 * This,
  4140. _In_ REFGUID guid,
  4141. _Inout_ UINT *pDataSize,
  4142. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  4143. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  4144. ID3D12GraphicsCommandList1 * This,
  4145. _In_ REFGUID guid,
  4146. _In_ UINT DataSize,
  4147. _In_reads_bytes_opt_( DataSize ) const void *pData);
  4148. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  4149. ID3D12GraphicsCommandList1 * This,
  4150. _In_ REFGUID guid,
  4151. _In_opt_ const IUnknown *pData);
  4152. HRESULT ( STDMETHODCALLTYPE *SetName )(
  4153. ID3D12GraphicsCommandList1 * This,
  4154. _In_z_ LPCWSTR Name);
  4155. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  4156. ID3D12GraphicsCommandList1 * This,
  4157. REFIID riid,
  4158. _COM_Outptr_opt_ void **ppvDevice);
  4159. D3D12_COMMAND_LIST_TYPE ( STDMETHODCALLTYPE *GetType )(
  4160. ID3D12GraphicsCommandList1 * This);
  4161. HRESULT ( STDMETHODCALLTYPE *Close )(
  4162. ID3D12GraphicsCommandList1 * This);
  4163. HRESULT ( STDMETHODCALLTYPE *Reset )(
  4164. ID3D12GraphicsCommandList1 * This,
  4165. _In_ ID3D12CommandAllocator *pAllocator,
  4166. _In_opt_ ID3D12PipelineState *pInitialState);
  4167. void ( STDMETHODCALLTYPE *ClearState )(
  4168. ID3D12GraphicsCommandList1 * This,
  4169. _In_opt_ ID3D12PipelineState *pPipelineState);
  4170. void ( STDMETHODCALLTYPE *DrawInstanced )(
  4171. ID3D12GraphicsCommandList1 * This,
  4172. _In_ UINT VertexCountPerInstance,
  4173. _In_ UINT InstanceCount,
  4174. _In_ UINT StartVertexLocation,
  4175. _In_ UINT StartInstanceLocation);
  4176. void ( STDMETHODCALLTYPE *DrawIndexedInstanced )(
  4177. ID3D12GraphicsCommandList1 * This,
  4178. _In_ UINT IndexCountPerInstance,
  4179. _In_ UINT InstanceCount,
  4180. _In_ UINT StartIndexLocation,
  4181. _In_ INT BaseVertexLocation,
  4182. _In_ UINT StartInstanceLocation);
  4183. void ( STDMETHODCALLTYPE *Dispatch )(
  4184. ID3D12GraphicsCommandList1 * This,
  4185. _In_ UINT ThreadGroupCountX,
  4186. _In_ UINT ThreadGroupCountY,
  4187. _In_ UINT ThreadGroupCountZ);
  4188. void ( STDMETHODCALLTYPE *CopyBufferRegion )(
  4189. ID3D12GraphicsCommandList1 * This,
  4190. _In_ ID3D12Resource *pDstBuffer,
  4191. UINT64 DstOffset,
  4192. _In_ ID3D12Resource *pSrcBuffer,
  4193. UINT64 SrcOffset,
  4194. UINT64 NumBytes);
  4195. void ( STDMETHODCALLTYPE *CopyTextureRegion )(
  4196. ID3D12GraphicsCommandList1 * This,
  4197. _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
  4198. UINT DstX,
  4199. UINT DstY,
  4200. UINT DstZ,
  4201. _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
  4202. _In_opt_ const D3D12_BOX *pSrcBox);
  4203. void ( STDMETHODCALLTYPE *CopyResource )(
  4204. ID3D12GraphicsCommandList1 * This,
  4205. _In_ ID3D12Resource *pDstResource,
  4206. _In_ ID3D12Resource *pSrcResource);
  4207. void ( STDMETHODCALLTYPE *CopyTiles )(
  4208. ID3D12GraphicsCommandList1 * This,
  4209. _In_ ID3D12Resource *pTiledResource,
  4210. _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  4211. _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
  4212. _In_ ID3D12Resource *pBuffer,
  4213. UINT64 BufferStartOffsetInBytes,
  4214. D3D12_TILE_COPY_FLAGS Flags);
  4215. void ( STDMETHODCALLTYPE *ResolveSubresource )(
  4216. ID3D12GraphicsCommandList1 * This,
  4217. _In_ ID3D12Resource *pDstResource,
  4218. _In_ UINT DstSubresource,
  4219. _In_ ID3D12Resource *pSrcResource,
  4220. _In_ UINT SrcSubresource,
  4221. _In_ DXGI_FORMAT Format);
  4222. void ( STDMETHODCALLTYPE *IASetPrimitiveTopology )(
  4223. ID3D12GraphicsCommandList1 * This,
  4224. _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology);
  4225. void ( STDMETHODCALLTYPE *RSSetViewports )(
  4226. ID3D12GraphicsCommandList1 * This,
  4227. _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumViewports,
  4228. _In_reads_( NumViewports) const D3D12_VIEWPORT *pViewports);
  4229. void ( STDMETHODCALLTYPE *RSSetScissorRects )(
  4230. ID3D12GraphicsCommandList1 * This,
  4231. _In_range_(0, D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) UINT NumRects,
  4232. _In_reads_( NumRects) const D3D12_RECT *pRects);
  4233. void ( STDMETHODCALLTYPE *OMSetBlendFactor )(
  4234. ID3D12GraphicsCommandList1 * This,
  4235. _In_opt_ const FLOAT BlendFactor[ 4 ]);
  4236. void ( STDMETHODCALLTYPE *OMSetStencilRef )(
  4237. ID3D12GraphicsCommandList1 * This,
  4238. _In_ UINT StencilRef);
  4239. void ( STDMETHODCALLTYPE *SetPipelineState )(
  4240. ID3D12GraphicsCommandList1 * This,
  4241. _In_ ID3D12PipelineState *pPipelineState);
  4242. void ( STDMETHODCALLTYPE *ResourceBarrier )(
  4243. ID3D12GraphicsCommandList1 * This,
  4244. _In_ UINT NumBarriers,
  4245. _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
  4246. void ( STDMETHODCALLTYPE *ExecuteBundle )(
  4247. ID3D12GraphicsCommandList1 * This,
  4248. _In_ ID3D12GraphicsCommandList *pCommandList);
  4249. void ( STDMETHODCALLTYPE *SetDescriptorHeaps )(
  4250. ID3D12GraphicsCommandList1 * This,
  4251. _In_ UINT NumDescriptorHeaps,
  4252. _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
  4253. void ( STDMETHODCALLTYPE *SetComputeRootSignature )(
  4254. ID3D12GraphicsCommandList1 * This,
  4255. _In_opt_ ID3D12RootSignature *pRootSignature);
  4256. void ( STDMETHODCALLTYPE *SetGraphicsRootSignature )(
  4257. ID3D12GraphicsCommandList1 * This,
  4258. _In_opt_ ID3D12RootSignature *pRootSignature);
  4259. void ( STDMETHODCALLTYPE *SetComputeRootDescriptorTable )(
  4260. ID3D12GraphicsCommandList1 * This,
  4261. _In_ UINT RootParameterIndex,
  4262. _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
  4263. void ( STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable )(
  4264. ID3D12GraphicsCommandList1 * This,
  4265. _In_ UINT RootParameterIndex,
  4266. _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
  4267. void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstant )(
  4268. ID3D12GraphicsCommandList1 * This,
  4269. _In_ UINT RootParameterIndex,
  4270. _In_ UINT SrcData,
  4271. _In_ UINT DestOffsetIn32BitValues);
  4272. void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant )(
  4273. ID3D12GraphicsCommandList1 * This,
  4274. _In_ UINT RootParameterIndex,
  4275. _In_ UINT SrcData,
  4276. _In_ UINT DestOffsetIn32BitValues);
  4277. void ( STDMETHODCALLTYPE *SetComputeRoot32BitConstants )(
  4278. ID3D12GraphicsCommandList1 * This,
  4279. _In_ UINT RootParameterIndex,
  4280. _In_ UINT Num32BitValuesToSet,
  4281. _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
  4282. _In_ UINT DestOffsetIn32BitValues);
  4283. void ( STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants )(
  4284. ID3D12GraphicsCommandList1 * This,
  4285. _In_ UINT RootParameterIndex,
  4286. _In_ UINT Num32BitValuesToSet,
  4287. _In_reads_(Num32BitValuesToSet*sizeof(UINT)) const void *pSrcData,
  4288. _In_ UINT DestOffsetIn32BitValues);
  4289. void ( STDMETHODCALLTYPE *SetComputeRootConstantBufferView )(
  4290. ID3D12GraphicsCommandList1 * This,
  4291. _In_ UINT RootParameterIndex,
  4292. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  4293. void ( STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView )(
  4294. ID3D12GraphicsCommandList1 * This,
  4295. _In_ UINT RootParameterIndex,
  4296. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  4297. void ( STDMETHODCALLTYPE *SetComputeRootShaderResourceView )(
  4298. ID3D12GraphicsCommandList1 * This,
  4299. _In_ UINT RootParameterIndex,
  4300. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  4301. void ( STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView )(
  4302. ID3D12GraphicsCommandList1 * This,
  4303. _In_ UINT RootParameterIndex,
  4304. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  4305. void ( STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView )(
  4306. ID3D12GraphicsCommandList1 * This,
  4307. _In_ UINT RootParameterIndex,
  4308. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  4309. void ( STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView )(
  4310. ID3D12GraphicsCommandList1 * This,
  4311. _In_ UINT RootParameterIndex,
  4312. _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
  4313. void ( STDMETHODCALLTYPE *IASetIndexBuffer )(
  4314. ID3D12GraphicsCommandList1 * This,
  4315. _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView);
  4316. void ( STDMETHODCALLTYPE *IASetVertexBuffers )(
  4317. ID3D12GraphicsCommandList1 * This,
  4318. _In_ UINT StartSlot,
  4319. _In_ UINT NumViews,
  4320. _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
  4321. void ( STDMETHODCALLTYPE *SOSetTargets )(
  4322. ID3D12GraphicsCommandList1 * This,
  4323. _In_ UINT StartSlot,
  4324. _In_ UINT NumViews,
  4325. _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
  4326. void ( STDMETHODCALLTYPE *OMSetRenderTargets )(
  4327. ID3D12GraphicsCommandList1 * This,
  4328. _In_ UINT NumRenderTargetDescriptors,
  4329. _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
  4330. _In_ BOOL RTsSingleHandleToDescriptorRange,
  4331. _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor);
  4332. void ( STDMETHODCALLTYPE *ClearDepthStencilView )(
  4333. ID3D12GraphicsCommandList1 * This,
  4334. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
  4335. _In_ D3D12_CLEAR_FLAGS ClearFlags,
  4336. _In_ FLOAT Depth,
  4337. _In_ UINT8 Stencil,
  4338. _In_ UINT NumRects,
  4339. _In_reads_(NumRects) const D3D12_RECT *pRects);
  4340. void ( STDMETHODCALLTYPE *ClearRenderTargetView )(
  4341. ID3D12GraphicsCommandList1 * This,
  4342. _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
  4343. _In_ const FLOAT ColorRGBA[ 4 ],
  4344. _In_ UINT NumRects,
  4345. _In_reads_(NumRects) const D3D12_RECT *pRects);
  4346. void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewUint )(
  4347. ID3D12GraphicsCommandList1 * This,
  4348. _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  4349. _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  4350. _In_ ID3D12Resource *pResource,
  4351. _In_ const UINT Values[ 4 ],
  4352. _In_ UINT NumRects,
  4353. _In_reads_(NumRects) const D3D12_RECT *pRects);
  4354. void ( STDMETHODCALLTYPE *ClearUnorderedAccessViewFloat )(
  4355. ID3D12GraphicsCommandList1 * This,
  4356. _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
  4357. _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
  4358. _In_ ID3D12Resource *pResource,
  4359. _In_ const FLOAT Values[ 4 ],
  4360. _In_ UINT NumRects,
  4361. _In_reads_(NumRects) const D3D12_RECT *pRects);
  4362. void ( STDMETHODCALLTYPE *DiscardResource )(
  4363. ID3D12GraphicsCommandList1 * This,
  4364. _In_ ID3D12Resource *pResource,
  4365. _In_opt_ const D3D12_DISCARD_REGION *pRegion);
  4366. void ( STDMETHODCALLTYPE *BeginQuery )(
  4367. ID3D12GraphicsCommandList1 * This,
  4368. _In_ ID3D12QueryHeap *pQueryHeap,
  4369. _In_ D3D12_QUERY_TYPE Type,
  4370. _In_ UINT Index);
  4371. void ( STDMETHODCALLTYPE *EndQuery )(
  4372. ID3D12GraphicsCommandList1 * This,
  4373. _In_ ID3D12QueryHeap *pQueryHeap,
  4374. _In_ D3D12_QUERY_TYPE Type,
  4375. _In_ UINT Index);
  4376. void ( STDMETHODCALLTYPE *ResolveQueryData )(
  4377. ID3D12GraphicsCommandList1 * This,
  4378. _In_ ID3D12QueryHeap *pQueryHeap,
  4379. _In_ D3D12_QUERY_TYPE Type,
  4380. _In_ UINT StartIndex,
  4381. _In_ UINT NumQueries,
  4382. _In_ ID3D12Resource *pDestinationBuffer,
  4383. _In_ UINT64 AlignedDestinationBufferOffset);
  4384. void ( STDMETHODCALLTYPE *SetPredication )(
  4385. ID3D12GraphicsCommandList1 * This,
  4386. _In_opt_ ID3D12Resource *pBuffer,
  4387. _In_ UINT64 AlignedBufferOffset,
  4388. _In_ D3D12_PREDICATION_OP Operation);
  4389. void ( STDMETHODCALLTYPE *SetMarker )(
  4390. ID3D12GraphicsCommandList1 * This,
  4391. UINT Metadata,
  4392. _In_reads_bytes_opt_(Size) const void *pData,
  4393. UINT Size);
  4394. void ( STDMETHODCALLTYPE *BeginEvent )(
  4395. ID3D12GraphicsCommandList1 * This,
  4396. UINT Metadata,
  4397. _In_reads_bytes_opt_(Size) const void *pData,
  4398. UINT Size);
  4399. void ( STDMETHODCALLTYPE *EndEvent )(
  4400. ID3D12GraphicsCommandList1 * This);
  4401. void ( STDMETHODCALLTYPE *ExecuteIndirect )(
  4402. ID3D12GraphicsCommandList1 * This,
  4403. _In_ ID3D12CommandSignature *pCommandSignature,
  4404. _In_ UINT MaxCommandCount,
  4405. _In_ ID3D12Resource *pArgumentBuffer,
  4406. _In_ UINT64 ArgumentBufferOffset,
  4407. _In_opt_ ID3D12Resource *pCountBuffer,
  4408. _In_ UINT64 CountBufferOffset);
  4409. void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT )(
  4410. ID3D12GraphicsCommandList1 * This,
  4411. _In_ ID3D12Resource *pDstBuffer,
  4412. UINT64 DstOffset,
  4413. _In_ ID3D12Resource *pSrcBuffer,
  4414. UINT64 SrcOffset,
  4415. UINT Dependencies,
  4416. _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
  4417. _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
  4418. void ( STDMETHODCALLTYPE *AtomicCopyBufferUINT64 )(
  4419. ID3D12GraphicsCommandList1 * This,
  4420. _In_ ID3D12Resource *pDstBuffer,
  4421. UINT64 DstOffset,
  4422. _In_ ID3D12Resource *pSrcBuffer,
  4423. UINT64 SrcOffset,
  4424. UINT Dependencies,
  4425. _In_reads_(Dependencies) ID3D12Resource *const *ppDependentResources,
  4426. _In_reads_(Dependencies) const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges);
  4427. void ( STDMETHODCALLTYPE *OMSetDepthBounds )(
  4428. ID3D12GraphicsCommandList1 * This,
  4429. _In_ FLOAT Min,
  4430. _In_ FLOAT Max);
  4431. void ( STDMETHODCALLTYPE *SetSamplePositions )(
  4432. ID3D12GraphicsCommandList1 * This,
  4433. _In_ UINT NumSamplesPerPixel,
  4434. _In_ UINT NumPixels,
  4435. _In_reads_(NumSamplesPerPixel*NumPixels) D3D12_SAMPLE_POSITION *pSamplePositions);
  4436. void ( STDMETHODCALLTYPE *ResolveSubresourceRegion )(
  4437. ID3D12GraphicsCommandList1 * This,
  4438. _In_ ID3D12Resource *pDstResource,
  4439. _In_ UINT DstSubresource,
  4440. _In_ UINT DstX,
  4441. _In_ UINT DstY,
  4442. _In_ ID3D12Resource *pSrcResource,
  4443. _In_ UINT SrcSubresource,
  4444. _In_opt_ D3D12_RECT *pSrcRect,
  4445. _In_ DXGI_FORMAT Format,
  4446. _In_ D3D12_RESOLVE_MODE ResolveMode);
  4447. END_INTERFACE
  4448. } ID3D12GraphicsCommandList1Vtbl;
  4449. interface ID3D12GraphicsCommandList1
  4450. {
  4451. CONST_VTBL struct ID3D12GraphicsCommandList1Vtbl *lpVtbl;
  4452. };
  4453. #ifdef COBJMACROS
  4454. #define ID3D12GraphicsCommandList1_QueryInterface(This,riid,ppvObject) \
  4455. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4456. #define ID3D12GraphicsCommandList1_AddRef(This) \
  4457. ( (This)->lpVtbl -> AddRef(This) )
  4458. #define ID3D12GraphicsCommandList1_Release(This) \
  4459. ( (This)->lpVtbl -> Release(This) )
  4460. #define ID3D12GraphicsCommandList1_GetPrivateData(This,guid,pDataSize,pData) \
  4461. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  4462. #define ID3D12GraphicsCommandList1_SetPrivateData(This,guid,DataSize,pData) \
  4463. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  4464. #define ID3D12GraphicsCommandList1_SetPrivateDataInterface(This,guid,pData) \
  4465. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  4466. #define ID3D12GraphicsCommandList1_SetName(This,Name) \
  4467. ( (This)->lpVtbl -> SetName(This,Name) )
  4468. #define ID3D12GraphicsCommandList1_GetDevice(This,riid,ppvDevice) \
  4469. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  4470. #define ID3D12GraphicsCommandList1_GetType(This) \
  4471. ( (This)->lpVtbl -> GetType(This) )
  4472. #define ID3D12GraphicsCommandList1_Close(This) \
  4473. ( (This)->lpVtbl -> Close(This) )
  4474. #define ID3D12GraphicsCommandList1_Reset(This,pAllocator,pInitialState) \
  4475. ( (This)->lpVtbl -> Reset(This,pAllocator,pInitialState) )
  4476. #define ID3D12GraphicsCommandList1_ClearState(This,pPipelineState) \
  4477. ( (This)->lpVtbl -> ClearState(This,pPipelineState) )
  4478. #define ID3D12GraphicsCommandList1_DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) \
  4479. ( (This)->lpVtbl -> DrawInstanced(This,VertexCountPerInstance,InstanceCount,StartVertexLocation,StartInstanceLocation) )
  4480. #define ID3D12GraphicsCommandList1_DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) \
  4481. ( (This)->lpVtbl -> DrawIndexedInstanced(This,IndexCountPerInstance,InstanceCount,StartIndexLocation,BaseVertexLocation,StartInstanceLocation) )
  4482. #define ID3D12GraphicsCommandList1_Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) \
  4483. ( (This)->lpVtbl -> Dispatch(This,ThreadGroupCountX,ThreadGroupCountY,ThreadGroupCountZ) )
  4484. #define ID3D12GraphicsCommandList1_CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) \
  4485. ( (This)->lpVtbl -> CopyBufferRegion(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,NumBytes) )
  4486. #define ID3D12GraphicsCommandList1_CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) \
  4487. ( (This)->lpVtbl -> CopyTextureRegion(This,pDst,DstX,DstY,DstZ,pSrc,pSrcBox) )
  4488. #define ID3D12GraphicsCommandList1_CopyResource(This,pDstResource,pSrcResource) \
  4489. ( (This)->lpVtbl -> CopyResource(This,pDstResource,pSrcResource) )
  4490. #define ID3D12GraphicsCommandList1_CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) \
  4491. ( (This)->lpVtbl -> CopyTiles(This,pTiledResource,pTileRegionStartCoordinate,pTileRegionSize,pBuffer,BufferStartOffsetInBytes,Flags) )
  4492. #define ID3D12GraphicsCommandList1_ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) \
  4493. ( (This)->lpVtbl -> ResolveSubresource(This,pDstResource,DstSubresource,pSrcResource,SrcSubresource,Format) )
  4494. #define ID3D12GraphicsCommandList1_IASetPrimitiveTopology(This,PrimitiveTopology) \
  4495. ( (This)->lpVtbl -> IASetPrimitiveTopology(This,PrimitiveTopology) )
  4496. #define ID3D12GraphicsCommandList1_RSSetViewports(This,NumViewports,pViewports) \
  4497. ( (This)->lpVtbl -> RSSetViewports(This,NumViewports,pViewports) )
  4498. #define ID3D12GraphicsCommandList1_RSSetScissorRects(This,NumRects,pRects) \
  4499. ( (This)->lpVtbl -> RSSetScissorRects(This,NumRects,pRects) )
  4500. #define ID3D12GraphicsCommandList1_OMSetBlendFactor(This,BlendFactor) \
  4501. ( (This)->lpVtbl -> OMSetBlendFactor(This,BlendFactor) )
  4502. #define ID3D12GraphicsCommandList1_OMSetStencilRef(This,StencilRef) \
  4503. ( (This)->lpVtbl -> OMSetStencilRef(This,StencilRef) )
  4504. #define ID3D12GraphicsCommandList1_SetPipelineState(This,pPipelineState) \
  4505. ( (This)->lpVtbl -> SetPipelineState(This,pPipelineState) )
  4506. #define ID3D12GraphicsCommandList1_ResourceBarrier(This,NumBarriers,pBarriers) \
  4507. ( (This)->lpVtbl -> ResourceBarrier(This,NumBarriers,pBarriers) )
  4508. #define ID3D12GraphicsCommandList1_ExecuteBundle(This,pCommandList) \
  4509. ( (This)->lpVtbl -> ExecuteBundle(This,pCommandList) )
  4510. #define ID3D12GraphicsCommandList1_SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) \
  4511. ( (This)->lpVtbl -> SetDescriptorHeaps(This,NumDescriptorHeaps,ppDescriptorHeaps) )
  4512. #define ID3D12GraphicsCommandList1_SetComputeRootSignature(This,pRootSignature) \
  4513. ( (This)->lpVtbl -> SetComputeRootSignature(This,pRootSignature) )
  4514. #define ID3D12GraphicsCommandList1_SetGraphicsRootSignature(This,pRootSignature) \
  4515. ( (This)->lpVtbl -> SetGraphicsRootSignature(This,pRootSignature) )
  4516. #define ID3D12GraphicsCommandList1_SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
  4517. ( (This)->lpVtbl -> SetComputeRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
  4518. #define ID3D12GraphicsCommandList1_SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) \
  4519. ( (This)->lpVtbl -> SetGraphicsRootDescriptorTable(This,RootParameterIndex,BaseDescriptor) )
  4520. #define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
  4521. ( (This)->lpVtbl -> SetComputeRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
  4522. #define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) \
  4523. ( (This)->lpVtbl -> SetGraphicsRoot32BitConstant(This,RootParameterIndex,SrcData,DestOffsetIn32BitValues) )
  4524. #define ID3D12GraphicsCommandList1_SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
  4525. ( (This)->lpVtbl -> SetComputeRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
  4526. #define ID3D12GraphicsCommandList1_SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) \
  4527. ( (This)->lpVtbl -> SetGraphicsRoot32BitConstants(This,RootParameterIndex,Num32BitValuesToSet,pSrcData,DestOffsetIn32BitValues) )
  4528. #define ID3D12GraphicsCommandList1_SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
  4529. ( (This)->lpVtbl -> SetComputeRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
  4530. #define ID3D12GraphicsCommandList1_SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) \
  4531. ( (This)->lpVtbl -> SetGraphicsRootConstantBufferView(This,RootParameterIndex,BufferLocation) )
  4532. #define ID3D12GraphicsCommandList1_SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
  4533. ( (This)->lpVtbl -> SetComputeRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
  4534. #define ID3D12GraphicsCommandList1_SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) \
  4535. ( (This)->lpVtbl -> SetGraphicsRootShaderResourceView(This,RootParameterIndex,BufferLocation) )
  4536. #define ID3D12GraphicsCommandList1_SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
  4537. ( (This)->lpVtbl -> SetComputeRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
  4538. #define ID3D12GraphicsCommandList1_SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) \
  4539. ( (This)->lpVtbl -> SetGraphicsRootUnorderedAccessView(This,RootParameterIndex,BufferLocation) )
  4540. #define ID3D12GraphicsCommandList1_IASetIndexBuffer(This,pView) \
  4541. ( (This)->lpVtbl -> IASetIndexBuffer(This,pView) )
  4542. #define ID3D12GraphicsCommandList1_IASetVertexBuffers(This,StartSlot,NumViews,pViews) \
  4543. ( (This)->lpVtbl -> IASetVertexBuffers(This,StartSlot,NumViews,pViews) )
  4544. #define ID3D12GraphicsCommandList1_SOSetTargets(This,StartSlot,NumViews,pViews) \
  4545. ( (This)->lpVtbl -> SOSetTargets(This,StartSlot,NumViews,pViews) )
  4546. #define ID3D12GraphicsCommandList1_OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) \
  4547. ( (This)->lpVtbl -> OMSetRenderTargets(This,NumRenderTargetDescriptors,pRenderTargetDescriptors,RTsSingleHandleToDescriptorRange,pDepthStencilDescriptor) )
  4548. #define ID3D12GraphicsCommandList1_ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) \
  4549. ( (This)->lpVtbl -> ClearDepthStencilView(This,DepthStencilView,ClearFlags,Depth,Stencil,NumRects,pRects) )
  4550. #define ID3D12GraphicsCommandList1_ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) \
  4551. ( (This)->lpVtbl -> ClearRenderTargetView(This,RenderTargetView,ColorRGBA,NumRects,pRects) )
  4552. #define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
  4553. ( (This)->lpVtbl -> ClearUnorderedAccessViewUint(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
  4554. #define ID3D12GraphicsCommandList1_ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) \
  4555. ( (This)->lpVtbl -> ClearUnorderedAccessViewFloat(This,ViewGPUHandleInCurrentHeap,ViewCPUHandle,pResource,Values,NumRects,pRects) )
  4556. #define ID3D12GraphicsCommandList1_DiscardResource(This,pResource,pRegion) \
  4557. ( (This)->lpVtbl -> DiscardResource(This,pResource,pRegion) )
  4558. #define ID3D12GraphicsCommandList1_BeginQuery(This,pQueryHeap,Type,Index) \
  4559. ( (This)->lpVtbl -> BeginQuery(This,pQueryHeap,Type,Index) )
  4560. #define ID3D12GraphicsCommandList1_EndQuery(This,pQueryHeap,Type,Index) \
  4561. ( (This)->lpVtbl -> EndQuery(This,pQueryHeap,Type,Index) )
  4562. #define ID3D12GraphicsCommandList1_ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) \
  4563. ( (This)->lpVtbl -> ResolveQueryData(This,pQueryHeap,Type,StartIndex,NumQueries,pDestinationBuffer,AlignedDestinationBufferOffset) )
  4564. #define ID3D12GraphicsCommandList1_SetPredication(This,pBuffer,AlignedBufferOffset,Operation) \
  4565. ( (This)->lpVtbl -> SetPredication(This,pBuffer,AlignedBufferOffset,Operation) )
  4566. #define ID3D12GraphicsCommandList1_SetMarker(This,Metadata,pData,Size) \
  4567. ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
  4568. #define ID3D12GraphicsCommandList1_BeginEvent(This,Metadata,pData,Size) \
  4569. ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
  4570. #define ID3D12GraphicsCommandList1_EndEvent(This) \
  4571. ( (This)->lpVtbl -> EndEvent(This) )
  4572. #define ID3D12GraphicsCommandList1_ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) \
  4573. ( (This)->lpVtbl -> ExecuteIndirect(This,pCommandSignature,MaxCommandCount,pArgumentBuffer,ArgumentBufferOffset,pCountBuffer,CountBufferOffset) )
  4574. #define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
  4575. ( (This)->lpVtbl -> AtomicCopyBufferUINT(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
  4576. #define ID3D12GraphicsCommandList1_AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) \
  4577. ( (This)->lpVtbl -> AtomicCopyBufferUINT64(This,pDstBuffer,DstOffset,pSrcBuffer,SrcOffset,Dependencies,ppDependentResources,pDependentSubresourceRanges) )
  4578. #define ID3D12GraphicsCommandList1_OMSetDepthBounds(This,Min,Max) \
  4579. ( (This)->lpVtbl -> OMSetDepthBounds(This,Min,Max) )
  4580. #define ID3D12GraphicsCommandList1_SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) \
  4581. ( (This)->lpVtbl -> SetSamplePositions(This,NumSamplesPerPixel,NumPixels,pSamplePositions) )
  4582. #define ID3D12GraphicsCommandList1_ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) \
  4583. ( (This)->lpVtbl -> ResolveSubresourceRegion(This,pDstResource,DstSubresource,DstX,DstY,pSrcResource,SrcSubresource,pSrcRect,Format,ResolveMode) )
  4584. #endif /* COBJMACROS */
  4585. #endif /* C style interface */
  4586. #endif /* __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__ */
  4587. #ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
  4588. #define __ID3D12CommandQueue_INTERFACE_DEFINED__
  4589. /* interface ID3D12CommandQueue */
  4590. /* [unique][local][object][uuid] */
  4591. EXTERN_C const IID IID_ID3D12CommandQueue;
  4592. #if defined(__cplusplus) && !defined(CINTERFACE)
  4593. MIDL_INTERFACE("0ec870a6-5d7e-4c22-8cfc-5baae07616ed")
  4594. ID3D12CommandQueue : public ID3D12Pageable
  4595. {
  4596. public:
  4597. virtual void STDMETHODCALLTYPE UpdateTileMappings(
  4598. _In_ ID3D12Resource *pResource,
  4599. UINT NumResourceRegions,
  4600. _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
  4601. _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
  4602. _In_opt_ ID3D12Heap *pHeap,
  4603. UINT NumRanges,
  4604. _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
  4605. _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
  4606. _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
  4607. D3D12_TILE_MAPPING_FLAGS Flags) = 0;
  4608. virtual void STDMETHODCALLTYPE CopyTileMappings(
  4609. _In_ ID3D12Resource *pDstResource,
  4610. _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
  4611. _In_ ID3D12Resource *pSrcResource,
  4612. _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
  4613. _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
  4614. D3D12_TILE_MAPPING_FLAGS Flags) = 0;
  4615. virtual void STDMETHODCALLTYPE ExecuteCommandLists(
  4616. _In_ UINT NumCommandLists,
  4617. _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists) = 0;
  4618. virtual void STDMETHODCALLTYPE SetMarker(
  4619. UINT Metadata,
  4620. _In_reads_bytes_opt_(Size) const void *pData,
  4621. UINT Size) = 0;
  4622. virtual void STDMETHODCALLTYPE BeginEvent(
  4623. UINT Metadata,
  4624. _In_reads_bytes_opt_(Size) const void *pData,
  4625. UINT Size) = 0;
  4626. virtual void STDMETHODCALLTYPE EndEvent( void) = 0;
  4627. virtual HRESULT STDMETHODCALLTYPE Signal(
  4628. ID3D12Fence *pFence,
  4629. UINT64 Value) = 0;
  4630. virtual HRESULT STDMETHODCALLTYPE Wait(
  4631. ID3D12Fence *pFence,
  4632. UINT64 Value) = 0;
  4633. virtual HRESULT STDMETHODCALLTYPE GetTimestampFrequency(
  4634. _Out_ UINT64 *pFrequency) = 0;
  4635. virtual HRESULT STDMETHODCALLTYPE GetClockCalibration(
  4636. _Out_ UINT64 *pGpuTimestamp,
  4637. _Out_ UINT64 *pCpuTimestamp) = 0;
  4638. virtual D3D12_COMMAND_QUEUE_DESC STDMETHODCALLTYPE GetDesc( void) = 0;
  4639. };
  4640. #else /* C style interface */
  4641. typedef struct ID3D12CommandQueueVtbl
  4642. {
  4643. BEGIN_INTERFACE
  4644. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4645. ID3D12CommandQueue * This,
  4646. REFIID riid,
  4647. _COM_Outptr_ void **ppvObject);
  4648. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4649. ID3D12CommandQueue * This);
  4650. ULONG ( STDMETHODCALLTYPE *Release )(
  4651. ID3D12CommandQueue * This);
  4652. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  4653. ID3D12CommandQueue * This,
  4654. _In_ REFGUID guid,
  4655. _Inout_ UINT *pDataSize,
  4656. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  4657. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  4658. ID3D12CommandQueue * This,
  4659. _In_ REFGUID guid,
  4660. _In_ UINT DataSize,
  4661. _In_reads_bytes_opt_( DataSize ) const void *pData);
  4662. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  4663. ID3D12CommandQueue * This,
  4664. _In_ REFGUID guid,
  4665. _In_opt_ const IUnknown *pData);
  4666. HRESULT ( STDMETHODCALLTYPE *SetName )(
  4667. ID3D12CommandQueue * This,
  4668. _In_z_ LPCWSTR Name);
  4669. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  4670. ID3D12CommandQueue * This,
  4671. REFIID riid,
  4672. _COM_Outptr_opt_ void **ppvDevice);
  4673. void ( STDMETHODCALLTYPE *UpdateTileMappings )(
  4674. ID3D12CommandQueue * This,
  4675. _In_ ID3D12Resource *pResource,
  4676. UINT NumResourceRegions,
  4677. _In_reads_opt_(NumResourceRegions) const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates,
  4678. _In_reads_opt_(NumResourceRegions) const D3D12_TILE_REGION_SIZE *pResourceRegionSizes,
  4679. _In_opt_ ID3D12Heap *pHeap,
  4680. UINT NumRanges,
  4681. _In_reads_opt_(NumRanges) const D3D12_TILE_RANGE_FLAGS *pRangeFlags,
  4682. _In_reads_opt_(NumRanges) const UINT *pHeapRangeStartOffsets,
  4683. _In_reads_opt_(NumRanges) const UINT *pRangeTileCounts,
  4684. D3D12_TILE_MAPPING_FLAGS Flags);
  4685. void ( STDMETHODCALLTYPE *CopyTileMappings )(
  4686. ID3D12CommandQueue * This,
  4687. _In_ ID3D12Resource *pDstResource,
  4688. _In_ const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate,
  4689. _In_ ID3D12Resource *pSrcResource,
  4690. _In_ const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate,
  4691. _In_ const D3D12_TILE_REGION_SIZE *pRegionSize,
  4692. D3D12_TILE_MAPPING_FLAGS Flags);
  4693. void ( STDMETHODCALLTYPE *ExecuteCommandLists )(
  4694. ID3D12CommandQueue * This,
  4695. _In_ UINT NumCommandLists,
  4696. _In_reads_(NumCommandLists) ID3D12CommandList *const *ppCommandLists);
  4697. void ( STDMETHODCALLTYPE *SetMarker )(
  4698. ID3D12CommandQueue * This,
  4699. UINT Metadata,
  4700. _In_reads_bytes_opt_(Size) const void *pData,
  4701. UINT Size);
  4702. void ( STDMETHODCALLTYPE *BeginEvent )(
  4703. ID3D12CommandQueue * This,
  4704. UINT Metadata,
  4705. _In_reads_bytes_opt_(Size) const void *pData,
  4706. UINT Size);
  4707. void ( STDMETHODCALLTYPE *EndEvent )(
  4708. ID3D12CommandQueue * This);
  4709. HRESULT ( STDMETHODCALLTYPE *Signal )(
  4710. ID3D12CommandQueue * This,
  4711. ID3D12Fence *pFence,
  4712. UINT64 Value);
  4713. HRESULT ( STDMETHODCALLTYPE *Wait )(
  4714. ID3D12CommandQueue * This,
  4715. ID3D12Fence *pFence,
  4716. UINT64 Value);
  4717. HRESULT ( STDMETHODCALLTYPE *GetTimestampFrequency )(
  4718. ID3D12CommandQueue * This,
  4719. _Out_ UINT64 *pFrequency);
  4720. HRESULT ( STDMETHODCALLTYPE *GetClockCalibration )(
  4721. ID3D12CommandQueue * This,
  4722. _Out_ UINT64 *pGpuTimestamp,
  4723. _Out_ UINT64 *pCpuTimestamp);
  4724. D3D12_COMMAND_QUEUE_DESC ( STDMETHODCALLTYPE *GetDesc )(
  4725. ID3D12CommandQueue * This);
  4726. END_INTERFACE
  4727. } ID3D12CommandQueueVtbl;
  4728. interface ID3D12CommandQueue
  4729. {
  4730. CONST_VTBL struct ID3D12CommandQueueVtbl *lpVtbl;
  4731. };
  4732. #ifdef COBJMACROS
  4733. #define ID3D12CommandQueue_QueryInterface(This,riid,ppvObject) \
  4734. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  4735. #define ID3D12CommandQueue_AddRef(This) \
  4736. ( (This)->lpVtbl -> AddRef(This) )
  4737. #define ID3D12CommandQueue_Release(This) \
  4738. ( (This)->lpVtbl -> Release(This) )
  4739. #define ID3D12CommandQueue_GetPrivateData(This,guid,pDataSize,pData) \
  4740. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  4741. #define ID3D12CommandQueue_SetPrivateData(This,guid,DataSize,pData) \
  4742. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  4743. #define ID3D12CommandQueue_SetPrivateDataInterface(This,guid,pData) \
  4744. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  4745. #define ID3D12CommandQueue_SetName(This,Name) \
  4746. ( (This)->lpVtbl -> SetName(This,Name) )
  4747. #define ID3D12CommandQueue_GetDevice(This,riid,ppvDevice) \
  4748. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  4749. #define ID3D12CommandQueue_UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) \
  4750. ( (This)->lpVtbl -> UpdateTileMappings(This,pResource,NumResourceRegions,pResourceRegionStartCoordinates,pResourceRegionSizes,pHeap,NumRanges,pRangeFlags,pHeapRangeStartOffsets,pRangeTileCounts,Flags) )
  4751. #define ID3D12CommandQueue_CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) \
  4752. ( (This)->lpVtbl -> CopyTileMappings(This,pDstResource,pDstRegionStartCoordinate,pSrcResource,pSrcRegionStartCoordinate,pRegionSize,Flags) )
  4753. #define ID3D12CommandQueue_ExecuteCommandLists(This,NumCommandLists,ppCommandLists) \
  4754. ( (This)->lpVtbl -> ExecuteCommandLists(This,NumCommandLists,ppCommandLists) )
  4755. #define ID3D12CommandQueue_SetMarker(This,Metadata,pData,Size) \
  4756. ( (This)->lpVtbl -> SetMarker(This,Metadata,pData,Size) )
  4757. #define ID3D12CommandQueue_BeginEvent(This,Metadata,pData,Size) \
  4758. ( (This)->lpVtbl -> BeginEvent(This,Metadata,pData,Size) )
  4759. #define ID3D12CommandQueue_EndEvent(This) \
  4760. ( (This)->lpVtbl -> EndEvent(This) )
  4761. #define ID3D12CommandQueue_Signal(This,pFence,Value) \
  4762. ( (This)->lpVtbl -> Signal(This,pFence,Value) )
  4763. #define ID3D12CommandQueue_Wait(This,pFence,Value) \
  4764. ( (This)->lpVtbl -> Wait(This,pFence,Value) )
  4765. #define ID3D12CommandQueue_GetTimestampFrequency(This,pFrequency) \
  4766. ( (This)->lpVtbl -> GetTimestampFrequency(This,pFrequency) )
  4767. #define ID3D12CommandQueue_GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) \
  4768. ( (This)->lpVtbl -> GetClockCalibration(This,pGpuTimestamp,pCpuTimestamp) )
  4769. #define ID3D12CommandQueue_GetDesc(This) \
  4770. ( (This)->lpVtbl -> GetDesc(This) )
  4771. #endif /* COBJMACROS */
  4772. #endif /* C style interface */
  4773. #endif /* __ID3D12CommandQueue_INTERFACE_DEFINED__ */
  4774. /* interface __MIDL_itf_d3d12_0000_0018 */
  4775. /* [local] */
  4776. #ifdef __midl
  4777. #ifndef LUID_DEFINED
  4778. #define LUID_DEFINED 1
  4779. typedef struct __LUID
  4780. {
  4781. DWORD LowPart;
  4782. LONG HighPart;
  4783. } LUID;
  4784. typedef struct __LUID *PLUID;
  4785. #endif
  4786. #endif
  4787. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_c_ifspec;
  4788. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0018_v0_0_s_ifspec;
  4789. #ifndef __ID3D12Device_INTERFACE_DEFINED__
  4790. #define __ID3D12Device_INTERFACE_DEFINED__
  4791. /* interface ID3D12Device */
  4792. /* [unique][local][object][uuid] */
  4793. EXTERN_C const IID IID_ID3D12Device;
  4794. #if defined(__cplusplus) && !defined(CINTERFACE)
  4795. MIDL_INTERFACE("189819f1-1db6-4b57-be54-1821339b85f7")
  4796. ID3D12Device : public ID3D12Object
  4797. {
  4798. public:
  4799. virtual UINT STDMETHODCALLTYPE GetNodeCount( void) = 0;
  4800. virtual HRESULT STDMETHODCALLTYPE CreateCommandQueue(
  4801. _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
  4802. REFIID riid,
  4803. _COM_Outptr_ void **ppCommandQueue) = 0;
  4804. virtual HRESULT STDMETHODCALLTYPE CreateCommandAllocator(
  4805. _In_ D3D12_COMMAND_LIST_TYPE type,
  4806. REFIID riid,
  4807. _COM_Outptr_ void **ppCommandAllocator) = 0;
  4808. virtual HRESULT STDMETHODCALLTYPE CreateGraphicsPipelineState(
  4809. _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
  4810. REFIID riid,
  4811. _COM_Outptr_ void **ppPipelineState) = 0;
  4812. virtual HRESULT STDMETHODCALLTYPE CreateComputePipelineState(
  4813. _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
  4814. REFIID riid,
  4815. _COM_Outptr_ void **ppPipelineState) = 0;
  4816. virtual HRESULT STDMETHODCALLTYPE CreateCommandList(
  4817. _In_ UINT nodeMask,
  4818. _In_ D3D12_COMMAND_LIST_TYPE type,
  4819. _In_ ID3D12CommandAllocator *pCommandAllocator,
  4820. _In_opt_ ID3D12PipelineState *pInitialState,
  4821. REFIID riid,
  4822. _COM_Outptr_ void **ppCommandList) = 0;
  4823. virtual HRESULT STDMETHODCALLTYPE CheckFeatureSupport(
  4824. D3D12_FEATURE Feature,
  4825. _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
  4826. UINT FeatureSupportDataSize) = 0;
  4827. virtual HRESULT STDMETHODCALLTYPE CreateDescriptorHeap(
  4828. _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
  4829. REFIID riid,
  4830. _COM_Outptr_ void **ppvHeap) = 0;
  4831. virtual UINT STDMETHODCALLTYPE GetDescriptorHandleIncrementSize(
  4832. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType) = 0;
  4833. virtual HRESULT STDMETHODCALLTYPE CreateRootSignature(
  4834. _In_ UINT nodeMask,
  4835. _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
  4836. _In_ SIZE_T blobLengthInBytes,
  4837. REFIID riid,
  4838. _COM_Outptr_ void **ppvRootSignature) = 0;
  4839. virtual void STDMETHODCALLTYPE CreateConstantBufferView(
  4840. _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
  4841. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
  4842. virtual void STDMETHODCALLTYPE CreateShaderResourceView(
  4843. _In_opt_ ID3D12Resource *pResource,
  4844. _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
  4845. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
  4846. virtual void STDMETHODCALLTYPE CreateUnorderedAccessView(
  4847. _In_opt_ ID3D12Resource *pResource,
  4848. _In_opt_ ID3D12Resource *pCounterResource,
  4849. _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
  4850. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
  4851. virtual void STDMETHODCALLTYPE CreateRenderTargetView(
  4852. _In_opt_ ID3D12Resource *pResource,
  4853. _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
  4854. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
  4855. virtual void STDMETHODCALLTYPE CreateDepthStencilView(
  4856. _In_opt_ ID3D12Resource *pResource,
  4857. _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
  4858. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
  4859. virtual void STDMETHODCALLTYPE CreateSampler(
  4860. _In_ const D3D12_SAMPLER_DESC *pDesc,
  4861. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor) = 0;
  4862. virtual void STDMETHODCALLTYPE CopyDescriptors(
  4863. _In_ UINT NumDestDescriptorRanges,
  4864. _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
  4865. _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
  4866. _In_ UINT NumSrcDescriptorRanges,
  4867. _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
  4868. _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
  4869. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
  4870. virtual void STDMETHODCALLTYPE CopyDescriptorsSimple(
  4871. _In_ UINT NumDescriptors,
  4872. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
  4873. _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
  4874. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType) = 0;
  4875. virtual D3D12_RESOURCE_ALLOCATION_INFO STDMETHODCALLTYPE GetResourceAllocationInfo(
  4876. _In_ UINT visibleMask,
  4877. _In_ UINT numResourceDescs,
  4878. _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs) = 0;
  4879. virtual D3D12_HEAP_PROPERTIES STDMETHODCALLTYPE GetCustomHeapProperties(
  4880. _In_ UINT nodeMask,
  4881. D3D12_HEAP_TYPE heapType) = 0;
  4882. virtual HRESULT STDMETHODCALLTYPE CreateCommittedResource(
  4883. _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
  4884. D3D12_HEAP_FLAGS HeapFlags,
  4885. _In_ const D3D12_RESOURCE_DESC *pDesc,
  4886. D3D12_RESOURCE_STATES InitialResourceState,
  4887. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  4888. REFIID riidResource,
  4889. _COM_Outptr_opt_ void **ppvResource) = 0;
  4890. virtual HRESULT STDMETHODCALLTYPE CreateHeap(
  4891. _In_ const D3D12_HEAP_DESC *pDesc,
  4892. REFIID riid,
  4893. _COM_Outptr_opt_ void **ppvHeap) = 0;
  4894. virtual HRESULT STDMETHODCALLTYPE CreatePlacedResource(
  4895. _In_ ID3D12Heap *pHeap,
  4896. UINT64 HeapOffset,
  4897. _In_ const D3D12_RESOURCE_DESC *pDesc,
  4898. D3D12_RESOURCE_STATES InitialState,
  4899. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  4900. REFIID riid,
  4901. _COM_Outptr_opt_ void **ppvResource) = 0;
  4902. virtual HRESULT STDMETHODCALLTYPE CreateReservedResource(
  4903. _In_ const D3D12_RESOURCE_DESC *pDesc,
  4904. D3D12_RESOURCE_STATES InitialState,
  4905. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  4906. REFIID riid,
  4907. _COM_Outptr_opt_ void **ppvResource) = 0;
  4908. virtual HRESULT STDMETHODCALLTYPE CreateSharedHandle(
  4909. _In_ ID3D12DeviceChild *pObject,
  4910. _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
  4911. DWORD Access,
  4912. _In_opt_ LPCWSTR Name,
  4913. _Out_ HANDLE *pHandle) = 0;
  4914. virtual HRESULT STDMETHODCALLTYPE OpenSharedHandle(
  4915. _In_ HANDLE NTHandle,
  4916. REFIID riid,
  4917. _COM_Outptr_opt_ void **ppvObj) = 0;
  4918. virtual HRESULT STDMETHODCALLTYPE OpenSharedHandleByName(
  4919. _In_ LPCWSTR Name,
  4920. DWORD Access,
  4921. /* [annotation][out] */
  4922. _Out_ HANDLE *pNTHandle) = 0;
  4923. virtual HRESULT STDMETHODCALLTYPE MakeResident(
  4924. UINT NumObjects,
  4925. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
  4926. virtual HRESULT STDMETHODCALLTYPE Evict(
  4927. UINT NumObjects,
  4928. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects) = 0;
  4929. virtual HRESULT STDMETHODCALLTYPE CreateFence(
  4930. UINT64 InitialValue,
  4931. D3D12_FENCE_FLAGS Flags,
  4932. REFIID riid,
  4933. _COM_Outptr_ void **ppFence) = 0;
  4934. virtual HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason( void) = 0;
  4935. virtual void STDMETHODCALLTYPE GetCopyableFootprints(
  4936. _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
  4937. _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
  4938. _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
  4939. UINT64 BaseOffset,
  4940. _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
  4941. _Out_writes_opt_(NumSubresources) UINT *pNumRows,
  4942. _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
  4943. _Out_opt_ UINT64 *pTotalBytes) = 0;
  4944. virtual HRESULT STDMETHODCALLTYPE CreateQueryHeap(
  4945. _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
  4946. REFIID riid,
  4947. _COM_Outptr_opt_ void **ppvHeap) = 0;
  4948. virtual HRESULT STDMETHODCALLTYPE SetStablePowerState(
  4949. BOOL Enable) = 0;
  4950. virtual HRESULT STDMETHODCALLTYPE CreateCommandSignature(
  4951. _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
  4952. _In_opt_ ID3D12RootSignature *pRootSignature,
  4953. REFIID riid,
  4954. _COM_Outptr_opt_ void **ppvCommandSignature) = 0;
  4955. virtual void STDMETHODCALLTYPE GetResourceTiling(
  4956. _In_ ID3D12Resource *pTiledResource,
  4957. _Out_opt_ UINT *pNumTilesForEntireResource,
  4958. _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
  4959. _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
  4960. _Inout_opt_ UINT *pNumSubresourceTilings,
  4961. _In_ UINT FirstSubresourceTilingToGet,
  4962. _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips) = 0;
  4963. virtual LUID STDMETHODCALLTYPE GetAdapterLuid( void) = 0;
  4964. };
  4965. #else /* C style interface */
  4966. typedef struct ID3D12DeviceVtbl
  4967. {
  4968. BEGIN_INTERFACE
  4969. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  4970. ID3D12Device * This,
  4971. REFIID riid,
  4972. _COM_Outptr_ void **ppvObject);
  4973. ULONG ( STDMETHODCALLTYPE *AddRef )(
  4974. ID3D12Device * This);
  4975. ULONG ( STDMETHODCALLTYPE *Release )(
  4976. ID3D12Device * This);
  4977. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  4978. ID3D12Device * This,
  4979. _In_ REFGUID guid,
  4980. _Inout_ UINT *pDataSize,
  4981. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  4982. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  4983. ID3D12Device * This,
  4984. _In_ REFGUID guid,
  4985. _In_ UINT DataSize,
  4986. _In_reads_bytes_opt_( DataSize ) const void *pData);
  4987. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  4988. ID3D12Device * This,
  4989. _In_ REFGUID guid,
  4990. _In_opt_ const IUnknown *pData);
  4991. HRESULT ( STDMETHODCALLTYPE *SetName )(
  4992. ID3D12Device * This,
  4993. _In_z_ LPCWSTR Name);
  4994. UINT ( STDMETHODCALLTYPE *GetNodeCount )(
  4995. ID3D12Device * This);
  4996. HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
  4997. ID3D12Device * This,
  4998. _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
  4999. REFIID riid,
  5000. _COM_Outptr_ void **ppCommandQueue);
  5001. HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
  5002. ID3D12Device * This,
  5003. _In_ D3D12_COMMAND_LIST_TYPE type,
  5004. REFIID riid,
  5005. _COM_Outptr_ void **ppCommandAllocator);
  5006. HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
  5007. ID3D12Device * This,
  5008. _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
  5009. REFIID riid,
  5010. _COM_Outptr_ void **ppPipelineState);
  5011. HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
  5012. ID3D12Device * This,
  5013. _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
  5014. REFIID riid,
  5015. _COM_Outptr_ void **ppPipelineState);
  5016. HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
  5017. ID3D12Device * This,
  5018. _In_ UINT nodeMask,
  5019. _In_ D3D12_COMMAND_LIST_TYPE type,
  5020. _In_ ID3D12CommandAllocator *pCommandAllocator,
  5021. _In_opt_ ID3D12PipelineState *pInitialState,
  5022. REFIID riid,
  5023. _COM_Outptr_ void **ppCommandList);
  5024. HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
  5025. ID3D12Device * This,
  5026. D3D12_FEATURE Feature,
  5027. _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
  5028. UINT FeatureSupportDataSize);
  5029. HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
  5030. ID3D12Device * This,
  5031. _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
  5032. REFIID riid,
  5033. _COM_Outptr_ void **ppvHeap);
  5034. UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
  5035. ID3D12Device * This,
  5036. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
  5037. HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
  5038. ID3D12Device * This,
  5039. _In_ UINT nodeMask,
  5040. _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
  5041. _In_ SIZE_T blobLengthInBytes,
  5042. REFIID riid,
  5043. _COM_Outptr_ void **ppvRootSignature);
  5044. void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
  5045. ID3D12Device * This,
  5046. _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
  5047. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5048. void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
  5049. ID3D12Device * This,
  5050. _In_opt_ ID3D12Resource *pResource,
  5051. _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
  5052. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5053. void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
  5054. ID3D12Device * This,
  5055. _In_opt_ ID3D12Resource *pResource,
  5056. _In_opt_ ID3D12Resource *pCounterResource,
  5057. _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
  5058. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5059. void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
  5060. ID3D12Device * This,
  5061. _In_opt_ ID3D12Resource *pResource,
  5062. _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
  5063. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5064. void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
  5065. ID3D12Device * This,
  5066. _In_opt_ ID3D12Resource *pResource,
  5067. _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
  5068. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5069. void ( STDMETHODCALLTYPE *CreateSampler )(
  5070. ID3D12Device * This,
  5071. _In_ const D3D12_SAMPLER_DESC *pDesc,
  5072. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5073. void ( STDMETHODCALLTYPE *CopyDescriptors )(
  5074. ID3D12Device * This,
  5075. _In_ UINT NumDestDescriptorRanges,
  5076. _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
  5077. _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
  5078. _In_ UINT NumSrcDescriptorRanges,
  5079. _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
  5080. _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
  5081. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  5082. void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
  5083. ID3D12Device * This,
  5084. _In_ UINT NumDescriptors,
  5085. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
  5086. _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
  5087. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  5088. D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
  5089. ID3D12Device * This,
  5090. _In_ UINT visibleMask,
  5091. _In_ UINT numResourceDescs,
  5092. _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
  5093. D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
  5094. ID3D12Device * This,
  5095. _In_ UINT nodeMask,
  5096. D3D12_HEAP_TYPE heapType);
  5097. HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
  5098. ID3D12Device * This,
  5099. _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
  5100. D3D12_HEAP_FLAGS HeapFlags,
  5101. _In_ const D3D12_RESOURCE_DESC *pDesc,
  5102. D3D12_RESOURCE_STATES InitialResourceState,
  5103. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  5104. REFIID riidResource,
  5105. _COM_Outptr_opt_ void **ppvResource);
  5106. HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
  5107. ID3D12Device * This,
  5108. _In_ const D3D12_HEAP_DESC *pDesc,
  5109. REFIID riid,
  5110. _COM_Outptr_opt_ void **ppvHeap);
  5111. HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
  5112. ID3D12Device * This,
  5113. _In_ ID3D12Heap *pHeap,
  5114. UINT64 HeapOffset,
  5115. _In_ const D3D12_RESOURCE_DESC *pDesc,
  5116. D3D12_RESOURCE_STATES InitialState,
  5117. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  5118. REFIID riid,
  5119. _COM_Outptr_opt_ void **ppvResource);
  5120. HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
  5121. ID3D12Device * This,
  5122. _In_ const D3D12_RESOURCE_DESC *pDesc,
  5123. D3D12_RESOURCE_STATES InitialState,
  5124. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  5125. REFIID riid,
  5126. _COM_Outptr_opt_ void **ppvResource);
  5127. HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
  5128. ID3D12Device * This,
  5129. _In_ ID3D12DeviceChild *pObject,
  5130. _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
  5131. DWORD Access,
  5132. _In_opt_ LPCWSTR Name,
  5133. _Out_ HANDLE *pHandle);
  5134. HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
  5135. ID3D12Device * This,
  5136. _In_ HANDLE NTHandle,
  5137. REFIID riid,
  5138. _COM_Outptr_opt_ void **ppvObj);
  5139. HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
  5140. ID3D12Device * This,
  5141. _In_ LPCWSTR Name,
  5142. DWORD Access,
  5143. /* [annotation][out] */
  5144. _Out_ HANDLE *pNTHandle);
  5145. HRESULT ( STDMETHODCALLTYPE *MakeResident )(
  5146. ID3D12Device * This,
  5147. UINT NumObjects,
  5148. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
  5149. HRESULT ( STDMETHODCALLTYPE *Evict )(
  5150. ID3D12Device * This,
  5151. UINT NumObjects,
  5152. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
  5153. HRESULT ( STDMETHODCALLTYPE *CreateFence )(
  5154. ID3D12Device * This,
  5155. UINT64 InitialValue,
  5156. D3D12_FENCE_FLAGS Flags,
  5157. REFIID riid,
  5158. _COM_Outptr_ void **ppFence);
  5159. HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
  5160. ID3D12Device * This);
  5161. void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
  5162. ID3D12Device * This,
  5163. _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
  5164. _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
  5165. _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
  5166. UINT64 BaseOffset,
  5167. _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
  5168. _Out_writes_opt_(NumSubresources) UINT *pNumRows,
  5169. _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
  5170. _Out_opt_ UINT64 *pTotalBytes);
  5171. HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
  5172. ID3D12Device * This,
  5173. _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
  5174. REFIID riid,
  5175. _COM_Outptr_opt_ void **ppvHeap);
  5176. HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
  5177. ID3D12Device * This,
  5178. BOOL Enable);
  5179. HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
  5180. ID3D12Device * This,
  5181. _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
  5182. _In_opt_ ID3D12RootSignature *pRootSignature,
  5183. REFIID riid,
  5184. _COM_Outptr_opt_ void **ppvCommandSignature);
  5185. void ( STDMETHODCALLTYPE *GetResourceTiling )(
  5186. ID3D12Device * This,
  5187. _In_ ID3D12Resource *pTiledResource,
  5188. _Out_opt_ UINT *pNumTilesForEntireResource,
  5189. _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
  5190. _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
  5191. _Inout_opt_ UINT *pNumSubresourceTilings,
  5192. _In_ UINT FirstSubresourceTilingToGet,
  5193. _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
  5194. LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
  5195. ID3D12Device * This);
  5196. END_INTERFACE
  5197. } ID3D12DeviceVtbl;
  5198. interface ID3D12Device
  5199. {
  5200. CONST_VTBL struct ID3D12DeviceVtbl *lpVtbl;
  5201. };
  5202. #ifdef COBJMACROS
  5203. #define ID3D12Device_QueryInterface(This,riid,ppvObject) \
  5204. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5205. #define ID3D12Device_AddRef(This) \
  5206. ( (This)->lpVtbl -> AddRef(This) )
  5207. #define ID3D12Device_Release(This) \
  5208. ( (This)->lpVtbl -> Release(This) )
  5209. #define ID3D12Device_GetPrivateData(This,guid,pDataSize,pData) \
  5210. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  5211. #define ID3D12Device_SetPrivateData(This,guid,DataSize,pData) \
  5212. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  5213. #define ID3D12Device_SetPrivateDataInterface(This,guid,pData) \
  5214. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  5215. #define ID3D12Device_SetName(This,Name) \
  5216. ( (This)->lpVtbl -> SetName(This,Name) )
  5217. #define ID3D12Device_GetNodeCount(This) \
  5218. ( (This)->lpVtbl -> GetNodeCount(This) )
  5219. #define ID3D12Device_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
  5220. ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
  5221. #define ID3D12Device_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
  5222. ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
  5223. #define ID3D12Device_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
  5224. ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
  5225. #define ID3D12Device_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
  5226. ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
  5227. #define ID3D12Device_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
  5228. ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
  5229. #define ID3D12Device_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
  5230. ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
  5231. #define ID3D12Device_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
  5232. ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
  5233. #define ID3D12Device_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
  5234. ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
  5235. #define ID3D12Device_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
  5236. ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
  5237. #define ID3D12Device_CreateConstantBufferView(This,pDesc,DestDescriptor) \
  5238. ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
  5239. #define ID3D12Device_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
  5240. ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
  5241. #define ID3D12Device_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
  5242. ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
  5243. #define ID3D12Device_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
  5244. ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
  5245. #define ID3D12Device_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
  5246. ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
  5247. #define ID3D12Device_CreateSampler(This,pDesc,DestDescriptor) \
  5248. ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
  5249. #define ID3D12Device_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
  5250. ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
  5251. #define ID3D12Device_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
  5252. ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
  5253. #define ID3D12Device_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
  5254. ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
  5255. #define ID3D12Device_GetCustomHeapProperties(This,nodeMask,heapType) \
  5256. ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
  5257. #define ID3D12Device_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
  5258. ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
  5259. #define ID3D12Device_CreateHeap(This,pDesc,riid,ppvHeap) \
  5260. ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
  5261. #define ID3D12Device_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
  5262. ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
  5263. #define ID3D12Device_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
  5264. ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
  5265. #define ID3D12Device_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
  5266. ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
  5267. #define ID3D12Device_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
  5268. ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
  5269. #define ID3D12Device_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
  5270. ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
  5271. #define ID3D12Device_MakeResident(This,NumObjects,ppObjects) \
  5272. ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
  5273. #define ID3D12Device_Evict(This,NumObjects,ppObjects) \
  5274. ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
  5275. #define ID3D12Device_CreateFence(This,InitialValue,Flags,riid,ppFence) \
  5276. ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
  5277. #define ID3D12Device_GetDeviceRemovedReason(This) \
  5278. ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
  5279. #define ID3D12Device_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
  5280. ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
  5281. #define ID3D12Device_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
  5282. ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
  5283. #define ID3D12Device_SetStablePowerState(This,Enable) \
  5284. ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
  5285. #define ID3D12Device_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
  5286. ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
  5287. #define ID3D12Device_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
  5288. ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
  5289. #define ID3D12Device_GetAdapterLuid(This) \
  5290. ( (This)->lpVtbl -> GetAdapterLuid(This) )
  5291. #endif /* COBJMACROS */
  5292. #endif /* C style interface */
  5293. #endif /* __ID3D12Device_INTERFACE_DEFINED__ */
  5294. #ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
  5295. #define __ID3D12PipelineLibrary_INTERFACE_DEFINED__
  5296. /* interface ID3D12PipelineLibrary */
  5297. /* [unique][local][object][uuid] */
  5298. EXTERN_C const IID IID_ID3D12PipelineLibrary;
  5299. #if defined(__cplusplus) && !defined(CINTERFACE)
  5300. MIDL_INTERFACE("c64226a8-9201-46af-b4cc-53fb9ff7414f")
  5301. ID3D12PipelineLibrary : public ID3D12DeviceChild
  5302. {
  5303. public:
  5304. virtual HRESULT STDMETHODCALLTYPE StorePipeline(
  5305. _In_opt_ LPCWSTR pName,
  5306. _In_ ID3D12PipelineState *pPipeline) = 0;
  5307. virtual HRESULT STDMETHODCALLTYPE LoadGraphicsPipeline(
  5308. _In_ LPCWSTR pName,
  5309. _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
  5310. REFIID riid,
  5311. _COM_Outptr_ void **ppPipelineState) = 0;
  5312. virtual HRESULT STDMETHODCALLTYPE LoadComputePipeline(
  5313. _In_ LPCWSTR pName,
  5314. _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
  5315. REFIID riid,
  5316. _COM_Outptr_ void **ppPipelineState) = 0;
  5317. virtual SIZE_T STDMETHODCALLTYPE GetSerializedSize( void) = 0;
  5318. virtual HRESULT STDMETHODCALLTYPE Serialize(
  5319. _Out_writes_(DataSizeInBytes) void *pData,
  5320. SIZE_T DataSizeInBytes) = 0;
  5321. };
  5322. #else /* C style interface */
  5323. typedef struct ID3D12PipelineLibraryVtbl
  5324. {
  5325. BEGIN_INTERFACE
  5326. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5327. ID3D12PipelineLibrary * This,
  5328. REFIID riid,
  5329. _COM_Outptr_ void **ppvObject);
  5330. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5331. ID3D12PipelineLibrary * This);
  5332. ULONG ( STDMETHODCALLTYPE *Release )(
  5333. ID3D12PipelineLibrary * This);
  5334. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  5335. ID3D12PipelineLibrary * This,
  5336. _In_ REFGUID guid,
  5337. _Inout_ UINT *pDataSize,
  5338. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  5339. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  5340. ID3D12PipelineLibrary * This,
  5341. _In_ REFGUID guid,
  5342. _In_ UINT DataSize,
  5343. _In_reads_bytes_opt_( DataSize ) const void *pData);
  5344. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  5345. ID3D12PipelineLibrary * This,
  5346. _In_ REFGUID guid,
  5347. _In_opt_ const IUnknown *pData);
  5348. HRESULT ( STDMETHODCALLTYPE *SetName )(
  5349. ID3D12PipelineLibrary * This,
  5350. _In_z_ LPCWSTR Name);
  5351. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  5352. ID3D12PipelineLibrary * This,
  5353. REFIID riid,
  5354. _COM_Outptr_opt_ void **ppvDevice);
  5355. HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
  5356. ID3D12PipelineLibrary * This,
  5357. _In_opt_ LPCWSTR pName,
  5358. _In_ ID3D12PipelineState *pPipeline);
  5359. HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
  5360. ID3D12PipelineLibrary * This,
  5361. _In_ LPCWSTR pName,
  5362. _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
  5363. REFIID riid,
  5364. _COM_Outptr_ void **ppPipelineState);
  5365. HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
  5366. ID3D12PipelineLibrary * This,
  5367. _In_ LPCWSTR pName,
  5368. _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
  5369. REFIID riid,
  5370. _COM_Outptr_ void **ppPipelineState);
  5371. SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
  5372. ID3D12PipelineLibrary * This);
  5373. HRESULT ( STDMETHODCALLTYPE *Serialize )(
  5374. ID3D12PipelineLibrary * This,
  5375. _Out_writes_(DataSizeInBytes) void *pData,
  5376. SIZE_T DataSizeInBytes);
  5377. END_INTERFACE
  5378. } ID3D12PipelineLibraryVtbl;
  5379. interface ID3D12PipelineLibrary
  5380. {
  5381. CONST_VTBL struct ID3D12PipelineLibraryVtbl *lpVtbl;
  5382. };
  5383. #ifdef COBJMACROS
  5384. #define ID3D12PipelineLibrary_QueryInterface(This,riid,ppvObject) \
  5385. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5386. #define ID3D12PipelineLibrary_AddRef(This) \
  5387. ( (This)->lpVtbl -> AddRef(This) )
  5388. #define ID3D12PipelineLibrary_Release(This) \
  5389. ( (This)->lpVtbl -> Release(This) )
  5390. #define ID3D12PipelineLibrary_GetPrivateData(This,guid,pDataSize,pData) \
  5391. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  5392. #define ID3D12PipelineLibrary_SetPrivateData(This,guid,DataSize,pData) \
  5393. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  5394. #define ID3D12PipelineLibrary_SetPrivateDataInterface(This,guid,pData) \
  5395. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  5396. #define ID3D12PipelineLibrary_SetName(This,Name) \
  5397. ( (This)->lpVtbl -> SetName(This,Name) )
  5398. #define ID3D12PipelineLibrary_GetDevice(This,riid,ppvDevice) \
  5399. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  5400. #define ID3D12PipelineLibrary_StorePipeline(This,pName,pPipeline) \
  5401. ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
  5402. #define ID3D12PipelineLibrary_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
  5403. ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
  5404. #define ID3D12PipelineLibrary_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
  5405. ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
  5406. #define ID3D12PipelineLibrary_GetSerializedSize(This) \
  5407. ( (This)->lpVtbl -> GetSerializedSize(This) )
  5408. #define ID3D12PipelineLibrary_Serialize(This,pData,DataSizeInBytes) \
  5409. ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
  5410. #endif /* COBJMACROS */
  5411. #endif /* C style interface */
  5412. #endif /* __ID3D12PipelineLibrary_INTERFACE_DEFINED__ */
  5413. #ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
  5414. #define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
  5415. /* interface ID3D12PipelineLibrary1 */
  5416. /* [unique][local][object][uuid] */
  5417. EXTERN_C const IID IID_ID3D12PipelineLibrary1;
  5418. #if defined(__cplusplus) && !defined(CINTERFACE)
  5419. MIDL_INTERFACE("80eabf42-2568-4e5e-bd82-c37f86961dc3")
  5420. ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary
  5421. {
  5422. public:
  5423. virtual HRESULT STDMETHODCALLTYPE LoadPipeline(
  5424. _In_ LPCWSTR pName,
  5425. _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
  5426. REFIID riid,
  5427. _COM_Outptr_ void **ppPipelineState) = 0;
  5428. };
  5429. #else /* C style interface */
  5430. typedef struct ID3D12PipelineLibrary1Vtbl
  5431. {
  5432. BEGIN_INTERFACE
  5433. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5434. ID3D12PipelineLibrary1 * This,
  5435. REFIID riid,
  5436. _COM_Outptr_ void **ppvObject);
  5437. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5438. ID3D12PipelineLibrary1 * This);
  5439. ULONG ( STDMETHODCALLTYPE *Release )(
  5440. ID3D12PipelineLibrary1 * This);
  5441. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  5442. ID3D12PipelineLibrary1 * This,
  5443. _In_ REFGUID guid,
  5444. _Inout_ UINT *pDataSize,
  5445. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  5446. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  5447. ID3D12PipelineLibrary1 * This,
  5448. _In_ REFGUID guid,
  5449. _In_ UINT DataSize,
  5450. _In_reads_bytes_opt_( DataSize ) const void *pData);
  5451. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  5452. ID3D12PipelineLibrary1 * This,
  5453. _In_ REFGUID guid,
  5454. _In_opt_ const IUnknown *pData);
  5455. HRESULT ( STDMETHODCALLTYPE *SetName )(
  5456. ID3D12PipelineLibrary1 * This,
  5457. _In_z_ LPCWSTR Name);
  5458. HRESULT ( STDMETHODCALLTYPE *GetDevice )(
  5459. ID3D12PipelineLibrary1 * This,
  5460. REFIID riid,
  5461. _COM_Outptr_opt_ void **ppvDevice);
  5462. HRESULT ( STDMETHODCALLTYPE *StorePipeline )(
  5463. ID3D12PipelineLibrary1 * This,
  5464. _In_opt_ LPCWSTR pName,
  5465. _In_ ID3D12PipelineState *pPipeline);
  5466. HRESULT ( STDMETHODCALLTYPE *LoadGraphicsPipeline )(
  5467. ID3D12PipelineLibrary1 * This,
  5468. _In_ LPCWSTR pName,
  5469. _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
  5470. REFIID riid,
  5471. _COM_Outptr_ void **ppPipelineState);
  5472. HRESULT ( STDMETHODCALLTYPE *LoadComputePipeline )(
  5473. ID3D12PipelineLibrary1 * This,
  5474. _In_ LPCWSTR pName,
  5475. _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
  5476. REFIID riid,
  5477. _COM_Outptr_ void **ppPipelineState);
  5478. SIZE_T ( STDMETHODCALLTYPE *GetSerializedSize )(
  5479. ID3D12PipelineLibrary1 * This);
  5480. HRESULT ( STDMETHODCALLTYPE *Serialize )(
  5481. ID3D12PipelineLibrary1 * This,
  5482. _Out_writes_(DataSizeInBytes) void *pData,
  5483. SIZE_T DataSizeInBytes);
  5484. HRESULT ( STDMETHODCALLTYPE *LoadPipeline )(
  5485. ID3D12PipelineLibrary1 * This,
  5486. _In_ LPCWSTR pName,
  5487. _In_ const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
  5488. REFIID riid,
  5489. _COM_Outptr_ void **ppPipelineState);
  5490. END_INTERFACE
  5491. } ID3D12PipelineLibrary1Vtbl;
  5492. interface ID3D12PipelineLibrary1
  5493. {
  5494. CONST_VTBL struct ID3D12PipelineLibrary1Vtbl *lpVtbl;
  5495. };
  5496. #ifdef COBJMACROS
  5497. #define ID3D12PipelineLibrary1_QueryInterface(This,riid,ppvObject) \
  5498. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5499. #define ID3D12PipelineLibrary1_AddRef(This) \
  5500. ( (This)->lpVtbl -> AddRef(This) )
  5501. #define ID3D12PipelineLibrary1_Release(This) \
  5502. ( (This)->lpVtbl -> Release(This) )
  5503. #define ID3D12PipelineLibrary1_GetPrivateData(This,guid,pDataSize,pData) \
  5504. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  5505. #define ID3D12PipelineLibrary1_SetPrivateData(This,guid,DataSize,pData) \
  5506. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  5507. #define ID3D12PipelineLibrary1_SetPrivateDataInterface(This,guid,pData) \
  5508. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  5509. #define ID3D12PipelineLibrary1_SetName(This,Name) \
  5510. ( (This)->lpVtbl -> SetName(This,Name) )
  5511. #define ID3D12PipelineLibrary1_GetDevice(This,riid,ppvDevice) \
  5512. ( (This)->lpVtbl -> GetDevice(This,riid,ppvDevice) )
  5513. #define ID3D12PipelineLibrary1_StorePipeline(This,pName,pPipeline) \
  5514. ( (This)->lpVtbl -> StorePipeline(This,pName,pPipeline) )
  5515. #define ID3D12PipelineLibrary1_LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) \
  5516. ( (This)->lpVtbl -> LoadGraphicsPipeline(This,pName,pDesc,riid,ppPipelineState) )
  5517. #define ID3D12PipelineLibrary1_LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) \
  5518. ( (This)->lpVtbl -> LoadComputePipeline(This,pName,pDesc,riid,ppPipelineState) )
  5519. #define ID3D12PipelineLibrary1_GetSerializedSize(This) \
  5520. ( (This)->lpVtbl -> GetSerializedSize(This) )
  5521. #define ID3D12PipelineLibrary1_Serialize(This,pData,DataSizeInBytes) \
  5522. ( (This)->lpVtbl -> Serialize(This,pData,DataSizeInBytes) )
  5523. #define ID3D12PipelineLibrary1_LoadPipeline(This,pName,pDesc,riid,ppPipelineState) \
  5524. ( (This)->lpVtbl -> LoadPipeline(This,pName,pDesc,riid,ppPipelineState) )
  5525. #endif /* COBJMACROS */
  5526. #endif /* C style interface */
  5527. #endif /* __ID3D12PipelineLibrary1_INTERFACE_DEFINED__ */
  5528. /* interface __MIDL_itf_d3d12_0000_0021 */
  5529. /* [local] */
  5530. typedef
  5531. enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
  5532. {
  5533. D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
  5534. D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
  5535. D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0
  5536. } D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
  5537. DEFINE_ENUM_FLAG_OPERATORS( D3D12_MULTIPLE_FENCE_WAIT_FLAGS );
  5538. typedef
  5539. enum D3D12_RESIDENCY_PRIORITY
  5540. {
  5541. D3D12_RESIDENCY_PRIORITY_MINIMUM = 0x28000000,
  5542. D3D12_RESIDENCY_PRIORITY_LOW = 0x50000000,
  5543. D3D12_RESIDENCY_PRIORITY_NORMAL = 0x78000000,
  5544. D3D12_RESIDENCY_PRIORITY_HIGH = 0xa0010000,
  5545. D3D12_RESIDENCY_PRIORITY_MAXIMUM = 0xc8000000
  5546. } D3D12_RESIDENCY_PRIORITY;
  5547. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_c_ifspec;
  5548. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0021_v0_0_s_ifspec;
  5549. #ifndef __ID3D12Device1_INTERFACE_DEFINED__
  5550. #define __ID3D12Device1_INTERFACE_DEFINED__
  5551. /* interface ID3D12Device1 */
  5552. /* [unique][local][object][uuid] */
  5553. EXTERN_C const IID IID_ID3D12Device1;
  5554. #if defined(__cplusplus) && !defined(CINTERFACE)
  5555. MIDL_INTERFACE("77acce80-638e-4e65-8895-c1f23386863e")
  5556. ID3D12Device1 : public ID3D12Device
  5557. {
  5558. public:
  5559. virtual HRESULT STDMETHODCALLTYPE CreatePipelineLibrary(
  5560. _In_reads_(BlobLength) const void *pLibraryBlob,
  5561. SIZE_T BlobLength,
  5562. REFIID riid,
  5563. _COM_Outptr_ void **ppPipelineLibrary) = 0;
  5564. virtual HRESULT STDMETHODCALLTYPE SetEventOnMultipleFenceCompletion(
  5565. _In_reads_(NumFences) ID3D12Fence *const *ppFences,
  5566. _In_reads_(NumFences) const UINT64 *pFenceValues,
  5567. UINT NumFences,
  5568. D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
  5569. HANDLE hEvent) = 0;
  5570. virtual HRESULT STDMETHODCALLTYPE SetResidencyPriority(
  5571. UINT NumObjects,
  5572. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
  5573. _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities) = 0;
  5574. };
  5575. #else /* C style interface */
  5576. typedef struct ID3D12Device1Vtbl
  5577. {
  5578. BEGIN_INTERFACE
  5579. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5580. ID3D12Device1 * This,
  5581. REFIID riid,
  5582. _COM_Outptr_ void **ppvObject);
  5583. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5584. ID3D12Device1 * This);
  5585. ULONG ( STDMETHODCALLTYPE *Release )(
  5586. ID3D12Device1 * This);
  5587. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  5588. ID3D12Device1 * This,
  5589. _In_ REFGUID guid,
  5590. _Inout_ UINT *pDataSize,
  5591. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  5592. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  5593. ID3D12Device1 * This,
  5594. _In_ REFGUID guid,
  5595. _In_ UINT DataSize,
  5596. _In_reads_bytes_opt_( DataSize ) const void *pData);
  5597. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  5598. ID3D12Device1 * This,
  5599. _In_ REFGUID guid,
  5600. _In_opt_ const IUnknown *pData);
  5601. HRESULT ( STDMETHODCALLTYPE *SetName )(
  5602. ID3D12Device1 * This,
  5603. _In_z_ LPCWSTR Name);
  5604. UINT ( STDMETHODCALLTYPE *GetNodeCount )(
  5605. ID3D12Device1 * This);
  5606. HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
  5607. ID3D12Device1 * This,
  5608. _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
  5609. REFIID riid,
  5610. _COM_Outptr_ void **ppCommandQueue);
  5611. HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
  5612. ID3D12Device1 * This,
  5613. _In_ D3D12_COMMAND_LIST_TYPE type,
  5614. REFIID riid,
  5615. _COM_Outptr_ void **ppCommandAllocator);
  5616. HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
  5617. ID3D12Device1 * This,
  5618. _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
  5619. REFIID riid,
  5620. _COM_Outptr_ void **ppPipelineState);
  5621. HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
  5622. ID3D12Device1 * This,
  5623. _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
  5624. REFIID riid,
  5625. _COM_Outptr_ void **ppPipelineState);
  5626. HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
  5627. ID3D12Device1 * This,
  5628. _In_ UINT nodeMask,
  5629. _In_ D3D12_COMMAND_LIST_TYPE type,
  5630. _In_ ID3D12CommandAllocator *pCommandAllocator,
  5631. _In_opt_ ID3D12PipelineState *pInitialState,
  5632. REFIID riid,
  5633. _COM_Outptr_ void **ppCommandList);
  5634. HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
  5635. ID3D12Device1 * This,
  5636. D3D12_FEATURE Feature,
  5637. _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
  5638. UINT FeatureSupportDataSize);
  5639. HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
  5640. ID3D12Device1 * This,
  5641. _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
  5642. REFIID riid,
  5643. _COM_Outptr_ void **ppvHeap);
  5644. UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
  5645. ID3D12Device1 * This,
  5646. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
  5647. HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
  5648. ID3D12Device1 * This,
  5649. _In_ UINT nodeMask,
  5650. _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
  5651. _In_ SIZE_T blobLengthInBytes,
  5652. REFIID riid,
  5653. _COM_Outptr_ void **ppvRootSignature);
  5654. void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
  5655. ID3D12Device1 * This,
  5656. _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
  5657. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5658. void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
  5659. ID3D12Device1 * This,
  5660. _In_opt_ ID3D12Resource *pResource,
  5661. _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
  5662. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5663. void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
  5664. ID3D12Device1 * This,
  5665. _In_opt_ ID3D12Resource *pResource,
  5666. _In_opt_ ID3D12Resource *pCounterResource,
  5667. _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
  5668. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5669. void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
  5670. ID3D12Device1 * This,
  5671. _In_opt_ ID3D12Resource *pResource,
  5672. _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
  5673. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5674. void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
  5675. ID3D12Device1 * This,
  5676. _In_opt_ ID3D12Resource *pResource,
  5677. _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
  5678. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5679. void ( STDMETHODCALLTYPE *CreateSampler )(
  5680. ID3D12Device1 * This,
  5681. _In_ const D3D12_SAMPLER_DESC *pDesc,
  5682. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  5683. void ( STDMETHODCALLTYPE *CopyDescriptors )(
  5684. ID3D12Device1 * This,
  5685. _In_ UINT NumDestDescriptorRanges,
  5686. _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
  5687. _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
  5688. _In_ UINT NumSrcDescriptorRanges,
  5689. _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
  5690. _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
  5691. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  5692. void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
  5693. ID3D12Device1 * This,
  5694. _In_ UINT NumDescriptors,
  5695. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
  5696. _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
  5697. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  5698. D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
  5699. ID3D12Device1 * This,
  5700. _In_ UINT visibleMask,
  5701. _In_ UINT numResourceDescs,
  5702. _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
  5703. D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
  5704. ID3D12Device1 * This,
  5705. _In_ UINT nodeMask,
  5706. D3D12_HEAP_TYPE heapType);
  5707. HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
  5708. ID3D12Device1 * This,
  5709. _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
  5710. D3D12_HEAP_FLAGS HeapFlags,
  5711. _In_ const D3D12_RESOURCE_DESC *pDesc,
  5712. D3D12_RESOURCE_STATES InitialResourceState,
  5713. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  5714. REFIID riidResource,
  5715. _COM_Outptr_opt_ void **ppvResource);
  5716. HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
  5717. ID3D12Device1 * This,
  5718. _In_ const D3D12_HEAP_DESC *pDesc,
  5719. REFIID riid,
  5720. _COM_Outptr_opt_ void **ppvHeap);
  5721. HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
  5722. ID3D12Device1 * This,
  5723. _In_ ID3D12Heap *pHeap,
  5724. UINT64 HeapOffset,
  5725. _In_ const D3D12_RESOURCE_DESC *pDesc,
  5726. D3D12_RESOURCE_STATES InitialState,
  5727. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  5728. REFIID riid,
  5729. _COM_Outptr_opt_ void **ppvResource);
  5730. HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
  5731. ID3D12Device1 * This,
  5732. _In_ const D3D12_RESOURCE_DESC *pDesc,
  5733. D3D12_RESOURCE_STATES InitialState,
  5734. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  5735. REFIID riid,
  5736. _COM_Outptr_opt_ void **ppvResource);
  5737. HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
  5738. ID3D12Device1 * This,
  5739. _In_ ID3D12DeviceChild *pObject,
  5740. _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
  5741. DWORD Access,
  5742. _In_opt_ LPCWSTR Name,
  5743. _Out_ HANDLE *pHandle);
  5744. HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
  5745. ID3D12Device1 * This,
  5746. _In_ HANDLE NTHandle,
  5747. REFIID riid,
  5748. _COM_Outptr_opt_ void **ppvObj);
  5749. HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
  5750. ID3D12Device1 * This,
  5751. _In_ LPCWSTR Name,
  5752. DWORD Access,
  5753. /* [annotation][out] */
  5754. _Out_ HANDLE *pNTHandle);
  5755. HRESULT ( STDMETHODCALLTYPE *MakeResident )(
  5756. ID3D12Device1 * This,
  5757. UINT NumObjects,
  5758. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
  5759. HRESULT ( STDMETHODCALLTYPE *Evict )(
  5760. ID3D12Device1 * This,
  5761. UINT NumObjects,
  5762. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
  5763. HRESULT ( STDMETHODCALLTYPE *CreateFence )(
  5764. ID3D12Device1 * This,
  5765. UINT64 InitialValue,
  5766. D3D12_FENCE_FLAGS Flags,
  5767. REFIID riid,
  5768. _COM_Outptr_ void **ppFence);
  5769. HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
  5770. ID3D12Device1 * This);
  5771. void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
  5772. ID3D12Device1 * This,
  5773. _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
  5774. _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
  5775. _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
  5776. UINT64 BaseOffset,
  5777. _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
  5778. _Out_writes_opt_(NumSubresources) UINT *pNumRows,
  5779. _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
  5780. _Out_opt_ UINT64 *pTotalBytes);
  5781. HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
  5782. ID3D12Device1 * This,
  5783. _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
  5784. REFIID riid,
  5785. _COM_Outptr_opt_ void **ppvHeap);
  5786. HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
  5787. ID3D12Device1 * This,
  5788. BOOL Enable);
  5789. HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
  5790. ID3D12Device1 * This,
  5791. _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
  5792. _In_opt_ ID3D12RootSignature *pRootSignature,
  5793. REFIID riid,
  5794. _COM_Outptr_opt_ void **ppvCommandSignature);
  5795. void ( STDMETHODCALLTYPE *GetResourceTiling )(
  5796. ID3D12Device1 * This,
  5797. _In_ ID3D12Resource *pTiledResource,
  5798. _Out_opt_ UINT *pNumTilesForEntireResource,
  5799. _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
  5800. _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
  5801. _Inout_opt_ UINT *pNumSubresourceTilings,
  5802. _In_ UINT FirstSubresourceTilingToGet,
  5803. _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
  5804. LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
  5805. ID3D12Device1 * This);
  5806. HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
  5807. ID3D12Device1 * This,
  5808. _In_reads_(BlobLength) const void *pLibraryBlob,
  5809. SIZE_T BlobLength,
  5810. REFIID riid,
  5811. _COM_Outptr_ void **ppPipelineLibrary);
  5812. HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
  5813. ID3D12Device1 * This,
  5814. _In_reads_(NumFences) ID3D12Fence *const *ppFences,
  5815. _In_reads_(NumFences) const UINT64 *pFenceValues,
  5816. UINT NumFences,
  5817. D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
  5818. HANDLE hEvent);
  5819. HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
  5820. ID3D12Device1 * This,
  5821. UINT NumObjects,
  5822. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
  5823. _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
  5824. END_INTERFACE
  5825. } ID3D12Device1Vtbl;
  5826. interface ID3D12Device1
  5827. {
  5828. CONST_VTBL struct ID3D12Device1Vtbl *lpVtbl;
  5829. };
  5830. #ifdef COBJMACROS
  5831. #define ID3D12Device1_QueryInterface(This,riid,ppvObject) \
  5832. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  5833. #define ID3D12Device1_AddRef(This) \
  5834. ( (This)->lpVtbl -> AddRef(This) )
  5835. #define ID3D12Device1_Release(This) \
  5836. ( (This)->lpVtbl -> Release(This) )
  5837. #define ID3D12Device1_GetPrivateData(This,guid,pDataSize,pData) \
  5838. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  5839. #define ID3D12Device1_SetPrivateData(This,guid,DataSize,pData) \
  5840. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  5841. #define ID3D12Device1_SetPrivateDataInterface(This,guid,pData) \
  5842. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  5843. #define ID3D12Device1_SetName(This,Name) \
  5844. ( (This)->lpVtbl -> SetName(This,Name) )
  5845. #define ID3D12Device1_GetNodeCount(This) \
  5846. ( (This)->lpVtbl -> GetNodeCount(This) )
  5847. #define ID3D12Device1_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
  5848. ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
  5849. #define ID3D12Device1_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
  5850. ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
  5851. #define ID3D12Device1_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
  5852. ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
  5853. #define ID3D12Device1_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
  5854. ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
  5855. #define ID3D12Device1_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
  5856. ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
  5857. #define ID3D12Device1_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
  5858. ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
  5859. #define ID3D12Device1_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
  5860. ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
  5861. #define ID3D12Device1_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
  5862. ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
  5863. #define ID3D12Device1_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
  5864. ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
  5865. #define ID3D12Device1_CreateConstantBufferView(This,pDesc,DestDescriptor) \
  5866. ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
  5867. #define ID3D12Device1_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
  5868. ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
  5869. #define ID3D12Device1_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
  5870. ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
  5871. #define ID3D12Device1_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
  5872. ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
  5873. #define ID3D12Device1_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
  5874. ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
  5875. #define ID3D12Device1_CreateSampler(This,pDesc,DestDescriptor) \
  5876. ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
  5877. #define ID3D12Device1_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
  5878. ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
  5879. #define ID3D12Device1_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
  5880. ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
  5881. #define ID3D12Device1_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
  5882. ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
  5883. #define ID3D12Device1_GetCustomHeapProperties(This,nodeMask,heapType) \
  5884. ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
  5885. #define ID3D12Device1_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
  5886. ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
  5887. #define ID3D12Device1_CreateHeap(This,pDesc,riid,ppvHeap) \
  5888. ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
  5889. #define ID3D12Device1_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
  5890. ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
  5891. #define ID3D12Device1_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
  5892. ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
  5893. #define ID3D12Device1_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
  5894. ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
  5895. #define ID3D12Device1_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
  5896. ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
  5897. #define ID3D12Device1_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
  5898. ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
  5899. #define ID3D12Device1_MakeResident(This,NumObjects,ppObjects) \
  5900. ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
  5901. #define ID3D12Device1_Evict(This,NumObjects,ppObjects) \
  5902. ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
  5903. #define ID3D12Device1_CreateFence(This,InitialValue,Flags,riid,ppFence) \
  5904. ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
  5905. #define ID3D12Device1_GetDeviceRemovedReason(This) \
  5906. ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
  5907. #define ID3D12Device1_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
  5908. ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
  5909. #define ID3D12Device1_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
  5910. ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
  5911. #define ID3D12Device1_SetStablePowerState(This,Enable) \
  5912. ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
  5913. #define ID3D12Device1_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
  5914. ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
  5915. #define ID3D12Device1_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
  5916. ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
  5917. #define ID3D12Device1_GetAdapterLuid(This) \
  5918. ( (This)->lpVtbl -> GetAdapterLuid(This) )
  5919. #define ID3D12Device1_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
  5920. ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
  5921. #define ID3D12Device1_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
  5922. ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
  5923. #define ID3D12Device1_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
  5924. ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
  5925. #endif /* COBJMACROS */
  5926. #endif /* C style interface */
  5927. #endif /* __ID3D12Device1_INTERFACE_DEFINED__ */
  5928. #ifndef __ID3D12Device2_INTERFACE_DEFINED__
  5929. #define __ID3D12Device2_INTERFACE_DEFINED__
  5930. /* interface ID3D12Device2 */
  5931. /* [unique][local][object][uuid] */
  5932. EXTERN_C const IID IID_ID3D12Device2;
  5933. #if defined(__cplusplus) && !defined(CINTERFACE)
  5934. MIDL_INTERFACE("30baa41e-b15b-475c-a0bb-1af5c5b64328")
  5935. ID3D12Device2 : public ID3D12Device1
  5936. {
  5937. public:
  5938. virtual HRESULT STDMETHODCALLTYPE CreatePipelineState(
  5939. const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
  5940. REFIID riid,
  5941. _COM_Outptr_ void **ppPipelineState) = 0;
  5942. };
  5943. #else /* C style interface */
  5944. typedef struct ID3D12Device2Vtbl
  5945. {
  5946. BEGIN_INTERFACE
  5947. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  5948. ID3D12Device2 * This,
  5949. REFIID riid,
  5950. _COM_Outptr_ void **ppvObject);
  5951. ULONG ( STDMETHODCALLTYPE *AddRef )(
  5952. ID3D12Device2 * This);
  5953. ULONG ( STDMETHODCALLTYPE *Release )(
  5954. ID3D12Device2 * This);
  5955. HRESULT ( STDMETHODCALLTYPE *GetPrivateData )(
  5956. ID3D12Device2 * This,
  5957. _In_ REFGUID guid,
  5958. _Inout_ UINT *pDataSize,
  5959. _Out_writes_bytes_opt_( *pDataSize ) void *pData);
  5960. HRESULT ( STDMETHODCALLTYPE *SetPrivateData )(
  5961. ID3D12Device2 * This,
  5962. _In_ REFGUID guid,
  5963. _In_ UINT DataSize,
  5964. _In_reads_bytes_opt_( DataSize ) const void *pData);
  5965. HRESULT ( STDMETHODCALLTYPE *SetPrivateDataInterface )(
  5966. ID3D12Device2 * This,
  5967. _In_ REFGUID guid,
  5968. _In_opt_ const IUnknown *pData);
  5969. HRESULT ( STDMETHODCALLTYPE *SetName )(
  5970. ID3D12Device2 * This,
  5971. _In_z_ LPCWSTR Name);
  5972. UINT ( STDMETHODCALLTYPE *GetNodeCount )(
  5973. ID3D12Device2 * This);
  5974. HRESULT ( STDMETHODCALLTYPE *CreateCommandQueue )(
  5975. ID3D12Device2 * This,
  5976. _In_ const D3D12_COMMAND_QUEUE_DESC *pDesc,
  5977. REFIID riid,
  5978. _COM_Outptr_ void **ppCommandQueue);
  5979. HRESULT ( STDMETHODCALLTYPE *CreateCommandAllocator )(
  5980. ID3D12Device2 * This,
  5981. _In_ D3D12_COMMAND_LIST_TYPE type,
  5982. REFIID riid,
  5983. _COM_Outptr_ void **ppCommandAllocator);
  5984. HRESULT ( STDMETHODCALLTYPE *CreateGraphicsPipelineState )(
  5985. ID3D12Device2 * This,
  5986. _In_ const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc,
  5987. REFIID riid,
  5988. _COM_Outptr_ void **ppPipelineState);
  5989. HRESULT ( STDMETHODCALLTYPE *CreateComputePipelineState )(
  5990. ID3D12Device2 * This,
  5991. _In_ const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc,
  5992. REFIID riid,
  5993. _COM_Outptr_ void **ppPipelineState);
  5994. HRESULT ( STDMETHODCALLTYPE *CreateCommandList )(
  5995. ID3D12Device2 * This,
  5996. _In_ UINT nodeMask,
  5997. _In_ D3D12_COMMAND_LIST_TYPE type,
  5998. _In_ ID3D12CommandAllocator *pCommandAllocator,
  5999. _In_opt_ ID3D12PipelineState *pInitialState,
  6000. REFIID riid,
  6001. _COM_Outptr_ void **ppCommandList);
  6002. HRESULT ( STDMETHODCALLTYPE *CheckFeatureSupport )(
  6003. ID3D12Device2 * This,
  6004. D3D12_FEATURE Feature,
  6005. _Inout_updates_bytes_(FeatureSupportDataSize) void *pFeatureSupportData,
  6006. UINT FeatureSupportDataSize);
  6007. HRESULT ( STDMETHODCALLTYPE *CreateDescriptorHeap )(
  6008. ID3D12Device2 * This,
  6009. _In_ const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc,
  6010. REFIID riid,
  6011. _COM_Outptr_ void **ppvHeap);
  6012. UINT ( STDMETHODCALLTYPE *GetDescriptorHandleIncrementSize )(
  6013. ID3D12Device2 * This,
  6014. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType);
  6015. HRESULT ( STDMETHODCALLTYPE *CreateRootSignature )(
  6016. ID3D12Device2 * This,
  6017. _In_ UINT nodeMask,
  6018. _In_reads_(blobLengthInBytes) const void *pBlobWithRootSignature,
  6019. _In_ SIZE_T blobLengthInBytes,
  6020. REFIID riid,
  6021. _COM_Outptr_ void **ppvRootSignature);
  6022. void ( STDMETHODCALLTYPE *CreateConstantBufferView )(
  6023. ID3D12Device2 * This,
  6024. _In_opt_ const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc,
  6025. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  6026. void ( STDMETHODCALLTYPE *CreateShaderResourceView )(
  6027. ID3D12Device2 * This,
  6028. _In_opt_ ID3D12Resource *pResource,
  6029. _In_opt_ const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc,
  6030. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  6031. void ( STDMETHODCALLTYPE *CreateUnorderedAccessView )(
  6032. ID3D12Device2 * This,
  6033. _In_opt_ ID3D12Resource *pResource,
  6034. _In_opt_ ID3D12Resource *pCounterResource,
  6035. _In_opt_ const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc,
  6036. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  6037. void ( STDMETHODCALLTYPE *CreateRenderTargetView )(
  6038. ID3D12Device2 * This,
  6039. _In_opt_ ID3D12Resource *pResource,
  6040. _In_opt_ const D3D12_RENDER_TARGET_VIEW_DESC *pDesc,
  6041. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  6042. void ( STDMETHODCALLTYPE *CreateDepthStencilView )(
  6043. ID3D12Device2 * This,
  6044. _In_opt_ ID3D12Resource *pResource,
  6045. _In_opt_ const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc,
  6046. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  6047. void ( STDMETHODCALLTYPE *CreateSampler )(
  6048. ID3D12Device2 * This,
  6049. _In_ const D3D12_SAMPLER_DESC *pDesc,
  6050. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor);
  6051. void ( STDMETHODCALLTYPE *CopyDescriptors )(
  6052. ID3D12Device2 * This,
  6053. _In_ UINT NumDestDescriptorRanges,
  6054. _In_reads_(NumDestDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts,
  6055. _In_reads_opt_(NumDestDescriptorRanges) const UINT *pDestDescriptorRangeSizes,
  6056. _In_ UINT NumSrcDescriptorRanges,
  6057. _In_reads_(NumSrcDescriptorRanges) const D3D12_CPU_DESCRIPTOR_HANDLE *pSrcDescriptorRangeStarts,
  6058. _In_reads_opt_(NumSrcDescriptorRanges) const UINT *pSrcDescriptorRangeSizes,
  6059. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  6060. void ( STDMETHODCALLTYPE *CopyDescriptorsSimple )(
  6061. ID3D12Device2 * This,
  6062. _In_ UINT NumDescriptors,
  6063. _In_ D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart,
  6064. _In_ D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart,
  6065. _In_ D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType);
  6066. D3D12_RESOURCE_ALLOCATION_INFO ( STDMETHODCALLTYPE *GetResourceAllocationInfo )(
  6067. ID3D12Device2 * This,
  6068. _In_ UINT visibleMask,
  6069. _In_ UINT numResourceDescs,
  6070. _In_reads_(numResourceDescs) const D3D12_RESOURCE_DESC *pResourceDescs);
  6071. D3D12_HEAP_PROPERTIES ( STDMETHODCALLTYPE *GetCustomHeapProperties )(
  6072. ID3D12Device2 * This,
  6073. _In_ UINT nodeMask,
  6074. D3D12_HEAP_TYPE heapType);
  6075. HRESULT ( STDMETHODCALLTYPE *CreateCommittedResource )(
  6076. ID3D12Device2 * This,
  6077. _In_ const D3D12_HEAP_PROPERTIES *pHeapProperties,
  6078. D3D12_HEAP_FLAGS HeapFlags,
  6079. _In_ const D3D12_RESOURCE_DESC *pDesc,
  6080. D3D12_RESOURCE_STATES InitialResourceState,
  6081. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  6082. REFIID riidResource,
  6083. _COM_Outptr_opt_ void **ppvResource);
  6084. HRESULT ( STDMETHODCALLTYPE *CreateHeap )(
  6085. ID3D12Device2 * This,
  6086. _In_ const D3D12_HEAP_DESC *pDesc,
  6087. REFIID riid,
  6088. _COM_Outptr_opt_ void **ppvHeap);
  6089. HRESULT ( STDMETHODCALLTYPE *CreatePlacedResource )(
  6090. ID3D12Device2 * This,
  6091. _In_ ID3D12Heap *pHeap,
  6092. UINT64 HeapOffset,
  6093. _In_ const D3D12_RESOURCE_DESC *pDesc,
  6094. D3D12_RESOURCE_STATES InitialState,
  6095. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  6096. REFIID riid,
  6097. _COM_Outptr_opt_ void **ppvResource);
  6098. HRESULT ( STDMETHODCALLTYPE *CreateReservedResource )(
  6099. ID3D12Device2 * This,
  6100. _In_ const D3D12_RESOURCE_DESC *pDesc,
  6101. D3D12_RESOURCE_STATES InitialState,
  6102. _In_opt_ const D3D12_CLEAR_VALUE *pOptimizedClearValue,
  6103. REFIID riid,
  6104. _COM_Outptr_opt_ void **ppvResource);
  6105. HRESULT ( STDMETHODCALLTYPE *CreateSharedHandle )(
  6106. ID3D12Device2 * This,
  6107. _In_ ID3D12DeviceChild *pObject,
  6108. _In_opt_ const SECURITY_ATTRIBUTES *pAttributes,
  6109. DWORD Access,
  6110. _In_opt_ LPCWSTR Name,
  6111. _Out_ HANDLE *pHandle);
  6112. HRESULT ( STDMETHODCALLTYPE *OpenSharedHandle )(
  6113. ID3D12Device2 * This,
  6114. _In_ HANDLE NTHandle,
  6115. REFIID riid,
  6116. _COM_Outptr_opt_ void **ppvObj);
  6117. HRESULT ( STDMETHODCALLTYPE *OpenSharedHandleByName )(
  6118. ID3D12Device2 * This,
  6119. _In_ LPCWSTR Name,
  6120. DWORD Access,
  6121. /* [annotation][out] */
  6122. _Out_ HANDLE *pNTHandle);
  6123. HRESULT ( STDMETHODCALLTYPE *MakeResident )(
  6124. ID3D12Device2 * This,
  6125. UINT NumObjects,
  6126. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
  6127. HRESULT ( STDMETHODCALLTYPE *Evict )(
  6128. ID3D12Device2 * This,
  6129. UINT NumObjects,
  6130. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects);
  6131. HRESULT ( STDMETHODCALLTYPE *CreateFence )(
  6132. ID3D12Device2 * This,
  6133. UINT64 InitialValue,
  6134. D3D12_FENCE_FLAGS Flags,
  6135. REFIID riid,
  6136. _COM_Outptr_ void **ppFence);
  6137. HRESULT ( STDMETHODCALLTYPE *GetDeviceRemovedReason )(
  6138. ID3D12Device2 * This);
  6139. void ( STDMETHODCALLTYPE *GetCopyableFootprints )(
  6140. ID3D12Device2 * This,
  6141. _In_ const D3D12_RESOURCE_DESC *pResourceDesc,
  6142. _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
  6143. _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources,
  6144. UINT64 BaseOffset,
  6145. _Out_writes_opt_(NumSubresources) D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts,
  6146. _Out_writes_opt_(NumSubresources) UINT *pNumRows,
  6147. _Out_writes_opt_(NumSubresources) UINT64 *pRowSizeInBytes,
  6148. _Out_opt_ UINT64 *pTotalBytes);
  6149. HRESULT ( STDMETHODCALLTYPE *CreateQueryHeap )(
  6150. ID3D12Device2 * This,
  6151. _In_ const D3D12_QUERY_HEAP_DESC *pDesc,
  6152. REFIID riid,
  6153. _COM_Outptr_opt_ void **ppvHeap);
  6154. HRESULT ( STDMETHODCALLTYPE *SetStablePowerState )(
  6155. ID3D12Device2 * This,
  6156. BOOL Enable);
  6157. HRESULT ( STDMETHODCALLTYPE *CreateCommandSignature )(
  6158. ID3D12Device2 * This,
  6159. _In_ const D3D12_COMMAND_SIGNATURE_DESC *pDesc,
  6160. _In_opt_ ID3D12RootSignature *pRootSignature,
  6161. REFIID riid,
  6162. _COM_Outptr_opt_ void **ppvCommandSignature);
  6163. void ( STDMETHODCALLTYPE *GetResourceTiling )(
  6164. ID3D12Device2 * This,
  6165. _In_ ID3D12Resource *pTiledResource,
  6166. _Out_opt_ UINT *pNumTilesForEntireResource,
  6167. _Out_opt_ D3D12_PACKED_MIP_INFO *pPackedMipDesc,
  6168. _Out_opt_ D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips,
  6169. _Inout_opt_ UINT *pNumSubresourceTilings,
  6170. _In_ UINT FirstSubresourceTilingToGet,
  6171. _Out_writes_(*pNumSubresourceTilings) D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips);
  6172. LUID ( STDMETHODCALLTYPE *GetAdapterLuid )(
  6173. ID3D12Device2 * This);
  6174. HRESULT ( STDMETHODCALLTYPE *CreatePipelineLibrary )(
  6175. ID3D12Device2 * This,
  6176. _In_reads_(BlobLength) const void *pLibraryBlob,
  6177. SIZE_T BlobLength,
  6178. REFIID riid,
  6179. _COM_Outptr_ void **ppPipelineLibrary);
  6180. HRESULT ( STDMETHODCALLTYPE *SetEventOnMultipleFenceCompletion )(
  6181. ID3D12Device2 * This,
  6182. _In_reads_(NumFences) ID3D12Fence *const *ppFences,
  6183. _In_reads_(NumFences) const UINT64 *pFenceValues,
  6184. UINT NumFences,
  6185. D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags,
  6186. HANDLE hEvent);
  6187. HRESULT ( STDMETHODCALLTYPE *SetResidencyPriority )(
  6188. ID3D12Device2 * This,
  6189. UINT NumObjects,
  6190. _In_reads_(NumObjects) ID3D12Pageable *const *ppObjects,
  6191. _In_reads_(NumObjects) const D3D12_RESIDENCY_PRIORITY *pPriorities);
  6192. HRESULT ( STDMETHODCALLTYPE *CreatePipelineState )(
  6193. ID3D12Device2 * This,
  6194. const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc,
  6195. REFIID riid,
  6196. _COM_Outptr_ void **ppPipelineState);
  6197. END_INTERFACE
  6198. } ID3D12Device2Vtbl;
  6199. interface ID3D12Device2
  6200. {
  6201. CONST_VTBL struct ID3D12Device2Vtbl *lpVtbl;
  6202. };
  6203. #ifdef COBJMACROS
  6204. #define ID3D12Device2_QueryInterface(This,riid,ppvObject) \
  6205. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6206. #define ID3D12Device2_AddRef(This) \
  6207. ( (This)->lpVtbl -> AddRef(This) )
  6208. #define ID3D12Device2_Release(This) \
  6209. ( (This)->lpVtbl -> Release(This) )
  6210. #define ID3D12Device2_GetPrivateData(This,guid,pDataSize,pData) \
  6211. ( (This)->lpVtbl -> GetPrivateData(This,guid,pDataSize,pData) )
  6212. #define ID3D12Device2_SetPrivateData(This,guid,DataSize,pData) \
  6213. ( (This)->lpVtbl -> SetPrivateData(This,guid,DataSize,pData) )
  6214. #define ID3D12Device2_SetPrivateDataInterface(This,guid,pData) \
  6215. ( (This)->lpVtbl -> SetPrivateDataInterface(This,guid,pData) )
  6216. #define ID3D12Device2_SetName(This,Name) \
  6217. ( (This)->lpVtbl -> SetName(This,Name) )
  6218. #define ID3D12Device2_GetNodeCount(This) \
  6219. ( (This)->lpVtbl -> GetNodeCount(This) )
  6220. #define ID3D12Device2_CreateCommandQueue(This,pDesc,riid,ppCommandQueue) \
  6221. ( (This)->lpVtbl -> CreateCommandQueue(This,pDesc,riid,ppCommandQueue) )
  6222. #define ID3D12Device2_CreateCommandAllocator(This,type,riid,ppCommandAllocator) \
  6223. ( (This)->lpVtbl -> CreateCommandAllocator(This,type,riid,ppCommandAllocator) )
  6224. #define ID3D12Device2_CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) \
  6225. ( (This)->lpVtbl -> CreateGraphicsPipelineState(This,pDesc,riid,ppPipelineState) )
  6226. #define ID3D12Device2_CreateComputePipelineState(This,pDesc,riid,ppPipelineState) \
  6227. ( (This)->lpVtbl -> CreateComputePipelineState(This,pDesc,riid,ppPipelineState) )
  6228. #define ID3D12Device2_CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) \
  6229. ( (This)->lpVtbl -> CreateCommandList(This,nodeMask,type,pCommandAllocator,pInitialState,riid,ppCommandList) )
  6230. #define ID3D12Device2_CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) \
  6231. ( (This)->lpVtbl -> CheckFeatureSupport(This,Feature,pFeatureSupportData,FeatureSupportDataSize) )
  6232. #define ID3D12Device2_CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) \
  6233. ( (This)->lpVtbl -> CreateDescriptorHeap(This,pDescriptorHeapDesc,riid,ppvHeap) )
  6234. #define ID3D12Device2_GetDescriptorHandleIncrementSize(This,DescriptorHeapType) \
  6235. ( (This)->lpVtbl -> GetDescriptorHandleIncrementSize(This,DescriptorHeapType) )
  6236. #define ID3D12Device2_CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) \
  6237. ( (This)->lpVtbl -> CreateRootSignature(This,nodeMask,pBlobWithRootSignature,blobLengthInBytes,riid,ppvRootSignature) )
  6238. #define ID3D12Device2_CreateConstantBufferView(This,pDesc,DestDescriptor) \
  6239. ( (This)->lpVtbl -> CreateConstantBufferView(This,pDesc,DestDescriptor) )
  6240. #define ID3D12Device2_CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) \
  6241. ( (This)->lpVtbl -> CreateShaderResourceView(This,pResource,pDesc,DestDescriptor) )
  6242. #define ID3D12Device2_CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) \
  6243. ( (This)->lpVtbl -> CreateUnorderedAccessView(This,pResource,pCounterResource,pDesc,DestDescriptor) )
  6244. #define ID3D12Device2_CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) \
  6245. ( (This)->lpVtbl -> CreateRenderTargetView(This,pResource,pDesc,DestDescriptor) )
  6246. #define ID3D12Device2_CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) \
  6247. ( (This)->lpVtbl -> CreateDepthStencilView(This,pResource,pDesc,DestDescriptor) )
  6248. #define ID3D12Device2_CreateSampler(This,pDesc,DestDescriptor) \
  6249. ( (This)->lpVtbl -> CreateSampler(This,pDesc,DestDescriptor) )
  6250. #define ID3D12Device2_CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) \
  6251. ( (This)->lpVtbl -> CopyDescriptors(This,NumDestDescriptorRanges,pDestDescriptorRangeStarts,pDestDescriptorRangeSizes,NumSrcDescriptorRanges,pSrcDescriptorRangeStarts,pSrcDescriptorRangeSizes,DescriptorHeapsType) )
  6252. #define ID3D12Device2_CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) \
  6253. ( (This)->lpVtbl -> CopyDescriptorsSimple(This,NumDescriptors,DestDescriptorRangeStart,SrcDescriptorRangeStart,DescriptorHeapsType) )
  6254. #define ID3D12Device2_GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) \
  6255. ( (This)->lpVtbl -> GetResourceAllocationInfo(This,visibleMask,numResourceDescs,pResourceDescs) )
  6256. #define ID3D12Device2_GetCustomHeapProperties(This,nodeMask,heapType) \
  6257. ( (This)->lpVtbl -> GetCustomHeapProperties(This,nodeMask,heapType) )
  6258. #define ID3D12Device2_CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) \
  6259. ( (This)->lpVtbl -> CreateCommittedResource(This,pHeapProperties,HeapFlags,pDesc,InitialResourceState,pOptimizedClearValue,riidResource,ppvResource) )
  6260. #define ID3D12Device2_CreateHeap(This,pDesc,riid,ppvHeap) \
  6261. ( (This)->lpVtbl -> CreateHeap(This,pDesc,riid,ppvHeap) )
  6262. #define ID3D12Device2_CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
  6263. ( (This)->lpVtbl -> CreatePlacedResource(This,pHeap,HeapOffset,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
  6264. #define ID3D12Device2_CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) \
  6265. ( (This)->lpVtbl -> CreateReservedResource(This,pDesc,InitialState,pOptimizedClearValue,riid,ppvResource) )
  6266. #define ID3D12Device2_CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) \
  6267. ( (This)->lpVtbl -> CreateSharedHandle(This,pObject,pAttributes,Access,Name,pHandle) )
  6268. #define ID3D12Device2_OpenSharedHandle(This,NTHandle,riid,ppvObj) \
  6269. ( (This)->lpVtbl -> OpenSharedHandle(This,NTHandle,riid,ppvObj) )
  6270. #define ID3D12Device2_OpenSharedHandleByName(This,Name,Access,pNTHandle) \
  6271. ( (This)->lpVtbl -> OpenSharedHandleByName(This,Name,Access,pNTHandle) )
  6272. #define ID3D12Device2_MakeResident(This,NumObjects,ppObjects) \
  6273. ( (This)->lpVtbl -> MakeResident(This,NumObjects,ppObjects) )
  6274. #define ID3D12Device2_Evict(This,NumObjects,ppObjects) \
  6275. ( (This)->lpVtbl -> Evict(This,NumObjects,ppObjects) )
  6276. #define ID3D12Device2_CreateFence(This,InitialValue,Flags,riid,ppFence) \
  6277. ( (This)->lpVtbl -> CreateFence(This,InitialValue,Flags,riid,ppFence) )
  6278. #define ID3D12Device2_GetDeviceRemovedReason(This) \
  6279. ( (This)->lpVtbl -> GetDeviceRemovedReason(This) )
  6280. #define ID3D12Device2_GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) \
  6281. ( (This)->lpVtbl -> GetCopyableFootprints(This,pResourceDesc,FirstSubresource,NumSubresources,BaseOffset,pLayouts,pNumRows,pRowSizeInBytes,pTotalBytes) )
  6282. #define ID3D12Device2_CreateQueryHeap(This,pDesc,riid,ppvHeap) \
  6283. ( (This)->lpVtbl -> CreateQueryHeap(This,pDesc,riid,ppvHeap) )
  6284. #define ID3D12Device2_SetStablePowerState(This,Enable) \
  6285. ( (This)->lpVtbl -> SetStablePowerState(This,Enable) )
  6286. #define ID3D12Device2_CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) \
  6287. ( (This)->lpVtbl -> CreateCommandSignature(This,pDesc,pRootSignature,riid,ppvCommandSignature) )
  6288. #define ID3D12Device2_GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) \
  6289. ( (This)->lpVtbl -> GetResourceTiling(This,pTiledResource,pNumTilesForEntireResource,pPackedMipDesc,pStandardTileShapeForNonPackedMips,pNumSubresourceTilings,FirstSubresourceTilingToGet,pSubresourceTilingsForNonPackedMips) )
  6290. #define ID3D12Device2_GetAdapterLuid(This) \
  6291. ( (This)->lpVtbl -> GetAdapterLuid(This) )
  6292. #define ID3D12Device2_CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) \
  6293. ( (This)->lpVtbl -> CreatePipelineLibrary(This,pLibraryBlob,BlobLength,riid,ppPipelineLibrary) )
  6294. #define ID3D12Device2_SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) \
  6295. ( (This)->lpVtbl -> SetEventOnMultipleFenceCompletion(This,ppFences,pFenceValues,NumFences,Flags,hEvent) )
  6296. #define ID3D12Device2_SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) \
  6297. ( (This)->lpVtbl -> SetResidencyPriority(This,NumObjects,ppObjects,pPriorities) )
  6298. #define ID3D12Device2_CreatePipelineState(This,pDesc,riid,ppPipelineState) \
  6299. ( (This)->lpVtbl -> CreatePipelineState(This,pDesc,riid,ppPipelineState) )
  6300. #endif /* COBJMACROS */
  6301. #endif /* C style interface */
  6302. #endif /* __ID3D12Device2_INTERFACE_DEFINED__ */
  6303. #ifndef __ID3D12Tools_INTERFACE_DEFINED__
  6304. #define __ID3D12Tools_INTERFACE_DEFINED__
  6305. /* interface ID3D12Tools */
  6306. /* [unique][local][object][uuid] */
  6307. EXTERN_C const IID IID_ID3D12Tools;
  6308. #if defined(__cplusplus) && !defined(CINTERFACE)
  6309. MIDL_INTERFACE("7071e1f0-e84b-4b33-974f-12fa49de65c5")
  6310. ID3D12Tools : public IUnknown
  6311. {
  6312. public:
  6313. virtual void STDMETHODCALLTYPE EnableShaderInstrumentation(
  6314. BOOL bEnable) = 0;
  6315. virtual BOOL STDMETHODCALLTYPE ShaderInstrumentationEnabled( void) = 0;
  6316. };
  6317. #else /* C style interface */
  6318. typedef struct ID3D12ToolsVtbl
  6319. {
  6320. BEGIN_INTERFACE
  6321. HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
  6322. ID3D12Tools * This,
  6323. REFIID riid,
  6324. _COM_Outptr_ void **ppvObject);
  6325. ULONG ( STDMETHODCALLTYPE *AddRef )(
  6326. ID3D12Tools * This);
  6327. ULONG ( STDMETHODCALLTYPE *Release )(
  6328. ID3D12Tools * This);
  6329. void ( STDMETHODCALLTYPE *EnableShaderInstrumentation )(
  6330. ID3D12Tools * This,
  6331. BOOL bEnable);
  6332. BOOL ( STDMETHODCALLTYPE *ShaderInstrumentationEnabled )(
  6333. ID3D12Tools * This);
  6334. END_INTERFACE
  6335. } ID3D12ToolsVtbl;
  6336. interface ID3D12Tools
  6337. {
  6338. CONST_VTBL struct ID3D12ToolsVtbl *lpVtbl;
  6339. };
  6340. #ifdef COBJMACROS
  6341. #define ID3D12Tools_QueryInterface(This,riid,ppvObject) \
  6342. ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
  6343. #define ID3D12Tools_AddRef(This) \
  6344. ( (This)->lpVtbl -> AddRef(This) )
  6345. #define ID3D12Tools_Release(This) \
  6346. ( (This)->lpVtbl -> Release(This) )
  6347. #define ID3D12Tools_EnableShaderInstrumentation(This,bEnable) \
  6348. ( (This)->lpVtbl -> EnableShaderInstrumentation(This,bEnable) )
  6349. #define ID3D12Tools_ShaderInstrumentationEnabled(This) \
  6350. ( (This)->lpVtbl -> ShaderInstrumentationEnabled(This) )
  6351. #endif /* COBJMACROS */
  6352. #endif /* C style interface */
  6353. #endif /* __ID3D12Tools_INTERFACE_DEFINED__ */
  6354. /* interface __MIDL_itf_d3d12_0000_0024 */
  6355. /* [local] */
  6356. typedef struct D3D12_SUBRESOURCE_DATA
  6357. {
  6358. const void *pData;
  6359. LONG_PTR RowPitch;
  6360. LONG_PTR SlicePitch;
  6361. } D3D12_SUBRESOURCE_DATA;
  6362. typedef struct D3D12_MEMCPY_DEST
  6363. {
  6364. void *pData;
  6365. SIZE_T RowPitch;
  6366. SIZE_T SlicePitch;
  6367. } D3D12_MEMCPY_DEST;
  6368. #if !defined( D3D12_IGNORE_SDK_LAYERS )
  6369. #include "d3d12sdklayers.h"
  6370. #endif
  6371. ///////////////////////////////////////////////////////////////////////////
  6372. // D3D12CreateDevice
  6373. // ------------------
  6374. //
  6375. // pAdapter
  6376. // If NULL, D3D12CreateDevice will choose the primary adapter.
  6377. // If non-NULL, D3D12CreateDevice will use the provided adapter.
  6378. // MinimumFeatureLevel
  6379. // The minimum feature level required for successful device creation.
  6380. // riid
  6381. // The interface IID of the device to be returned. Expected: ID3D12Device.
  6382. // ppDevice
  6383. // Pointer to returned interface. May be NULL.
  6384. //
  6385. // Return Values
  6386. // Any of those documented for
  6387. // CreateDXGIFactory1
  6388. // IDXGIFactory::EnumAdapters
  6389. // D3D12CreateDevice
  6390. //
  6391. ///////////////////////////////////////////////////////////////////////////
  6392. typedef HRESULT (WINAPI* PFN_D3D12_CREATE_DEVICE)( _In_opt_ IUnknown*,
  6393. D3D_FEATURE_LEVEL,
  6394. _In_ REFIID, _COM_Outptr_opt_ void** );
  6395. HRESULT WINAPI D3D12CreateDevice(
  6396. _In_opt_ IUnknown* pAdapter,
  6397. D3D_FEATURE_LEVEL MinimumFeatureLevel,
  6398. _In_ REFIID riid, // Expected: ID3D12Device
  6399. _COM_Outptr_opt_ void** ppDevice );
  6400. typedef HRESULT (WINAPI* PFN_D3D12_GET_DEBUG_INTERFACE)( _In_ REFIID, _COM_Outptr_opt_ void** );
  6401. HRESULT WINAPI D3D12GetDebugInterface( _In_ REFIID riid, _COM_Outptr_opt_ void** ppvDebug );
  6402. // --------------------------------------------------------------------------------------------------------------------------------
  6403. // D3D12EnableExperimentalFeatures
  6404. //
  6405. // Pass in a list of feature GUIDs to be enabled together.
  6406. //
  6407. // If a particular feature requires some configuration information on enablement, it will have
  6408. // a configuration struct that can be passed alongside the GUID.
  6409. //
  6410. // Some features might use an interface IID as the GUID. For these, once the feature is enabled via
  6411. // D3D12EnableExperimentalFeatures, D3D12GetDebugInterface can then be called with the IID to retrieve the interface
  6412. // for manipulating the feature. This allows for control that might not cleanly be expressed by just
  6413. // the configuration struct that D3D12EnableExperimentalFeatures provides.
  6414. //
  6415. // If this method is called and a change to existing feature enablement is made,
  6416. // all current D3D12 devices are set to DEVICE_REMOVED state, since under the covers there is really only one
  6417. // singleton device for a process. Removing the devices when configuration changes prevents
  6418. // mismatched expectations of how a device is supposed to work after it has been created from the app's point of view.
  6419. //
  6420. // The call returns E_NOINTERFACE if an unrecognized feature is passed in or Windows Developer mode is not on.
  6421. // The call returns E_INVALIDARG if the configuration of a feature is incorrect, the set of features passed
  6422. // in are known to be incompatible with each other, or other errors.
  6423. // Returns S_OK otherwise.
  6424. //
  6425. // --------------------------------------------------------------------------------------------------------------------------------
  6426. HRESULT WINAPI D3D12EnableExperimentalFeatures(
  6427. UINT NumFeatures,
  6428. __in_ecount(NumFeatures) const IID* pIIDs,
  6429. __in_ecount_opt(NumFeatures) void* pConfigurationStructs,
  6430. __in_ecount_opt(NumFeatures) UINT* pConfigurationStructSizes);
  6431. // --------------------------------------------------------------------------------------------------------------------------------
  6432. // Experimental Feature: D3D12ExperimentalShaderModels
  6433. //
  6434. // Use with D3D12EnableExperimentalFeatures to enable experimental shader model support,
  6435. // meaning shader models that haven't been finalized for use in retail.
  6436. //
  6437. // Enabling D3D12ExperimentalShaderModels needs no configuration struct, pass NULL in the pConfigurationStructs array.
  6438. //
  6439. // --------------------------------------------------------------------------------------------------------------------------------
  6440. static const UUID D3D12ExperimentalShaderModels = { /* 76f5573e-f13a-40f5-b297-81ce9e18933f */
  6441. 0x76f5573e,
  6442. 0xf13a,
  6443. 0x40f5,
  6444. { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f }
  6445. };
  6446. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
  6447. #pragma endregion
  6448. DEFINE_GUID(IID_ID3D12Object,0xc4fec28f,0x7966,0x4e95,0x9f,0x94,0xf4,0x31,0xcb,0x56,0xc3,0xb8);
  6449. DEFINE_GUID(IID_ID3D12DeviceChild,0x905db94b,0xa00c,0x4140,0x9d,0xf5,0x2b,0x64,0xca,0x9e,0xa3,0x57);
  6450. DEFINE_GUID(IID_ID3D12RootSignature,0xc54a6b66,0x72df,0x4ee8,0x8b,0xe5,0xa9,0x46,0xa1,0x42,0x92,0x14);
  6451. DEFINE_GUID(IID_ID3D12RootSignatureDeserializer,0x34AB647B,0x3CC8,0x46AC,0x84,0x1B,0xC0,0x96,0x56,0x45,0xC0,0x46);
  6452. DEFINE_GUID(IID_ID3D12VersionedRootSignatureDeserializer,0x7F91CE67,0x090C,0x4BB7,0xB7,0x8E,0xED,0x8F,0xF2,0xE3,0x1D,0xA0);
  6453. DEFINE_GUID(IID_ID3D12Pageable,0x63ee58fb,0x1268,0x4835,0x86,0xda,0xf0,0x08,0xce,0x62,0xf0,0xd6);
  6454. DEFINE_GUID(IID_ID3D12Heap,0x6b3b2502,0x6e51,0x45b3,0x90,0xee,0x98,0x84,0x26,0x5e,0x8d,0xf3);
  6455. DEFINE_GUID(IID_ID3D12Resource,0x696442be,0xa72e,0x4059,0xbc,0x79,0x5b,0x5c,0x98,0x04,0x0f,0xad);
  6456. DEFINE_GUID(IID_ID3D12CommandAllocator,0x6102dee4,0xaf59,0x4b09,0xb9,0x99,0xb4,0x4d,0x73,0xf0,0x9b,0x24);
  6457. DEFINE_GUID(IID_ID3D12Fence,0x0a753dcf,0xc4d8,0x4b91,0xad,0xf6,0xbe,0x5a,0x60,0xd9,0x5a,0x76);
  6458. DEFINE_GUID(IID_ID3D12PipelineState,0x765a30f3,0xf624,0x4c6f,0xa8,0x28,0xac,0xe9,0x48,0x62,0x24,0x45);
  6459. DEFINE_GUID(IID_ID3D12DescriptorHeap,0x8efb471d,0x616c,0x4f49,0x90,0xf7,0x12,0x7b,0xb7,0x63,0xfa,0x51);
  6460. DEFINE_GUID(IID_ID3D12QueryHeap,0x0d9658ae,0xed45,0x469e,0xa6,0x1d,0x97,0x0e,0xc5,0x83,0xca,0xb4);
  6461. DEFINE_GUID(IID_ID3D12CommandSignature,0xc36a797c,0xec80,0x4f0a,0x89,0x85,0xa7,0xb2,0x47,0x50,0x82,0xd1);
  6462. DEFINE_GUID(IID_ID3D12CommandList,0x7116d91c,0xe7e4,0x47ce,0xb8,0xc6,0xec,0x81,0x68,0xf4,0x37,0xe5);
  6463. DEFINE_GUID(IID_ID3D12GraphicsCommandList,0x5b160d0f,0xac1b,0x4185,0x8b,0xa8,0xb3,0xae,0x42,0xa5,0xa4,0x55);
  6464. DEFINE_GUID(IID_ID3D12GraphicsCommandList1,0x553103fb,0x1fe7,0x4557,0xbb,0x38,0x94,0x6d,0x7d,0x0e,0x7c,0xa7);
  6465. DEFINE_GUID(IID_ID3D12CommandQueue,0x0ec870a6,0x5d7e,0x4c22,0x8c,0xfc,0x5b,0xaa,0xe0,0x76,0x16,0xed);
  6466. DEFINE_GUID(IID_ID3D12Device,0x189819f1,0x1db6,0x4b57,0xbe,0x54,0x18,0x21,0x33,0x9b,0x85,0xf7);
  6467. DEFINE_GUID(IID_ID3D12PipelineLibrary,0xc64226a8,0x9201,0x46af,0xb4,0xcc,0x53,0xfb,0x9f,0xf7,0x41,0x4f);
  6468. DEFINE_GUID(IID_ID3D12PipelineLibrary1,0x80eabf42,0x2568,0x4e5e,0xbd,0x82,0xc3,0x7f,0x86,0x96,0x1d,0xc3);
  6469. DEFINE_GUID(IID_ID3D12Device1,0x77acce80,0x638e,0x4e65,0x88,0x95,0xc1,0xf2,0x33,0x86,0x86,0x3e);
  6470. DEFINE_GUID(IID_ID3D12Device2,0x30baa41e,0xb15b,0x475c,0xa0,0xbb,0x1a,0xf5,0xc5,0xb6,0x43,0x28);
  6471. DEFINE_GUID(IID_ID3D12Tools,0x7071e1f0,0xe84b,0x4b33,0x97,0x4f,0x12,0xfa,0x49,0xde,0x65,0xc5);
  6472. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0024_v0_0_c_ifspec;
  6473. extern RPC_IF_HANDLE __MIDL_itf_d3d12_0000_0024_v0_0_s_ifspec;
  6474. /* Additional Prototypes for ALL interfaces */
  6475. /* end of Additional Prototypes */
  6476. #ifdef __cplusplus
  6477. }
  6478. #endif
  6479. #endif