Po nápadu byla diskutována asi rok, Mesa 22.3 přistála s novou možností výkonu nazvanou”block_on_depleted_buffers”, která čeká na buffery na konci swapu, aby se snížila latence-možná výhoda jednoho snímku.

Když je povolena nová možnost „blokovat při vyčerpání vyrovnávací paměti“, klient je zablokován, dokud nebude k dispozici nová vyrovnávací paměť. To zastaví provádění klienta, dokud není k dispozici nová vyrovnávací paměť, a v tomto okamžiku klient pokračuje v kreslení. Tím, že je k dispozici blokování na konci swapu, namísto výchozího chování blokování ve vyrovnávací paměti, prezentovaný rámec je o něco novější s možným snížením latence o jeden snímek.

Open-source vývojář Roman Gilg pracoval na tomto patchi založeném na patchi vytvořeném Michelem Danzerem, který na něm začal poté, co Pierre-Loup A. Griffais”Plagman”z Valve otevřel před rokem lístek Mesa o zajištění dalšího bufferu na konci SwapBuffers() pro snížení vnímané latence. Pozoruhodný inženýr Valve zaměřený na Linux shrnul situaci takto:

Obvyklý vzorec, který následují typické naivní klientské aplikace (což platí pro většinu her) je „vzorkovat čas, simulovat, kreslit, prezentovat, opakovat”. Ve scénářích vázaných na GPU je délka swapchainu primárním způsobem, jak aplikace skončí blokováním, aby se nedostala příliš před GPU. Pokud by místo výše uvedeného byl další framebuffer ověřen okamžitě na konci SwapBuffers(), před návratem do klientské aplikace, ve výše uvedeném scénáři by uživatel měl viditelnou latenci o jeden snímek méně. Odpovídalo by to také tomu, co dělají ostatní ovladače a grafické zásobníky.

Volba block_on_depleted_buffers není ve výchozím nastavení povolena, protože by mohla způsobit zmeškané snímky, pokud vytvoření nového snímku klientovi trvá příliš dlouho. Společnost Valve již tuto možnost/patch využívá na SteamOS a Steam Deck, aby pomohla snížit vnímanou latenci.

Roman Gilg ukazuje rozdíl ve vizualizaci GPUVis pro tento patch s povoleným block_on_depleted_buffers.

Další podrobnosti o této možnosti naleznete na tento požadavek na sloučení otevřel před osmi měsíci Roman Gilg a nyní je od včerejška začleněn pro Mesa 22.3. Změna ovlivní běžný kód DRI3 Mesa, a proto není omezena na žádný konkrétní ovladač hardwaru Mesa.

Mesa 22.3 s touto možností by měla být jako stabilní koncem listopadu nebo prosince v závislosti na tom, jak se bude vyvíjet cyklus vydání po zahájení fáze zmrazení funkcí/kandidátské fáze na začátku listopadu.

Categories: IT Info