programmatūra · 6 min · 10.09.2026

KWin pieņem commit-timing protokolu divas dienas pirms Plasma 6.8 beta: 547 rindas pēc sešiem mēnešiem

KDE izstrādātājs Xaver Hugl 9. martā atvēra KWin apvienošanas pieprasījumu ar nosaukumu wayland: support the commit-timing protocol. Tas nostāvēja melnraksta statusā gandrīz sešus mēnešus. 8. septembrī kods iegāja master zarā: 27 faili, 547 pievienotas rindas, 103 izmestas, trīs komiti un 50 komentāri diskusijā. Divas dienas vēlāk iznāca Plasma 6.8 pirmā beta versija.

Protokols pats nav jauns. commit-timing-v1 tika standartizēts wayland-protocols 1.38 laidienā 2024. gada oktobrī kopā ar fifo-v1 un sistēmas zvana protokolu. GNOME kompozitors Mutter to atbalstīja jau kopš tā laika. KWin palika pēdējais lielais Wayland kompozitors bez šī atbalsta un tieši tas turēja aizvērtu ķēdi, kas beidzas pie Windows spēlēm zem Proton.

Ko protokols pievieno parastajai komitai

Parastā Wayland komitā klients pasaka kompozitoram vienu lietu: šis kadrs ir gatavs. Kompozitors to parāda tuvākajā piemērotajā brīdī. Klientam nav veida, kā pateikt, ka kadru vajag parādīt vēlāk par to.

Video atskaņotājam tas ir neērti. Filma ar 24 kadriem sekundē uz 60 Hz ekrāna prasa, lai katrs kadrs paliktu redzams nevienādu skaitu atsvaidzināšanas ciklu. Ja atskaņotājs var tikai iesniegt kadru un cerēt, tas vai nu sūta kadrus par ātru un rada nevienmērīgu kustību, vai arī tur tos savā pusē un palielina aizkavi. mpv izstrādātāji šo pašu simptomu apraksta savā kļūdu pieteikumā par raustīšanos ar 24 Hz saturu uz Plasma 6.

commit-timing-v1 pievieno komitai laika zīmogu ar nozīmi “ne agrāk par”. Klients iesniedz kadru iepriekš un norāda agrāko brīdi, kad to drīkst likt uz ekrāna. Kompozitors pats izlemj precīzo momentu, taču vairs nedrīkst steigties. Adaptīvās sinhronizācijas gadījumā tas dod kompozitoram tiesības kadru paturēt un pagarināt atsvaidzināšanas intervālu, nevis dzīt ekrānu uz augšējo robežu.

Šis protokols ļauj lietotnēm noteikt agrāko laiku, kad kompozitoram jāpiemēro komita. To var izmantot, piemēram, video atskaņotāji, lai plānotu kadrus iepriekš, vai lai labāk kontrolētu atsvaidzināšanas biežumu ar adaptīvo sinhronizāciju. Xaver Hugl, KWin apvienošanas pieprasījuma apraksts

Ķēde bija gatava jau aprīlī

Interesantākā daļa ir tas, kas šo protokolu gaidīja. KWin kļūdu pieteikums 513283, kas atvērts pagājušā gada 13. decembrī pret Plasma 6.5.4, uzskaita precīzu atkarību virkni.

  • Mesa apvienošanas pieprasījums !38770 ievieš Vulkan paplašinājumu VK_EXT_present_timing. Atvērts 2. decembrī, apvienots 27. janvārī pēc 128 komentāriem.
  • Šī paplašinājuma iespēja presentAtAbsoluteTimeSupported uz Wayland strādā tikai tad, ja kompozitors prot commit-timing.
  • vkd3d-proton pieprasījums 2751 ar 940 pievienotām rindām četros komitos to izmanto. Apvienots 27. aprīlī.
  • Bez tā vkd3d-proton un DXVK nevar kārtīgi ieviest DXGI parametru SyncInterval ar vērtību lielāku par 1.

SyncInterval ir tas, ar ko Direct3D spēle pasaka, ka kadru rāda katrā otrajā vai trešajā atsvaidzināšanas ciklā. Uz 60 Hz ekrāna vērtība 2 nozīmē 30 kadrus sekundē ar vienmērīgu ritmu. Līdz šim tulkošanas slāņiem šī vērtība bija jāimitē ar taimeriem, kas dod aptuvenu rezultātu. Ķēdes pēdējais posms nostrādāja 8. septembrī, četrus ar pusi mēnešus pēc tam, kad vkd3d-proton puse bija gatava.

Starp protokola standartizāciju un KWin atbalstu pagāja divdesmit trīs mēneši. Tas nav neparasti Wayland pusē, kur staging statusa protokols var gadiem gaidīt otro ieviesēju. fifo-v1, kas iznāca tajā pašā wayland-protocols 1.38 laidienā un risina radniecīgu problēmu ar kadru rindu, KWin nonāca ievērojami ātrāk. commit-timing prasa dziļāku iejaukšanos renderēšanas ciklā, jo kompozitoram jāprot atlikt jau saņemtu kadru, nesalaužot pārējo virsmu plānošanu.

Kāpēc kods stāvēja melnrakstā

Hugl pats aprakstā norādīja iemeslu: pieprasījums bija melnraksts, jo tam vajadzēja vairāk pārbaužu reālos apstākļos, lai gan visi svarīgākie robežgadījumi bija apstrādāti. Pamata pārbaudēm viņš izmantoja weston-simple-timing, testa lietotni no Weston kompozitora.

Diff rāda, kāpēc pārbaudes bija vajadzīgas. Izmaiņas neaprobežojas ar jaunu protokola failu pāri src/wayland/commit_timing_v1.cpp. Aiztikts arī renderēšanas cikls, kur parādās jauna “ne agrāk par” laika zīme kadru plānošanā, kā arī ainas mezgli, virsmu vienumi, Wayland transakciju mehānisms un programmatūras vsync monitors, kuram nācās nodrošināt, ka laika zīmogi tiešām pieaug. Kopā 27 faili trijos komitos.

Automatizēto testu pusē pieprasījums pieskaras integrācijas testam test_fifo.cpp un testu palīgfunkcijām. Tas norāda, ka jaunā laika zīme tiek pārbaudīta kopā ar fifo protokola uzvedību, nevis atsevišķi.

Ko no tā redzēs lietotājs

Plasma 6.8 stabilā versija plānota 14. oktobrī. Ar to KWin iegūst pēdējo trūkstošo gabalu, lai Mesa Vulkan draiveri varētu pilnībā piedāvāt VK_EXT_present_timing uz KDE darbvirsmas. Praksē tas nozīmē vienmērīgāku 24 un 30 kadru sekundē video atskaņošanu, precīzāku kadru ritmu Steam Play spēlēm caur vkd3d-proton un mazāk gadījumu, kad adaptīvās sinhronizācijas monitors bez vajadzības turas pie augstākā atsvaidzināšanas biežuma.

X11 sesijas lietotājiem no tā nav labuma. Plasma 6.8 ir pirmā versija, kurā X11 sesija vairs netiek piedāvāta, tāpēc commit-timing pieder pie tās funkciju grupas, kas pastāv tikai Wayland pusē. Kļūdas pieteikums 513283 tagad ir aizvērts ar statusu FIXED. Pēdējās izmaiņas laiks tajā sakrīt ar apvienošanas minūti: 8. septembris, 15:04 UTC.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie