DE69521953T2 - Organisation eines Z-Puffer-Etikettenspeichers - Google Patents
Organisation eines Z-Puffer-EtikettenspeichersInfo
- Publication number
- DE69521953T2 DE69521953T2 DE69521953T DE69521953T DE69521953T2 DE 69521953 T2 DE69521953 T2 DE 69521953T2 DE 69521953 T DE69521953 T DE 69521953T DE 69521953 T DE69521953 T DE 69521953T DE 69521953 T2 DE69521953 T2 DE 69521953T2
- Authority
- DE
- Germany
- Prior art keywords
- buffer
- invalidation
- page
- bits
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Input (AREA)
- Digital Computer Display Output (AREA)
- Image Generation (AREA)
Description
- Die vorliegende Erfindung betrifft allgemein ein Bildanzeigesystem zum Präsentieren von Wiedergaben von dreidimensionalen Objekten und insbesondere ein verbessertes Verfahren und eine verbesserte Vorrichtung zum Löschen eines Z-Puffers in einem Computergesteuerten Bildanzeigesystem.
- Computer-gesteuerte Grafik- oder Bildanzeigesysteme werden gewöhnlich verwendet, um Bilder von dreidimensionalen Objekten für einen Betrachter anzuzeigen. Wie allgemein bekannt ist, sind bei einem Bildanzeigesystem eine Vielzahl von Pixeln in einer zweidimensionalen Matrix von Pixelpositionen auf der Grafikanzeige angeordnet, wobei jedes Pixel eine X- und eine Y-Koordinate aufweist. Ein Bildpuffer und ein separater Z-Puffer sind vorgesehen, die jeweils eine Vielzahl von Speicherpositionen aufweisen, die auf die Vielzahl von Pixelpositionen gemappt werden. Der Bildpuffer ist gewöhnlich ein RAM (Random Access Memory), der häufig als VRAM (Video Random Access Memory) implementiert wird und Informationen zu jeder Pixelposition speichert, die eine digitale Wiedergabe der Farbe und Intensität für jedes Pixel im Bild enthalten. Die Pixelinformation in jedem Frame wird in den Bildpuffer geschrieben, um die einzelnen Bilder bzw. Frames zu erzeugen, die nacheinander angezeigt werden.
- Der Z-Puffer verwendet einen RAM (Random Access Memory), der gewöhnlich als DRAM (Dynamic Random Access Memory) implementiert wird. Der Z-Puffer enthält Informationen, die angeben, ob sich ein Objekt auf der Bildanzeige vor oder hinter einem anderen Objekt befindet. Dadurch kann ein Bildanzeigesystem bestimmen, ob ein bestimmtes Objekt auf der Anzeige verborgen oder sichtbar dargestellt werden soll. Der Z-Puffer enthält allgemein eine Zahl für jedes Pixel im Bildpuffer. Diese Zahl wird häufig als der "Z"-Wert bezeichnet und gibt Tiefe eines Objekts entlang einer in die Ebene des Bildschirms zeigende Z-Achse an. Die Verwendung der Z-Werte sieht also eine dritte Dimensionskoordinate vor und ermöglicht die Realisierung einer dreidimensionalen Ansicht. In dem typischen Bildanzeigesystem gibt ein kleiner Z-Wert an, dass das Objekt näher am Betrachter ist, während ein großer Z-Wert allgemein angibt, dass das Objekt weiter entfernt vom Betrachter ist. Bei einer Vielzahl von Objekten, die einer bestimmte Pixelposition entsprechen, werden Objekte mit einem größeren Z-Wert durch Objekte mit einem kleineren Z-Wert verdeckt, die deshalb näher am Betrachter sind.
- Um ein neues Bild auf der Anzeige zu präsentieren, müssen der Bildpuffer und der Z-Puffer aktualisiert werden. Der herkömmliche Ansatz zum Aktualisieren des Bildpuffers und des Z- Puffers umfasst allgemein das Durchführen eines zeilenweise vorgenommenen horizontalen Rasterabtastens über die Bildanzeigevorrichtung. Dabei weist eine bestimmte horizontale Abtastzeile einen Y-Koordinatenwert und einen sich ändernden X-Koordinatenwert auf, wenn das Bild von einer Seite des Bildschirms zur anderen gezeichnet wird. Jede angezeigte Pixelposition weist einen alten Z-Wert und einen alten Pixelwert auf, die jeweils im Z-Puffer und im Bildpuffer gespeichert sind. Für jede Pixelposition wird der alte Z-Wert im Z-Puffer für die aktuelle Pixelposition gelesen. Für die aktuelle Pixelposition werden ein neuer Z-Wert und ein neuer Pixelwert durch den Grafikcontroller berechnet. Der Grafikcontroller vergleicht den alten Z-Wert mit dem neuen Z-Wert für die aktuelle Pixelposition, um zu bestimmen, ob das aktuelle Pixel näher an dem Betrachter ist als das zuvor im Bildpuffer gespeicherte Pixel. Der neue Pixelwert wird dann in den Bildpuffer für die aktuelle Pixelposition geschrieben, wenn das neue Pixel für diese Position näher am Betrachter ist als das im Bildpuffer gespeicherte Pixel. Wenn das neue Pixel verborgen ist, schreitet der Controller zur nächsten Pixelposition fort, wobei er den alten Pixelwert in dem Bildpuffer und den alten Z-Wert im Z- Puffer lässt. Wenn das neue Pixel an einer bestimmte Position näher am Betrachter ist als das alte Pixel, schreibt der Controller den neuen Z-Wert für die aktuelle Pixelposition in den Z-Puffer. Dieser Prozess wird dann für das nächste Pixel entlang der Abtastzeile wiederholt. Beim Löschen gemäß dem Stand der Technik wird ein Bereich des Z-Puffers allgemein gelöscht, um den entsprechenden Bereich des Bildschirms zu löschen, indem der größtmögliche Z-Wert in alle für das Löschen ausgewählte Positionen geschrieben wird.
- Wie zuvor genannt, wird der Z-Puffer gewöhnlich gelöscht, bevor der Z-Puffer zum Zeichnen des neuen Bildes verwendet werden kann. Um einen Teil des Z-Puffers zu löschen, umfasst der herkömmliche Ansatz gewöhnlich das anfängliche Bestimmen der Pixelpositionen in dem zu löschenden Bereich. Dann schreibt der herkömmliche Grafikaktualisierungscontroller den größtmöglichen Z-Wert in den Z-Puffer für alle Pixelpositionen für jede zu löschende Zeile. Einige der Systeme aus dem Stand der Technik werden jedoch durch eine Verzögerung beim Löschen eines Bildschirmbereichs beeinträchtigt, weil der entsprechende Bereich im Z- Puffer gelöscht werden muss. Um beispielsweise einen Z-Puffer zu löschen, der 1280 mal 1024 Pixel umfasst und 32 Bit tief ist, wobei auf ein 64-bittiges Speicherwort mit 25 MHz zugegriffen wird, erfordert der oben genannte herkömmliche Ansatz zum Löschen eine Löschzeit von mehr als 26 Millisekunden, nur um den Z-Puffer zu löschen. Das ist eine relativ lange Zeitdauer in einem System, das Bilder mit "Echtzeit"-Bewegungsfähigkeiten darstellen soll. Eine derartig lange Löschzeit schließt gewöhnlich Vollbildschirm-Aktualisierungsraten von 30 Hz oder mehr aus.
- Ein alternativer Ansatz zum Löschen des Z-Puffers ist in dem US-Patent 5,038,297 (Hannah) angegeben. Der Ansatz in Hannah verwendet eine Vielzahl von Bits, die mit dem Bildpuffer assoziiert sind, um die Z-Werte im Z-Puffer zu invalidieren, anstatt alle Z-Werte tatsächlich zu löschen. Jedes der Invalidierungsbits umfasst ein Bit des Speichers, das aus einem Wort in dem gewöhnlich als VRAM implementierten Bildpuffer genommen ist. Meistens wird der Bildpuffer allgemein zum Schreiben der Farbe und Intensität für jedes Pixel verwendet. Indem die Invalidierungsbits in den Bildpuffer geschrieben werden, macht der Hannah- Ansatz ein zusätzliches Lesen des Bildpuffers erforderlich, um den Z-Puffer zu invalidieren, der andernfalls nicht erforderlich wäre.
- Ein ähnlicher Ansatz, der Invalidierungsbits verwendet, ist in dem US-Patent Nr. 5,301,263 (Dowdell) beschrieben. Der Dowdell-Ansatz sieht einen Z-Wert und ein Invalidisierungsbit vor, die für jede Z-Pufferadresse im Speicher gespeichert sind. Das Invalidisierungsbit des Dowdell-Ansatzes gibt an, ob eine entsprechende Z-Wert-Speicherposition einen gültigen Z- Wert gespeichert hat. Der Dowdell-Ansatz sieht weiterhin eine Möglichkeit zum schnellen Aktualisieren von Z-Werten während eines raschen Löschens des Grafikbildschirms vor, wobei die Invalidisierungsbits für die zu löschenden Pixel auf "eins" gesetzt werden. Während eine schnelle Aktualisierung unter Verwendung der Invalidisierungsbits erreicht werden kann, kann das Dowdell-Patent keine optimale Organisation der Invalidisierungsbits im Speicher lehren und einen zusätzlichen Speicher erfordern.
- Es ist dementsprechend eine Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren und ein verbessertes System zum Löschen oder invalidieren eines Bereichs des Z- Puffers mit höherer Geschwindigkeit anzugeben.
- Eine andere Aufgabe der vorliegenden Erfindung ist es, ein verbessertes Verfahren zum Invalidieren eines Bereichs des Z-Puffes auf eine Weise vorzusehen, die eine Vielzahl von Invalidisierungsbits organisiert, um die entsprechenden Werte im Z-Puffer zu invalidieren und eine verbesserte Leistung mit optimierter Speichernutzung zu erzielen.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein kostengünstigeres und effizienteres Verfahren und System zum Invalidieren eines Bereichs des Z-Puffers anzugeben, um den Z-Puffer während Aktualisierungsoperationen zu löschen, die mit einem Rasterabgetasteten und Computer-gesteuerten Bildsystem durchgeführt werden.
- Es ist eine weitere Aufgabe der vorliegenden Erfindung, ein derartiges Verfahren und System zum Invalidieren eines Bereichs des Z-Puffers mit organisierten Invalidierungsbits anzugeben, wobei die Verwendung der Invalidierungsbits beliebig fortgesetzt oder abgebrochen werden kann.
- Es werden ein Verfahren und ein System zum Löschen eines Teils eines Z-Puffers in einem Rasterabgetasteten Bildsystem mit einer Pixelmatrix, einem Bildpuffer und einem Grafikcontroller angegeben. Der Z-Puffer enthält eine Matrix von Z-Pufferelementen, und jedes 2- Pufferelement ist mit einem entsprechenden Pixel assoziiert. Der Z-Puffer weist einen Seiten-organisierten RAM (Random Access Memory) mit einer Vielzahl von Speicherseiten auf. Das Verfahren umfasst das Erstellen eines einzigen Invalidisierungsbits für jedes 2- Pufferelement, so dass jedes Invalidisierungsbit einen gültigen oder ungültigen Zustand für das entsprechende Z-Pufferelement bestimmt. Eine Vielzahfder Invalidisierungsbits sind derart organisiert, dass die Invalidisierungsbits auf derselben Speicherseite wie die entsprechenden Z-Pufferelemente positioniert sind. Binäre Informationen werden in die Vielzahl der Invalidisierungsbits geschrieben, um die entsprechenden zu löschenden Z-Pufferelemente zu invalidieren.
- Außerdem werden binäre Z-Wertinformationen in den Z-Pufferelementen gespeichert, wobei ein vorbestimmter Z-Wert für einen bestehenden Z-Wert eingesetzt werden kann, wenn ein entsprechendes Invalidisierungsbit ungültig ist. Vorzugsweise gibt dieser vorbestimmte Wert Hintergrundanzeigeinformation an. Wenn ein entsprechendes Invalidisierungsbit in den ungültigen Zustand versetzt wird, wird der Z-Wert in dem entsprechenden Z-Puffer auf die Hintergrundanzeigeinformation gesetzt. Wenn das Invalidisierungsbit dagegen auf den gültigen Zustand gesetzt ist, wird das 2-Wertelement auf einen neu geholten 2-Wert gesetzt. Weiterhin kann das Zugreifen auf die Invalidisierungsbits selektiv abgebrochen werden, um die Speichernutzung bei Bedarf zu begrenzen.
- Andere Aufgaben und Vorteile der vorliegenden Erfindung werden durch die folgende ausführlichere Beschreibung mit Bezug auf die Zeichnungen verdeutlicht:
- Fig. 1 ist ein Systemblockdiagramm, das die Architektur eines Grafikbildsystems für die Verwendung in einem Computer-gesteuerten Bildanzeigesystem gemäß der vorliegenden Erfindung darstellt.
- Fig. 2 ist ein Blockdiagramm, das die logische Konfiguration einer Schnittstelleneinheit darstellt, die in dem Grafikprozessor/-controller von Fig. 1 verwendet wird.
- Fig. 3 ist ein Blockdiagramm, das den Z-Pufferspeicher darstellt und die Anordnung der Information in dem 2-Puffer gemäß der vorliegenden Erfindung zeigt.
- Fig. 4 zeigt weiterhin die Anordnung des als DRAM implementierten Z-Puffers in Übereinstimmung mit einem Ansatz zum linearen Abtasten.
- Fig. 5 zeigt einen alternative Anordnung des als DRAM implementierten Z-Puffers in Übereinstimmung mit einem Absatz zum rechteckig gekachelten Abtasten.
- Fig. 6 zeigt die Anordnung der auf einer Seite des Z-Puffers gefundenen Informationen in Übereinstimmung mit der vorliegenden Erfindung.
- Fig. 7 zeigt weiterhin die Anordnung der Informationen auf einem Teil einer Seite des in Fig. 6 gezeigten Z-Puffers.
- Fig. 8 ist ein Flussdiagramm, das die Operationen zum Aktualisieren und Löschen des Z-Puffers gemäß der vorliegenden Erfindung zeigt, und
- Fig. 9 ist ein Flussdiagramm, das weiterhin die Operationen zum Löschen des Z- Puffers gemäß der vorliegenden Erfindung zeigt.
- Fig. 1 zeigt die allgemeine Architektur eines Grafikanzeigesystems für die Implementierung der vorliegenden Erfindung. Das Grafikanzeigesystem umfasst einen Grafikprozessor/- controller 10 zum Steuern der erforderlichen Grafikanzeigeoperationen. Der Grafikprozessor/-controller 10 umfasst vorzugsweise einen Abtast-Konvertierungs-/Interpolierungseinrichtung 14 und eine CRT-Steuereinrichtung 12. Die Abtast-Konvertierungs-/Interpolierungseinrichtung 14 umfasst eine Schaltung zum Konvertieren von Grafikprimitiven höherer Ebene wie etwa Linien oder Dreiecken zu Pixeloperationen. Die CRT-Steuereinrichtung 12 steuert den Betrieb einer Anzeigeeinrichtung wie etwa eines Grafikmonitors mit einer Kathodenstrahlröhre (CRT), wobei die Steuereinrichtung 12 dem bestimmten verwendeten Grafikanzeigegerät entsprechen muss, das neben einer CRT auch ein Flüssigkristallmonitor oder ein andersartiges Grafikanzeigegerät sein kann. Der Grafikprozessorl-controller 10 umfasst weiterhin eine erste Schnittstelleneinheit 16 und eine zweite Schnittstelleneinheit 18, die dem Grafikprozessor/-controller 10 wie nachfolgend beschreiben die Verbindung zu anderen Hardwaregeräten ermöglichen.
- Der Grafikprozessorl-controller 10 ist vorzugsweise über eine erste Schnittstelleneinheit 16 mit einem System-Eingabe/Ausgabe-Speicherbus 26 verbunden. Die System-Eingabe- /Ausgabe-Speicherbus 26 ist wiederum operativ mit einer Host-CPU 28 verbunden. Die CPU 28 kann eine beliebige aus einer Vielzahl von verfügbaren Verarbeitungseinheiten wie etwa den Mikroprozessoren der Modelle 486 oder Pentium (586) des Herstellers Intel umfassen. Die CPU 28 und der System-Eingabe/Ausgabe-Speicherbus 26 sehen Speicher- und Verarbeitungsfähigkeiten vor. Weiterhin ist ein Geometrieprozessor 32 mit dem Grafikprozessor/- controller 10 und dem System-Eingabe/Ausgabe-Speicherbus 26 verbunden, um optionale beschleunigte Geometrie-Verarbeitungsfunktionen vorzusehen. Derartige Funktionen können das Durchführen von geometrischen und perspektivischen Transformationen sowie ein 3-D- Clipping umfassen.
- Das Grafikanzeigesystem umfasst einen Z-Puffer 20, der über die zweite Schnittstelleneinheit 18 mit dem Grafikprozessor/-controller 10 verbunden ist. Der Z-Puffer 20 ist als RAM (Random Access Memory) implementiert und umfasst vorzugsweise einen DRAM (Dynamic Random Access Memory). Der Z-Puffer 20 könnte alternativ auch als VRAM (Video Random Access Memory) implementiert sein. Der Z-Puffer 20 speichert die Z-Werte und die entsprechenden Invalidisierungsbits, die hier auch als Z-Etiketten bezeichnet werden. Das Grafikanzeigesystem umfasst weiterhin einen Bildpuffer 22. Der Bildpuffer 22 ist entsprechend über die zweite Schnittstelleneinheit mit dem Grafikprozessor/-controller 18 verbunden. Der Bildpuffer 22 ist auch als RAM implementiert und umfasst vorzugsweise einen VRAM (Video Random Access Memory). Dabei ist jedoch zu beachten, dass der Bildpuffer 22 alternativ auch als DRAM implementiert werden könnte. Sowohl der Z-Puffer 20 als auch der Rahmenpuffer 22 sind über ein Paar von Datenkommunikationsbusse mit der zweiten Schnittstelleneinheit 18 verbunden, wobei ein Bus zum Kommunizieren von Adress- und Steuerinformationen und der andere Bus zum Handhaben von Dateninformationen dient. Dabei sollte dem Fachmann deutlich sein, dass der Z-Puffer 20 und der Bildpuffer 22 in einem oder einer Vielzahl von DRAM- und VRAM-Chips integriert sein können. Außerdem kann eine Vielzahl von Speichern zusammen als Gruppe adressiert und wie ein einziger Speicher behandelt werden. Weiterhin können der Z-Puffer 20 und der Bildpuffer 22 derart implementiert sein, dass sie einen einzigen Speicherbus und/oder einen Satz von Speicherchips gemeinsam verwenden.
- Der Bildpuffer 22 ist weiterhin mit einem RAM-Digital-zu-Analog-Konvertierer (RAM-DAC) und einer entsprechenden Schaltung 24 verbunden. Der RAM-DAC 24 ist auch mit der CRT- Steuereinrichtung 12 verbunden, um vertikale oder horizontale Leer- und Synchronisationssignale zu empfangen. Ein Ausgang de RAM-DAC 24 ist mit einem Grafikanzeigemonitor 30 verbunden, der eine Kathodenstrahlröhre (CRT), eine Flüssigkristallanzeige oder eine andere bekannte Grafikanzeigeeinrichtung sein kann. Der RAM-DAC 24, der Bildpuffer 22 und der Grafikprozessor/-controller 10 empfangen jeweils ein Taktsignal über eine Taktleitung 25, um den korrekten Zeitablauf der Grafikverarbeitungsoperationen sicherzustellen.
- Das hier dargestellte Grafikanzeigesystem kann als Standalone-Grafiksystem verwendet werden oder in eine Hochleistungs-Workstation integriert sein und ist vorzugsweise in der Lage, eine Echtzeit-Grafikbildverarbeitung durchzuführen. Der Grafikprozessor/-controller 10 führt Grafikanzeigeoperationen durch, die das Aktualisieren des Z-Puffers 20 und des Bildpuffers 22 für jedes Pixel auf dem Grafikanzeigemonitor 30 umfassen. Grafiksteuereinrichtungen wie der Grafikprozessor/-controller 10 sind aus dem Stand der Technik wohlbekannt. Dabei ist zu beachten, dass die Host-CPU 29 oder eine andere entfernte Verarbeitungseinrichtung alternativ verwendet werden können, um einige oder alle der designierten Verarbeitungsoperationen vorzusehen, die durch den Grafikprozessor/-controller 10 durchgeführt werden.
- Für jede Pixelposition führt der Grafikprozessor/-controller 10 allgemein eine Aktualisierungsoperation in drei Schritten durch, die dem Fachmann bekannt ist. In Übereinstimmung mit dem ersten Schritt liest der Grafikprozessor/-controller 10 den alten Z-Wert in den Z-Puffer 20 für die aktuelle Pixelposition. Ein neuer Z-Wert und ein neuer Pixelwert werden durch den Grafikprozessor/-controller 10 berechnet. Als nächstes vergleicht der Grafikprozessor/- controller 10 den alten aus dem Z-Puffer 20 gelesenen Z-Wert mit dem neuen Z-Wert, der für die aktuelle Pixelposition berechnet wird, um zu bestimmen, ob der aktuelle Pixelwert näher an einem Betrachter ist als der im Bildpuffer 22 gespeicherte alte Pixelwert. Schließlich wird der neue Pixelwert in den Bildpuffer 22 für die aktuelle Pixelposition geschrieben, wenn das neue Pixel für diese Pixelposition näher an dem Betrachter ist als das bereits im Bildpuffer 22 gespeicherte Pixel. Andernfalls schreitet der Grafikprozessor/-controller 10 zu der nächsten zu zeichnenden Pixelposition fort und wiederholt die Aktualisierungsoperation in drei Schritten für die nächste Pixelposition.
- Das Grafikanzeigesystem gemäß der vorliegenden Erfindung verwendet vorzugsweise eine Doppelpufferkonfiguration, um die gewünschte dreidimensionale Darstellung vorzusehen. Diese Konfiguration erfordert einen Bildpuffer 22, der zwischen einem vorderen Puffer und einem hinteren Puffer wechselt, um separate Bilder anzuzeigen. Wenn im vorderen Puffer ein aktuelles Bild gespeichert wird, muss der hintere Puffer gelöscht werden, indem der 2- Puffer über die entsprechenden Invalidisierungsbits gelöscht wird. Ein Bild kann dann in den hinteren Puffer gezeichnet und angezeigt werden.
- Fig. 2 zeigt die zweite Schnittstelleneinheit 18 des Grafikprozessors-/controllers 10 im größeren Detail, die mit dem Z-Pufferspeicher 20 und dem Bildpufferspeicher 22 verbunden ist. Die Schnittstelleneinheit 18 empfängt eine Anzahl von Eingaben, die zum größten Teil durch den Grafikprozessor-/controller 10 oder durch die Software in der Host-CPU 28 erzeugt werden. Diese Eingaben umfassen eine Z-Adresseingabe 48, eine Hintergrund-Z- Werteingabe 50 und eine Interpolierte-Z-Wert-Dateneingabe 52. Außerdem umfassen andere Eingaben eine Z-Etikett-Adresseingabe 56 und eine Bildpuffer-Adresseingabe 58.
- Diese Eingaben werden verarbeitet und zur Steuerung sowie zur Eingabe von Informationen in den Z-Puffer 20 und Bildpuffer 22 verwendet.
- Die Schnittstelleneinheit 18 umfasst einen Multiplexer (MUX) 46, der die Z-Adresseingabe 48 und die Z-Etikett-Adresseingabe 54 empfängt und eine Ausgabe an die Z-Puffer-Schnittstellenlogik 45 vorsieht. Weiterhin ist eine Z-Vergleichs-/Berechnungslogik 42 vorgesehen, die als Eingaben die Hintergrund-Z-Wert-Eingabe 50 und die Interpolierte-Z-Dateneingabe 52 sowie eine Ausgabe aus der Z-Puffer-Schnitstellenlogik 45 erhält. Die Z-Vergleichs- IBerechnungslogik 42 vergleicht den aktuellen Z-Wert aus dem Z-Puffer mit einem neuen Z- Wert und erzeugt daraus eine Z-Vergleichsausgabe 43. Die Z-Vergleichsausgabe 43 wird auf ein Steuerzustandsgerät 57 angewendet, um zu bestimmen, ob das aktuelle Pixel gezeichnet werden soll.
- Die Schnittstelleneinheit 18 enthält auch einen Z-Etikett-Datenpuffer 38. Ein Eingang des Z- Etikett-Datenpuffiers 38 ist mit einem Ausgang der Etikettpuffer-Vergleichslogik 36 verbunden. Die Puffervergleichslogik 36 ist wiederum mit einem Z-Etikettpuffer-Adressspeicher 34 verbunden. Die Etikettpuffer-Vergleichslogik 36 vergleicht die Ausgabe des Etikettpuffer-Adressspeichers 34 mit den höchstwertigen Bits der Z-Etikett-Adresseingabe 54, um zu bestimmen, ob das ausgewählte Z-Etikett (d. h. das Invalidisierungsbit) im Etikettpuffer 38 vorhanden ist. In Reaktion darauf sieht die Vergleichslogik 36 eine Ausgabe für den Z-Etikett-Datenpuffer 38 vor. Der Z-Etikett-Datenpuffer 38 vergleicht die Ausgabe der Vergleichslogik 36 mit der Z-Etikett-Adresseingabe 54 und erzeugt in Reaktion darauf ein Z- Etikett-Gültig-Ausgabesignal. Das Z-Etikett-Gültig-Ausgabesignal 39 wird an dem Steuerzustandgerät 57 angelegt, um zu bestimmen, ob das aktuelle Invalidisierungsbit gültig oder ungültig ist.
- Zusätzlich zu der Z-Vergleichsausgabe 43 und der Etikett-Gültig-Ausgabe 39 empfängt das Steuerzustandsgerät 57 die Z-Etikett-Aktvierungseingabe 55. Die Z-Etikett-Aktivierungseingabe 55 bestimmt, ob die Z-Etikett-Invalidisierungsbit-Operationen aktiviert oder deaktiviert werden. Dadurch kann ein Benutzer die Z-Etikett-Operationen deaktivieren, indem er die richtige Z-Etikett-Aktivierungseingabe 55 wählt. Wenn die Z-Etikett-Aktivierungeingabe 55 auf "aus" gesetzt ist, kann die Z-Etikett-Operationsdeaktivierung die Realisierung eines Z- Puffers mit höherer Auflösung für eine bestimmte Speichergröße ermöglichen. Damit wird ein Benutzer oder ein System in die Lage versetzt, einen dynamischen Kompromiss zwischen der Auflösung und der Leistung zu finden. Dies ist insbesondere vorteilhaft bei der Verwendung in 3-D-Systemen für die aktuelle und zukünftige Verwendung in der PC- Industrie. Das Steuerzustandgerät 57 erzeugt Steuerausgaben 59, die in Reaktion auf die Zustandsgeräteingaben erzeugte Informationen enthalten und in weiteren Verarbeitungsoperationen verwendet werden.
- Die Schnittstelleneinheit 18 umfasst einen weiteren Multiplexer 44, der eine Ausgabe aus der Z-Vergleichs-/Berechnungslogik 42 sowie die Ausgabe des Z-Etikett-Datenpuffers 38 empfängt. Ein Ausgang des Multiplexers 44 ist mit der Z-Puffer-Schnittstellenlogik 45 verbunden. Eine unidirektionaler Adress-/Steuerbus 21 ist zwischen der Z-Puffer-Schnittstellenlogik 45 und dem Z-Pufferspeicher 20 verbunden, um Adress- und Steuersignale für den Z-Pufferspeicher 20 vorzusehen. Ein 64-bittiger bidirektionaler Datenkommunikationsbus 23 ist weiterhin zwischen der Z-Puffer-Schnittstellenlogik 45 und dem Z-Puffer-Speicher 20 für die Datenkommunikation von Wörtern zwischen denselben verbunden.
- Die Schnittstelleneinheit 18 umfasst weiterhin eine Farbberechnungslogik 40, um die interpolierte Farbwerteeingabe 56 zu empfangen. Die Farbberechnungslogik 40 ist wiederum mit der Bildpuffer-Schnittstellenlogik 47 über ein Paar von entgegengesetzten unidirektionalen Bussen verbunden, um neue Daten zu der Bildpuffer-Schnittstellenlogik 47 zu schreiben und bestehende Bildpufferdaten zu der Farbberechnungslogik 40 zu schreiben. Die Bildpufferschnittstellenlogik 47 empfängt weiterhin die Bildpufferadresseingabe 58. Ein unidirektionaler Adress-/Steuerbus 27 verbindet die Bildpuffer-Schnittstellenlogik 47 mit dem Bildpufferspeicher 22, um Adress- und Steuerinformationen für den Bildpufferspeicher 22 vorzusehen. Die Bildpuffer-Schnittstellenlogik 47 und der Bildpufferspeicher 22 werden weiterhin über einen 64-bittige bidirektionalen Datenkommunikationsbus 29 verbunden, um dazwischen Datenwörter zu kommunizieren.
- Fig. 3 und 4 zeigen die Anordnung der im Z-Pufferspeicher 20 gespeicherten Information in Übereinstimmung mit einer linearen Datenstruktur, die mit einem Seiten-organisierten DRAM implementiert ist. Der Z-Pufferspeicher 20 weist eine Vielzahl von Speicherseiten 60 auf, die binäre Informationen in einer konsekutiven Reihe von Bitpositionen speichern. Die Speicherseiten 60 umfassen die Seiten 0 bis max und sehen in Z-Pufferspeicherpositionen gespeicherte Z-Wertinformationen vor. In Übereinstimmung mit dem dargestellten Beispiel enthält jedes Z-Pufferwort vierundsechzig Bit binäre Information, wobei jedes 64-bittige Z- Pufferwort einen oder mehrere Z-Werte (gewöhnlich zwei bis vier Z-Werte) speichert, die jeweils die Tiefe eines Objekts an einer bestimmten Position wiedergeben. In Übereinstimmung mit der vorliegenden Erfindung enthält jede Seite 60 auch eine Vielzahl von Invalidisierungsbits, die hier als Z-Etiketten bezeichnet werden und den auf derselben Speicherseite vorhandenen Z-Werten entsprechen.
- Das Grafikanzeigesystem liest und schreibt Informationen in den DRAM-Z-Pufferspeicher 20 in Übereinstimmung mit einer herkömmlichen Raster-geordneten Datenstruktur. Auf den DRAM-Speicher wird gewöhnlich über die Adressierung von jeweils einer Datenseite zugegriffen, wobei dann fortgeschritten wird, indem die Daten auf der nächsten Informationsseite adressiert werden. Dementsprechend wird auf die Z-Werte und die entsprechenden Invalidisierungsbits (Z-Pixel und Z-Etiketten) für die Seite 0 zugegriffen. Sobald die auf der Seite 0 gefundenen Informationen abgeschlossen sind, wird auf die auf der Seite 1 gefundenen Informationen zugegriffen. Diese Rasterabtastungssequenz fährt zeilenweise linear für die lineare Datenstruktur fort.
- Anstelle des linearen Ansatzes zum Ordnen der Z-Pufferdaten kann ein alternativer Ansatz zum Ordnen von rechteckig gekachelten Daten wie in Fig. 5 verwendet werden. In Übereinstimmung mit dem rechteckig gekachelten Ansatz wird auf den DRAM-Speicher zugegriffen, indem vorbestimmte rechteckige Teile oder Blöcke des Z-Puffer-DRAMS adressiert werden. Wenn das Adressieren und Abtasten eines ersten rechteckigen Blocks abgeschlossen ist, wird der nächste vorbestimmte rechteckige Block adressiert und abgetastet usw. Wie in Fig. 5 gezeigt kann ein bestimmter Abtastbereich alle oder einen Teil der Seiten 0 bis 3 enthalten, wobei dann zu Seite 4 bis 7 für den nächsten Abtastbereich fortgeschritten wird. Der Ansatz des rechteckig gekachelten Abtastens ist dem Fachmann wohlbekannt und muss hier nicht ausführlicher erläutert werden. Es ist jedoch zu beachten, dass jede Seite 60' der Informationen weiterhin Z-Werte für den Teil der abgetasteten Pixelwerte sowie die Invalidisierungsbits (Z-Etiketten) enthält, die den auf einer bestimmten Seite gefundenen Z- Werten entsprechen.
- Fig. 6 stellt die Organisation von binären Informationen dar, die auf einer bestimmten Speicherseite M (60M) des Z-Pufferspeichers 20 gespeichert sind. Die Seite 60M enthält eine Reihe von endlichen Bitpositionen zum Speichern von binärer Information. Die Bitpositionen sind in 64-Bit-Wörter gruppiert, wobei vier 16-Bit-Positionen 62 in jedem Wort enthalten sind. Jede Speicherposition wie etwa die Speicherposition 62a ist zum Speichern eines 16-Bit-Z-Wertes für eine entsprechende Pixelposition vorgesehen. In Übereinstimmung mit dieser Anordnung speichert der erste Speicherbereich 62a einen 16-Bit-Z-Wert für das Pixel #1. Der 16-Bit-Z-Wert sieht eine Angabe der Tiefe eines Objekts in einem bestimmten Bild für das Pixel #1 vor. Der nächste Speicherbereich 62b speichert einen 16-Bit-Z-Wert für das nächste Pixel #2. Die Speicherbereiche 62 für eine bestimmte Seite 60 reichen bis zur letzten Pixelposition N auf einer Seite M. Dementsprechend ist der letzte Speicherbereich 62n auf der Speicherseite M ebenfalls vorgesehen, um einen 16-Bit-Z-Wert für das Pixel #N zu speichern.
- Es werden hier 16-Bit-Z-Wert-Speicherpositionen 62 beschrieben und dargestellt, wobei jedoch auch Speicherpositionen anderer Größe verwendet werden können, ohne dass von der Idee der Erfindung abgewichen wird. Es kann auch vorteilhaft sein, alternativ hierzu 24- bittige oder 32-bittige Z-Wert-Speicherpositionen zu verwenden. Weiterhin wird das Grafikbildsystem in Verbindung mit einer 64-Bit-Datenverarbeitungskonfiguraiton beschrieben, so dass dementsprechend insgesamt vier Speicherpositionen mit jeweils 16-Bit-Z-Werten ein 64-Bit-Wort ergeben. Es können jedoch auch Wörter verschiedener anderer Größen in Verbindung mit der vorliegenden Erfindung verwendet werden.
- Wie bereits weiter oben genannt, enthält jede Seite 60 des Z-Pufferspeichers 20 eine Vielzahl von Invalidisierungsbits (Z-Etiketten). Die Z-Etiketten werden vorzugsweise zusammen in 64-Bit-Wörtern gespeichert, wobei jedes Z-Etikett ein einziges Informationsbit enthält, das den Gültigkeitszustand einer entsprechenden Z-Pufferposition 62 bestimmt. Gewöhnlich wird eine Z-Pufferposition 62 in einem ungültigen Zustand gespeichert, wenn das entsprechende Z-Etikett eine logische "0" aufweist. Andernfalls kann die Logik umgekehrt werden, so dass eine logische "0" einen gültigen Zustand und eine logische "1" einen ungültigen Zustand angibt. Die Z-Pufferposition 62 muss allgemein in einem gültigen Zustand gespeichert werden, um den darin gespeicherten Z-Wert zu verwenden.
- Die Organisation der Z-Etikettinformation ist ausführlich in Fig. 7 dargestellt. Jedes Z-Etikett enthält 64-Bit-Positionen B0 bis B63. Das erste Z-Etikett-Wort 64a weist eine erste Bitposition B0 zum Speichern eines Invalidisierungsbits (Z-Etikett 1) auf, das angibt, ob der Z-Pufferbereich 62a für das Pixel #1 in einem gültigen oder ungültigen Zustand ist. Entsprechend sieht die Bitposition B1 ein Invalidisierungsbit (Z-Etikett 2) vor, das angibt, ob der nächste Z- Puffer-Speicherbereich 62b für das Pixel #2 in einem gültigen oder ungültigen Zustand ist. Die Bitpositionen B3 bis B63 sind entsprechend angeordnet, um Invalidisierungsbits (Z-Etikett 3 bis Z-Etikett 64) vorzusehen, die den Z-Wert-Speicherbereichen entsprechen, die jeweils den Pixeln #3 bis #64 entsprechen. Das nächste oder zweite Z-Etikettwort 64b weist entsprechend 64-Bit-Positionen B&sub0; bis B&sub6;&sub3; auf, die Invalidisierungsbits (Z-Ettikett 65 bis Z- Etikett 128 vorsehen), die Z-Wert-Speicherbereichen für entsprechende Pixel 65 bis 128 auf der entsprechenden Speicherseite entsprechen.
- Die Anzahl der in einer bestimmten Seite 60 enthaltenen Z-Etikettwörter hängt von der Anzahl der Pixelpositionen ab, die durch diese besondere Seite abgedeckt werden. Der Grund dafür ist, dass die vorliegende Erfindung vorzugsweise erfordert, dass jeder Z-Wert- Speicherbereich 62, der einer Pixelposition für eine bestimmte Seite entspricht, ein entsprechendes Invalidisierungsbit aufweist, das in derselben Speicherseite vorhanden ist. Dementsprechend werden die Z-Wert-Pufferbereiche 62 und die entsprechenden Invalidisierungsbits innerhalb derselben Speicherseite gelesen und abgetastet. Dadurch wird die Zeitdauer vermindert, die zum Löschen des Z-Puffers erforderlich ist. Außerdem wird die Effizienz beim Löschen des Z-Puffers erhöht.
- Die Adressberechnungen für die Z-Pixel und Z-Etiketten werden in Verbindung mit den folgenden Beispielen für einen Ansatz zum linearen Abtasten beschreiben. Wenn man annimmt, dass die Speicherwörter des Z-Puffers 20 64 Bit breit sind, kann die lineare (X, Y) Adressierung von Z-Pixeln und Z-Etiketten in dem Z-Puffer 20 mittels der folgenden Adressberechnungen durchgeführt werden:
- Zpixel(Adresse) = ZABasis + Y*ZA_Y_Schritt + X*ZA_X_Schritt;
- ZEtikett(Adresse) = ZABasis + Y*ZA_Y_Schritt + ZEtikett_Versatz + X> > 6;
- ZEtikett(Bit) = Y&0x3F; und
- ZAEtikett Basis = ZABasis + ZEtikett_Versatz.
- Die Z-Pixeladresse (Zpixel(Adresse)) hängt von der Variable ZABasis ab, die der Ursprung des Z-Puffers im Speicher ist und für die Ausrichtung des ersten Speicherworts in der bestimmten DRAM-Seite benötigt wird. Die Variable ZABasis wird zu dem Produkt aus der Y-Koordinate für die bestimmte Abtastzeile und aus dem Wortadressenschritt ZA_Y_Schritt addiert, der die Positionsänderung zwischen einem Z-Pixel in einer Abtasizeile und dem Z- Pixel in der nächsthöheren Abtastzeile entspricht. Zpixel(Adresse) enthält weiterhin die Addition des Produkts aus der X-Koordinate und dem Wortadressschritt ZA_X_Schritt, der die Positionsänderung zwischen einem Z-Pixel und dem folgenden Z-Pixel ist, wobei jedoch X um ein Pixel größer ist.
- Die Z-Etikettadresse enthält entsprechend die zu dem Produkt aus der Y-Koordinate und ZA_Y_Schritt addierte ZABasis. Die Z-Etikettadresse enthält weiterhin die Addition aus einem Wert Z_Etikett_Versatz plus der um sechs Bit nach rechts verschobenen X- Koordinate. Der Wert Z_Etikett_Versatz ist die Differenz zwischen dem Start einer Z-Puffer- DRAM-Seite und dem Start des Z-Etikettworts für die Z-Etiketten auf dieser Seite. Um die Adresse für ein bestimmtes Z-Etikettbit zu finden, wird die X-Koordinate mit einem Hexadezimalwert 3F logisch UND-verknüpft. Dementsprechend kann ein bestimmtes Z-Etikettbit innerhalb der Z-Etikettadresse positioniert sein. Der Ursprung der Z-Etiketten im Z-Puffer wird weiterhin durch ZAEtikett Basis definiert.
- Die folgende Tabelle führt einige Optionen und assoziierte Parameter auf, die in Verbindung mit den oben genannten Beispielen verwendet werden können. Einige Zahlen in der Tabelle könnten angepasst werden, um die Anzahl der Z-Pixel in einer bestimmten Abtastzeile zu erhöhen.
- Eine spezifischere Wortadressberechnung kann für das Z-Pixel, die Z-Etikettadresse und das Z-Etikettbit in Übereinstimmung mit dem Ansatz zum linearen Abtasten vorgesehen werden. Wenn man annimmt, dass 512 Speicherwörter in jeder Speicherseite enthalten sind, 1920 Pixel pro Abtastzeile zugeordnet (1 Speicherseite) werden und die Z-Pixel 16 Bit tief sind (vier Z-Pixel pro Wort), werden die Formeln für die Adressen des Z-Pixels und der Z- Etikettadresse wie folgt übersetzt:
- Zpixel(Adresse) = ZABasis + Y*512 + X*1/4 = ZABasis + Y< < 9 + X> > 2;
- ZEtikett(Adresse) = ZABasis + Y*512 + 480 + X> > 6 = ZABasis + 480 + Y< < 9 + X> > 6;
- ZEtikett(Bit) = Y&0x3F; und
- ZAEtikett Basis = ZABasis + 480.
- Die vorstehenden Formeln berücksichtigen die Größe des Z-Puffers 20 und die Anzahl der Pixel für das bestimmte Beispiel. Als solche können die Werte ZA_Y_Schritt, ZA_X_Schritt und ZEtikett_Versatz in die Gleichung eingefügt und wie gezeigt weiter definiert werden. Die oben genannten Anforderungen können tatsächlich einschränkender sein als für eine bestimmte Anwendung erforderlich ist.
- Wie zuvor genannt, kann das oben erläuterte Schema auf alternative lineare Z-Puffer- Organisationen erweitert werden, die durch zwei andere Möglichkeiten implementiert werden können. In Übereinstimmung mit einem alternativen Ansatz können mehr als eine Abtastzeile (Y) in eine Seite gepackt werden. In Übereinstimmung mit dem anderen alternativen Ansatz können mehr als eine Seite für eine Abtastzeile verwendet werden. Diese zwei Erweiterungen erfordern allgemein zusätzliche Berechnungen wie weiter unten gezeigt und beschrieben.
- Die folgenden Erläuterungen der zwei Erweiterungen sind für Fälle vorgesehen, die Faktoren von zwei vorsehen. Die Erweiterungen können jedoch auch einfach erweitert werden, um andere Faktoren und insbesondere die auf Potenzen von zwei basierenden zu gestatten. Außerdem können Vereinfachungen für die Berechnungen vorgesehen werden, indem beispielsweise verschoben anstatt multipliziert oder dividiert wird, wenn Potenzen von zwei verwendet werden. In einige Fällen kann ein Multiplexer (nicht gezeigt) verwendet werden, um einen von zwei möglichen Versätzen auszuwählen anstatt Multiplikate derselben zu verwenden. Es können auch inkrementelle Berechnungen verwendet werden, um die Adresse eines bestimmten Pixels auf der Basis der Adresse eines benachbarten Pixels zu erzeugen.
- Es kann ein erweitertes Mapping von Z-Etiketten, die mehrere Abtastzeilen in einer einzigen Seite verwenden, mit einem der folgenden zwei Ansätze implementiert werden. In Übereinstimmung mit einem Ansatz werden die Z-Wertedaten von beiden Abtastzeilen zusammengepackt und werden die Z-Etiketten von beiden Abtastzeilen entsprechend zusammengepackt. Dadurch werden die folgenden Adressberechnungen vorgesehen:
- Zpixel(Adresse) = ZABasis + (Y/2)*ZA_GeradeY_Schritt + (Y&0x1)*
- ZA_UngeradeY_Schritt + X*ZA_X_Schritt
- ZEtikett(Adresse) = ZABasis + (Y/2)*ZA_Y_Schritt + (Y&0x1)*ZEtikett_Ungerade_Versatz + ZEtikettVersatz + X; und
- ZEtikett(Bit) = X&0x3F.
- In Übereinstimmung mit dem anderen Ansatz, der für mehrere Abtastzeilen innerhalb einer einzigen Seite verwendet wird, werden die Z-Wertdaten und die Z-Etikettdaten für jede Abtastzeile zusammengepackt. Dadurch wird die Realisierung der folgenden Adressberechnungen vorgesehen:
- Zpixel(Adresse) = ZABasis + (Y/2)*ZA_Y_Schritt + (Y&0x1)*ZA_UngeradeY_Schritt + X* ZA_X_Schritt;
- ZEtikett(Adresse) = ZABasis + (Y/2)*ZA_Y_Schritt + (Y&0x1)*ZUngeradeEtikett_Versatz + (Y&0x1)*(~Y&0x1 = *ZgeradeEtikett_Versatz + X> > 6; und
- ZEtikett(Bit) = X&0x3F.
- Die vorstehenden Gleichungen können mit separat vorgesehenen geraden und ungeraden Variablen ZABasis und ZAEtikett vereinfacht werden, die durch das niedrigstwertige Bit der Y-Koordinate ausgewählt werden. Der Mechanismus kann auch in Übereinstimmung mit dem zweiten Ansatz erweitert werden, damit mehrere Seiten für eine einzige Abtastzeile verwendet werden können. Das folgende Beispiel unterstützt die Verwendung von zwei Seiten in einer Abtastzeile mit einer gewissen Steigerung der Berechnungskomplexität.
- Halbeßreite ist 1/2 der Anzahl von Zpixeln in einer Abtastzeile.
- wenn (X< Halbeßreite),
- Zpixel(Adresse) = ZABasis + (Y*2)*ZA_Y_Schritt+X*ZA_X_Schritt;
- ZEtikett(Adresse) = ZABasis + (Y*2)*ZA_Y_Schritt + ZEtikett_Versatz + X> > 6;
- ansonsten
- Zpixel(Adresse) = ZABasis + (Y*2 + 1)*ZA_Y_Schritt + X*ZA_X_Schritt;
- ZEtikett(Adresse) = ZABasis + (Y*2)*ZA_Y_Schritt + ZEtikett_Versatz + (X-Halbeßreite)> > 6; und
- ZEtikett(Bit) = X&0x3F (wenn Halbeßreite ein Mehrfaches der Anzahl von Bits in einem Z-Pufferwort ist).
- Für die einfachste Implementierung könnten inkrementelle Berechnungen durchgeführt werden, wenn eine Abtastkonvertierung durchgeführt wird. Beispiele von inkrementellen Berechnungen sind wie folgt:
- neuesZpixel(Adresse) + = ZA_X_Schritt //X Schritt; und
- neuesZpixel(Adresse) + = ZA_Y_Schritt //Y Schritt.
- Weiterhin sollte die Z-Etikettadresse als eine Bitadresse berechnet werden, wobei die sechs niedrigstwertigen Bits gekürzt werden sollten, wenn die Speicheradresse benötigt wird. Dadurch wird eine Alternative zu einem 6-Bit-Aufwärts/Abwärts-Zähler vorgesehen, um anzugeben, ob die Wortadresse inkrementiert werden soll oder nicht. Die Verwendung eines Zählers ist bestimmt eine Möglichkeit für die Implementierung, wobei jedoch auch eine zusätzliche Steuerlogik erforderlich sein kann. Die Z-Etikettadressberechnungen können wie folgt vorgesehen werden:
- neuesZEtikett(Adresse) + = X //X Schritt; und
- neuesZEtikett(Adresse) + = ZA_Y_Schritt //Y Schritt.
- Die oben beschriebenen Techniken in Übereinstimmung mit den alternativen Ausführungsformen der vorliegenden Erfindung könnten entsprechend modifiziert werden, um eine rechteckig gekachelte Speicherorganisation zu unterstützen. Dies kann bewerkstelligt werden, indem der zuvor mit Bezug auf Fig. 5 beschriebene Ansatz mit rechteckigen Kacheln verwendet wird.
- Im Folgenden wird die Operation des Grafikbildsystems zum Aktualisieren und Löschen von Teilen eines Z-Puffers in Verbindung mit Fig. 8 und 9 beschrieben. Gemäß Fig. 8 wird das Programm in Schritt 66 eingeleitet und schreitet dann zu Schritt 68 fort, wo die Adresse des ersten Z-Etiketts und des Z-Pixels berechnet wird. Der Testblock 70 prüft dann, ob das Z- Etikett im Etikettpuffer ist. Wenn nicht, schreibt der Schritt 72 ein modifiziertes Z-Etikett zurück in den Speicher, holt das neue Z-Etikettspeichermrort und platziert das neue Z-Etikettwort in den Etikettpuffer. Wenn das Z-Etikett im Etikettpuffer ist, prüft der Testblock 74, ob das Z-Etikett ungültig ist. Wenn das Z-Etikett nicht ungültig ist, holt der Schritt 76 das Z-Pixel aus dem Z-Puffer, verwendet es als aktuellen Z-Wert und schreitet zu Schritt 80 fort. Wenn das Etikett ungültig ist, setzt der Schritt 78 den aktuellen Z-Wert auf den Wert im Z- Hintergrundregister oder auf einen festgelegten Wert.
- Dann führt der Schritt 80 vorbestimmte Z-OperationenlBerechnungen durch, um einen Teil des Z-Puffers zu aktualisieren. Diese Z-Operationen/Berechnungen umfassen gewöhnlich das Lesen und Vergleichen des aktuellen Z-Werts mit einem interpolierten Z-Wert. Wenn außerdem der interpolierte Z-Wert kleiner als der aktuelle Z-Wert ist, wird der interpolierte Z- Wert in den Z-Puffer geladen. Andernfalls wird der aktuelle Z-Wert, der näher ist, in den Z- Puffer geladen. Danach schreibt der Schritt 82 den Z-Wert zurück in den Z-Puffer, setzt das Z-Etikettbit auf gültig und verlässt das Programm über den Schritt 84.
- Wie insbesondere in Fig. 9 dargestellt, tritt das Programm in Schritt 86 ein und berechnet die Adresse und die Maske des Z-Etikettworts in Speicher gemäß Schritt 88. Der Testblock 90 prüft, ob alle Z-Etiketten in dem Z-Etikettenwort gelöscht sind. Wenn alle Etiketten gelöscht sind, schreitet das Programm zu Schritt 94 fort. Wenn nicht alle Etiketten gelöscht sind, liest der Schritt 92 das Z-Etikettwort und schreitet zu Schritt 94 fort. Dann löscht der Schritt 94 alle Z-Etiketten in dem Wort, das mit den gelöschten Pixeln assoziiert ist. Danach sucht der Testblock 96 nach dem letzten Z-Etikett in einer Speicherseite. Wenn das letzte Z-Etikett in einer Speicherseite festgestellt wird, wird zu Schritt 98 fortgeschritten, wo zum nächsten Z- Etikett geschritten wird, wobei dann zum Programmanfang zurückgekehrt wird. Wenn das letzte Z-Etikett in der Speicherseite festgestellt wird, prüft der Testblock 100, ob es sich um die letzte Speicherseite handelt. Wenn die letzte Speicherseite festgestellt wird, schreitet das Programm zum Endschritt 104 fort. Wenn die letzte Speicherseite nicht festgestellt wird, wird zu Schritt 102 fortgeschritten, um zur nächsten zu löschenden Seite zu inkrementieren, wobei dann zum Programmanfang zurückgekehrt wird.
- Die vorliegende Erfindung sorgt in vorteilhafter Weise für ein schnelles Löschen des Z- Puffers 20 und erreicht eine verbesserte Leistung für das gesamte Grafikanzeigesystem. Beispielsweise kann ein herkömmliches Grafikanzeigsystem mit einem Bildpuffer zum Handhaben von 1280 · 1024 Pixeln und einer Schreibgeschwindigkeit von 40 Nanosekunden pro 64-Bit-Wort erfordern, dass alle Wörter in dem Z-Puffer 20 gelöscht werden. Gemäß dem herkömmlichen Ansatz würde dies eine Z-Puffer-Löschzeit von ungefähr 13,1 Millisekunden bei 16-Bit-Wörtern und von ungefähr 26,2 Millisekunden bei 32-Bit-Wörtern erfordern. Bei Verwendung der Invalidisierungsbits gemäß der vorliegenden Erfindung, müssen nur die Z-Etiketten gelöscht werden, um den Z-Puffer zu löschen, wobei dies im vorliegenden Beispiel eine Löschzeit von ungefähr 0,82 Millisekunden erfordert. Dementsprechend ermöglicht die vorliegende Erfindung eine viel schnellere Löschzeit, wobei gleichzeitig die effiziente Organisation der Z-Etiketten im Z-Puffer 20 vorgesehen wird.
- Das hier in Verbindung mit der vorliegenden Erfindung beschriebene Grafikbildsystem ermöglicht es in vorteilhafter Weise, dass beim Löschen des Z-Puffers eine hohe Geschwindigkeit erreicht wird, was die Speichernutzung auf effiziente Weise optimiert. Dies ist besonders vorteilhaft, wenn Teile eins Z-Puffers aktualisiert werden sollen, insbesondere wo Bildraten mit hoher Geschwindigkeit erforderlich sind. Dementsprechend wird das Löschen des Z-Puffers beschleunigt, um eine verbesserte Zeichenleistung bei gleichzeitiger Minimierung der Speichermenge und der erforderlichen Speicherbandbreite zu erreichen. Es wurden besondere Beispiele beschrieben, wobei jedoch zu beachten ist, dass diese Beispiele die Erfindung in keiner Weise einschränken. Zum Beispiel können Z-Pufferpositionen und Z-Etikettenwörter mit einer andere Größe verwendet werden.
- Die vorliegende Erfindung wurde in Verbindung mit einem bestimmten Ausführungsbeispiel beschrieben. Dadurch wird die vorliegende Erfindung jedoch in keiner Weise eingeschränkt. Der Erfindungsumfang wird durch die beigefügten Ansprüche definiert. Der Fachmann kann auf der Basis der vorliegenden Beschreibung und der Zeichnungen weitere Modifikationen vornehmen, ohne dass dadurch der Erfindungsumfang der beigefügten Zeichnungen verlassen wird.
Claims (13)
1. Verfahren zum Löschen eines Teils eines Z-Puffers (20) in einem Bildsystem mit
einer Pixelmatrix, einem Bildpuffer (22) und einem Grafikcontroller (10), wobei der Z-Puffer
einen Seiten-organsierten Speicher mit wahlfreiem Zugriff (RAM) mit einer Vielzahl von
Speicherseiten (60) und eine Matrix von Z-Pufferelementen umfasst und wobei jedes Z-
Pufferelement mit einem entsprechenden Pixel assoziiert ist, wobei das Verfahren umfasst:
Speichern von Z-Wertinformationen (62) in jedem der Z-Pufferelemente;
Erzeugen einer Vielzahl von Invalidisierungsbits (54, 55), wobei jedes der
Invalidisierungsbits einen gültigen oder ungültigen Zustand für ein entsprechendes Z-
Pufferelement bestimmt,
Organisieren der Vielzahl von Invalidisierungsbits (54, 55), so dass jedes der
Invalidisierungsbits auf derselben Seite (60) wie das entsprechende Z-Pufferelement
positioniert ist, und
Schreiben von binären Informationen in einen Teil der Vielzahl von
Invalidisierungsbits, um die Z-Pufferelemente für den zu löschenden Teil des Z-Puffers zu invalidieren.
2. Verfahren nach Anspruch 1, das weiterhin einen Schritt zum Abtasten einer Zeile von
Daten aus einem Seiten-organisierten dynamischen RAM (DRAM) für jede Seite (60) des Z-
Puffers umfasst.
3. Verfahren nach Anspruch 1, das weiterhin einen Schritt zum Abtasten eines
Datenblocks aus einem Seiten (60)-organisierten dynamischen RAM (DRAM) für jede Seite
des Z-Puffers umfasst.
4. Verfahren nach wenigsten einem der Ansprüche 1 bis 3, das weiterhin den folgenden
Schritt umfasst:
Einsetzen (78) eines vorbestimmten Z-Werts anstelle des im Z-Puffer gefundenen Z-
Werts, wenn ein entsprechendes Invalidisierungsbit ungültig ist.
5. Verfahren nach Anspruch 4, wobei der vorbestimmte Wert
Hintergrundanzeigeinformation wiedergibt.
6. Verfahren nach wenigstens einem der Ansprüche 1 bis 5, das weiterhin einen Schritt
zum selektiven Abbrechen des Zugriffs auf Invalidisierungsbits umfasst, um bei Bedarf die
Speichernutzung zu begrenzen.
7. Verfahren nach Anspruch 4, wobei das Bildsystem ein Raster-abgetastetes
Bildsystem ist und wobei der Schritt zum Speichern von Z-Wert-Informationen umfasst:
Speichern einer Vielzahl von Informationsbits in jedem der Z-Pufferelemente, wobei
jedes aus der Vielzahl von Informationsbits Z-Werte für die entsprechenden
Z-Pufferelemente wiedergibt.
8. Verfahren nach Anspruch 7, wobei der vorbestimmte Wert
Hintergrundanzeigeinformation wiedergibt.
9. Verfahren nach wenigstens einem der Ansprüche 7 oder 8, das weiterhin einen
Schritt zum selektiven Abbrechen des Zugriffs auf Invalidisierungsbits umfasst, um die
Speichernutzung bei Bedarf zu begrenzen.
10. Verfahren nach wenigstens einem der Ansprüche 1 bis 9, wobei der
Seitenorganisierte RAM (RAM) einen dynamischer RAM (DRAM) ist.
11. System zum Löschen eines Teils eines Z-Puffers (20) in einer Bildeinrichtung, wobei
das System umfasst:
eine Pixelmatrix,
einen Bildpuffer (22),
einen Grafikcontroller (10),
einen Z-Puffer (20) mit einem Seiten-organisierten Speicher mit wahlfreiem Zugriff
(RAM) mit einer Vielzahl von Speicherseiten (60), wobei jede Speicherseite eine Vielzahl von
Z-Pufferelementen aufweist, die zum Speichern von Z-Werten für einen Satz von
entsprechenden Pixeln vorgesehen sind,
wobei ein einzelnes Invalidisierungsbit für jedes Z-Pufferelement erzeugt wird, so
dass jedes Invalidisierungsbit einen gültigen oder ungültigen Zustand für das entsprechende
Z-Pufferelement bestimmt, wobei jedes der Invalidisierungsbits auf derselben Seite (60) wie
die entsprechenden Z-Pufferelemente positioniert ist, so dass die entsprechenden Z-Puffer in
Reaktion auf die auf derselben Seite (60) abgetasteten Invalidisierungsbits validiert oder
invalidiert werden.
12. System nach Anspruch 11, wobei der Z-Puffer ein dynamischer RAM (DRAM) ist.
13. System nach Anspruch 11 oder 12, das weiterhin eine Einrichtung zum selektiven
Abbrechen des Zugriffs auf die Invalidisierungsbits umfasst, um die Speichernutzung bei
Bedarf zu begrenzen.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/310,821 US5561750A (en) | 1994-09-22 | 1994-09-22 | Z-buffer tag memory organization |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69521953D1 DE69521953D1 (de) | 2001-09-06 |
| DE69521953T2 true DE69521953T2 (de) | 2001-11-22 |
Family
ID=23204258
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69521953T Expired - Lifetime DE69521953T2 (de) | 1994-09-22 | 1995-09-20 | Organisation eines Z-Puffer-Etikettenspeichers |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5561750A (de) |
| EP (1) | EP0704824B1 (de) |
| JP (1) | JPH08212382A (de) |
| DE (1) | DE69521953T2 (de) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5493637A (en) * | 1992-12-04 | 1996-02-20 | Network Computing Devices, Inc. | Video buffer recycling method and apparatus |
| US5808618A (en) * | 1994-10-21 | 1998-09-15 | Matsushita Electric Industrial Co., Ltd. | Three-dimensional displaying apparatus having frame buffer and depth buffer |
| US5729669A (en) * | 1994-11-03 | 1998-03-17 | Cyberflix, Inc. | Method and apparatus for displaying movies using Z-data information |
| TW335466B (en) | 1995-02-28 | 1998-07-01 | Hitachi Ltd | Data processor and shade processor |
| US5812138A (en) * | 1995-12-19 | 1998-09-22 | Cirrus Logic, Inc. | Method and apparatus for dynamic object indentification after Z-collision |
| JPH09330423A (ja) * | 1996-06-13 | 1997-12-22 | Fujitsu Ltd | 三次元形状データ変換装置 |
| US5751291A (en) * | 1996-07-26 | 1998-05-12 | Hewlett-Packard Company | System and method for accelerated occlusion culling |
| US5751290A (en) * | 1996-09-20 | 1998-05-12 | Industrial Technology Research Institute | Three dimensional graphics system and method with correction to z buffer value errors |
| US6697063B1 (en) * | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
| US6996096B2 (en) * | 1997-02-14 | 2006-02-07 | Canon Kabushiki Kaisha | Communication apparatus and a method of controlling a communication apparatus |
| US7102646B1 (en) | 1997-11-25 | 2006-09-05 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
| US6760025B1 (en) * | 1998-07-07 | 2004-07-06 | S3 Graphics Co., Ltd. | Z-buffer based interpenetrating object detection for antialiazing |
| JP3350473B2 (ja) | 1999-03-17 | 2002-11-25 | 富士通株式会社 | オクルージョンカリングを行う3次元グラフィックス描画装置および方法 |
| US6344852B1 (en) | 1999-03-17 | 2002-02-05 | Nvidia Corporation | Optimized system and method for binning of graphics data |
| GB9915012D0 (en) | 1999-06-29 | 1999-08-25 | Koninkl Philips Electronics Nv | Z-buffering graphics system |
| TW459203B (en) * | 2000-04-07 | 2001-10-11 | Welkin Technologies Inc | System and method for clearing buffer in 3D rendering |
| US20020116852A1 (en) * | 2001-02-27 | 2002-08-29 | Kock Lori Ann | Mat for visual artwork and method of making same |
| JP4785320B2 (ja) * | 2002-01-31 | 2011-10-05 | キヤノン株式会社 | 記憶装置 |
| US7333106B1 (en) | 2003-03-27 | 2008-02-19 | Silicon Motion, Inc. | Method and apparatus for Z-buffer operations |
| GB2461821B (en) * | 2007-09-12 | 2010-06-30 | Imagination Tech Ltd | Methods and systems for generating 3-dimensional computer images |
| US8692829B2 (en) * | 2009-10-05 | 2014-04-08 | Nvidia Corporation | Calculation of plane equations after determination of Z-buffer visibility |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4857901A (en) * | 1987-07-24 | 1989-08-15 | Apollo Computer, Inc. | Display controller utilizing attribute bits |
| GB2207840B (en) * | 1987-08-07 | 1991-09-25 | Philips Electronic Associated | Method of and apparatus for modifying data stored in a random access memory |
| US4961153A (en) * | 1987-08-18 | 1990-10-02 | Hewlett Packard Company | Graphics frame buffer with strip Z buffering and programmable Z buffer location |
| US4951232A (en) * | 1988-09-12 | 1990-08-21 | Silicon Graphics, Inc. | Method for updating pipelined, single port Z-buffer by segments on a scan line |
| US5038297A (en) * | 1988-09-13 | 1991-08-06 | Silicon Graphics, Inc. | Method and apparatus for clearing a region of Z-buffer |
| DE3887517T2 (de) * | 1988-09-29 | 1994-05-11 | Toshiba Kawasaki Kk | Steuergerät des die Tiefeninformation enthaltenden Buffers. |
| US5249264A (en) * | 1988-11-14 | 1993-09-28 | International Business Machines Corporation | Image display method and apparatus |
| JPH04140892A (ja) * | 1990-02-05 | 1992-05-14 | Internatl Business Mach Corp <Ibm> | 制御データをエンコードする装置及び方法 |
| US5301263A (en) * | 1990-09-18 | 1994-04-05 | Hewlett-Packard Company | High memory bandwidth system for updating z-buffer values |
| JPH07120435B2 (ja) * | 1990-12-06 | 1995-12-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 高速zバッファの初期化および更新方法ならびにそのシステム |
| US5266941A (en) * | 1991-02-15 | 1993-11-30 | Silicon Graphics, Inc. | Apparatus and method for controlling storage of display information in a computer system |
| JPH07122908B2 (ja) * | 1991-03-12 | 1995-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 3次元のソリッド物体を表す表示可能情報を生成する装置と方法 |
| US5265199A (en) * | 1991-05-22 | 1993-11-23 | Silicon Graphics, Inc. | Method and apparatus for accomplishing Z-buffering by prediction |
| US5274760A (en) * | 1991-12-24 | 1993-12-28 | International Business Machines Corporation | Extendable multiple image-buffer for graphics systems |
| US5416893A (en) * | 1993-10-26 | 1995-05-16 | Hewlett-Packard Co. | Method for displaying edging or decaling of an object in a graphics display |
-
1994
- 1994-09-22 US US08/310,821 patent/US5561750A/en not_active Expired - Lifetime
-
1995
- 1995-09-20 JP JP7278492A patent/JPH08212382A/ja active Pending
- 1995-09-20 EP EP95114826A patent/EP0704824B1/de not_active Expired - Lifetime
- 1995-09-20 DE DE69521953T patent/DE69521953T2/de not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US5561750A (en) | 1996-10-01 |
| EP0704824B1 (de) | 2001-08-01 |
| DE69521953D1 (de) | 2001-09-06 |
| JPH08212382A (ja) | 1996-08-20 |
| EP0704824A2 (de) | 1996-04-03 |
| EP0704824A3 (de) | 1996-07-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69521953T2 (de) | Organisation eines Z-Puffer-Etikettenspeichers | |
| DE69119630T2 (de) | Verfahren und Einrichtung zur Maximierung von Spaltenadressenkohärenz für den Zugriff von seriellen und Direktzugriffstoren in einem graphischen System mit einem Rasterpufferspeicher | |
| DE69721184T2 (de) | Hardware zum rotieren eines bildes | |
| DE69918022T2 (de) | Keine blockierung erforderndes textur-cache-system | |
| DE69032932T2 (de) | System und Verfahren zum unverfälschten Polygonenzeichnen | |
| DE69100140T2 (de) | Verfahren zur Anzeige eines Bildteiles einer physikalischen Struktur. | |
| DE68926571T2 (de) | Wirksames verfahren zur aktualisierung eines zeitverschachtelt arbeitenden einzeltor-z-pufferspeichers | |
| DE69128731T2 (de) | Schaltungsanordnung für die Konvertierung von pyramidenförmigen Texturkoordinaten und diese enthaltendes Anzeigegerät | |
| DE69602728T2 (de) | Vorrichtung zur bildmanipulation und -generation | |
| DE69130123T2 (de) | Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts | |
| DE69021429T2 (de) | Speicherzugriffssteuerschaltung für Grafik-Steuergerät. | |
| DE3587461T2 (de) | Schaltung zum Modifizieren von Daten in einem Anzeigespeicher. | |
| DE69735975T2 (de) | System und Verfahren zur Überlagerung von wahlweise in unterschiedlichen nativen Formaten gespeicherten Bildern | |
| DE69130132T2 (de) | Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven | |
| DE19709220B4 (de) | System und Verfahren für eine beschleunigte Verdeckungsauslese | |
| DE3619420C2 (de) | ||
| DE10101073B4 (de) | Bildaufbereitungsvorrichtung mit niedrigeren Speicherkapazitätsanforderungen und Verfahren dafür | |
| DE3851285T2 (de) | Anzeige-Steuersystem. | |
| DE69122147T2 (de) | Verfahren und Einrichtung zum Abschneiden von Pixeln von Quellen- und Zielfenstern in einem graphischen System | |
| DE3419219C2 (de) | Steuervorrichtung für ein Bildschirmgerät | |
| DE69631718T2 (de) | Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen | |
| DE69021939T2 (de) | Rechnergestützte Erzeugung beweglicher Bilder. | |
| DE60118222T2 (de) | Skalieren von bildern | |
| DE69329940T2 (de) | Grafisches System | |
| DE3889240T2 (de) | Zähler mit veränderbarer Verschaltung zur Adressierung in graphischen Anzeigesystemen. |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| R082 | Change of representative |
Ref document number: 704824 Country of ref document: EP Representative=s name: PATENTANWAELTE RUFF, WILHELM, BEIER, DAUSTER & PAR |