Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • panfrost/mesa
  • lima/mesa
  • anarsoul/mesa
  • mesa/mesa
  • kwg/mesa
  • curan/mesa
  • kusma/mesa
  • gfxstrand/mesa
  • ajax/mesa
  • FireBurn/mesa
  • bnieuwenhuizen/mesa
  • tarceri/mesa
  • chuckatkins/mesa
  • cmarcelo/mesa
  • anholt/mesa
  • rantogno/mesa
  • gerddie/mesa
  • keithp/mesa
  • chema/mesa
  • airlied/mesa
  • majanes/mesa
  • craftyguy/mesa
  • gurchetansingh/mesa
  • mvicomoya/mesa
  • kallisti5/mesa
  • bochecha/mesa
  • pauk.denis/mesa
  • dbaker/mesa
  • krh/mesa
  • jasuarez/mesa
  • sagarghuge/mesa
  • ofourdan/mesa
  • ickle/mesa
  • zzoon/mesa
  • Keenuts/mesa
  • tpohjola/mesa
  • velurimithun/mesa
  • cwabbott0/mesa
  • Richard_Yunchao/mesa
  • bkmgit/mesa
  • sima/mesa
  • GL/mesa
  • frkoenig/mesa
  • adelva1984/mesa
  • linyaa/mesa
  • slavslav/mesa
  • daniels/mesa
  • rellla/mesa
  • hakzsam/mesa
  • lyudess/panfrost-mesa
  • narmstrong/mesa-lima
  • robertfoss/mesa
  • nh/mesa
  • carlosg/mesa
  • jvesely/mesa
  • xlin16/mesa
  • narmstrong/panfrost-mesa
  • narmstrong/mesa
  • david.hanna11/mesa
  • idr/mesa
  • jljusten/mesa
  • antonovitch/mesa
  • arnomessiaen/mesa
  • mattst88/mesa
  • tpalli/mesa
  • mmha/mesa
  • llandwerlin/mesa
  • zumbi/mesa
  • rhyskidd/mesa
  • vlee/mesa
  • pmoreau/mesa
  • coypoop/mesa
  • jturney/mesa
  • strassek/mesa
  • olv/mesa
  • flto/mesa
  • iglosiggio/mesa
  • frohlich/mesa
  • karolherbst/mesa
  • elima/mesa
  • AtoningUnifex/mesa
  • tlonnber/mesa
  • samuelig/mesa
  • apinheiro/mesa
  • sjoerd/mesa
  • ahota/mesa
  • robh/mesa
  • daniel-schuermann/mesa
  • alistair23/mesa
  • linkmauve/mesa
  • elongbug/mesa
  • Haxk20/mesa
  • bartoldeman/mesa
  • daenzer/mesa
  • tjaalton/mesa
  • dhewg/mesa
  • Venemo/mesa
  • alyssa/mesa
  • Hi-Angel/mesa
  • carnaval/mesa
  • victure86/mesa
  • robclark/mesa
  • Vivek/mesa
  • tutankhamen/mesa
  • hopetech/mesa
  • marmeladema/mesa
  • ibriano/mesa
  • tanty/mesa
  • Oschowa/mesa
  • nroberts/mesa
  • zhanglei002/mesa
  • pal1000/mesa
  • xxxbxxx/mesa
  • lyudess/mesa
  • bentiss/mesa
  • afrantzis/mesa
  • yuq825/mesa
  • jamesxio/mesa
  • lkundrak/mesa
  • aphogat/mesa
  • ZeGentzy/mesa
  • aqxa1/mesa
  • mareko/mesa
  • austriancoder/mesa
  • jrtc27/mesa
  • skirk/mesa
  • grmat/mesa
  • heinrich.fink/mesa
  • el_christianito/mesa
  • davidriley/mesa
  • starnight/mesa
  • davidbepo/mesa
  • pendingchaos/mesa
  • icenowy/mesa
  • dominikd/mesa
  • zmike/mesa
  • tzimmermann/mesa
  • enunes/mesa
  • noblock/mesa
  • pzanoni/mesa
  • hygonsoc/mesa
  • lrusak/mesa
  • cap/mesa
  • pepp/mesa
  • axeldavy/mesa
  • domen55/mesa
  • john.stultz/mesa
  • jadahl/mesa
  • 10110111/mesa
  • alexvillacislasso/mesa
  • jzielins/mesa
  • pmanolova/mesa
  • nicholasbishop/mesa
  • david.boddie.puri.sm/mesa
  • agx/mesa
  • krzysztof.raszkowski/mesa
  • KhaledEmaraDev/mesa
  • itoral/mesa
  • shadeslayer/mesa
  • kszaq/mesa
  • haihao/mesa
  • wanderman.luck/mesa
  • Chunming-Zhou/mesa
  • emersion/mesa
  • agoldmints/mesa
  • marex/mesa
  • renchenglei/mesa
  • dbehr/mesa
  • zhen/mesa
  • ndufresne/mesa
  • abergmeier/mesa
  • grimkriegor/mesa
  • dlehman25/mesa
  • mmenzyns/mesa
  • jorgenatz/mesa
  • lostgoat/mesa
  • xexaxo/mesa
  • lynxeye/mesa
  • roman.stratiienko/mesa
  • brianp/mesa
  • Ericson2314/mesa
  • lfrb/mesa
  • dongwonk/mesa
  • pH5/mesa
  • q66/mesa
  • lepton/mesa
  • nia/mesa
  • AmanPatel599/mesa
  • currojerez/mesa
  • mol/mesa
  • danyspin97/mesa
  • zeising/mesa
  • mvlad/mesa
  • ssbertilson/mesa
  • Tofe/mesa
  • tomeu/mesa
  • kenmays/mesa
  • smbarber/mesa
  • dgstevens/mesa
  • YaLTeR/mesa
  • issor.oruam/mesa
  • cubanismo/mesa
  • bnf/mesa
  • libcg/mesa
  • bbrezillon/mesa
  • y2kenny/mesa
  • leandrohrb/mesa
  • psii/mesa
  • maos20008/mesa
  • MarijnS95/mesa
  • urjaman/mesa
  • banzr/mesa
  • rmader/mesa
  • daniels-test/mesa
  • thongthai/mesa
  • leoliu/mesa
  • baryluk/mesa
  • macieksolinski49/mesa
  • shikhar394/mesa
  • awatry/mesa
  • lordheavym/mesa
  • degasus/mesa
  • rg3igalia/mesa
  • miguelecasassanchez/mesa
  • italonicola/mesa
  • luis.mendes/mesa
  • bcrocker/mesa
  • pcercuei/mesa
  • Ikke/mesa
  • pelwell/mesa
  • John-Gee/mesa
  • Plagman/mesa
  • liyi42/mesa
  • Behem0th/mesa
  • kraj/mesa
  • abordado/mesa
  • romangg/mesa
  • sonny/mesa
  • ruanc/mesa
  • icecream95/mesa
  • tpyra/mesa
  • mariogrip/mesa
  • avdgrinten/mesa
  • Stephan/mesa
  • imbens/mesa
  • dh/mesa
  • stev47/mesa
  • haasn/mesa
  • RaspberryPiFan/mesa
  • sthibaul/mesa
  • zahraee.sm/mesa
  • brkho/mesa
  • lemon.py/mesa
  • sonicadvance1/mesa
  • Lasse/mesa
  • zhangjie/mesa
  • djogorchock/mesa
  • ShirishS/mesa
  • zhuravlev1134/mesa
  • castout/mesa
  • martin.fuzzey/mesa
  • idas/mesa
  • apesch/mesa
  • ngcortes/mesa
  • manu/mesa
  • JAYL/mesa
  • neochapay/mesa
  • w-flo/mesa
  • timkrause/mesa
  • ddavenport/mesa
  • thomash/mesa
  • andrzejuk.szymon/mesa
  • bkuhls/mesa
  • julianwi/mesa
  • aroth-fastprotect/mesa
  • DadSchoorse/mesa
  • berolinux/mesa
  • charmainel/mesa
  • shawn.p.huang/mesa
  • paska/mesa
  • hjl.tools/mesa
  • sroland/mesa
  • aacid/mesa
  • frog/mesa
  • scott-ph/mesa
  • awilfox/mesa
  • nyanmisaka/mesa
  • stalkerg/mesa
  • Cwiiis/mesa
  • imirkin/mesa
  • Bizjak/mesa
  • psreport/mesa
  • duncan.hopkins/mesa
  • maxice8/mesa
  • orbea/mesa
  • eschwartz/mesa
  • edmondo/mesa
  • jrfonseca/mesa
  • bbarladian/mesa
  • bhenden/mesa
  • alucowie/mesa
  • RAOF/mesa
  • leigh123linux/mesa
  • gtucker/mesa
  • LouisLi/mesa
  • sjnewbury/mesa
  • saavedra.pablo/mesa
  • ascent/mesa
  • wyqkp/mesa
  • Shao-Feng/mesa
  • jzhums/mesa
  • plevine457/mesa
  • tobiasjakobi/mesa
  • jpalus/mesa
  • yuzaipiaofei/mesa
  • jenatali/mesa
  • abhishek4/mesa
  • njha/mesa
  • konradybcio/mesa
  • mslusarz/mesa
  • fents290/mesa
  • edb/mesa
  • chewitt/mesa
  • ckolivas/mesa
  • blaztinn/mesa
  • cooperch/mesa
  • hikiko/mesa
  • adityaatluri/mesa
  • AniLeo/mesa
  • JibbityJobbity/mesa
  • rashedabdeltawab/mesa
  • ashafer/mesa
  • cme3000/mesa
  • farnoy/mesa
  • asheplyakov/mesa
  • kjliew/mesa
  • hanno/mesa
  • mikeroyal/mesa
  • ssingh/mesa
  • vitalyp/mesa
  • jpark37/mesa
  • mkasprza/mesa
  • WGH/mesa
  • mtmkls/mesa
  • vliaskov/mesa
  • kleinerm/mesa
  • hafixo/mesa
  • SureshG/mesa
  • mntmn/mesa
  • jbeich/mesa
  • yaongtime/mesa
  • xdontwox/mesa
  • jsg/mesa
  • EasyIP2023/mesa
  • Satyajit/mesa
  • jmunhoz/mesa
  • luigi.santivetti/mesa
  • italove/mesa
  • shawnguo/mesa
  • ricardoquesada/mesa
  • bcheng/mesa
  • Fahien/mesa
  • chrisf/mesa
  • alexhenrie/mesa
  • Yaong/mesa
  • gtskhadadze83/mesa
  • brightclark/mesa
  • gongmingqing/mesa
  • chturne/mesa
  • fjdegroo/mesa
  • dwg/mesa
  • hattrickcr7/mesa
  • Corngood/mesa
  • ccallawa/mesa
  • nh2/mesa
  • neobrain/mesa
  • yogeshmohan/mesa
  • felixonmars/mesa
  • hch12907/mesa
  • kode54/mesa
  • Sudland/mesa
  • woodychow/mesa
  • pichika/mesa
  • jschueller/mesa
  • tagr/mesa
  • Yang/mesa
  • ChaojiangLuo/mesa
  • vivekvpandya/mesa
  • yshui/mesa
  • av.linux.dev/mesa
  • DPA/mesa
  • m.tretter/mesa
  • mcoffin/mesa
  • johnkeeping/mesa
  • zhuyong/mesa
  • wareyang/mesa
  • jbates/mesa
  • boyzhang/mesa
  • padovan/mesa
  • xxmitsu/mesa
  • skarczew/mesa
  • alimon/mesa
  • RavenGSD/mesa
  • tguillem/mesa
  • mupuf/mesa
  • rui/mesa
  • ryanneph/mesa
  • Igortorrente/mesa
  • randrianasulu/mesa
  • dmrlawson/mesa
  • Jsn2win/mesa
  • krupatel/mesa
  • sahouston/mesa
  • tangm/mesa
  • qarmin/mesa
  • alex.kanavin/mesa
  • johnbradstreet/mesa
  • igor.v.kovalenko/mesa
  • OnikenX/mesa
  • martell/mesa
  • themaister/mesa
  • BranDougherty/mesa
  • MJDSys/mesa
  • segfaultxavi/mesa
  • pleath/mesa
  • tongwang-en/mesa
  • ptt-en/mesa
  • JoelLinn/mesa
  • Danil/mesa
  • theogen/mesa
  • luigifcruz/mesa
  • chenli/mesa
  • vjaquez/mesa
  • apopple/mesa
  • theozzhh79/mesa
  • BryanQuigley/mesa
  • rroohhh/mesa
  • caramelli/mesa
  • mforney/mesa
  • yannik/mesa
  • twoerner/mesa
  • zhangguoqing.kernel/mesa
  • swartzlib7/mesa
  • sergey042011/mesa
  • nicuborta123/mesa
  • lyintel/mesa
  • q4a/mesa-panfrost
  • q4a/mesa
  • alexander.kapshuk/mesa
  • stephane.marchesin/mesa
  • jeremyhu/mesa
  • bl4ckb0ne/mesa
  • geecandrey/mesa
  • wenxiaoming/mesa
  • billkris.ms/mesa
  • ella/mesa
  • luporl/mesa
  • danielzgtg/mesa
  • frediz/mesa
  • lubosz/mesa
  • gio/mesa
  • rsmith/mesa
  • neo.tzion/mesa
  • pundiramit/mesa
  • zongzi13545329/mesa
  • Mic92/mesa
  • mwnn/mesa
  • tamara-schmitz/mesa
  • luckyxxl/mesa
  • jcline/mesa
  • akihiko.odaki/mesa
  • yugang/mesa
  • lljgithub/mesa
  • leeball/mesa
  • dianders/mesa
  • tina/mesa
  • jschwartzentruber/mesa
  • maccraft/mesa
  • vsyrjala/mesa
  • timothee.chabat/mesa
  • adirat/mesa
  • egalli/mesa
  • zhenhanintel/mesa
  • ccrtnsp/mesa
  • tintou/mesa
  • mhenning/mesa
  • blaws05/mesa
  • Zamundaaa/mesa
  • retrooper/mesa
  • ernstp/mesa
  • xoddark/mesa
  • ericonr/mesa
  • axylp/mesa
  • Edgeworth/mesa
  • siyueyinghua/mesa
  • asahi/mesa
  • JN-Chen/mesa
  • alshi-msft/mesa
  • williamvds/mesa
  • kupper.pa/mesa
  • A-w-x/mesa
  • Lucretia/mesa
  • shannonliu011/mesa
  • bastianbeischer/mesa
  • CosineMath/mesa
  • zzyiwei/mesa
  • lucmann/mesa
  • spronovo/mesa
  • xgupta/mesa
  • oldherl/mesa
  • ezequielgarcia/mesa
  • mercuriete/mesa
  • lumag/mesa
  • msisov/mesa
  • jialina/mesa
  • Zakhrov/mesa
  • hexin.op/mesa
  • FrostKiwi/mesa
  • PaulKocialkowski/mesa
  • flightlessmango/mesa
  • arkamar/mesa
  • khfeng/mesa
  • mrisaacb/mesa
  • zhangxiaolin.a/mesa
  • chivay/mesa
  • Daft-Freak/mesa
  • iemaghni/mesa
  • amonakov/mesa
  • zhaofengli/mesa
  • mwalle/mesa
  • marcan/mesa
  • davidedmundson/mesa
  • qihangkong/mesa
  • philn/mesa
  • lfelipe/mesa
  • Mystro256/mesa
  • wicastC/mesa
  • Gofman/mesa
  • nurmukhametov/mesa
  • ishitatsuyuki/mesa
  • phomes/mesa
  • AlexZ/mesa
  • Ermine/mesa
  • mwen/mesa
  • zboszor/mesa
  • Tooniis/mesa
  • lorenz/mesa
  • tantan/mesa
  • liamwhite/mesa
  • dyang23/mesa
  • aswarup/mesa
  • shengyao/mesa
  • zhuyl/mesa
  • bvarner/mesa
  • jeff_shuai/mesa
  • jpewhacker/mesa
  • suijingfeng/mesa
  • svenny/mesa
  • xantares/mesa
  • nicuborta/mesa
  • rakko/mesa
  • WangChuan/mesa
  • thomas.wagner/mesa
  • janjanmostafa8/mesa
  • gallo/mesa
  • gh6h56j85ihg/mesa
  • quantum/mesa
  • liuyujun/mesa
  • edman007/mesa
  • mattvchandler/mesa
  • ebaker/mesa
  • mherrb/mesa
  • alxu/mesa
  • mikezackles/mesa
  • ArvindYadav/mesa-amd
  • satmandu/mesa
  • gdevi/mesa
  • gawin/mesa
  • rbrune/mesa
  • mwezdeck/mesa
  • derekf/mesa
  • amos/mesa
  • sadlerap/mesa
  • kbrenneman/mesa
  • augustin.zidek/mesa
  • arichardson/mesa
  • jasberc/mesa
  • Pokechu22/mesa
  • h0tc0d3/mesa
  • HayashiEsme/mesa
  • Lone_Wolf/mesa
  • maniraj87/mesa
  • bbeckett/mesa
  • scholzi1980/mesa
  • ssidhart/mesa
  • mstoeckl/mesa
  • shanshengwang/mesa
  • lukvec27/mesa
  • cristicc/mesa
  • autumnontape/mesa
  • smcv/mesa
  • elmarco/mesa
  • jchen10/mesa
  • rbernon/mesa
  • Cherser-s/mesa
  • mhillenbrand/mesa
  • t.clastres/mesa
  • jxzgithub/mesa
  • Daasin/mesa-bak
  • JoseExposito/mesa
  • stefandoesinger/mesa
  • lygstate/mesa
  • larumbe/mesa
  • renatopereyra/mesa
  • raininggibs/mesa
  • sin3point14/mesa
  • chris8136393/mesa
  • microlinux/mesa
  • Markus-included/mesa
  • Jason2013/mesa
  • xndcn/mesa
  • ryan.krattiger/mesa
  • badsector/mesa
  • hamarb123/mesa
  • frankbinns/mesa
  • yulang/mesa
  • mmp.dux/mesa
  • charles-lunarg/mesa
  • gt23263tq/mesa
  • KonstantinSeurer/mesa
  • ondracka/mesa
  • biju.das.au/mesa
  • apauk/mesa
  • zwuj/mesa
  • samael/mesa
  • croberts81/mesa
  • nanokatze/mesa
  • kwk/mesa
  • StefanBruens/mesa
  • parasyte/mesa
  • kvark/mesa
  • longxin2019/mesa
  • jorcrous/mesa
  • igor.torrente/mesa
  • AidoP/mesa
  • shmerl/mesa
  • preda/mesa
  • andrey-konovalov/mesa
  • peterh/mesa
  • otaviobp/mesa
  • zeekim/mesa
  • vkoul/mesa
  • bigon/mesa
  • beviu/mesa
  • alatiera/mesa
  • cvurdige/chandan-mesa
  • jesse.zhang/mesa
  • MTCoster/mesa
  • digetx/mesa
  • gbelgurr/mesa
  • akien/mesa
  • tales-aparecida/mesa
  • jocelyn/mesa
  • helen.fornazier/mesa
  • wingdeans/mesa
  • superm1/mesa
  • justsid/mesa
  • mallemsalam/mesa
  • rajnesh-kanwal/mesa
  • illiliti/mesa
  • ghishadow/mesa
  • YusufKhan-gamedev/mesa
  • jbillingsley/mesa
  • illwieckz/mesa
  • sergi/mesa
  • jevolk/mesa
  • arunpravin24/mesa
  • jeffk/mesa
  • bkylerussell/mesa
  • jjjighg/mesa
  • Ken2022/mesa
  • skywing/mesa
  • sharny/mesa
  • vitorhnn/mesa
  • a-wai/mesa
  • xperia64/mesa
  • yuesOctober/mesa
  • nouveau/mesa
  • zzag/mesa
  • yurikoles/mesa
  • dawnhan/mesa
  • garnet/mesa
  • andrescj-chromium/mesa
  • aleasto/mesa
  • zhangn1985/mesa
  • fangbaohui/mesa
  • tiago.shibata/mesa
  • flynnjiang/mesa
  • dikidiki26138/mesa
  • bnagappa/mesa
  • zhoubm/mesa
  • wuwh91/mesa
  • chandupokuru/mesa
  • JoniSt/mesa
  • pixelcluster/mesa
  • kuove/mesa
  • asahilina/mesa
  • evelez/mesa
  • skeller/mesa
  • limingchina1/mesa
  • panos-lunarg/mesa
  • zehortigoza/mesa
  • i509VCB/mesa
  • bigbear1385/mesa
  • tbettler/mesa
  • skyostil/mesa
  • Soroush/mesa
  • newbluemoon/mesa
  • jdtatz/mesa
  • chuansheng/mesa
  • jjun.9523/mesa
  • kai/mesa
  • jheaff1/mesa
  • TSnake41/mesa
  • flakylawww/mesa
  • alexfanqi/mesa
  • dakr/mesa
  • TheSpydog/mesa
  • ikshwaku.chauhan_amd/ikshwaku-mesa
  • justonli/mesa
  • Frogging101/mesa
  • sarojk/mesa
  • sjfricke/mesa
  • PixelyIon/mesa
  • adolfintel/mesa
  • vikramsingh0204/mesa
  • riteo/mesa
  • xphillyx/mesa
  • markboth/mesa
  • MaxKellermann/mesa
  • bitstreamout/mesa-fork
  • kg233/mesa-rkuixi-fork
  • zhililab/mesa
  • isinyaaa/mesa
  • swick/mesa
  • JeremyRand/mesa
  • thomas.devoogdt/mesa
  • Thaodan/mesa
  • delphij/mesa
  • zhanglianjie-163/mesa
  • d.ivo/mesa
  • os369510/mesa
  • shanep/mesa
  • alikates/mesa
  • Smokey365/mesa
  • nanotwerp/nanomesa
  • Beyley/mesa-glide
  • semjon00/mesa
  • andri/mesa
  • jadeja14890/mesa
  • bydavenet/mesa
  • mainiomano/mesa
  • flibitijibibo/mesa
  • endlesspring/mesa
  • kulikjak/mesa
  • lun/mesa
  • RandomShaper/mesa
  • georgeouzou/mesa
  • christophe-lunarg/mesa
  • Reiver/mesa
  • morphis/mesa
  • fvogt/mesa
  • Erdroy/mesa
  • antmonteiro/mesa
  • deathmist/mesa
  • michaelonchrome/mesa
  • sukhatri/mesa-sukhatri
  • tommydrum/mesa
  • jenneron/mesa
  • momo666750/mesa
  • antoniospg100/mesa
  • noah1510/mesa
  • mairacanal/mesa
  • rmckeever/mesa
  • jfoxwoosh/mesa
  • Triang3l/mesa
  • marysaka/mesa
  • morrisoncave56/mesa
  • MayeulC/mesa
  • himanshu.nayak/mesa-him
  • 8infy/mesa
  • ayaka/mesa
  • Chiitoo/mesa
  • jkqxz/mesa
  • zxs-un/mesa-riscv
  • zxs-un/mesa
  • pyuan/mesa
  • GermanAizek/mesa
  • StaticRocket/mesa
  • dwlsalmeida/mesa
  • heftig/mesa
  • mgorny/mesa
  • WebsterEndymion/mesa
  • qyliss/mesa
  • stilriv/mesa
  • zzcc231/mesa
  • davidwu2/mesa
  • iaguis/mesa
  • evan.quan/mesa
  • martty/mesa
  • nowrep/mesa
  • osy/mesa
  • Azedin1111/mesa
  • Quipyowert2/mesa
  • nihui/mesa
  • libyahhh519/mesa
  • filip.binkiewicz/mesa
  • Jing/mesa
  • ilikerackmounts/mesa
  • EmperorPenguin18/mesa
  • yixie/mesa
  • gustafullberg/mesa
  • etaash.mathamsetty/mesa
  • hongaoo/mesa
  • hlinander/mesa
  • crab2313/mesa
  • msahastr/mesa
  • driver1998/mesa
  • amber/mesa
  • CounterPillow/mesa
  • shangyatsen/mesa
  • rosefromthedead/mesa
  • ItzSwirlz/mesa
  • kwizart/mesa
  • sobkas/mesa
  • timvp/mesa
  • philipl/mesa
  • turol/mesa
  • antonino/mesa
  • valpackett/mesa
  • X547/mesa
  • alanc/mesa
  • soonray8989/mesa
  • xxlxng25/mesa
  • mivanchev/mesa
  • wangxiaoming321/mesa
  • yangyangdaji/mesa
  • atmitch75/mesa
  • Hazematman/mesa
  • gfx-ci-bot/mesa
  • zaps166/mesa
  • CFSworks/mesa
  • lynne/mesa
  • lorn10/mesa
  • MrPurple666/mesa
  • pino/mesa
  • ccawley2011/mesa
  • lukeyyyy/mesa
  • maririn312/mesa
  • mohamexiety/mesa
  • chenrui/mesa
  • gmitrano/mesa
  • ndeshpan/mesa
  • cheako/mesa
  • xzhan34/mesa
  • heitbaum/mesa
  • LunaFoxgirlVT/mesa
  • tengjinchung/mesa
  • wujiangGitHub/mesa
  • K900/mesa
  • lb90/mesa
  • DodoGTA/mesa-nvk
  • moiman/mesa
  • Rui511/mesa
  • andrealmeid/mesa
  • Macdu/mesa
  • raun/mesa
  • jannau/mesa
  • ouchuan/mesa
  • jdknight/mesa
  • weibinwu/mesa
  • davidre/mesa
  • fcui/mesa
  • rawoul/mesa
  • stolk/mesa
  • alan_previn_intel/mesa-alan-previn-features
  • Yogayaojia/mesa
  • lucaweiss/mesa
  • JiadongZhu/mesa
  • asriniva/mesa
  • nitin.reddy88/mesa
  • Sterophonick/mesa
  • Teddy-Kun/mesa
  • donaldrobson/mesa
  • jide/mesa
  • kkartaltepe/mesa
  • mbouron/mesa
  • pkubaj/mesa
  • nora/mesa
  • dvrogozh1/mesa
  • MrRobbin/mesa
  • Ristovski/mesa
  • veerabadhran/mesa
  • Kiskae/mesa
  • vaishali/mesa
  • gbeatty/mesa
  • doraskayo/mesa
  • benjaminl/mesa
  • Blisto/mesa
  • baikaishiuc/mesa
  • shanminchao/mesa
  • Samsuper/mesa
  • phodina/mesa
  • diederik/mesa
  • adamjoseph/mesa
  • xry111/mesa
  • dburkov05/mesa
  • penguin42/mesa
  • tpambor/mesa
  • stepri/mesa
  • vigneshraman/mesa
  • Julia/mesa
  • bishoman123/mesa
  • rosasco-wk/mesa
  • jani/mesa
  • smaeul/mesa
  • QwertyChouskie/mesa
  • K1ngst0m/mesa
  • conversy/mesa
  • WinLinux1028/mesa-fix
  • Nefsen402/mesa
  • tripzero/mesa
  • max8rr8/mesa
  • MaxVerevkin/mesa
  • BinHani/mesa
  • spencercw/mesa
  • jazzfool/mesa
  • renfeng/mesa
  • 246tnt/mesa
  • twisted89/mesa
  • iyes/mesa
  • krz/mesa
  • Conan_Kudo/mesa
  • kociap/mesa
  • huangrui666/mesa
  • mildsunrise/mesa
  • ids1024/mesa
  • VladSchillerimgtec/mesa
  • zwang20/mesa
  • LaserEyess/mesa
  • carsten.haitzler/mesa
  • doitsujin/mesa
  • fzatlouk/mesa
  • afd/mesa
  • ratatouillemorde/mesa
  • reillybrogan/mesa
  • vanvugt/mesa
  • ralphcampbell/mesa
  • llyyr/mesa
  • amdrexu/mesa
  • oreaus/mesa
  • liucong2/mesa
  • wangra/mesa
  • asuka-mio/mesa
  • slp/mesa
  • vimproved/mesa
  • antco/mesa
  • mtasaka/mesa
  • SoshyuCelia/mesa
  • cheyang/mesa
  • hmann/mesa
  • zfigura/mesa
  • haopiliu/upstream_vpelib
  • Sid127/mesa
  • jwillikers/mesa
  • 6by9/mesa
  • eerii/mesa
  • ElectrodeYT/mesa
  • rilian-la-te/mesa
  • yrlf/mesa
  • sunzhguy/mesa
  • andrewgazizov/mesa
  • nanonyme/mesa
  • lpy/mesa
  • parona/mesa
  • cgbowman/mesa
  • YukariChiba/mesa
  • jexposit/mesa
  • kiroma/mesa
  • theoparis/mesa
  • Tele42/mesa
  • Dudemanguy/mesa
  • blu/mesa
  • myelin/mesa
  • strongtz/mesa
  • detlev.c/mesa
  • MollySophia/mesa
  • dabrain34/mesa
  • jnoorman/mesa
  • leio/mesa
  • Reflux5231/mesa
  • lihongtao/mesa
  • anthony-linaro/mesa
  • tshikaboom/mesa
  • ramenguy99/mesa
  • vhorinek/mesa
  • GKraats/mesa_alu
  • russelltg/mesa
  • rgallaispou/mesa
  • pleasurefish/mesa
  • SupSuper/mesa
  • chaos_princess/mesa
  • chrisduerr/mesa
  • MouriNaruto/mesa
  • absurdistcode/mesa
  • daoxiang.gong/mesa
  • chyyran/mesa
  • Snowiiii/mesa
  • rooq/mesa
  • colinmarc/mesa
  • rpavlik/mesa
  • DarkFire01/mesa
  • VladimirTechMan/mesa
  • Anzel/mesa
  • catvinyl/mesa
  • h0lyalg0rithm/mesa
  • fweimer/mesa
  • Anorak/mesa
  • imagination/mesa
  • javierm/mesa
  • ericsmith/mesa
  • tranquillity-codes/mesa
  • dan.g.tob/mesa
  • ekurzinger/mesa
  • zdobersek/mesa-fork
  • dodger_mink/mesa
  • tursulin/mesa-llandwerlin
  • Vladimir-A/mesa
  • surafel911/mesa
  • thfr/mesa
  • City-busz/mesa
  • dtobolik/mesa
  • sarthakbhatt/mesa
  • Jorropo/mesa
  • rankinc/mesa
  • sushmave/mesa
  • IsaacMarovitz/mesa
  • vnovotny/mesa
  • smit-mayani/mesa
  • Yifan.Zhang/merge-gfx-patch
  • K0bin/mesa
  • qbojj/mesa
  • Valentine/mesa
  • SludgePhD/mesa
  • tong1wu/mesa
  • npopov/mesa
  • alexmrqt/mesa
  • chipitsine/mesa
  • Mstrodl/mesa
  • whot/mesa
  • cmsanta/mesa
  • kaiwenjon/mesa
  • ystreet/mesa
  • sixtyfourktec/mesa
  • yu-re-ka/mesa
  • vorporeal/mesa
  • MischaBaars/mesa
  • peytolee/mesa-radeonsi
  • zack/mesa
  • nadaouf/mesa
  • ahuillet/mesa
  • oscarbg/mesa
  • thsr/mesa
  • JCWasmx86/mesa
  • gonsolo/mesa
  • msizanoen1/mesa
  • subzeroxr3i/mesa
  • NaveenKumar/mesa
  • Civiloid/mesa
  • phreer/mesa
  • amazingfate/mesa
  • zsnow/mesa
  • aperezdc/mesa
  • cepsylon/mesa
  • Pipetto-crypto/mesa
  • yuanqingxiang520/mesa
  • jvutukur/mesa
  • zachary.battleman/mesa
  • ncopa/mesa
  • ao2/mesa
  • e.rosebrock/mesa
  • bbhtt/mesa
  • marvelrenju1/mesa
  • hmtheboy154/mesa
  • asurati/mesa
  • ahokananoevolution/mesa
  • FredFunk/mesa
  • zturtleman/mesa
  • MingcongBai/mesa
  • dbrouwer/mesa
  • wswsmao/mesa
  • dlundqvist/mesa
  • DDoSQc/mesa
  • mahkoh/mesa
  • TimHuang/mesa
  • jeremyg/mesa
  • n3rdopolis/mesa
  • CreativeCylon/mesa
  • rjodin/mesa
  • mastag/mesa
  • alihomafar/mesa
  • smartavionics/mesa
  • esdrastarsis/mesa
  • spottumu/mesa
  • ShenghuaLinINTEL/mesa
  • Calandracas/mesa
  • dougg3/mesa
  • jsimmons1/mesa
  • mcatanzaro/mesa
  • yinjiyao/mesa
  • Zhaojiale/mesa
  • agd5f/mesa
  • Jelgnum/add-RADV_UMR_EXTRA_ARGS-docs
  • jopadan/mesa
  • DeeptiPatil/mesa
  • alvinhochun/mesa
  • ShriramShastry/mesa
  • Jaakkonen/mesa
  • pmenzel/mesa
  • raki-huawei/mesa
  • xen0n/mesa
  • Zer0xFF/mesa
  • twitt-thornwaite/mesa
  • larsivsi/mesa
  • clemy/mesa
  • demarchi/mesa
  • calder/mesa
  • lemonflynn/mesa
  • asrivats/mesa
  • ketil.johnsen/mesa
  • Trigger.Huang/mesa
  • brad0/mesa
  • RussellLiu/mesa
  • quic_lkondred/mesa
  • mombasa/mesa
  • jmacnak/mesa
  • company/mesa
  • jna/mesa
  • utkuiseri-arm/mesa
  • ritalat/mesa
  • dsvensson/mesa
  • jules.blok/mesa
  • Drakulix/mesa
  • iforbes/mesa
  • zhanghe9702/mesa
  • slouken/mesa
  • chihchie/mesa
  • Guy1524/mesa
  • Hust-YL/hust-yl-mesa
  • ziyao233/mesa
  • MegWATTT/mesa
  • genhoayi/mesa
  • me-cafebabe/mesa
  • EBADBEEF/mesa
  • manueldun/mesa
  • xclaesse/mesa
  • chenyche_codegen/mesa
  • lcagustini/mesa
  • jkim/mesa
  • marc-hb/mesa
  • benh/mesa
  • shreeya/mesa
  • vladly/mesa
  • poweif/mesa
  • zeux/mesa
  • whao/mesa
  • Yanfeng-Mi/mesa
  • fuel-pcbox/mesa
  • sewn/mesa
  • JohannesKauffmann/mesa
  • barracuda156/mesa
  • provod/mesa
  • xytovl/mesa
  • dtgs1208/mesa
  • mbrost/mesa-bind-queues
  • fknfilewalker/mesa
  • benjarobin/mesa
  • jameshogan/mesa
  • caciottax86/mesa
  • Gobrosse/mesa
  • runderwo/mesa
  • orowith2os/oro-mesa
  • hnez/mesa
  • gizmo98/mesa-hwdb
  • tjk/mesa
  • sarbes/mesa
  • GabiAle97/mesa-termux
  • ashleysmithcol/mesa
  • SnowyCoder/mesa
  • aswolfers/mesa
  • InFamousBear/mesa
  • adalessandro/mesa
  • thesamesam/mesa
  • zzxyb/mesa
  • rpsingh.amd/mesa
  • lool/mesa
  • molinari/mesa
  • chrpil/mesa
  • iv-m/mesa
  • leftmostcat/mesa
  • gaoshunli/mesa
  • Nunwan/mesa
  • forbiddenlake/mesa
  • taras.pisetskyi/mesa
  • andrei.matraguna/mesa
  • mdziuban/mesa
  • zlice1/mesa
  • cfoch/mesa
  • kpouget/mesa
  • nikolaszimmermann/mesa
  • kennylevinsen/mesa
  • itistotalbotnet/mesa
1222 results
Show changes
Commits on Source (236)
Showing
with 1308 additions and 651 deletions
......@@ -2,13 +2,18 @@
set -ex
CROSVM_VERSION=f904b0ee258554bca9fed1b633b79e6d96003cf0
git clone --single-branch -b for-mesa-ci --no-checkout https://gitlab.freedesktop.org/tintou/crosvm.git /platform/crosvm
SCRIPT_DIR="$(pwd)"
CROSVM_VERSION=c7cd0e0114c8363b884ba56d8e12adee718dcc93
git clone --single-branch -b main --no-checkout https://chromium.googlesource.com/chromiumos/platform/crosvm /platform/crosvm
pushd /platform/crosvm
git checkout "$CROSVM_VERSION"
git submodule update --init
# Apply all crosvm patches for Mesa CI
cat "$SCRIPT_DIR"/.gitlab-ci/container/build-crosvm_*.patch |
patch -p1
VIRGLRENDERER_VERSION=45070fae92d25a726d9ce10fc22c1f92270ecd35
VIRGLRENDERER_VERSION=0564c9a0c2f584e004a7d4864aee3b8ec9692105
rm -rf third_party/virglrenderer
git clone --single-branch -b master --no-checkout https://gitlab.freedesktop.org/virgl/virglrenderer.git third_party/virglrenderer
pushd third_party/virglrenderer
......
From 3c57ec558bccc67fd53363c23deea20646be5c47 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date: Wed, 17 Nov 2021 10:18:04 +0100
Subject: [PATCH] Hack syslog out
It's causing stability problems when running several Crosvm instances in
parallel.
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
base/src/unix/linux/syslog.rs | 2 +-
common/sys_util/src/linux/syslog.rs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/base/src/unix/linux/syslog.rs b/base/src/unix/linux/syslog.rs
index 05972a3a..f0db3781 100644
--- a/base/src/unix/linux/syslog.rs
+++ b/base/src/unix/linux/syslog.rs
@@ -35,7 +35,7 @@ pub struct PlatformSyslog {
impl Syslog for PlatformSyslog {
fn new() -> Result<Self, Error> {
Ok(Self {
- socket: Some(openlog_and_get_socket()?),
+ socket: None,
})
}
diff --git a/common/sys_util/src/linux/syslog.rs b/common/sys_util/src/linux/syslog.rs
index 05972a3a..f0db3781 100644
--- a/common/sys_util/src/linux/syslog.rs
+++ b/common/sys_util/src/linux/syslog.rs
@@ -35,7 +35,7 @@ pub struct PlatformSyslog {
impl Syslog for PlatformSyslog {
fn new() -> Result<Self, Error> {
Ok(Self {
- socket: Some(openlog_and_get_socket()?),
+ socket: None,
})
}
--
2.25.1
......@@ -64,7 +64,7 @@ download_skia_source
pushd "${SKIA_DIR}"
# Apply all skqp patches for Mesa CI
cat "${SKQP_PATCH_DIR}"/*.patch |
cat "${SKQP_PATCH_DIR}"/build-skqp_*.patch |
patch -p1
# Fetch some needed build tools needed to build skia/skqp.
......
......@@ -8,11 +8,11 @@ variables:
DEBIAN_X86_TEST_BASE_IMAGE: "debian/x86_test-base"
DEBIAN_X86_TEST_IMAGE_PATH: "debian/x86_test-gl"
DEBIAN_X86_TEST_GL_TAG: "2022-04-05-deqp-runner"
DEBIAN_X86_TEST_GL_TAG: "2022-04-07-virgl-crosvm"
DEBIAN_X86_TEST_VK_TAG: "2022-04-05-deqp-runner"
FEDORA_X86_BUILD_TAG: "2022-03-18-spirv-tools-5"
KERNEL_ROOTFS_TAG: "2022-04-05-deqp-runner"
KERNEL_ROOTFS_TAG: "2022-04-07-prefix-skqp"
WINDOWS_X64_BUILD_PATH: "windows/x64_build"
WINDOWS_X64_BUILD_TAG: "2022-20-02-base_split"
......
......@@ -74,7 +74,7 @@ def generate_lava_yaml(args):
'visibility': { 'group': [ args.visibility_group ] },
'priority': 75,
'context': {
'extra_nfsroot_args': ' init=/init rootwait'
'extra_nfsroot_args': ' init=/init rootwait usbcore.quirks=0bda:8153:k'
},
'timeouts': {
'job': {
......
......@@ -58,6 +58,7 @@ EXPAND_ONLY_PREDEF = YES
# Defines required to keep doxygen from tripping on our attribute macros
PREDEFINED = PACKED=
PREDEFINED += ATTRIBUTE_CONST=
PREDEFINED += MUST_CHECK=
""")
def run_doxygen(output_path, input_paths=[]):
......
......@@ -226,6 +226,19 @@ the :doc:`Xlib software driver page <xlibdriver>` for details.
:envvar:`MESA_GLX_ALPHA_BITS`
specifies default number of bits for alpha channel.
Mesa WGL driver environment variables
-------------------------------------
The following are only applicable to the Mesa WGL driver, which is in use
on Windows.
:envvar:`WGL_FORCE_MSAA`
if set to a positive value, specifies the number of MSAA samples to
force when choosing the display configuration.
:envvar:`WGL_DISABLE_ERROR_DIALOGS`
if set to 1, true or yes, disables Win32 error dialogs. Useful for
automated test-runs.
Intel driver environment variables
----------------------------------------------------
......
......@@ -522,7 +522,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_surface DONE (anv, lvp, radv, tu, v3dv, vn)
VK_KHR_surface_protected_capabilities DONE (anv, lvp, radv, v3dv, vn)
VK_KHR_swapchain DONE (anv, lvp, radv, tu, v3dv, vn)
VK_KHR_swapchain_mutable_format DONE (anv, radv, v3dv, vn)
VK_KHR_swapchain_mutable_format DONE (anv, lvp, radv, v3dv, vn)
VK_KHR_wayland_surface DONE (anv, lvp, radv, tu, v3dv, vn)
VK_KHR_workgroup_memory_explicit_layout DONE (anv, radv)
VK_KHR_win32_keyed_mutex not started
......@@ -560,7 +560,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_EXT_physical_device_drm DONE (anv, radv, tu, v3dv)
VK_EXT_post_depth_coverage DONE (anv/gfx10+, lvp, radv/gfx10+)
VK_EXT_primitive_topology_list_restart DONE (anv, lvp, radv, tu)
VK_EXT_primitives_generated_query DONE (lvp)
VK_EXT_primitives_generated_query DONE (lvp, tu)
VK_EXT_provoking_vertex DONE (anv, lvp, radv, tu, v3dv)
VK_EXT_queue_family_foreign DONE (anv, radv, vn)
VK_EXT_robustness2 DONE (anv, radv, tu)
......
......@@ -5,3 +5,4 @@ Vulkan 1.3 support on lavapipe
VK_EXT_graphics_pipeline_library on lavapipe
VK_EXT_primitives_generated_query on lavapipe
VK_EXT_image_2d_view_of_3d on ANV and lavapipe
VK_KHR_swapchain_mutable_format on lavapipe
Base object structs
===================
The Vulkan runtime code provides a set of base object structs which must be
used if you want your driver to take advantage of any of the runtime code.
There are other base structs for various things which are not covered here
but those are optional. The ones covered here are the bare minimum set
which form the core of the Vulkan runtime code:
.. contents::
:local:
As one might expect, :cpp:struct:`vk_instance` is the required base struct
for implementing ``VkInstance``, :cpp:struct:`vk_physical_device` is
required for ``VkPhysicalDevice``, and :cpp:struct:`vk_device` for
``VkDevice``. Everything else must derive from
:cpp:struct:`vk_vk_objet_base` or from some struct that derives from
:cpp:struct:`vk_vk_objet_base`.
vk_object_base
--------------
The root base struct for all Vulkan objects is
:cpp:struct:`vk_object_base`. Every object exposed to the client through
the Vulkan API *must* inherit from :cpp:struct:`vk_object_base` by having a
:cpp:struct:`vk_object_base` or some struct that inherits from
:cpp:struct:`vk_object_base` as the driver struct's first member. Even
though we have `container_of()` and use it liberally, the
:cpp:struct:`vk_object_base` should be the first member as there are a few
places, particularly in the logging framework, where we use void pointers
to avoid casting and this only works if the address of the driver struct is
the same as the address of the :cpp:struct:`vk_object_base`.
The standard pattern for defining a Vulkan object inside a driver looks
something like this:
.. code-block:: c
struct drv_sampler {
struct vk_object_base base;
/* Driver fields */
};
VK_DEFINE_NONDISP_HANDLE_CASTS(drv_sampler, base, VkSampler,
VK_OBJECT_TYPE_SAMPLER);
Then, to the object in a Vulkan entrypoint,
.. code-block:: c
VKAPI_ATTR void VKAPI_CALL drv_DestroySampler(
VkDevice _device,
VkSampler _sampler,
const VkAllocationCallbacks* pAllocator)
{
VK_FROM_HANDLE(drv_device, device, _device);
VK_FROM_HANDLE(drv_sampler, sampler, _sampler);
if (!sampler)
return;
/* Tear down the sampler */
vk_object_free(&device->vk, pAllocator, sampler);
}
The :cpp:any:`VK_DEFINE_NONDISP_HANDLE_CASTS()` macro defines a set of
type-safe cast functions called ``drv_sampler_from_handle()`` and
``drv_sampler_to_handle()`` which cast a :cpp:type:`VkSampler` to and from a
``struct drv_sampler *``. Because compile-time type checking with Vulkan
handle types doesn't always work in C, the ``_from_handle()`` helper uses the
provided :cpp:type:`VkObjectType` to assert at runtime that the provided
handle is the correct type of object. Both cast helpers properly handle
``NULL`` and ``VK_NULL_HANDLE`` as inputs. The :cpp:any:`VK_FROM_HANDLE()`
macro provides a convenient way to declare a ``drv_foo`` pointer and
initialize it from a ``VkFoo`` handle in one smooth motion.
.. doxygenstruct:: vk_object_base
:members:
.. doxygenfunction:: vk_object_base_init
.. doxygenfunction:: vk_object_base_finish
.. doxygendefine:: VK_DEFINE_HANDLE_CASTS
.. doxygendefine:: VK_DEFINE_NONDISP_HANDLE_CASTS
.. doxygendefine:: VK_FROM_HANDLE
vk_instance
-----------
.. doxygenstruct:: vk_instance
:members:
.. doxygenfunction:: vk_instance_init
.. doxygenfunction:: vk_instance_finish
Once a driver has a :cpp:struct:`vk_instance`, implementing all the various
instance-level ``vkGet*ProcAddr()`` entrypoints is trivial:
.. code-block:: c
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
drv_GetInstanceProcAddr(VkInstance _instance,
const char *pName)
{
VK_FROM_HANDLE(vk_instance, instance, _instance);
return vk_instance_get_proc_addr(instance,
&drv_instance_entrypoints,
pName);
}
PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
vk_icdGetInstanceProcAddr(VkInstance instance,
const char *pName);
PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
vk_icdGetInstanceProcAddr(VkInstance instance,
const char *pName)
{
return drv_GetInstanceProcAddr(instance, pName);
}
PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance,
const char* pName);
PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance,
const char* pName)
{
VK_FROM_HANDLE(vk_instance, instance, _instance);
return vk_instance_get_physical_device_proc_addr(instance, pName);
}
The prototypes for the ``vk_icd*`` versions are needed because those are not
actually defined in the Vulkan headers and you need the prototype somewhere
to get the C compiler to not complain. These are all implemented by
wrapping one of the provided ``vk_instance_get*_proc_addr()`` functions.
.. doxygenfunction:: vk_instance_get_proc_addr
.. doxygenfunction:: vk_instance_get_proc_addr_unchecked
.. doxygenfunction:: vk_instance_get_physical_device_proc_addr
We also provide an implementation of
``vkEnumerateInstanceExtensionProperties()`` which can be used similarly:
.. code-block:: c
VKAPI_ATTR VkResult VKAPI_CALL
drv_EnumerateInstanceExtensionProperties(const char *pLayerName,
uint32_t *pPropertyCount,
VkExtensionProperties *pProperties)
{
if (pLayerName)
return vk_error(NULL, VK_ERROR_LAYER_NOT_PRESENT);
return vk_enumerate_instance_extension_properties(
&instance_extensions, pPropertyCount, pProperties);
}
.. doxygenfunction:: vk_enumerate_instance_extension_properties
vk_physical_device
------------------
.. doxygenstruct:: vk_physical_device
:members:
.. doxygenfunction:: vk_physical_device_init
.. doxygenfunction:: vk_physical_device_finish
vk_device
------------------
.. doxygenstruct:: vk_device
:members:
.. doxygenfunction:: vk_device_init
.. doxygenfunction:: vk_device_finish
Dispatch
=============
This chapter attemtps to document the Vulkan dispatch infrastructure in the
Mesa Vulkan runtime. There are a lot of moving pieces here but the end
result has proven quite effective for implementing all the various Vulkan
API requirements.
Extension tables
----------------
The Vulkan runtime defines two extension table structures, one for instance
extensions and one for device extensions which contain a Boolean per
extension. The device table looks like this:
.. code-block:: c
#define VK_DEVICE_EXTENSION_COUNT 238
struct vk_device_extension_table {
union {
bool extensions[VK_DEVICE_EXTENSION_COUNT];
struct {
bool KHR_8bit_storage;
bool KHR_16bit_storage;
bool KHR_acceleration_structure;
bool KHR_bind_memory2;
...
};
};
};
The instance extension table is similar except that it includes the
instance level extensions. Both tables are actually unions so that you can
access the table either by name or as an array. Accessing by name is
typically better for human-written code which needs to query for specific
enabled extensions or declare a table of which extensions a driver
supports. The array form is convenient for more automatic code which wants
to iterate over the table.
These tables are are generated automatically using a bit of python code that
parses the vk.xml from the `Vulkan-Docs repo
<https://github.com/KhronosGroup/Vulkan-docs/>`_, enumerates the
extensions, sorts them by instance vs. device and generates the table.
Generating it from XML means that we never have to manually maintain any of
these data structures; they get automatically updated when someone imports
a new version of vk.xml. We also generates a matching pair of tables of
``VkExtensionProperties``. This makes it easy to implement
``vkEnumerate*ExtensionProperties()`` with a simple loop that walks a table
of supported extensions and copies the VkExtensionProperties for each
enabled entry. Similarly, we can have a loop in ``vkCreateInstance()`` or
``vkCreateDevice()`` which takes the ``ppEnabledExtensionNames`` and fills
out the table with all enabled extensions.
Entrypoint and dispatch tables
------------------------------
Entrypoint tables contain a function pointer for every Vulkan entrypoint
within a particular scope. There are separate tables for instance,
physical device, and device-level functionality. The device entrypoint
table looks like this:
.. code-block:: c
struct vk_device_entrypoint_table {
PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
PFN_vkDestroyDevice DestroyDevice;
PFN_vkGetDeviceQueue GetDeviceQueue;
PFN_vkQueueSubmit QueueSubmit;
...
#ifdef VK_USE_PLATFORM_WIN32_KHR
PFN_vkGetSemaphoreWin32HandleKHR GetSemaphoreWin32HandleKHR;
#else
PFN_vkVoidFunction GetSemaphoreWin32HandleKHR;
# endif
...
};
Every entry that requires some sort of platform define is wrapped in an
``#ifdef`` and declared as the actual function pointer type if the platform
define is set and declared as a void function otherwise. This ensures that
the layout of the structure doesn't change based on preprocessor symbols
but anyone who has the platform defines set gets the real prototype and
anyone who doesn't can use the table without needing to pull in all the
platform headers.
Dispatch tables are similar to entrypoint tables except that they're
de-duplicated so that aliased entrypoints have only one entry in the table.
The device dispatch table looks like this:
.. code-block:: c
struct vk_device_dispatch_table {
PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
PFN_vkDestroyDevice DestroyDevice;
PFN_vkGetDeviceQueue GetDeviceQueue;
PFN_vkQueueSubmit QueueSubmit;
...
union {
PFN_vkResetQueryPool ResetQueryPool;
PFN_vkResetQueryPoolEXT ResetQueryPoolEXT;
};
...
};
In order to allow code to use any of the aliases for a given entrypoint,
such entrypoints are wrapped in a union. This is important because we need
to be able to add new aliases potentially at any Vulkan release and we want
to do so without having to update all the driver code which uses one of the
newly aliased entrypoints. We could require that everyone use the first
name an entrypoint ever has but that gets weird if, for instance, it's
introduced in an EXT extension and some driver only ever implements the KHR
or core version of the feature. It's easier for everyone if we make all
the entrypoint names work.
An entrypoint table can be converted to a dispatch table by compacting it
with one of the ``vk_*_dispatch_table_from_entrypoints()`` family of
functions:
.. code-block:: c
void vk_instance_dispatch_table_from_entrypoints(
struct vk_instance_dispatch_table *dispatch_table,
const struct vk_instance_entrypoint_table *entrypoint_table,
bool overwrite);
void vk_physical_device_dispatch_table_from_entrypoints(
struct vk_physical_device_dispatch_table *dispatch_table,
const struct vk_physical_device_entrypoint_table *entrypoint_table,
bool overwrite);
void vk_device_dispatch_table_from_entrypoints(
struct vk_device_dispatch_table *dispatch_table,
const struct vk_device_entrypoint_table *entrypoint_table,
bool overwrite);
Generating driver dispatch tables
---------------------------------
Entrypoint tables can be easily auto-generated for your driver. Simply put
the following in the driver's ``meson.build``, modified as necessary:
.. code-block::
drv_entrypoints = custom_target(
'drv_entrypoints',
input : [vk_entrypoints_gen, vk_api_xml],
output : ['drv_entrypoints.h', 'drv_entrypoints.c'],
command : [
prog_python, '@INPUT0@', '--xml', '@INPUT1@', '--proto', '--weak',
'--out-h', '@OUTPUT0@', '--out-c', '@OUTPUT1@', '--prefix', 'drv',
],
depend_files : vk_entrypoints_gen_depend_files,
)
The generated ``drv_entrypoints.h`` fill will contain prototypes for every
Vulkan entrypoint, prefixed with what you passed to ``--prefix`` above.
For instance, if you set ``--prefix drv`` and the entrypoint name is
``vkCreateDevice()``, the driver entrypoint will be named
``drv_CreateDevice()``. The ``--prefix`` flag can be specified multiple
times if you want more than one table. It also generates an entrypoint
table for each prefix and each dispatch level (instance, physical device,
and device) which is populated using the driver's functions. Thanks to our
use of weak function pointers (or something roughly equivalent for MSVC),
any entrypoints which are not implented will automatically show up as
``NULL`` entries in the table rather than resulting in linking errors.
The above generates entrypoint tables because, thanks to aliasing and the C
rules around const struct declarations, it's not practical to generate a
dispatch table directly. Before they can be passed into the relevant
``vk_*_init()`` function, the entrypoint table will have to be converted to
a dispatch table. The typical pattern for this inside a driver looks
something like this:
.. code-block:: c
struct vk_instance_dispatch_table dispatch_table;
vk_instance_dispatch_table_from_entrypoints(
&dispatch_table, &anv_instance_entrypoints, true);
vk_instance_dispatch_table_from_entrypoints(
&dispatch_table, &wsi_instance_entrypoints, false);
result = vk_instance_init(&instance->vk, &instance_extensions,
&dispatch_table, pCreateInfo, pAllocator);
if (result != VK_SUCCESS) {
vk_free(pAllocator, instance);
return result;
}
The ``vk_*_dispatch_table_from_entrypoints()`` functions are designed so
that they can be layered like this. In this case, it starts with the
instance entrypoints from the Intel vulkan driver and then adds in the WSI
entrypoints. If there are any entrypoints duplicated between the two, the
first one to define the entrypoint wins.
Common Vulkan entrypoints
-------------------------
For the Vulkan runtime itself, there is a dispatch table with the
``vk_common`` prefix used to provide common implementations of various
entrypoints. This entrypoint table is added last as part of
``vk_*_init()`` so that the driver implementation will always be used, if
there is one.
This is used to implement a bunch of things on behalf of the driver. The
most common case is whenever there are ``vkFoo()`` and ``vkFoo2()``
entrypoints. We provide wrappers for nearly all of these that implement
``vkFoo()`` in terms of ``vkFoo2()`` so a driver can switch to the new one
and throw the old one away. For instance, ``vk_common_BindBufferMemory()``
looks like this:
.. code-block:: c
VKAPI_ATTR VkResult VKAPI_CALL
vk_common_BindBufferMemory(VkDevice _device,
VkBuffer buffer,
VkDeviceMemory memory,
VkDeviceSize memoryOffset)
{
VK_FROM_HANDLE(vk_device, device, _device);
VkBindBufferMemoryInfo bind = {
.sType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
.buffer = buffer,
.memory = memory,
.memoryOffset = memoryOffset,
};
return device->dispatch_table.BindBufferMemory2(_device, 1, &bind);
}
There are, of course, far more complicated cases of implementing
``vkFoo()`` in terms of ``vkFoo2()`` such as the
``vk_common_QueueSubmit()`` implementation. We also implement far less
trivial functionality as ``vk_common_*`` entrypoints. For instance, we
have full implementations of ``VkFence``, ``VkSemaphore``, and
``vkQueueSubmit2()``.
Entrypoint lookup
-----------------
Implementing ``vkGet*ProcAddr()`` is quite complicated because of the
Vulkan 1.2 rules around exactly when they have to return ``NULL``. When a
client calls `vkGet*ProcAddr()`, we go through a three step process resolve
the function pointer:
1. A static (generated at compile time) hash table is used to map the
entrypoint name to an index into the corresponding entry point table.
2. Optionally, the index is passed to an auto-generated function that
checks against the enabled core API version and extensions. We use an
index into the entrypoint table, not the dispatch table, because the
rules for when an entrypoint should be exposed are per-entrypoint. For
instance, `vkBindImageMemory2` is available on Vulkan 1.1 and later but
`vkBindImageMemory2KHR` is available if VK_KHR_bind_memory2 is enabled.
3. A compaction table is used to map from the entrypoint table index to
the dispatch table index and the function is finally fetched from the
dispatch table.
All of this is encapsulated within the ``vk_*_dispatch_table_get()`` and
``vk_*_dispatch_table_get_if_supported()`` families of functions. The
``_if_supported`` versions take a core version and one or more extension
tables. The driver has to provide ``vk_icdGet*ProcAddr()`` entrypoints
which wrap these functions because those have to be exposed as actual
symbols from the ``.so`` or ``.dll`` as part of the loader interface. It
also has to provide its own ``drv_GetInstanceProcAddr()`` because it needs
to pass the supported instance extension table to
:cpp:func:`vk_instance_get_proc_addr`. The runtime will provide
``vk_common_GetDeviceProcAddr()`` implementations.
Populating layer or client dispatch tables
------------------------------------------
The entrypoint and dispatch tables actually live in ``src/vulkan/util``,
not ``src/vulkan/runtime`` so they can be used by layers and clients (such
as Zink) as well as the runtime. Layers and clients may wish to populate
dispatch tables from an underlying Vulkan implementation. This can be done
via the ``vk_*_dispatch_table_load()`` family of functions:
.. code-block:: c
void
vk_instance_dispatch_table_load(struct vk_instance_dispatch_table *table,
PFN_vkGetInstanceProcAddr gpa,
VkInstance instance);
void
vk_physical_device_dispatch_table_load(struct vk_physical_device_dispatch_table *table,
PFN_vkGetInstanceProcAddr gpa,
VkInstance instance);
void
vk_device_dispatch_table_load(struct vk_device_dispatch_table *table,
PFN_vkGetDeviceProcAddr gpa,
VkDevice device);
These call the given ``vkGet*ProcAddr`` function to populate the dispatch
table. For aliased entrypoints, it will try each variant in succession to
ensure that the dispatch table entry gets populated no matter which version
of the feature you have enabled.
......@@ -9,4 +9,6 @@ hardware-agnostic bits in common code.
.. toctree::
:maxdepth: 2
base-objs
dispatch
renderpass
/*
* Copyright 2020 Red Hat, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/*
* In principle this could all go in dri_interface.h, but:
* - I want type safety in here, but I don't want to require vulkan.h from
* dri_interface.h
* - I don't especially want this to be an interface outside of Mesa itself
* - Ideally dri_interface.h wouldn't even be a thing anymore
*
* So instead let's just keep this as a Mesa-internal detail.
*/
#ifndef KOPPER_INTERFACE_H
#define KOPPER_INTERFACE_H
#include <GL/internal/dri_interface.h>
#include <vulkan/vulkan.h>
#ifdef VK_USE_PLATFORM_XCB_KHR
#include <xcb/xcb.h>
#include <vulkan/vulkan_xcb.h>
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
#include <vulkan/vulkan_wayland.h>
#endif
typedef struct __DRIkopperExtensionRec __DRIkopperExtension;
typedef struct __DRIkopperLoaderExtensionRec __DRIkopperLoaderExtension;
/**
* This extension defines the core GL-atop-VK functionality. This is used by the
* zink driver to implement GL (or other APIs) natively atop Vulkan, without
* relying on a particular window system or DRI protocol.
*/
#define __DRI_KOPPER "DRI_Kopper"
#define __DRI_KOPPER_VERSION 1
struct kopper_surface;
struct __DRIkopperExtensionRec {
__DRIextension base;
/* This is called by a kopper-aware loader in preference to the one
* in __DRI_DRISW. The additional fourth argument sets whether the winsys
* drawable is a pixmap. This matters because swapchains correspond to
* on-screen surfaces (eg X11 window) and trying to create a swapchain for
* a pixmap is undefined.
*/
__DRIdrawable *(*createNewDrawable)(__DRIscreen *screen,
const __DRIconfig *config,
void *loaderPrivate,
int pixmap);
};
/**
* Kopper loader extension.
*/
struct kopper_loader_info {
union {
VkBaseOutStructure bos;
#ifdef VK_USE_PLATFORM_XCB_KHR
VkXcbSurfaceCreateInfoKHR xcb;
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
VkWaylandSurfaceCreateInfoKHR wl;
#endif
};
int has_alpha;
};
#define __DRI_KOPPER_LOADER "DRI_KopperLoader"
#define __DRI_KOPPER_LOADER_VERSION 0
struct __DRIkopperLoaderExtensionRec {
__DRIextension base;
/* Asks the loader to fill in VkWhateverSurfaceCreateInfo etc. */
void (*SetSurfaceCreateInfo)(void *draw, struct kopper_loader_info *out);
/* Asks the loader to fill in the drawable's width and height */
void (*GetDrawableInfo)(__DRIdrawable *draw, int *w, int *h,
void *closure);
};
#endif /* KOPPER_INTERFACE_H */
......@@ -237,4 +237,6 @@ CHIPSET(0x56a5, dg2_g11, "DG2", "Intel(R) Graphics")
CHIPSET(0x56a6, dg2_g11, "DG2", "Intel(R) Graphics")
CHIPSET(0x56b0, dg2_g11, "DG2", "Intel(R) Graphics")
CHIPSET(0x56b1, dg2_g11, "DG2", "Intel(R) Graphics")
CHIPSET(0x56c0, dg2_g10, "ATS-M", "Intel(R) Graphics")
CHIPSET(0x56c1, dg2_g11, "ATS-M", "Intel(R) Graphics")
#endif
......@@ -231,6 +231,9 @@ with_gallium_lima = gallium_drivers.contains('lima')
with_gallium_zink = gallium_drivers.contains('zink')
with_gallium_d3d12 = gallium_drivers.contains('d3d12')
with_gallium_asahi = gallium_drivers.contains('asahi')
foreach gallium_driver : gallium_drivers
pre_args += '-DHAVE_@0@'.format(gallium_driver.to_upper())
endforeach
with_gallium = gallium_drivers.length() != 0
with_gallium_kmsro = with_gallium_v3d or with_gallium_vc4 or with_gallium_etnaviv or with_gallium_panfrost or with_gallium_lima or with_gallium_freedreno
......
......@@ -467,7 +467,7 @@ option(
'platform-sdk-version',
type : 'integer',
min : 25,
max : 31,
max : 10000,
value : 25,
description : 'Android Platform SDK version. Default: Nougat version.'
)
......
......@@ -8779,7 +8779,14 @@ radv_flush_vgt_streamout(struct radv_cmd_buffer *cmd_buffer)
unsigned reg_strmout_cntl;
/* The register is at different places on different ASICs. */
if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX7) {
if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX9) {
reg_strmout_cntl = R_0300FC_CP_STRMOUT_CNTL;
radeon_emit(cs, PKT3(PKT3_WRITE_DATA, 3, 0));
radeon_emit(cs, S_370_DST_SEL(V_370_MEM_MAPPED_REGISTER) | S_370_ENGINE_SEL(V_370_ME));
radeon_emit(cs, R_0300FC_CP_STRMOUT_CNTL >> 2);
radeon_emit(cs, 0);
radeon_emit(cs, 0);
} else if (cmd_buffer->device->physical_device->rad_info.chip_class >= GFX7) {
reg_strmout_cntl = R_0300FC_CP_STRMOUT_CNTL;
radeon_set_uconfig_reg(cs, reg_strmout_cntl, 0);
} else {
......
......@@ -42,6 +42,7 @@ typedef struct {
static nir_ssa_def *
get_scalar_arg(nir_builder *b, unsigned size, struct ac_arg arg)
{
assert(arg.used);
return nir_load_scalar_arg_amd(b, size, .base = arg.arg_index);
}
......
This diff is collapsed.
......@@ -118,9 +118,9 @@ entry_size(struct cache_entry *entry)
}
void
radv_hash_shaders(unsigned char *hash, const VkPipelineShaderStageCreateInfo **stages,
const struct radv_pipeline_layout *layout, const struct radv_pipeline_key *key,
uint32_t flags)
radv_hash_shaders(unsigned char *hash, const VkPipelineShaderStageCreateInfo *stages,
uint32_t stageCount, const struct radv_pipeline_layout *layout,
const struct radv_pipeline_key *key, uint32_t flags)
{
struct mesa_sha1 ctx;
......@@ -130,18 +130,16 @@ radv_hash_shaders(unsigned char *hash, const VkPipelineShaderStageCreateInfo **s
if (layout)
_mesa_sha1_update(&ctx, layout->sha1, sizeof(layout->sha1));
for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i) {
if (stages[i]) {
RADV_FROM_HANDLE(vk_shader_module, module, stages[i]->module);
const VkSpecializationInfo *spec_info = stages[i]->pSpecializationInfo;
_mesa_sha1_update(&ctx, module->sha1, sizeof(module->sha1));
_mesa_sha1_update(&ctx, stages[i]->pName, strlen(stages[i]->pName));
if (spec_info && spec_info->mapEntryCount) {
_mesa_sha1_update(&ctx, spec_info->pMapEntries,
spec_info->mapEntryCount * sizeof spec_info->pMapEntries[0]);
_mesa_sha1_update(&ctx, spec_info->pData, spec_info->dataSize);
}
for (uint32_t i = 0; i < stageCount; i++) {
RADV_FROM_HANDLE(vk_shader_module, module, stages[i].module);
const VkSpecializationInfo *spec_info = stages[i].pSpecializationInfo;
_mesa_sha1_update(&ctx, module->sha1, sizeof(module->sha1));
_mesa_sha1_update(&ctx, stages[i].pName, strlen(stages[i].pName));
if (spec_info && spec_info->mapEntryCount) {
_mesa_sha1_update(&ctx, spec_info->pMapEntries,
spec_info->mapEntryCount * sizeof spec_info->pMapEntries[0]);
_mesa_sha1_update(&ctx, spec_info->pData, spec_info->dataSize);
}
}
_mesa_sha1_update(&ctx, &flags, 4);
......