Idean jälkeen on keskusteltu noin vuoden ajan, Mesa 22.3 on saanut uuden suorituskykyvaihtoehdon nimeltä”block_on_depleted_buffers”, joka odottaa puskureita vaihdon lopussa latenssin vähentämiseksi-mahdollinen yhden kehyksen etu.

Kun uusi”Estä tyhjennetyistä puskureista”-vaihtoehto on käytössä, asiakas estetään, kunnes uusi puskuri on saatavilla. Tämä pysäyttää asiakkaan suorituksen, kunnes uusi puskuri on käytettävissä, ja siinä vaiheessa asiakas jatkaa piirtämistä. Estämällä vaihdon lopussa sen sijaan, että puskurin eston oletuskäyttäytyminen tulisi saataville, esitettävä kehys on hieman uudempi ja mahdollista yhden kehyksen latenssin pieneneminen.

Avoimen lähdekoodin kehittäjä Roman Gilg työskenteli tämän korjaustiedoston parissa perustuen Michel Danzerin käynnistämään korjaukseen, joka puolestaan ​​aloitti sen Valven Pierre-Loup A. Griffais”Plagmanin”jälkeen avasi Mesa-lipun vuosi sitten seuraavan puskurin varmistamisesta SwapBuffers()-ohjelman lopussa havaitun viiveen vähentämiseksi. Merkittävä Linuxiin keskittynyt Valve-insinööri tiivisti tilanteen seuraavasti:

Yleinen kaava, jota noudattavat tyypilliset naiivit asiakassovellukset (mikä pätee useimpiin peleihin) on”näyteaika, simuloi, piirrä, esitä, toistaa”. GPU-sidottuissa skenaarioissa swapchainin pituus on ensisijainen tapa, jolla sovellus päätyy estämään, jotta se ei pääse liian edellä GPU:ta. Jos edellä mainitun sijasta seuraava kehyspuskuri vahvistettiin välittömästi SwapBuffers()-toiminnon lopussa, ennen asiakassovellukseen paluuta, yllä olevassa skenaariossa käyttäjä näkee yhden kehyksen verran viivettä vähemmän. Se vastaa myös muiden ohjainten ja grafiikkapinojen toimintaa.

Block_on_depleted_buffers-vaihtoehto ei ole oletusarvoisesti käytössä, koska se voi tuottaa hukattuja kehyksiä, jos asiakkaalta kestää liian kauan uuden kehyksen tuottamisessa. Valve on jo käyttänyt tätä vaihtoehtoa/korjausta SteamOS:ssä ja Steam Deckissä auttaakseen vähentämään havaittua latenssia.

Roman Gilg esittelee tämän korjaustiedoston GPUVis-visualisointieron, kun block_on_depleted_buffers on käytössä.

Lisätietoja tästä vaihtoehdosta osoitteessa tämän yhdistämispyynnön kahdeksan kuukautta sitten, ja se on nyt yhdistetty eilen Mesa 22.3:een. Muutos vaikuttaa Mesan yhteiseen DRI3-koodiin, eikä se siten rajoitu mihinkään tiettyyn Mesan laitteisto-ohjaimeen.

Tällä vaihtoehdolla varustetun Mesa 22.3:n pitäisi olla vakaa noin marraskuun tai joulukuun tienoilla riippuen siitä, kuinka julkaisujakso alkaa, kun ominaisuuden jäädytys-/julkaisuehdokasvaihe alkaa marraskuun alussa.