PROGRAMIRLJIVO  GRAFIČKO  SKLOPOVLJE

Asembler

Naslovna stranica

Uvod

Neprogramirljivo grafičko sklopovlje

Programirljivo grafičko sklopovlje

Asembler

Jezici više razine

Programski alati

Programski primjeri

Programski zadatak

Zaključak



Grafički procesori se ne mogu strogo klasificirati ni kao RISC, ni kao CISC.

Imaju ulazne i izlazne registre, kao i privremene (radne) registre.
Procesori za opću namjenu obično imaju samo radne registre, a programi parametre čitaju iz RAM-a.

Grafički procesori nemaju RAM, a za prenošenje parametara koriste ulazne i izlazne registre.
Najsličnije RAM-u je memorija za instrukcije (obično može držati samo 512 naredbi).
Ukupno se može izvršiti 65536 naredbi (petlja od 128 iteracija, 128 * 512 = 65536).

Grafički procesori su SIMD arhitekture i to dimenzije 4.
Registri su 128 bitni (32 bita * 4).

Najčešće se radi s tipovima podataka float (klasični IEEE-754), ali postoje i 12 i 16 bitni tipovi s pomičnim zarezom.
Ostali (cjelobrojni i Boolean) tipovi se aproksimiraju.

Procesor vrhova je definiran OpenGL ekstenzijom ARB_vertex_program, a procesor fragmenata ekstenzijom ARB_fragment_program.
U njima su definirani minimalni zahtijevi za procesore i skupovi instrukcija.

Neki proizvođači proširenja grafičkih procesora definiraju preko OpenGL ekstenzija (NVIDIA koristi npr. NV_fragment_program2 i sl.), dok ostali to rade samo preko jezika za sjenčanje više razine (ATI).



Primjer:

!!ARBfp1.0
OPTION NV_fragment_program2;


PARAM c[1] = { { 0.5 } };
TEMP R0;
TEMP HC;
OUTPUT oCol = result.color;
TEX R0, fragment.texcoord[0], texture[0], 2D;
SGTRC HC.x, fragment.color.primary, c[0];
TEX R0(EQ.x), fragment.texcoord[1], texture[1], 2D;
ADDR oCol, R0, fragment.color.primary;
END

FER / ZEMRIS / RG / PDF