haku: @keyword tietokonegrafiikka / yhteensä: 41
viite: 3 / 41
Tekijä:Hirvonen, Antti
Työn nimi:Designing an efficient abstraction layer for multiple graphics APIs
Tehokkaan abstraktiotason suunnittelu usealle grafiikkarajapinnalle
Julkaisutyyppi:Diplomityö
Julkaisuvuosi:2016
Sivut:(8) + 83      Kieli:   eng
Koulu/Laitos/Osasto:Sähkötekniikan korkeakoulu
Oppiaine:Viestintätekniikka   (AS3002)
Valvoja:Lehtinen, Jaakko
Ohjaaja:Ciragan, Mete
Elektroninen julkaisu: http://urn.fi/URN:NBN:fi:aalto-201611025442
Sijainti:P1 Ark Aalto  4934   | Arkisto
Avainsanat:compute graphics
rendering engine
Vulkan
Direct3D
Metal
tietokonegrafiikka
grafiikkarajapinta
grafiikkamoottori
Tiivistelmä (fin):Graafisesti vaativat sovellukset, kuten modernit tietokonepelit, käyttävät grafiikkaprosessoreja muodostaakseen tehokkaasti kaksiulotteisia kuvia virtuaalisista kolmiulotteisista maailmoista.
Grafiikkaprosessoreja ohjelmoidaan erityisten grafiikkarajapintojen kautta.
Perinteisesti käytetyt rajapinnat ovat operoineet melko korkealla tasolla tehden ohjelmoinnista helppoa ja abstraktoiden osan grafiikkaprosessorien arkkitehtuurista taakseen.
Korkea abstraktiotaso johtaa kuitenkin tehokkuusongelmiin sekä ohjelmasuorittimen että grafiikkaprosessorin puolella.
Viime vuosina näitä ongelmia on pyritty korjaamaan kehittämällä uusia rajapintoja, jotka mahdollistavat laitteiston käyttämisen tehokkaammin.
Tällaisia uusia rajapintoja ovat Direct3D 12, Vulkan ja Metal.
Rajapintojen määrän vuoksi graafisten sovellusten kehittäminen on työlästä, koska sama sovellus täytyy toteuttaa jokaiselle alustalle erikseen.

Tämän diplomityön tavoitteena on löytää sopiva ja tehokas abstraktiotaso kolmelle mainitulle matalan tason grafiikkarajapinnalle sovelluskehityksen helpottamiseksi.
Lopullinen tavoite on suunnitella uusi rajapinta, joka mahdollistaa grafiikkaprosessorien ohjelmoimisen yhden rajapinnan avulla.
Työn ensimmäisessä osassa selitetään modernien näytönohjaimien toiminta korkealla tasolla sekä tutustutaan näytönohjaimien ja grafiikkarajapintojen kehitykseen laajemmassa kontekstissa.
Toisessa osassa matalan tason grafiikkarajapintoihin tutustutaan syvällisesti.
Kolmannessa osassa esitellään suunnitelma uudesta rajapinnasta.
Osa rajapinnasta toteutetaan käytännössä ja rajapinnan toimivuutta arvioidaan useasta näkökulmasta.
Työn lopuksi rajapintaan ehdotetaan parannuksia niin tehokkuuden, ominaisuuksien, kuin rajapintasuunnittelun osalta.
Tiivistelmä (eng):Graphically demanding applications, such as modern computer games, render two-dimensional images of virtual three-dimensional worlds by harnessing the power of graphics processing units (GPUs).
GPUs are programmed through special graphics application programming interfaces (APIs).
Traditionally, graphics APIs have been relatively high level, making programming easy and abstracting away details of the underlying hardware.
However, the high level of abstraction leads to performance issues on both GPU and CPU.
To fix these issues, three low-level graphics APIs - Direct3D 12, Vulkan, and Metal - have emerged in the recent years.
Due to high number of interfaces available today, the development of graphical applications is arduous.

The aim of this thesis is to determine a suitable abstraction level over the new interfaces to aid the development process of graphical applications.
The end goal is to design a new interface that can be used to program GPUs through a single code path, hiding most of the API-specific details behind the designed layer.
In the first part of this thesis, the operation mechanisms of modern graphics processors are explained along with their relevant history.
In the second part, all existing low-level graphics interfaces are studied in-depth.
Subsequently, a design for the abstraction layer is proposed.
Part of the design is implemented for evaluation, and the performance of the designed interface is analyzed from multiple viewpoints.
Finally, future improvements are suggested and discussed in terms of performance, features, and design.
ED:2016-11-13
INSSI tietueen numero: 54973
+ lisää koriin
INSSI