Názor k článku GNOME 42: začal přechod na GTK 4, část aplikací už byla portována od ja. - IMHO jedna z chýb bola fixácia na presné...

  • Článek je starý, nové názory již nelze přidávat.
  • 29. 3. 2022 22:55

    ja.

    IMHO jedna z chýb bola fixácia na presné "percentuálne" veľkosti. Je tu totiž jedna implementácia, ktorá to nerobí a funguje dobre: Apple v iOS a macOS.

    Ona tiež nechá aplikácie kresliť na 200/300%, potom ich downscaluje a nemá drobné chyby s artefaktami ani deformáciami. Robí to trocha inak ako Mutter: urobí väčší framebuffer (Mutter skladá surfacy do framebufferu s rovnakým rozlíšením ako je displej) a tento potom celý downscaluje pomocou output enkodéra (nie GPU a textúrami! output enkodérom, takže zmenšenie je "zadarmo" pri scanoute framebuffera. "Cenou" je vyššia spotreba VRAM pre framebuffer). Nie je to vo fixných 25% krokoch, ale tak, aby sa minimalizovali artefakty.

    Príklad: displej má rozlíšenie 2560x1600, vytvorí sa framebuffer pre rozlíšenie 2880x1800. Sem sa kreslí s 200% a na výstupe každých 9 pixelov z fb je možné vykresliť 8 fyzickými na displeji. Akákoľvek chyba vznikne, je limitovaná na týchto 8 pixelov a nikam sa ďalej neprenesie. Cenou za to je, že Apple neponúkne mierku "175%", ale abstraktné "viac miesta" (a akému rozlíšeniu to zodpovedá). To, že je to 177,7778% nikoho reálne netrápi a kto si to nedá do kalkulačky, ani nevie. Tým, že Mutter trvá na presnej mierke vznikajú artefakty a pritom to reálne vôbec nikto nepotrebuje.

    Samozrejme, niekedy vychádzajú aj pekné mierky: napríklad 2560x1440@2X na 4K monitore je presne 150%. Je to viacmenej ale náhoda a nedržia sa toho pre každý displej.

    Podobne si treba dať pozor aj na spodnú hranicu: 125% znamená, že chcete kresliť 8 pixelov z framebufferu pomocou 5 fyzických. To samozrejme bude vyzerať zle. Preto je riešením takého niečo nepovoliť (alebo iba s výstrahou; Apple zvolilo riešenie - pre každé rozlíšenie displeja sú k dispozícii rozlíšenia framebuffera nadefinované tak, aby to bolo použiteľné), ale nie kvôli tomu zavrhnúť celý fractional scaling. Áno, konkrétne tento prípad je problematický pre 14" notebooky s Full HD displejmi, kde by bolo 125% ideál, ale to nikdy nebude vyzerať dobre (a Apple sa tomu vyhlo tak, že notebooky s takým displejom nemá. PC svet nemá tento luxus).

    Takže ku koncu: problém sa dá teda riešiť aj softvérom, len s trocha iným postojom ako bol doteraz. Je škoda, že to bolo roky ponechané vyhnívať, pretože je to aktuálne veľká slabina, viditeľná bežnými používateľmi, ktorú treba riešiť. Určite s vyššou prioritou, ako v článku spomenutá persistent desktop session. To, že developeri Redhatu sa začnú vyhýbať HiDPI displejom, takým aké sú dostupné na trhu situáciu nezlepší, ale určite zhorší.