Wed, 03 Dec 2008 17:15:41 +0100 BQB <adres@anty.spamowy.com.invalid>
napisał:
>Wyjaśnij, w jaki sposób procesor lub chipset może coś zaadresować w
>pamięci graficznej? To GPU decyduje o adresacji. W skrócie GPU "mówi" do
>chipsetu weź te dane umieść w pamięci, chipset do procesora, jak
>umieścić i gdzie.
To byłaby bardzo wysokopoziomowa komunikacja... :-D
>Potem procesor do chipsetu - daj dane do GPU niech z
>nimi coś zrobi, GPU bierze, wrzuca sobie do GRAM obrabia i przesyła
>znów. Na dobrą sprawę ani CPU ani chipset nie wiedzą ile RAM ma do
>dyspozycji GPU, to GPU tym zarządza.
Bajki opowiadasz, nie masz pojęcia jak funkcjonuje system
mikroprocesorowy, a szczególności PC.
Otworzyłem właśnie menedżer urządzeń i patrzę na zasoby pamięci mojej
karty graficznej (Intel 82865G - wbudowana w płytę główną), są takie:
0xF0000000 - 0xF7FFFFFF - jest to 0x07FFFFFF bajtów, a więc 128MB
- jest to główna pamięć karty graficznej
0xFBE80000 - 0xFBEFFFFF - jest to 0x0007FFFF bajtów, a więc 512KB
- w tej przestrzeni jest widoczny bios karty
0x000A0000 - 0x000BFFFF - jest to 0x0001FFFF bajtów, a więc 128KB
- w tej przestrzeni mieści się bufor używany w
trybie tekstowym
Zakresy te bezpośrednio odwzorowują pamięć graficzną na szynę adresową
komputera. Jeżeli system chce wyświetlić jakiś obrazek to zapisuje te
dane po prostu pod odpowiedni adres i już. Jeżeli zapisany obszar
znajduje się w zakresie z którego akurat karta wyświetla - obrazek
pojawi się na ekranie. Zwykle stosuje się jednak podwójne buforowanie
o czym dalej.
Nie wiem jak wygląda przesyłanie danych wektorowych do karty (wtedy
gdy to karta ma go renderować), ale na 99% tak że w przestrzeni
adresowej zajętej przez pamięć karty alokuje się odpowiedni bufor na
takie dane, konfiguruje kartę odpowiednio i przesyła dane wektorowe do
tego buforu. GPU odczytuje te dane, renderuje w/g nich obrazek i
umieszcza go (rysuje w caasie renderingu) w buforze obrazu
(znajdującym się również w przestrzeni adresowej karty, a inna część
GPU na karcie, pobiera te dane stamtąd kolejno i podobnie jak w
poprzednim przykładzie, podaje na wyjściowe przetworniki C/A lub
bezpośrednio na wyjście monitorowe (w przypadku monitora z interfejsem
cyfrowym)).
Oczywiście normalnie stosuje się stronicowanie pamięci, dubluje bufory
obrazu i rysuje w tym buforze który akurat nie jest wyświetlany, po
czym, gdy obrazek jest gotowy, nakazuje karcie wyświetlanie z nowo
wypełnionego bufora, a następną klatkę rysuje się w drugim,
nieodczytywanym w tej chwili przez kartę buforze.
(http://en.wikipedia.org/wiki/Double_buffering#Double_Buffering_in_Computer_Graphics)
tak czy inaczej, pamięć graficzna JEST mapowana bezpośrednio na szynę
komputera i byłoby raczej dziwne gdyby nie była.
-- RUN" Press PLAY then any key: Loading WINDOWS block 45829 read error bReceived on Wed Dec 3 20:50:03 2008
To archiwum zostało wygenerowane przez hypermail 2.1.8 : Wed 03 Dec 2008 - 20:51:02 MET