DE69535231T2 - VERFAHREN ZUR INTEGRATION EINES Bildtextursignalspeicher UND INTERPOLATIONSLOGIK - Google Patents

VERFAHREN ZUR INTEGRATION EINES Bildtextursignalspeicher UND INTERPOLATIONSLOGIK Download PDF

Info

Publication number
DE69535231T2
DE69535231T2 DE69535231T DE69535231T DE69535231T2 DE 69535231 T2 DE69535231 T2 DE 69535231T2 DE 69535231 T DE69535231 T DE 69535231T DE 69535231 T DE69535231 T DE 69535231T DE 69535231 T2 DE69535231 T2 DE 69535231T2
Authority
DE
Germany
Prior art keywords
memory
texture
semiconductor chip
interpolator
main 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
Application number
DE69535231T
Other languages
English (en)
Other versions
DE69535231D1 (de
Inventor
R. Marc Los Altos HANNAH
B. Michael San Ramon NAGY
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22768668&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69535231(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69535231D1 publication Critical patent/DE69535231D1/de
Publication of DE69535231T2 publication Critical patent/DE69535231T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das Gebiet der Computeranzeigesysteme. Insbesondere betrifft die vorliegende Erfindung einen integrierten Texturspeicher und eine Interpolationslogikeinrichtung zum Ausführen von Texturabbildungen in einem Computersystem.
  • HINTERGRUND DER ERFINDUNG
  • Computersysteme werden üblicherweise zum Anzeigen von grafischen Objekten auf einem Anzeigebildschirm verwendet. Zu diesen grafischen Objekten gehören Punkte, Linien, Polygone und dreidimensionale Körper. Durch Verwendung von Texturabbildungstechniken können Bereiche und Flächen dieser Objekte mit Farbe und anderen Details versehen werden. Bei der Texturabbildung bzw. dem Textur-Mapping wird ein Musterbild oder eine Textur-Map mit einem Bereich oder einer Fläche eines Objekts kombiniert, um ein modifiziertes Objekt mit dem zusätzlichen Detail der Textur-Map zu erzeugen. Man nehme beispielsweise den Umriss eines strukturlosen Würfels und eine ein Holzmaserungsmuster definierende Textur-Map. Die Texturabbildungstechniken bzw. Textur-Mapping-Techniken können dann verwendet werden, um das Holzmaserungsmuster auf den Würfel abzubilden. Die sich daraus ergebende Anzeige ist diejenige eines Würfels, der aussieht, als wäre er aus Holz hergestellt. Ein anderes Beispiel ist, daß Vegetation und Bäume mit Hilfe von Textur-Mapping zu einem ansonsten kahlen Geländemodell hinzugefügt werden können. Bezeichnungen können auf am Computer modulierte Verpackungsdesigns aufgebracht werden, um visuell das Aussehen eines tatsächlichen Produkts zu vermitteln. Außerdem ermöglichen auf geometrischen Flächen abgebildete Texturen zusätzliche Bewegungs- und Raumeindrücke, welche allein durch eine Schattierung von Flächen nicht erzeugt werden können. Beispielsweise sieht eine um ihren Mittelpunkt rotierende Kugel statisch aus, bis ihre Oberfläche mit einer unregelmäßigen Textur oder einem entsprechenden Muster versehen wird.
  • Das Textur-Mapping beinhaltet die Verwendung einer Textur, die eine im Texturraum definierte Funktion hat. Die Textur wird dann verformt oder in einen Objektraum abgebildet. Üblicherweise wird eine zweidimensionale Textur oder ein Musterbild auf eine dreidimensionale Oberfläche abgebildet. Dies geschieht durch Zuordnen eines zweidimensionalen Index (S,T) in ein Array von Textur-Pixeln (Texeln) unter Bezugnahme auf Punkte auf der dreidimensionalen Fläche. Wenn die Fläche wiedergegeben wird, werden die S- und T-Werte interpoliert und zum Nachschlagen eines Textur-Wertes für jedes wiedergegebene Pixel verwendet. Die interpolierten S- und T-Werte sind im allgemeinen keine Ganzzahlwerte. Daher liegen diese Werte oft zwischen den Textur-Abtastwerten, die von dem Array aus Texeln repräsentiert werden.
  • Es gibt verschiedene Optionen, um bei vorgegebenem realen S- und T-werten einen Texturwert auszuwählen. Die einfachste Möglichkeit ist es, S und T auf die nächsten ganzen Zahlen aufzurunden und dann das den gerundeten Ganzzahlwerten entsprechende Texel auszuwählen. Eine genauere Darstellung wird dadurch erzeugt, daß zwischen den vier nächsten Abtastwerten, die den realen (S, T)-Ort umgeben, interpoliert wird. Manchmal wird ein bilinearer Interpolationsalgorithmus verwendet. In anderen Fällen werden Interpolationsalgorithmen einer höheren Ordnung verwendet, um bessere Ergebnisse zu erzielen.
  • Ein mögliches Problem bei diesen oben beschriebenen einfachen Auswahlprozessen besteht darin, daß wenn die Textur-abgebildete Fläche weit vom Betrachterstandpunkt entfernt ist, eine starke Aliasing-Verzerrung der Textur auftreten kann. Diese unerwünschte Aliasing-Verzerrung tritt auf, da sich die interpolierten (S, T)-Werte über große Flächen der Textur sprunghaft ändern können. Eine als MIP-Mapping bezeichnete bekannte Technik befasst sich mit diesem Problem, indem mehrere gefilterte Kopien der Textur mit allmählich niedrigerer Auflösung zuvor berechnet werden. Beispielsweise würde ein 256×256-Texel-Array gefiltert und wieder abgetastet, um Maps mit Auf lösungen von 128×128, 64×64, 32×32, 16×16, 8×8, 4×4 und 2×2 zu erzielen. Die spezielle Größe des Texel-Array wird basierend auf einem Computer-Parameter gewählt, der als Detailstufe (LOD-Level of Detail) bekannt ist. Der LOD-Parameter repräsentiert die relativen Abstände zwischen den interpolierten (S, T)-Werten. Jede Map-Größe repräsentiert einen Ganzzahl-LOD und die berechneten LOD-Werte sind reelle Zahlen. Eine Texturabbildung hoher Qualität wird erzielt, indem eine bilineare Interpolation in der Map ausgeführt wird, die den Ganzzahl-LOD unmittelbar oberhalb und unterhalb der berechneten LOD von jedem Pixel repräsentiert. Als nächstes wird eine lineare Interpolation zwischen den Ganzzahl-LODs ausgeführt, um den Texturwert bei der Nicht-Ganzzahl-LOD zu erhalten. Dieser Prozess ist bekannt als trilineares MIP-Mapping.
  • Ein weiteres Problem besteht darin, daß bei Hochleistungscomputergrafiksystemen die Wiedergabeoperationen üblicherweise auf eine Reihe von Prozessoren verteilt sind. wenn diese parallele Organisation zur Ausführung von Textur-Mapping verwendet würde, würde jeder Prozessor wahrscheinlich eine Kopie der gesamten Textur-Map in seinem zugehörigen Speicher enthalten. Diese Mehrfachspeicherung der gesamten Textur-Map ist sowohl redundant als auch ineffizient.
  • Ein weiteres Problem besteht darin, daß die Datenübertragung zwischen den verschiedenen Prozessoren und dem Speicher einen großen Teil der begrenzten Bandbreite verbraucht. Das Zuweisen wertvoller Bandbreite für diese Funktion verlangsamt tendenziell den Austausch von anderen benötigten Informationen. Folglich besteht die Gesamtwirkung darin, daß dies eine schwere Belastung für den Textur-Mapping-Prozess darstellt.
  • Daher wird für bekannte Computergrafiksysteme ein schneller, genauer und effizienter Textur-Mapping-Prozess benötigt. Es wäre vorzuziehen, wenn ein derartiger Prozess die für den Textur-Mapping Prozess benötigte Bandbreite irgendwie minimieren könnte. Es wäre ferner sehr wünschenswert, wenn ein derartiger Prozess mit weniger Chips und ohne eine redundante Texturspeicherung implementiert werden könnte.
  • Ein Beispiel einer bekannten dreidimensionalen Grafikzeichnungseinrichtung ist beschrieben in GB-A-2267203 (Fujitsu), welche eine dreidimensionale Grafikzeichnungseinrichtung und eine Speichereinrichtung beschreibt, die beim Textur-Mapping verwendet werden soll, wobei mehrere Prozessoren parallel zur Ausführung der Interpolation verwendet werden. Diese Einrichtung enthält einen Hauptspeicher, einen Cache-Speicher, einen Hauptspeicher-Controller, einen dreidimensionalen Zeichenmechanismus und einen Ausgang.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung betrifft einen Halbleiterchip, wie es in den beigefügten Ansprüchen angegeben ist, das in Computersystemen zum Ausführen von Texturabbildungen für Grafikanwendungen verwendet wird. Verschiedene Textur-Maps werden in den Halbleiterchip eingegeben. Die Textur-Maps werden in einem Hauptspeicher (z. B. DRAM-Matrix bzw. Array) gespeichert. Die Daten für jüngste Textur-Maps werden Cache-gespeichert, um das Lesen und Schreiben von Texeln zu beschleunigen. Ein Speicher-Controller steuert die Datenübertragungen zwischen dem Hauptspeicher und dem Cache. Ferner sind auf dem gleichen Halbleiterchip ein oder mehrere Interpolatoren enthalten. Diese Interpolatoren erzeugen ein Ausgangstexel, indem sie die im Speicher gespeicherten Texturen interpolieren. Der interpolierte Texelwert wird zur Anzeige von dem Halbleiterchip ausgegeben. Dadurch, daß der Texturspeicher und die Integratoren auf dem gleichen Substrat integriert sind, kann die Übertragungsbandbreite sowie die redundante Speicherung von Textur-Maps in einer Mehrprozessorumgebung minimiert werden, wobei der Interpolator aus modularen Scheiben besteht, die gestapelt werden können, um Interpolationen für verschiedene Datenbreiten zu erzeugen.
  • Bei dem derzeit bevorzugten Ausführungsbeispiel wird beim Zugriff auf die DRAM-Zeile deren Inhalt zu dem Cache übertragen, während gleichzeitig auf den Cache zugegriffen wird und erneut die DRAM-Matrix zyklisch durchlaufen wird. Mit anderen Worten, Speicherzugriffszyklen können parallel zum Lesen aus einem Cache ausgeführt werden. Darüber hinaus umfasst ein Ausführungsbeispiel der vorliegenden Erfindung eine Fehlervorhersage, wodurch zukünftige Daten abberufen werden, bevor sie aktuell benötigt werden. Auf diese Weise können Datenübertragungen fortgesetzt werden, ohne daß zusätzliche Verzögerungen erzeugt werden. Bei einem anderen Ausführungsbeispiel bestehen die Interpolatoren aus einer Reihe von modularen Scheiben, welche gestapelt werden können, um nach Wunsch unterschiedliche Datenbreiten zu ermöglichen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung ist beispielhaft und nicht zur Beschränkung in den Figuren der zugehörigen Zeichnung dargestellt, in denen gleiche Bezugszeichen auf ähnliche Elemente hinweisen und in denen:
  • 1 ein Blockschaltbild eines Computergrafiksystems zeigt, auf dem die vorliegende Erfindung ausgeführt werden kann.
  • 2 zeigt ein Blockschaltbild eines Textur-RAMs (TRAM).
  • 3 zeigt ein Blockschaltbild der TRAM-Speicherorganisation.
  • 4 zeigt ein Blockschaltbild von zwei Bänken des Detailstufe(LOD)-Speichers.
  • 5 zeigt einen Vierfach- bzw. Quad-DRAM und Cache-Speicher.
  • 6 zeigt ein Blockschaltbild des TRAM-Resampling-Verbindungsnetzwerks.
  • 7 zeigt ein Blockschaltbild eines MIP-Map-Generators.
  • 8 zeigt ein Beispiel einer Nächste-Nachbarn-Interpolation.
  • 9 zeigt ein Beispiel einer bilinearen Interpolation.
  • 10 zeigt ein Schaltbild eines bilinearen 8-Bit-Interplators.
  • 11 zeigt drei Beispiele von verschiedenen Konfigurationen, die für die Interpolatorketten verwendet werden können.
  • 12 zeigt eine grundlegende 4-Bit-Eingangs-Interpolationsscheibe.
  • 13 zeigt einen 8-Bit-Eingangs-Interpolator, der durch Kopplung zweier 4-Bit-Scheiben gebildet wird.
  • 14 zeigt eine grundlegende 6-Bit-Eingangs-Interpolatorscheibe.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden eine Einrichtung und ein Verfahren zum Integrieren eines Texturspeichers und einer Interpolationslogik zum Ausführen von Texturabbildungen in ein Computeranzeigesystem beschrieben. In der folgenden Beschreibung sind zur Erläuterung zahlreiche spezielle Details angegeben, beispielsweise Speichergrößen, die Cache-Architektur, Interpolationsschemen usw., um ein vollständiges Verständnis der vorliegenden Erfindung zu ermöglichen. Es wird jedoch für den Fachmann klar sein, daß die vorliegende Erfindung ohne diese speziellen Details realisiert werden kann. In anderen Fällen sind bekannte Strukturen und Einrichtungen nur als Blockschaltbild dargestellt, um die vorliegende Erfindung nicht unnötig zu verdecken.
  • Überblick über ein Computersystem in dem die vorliegende Erfindung implementiert werden kann
  • Es wird auf 1 Bezug genommen. Ein Computergrafiksystem, in dem die vorliegende Erfindung realisiert werden kann, ist als 100 dargestellt. Das System 100 kann ein beliebiges computergesteuertes Grafiksystem zum Erzeugen von komplexen oder dreidimensionalen Bildern enthalten, wie beispielsweise die von Silicon Graphics, Inc. aus Mountain View, CA hergestellten Computer der IRISTM Familie. Das Computersystem 100 enthält einen Bus oder eine andere Kommunikationseinrichtung 101 zum Austausch von Informationen, und eine mit dem Bus 101 gekoppelte Verarbeitungseinrichtung 102 zur Informationsverarbeitung. Das System 100 enthält ferner einen Speicher mit wahlfreiem Zugriff (RAM) oder eine andere dynamische Speichereinrichtung 104 (als Hauptspeicher bezeichnet), die mit dem Bus 101 zur Speicherung von Informationen und von dem Prozessor 102 auszuführenden Befehlen gekoppelt ist. Der Hauptspeicher 104 kann auch zum Speichern von temporären Variablen bzw. Zwischenvariablen oder anderen Zwischeninformationen während der Ausführung der Befehle durch den Prozessor 102 verwendet werden. Das Computersystem 100 enthält ferner einen Nur-Lese-Speicher (ROM) und/oder eine andere statische Speichereinrichtung 106, die zur Speicherung von statischen Informationen und Befehlen für den Prozessor 102 mit dem Bus 101 gekoppelt ist/sind. Eine Datenspeichereinrichtung 107 ist mit dem Bus 101 zum Speichern von Informationen und Befehlen gekoppelt.
  • Mit dem Bus 101 ist ferner ein Grafik-Subsystem 111 gekoppelt. Der Prozessor 102 liefert dem Grafik-Subsystem 111 Grafikdaten, beispielsweise Zeichenbefehle, Koordinateneck- bzw. -vertexdaten und andere Daten, die die geometrische Position, Farbe und Oberflächenparameter eines Objekts betreffen. Die Objektdaten werden von dem Grafik-Subsystem 111 in den folgenden vier Pipeline-Stufen verarbeitet: Geometrie-Subsystem, Abtastumwandlungs-Subsystem, Raster-Subsystem und ein Anzeige-Subsystem. Das Geometrie-Subsystem wandelt die grafischen Daten vom Prozessor 102 in ein Bildschirmkoordinatensystem um. Das Abtastumwandlungs-Subsystem erzeugt dann Pixeldaten auf der Basis von Primitiven bzw. Grundelementen (z. B. Punkten, Linien, Polygonen und Gittern bzw. Meshes) aus dem Geometrie-Subsystem. Die Pixeldaten werden an das Raster-Subsystem gesendet, woraufhin Z-Puffer-, Blending- bzw. Mischungs-, Texturing- bzw. Texturgebungs- und Anti-Aliasing-Funktionen ausgeführt werden. Die resultierenden Pixelwerte werden in dem Frame-Puffer 109 gespeichert. Das Anzeige-Subsystem liest den Frame-Puffer 109 und zeigt das Bild auf dem Anzeigemonitor 121 an.
  • Darüber hinaus kann eine Datenspeichereinrichtung 107 beispielsweise eine Magnetplatte oder eine optische Platte und ihr zugehöriges Plattenlaufwerk mit dem Computersystem 100 gekoppelt sein. Das Computersystem 100 kann ferner über den Bus 101 mit einer Anzeigeeinrichtung 121, beispielsweise einer Kathodenstrahlröhre (CRT) zum Anzeigen von Informationen für einen Computernutzer gekoppelt sein. Eine alphanumerische Eingabeeinrichtung 122, einschließlich alphanumerischer und anderer Tasten ist üblicherweise mit dem Bus 101 gekoppelt, um Informationen und Befehlsselektionen an den Prozessor 102 zu übermitteln. Eine weitere Art von Benutzereingabeeinrichtungen ist die Cursorsteuerung 123, beispielsweise eine Maus, ein Trackball oder Cursorrichtungstasten zur Übermittlung von Richtungsinformationen und Befehlsselektionen an dem Prozessor 102 und zum Steuern der Cursorbewegung auf der Anzeige 121. Diese Eingabeeinrichtung hat üblicherweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z. B. X) und einer zweiten Achse (z. B. Y), welches es der Einrichtung ermöglicht, Positionen in einer Ebene zu spezifizieren.
  • Eine weitere Einrichtung, die mit dem Bus 101 gekoppelt werden kann, ist die Hardcopy-Einrichtung 124, welche zum Ausdrucken von Befehlen, Daten oder anderen Informationen auf ein Medium beispielsweise Papier, Folie oder ähnliche Medienarten verwendet werden kann. Zusätzlich kann das Computersystem 100 mit einer Einrichtung zur Tonaufzeichnung und/oder -wiedergabe 125 gekoppelt sein, beispielsweise mit einer Audio-Digitalisiereinrichtung, die mit einem Mikrofon zur Aufzeichnung von Informationen gekoppelt ist. Außerdem kann die Einrichtung einen Lautsprecher enthalten, der mit einem Digital/Anlaog(D/A)-Wandler zur Wiedergabe des digitalisierten Tons gekoppelt ist.
  • Kundenspezifischer Textur-RAM
  • In der vorliegenden Erfindung sind der Texturspeicher, die Interpolations- und Wiederabtastlogik, die mit dem Textur-Mapping verbunden sind, auf einem einzigen Chip, genannt kunden spezifischer Textur-RAM (TRAM) integriert. Mit anderen Worten, die TRAM-Schaltungen (z. B. der Textur-Speicher, beispielsweise ein DRAM und Cache, eine Interpolationslogik, eine Wiederabtastlogik usw.) befinden sich alle auf dem gleichen Substrat eines Chips. Dieses TRAM-Design bietet verschiedene Vorteile. Zunächst wird durch Interpolation auf dem Chip die Anzahl der Datenausgangspins sowie der Support-Chips, die benötigt werden, minimiert. Beispielsweise benötigt jeder TRAM für einen 8-Bit-Fall nur einen 8-Bit-Datenausgang. Die Ergebnisse werden direkt an die Grafikrastereinrichtung gesendet. Außerdem können durch Verwendung der dichtesten dynamischen RAM (DRAM)-Technologie mehrere DRAMs auf dem Chip geschaffen werden. Dies schafft eine Texeladressunabhängigkeit für das MIP-Map-Wiederabtasten bzw. -Resampling, zusammen mit einer großen Texturkapazität und ohne redundante Texturspeicherung. Und durch Cache-Speicherung der DRAM-Zeilen können DRAM-Zugriffe parallel zum Resampling laufen. Außerdem werden Adressen und Daten für einen höheren Durchsatz Pipeline-verarbeitet.
  • 2 zeigt ein Blockschaltbild des TRAM 200. Die Eingangsadresse und Daten werden auf der Leitung 201 in den MIP-Map-Generator 202 und die Speichersteuer- und -adressschnittstelle 203 eingegeben. Sobald die MIP-Maps erzeugt wurden, werden sie von dem Eingangspuffer 204 zwischengespeichert, bevor sie von der DRAM-Matrix 205 gespeichert werden. Darüber hinaus werden Lese- und Cache-Adresse in die Speichersteuer- und -Adressschnittstelle 203 auf den Leitungen 206 und 207 eingegeben. Die Speichersteuer- und Adressschnittstelle 203 steuert die DRAM-Matrix 205 und den Lese-Cache 208. Sub-Texel und LOD-Daten werden von dem Interpolator 209 in Verbindung mit den in dem Lese-Cache 208 enthaltenen MIP-Maps verwendet. Der Interpolator 209 tastet das Texturbild wieder ab, um Ausgangs-Samples bzw. -Abtastwerte zu erzeugen, welche an die Grafik-Rastereinrichtung gesendet werden. Diese Blöcke werden weiter unten detaillierter beschrieben.
  • 3 zeigt eine Blockdarstellung der TRAM-Speicherorganisation. Im wesentlichen enthält der TRAM-Speicher die DRAM-Matrix und den statischen Schreib-Lese-Speicher (SRAM)-Cache, welche in zwei Gruppen von parallelen LOD-Speichern 301 und 302 unterteilt sind. Jede Gruppe ermöglicht einen 2×2-Texelbereich von jedem LOD, um ein trilineares Wiederabtasten bzw. Resampling auszuführen. Jede der beiden Gruppen hat vier unabhängige Speicher-„Quads" bzw. -„Viererelemente" 303306 und 307310. Das Unterteilen des LOD-Speichers in Quads ermöglicht das Texturdurchlaufen zur Minimierung von Cache-Überlastungszuständen an den Bildrändern. Ein zweifach gepufferter Ladeport ist implementiert, so daß der Ladepuffer parallel mit dem DRAM-Schreibzyklus operieren kann.
  • Bei dem derzeit bevorzugten Ausführungsbeispiel sind der DRAM und die I/O-Cache-Speicher in vier Quads eingeteilt. Dies bewirkt, daß wenn eine Spanne oder Zeile während einer Resampling-Operation durchlaufen wird, auf die I/O-Cache-Speicher mit bis zu vier 8-Bit-Texeln von einem einzelnen Quad zugegriffen wird, um den Abtastwert für jeden LOD zu erzeugen. Diese Abtastwerte werden dann zur Ausgabe an die Grafik-Rastereinrichtung von dem Interpolations/Mux-Block 312 gemischt/multiplext.
  • Man beachte, daß die vier Quads jeder Gruppe über eine unabhängige Adressierung verfügen, wie es durch die vier Busse 312315 dargestellt ist. Folglich kann sich jeder Quad in Abtastrichtung bewegen und Daten vorher abrufen, die entlang des Abtastpfads benötigt werden. Die Grafikrastereinrichtung überwacht die Seitenadresse in einer Pipeline und bestimmt im Voraus, ob ein Seitenfehler auftreten wird. Sie beginnt dann den Zugriff auf die benötigten Daten, um den Fehler zu vermeiden, (d. h. die Fehlervorhersage). Zu dem Zeitpunkt, wenn die Adresse das Ende der Pipeline erreicht, wo sie benötigt wird, um aus dem TRAM-Cache wieder abzutasten, sind die Daten bereits von der DRAM-Matrix verfügbar.
  • 4 zeigt eine Blockdarstellung von zwei „Bänken" 401402 des LOD-Speichers. Diese zwei Bänke repräsentieren 1 Mega × 8 Speicher-Quads. Die Bank 401 besteht aus vier 64×1 Bit-Schreibmasken 403406; vier 64×8 Aus/Ein- 512×1 Ein/Aus-I/O-Caches 407410; einem 1K×256 DRAM 411 für gerade Zeilen; und einem 1K×256 DRAM 412 für ungerade Zeilen. In ähnlicher Weise enthält die zweite Bank 402 zu den Blöcken der ersten Bank 401 identische Blöcke.
  • Diese beiden Bänke ermöglichen einen „Ping-Pong"-Modus, indem die Lade- und Wiederabtast-Leistungsfähigkeit entkoppelt sind (d. h. volle Leistungsfähigkeit auf beiden Ports). Dieses Merkmal wird für 4-Bit- und 8-Bit-Texturen bereitgestellt. Bei dem derzeit bevorzugten Ausführungsbeispiel ist für die Konfigurationen jedes LOD Flexibilität vorgesehen. Diese ermöglicht entweder 4-Bit- oder 8-Bit-Ping-Pong-Bänke, räumlich größere 4-Bit- oder 8-Bit-Bänke oder die Kombination der beiden Bänke zum Erhöhen der Texeltiefe (z. B. 12 Bits). Für nicht MIP-Map-Anwendungen können bis zu 1K×1K×8-Bit-Textur-Maps gespeichert werden.
  • 5 zeigt die verschiedenen Möglichkeiten, wie die DRAM- und Cache-Speicher für einen vorgegebenen Quad organisiert werden können. Die 16×16-Matrix 501 repräsentiert ein Byte der 128×8 Bytes in jedem 1K DRAM. Die Matrix 501 kann eine Seite in einem Quad sein, die zu einer der beiden Bänke gehört. Die Zeile 502 repräsentiert einen geraden 1K DRRM, während die Zeile 503 einen ungeraden 1K DRAM repräsentiert.
  • Die Konfiguration 504 zeigt die beiden Bänke 505 und 506 bei der Verwendung in dem oben beschriebenen Ping-Pong-Modus. Bei einem Ausführungsbeispiel haben die Bänke 505 und 506 eine Größe von 16×16×8-Bit. Bei einem anderen Ausführungsbeispiel können diese Bänke mit einer Größe von 16×32×4-Bit konfiguriert sein. Man beachte, daß in den 4- und 8-Bit-Modi ein paralleles Laden und Wiederabtasten zum gleichen TRAM für den Ping-Pong-Modus ausgeführt werden kann. Dies ermöglicht einen unabhängigen Betrieb und verwendet Wiederabtastressourcen (z. B. Spaltendecodierung, I/O-Cache usw.).
  • Alternativ können die beiden Bänke 505 und 506 nebeneinander liegend in Reihe angeordnet werden, wie in der Konfiguration 507 dargestellt ist. Diese Konfiguration 507 schafft einen räumlich größeren durchgehenden Speicher. Bei noch einem anderen Ausführungsbeispiel sind die beiden Bänke in einer parallelen Konfiguration 508 angeordnet. Die Konfiguration 508 schafft einen tieferen Speicher zum Speichern von Texeltiefen von bis zu 16 Bits.
  • Wenn in der Mitte eines Bildes Sampling ausgeführt wird, werden Daten von beiden Banken benötigt. Da die abgerufenen Daten jedoch in komplementären Quads zu finden sind, sind alle Daten gleichzeitig verfügbar. Bei Nicht-MIP-Map- und nicht aktivierten Rändern kommen die Daten an diesen Rändern von der anderen Gruppe. Wenn ein MIP-Mapping vorliegt oder wenn die Ränder freigegeben sind, hält jede Bank diese Randdaten in seinem Randspeicher. Wenn MIP-Mapping freigegeben ist oder Ränder freigegeben sind, ist die Operation konsistent (d. h. Daten an den Rändern kommen aus derselben Gruppe).
  • Die Speichersteuer- und Adressschnittstelle 203 gemäß 2 steuert die DRAM-Matrizen und steuert auch die gemeinsame Nutzung der DRAM-Matrix für Nicht-Ping-Pong-Moden, wenn die Lade- und Wiederabtastports die gleiche DRAM-Ressource benötigen. Diese Schnittstelle wird zum Umladen der beiden Bänke in Ping-Pong-Moden verwendet. Die Schnittstelle 203 dient als Schnittstelle für die Adressen von der Grafik-Rastereinrichtung zu den Zeilenadressen für den DRAM jedes Quads. Dies umfasst doppelt gepufferte Seitenadressregister für jeden DRAM für parallen DRAM-Zugriff und Seitenadressregisterladen. Zusätzlich speichert die Speichersteuer- und Adressschnittstelle die Lade-Port-DRAM-Seitenadresse für die Einbild- oder MIP-Map-Erzeugung und inkrementiert diese.
  • Ein Verbindungsnetzwerk verbindet die Quads mit den Interpolatoren und der Dateneingangslogik. Bei dem Interpolationsprozess werden die vier Quads einer vorgegebenen Gruppe multiplext. Diese Ergebnisse werden dann für jeden Interpolator verfügbar gemacht (d.h. sie werden an deren Eingängen multiplext). Die zwei MUX-Stufen ermöglichen, daß die ganze Matrix als ein großes Bild verwendet wird oder als zwei unabhängige LODs. Randdaten stammen von der gleichen Gruppe, werden aber in einem entgegengesetzten Quad von den Bildkantendaten gespeichert (z. B. horizontale Kanten werden in AB↔CD gespeichert; vertikale Kanten werden in AC↔BD gespeichert). In jedem Fall wird jeder LOD zwischen den beiden Gruppen aufgeteilt.
  • LODs, die kleiner als 16×16 sind, können übertragen werden bzw. einer Wrap-Operation unterliegen, da: 1) die andere horizontale Hälfte sich in der anderen Gruppe befindet, so daß Quad „a"- und Quad „b"-Daten aus dem gleichen 16×16-Bereich nicht benötigt werden, folglich sind sie immer zusammenhängend und 2) die vertikalen Quad „ab"- und Quad „cd"-Adressen unabhängig sind, so daß beliebige zwei Zeilen aus dem gleichen 16×16-Cache gelesen werden können.
  • 6 zeigt ein Schaltbild des TRAM-Resampling-Verbindungsnetzwerks. Zwei Speichergruppen 601 und 602 mit jeweils vier Quads „a's – d's" 603606 und 607610 sind mit den Leseverstärkern 611 gekoppelt. Die Leseverstärker 611 werden zur Verstärkung der schwachen Signale von den DRAM-Datenleitungen der beiden Gruppen verwendet. Ein Riesenlatch 612 wird zur Pipelineverarbeitung der Daten nach der erste Multiplexebene verwendet. Vier 2:1-Multiplexer 621624 werden verwendet, um es einem Teil von jedem LOD oder jedem LOD zu ermöglichen, in jeder Gruppe gespeichert zu werden. Folglich sorgen die Koeffizienten zu den Interpolatoren 625 und 626 für das Multiplexing der beiden Eingänge. Die Ausgangssignale von den Interpolatoren 625 und 626 werden wiederum von dem Interpolator 627 interpoliert. Eine ähnliche Struktur existiert für den anderen LOD. Ein letzter Interpolator 629 wird zum Interpolieren der Ergebnisse von beiden LODs verwendet, die von den Interpolatoren 627 und 628 ausgegeben werden.
  • Zum Laden des TRAM werden bei Verwendung des MIP-Map-Generators zwei LODs gleichzeitig an jede Gruppe 601 oder 602 und an jede Texelposition in der Gruppe gesendet. Da die 4:1-Multiplexer 630637 bidirektionale Tansmissionsgatter enthalten, können sie zum Resampling oder Schreiben von Texeln verwendet werden. Beim Speichern von Rändern werden die Daten wie beim Resampling in den entsprechenden Speichern gespeichert. Wenn Ränder oder MIP-Mapping aktiviert sind, wird der mittlere Rand zwei Mal gespeichert, einmal in jeder Gruppe. Eine Anzahl von Treibern 613620 wird zum Laden von Daten in die DRAMs verwendet. Zwei Treiber sind jeder Eingangsleitung zugeordnet, so daß die zwei Datenbytes getrennt freigegeben werden können.
  • Der in 2 gezeigte MIP-Map-Generator 202 kann eine gesamte MIP-Map für vollständige Bilder erzeugen. Der Ladeeingang des TRAM ermöglicht es, daß die Textur in einer geradlinigen Weise geladen wird. Für aus Kacheln zusammengesetzte Eingangssignale bzw. Tile-Eingangssignale kann der MIP-Map-Generator die Eingangs-Kachel bis zu einem Minimum von einem Texel herunterfiltern. Der MIP-Map-Generator kann sofern erforderlich umgangen werden, um die MIP-Map-Ebenen explizit zu laden sind, wie es der Fall wäre, wenn ein benutzerdefiniertes Filter zum Erzeugen der MIP-Maps angewendet werden soll (z. B. von der CPU erzeugt).
  • Bei dem derzeit bevorzugten Ausführungsbeispiel führt der Generator einen 2×2-Box-Filter aus (d. h. ein mittelwertbildendes Filter), um jedes Texel für die nächste grobere MIP-Map-Ebene zu erzeugen. Ein Box-Filter eliminiert die meisten hohen Frequenzen, welche ein Aliasing erzeugen würden, aber es ist kein sehr scharfes Filter. Der MIP-Map-Generator behandelt 4-, 8- und 12-Bit-Bilder sowie vier 4-Bit- und zwei 8-Bit-Bilder für eine Ein-TRAM-Konfiguration. Bei mehreren TRAMs werden die MIP-Maps parallel erzeugt und gespeichert.
  • 7 zeigt ein Blockschaltbild eines MIP-Map-Generators. Die Eingangsstufe 701 führt die horizontale Filterung der feinen LOD-Stufe aus. Die zweite Stufe 702 nimmt die Ergebnisse der Eingangsstufe 701 und erzeugt eine Ausgabe und Zwischenergebnisse für LODs weiter unten in der MIP-Map. Die Addierer 703 und 704 können als vier parallele 4-Bit-Addierer, zwei 8-Bit-Addierer oder ein 12-Bit-Addierer verwendet werden, und zwar in Abhängigkeit von dem ausgewählten Texel-Modus. Diese zwei Addierer 703 und 704 mitteln zwei Werte mit Trunkierung im wesentlichen dadurch, daß sie diese addieren und dann durch 2 dividieren. In einem Fall werden zwei 4-Bit-Zahlen eingegeben, um ein 4-Bit-Ergebnis zu erzielen. In anderen Fällen werden 8- und 12-Bit-Zahlen in die Addierer eingegeben, um 8- und 12-Bit-Ergebnisse zu erzeugen. Die Breite dieser Addierer muss nur so breit wie die Daten sein. Da 4-Bit(1 – 4 Komponenten)-, 8-Bit (1 oder 2 Komponenten)- oder 12-Bit-Daten unterstützt werden, werden 4-Bit-Addiererscheiben implemen tiert. Diese vier 4-Bit-Addiererscheiben können kombiniert werden, um 8 oder 12-Bit-Addierer zu erzeugen. Eine Anzahl von Zeilenspeichern 705710 wird zum vorübergehenden Speichern von Verarbeitungszwischenergebnissen verwendet. Die Zeilenspeicher 711 und 712 werden zum vorübergehenden Speichern der Ausgaben von dem MIP-Map-Generator verwendet. Der Adressgenerator 713 und der 512×16-Zeilen-RAM 714 werden verwendet, um Adressen und Daten zu/von dem MIP-Map-Generator zu lesen/schreiben.
  • Alle Komponenten werden in den DRAM parallel eingegeben, verarbeitet und gespeichert. Folglich besteht der einzige Unterschied in der Carry- bzw. Übertragschaltung bei den Addierern. Der RAM ermöglicht größere Zeilenlängen, somit ermöglichen die zwei und vier TRAM-Konfigurationen größere Bildzeilen, wobei dies mit Erhöhungen in der Textur-RAM-Kapazität einhergeht.
  • Bei dem derzeit bevorzugten Ausführungsbeispiel werden MIP-Maps und Ränder im TRAM in einer durchgehenden Matrix von TRAM-Blöcken gespeichert. Die Größe dieser Blöcke beträgt entweder 8KBits oder 16KBits, abhängig davon, ob die Bänke 1 oder 2 in jedem LOD-Speicher zusammen verwendet werden oder nicht. Die Grundeinheit der Speicherzuweisung beträgt 8k-Bits. Dies ermöglicht die folgenden kombinierten Seiten/Cache-Größen: 1) 32×32×12 Bits, wobei die Bänke 1 und 2 immer zusammen verwendet werden – 16kBits; 2) 32×32×8 Bits oder 32×64×4 Bits, mit zwei Bänken zum Ping-Ponging – 8kBits jeweils und; 3) 64×32×8 Bits oder 64×64×4 Bits mit einer Bank für große Einzelbilder – 16kBits.
  • Es gibt ein BASE- bzw. Basisoffsetregister, welches zum Spezifizieren der Startadresse der Bilddaten verwendet wird. Folglich sind alle MIP-Map und Randoffsets auf die Basis bezogen. Diese Offsets ändern sich nicht, wenn das Bild zu irgendeiner späteren Zeit in einen anderen TRAM-Teil gelegt würde. Um eine effizientere Verwendung des TRAMs zu ermöglichen, wenn Ränder verwendet werden oder wenn viele kleine Texturen verbunden sind, werden Ränder und kleine MIP-Maps immer, wenn es möglich ist, in die gleiche Seite gepackt. Jede MIP-Map und jeder Rand für jede MIP-Map hat einen Tabelleneintrag für den relativen Offset von der BASE-Adresse zum Start dieser Daten. Die Offsets umfassen Teilblockadressbits, so daß MIP-Maps und Ränder nicht mit den Seitenrändern ausgerichtet sein müssen. Beispielsweise können die 16×16, 8×8, 4×4, 2×2 und 1×1-Mapstufen zusammen in einer Speicherseite gespeichert werden. Zusätzlich können die Ränder in ähnlicher Weise gepackt werden.
  • Die MIP-Map Interpolatoren 209 gemäß 2 tasten das Texturbild wieder ab, um die Ausgabeabtastwerte bzw. Ausgabe-Samples zu erzeugen. Das Ziel besteht darin, so genau wie möglich zu approximieren, welches der Texturbildpixelwert an der angeforderten Position gewesen wäre, wenn ein durchgehendes Texturbild geliefert würde. Eine Tiefpassfilterung wird zur Aliasing-Minimierung implementiert. Die Interpolationsschaltung erzeugt die Approximation, während der MIP-Map-Generator die Tiefpassfilterung behandelt.
  • Die Hardware führt eine „Nächste-Nachbar/Punkt-Abtastwert" (NN) oder bilineare Interpolation an jeder MIP-Map-Stufe aus. Für das NN-Resampling bzw. Wiederabtasten (teilweise „Punkt"- oder „Nächster"- Modus genannt) gilt, das wenn die (S,T)-Koordinate in einer Texel-Grenze nach der Trunkierung fällt, dem Abtastwert dieser Stufe die Intensität des zugehörigen Texels zugewiesen wird. 8 zeigt ein Beispiel des Nächste-Nachbarn-Wiederabtasten. Sechs Texel 801806 mit Intensitäten von 40, 50, 60, 30, 45 bzw. 55 sind dargestellt. Bei einer vorgegebenen Texel-Koordinate von (S,T) _ (1,75, 1,25) entspricht deren NN-Ausgabe Texel 802, und eine Intensität von 50 wird verwendet. Dieses Nächste-Nachbar-Abtastschema erzeugt ein blockartiges Erscheinungsbild, wenn das Bild vergrößert wird. Es erzeugt außerdem ein stärkeres Kanten-Aliasing, wenn eine Kante in dem Bild in Bezug auf die Bildschirmpixel gedreht wird (d. h. gezackte Linien). Infolgedessen wird ein bilineares Filtern zum „Glätten" dieser Effekte verwendet.
  • Beim bilinearen Wiederabtasten wird eine zweidimensionale Interpolation ausgeführt. Es wird die Intensität der Texel mit den vier nächsten Mittelpunkten verwendet. 9 zeigt ein Beispiel des bilinearen Resamplings. Vier Texel 901904 sind mit den jeweiligen Intensitäten I0 – I3 dargestellt. Die Intensität für den Punkt 905 wird von der folgenden Gleichung geliefert: I = Ct ((CS(I1 – 10) + 10) – (Cs(I3 – I2)) + (Cs(I3 – I2) + I2), wobei Cs und Ct die Offsets zwischen den (S,T)-Koordinaten von Texel 901 sind. Infolgedessen ist die aus dem bilinearen Resampling resultierende Ausgabeintensität eine Funktion der vier Intensitäten I0 – I3.
  • 10 zeigt ein bilineares Resampling-Schaltbild. Die ABS-Blöcke 1001 und 1002 geben die Absolutwerte des S-, T- oder LOD-Wertes aus, um die Tatsache zu kompensieren, daß unabhängig davon, ob die Pixelposition rechts oder links von einem Texel liegt, das Texel zu dem gleichen Eingang des Interpolators geht. Diese Absolutwerte lassen den Koeffizienten die Texeldaten verfolgen. Die Ausgabe vom ABS-Block 1001 liefert den Wert von Ct und die Ausgabe vom ABS-Block 1002 liefert den Wert von Cs. Der Subtrahierer 1003 führt eine Subtraktionsfunktion der Intensitäten I0 und I1 aus. Der Multiplizierer 1004 multipliziert dieses Ergebnis mit Cs. Als nächstes addiert der Addierer 1005 I0, wodurch eine Ausgabe von Cs (I1 – I0) + I0 resultiert. In ähnlicher Weise ist die Ausgabe vom Addierer 1006 Cs (I3 – I2) + I2. Der Subtrahierer 1007 subtrahiert die Ausgabe des Addierers 1006 von der Ausgabe des Addierers 1005. Dies wird vom Multiplizierer 1008 mit Ct multipliziert. Zuletzt wird die Ausgabe vom Mulitplizierer 1008 zu der Ausgabe vom Addierer 1006 addiert, wobei dies die bilineare abgetastete Intensität ergibt.
  • Sobald diese Resamplings abgeschlossen wurden, wählt die Hardware entweder zwischen diesen Schemen aus oder interpoliert linear zwischen diesen, um den Ausgabe-Abtastwert zu erzeugen. Diese Ergebnisse werden dann in dem MIP-Map-Generatorblock interpoliert. Sowohl die Nächste-Nachbar-Filterung als auch die bilineare Filterung werden weiter angewendet, wenn eine MIP-Map verwendet wird. Diese Filter werden auf einer oder zwei Map-Stufen ausgeführt, und zwar in Abhängigkeit von dem ausgewählten Filter. Jeder TRAM interpoliert 1 (4-TRAM-Konfiguration), 2 (2-TRAM-Konfiguration) oder 4 (Ein-TRAM-Konfiguration)-Komponenten. Für andere Formatarten werden die Te xelfarbwerte trunkiert, damit sie in die verfügbare Texeltiefe passen.
  • Es wurde festgestellt, daß es am Ausgang des Multiplizierers erforderlich ist, um den Fehler unterhalb von +/- 1,0 LSB an dem LOD-Interpolatorausgang zu halten, daß die beiden Nachkomma-Bits gehalten werden und das Runden mit Hilfe des dritten ausgeführt wird. Das Halten von zwei Nachkomma-Bits schafft einen Fehler von +/- 3/4 bei dem derzeit bevorzugten Ausführungsbeispiel, wobei jeder lineare Interpolator in „Scheiben" unterteilt wird, um 4-, 8-, oder 12-Bit-Daten zu ermöglichen. Die erste Interpolatorstufe muß nur 4-Bit-Eingangsdaten behandeln. Die zweite und dritte Stufe enthalten eine Scheibe, die 6-Bit-Eingangsdaten behandelt.
  • 11 zeigt drei Beispiele von verschiedenen Konfigurationen, die als Interpolatorketten verwendet werden können. In der ersten Konfiguration können vier der 4-Bit-Einheit 1101 gestapelt werden, um trilineare 16-Bit-Interpolationen auszuführen. In der zweiten Konfiguration kann ein Paar von 8-Bit-Einheiten 1102 gestapelt werden, um trilineare 16-Bit-Inerpolationen auszuführen. In der dritten Konfiguration wird eine einzige 12-Bit-Einheit 1103 zur Ausführung der Interpolationen verwendet. Eine Anzahl von Multiplexern wird programmiert, um die verschiedenen Einheiten zu koppeln, um die gewünschten Konfigurationen zu erzielen. Auf diese Weise kann die gleiche Hardware mit einer minimalen zusätzlichen Gatteranzahl verwendet werden, um die Flexibilität in der Datenbreite zu erzielen. Bei einigen Anwendungen ist eine größere Präzision und eine höhere Auflösung wünschenswert. Dagegen sind in anderen Anwendungen Geschwindigkeit und Kosten von größerer Bedeutung.
  • Bei dem derzeit bevorzugten Ausführungsbeispiel enthalten die Einheiten 1101 bis 1103 eine S-Stufe, eine T-Stufe und eine LOD-Stufe. Die S-Stufen enthalten 4-Bit-Scheiben 1104. Die T-Stufen und die LOD-Stufen enthalten 6-Bit-Scheiben 1105. Diese Schreiben wurden konzipiert, um die Interpolatoren modular zu gestalten. 12 zeigt eine grundlegende 4-Bit-Eingangs-Interpolationsscheibe.
  • Die Daten zu den Multiplexern kommen von dem (nicht dargestellten) Subtrahierer. Die höchstwertigen (MS)-Bits sind entweder Vorzeichenerweiterungsbits (wenn die Scheibe als MS-Scheibe verwendet wird) oder sind die niederwertigen Bits von der nächsten höherwertigen Scheibe (sofern es nicht die höchstwertige Scheibe ist). Da jede Scheibe sowohl ein Vorzeichenbit als auch dessen Erweiterung behandelt, sowie Nachkomma-Bits bzw. Fraction Bits, werden diese Möglichkeiten entaktiviert oder umgangen, wie es für die Position der Scheibe in dem größeren Wort geeignet ist. Beispielsweise würde die MS-Scheibe für 8-Bit-Texel das Vorzeichenbit (und keine Nachkomma-Bits) behandeln und die niederwertigste (LS)-Scheibe würde die Nachkomma-Bits (aber kein Vorzeichen) behandeln. Die Multiplexer der Scheibenkonfiguration aktivieren oder entaktivieren den Scheiben-MS-Abschnitt (Vorzeichenerweiterung) oder -LS-Abschnitt (Nachkomma). 13 zeigt einen 8-Bit-Eingangs-Interpolator, der durch Kopplung zweier 4-Bit-Scheiben gebildet ist. 14 zeigt eine grundlegende 6-Bit-Eingangs-Interpolatorschreibe.
  • Die Addierer und Subtrahierer sind aufgeteilt in Addierer mit Übertragsvorausberechnung (CLAs), welche zur Ermöglichung der gewünschten Kombinationen über die Scheiben vorausgeschaut haben. Die Multiplizierer verwenden ein modifiziertes Booth-Verfahren (z. B. Bit-Paar-Umkodierung) gefolgt von einem Wallace-Baum, wobei der Eingang von dem Subtrahierer in der letzten Stufe des Wallace-Baums kombiniert wird. Der Multiplizierer ist derart aufgebaut, daß die gesamte Interpolatorscheibe zur Bildung der genaueren Versionen kombiniert werden kann. Die Multiplikation lautet I*(Sa[0:5) + Sb[0:5] + Sc[0:5] + Sd(0:5]). Dies ermöglicht den einzelnen 4-Bit-Worten getrennt interpretiert zu werden oder entsprechend geschoben und addiert zu werden, um entweder 4-Bit-, 8-Bit- oder 12-Bit-Ergebnisse (z. B. für die 6-Bit-Scheiben) zu erzeugen. „I" ist der 6-Bit-Interpolationswert (Multiplikator in diesem Fall). Dieser grundlegende Multiplikator beträgt folglich 7×6. Da dieser Multiplikator („I") für jede Gruppe von vier Scheiben der gleiche ist, kann die gleiche Umcodierlogik für Gruppen von vier Scheiben verwendet werden.
  • Bei dem derzeit bevorzugten Ausführungsbeispiel wird statt des Kombinierens der Ergebnisse nach deren individueller Berechnung eine Vorgehensweise gewählt, welche Multipliziererscheiben verwendet, die für die breitere Genauigkeit parallel verbunden werden können. Dies verhindert, daß in jeder Scheibe die volle Genauigkeit (6 + 4 = 10 Bits) benötigt wird und beseitigt die letzte Addiererstufe, welche sonst benötigt würde.
  • Somit wurde ein integrierter Texturspeicher und eine Interpolationslogikeinrichtung beschrieben, die zur Ausführung von Texturabbildungen in einem Computeranzeigesystem verwendet werden.

Claims (16)

  1. Ein Halbleiterchip zum Ausführen von Texturabbildungen in einem Computersystem, wobei das Halbleiterchip (200) aufweist: einen Eingang zur Eingabe von Texturen in das Halbleiterchip; einen mit den Eingabemitteln gekoppelten Hauptspeicher (205) zum Speichern der Texturen; einen mit dem Hauptspeicher (205) gekoppelten Cache-Speicher (208) zum Speichern einer jüngst verwendeten Textur; einen mit dem Hauptspeicher (205) und dem Cache-Speicher (208) gekoppelten Speicher-Controller (203) zum Steuern von Datenübertragungen zwischen dem Hauptspeicher (205) und dem Cache-Speicher (208); einen mit dem Speicher (205) gekoppelten Interpolator (209) zum Erzeugen eines Ausgabe-Texels durch Interpolieren aus der in dem Cache-Speicher (208) gespeicherten jüngst verwendeten Textur; einen mit dem Interpolator (209) gekoppelten Ausgang zum Ausgeben des Ausgabe-Texels; dadurch gekennzeichnet, daß sich der Eingang, der Hauptspeicher (205), der Cache-Speicher (208), der Speicher-Controller (203) und der Interpolator (209) auf demselben Substrat aufhalten und wobei der Interpolator (209) aus einer Mehrzahl von modularen Scheiben besteht, welche gestapelt werden können, um Interpolationen für unterschiedliche Datenbreiten zu erzeugen.
  2. Das Halbleiterchip nach Anspruch 1, wobei der Speicher-Controller (203) Speicherzugriffszyklen zu dem Hauptspeicher (205) parallel zu Lesezyklen zu dem Cache-Speicher (208) ausführt.
  3. Das Halbleiterchip nach Anspruch 2, wobei der Hauptspeicher (205) und der Cache-Speicher (208) in wenigstens zwei unabhängig adressierbare Bänke unterteilt sind, um ladende und wieder abtastende Operationen zu entkoppeln.
  4. Das Halbleiterchip nach Anspruch 3, ferner aufweisend ein Mittel zum Vorhersagen von Fehlern, wobei sich das Mittel zum Vorhersagen von Fehlern auf dem Substrat aufhält.
  5. Das Halbleiterchip nach Anspruch 1, wobei der Interpolator (209) eine Nächster-Nachbar-Auswahl der Textur ausführt, um das Ausgabe-Texel zu erzeugen.
  6. Das Halbleiterchip nach Anspruch 1, wobei der Interpolator (209) eine bi-lineare Interpolation der Textur ausführt, um das Ausgabe-Texel zu erzeugen.
  7. Das Halbleiterchip nach Anspruch 1, ferner aufweisend ein mit dem Eingang gekoppeltes Filter zum Filtern der Textur vor der Speicherung in dem Hauptspeicher (205).
  8. Das Halbleiterchip nach Anspruch 7, wobei das Filter aus einem 2×2-Box-Filter besteht.
  9. Ein Verfahren zum Ausführen einer Textur-Abbildung in einem Computersystem, wobei das Verfahren die Schritte umfaßt: Eingeben von Texturen in ein Halbleiterchip (200); Speichern der Texturen in einem Hauptspeicher (205) des Halbleiterchips (200); Speichern einer jüngst verwendeten Textur in einem Cache-Speicher (208) des Halbleiterchips (200); Steuern von Datenübertragungen zwischen dem Hauptspeicher (205) und dem Cache-Speicher (208); Erzeugen eines Ausgabe-Texels durch Implementieren eines Interpolators (209) und Interpolieren aus der jüngst verwendeten Textur, die in dem Cache-Speicher (208) gespeichert ist, wobei sich der Interpolator (209) auf dem Halbleiterchip (200) aufhält; Ausgeben des Ausgabe-Texels aus dem Halbleiterchip (200); und wobei das Verfahren ferner den Schritt des Stapelns einer Mehrzahl von modularen Scheiben umfaßt, um Interpolationen für unterschiedliche Datenbreiten zu erzeugen.
  10. Das Verfahren nach Anspruch 9, ferner umfassend den Schritt des Ausführens von Speicherzugriffszyklen zu dem Hauptspeicher (205) parallel zu Lesezyklen zu dem Cache-Speicher (208).
  11. Das Verfahren nach Anspruch 10, ferner umfassend die Schritte des Unterteilens des Hauptspeichers (205) und des Cache-Speichers (208) in wenigstens zwei unabhängig adressierbare Bänke, um ladende und wieder abtastende Operationen zu entkoppeln.
  12. Das Verfahren nach Anspruch 11, ferner umfassend den Schritt des Vorhersagens von Fehlern, indem Daten, die benötigt werden, bestimmt werden und die Daten abgerufen werden, bevor die Daten benötigt werden.
  13. Das Verfahren nach Anspruch 9, ferner umfassend den Schritt, daß der Interpolator (209) eine Nächste-Nachbar-Auswahl der Textur ausführt, um das Ausgabe-Texel zu erzeugen.
  14. Das Verfahren nach Anspruch 9, ferner umfassend den Schritt, daß der Interpolator (209) eine bi-lineare Interpolation der Textur ausführt, um das Ausgabe-Texel zu erzeugen.
  15. Das Verfahren nach Anspruch 9, ferner umfassend den Schritt des Filterns der Texturen vor der Speicherung in dem Hauptspeicher (205).
  16. Das Verfahren nach Anspruch 15, wobei der Filterschritt durch Benutzung eines 2×2-Box-Filters ausgeführt wird.
DE69535231T 1994-03-07 1995-03-07 VERFAHREN ZUR INTEGRATION EINES Bildtextursignalspeicher UND INTERPOLATIONSLOGIK Expired - Lifetime DE69535231T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/206,959 US5548709A (en) 1994-03-07 1994-03-07 Apparatus and method for integrating texture memory and interpolation logic in a computer system
US206959 1994-03-07
PCT/US1995/002853 WO1995024682A1 (en) 1994-03-07 1995-03-07 Integrating texture memory and interpolation logic

Publications (2)

Publication Number Publication Date
DE69535231D1 DE69535231D1 (de) 2006-11-02
DE69535231T2 true DE69535231T2 (de) 2007-10-11

Family

ID=22768668

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69535231T Expired - Lifetime DE69535231T2 (de) 1994-03-07 1995-03-07 VERFAHREN ZUR INTEGRATION EINES Bildtextursignalspeicher UND INTERPOLATIONSLOGIK

Country Status (5)

Country Link
US (2) US5548709A (de)
EP (1) EP0749599B1 (de)
JP (1) JPH09510309A (de)
DE (1) DE69535231T2 (de)
WO (1) WO1995024682A1 (de)

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548709A (en) * 1994-03-07 1996-08-20 Silicon Graphics, Inc. Apparatus and method for integrating texture memory and interpolation logic in a computer system
JP2673101B2 (ja) * 1994-08-29 1997-11-05 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・グラフィクス装置
EP0710033A3 (de) * 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG Videodekoder mit breitbandigem Speicher
US5889526A (en) * 1994-11-25 1999-03-30 Matsushita Electric Industrial Co., Ltd. Interpolation apparatus and method, and image generation apparatus including such an apparatus
JP3081774B2 (ja) * 1995-05-24 2000-08-28 シャープ株式会社 テクスチャーパターンメモリ回路
EP0747859B1 (de) 1995-06-06 2005-08-17 Hewlett-Packard Company, A Delaware Corporation Unterbrechungsschema zum Aktualisieren eines Lokalspeichers
US5801708A (en) * 1995-06-06 1998-09-01 Hewlett-Packard Company MIP map texture storage by dividing and allocating among multiple blocks
EP0747858B1 (de) * 1995-06-06 2005-12-28 Hewlett-Packard Company, A Delaware Corporation Pufferspeicher für Texturdaten
WO1996039774A1 (en) * 1995-06-06 1996-12-12 Apple Computer, Inc. A caching system for interpolation processing
US5745118A (en) * 1995-06-06 1998-04-28 Hewlett-Packard Company 3D bypass for download of textures
US5751292A (en) * 1995-06-06 1998-05-12 Hewlett-Packard Company Texture mapping method and system
GB9518696D0 (en) * 1995-09-13 1995-11-15 Philips Electronics Nv Image texture mapping
US5740343A (en) * 1995-11-03 1998-04-14 3Dfx Interactive, Incorporated Texture compositing apparatus and method
AU717344B2 (en) * 1995-11-27 2000-03-23 Sun Microsystems, Inc. Texture mapping method and apparatus
US5815157A (en) * 1995-12-11 1998-09-29 International Business Machines Corporation Method and apparatus for texture border address mapping in rectangular coordinates
US5870509A (en) * 1995-12-12 1999-02-09 Hewlett-Packard Company Texture coordinate alignment system and method
US6111584A (en) * 1995-12-18 2000-08-29 3Dlabs Inc. Ltd. Rendering system with mini-patch retrieval from local texture storage
US5940067A (en) * 1995-12-18 1999-08-17 Alliance Semiconductor Corporation Reduced memory indexed color graphics system for rendered images with shading and fog effects
US5892517A (en) * 1996-01-02 1999-04-06 Integrated Device Technology, Inc. Shared access texturing of computer graphic images
EP0803859A3 (de) * 1996-04-23 1998-03-04 Hewlett-Packard Company System und Verfahren zum Optimierung des Speicherbedarfs für einen N-teiligen Verteilungskanal
US5831624A (en) * 1996-04-30 1998-11-03 3Dfx Interactive Inc Level of detail texture filtering with dithering and mipmaps
US5886705A (en) * 1996-05-17 1999-03-23 Seiko Epson Corporation Texture memory organization based on data locality
US6121974A (en) * 1996-06-27 2000-09-19 Cirrus Logic, Inc. Priority storage system for fast memory devices
US5877771A (en) * 1996-07-12 1999-03-02 Silicon Graphics, Inc. Method and apparatus for supersampling based on the local rate of change in texture
US6222552B1 (en) 1996-07-26 2001-04-24 International Business Machines Corporation Systems and methods for caching depth information of three-dimensional images
MY119610A (en) * 1996-07-31 2005-06-30 Sony Corp Apparatus and method for storing and accessing picture generation data
US5987567A (en) * 1996-09-30 1999-11-16 Apple Computer, Inc. System and method for caching texture map information
US6348917B1 (en) * 1996-09-30 2002-02-19 Cirrus Logic, Inc Dynamic switching of texture mip-maps based on depth
US5973701A (en) * 1996-09-30 1999-10-26 Cirrus Logic, Inc. Dynamic switching of texture mip-maps based on pixel depth value
US5935198A (en) * 1996-11-22 1999-08-10 S3 Incorporated Multiplier with selectable booth encoders for performing 3D graphics interpolations with two multiplies in a single pass through the multiplier
US5831640A (en) * 1996-12-20 1998-11-03 Cirrus Logic, Inc. Enhanced texture map data fetching circuit and method
WO1998028713A1 (en) * 1996-12-20 1998-07-02 Cirrus Logic, Inc. Enhanced methods and systems for caching and pipelining of graphics texture data
US5987568A (en) * 1997-01-10 1999-11-16 3Com Corporation Apparatus and method for operably connecting a processor cache and a cache controller to a digital signal processor
US6130674A (en) * 1997-03-31 2000-10-10 Cirrus Logic, Inc. Dynamically selectable texture filter for computer graphics
JP3104643B2 (ja) 1997-05-07 2000-10-30 株式会社セガ・エンタープライゼス 画像処理装置及び画像処理方法
US5946003A (en) * 1997-06-02 1999-08-31 Hewlett Packard Co Method and apparatus for increasing object read-back performance in a rasterizer machine
US6304268B1 (en) * 1997-06-26 2001-10-16 S3 Graphics Co., Ltd. Trilinear texture filtering of two levels of detail based on a single level of detail
EP0890925A3 (de) * 1997-06-30 1999-03-31 Sun Microsystems, Inc. Drei-dimensionalen graphischen Beschleuniger enthaltendes Rechnersystem mit verbesserter Texturabbildungsfähigkeit
GB9715005D0 (en) * 1997-07-17 1997-09-24 Philips Electronics Nv Graphic image texture generation
US6016151A (en) * 1997-09-12 2000-01-18 Neomagic Corp. 3D triangle rendering by texture hardware and color software using simultaneous triangle-walking and interpolation for parallel operation
JP3580682B2 (ja) * 1997-09-26 2004-10-27 株式会社ソニー・コンピュータエンタテインメント 画像処理装置および方法
US6032242A (en) * 1997-10-15 2000-02-29 Industrial Technology Research Institute Methods and systems for generating alternate and zigzag address scans based on feedback addresses of alternate and zigzag access patterns
US6219064B1 (en) 1998-01-07 2001-04-17 Seiko Epson Corporation Graphics mechanism and apparatus for mipmap level estimation for anisotropic texture mapping
JP3985321B2 (ja) * 1998-01-29 2007-10-03 ソニー株式会社 演算装置および画像処理装置
JP4314655B2 (ja) * 1998-03-04 2009-08-19 ソニー株式会社 画像処理装置
US7136068B1 (en) 1998-04-07 2006-11-14 Nvidia Corporation Texture cache for a computer graphics accelerator
EP0961230A3 (de) * 1998-05-29 2001-03-28 Canon Kabushiki Kaisha Bildverarbeitungsverfahren und Vorrichtung dazu
US7616200B1 (en) 1998-06-12 2009-11-10 3Dlabs Inc. Ltd. System for reducing aliasing on a display device
US6351262B1 (en) * 1998-06-30 2002-02-26 Lucent Technologies, Inc. Display techniques for three-dimensional virtual reality
US6369813B2 (en) * 1998-06-30 2002-04-09 Intel Corporation Processing polygon meshes using mesh pool window
US6480913B1 (en) 1998-07-17 2002-11-12 3Dlabs Inc. Led. Data sequencer with MUX select input for converting input data stream and to specific output data stream using two exclusive-or logic gates and counter
US7518616B1 (en) 1998-07-17 2009-04-14 3Dlabs, Inc. Ltd. Graphics processor with texture memory allocation system
US6476816B1 (en) 1998-07-17 2002-11-05 3Dlabs Inc. Ltd. Multi-processor graphics accelerator
WO2000004527A1 (en) * 1998-07-17 2000-01-27 Intergraph Corporation Apparatus and method of directing graphical data to a display device
WO2000004494A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing system with multiple strip breakers
WO2000004436A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing with transcendental function generator
WO2000004495A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation System for processing vertices from a graphics request stream
US6577316B2 (en) 1998-07-17 2003-06-10 3Dlabs, Inc., Ltd Wide instruction word graphics processor
US6459453B1 (en) 1998-07-17 2002-10-01 3Dlabs Inc. Ltd. System for displaying a television signal on a computer monitor
US6246422B1 (en) 1998-09-01 2001-06-12 Sun Microsystems, Inc. Efficient method for storing texture maps in multi-bank memory
US6222561B1 (en) 1998-09-17 2001-04-24 International Business Machines Corporation Render optimization using page alignment techniques
US6300953B1 (en) 1998-10-15 2001-10-09 Nvidia Apparatus and method for grouping texture cache requests
GB2343599B (en) * 1998-11-06 2003-05-14 Videologic Ltd Texturing systems for use in three dimensional imaging systems
US6329997B1 (en) 1998-12-04 2001-12-11 Silicon Motion, Inc. 3-D graphics chip with embedded DRAM buffers
US6704023B1 (en) * 1998-12-04 2004-03-09 Silicon Motion, Inc. 3-D graphics chip with embedded DRAMbuffers
KR100283413B1 (ko) 1998-12-15 2001-04-02 김영환 텍스처 매핑시스템
US6452603B1 (en) 1998-12-23 2002-09-17 Nvidia Us Investment Company Circuit and method for trilinear filtering using texels from only one level of detail
US6549210B1 (en) * 1999-02-03 2003-04-15 Ati Technologies Inc. Method and apparatus for cache index hashing
US6490652B1 (en) * 1999-02-03 2002-12-03 Ati Technologies Inc. Method and apparatus for decoupled retrieval of cache miss data
US7050063B1 (en) * 1999-02-11 2006-05-23 Intel Corporation 3-D rendering texture caching scheme
US7583270B2 (en) * 1999-03-02 2009-09-01 Sony Corporation Image processing apparatus
US6323860B1 (en) * 1999-03-17 2001-11-27 Nvidia Corporation Circuit and method for deferring the binding of render states to primitives in a graphics system
US6380935B1 (en) * 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
US6919895B1 (en) * 1999-03-22 2005-07-19 Nvidia Corporation Texture caching arrangement for a computer graphics accelerator
US6466223B1 (en) * 1999-03-24 2002-10-15 Microsoft Corporation Method and apparatus for texture memory management
US6674440B1 (en) 1999-04-05 2004-01-06 3Dlabs, Inc., Inc. Ltd. Graphics processor for stereoscopically displaying a graphical image
US6532018B1 (en) * 1999-04-19 2003-03-11 Microsoft Corporation Combined floating-point logic core and frame buffer
US6683615B1 (en) 1999-06-09 2004-01-27 3Dlabs Inc., Ltd. Doubly-virtualized texture memory
US6587113B1 (en) 1999-06-09 2003-07-01 3Dlabs Inc., Ltd. Texture caching with change of update rules at line end
US6677952B1 (en) 1999-06-09 2004-01-13 3Dlabs Inc., Ltd. Texture download DMA controller synching multiple independently-running rasterizers
US7050061B1 (en) 1999-06-09 2006-05-23 3Dlabs Inc., Ltd. Autonomous address translation in graphic subsystem
US6744438B1 (en) 1999-06-09 2004-06-01 3Dlabs Inc., Ltd. Texture caching with background preloading
US6650333B1 (en) 1999-06-09 2003-11-18 3Dlabs Inc., Ltd. Multi-pool texture memory management
US7061500B1 (en) 1999-06-09 2006-06-13 3Dlabs Inc., Ltd. Direct-mapped texture caching with concise tags
US6434587B1 (en) 1999-06-14 2002-08-13 Intel Corporation Fast 16-B early termination implementation for 32-B multiply-accumulate unit
US6825848B1 (en) * 1999-09-17 2004-11-30 S3 Graphics Co., Ltd. Synchronized two-level graphics processing cache
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6429873B1 (en) * 1999-12-29 2002-08-06 Intel Corporation Addressing of monolithic texture maps
TW459206B (en) * 2000-03-17 2001-10-11 Silicon Integrated Sys Corp Texture mapping cache connection device and method
US7710425B1 (en) 2000-06-09 2010-05-04 3Dlabs Inc. Ltd. Graphic memory management with invisible hardware-managed page faulting
US6819793B1 (en) * 2000-06-30 2004-11-16 Intel Corporation Color distribution for texture and image compression
US6661424B1 (en) * 2000-07-07 2003-12-09 Hewlett-Packard Development Company, L.P. Anti-aliasing in a computer graphics system using a texture mapping subsystem to down-sample super-sampled images
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US7184059B1 (en) * 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US6980218B1 (en) * 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US6999100B1 (en) * 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7061502B1 (en) 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6636225B2 (en) * 2000-11-20 2003-10-21 Hewlett-Packard Development Company, L.P. Managing texture mapping data in a computer graphics system
US7046243B1 (en) * 2000-11-21 2006-05-16 Microsoft Corporation Rendering volumetric fog and other gaseous phenomena
US6940504B1 (en) 2000-11-21 2005-09-06 Microsoft Corporation Rendering volumetric fog and other gaseous phenomena using an alpha channel
US20020089512A1 (en) * 2000-11-28 2002-07-11 Paul Slade Reduced texture bandwidth method for providing filtering between texture mipmap levels
US7757066B2 (en) * 2000-12-29 2010-07-13 Stmicroelectronics, Inc. System and method for executing variable latency load operations in a date processor
US6735607B2 (en) 2001-06-02 2004-05-11 Lockheed Martin Corporation Transparent data access and interpolation apparatus and method therefor
US20030030646A1 (en) * 2001-08-10 2003-02-13 Yeh Kwo-Woei Trilinear texture filtering method with proper texel selection
KR100420858B1 (ko) * 2001-08-11 2004-03-02 학교법인연세대학교 3차원 렌더링 프로세서의 매핑 처리 장치 및 방법
US7030884B2 (en) * 2003-02-13 2006-04-18 Hewlett-Packard Development Company, L.P. System and method for resampling texture maps
GB2403115B (en) * 2003-06-17 2006-02-08 Imagination Tech Ltd Texturing 3-dimensional computer graphic images
US7626588B1 (en) * 2006-06-16 2009-12-01 Nvidia Corporation Prescient cache management
US7616209B1 (en) 2006-06-16 2009-11-10 Nvidia Corporation Prescient cache management
US20100039562A1 (en) * 2008-04-09 2010-02-18 University Of Kentucky Research Foundation (Ukrf) Source and output device-independent pixel compositor device adapted to incorporate the digital visual interface (DVI)
US8766998B1 (en) * 2008-08-22 2014-07-01 Aechelon Technology, Inc. Sampling of non-planar display surfaces
GB2470611B (en) * 2009-06-25 2011-06-29 Tv One Ltd Apparatus and method for processing data
US8150215B2 (en) * 2010-03-24 2012-04-03 Altek Corporation Routable image pipeline device
US9367948B2 (en) * 2013-11-14 2016-06-14 Intel Corporation Flexible filter logic for multi-mode filtering of graphical texture data
US9569880B2 (en) * 2013-12-24 2017-02-14 Intel Corporation Adaptive anisotropic filtering

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4945500A (en) * 1987-11-04 1990-07-31 Schlumberger Technologies, Inc. Triangle processor for 3-D graphics display system
US5222205A (en) * 1990-03-16 1993-06-22 Hewlett-Packard Company Method for generating addresses to textured graphics primitives stored in rip maps
US5185856A (en) * 1990-03-16 1993-02-09 Hewlett-Packard Company Arithmetic and logic processing unit for computer graphics system
US5224208A (en) * 1990-03-16 1993-06-29 Hewlett-Packard Company Gradient calculation for texture mapping
US5179638A (en) * 1990-04-26 1993-01-12 Honeywell Inc. Method and apparatus for generating a texture mapped perspective view
US5519823A (en) * 1991-03-15 1996-05-21 Hewlett-Packard Company Apparatus for rendering antialiased vectors
GB2267203B (en) * 1992-05-15 1997-03-19 Fujitsu Ltd Three-dimensional graphics drawing apparatus, and a memory apparatus to be used in texture mapping
EP0627682B1 (de) * 1993-06-04 1999-05-26 Sun Microsystems, Inc. Gleitkommaprozessor für einen hochleistungsfähigen dreidimensionalen Graphikbeschleuniger
US5392393A (en) * 1993-06-04 1995-02-21 Sun Microsystems, Inc. Architecture for a high performance three dimensional graphics accelerator
US5548709A (en) * 1994-03-07 1996-08-20 Silicon Graphics, Inc. Apparatus and method for integrating texture memory and interpolation logic in a computer system
US5493643A (en) * 1994-05-03 1996-02-20 Loral Aerospace Corp. Image generator architecture employing tri-level fixed interleave processing and distribution buses

Also Published As

Publication number Publication date
WO1995024682A1 (en) 1995-09-14
DE69535231D1 (de) 2006-11-02
US5706481A (en) 1998-01-06
EP0749599A1 (de) 1996-12-27
EP0749599B1 (de) 2006-09-20
EP0749599A4 (de) 2001-07-04
US5548709A (en) 1996-08-20
JPH09510309A (ja) 1997-10-14

Similar Documents

Publication Publication Date Title
DE69535231T2 (de) VERFAHREN ZUR INTEGRATION EINES Bildtextursignalspeicher UND INTERPOLATIONSLOGIK
EP1227444B1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE69917799T2 (de) Texturierungssysteme zur verwendung in drei-dimensionalen abbildungssystemen
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE60300788T2 (de) Bild mit Feldtiefe aus Z-Pufferbilddaten und Alphamischung
DE3619420C2 (de)
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE69725057T2 (de) Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger
DE69723451T2 (de) Deformation eines digitalen bildes mit effizienter berechnung
DE19620847B4 (de) Verfahren und Vorrichtung zur Texturabbildung
DE69932059T2 (de) Trilineare texturfilterung mit optimiertem speicherzugriff
DE69908966T2 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE10101073B4 (de) Bildaufbereitungsvorrichtung mit niedrigeren Speicherkapazitätsanforderungen und Verfahren dafür
DE60310720T2 (de) Verfahren und vorrichtung zur kodierung von texturinformation
DE69635403T2 (de) Grafikbibliothek auf geteilten Ebenen
DE3636394C2 (de) Einrichtung und Verfahren zur Speicherorganisation
DE19806985B4 (de) Organisationsverfahren für volumetrische Daten, das effiziente Cache-Aufbereitungsbeschleunigungen und einen effizienten Graphik-Hardwareentwurf ermöglicht
DE19807053B4 (de) Strahltransformationsverfahren für eine schnelle Volumenaufbereitung für eine perspektivische Betrachtung
DE3015125A1 (de) Einrichtung zur speicherung und darstellung graphischer information
EP0984397A2 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE69631718T2 (de) Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen
DE69432507T2 (de) Verfahren und Geräte zur Erzeugung von Zeichnungsdaten
DE102013014779A1 (de) Textelement-datenstruktur für programmierbare schattierungseinheit für eine graphikverarbeitungseinheit und verfahren zum betreiben davon
DE69730923T2 (de) Verfahren und Gerät zur Bilderzeugung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition