Torstai 21. elokuuta 2025

Korjasimme SkiaSharp-kirjaston ANGLE-rajapintatuen pakkaamattomille Windows-sovelluksille

Osana GnollHack-pelimme kehitystä korjasimme SkiaSharp-grafiikkakirjaston ANGLE-rajapintatuen pakkaamattomille Windows-sovelluksille. Tämä mahdollisti paremman GPU-kiihdytyksen GnollHackin Steam-versioon.

Taustaa

Julkaisimme GnollHack-pelimme Steam-pelipalvelussa 30.4.2025 pakkaamattomana Windows-sovelluksena. GnollHack käyttää SkiaSharp-kirjastoa grafiikkansa piirtämiseen, ja jo aiemmin oli havaittu, että SkiaSharpin OpenGL-GPU-kiihdytystä tukeva piirtonäkymä ei toiminut pakkaamattomilla sovelluksilla, minkä takia OpenGL-GPU-kiihdytys jouduttiin ottamaan pois käytöstä Steamissa. Se hidasti peliä jonkin verran.

Bugi oli raportoitu jo 13.8.2024, mutta noin vuoteen se ei ollut selvinnyt. Aloitimme bugin tutkimisen 29.6.2025 ja saimme sen korjatuksi parin viikon sisällä. Ongelmana oli, että SkiaSharp käytti Googlen ANGLE-rajapintakirjastoja GPU-komentojen kääntämisessä OpenGL:stä Direct3D:lle, ja rajapintakutsut eivät jostain syystä toimineet pakkaamattomissa sovelluksissa. Tutkimuksissamme selvisi, että ANGLE-rajapintakirjastot piti kääntää lähdekoodista eri tavalla kuin mitä aikaisemmin oli tehty.

Bugikorjaus hyväksytty

Bugikorjaus on nyt hyväksytty ja se julkaistaneen osana seuravaa SkiaSharpin päivitystä.

Toimivat rajapintakirjastot GnollHackiin

Odotellessame virallista bugikorjausta teimme myös GnollHackiin oman, väliaikaisen bugikorjauksemme seuraavasti:

  • Käänsimme ANGLE-rajapintakirjastot lähdekoodista oikeilla asetuksilla.
  • Lisäsimme toimivat ANGLE-rajapintakirjastot GnollHack-projektiin.
  • Visual Studiossa poistimme GnollHackin MSBuild-kääntöprosessissa SkiaSharp-grafiikkakirjastosta tulevat toimimattomat ANGLE-rajapintakirjastot.
  • Lisäsimme MSBuildissa niiden tilalle toimivat ANGLE-rajapintakirjastot (sellaista ei oltu tehty koskaan aikaisemmin).

Lopputulos

Lopputuloksena on, että SkiaSharp toimii taas GPU-kiihdytettynä pakkaamattomissa Windows-sovelluksissa, mistä on ollut hyötyä monellekin kehittäjälle. Asia on erityisen olennainen siksi, että käyttöliittymäkirjasto .NET MAUI:n 9:ssä versiossa, jolla myös GnollHackia kehitetään, Windows-sovellukset ovat oletuksena pakkaamattomia.

Ja tietenkin GnollHack on taas entistä nopeampi Steam-pelaajilla.