DE102013114279A1 - Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung - Google Patents

Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung Download PDF

Info

Publication number
DE102013114279A1
DE102013114279A1 DE102013114279.6A DE102013114279A DE102013114279A1 DE 102013114279 A1 DE102013114279 A1 DE 102013114279A1 DE 102013114279 A DE102013114279 A DE 102013114279A DE 102013114279 A1 DE102013114279 A1 DE 102013114279A1
Authority
DE
Germany
Prior art keywords
sample
pixel
data
scan
samples
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.)
Granted
Application number
DE102013114279.6A
Other languages
English (en)
Other versions
DE102013114279B4 (de
Inventor
Alexander Lev Minkin
Henry Packard Moreton
Yury Uralsky
Eric Brian Lum
Dale L. Kirkland
Steven James HEINRICH
Rui Manuel Bastos
Emmett M. Kilgariff
Jeffrey Alan Bolz
Tyson BERGLAND
Patrick R. Brown
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.)
Nvidia Corp
Original Assignee
Nvidia 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
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013114279A1 publication Critical patent/DE102013114279A1/de
Application granted granted Critical
Publication of DE102013114279B4 publication Critical patent/DE102013114279B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

Es werden ein System, ein Verfahren und ein Computerprogrammprodukt für eine Verarbeitung mit Mehrfachabtastung bereitgestellt. Die Mehrfachabtastung Pixeldaten werden empfangen und es wird ein Kodierzustand, der mit den Mehrfachabtastung Pixeldaten verknüpft ist, ermittelt. Es werden Daten für eine Abtastung eines Mehrfachabtastung Pixel und der Kodierzustand für eine Verarbeitungseinheit bereitgestellt. Die eine Abtastung des Mehrfachabtastung Pixel wird von der Verarbeitungseinheit verarbeitet, um verarbeitete Daten für die eine Abtastung zu erzeugen, die verarbeiteten Mehrfachabtastung Pixeldaten für alle Abtastungen des Mehrfachabtastung Pixel oder für zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die grafische Verarbeitung und insbesondere eine Verarbeitung mit Mehrfachabtastung.
  • HINTERGRUND
  • Wenn Techniken mit Mehrfachabtastung verwendet werden, um fehlerbefreite Bilder zu erzeugen, steigt der Grad an Verarbeitung für jedes Pixel mit der Anzahl an Abtastungen pro Pixel an. Zusätzlich zu einer erhöhten Verarbeitung steigt auch der Betrag an Bandbreite an, der verbraucht wird, um Daten zwischen Verarbeitungseinheiten innerhalb eines Grafikprozessors zu übertragen. Die Zunahme beim Verarbeitungsaufwand und der erhöhte Bandbreitenverbrauch können zu einer beeinträchtigten Leistung der grafischen Verarbeitung und/oder zu erhöhten Systemkosten führen.
  • Es besteht daher ein Bedarf zur Lösung der Probleme der gesteigerten Verarbeitung und des größeren Bandbreitenverbrauchs und/oder anderer Probleme, die mit dem Stand der Technik einhergehen.
  • ÜBERBLICK
  • Es werden ein System, Verfahren und ein Computerprogrammprodukt für die Verarbeitung mit Mehrfachabtastung bereitgestellt. Mehrfachabtastung Pixeldaten bzw. Pixeldaten mit Mehrfachabtastung werden empfangen und es wird ein Kodierzustand, der mit diesen Mehrfachabtastung Pixeldaten verknüpft ist, ermittelt. Es werden Daten für eine Abtastung eines Mehrfachabtastung Pixel und der Kodierzustand einer Verarbeitungseinheit zugeleitet. Die eine Abtastung des Mehrfachabtastung Pixel wird von der Verarbeitungseinheit verarbeitet, um verarbeitete Daten für die eine Abtastung zu erzeugen, die verarbeitete Mehrfachabtastung Pixeldaten für alle Abtastungen des Mehrfachabtastung Pixel oder für zwei oder mehr Abtastungen des Mehrfachabtastung Pixel mit repräsentieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Flussdiagramm eines Verfahrens zur Verarbeitung von Mehrfachabtastung Daten bzw. Daten mit Mehrfachabtastung gemäß einer Ausführungsform;
  • 2A zeigt eine Konzeptansicht von Abtaststellen bzw. Abtastungen innerhalb von Pixel gemäß einer Ausführungsform;
  • 2B zeigt ein Diagramm der diversen Verarbeitungseinheiten und Verbindungen, die während der Mehrfachabtastung Verarbeitung bzw. Verarbeitung mit Mehrfachabtastung verwendet werden, gemäß einer Ausführungsform;
  • 2C zeigt eine Ansicht einer Verarbeitungseinheit, die in 2B gezeigt ist, gemäß einer Ausführungsform;
  • 2D zeigt eine weitere Ansicht der Lade/Speichereinheit, die in 2B gezeigt ist, gemäß einer Ausführungsform;
  • 3 zeigt ein weiteres Flussdiagramm eines Verfahrens zur Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform;
  • 4A zeigt ein Flussdiagramm eines Verfahrens zur Vereinigung der Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform;
  • 4B zeigt ein Flussdiagramm eines Verfahrens zur Ausführung eines Schritts des Verfahrens, der in 3 gezeigt ist, gemäß einer Ausführungsform;
  • 5A zeigt ein weiteres Diagramm einer in 2B gezeigten Verarbeitungseinheit gemäß einer Ausführungsform;
  • 5B zeigt eine weitere Ansicht der Lade/Speichereinheit, die in 2B gezeigt ist, gemäß einer Ausführungsform;
  • 5C zeigt eine weitere Ansicht der diversen Verarbeitungseinheiten und Verbindungen, die während der in 2B gezeigten Verarbeitung mit Mehrfachabtastung gemäß einer Ausführungsform verwendet werden;
  • 6A zeigt ein weiteres Flussdiagramm eines Verfahrens zur Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform;
  • 6B zeigt ein weiteres Flussdiagramm eines Verfahrens zur Vereinigung der Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform;
  • 7 zeigt eine Parallelverarbeitungseinheit (PPU) gemäß einer Ausführungsform;
  • 8 zeigt den Datenstrom-Multiprozessor aus 5 gemäß einer Ausführungsform; und
  • 9 zeigt ein anschauliches System, in welchem die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen realisiert werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Wenn konventionelle Grafikprozessoren ausgebildet sind, Oberflächen mit Mehrfachabtastung zu erzeugen, dann wächst die Größe des Speichers, der zur Speicherung der Mehrfachabtastung Pixeldaten bzw. Pixeldaten mit Mehrfachabtastung zugewiesen wird, entsprechend der Anzahl an Abtastungen an, die in jedem Pixel enthalten ist. Wenn die Anzahl an Abtastungen pro Pixel ansteigt, steigt auch die Bandbreitegröße an, die zum Lesen, Schreiben und Senden der Pixeldaten mit Mehrfachabtastung verbraucht wird.
  • Wenn die Daten für die Abtastung eines Pixels gleich sind, kann eine einzelne Abtastung gespeichert werden, die alle Abtastungen eines Pixels mit Mehrfachabtastung oder alle Abtastungen eines Teils eines Pixels mit Mehrfachabtastung repräsentiert, wobei der Teil zwei oder mehr Abtastungen enthält. Ein Kodierzustand kann mit dem Pixel mit Mehrfachabtastung verknüpft werden, der anzeigt, dass die einzelne Abtastung bzw. der einzelne Abtastwert alle Abtastungen repräsentiert, d. h. 1SPP (eine Abtastung pro Pixelteil). In einer Ausführungsform werden Pixel zu Kacheln zusammengefasst, und wenn alle Pixel mit Mehrfachabtastung innerhalb der Kachel durch eine entsprechende einzelne Abtastung repräsentiert werden können, kann ein Kodierzustand von 1SPP der gesamten Kacheln zugewiesen werden. Wenn der Kodierzustand 1SPP ist, wird die Speichergröße zur Speicherung der Pixeldaten mit Mehrfachabtastung reduziert und die zum Lesen, Schreiben und Senden der Pixeldaten mit Mehrfachabtastung verbrauchte Bandbreite wird ebenfalls reduziert. Ferner kann in einigen Fällen eine Verarbeitungseinheit ausgebildet sein, die einzelne Abtastung zu verarbeiten, um verarbeitete Pixeldaten für die einzelne Abtastung zu erzeugen, die verarbeitete Pixeldaten mit Mehrfachabtastung für zwei oder mehr Abtastungen repräsentieren, oder sogar alle Abtastungen eines Pixels repräsentieren. Wenn daher der Kodierzustand 1SPP ist, kann die benötigte Verarbeitungskapazität zur Verarbeitung eines Pixel mit Mehrfachabtastung ebenfalls reduziert werden.
  • 1 zeigt ein Flussdiagramm eines Verfahrens 100 für eine Verarbeitung mit Mehrfachabtastung gemäß einer Ausführungsform. Im Schritt 105 werden Pixeldaten mit Mehrfachabtastung empfangen. Im Schritt 110 wird ein Kodierzustand, der mit dem Pixeldaten mit Mehrfachabtastung verknüpft ist, ermittelt. In einer Ausführungsform werden die Pixeldaten mit Mehrfachabtastung analysiert, um den Kodierzustand zu ermitteln. In einer weiteren Ausführungsform wird der Kodierzustand mit den Pixeldaten mit Mehrfachabtastung empfangen. Im Schritt 115 werden Daten für eine einzelne Abtastung eines Pixel mit Mehrfachabtastung und der Kodierzustand einer Verarbeitungseinheit zugeleitet. Im Schritt 120 wird die eine Abtastung des Pixel von der Verarbeitungseinheit verarbeitet, um verarbeitete Daten für die eine Abtastung zu erzeugen. Die verarbeiteten Daten für die eine Abtastung repräsentieren verarbeitete Pixeldaten mit Mehrfachabtastung für alle Abtastungen oder zumindest einen Teil des Pixels mit Mehrfachabtastung (d. h., alle Abtastungen des gesamten Pixel mit Mehrfachabtastung oder alle Abtastungen eines Teils des Pixel mit Mehrfachabtastung).
  • Es wird nun weitere Information im Hinblick auf diverse optionale Architekturen und Eigenschaften angegeben, mit der die vorhergehende Technik entsprechend den Bedürfnissen des Anwenders realisiert werden kann oder auch nicht. Es sollte jedoch dringend beachtet werden, dass die folgende Information nur für anschauliche Zwecke gedacht ist und in keiner Weise eine Einschränkung darstellen sollte. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale umgesetzt werden.
  • 2A zeigt eine Konzeptansicht 200 von Abtaststellen innerhalb von Pixel 210, 211, 212 und 213 gemäß einer Ausführungsform. Wenn Daten aus einer Oberfläche mit Mehrfachabtastung mit 4 Abtastungen pro Pixel mit einem Kodierzustand, der nicht 1SPP ist, ausgelesen werden, werden vier separate Werte, die den Positionen A, B, C und D entsprechen, in der Oberfläche mit Mehrfachabtastung für jedes Pixel gespeichert. Die Oberfläche mit Mehrfachabtastung kann ein z-Puffer mit Mehrfachabtastung oder ein Farbpuffer mit Mehrfachabtastung sein. Wenn im Gegensatz dazu der Kodierzustand einer Oberfläche mit Mehrfachabtastung 1SPP ist, wird nur ein einziger Wert gespeichert, der den Wert für alle Abtastungen (beispielsweise die Abtastungen A, B, C und D) repräsentiert.
  • Zusätzlich zu dem Pixelwert kann der 1SPP-Kodierzustand auf Kacheln aus Pixel oder sogar auf eine Gesamtoberfläche angewendet werden. Eine Pixel-Kachel kann ein oder mehrere Pixel enthalten, die in einem Bildschirm-Raum oder im Speicher benachbart sind. Eine Größe der Kachel kann in Speichereinheiten angegeben werden, beispielsweise 256 Bytes, anstatt als eine Größe in Pixel. Daher kann die Anzahl an Pixel in einer Kachel entsprechend dem Mehrfachabtastung Modus bzw. Modus mit Mehrfachabtastung variieren (d. h., mehr Abtastungen pro Pixel führen zu einer kleineren Kachelgröße). Pixel in der gleichen Kachel müssen nicht notwendigerweise benachbart sein im Bildschirm-Raum. In einer Ausführungsform ist eine Pixel-Kachel so dimensioniert, dass sie einer Anzahl an Pixel entspricht, die parallel in einem mehrsträngigen Grafikkern verarbeitet werden kann.
  • Wie in 2A gezeigt ist, können die Abtastpositionen innerhalb des Pixel verstreut (d. h. verteilt) werden, um die Bildqualität zu verbessern. In einer Ausführungsform ist eine Abtastposition am Mittelpunkt jedes Pixel angeordnet sein. Andere Pixelmodi mit Mehrfachabtastung können mehr als 4 Abtastwerte oder weniger als vier Abtastungen für jedes Pixel umfassen. Die Daten mit Mehrfachabtastung für jede Abtastung können z-(Tiefe), Farb-, Textur-Koordinaten oder andere Attribute umfassen, die mit grafischen Grundelementen verknüpft sind.
  • 2B zeigt eine Ansicht 220 der diversen Verarbeitungseinheiten und Verbindungen, die während der Verarbeitung mit Mehrfachabtastung gemäß einer Ausführungsform verwendet werden. Ein L2-Cache-Speicher 265 ist ausgebildet, Daten, die einem Teil einer Oberfläche mit Mehrfachabtastung entsprechen, zu speichern, wobei ein Blockpufferspeicher 270 ausgelesen und beschrieben wird, wie dies zur Erfüllung von Lade- und Speicheranforderungen erforderlich ist, die auf die Oberfläche mit Mehrfachabtastung zugreifen. Der L2-Cache-Speicher 265 kann direkt mit dem Blockpufferspeicher 270 verbunden sein, oder der L2-Cache-Speicher 265 kann indirekt mit dem Blockpufferspeicher 270 über eine oder mehrere dazwischen liegende Einheiten, etwa eine Speichersteuerung (nicht gezeigt) verbunden sein.
  • In einer Ausführungsform speichert der L2-Cache-Speicher 265 den Kodierzustand, oder er erhält diesen auf andere Weise, der mit der Oberfläche mit Mehrfachabtastung verknüpft ist. In einer Ausführungsform kann der Kodierzustand in einer Speichersteuerung für jede Seite an Speicher des Blockpufferspeichers 270 gespeichert werden. Der L2-Cache-Speicher 265 ist mit einer Lade/Speichereinheit 290 über eine Kreuzungseinheit 260 verbunden. In einer Ausführungsform ist der Blockpufferspeicher 270 mit dem L2-Cache-Speicher 265 über mehrere Speicherschnittstellen verbunden, und die Kreuzungseinheit 260 ist ausgebildet, Daten zwischen der Lade/Speichereinheit 290 und mehreren L2-Cache-Speichern 265, die mit unterschiedlichen Speicherschnittstellen verbunden sind, nach Bedarf zu verteilen, um entsprechende Speicherstellen in dem Blockpufferspeicher 270 zu erreichen. 5 zeigt weitere Details im Hinblick auf die Speicherschnittstellen. Die mehreren Lade/Speichereinheiten 290 können zwischen der Kreuzungseinheit 260 und den mehreren Verarbeitungseinheiten 250 angeordnet sein, die zur Verarbeitung von Pixeldaten ausgebildet sind.
  • Anstatt in der Lage zu sein, Abtastdaten für alle Abtastungen in einem Pixel mit Mehrfachabtastung zu duplizieren, wenn der Kodierzustand 1SPP ist, um Pixeldaten mit Mehrfachabtastung der Lade/Speichereinheit 290 zuzuführen, kann der L2-Cache-Speicher 265 ausgebildet sein, die Pixeldaten mit Mehrfachabtastung mit nur einer einzelnen Abtastung und dem Kodierzustand von 1SPP der Lade/Speichereinheit 290 über die Kreuzungseinheit 260 zuzuleiten. Die Übertragung von weniger Daten pro Pixel über die Kreuzungseinheit 260 verbraucht weniger Bandbreite. Da weniger Daten über die Kreuzungseinheit 260 übertragen werden, wird auch weniger Leistung verbraucht. Es ist daher wünschenswert, die Pixeldaten mit Mehrfachabtastung unter Anwendung des Kodierzustands von 1SPP zu übertragen. In einer Ausführungsform kann der L2-Cache-Speicher 265 ausgebildet sein, die Pixeldaten mit Mehrfachabtastung in Inkrementen einer Kachelgröße (1SPP-Format oder nicht) an die Lade/Speichereinheit 290 über die Kreuzungseinheit 260 zu übertragen. Folglich kann die Lade/Speichereinheit 290 ausgebildet sein, Pixeldaten mit Mehrfachabtastung in Inkrementen einer Kachelgröße zu speichern. In anderen Ausführungsformen ist der L2-Cache-Speicher 265 ausgebildet, eine Teilmenge der Abtastungen für ein Pixel mit Mehrfachabtastung auf der Grundlage einer Anforderung zu übertragen, die aus der Lade/Speichereinheit 290 empfangen wird.
  • Die Lade/Speichereinheit 290 ist ausgebildet, Pixeldaten mit Mehrfachabtastung der Verarbeitungseinheit 250 zuzuleiten, wenn eine Ladeanforderung aus der Verarbeitungseinheit 250 empfangen wird. Die Lade/Speichereinheit 290 ist ferner ausgebildet, verarbeitete Pixeldaten mit Mehrfachabtastung aus der Verarbeitungseinheit 250 zu empfangen und die Pixeldaten mit Mehrfachabtastung zu speichern. Die Lade/Speichereinheit 290 kann einen Puffer zur temporären Speicherung der verarbeiteten Daten mit Mehrfachabtastung umfassen, bevor die verarbeiteten Daten mit Mehrfachabtastung an den Blockpufferspeicher 270 über die Kreuzungseinheit 260 und den L2-Cache-Speicher 265 ausgegeben werden. In einer Ausführungsform fungiert die Lade/Speichereinheit 290 zumindest teilweise wie ein Cache-Speicher, der ausgebildet ist, Pixeldaten mit Mehrfachabtastung, die aus dem L2-Cache-Speicher 265 empfangen werden, um verarbeitete Pixeldaten mit Mehrfachabtastung, die aus der Verarbeitungseinheit 250 empfangen werden, in einem einzelnen Puffer zwischenzuspeichern. Wenn ein Eintrag in dem Puffer zur Speicherung von Pixeldaten mit Mehrfachabtastung oder von verarbeiteten Pixeldaten mit Mehrfachabtastung nicht verfügbar ist, werden ein oder mehrere Einträge über die Kreuzungseinheit 260 und den L2-Cache-Speicher 265 in den Blockpufferspeicher 270 zurück geschrieben (d. h. gefüllt). Wenn ein Eintrag nicht mit verarbeiteten Pixeldaten mit Mehrfachabtastung, die von der Verarbeitungseinheit 250 empfangen werden, beschrieben worden ist, kann der Eintrag ersetzt werden und nicht in den L2-Cache-Speicher 265 geleert bzw. übertragen werden. Details der Lade/Speichereinheiten 290 sind in Verbindung mit 2C beschrieben.
  • Die Lade/Speichereinheit 290 empfängt die Pixeldaten mit Mehrfachabtastung und ermittelt den Kodierzustand, der mit dem Pixeldaten mit Mehrfachabtastung verknüpft ist. Wenn der Kodierzustand 1SPP ist, werden Daten für eine Abtastung eines Pixel mit Mehrfachabtastung und der Kodierzustand der Verarbeitungseinheit 250 zugeleitet. Wenn der Kodierzustand nicht 1SPP ist, kann die Lade/Speichereinheit 290 ausgebildet sein, Daten für alle Abtastungen oder zumindest einen Teil des Pixel mit Mehrfachabtastung der Verarbeitungseinheit 250 zusammen mit dem Kodierzustand zuzuleiten.
  • In einer Ausführungsform kann die Verarbeitungseinheit 250 ausgebildet sein, eine einzelne Abtastung eines Pixels mit Mehrfachabtastung anstelle aller Abtastungen eines Pixels mit Mehrfachabtastung zu laden, und wendet die einzelne Abtastung zurückgegeben wird und der Kodierzustand für die einzelne Abtastung 1SPP ist, dann verarbeitet die Verarbeitungseinheit 250 die einzelne Abtastung bzw. den einzelnen Abtastwert. Wenn die einzelne Abtastung zurückgegeben wird und der Kodierzustand für die einzelne Abtastung nicht 1SPP ist, dann lädt die Verarbeitungseinheit 250 die verbleibenden Abtastungen des Pixels mit Mehrfachabtastung und verarbeitet alle Abtastungen des Pixel mit Mehrfachabtastung. Durch Verzögerung der Ladung der verbleibenden Abtastungen wird die durch Übertragung der Pixeldaten mit Mehrfachabtastung verbrauchte Bandbreite reduziert, wenn der Kodierzustand 1SPP ist und die verbleibenden Abtastungen werden nicht geladen. In einer weiteren Ausführungsform gibt, wenn die einzelne Abtastung zurückgegeben wird und der Kodierzustand für die einzelne Abtastung nicht 1SPP ist, die Verarbeitungseinheit 250 eine Ladeanforderung für eine oder mehrere weitere Abtastungen heraus.
  • Ein Mehrfachabtastung Ladebefehl bzw. Ladebefehl mit Mehrfachabtastung, der eine Maske enthält, die den Abtastungen des Pixels mit Mehrfachabtastung entspricht, kann verwendet werden, um eine einzelne Abtastung eines Pixels mit Mehrfachabtastung zu laden oder um eine oder mehrere weitere Abtastungen des Pixels mit Mehrfachabtastung zu laden. In einer Ausführungsform spezifiziert der Ladebefehl mit Mehrfachabtastung einen Index, der einer Abtastung entspricht, um die Abtastung oder eine Sequenz aus Abtastungen anzufordern. Bei der Ausführung kann der Ladebefehl mit Mehrfachabtastung ausgebildet sein, die Pixeldaten mit Mehrfachabtastung, die der Abtastung entsprechen, und eine Maske zurückzugeben, die andere Abtastungen in dem Pixel mit Mehrfachabtastung, die die gleichen Pixeldaten mit Mehrfachabtastung haben, und/oder den Kodierzustand des Pixel mit Mehrfachabtastung anzeigt.
  • Wenn der Kodierzustand 1SPP ist, wird die einzelne Abtastung des Pixel mit Mehrfachabtastung von der Verarbeitungseinheit 250 verarbeitet, um verarbeitete Daten für die einzelne Abtastung zu erzeugen, die die verarbeiteten Pixeldaten mit Mehrfachabtastung für alle Abtastungen oder zumindest einen Teil des Pixel mit Mehrfachabtastung repräsentieren. Wenn der Kodierzustand nicht 1SPP ist, werden alle Abtastungen des Pixelbereichs mit Mehrfachabtastung verarbeitet, um die verarbeiteten Daten für alle Abtastungen zu erzeugen. Wenn daher die Anzahl an Abtastungen pro Pixel 8 beträgt, ist der Aufwand an Verarbeitung pro Pixel 8×, wenn der Kodierzustand nicht 1SPP ist, im Vergleich dazu, wenn der Kodierzustand 1SPP ist. Die Verarbeitung wird entsprechend proportional für eine andere Anzahl an Abtastungen pro Pixel reduziert, wenn der Kodierzustand 1SPP ist. Die Reduzierung der Verarbeitung von Pixel mit Mehrfachabtastung kann das Leistungsverhalten verbessern und kann ferner die Leistungsaufnahme reduzieren. Wie in Verbindung mit den 5A, 5B, 5C, 6A und 6B beschrieben ist, kann in anderen Ausführungsformen die Verarbeitungseinheit 250 ausgebildet sein, eine Teilmenge der Abtastungen zu verarbeiten, und die Verarbeitungseinheit 250 liefert Information (beispielsweise eine Abtastmaske pro Pixel oder eine Abtastmaske pro Pixelbereich), die angibt, welche Abtastungen durch die verarbeiteten Daten mit Mehrfachabtastung, die an die Lade/Speichereinheit 290 ausgegeben werden, repräsentiert sind.
  • Wenn die Verarbeitungseinheit 250 ausgebildet ist, eine Mischoperation oder eine Fragment-Schattierungsoperationen auszuführen, kann das Pixel mit Mehrfachabtastung als ein Zielpixel betrachtet werden, das mit Ursprungspixeldaten kombiniert wird, um die verarbeiteten Daten für das Pixel mit Mehrfachabtastung zu erzeugen. Es ist nicht ungewöhnlich für die Ursprungspixeldaten, dass sie den gleichen Wert für alle Abtastungen eines Pixel mit Mehrfachabtastung haben, so dass die Mischung oder die Schattierungsoperationen verarbeitete Daten für eine einzelne Abtastung erzeugt, die alle Abtastungen des verarbeiteten Pixel mit Mehrfachabtastung repräsentieren. In diesem Falle stellt die Verarbeitungseinheit 250 die verarbeiteten Daten für die einzelne Abtastung in einer Speicheranforderung für die Lade/Speichereinheit 290 zusammen mit dem Kodierzustand von 1SPP bereit. Wenn ansonsten die verarbeiteten Daten für alle Abtastungen erzeugt werden, dann stellt die Verarbeitungseinheit 250 die verarbeiteten Daten für alle Abtastungen in einer Speicheranforderung für die Lade/Speichereinheit 290 zusammen mit dem Kodierzustand von nicht 1SPP bereit. Ein Speicherbefehl mit Mehrfachabtastung, der eine Maske enthält, die Abtastungen des Pixel mit Mehrfachabtastung entspricht, kann verwendet werden, um einen Wert für eine oder mehrere Abtastungen eines Pixel mit Mehrfachabtastung zu speichern.
  • Es kann eine Effizienzsteigerungen realisiert werden beim Übertragen von weniger Daten für jedes Pixel mit Mehrfachabtastung und bei der Verarbeitung der Daten, indem der Kodierzustand mit den Daten für die Pixel mit Mehrfachabtastung bereitgestellt wird. Der Betrag an Bandbreite, der für die Übertragung der Daten über die Kreuzungseinheit 260 verbraucht wird, kann für Ladeoperationen und/oder Speicheroperationen verringert werden. Es kann ein einzelner Verarbeitungsstrang von der Verarbeitungseinheit 250 reserviert werden, um die Daten für ein Pixel mit Mehrfachabtastung, das den Kodierzustand von 1SPP hat, zu erzeugen im Vergleich zu der Zuweisung mehrerer Stränge, um die Daten für ein Pixel mit Mehrfachabtastung zu erzeugen, das den Kodierzustand hat, der nicht 1SPP ist. In einer Ausführungsform kann die Lade/Speichereinheit 290 ausgebildet sein, die Daten für die Pixel mit Mehrfachabtastung, die von der Verarbeitungseinheit 250 empfangen werden, in eine Kachel zusammenzuführen, bevor die Daten über die Kreuzungseinheit 260 an den L2-Cache-Speicher 265 gesendet werden. Wenn eine gesamte Kachel an Daten an den L2-Cache-Speicher 265 übertragen wird, kann die Lade/Speichereinheit 290 den Kodierzustand für die gesamte Kachel anstatt für einzelne Pixel mit Mehrfachabtastung bereitstellen.
  • 2C zeigt eine Ansicht der Lade/Speichereinheit 290, die in 2B gezeigt ist, gemäß einer Ausführungsform. Wie in 2C gezeigt ist, umfasst in einer Ausführungsform die Lade/Speichereinheit 290 einen Cache-Speicher 280, eine Ladeanforderungseinheit 285, eine Vereinigungseinheit 255 und eine Abdeckungsverfolgungseinheit 275. Der Cache-Speicher 280 empfängt Daten für ein oder mehrere Pixel mit Mehrfachabtastung und speichert die Daten in Cache-Einträgen. Die Daten können einer Kachel entsprechen, die zwei oder mehr Pixel mit Mehrfachabtastung enthält. Der Cache-Speicher 280 kann ferner den Kodierzustand speichern, der mit den Daten verknüpft ist (für jede Kachel oder für jedes Pixel mit Mehrfachabtastung). In einer Ausführungsform kann der Cache-Speicher 280 auch andere Information speichern, die mit den Daten verknüpft ist, etwa die Anzahl an Abtastungen pro Pixel (Modus mit Mehrfachabtastung) und/oder Abtastmasken pro Pixel. Die Ladeanforderungseinheit 285 ist ausgebildet, den Kodierzustand für die Daten zu ermitteln, die an die Verarbeitungseinheit 250 in Reaktion auf eine Ladeanforderung zurückgegeben werden.
  • In einer Ausführungsform wird der Kodierzustand zusammen mit den Daten aus dem L2-Cache-Speicher 265 empfangen, und die Ladeanforderungseinheit 285 stellt den Kodierzustand der Verarbeitungseinheit 250 zusammen mit den Daten zur Verfügung. In einer weiteren Ausführungsform empfängt die Ladeanforderungseinheit 285 den Kodierzustand aus dem L2-Cache-Speicher 265 nicht, und die Ladeanforderungseinheit 285 ist ausgebildet, die Werte von Daten für unterschiedliche Abtastungen eines Pixel mit Mehrfachabtastung oder eines Teils des Pixel mit Mehrfachabtastung zu vergleichen und den Kodierzustand als 1SPP zu bestimmen, wenn alle Abtastungen eines Pixel mit Mehrfachabtastung den gleichen Wert besitzen. Ansonsten ermittelt die Ladeanforderungseinheit 285, dass der Kodierzustand nicht 1SPP ist. In einer Ausführungsform ist der L2-Cache-Speicher 265 ausgebildet, die Werte von Daten für unterschiedliche Abtastungen eines Pixel mit Mehrfachabtastung oder eines Teils des Pixel mit Mehrfachabtastung zu vergleichen und den Kodierzustand für jedes Pixel oder für eine Kachel aus Pixel zu ermitteln, um den Kodierzustand für die Lade/Speichereinheit 290 bereitzustellen. Wie in Verbindung mit den 5A, 5B, 5C, 6A und 6B beschrieben ist, können in anderen Ausführungsformen der L2-Cache-Speicher 265 und/oder die Lade/Speichereinheit 290 ausgebildet sein, die Werte von Daten für unterschiedliche Abtastungen eines Pixel mit Mehrfachabtastung oder eines Teils eines Pixel mit Mehrfachabtastung zu vergleichen und Information bereitzustellen (beispielsweise Abtastmaske pro Pixel oder Abtastmaske pro Pixelbereich), die angibt, welche Abtastungen durch die verarbeiteten Daten mit Mehrfachabtastung repräsentiert sind, die an die Lade/Speichereinheit 290 oder entsprechend an die Verarbeitungseinheit 250 ausgegeben werden.
  • Abhängig von dem Modus mit Mehrfachabtastung (das heißt, der Anzahl an Abtastungen, die für ein Pixel mit Mehrfachabtastung verwendet wird), kann die Ladeanforderungseinheit 285 ausgebildet sein, den Kodierzustand für ein Teilpixel mit Mehrfachabtastung (das heißt, einen Teil eines Pixel mit Mehrfachabtastung) zu erzeugen. Wenn beispielsweise eine Cache-Zeile des Cache-Speichers 280 32 Bits hat und eine Oberfläche mit Mehrfachabtastung 16 Abtastungen aus 4 Bytes jeweils für jedes Pixel mit Mehrfachabtastung speichert, dann kann die Ladeanforderungseinheit 285 ausgebildet sein, 8 unterschiedliche Abtastungen des Pixel mit Mehrfachabtastung zu vergleichen und einen Kodierzustand für die 8 Abtastungen zu bestimmen. Daher kann jedes Pixel mit Mehrfachabtastung mit 16 Abtastungen zwei Kodierzustände haben, d. h. einen Kodierzustand für jeden Bereich von Abtastungen. Wenn andererseits eine Oberfläche mit Mehrfachabtastung 4 Abtastungen mit 4 Bytes für jedes Pixel mit Mehrfachabtastung speichert, dann kann die Ladeanforderungseinheit 285 ausgebildet sein, 4 unterschiedliche Abtastungen für 2 unterschiedliche Pixel mit Mehrfachabtastung zu vergleichen und einen Kodierzustand für die zwei unterschiedlichen Pixel mit Mehrfachabtastung zu bestimmen. Daher kann die Auflösung des Kodierzustands entsprechend der Anzahl an Vergleichen variieren, die von der Ladeanforderungseinheit 285 durchgeführt werden, und/oder er kann von der Größe einer Cache-Zeile abhängig sein.
  • Die Vereinigungseinheit 255 empfängt verarbeitete Daten für Pixel mit Mehrfachabtastung und den Kodierzustand, der dem Pixel mit Mehrfachabtastung entspricht, aus der Verarbeitungseinheit 250. Die Vereinigungseinheit 255 kann einen Vereinigungspuffer 258 aufweisen, in welchem die verarbeiteten Daten gespeichert werden. Der Vereinigungspuffer 258 kann ausgebildet sein, verarbeitete Daten für eine oder mehr Kacheln zu speichern, oder sogar für eine Teilkachel, wenn die Größe an Speicherplatz, die in dem Vereinigungspuffer 258 benötigt wird, nicht ausreichend ist, um die verarbeiteten Daten für eine gesamte Kachel zu speichern. Wenn der Vereinigungspuffer 258 mehr als eine Kachel speichert, dann ist die Abdeckungsverfolgungseinheit 275 ausgebildet, die Abdeckung für jede Kachel zu verfolgen bzw. zu überwachen. Wenn ferner der Modus mit Mehrfachabtastung für jede Kachel unterschiedlich ist, dann kann die Vereinigungseinheit 255 Information speichern, die den Modus mit Mehrfachabtastung für jede Kachel angibt. Wenn Einträge in dem Vereinigungspuffer 258 beschrieben werden, kann eine entsprechende Cache-Zeile oder ein Teil einer Cache-Zeile in dem Cache-Speicher 280 als ungültig gesetzt werden.
  • In einer Ausführungsform ist der Vereinigungspuffer 258 weggelassen und die verarbeiteten Daten werden in dem Cache-Speicher 280 gespeichert. Anders ausgedrückt, der Vereinigungspuffer 258 ist als die Einträge in dem Cache-Speicher 280 verkörpert, die Daten für die verarbeiteten Pixel speichern. Wenn der Kodierzustand, der von der Verarbeitungseinheit 250 empfangen wird, 1SPP ist, haben alle Abtastungen des Pixel mit Mehrfachabtastung oder ein Teil des Pixel mit Mehrfachabtastung den gleichen Wert. Der 1SPP-Kodierzustand kann für einen Teil eines Pixel mit Mehrfachabtastung verwendet werden, wenn die Anzahl an Abtastungen groß ist. Wenn beispielsweise die Anzahl an Bytes, die zur Speicherung der Daten für alle die Abtastungen in einem Pixel mit Mehrfachabtastung größer als 256 Bytes oder die Größe einer Cache-Zeile ist.
  • In einer Ausführungsform speichert die Abdeckungsverfolgungseinheit 275 ein einzelnes Bit für jedes Pixel mit Mehrfachabtastung, uns das Bit wird gesetzt, wenn eine Speicheranforderung von der Lade/Speichereinheit 290 für das Pixel mit Mehrfachabtastung empfangen wird. Wenn alle Bits für die Pixel mit Mehrfachabtastung einer Kachel gesetzt sind, sind Speicheranforderungen für alle Pixel mit Mehrfachabtastung in der Kachel empfangen worden, und die Kachel ist „voll”. In einer weiteren Ausführungsform verwendet die Abdeckungsverfolgungseinheit 275 einen Zähler, um die Anzahl an Speicheroperationen für eine Kachel zu verfolgen, um zu ermitteln, ob Speicheranforderungen für alle Pixel mit Mehrfachabtastung in der Kachel empfangen worden sind. Wenn eine Kachel „voll” ist, werden die Daten für die Kachel von dem Vereinigungspuffer 258 oder dem Cache-Speicher 280 in den L2-Cache-Speicher 265 geleert. Einträge in dem Cache-Speicher 280, die Daten die Kachel enthalten, können als leer markiert werden, und die Bits in der Abdeckungsverfolgungseinheit 275, die der Kachel entsprechen, können zurückgesetzt werden, wenn die Kachel geleert wird.
  • Wenn der Vereinigungspuffer 258 ausgebildet ist, eine Teilkachel zu speichern, können die verarbeiteten Daten für die Teilkachel geleert werden, wenn die Abdeckungsverfolgungseinheit 275 angibt, dass Speicheroperationen für alle Pixel mit Mehrfachabtastung in der Teilkachel empfangen worden sind. Einträge in dem Cache-Speicher 280, die Daten für die Teilkachel speichern, können als leer markiert werden und die Bits in der Abdeckungsverfolgungseinheit 275, die der Teilkachel entsprechen, können zurückgesetzt werden, wenn die Teilkachel geleert wird. Ein Vorteil der Speicherung von verarbeiteten Daten für Gruppen aus Pixel mit Mehrfachabtastung besteht darin, dass der Kodierzustand an den L2-Cache-Speicher 265 für die gesamte Gruppe, beispielsweise die Kachel, ausgegeben werden kann, anstatt dass ein Kodierzustand für jedes Pixel mit Mehrfachabtastung ausgegeben wird.
  • Unter gewissen Bedingungen kann eine Kachel von der Vereinigungseinheit 255 geleert werden, bevor die verarbeiteten Daten für alle Pixel mit Mehrfachabtastung in der Kachel aus der Verarbeitungseinheit 250 empfangen werden, oder wenn die Kachel nicht „von” ist. Eine erste Bedingung besteht darin, dass verarbeitete Daten für eine „neue” Kachel empfangen werden, wenn Speicherplatz in dem Vereinigungspuffer 258 zur Hinzufügung einer neuen Kachel nicht verfügbar ist. Die zweite Bedingung besteht darin, dass die verarbeiteten Daten für ein Pixel mit Mehrfachabtastung sind, die bereits für eine Kachel, die gerade vereinigt wird, empfangen worden sind (d. h., das Bit, das mit dem Pixel mit Mehrfachabtastung verknüpft ist, ist in der Abdeckungsverfolgungseinheit 275 gesetzt). Die Vereinigungseinheit 255 kann die verarbeiteten Daten lesen, die bereits für die Kachel gespeichert sind, um eine Vereinigung der Kachel erneut mit den neuen verarbeiteten Daten zu beginnen. Alternativ kann die Vereinigungseinheit 255 die neuen verarbeiteten Daten mit den verarbeiteten Daten vergleichen, die in dem Vereinigungspuffer 258 gespeichert sind, und wenn die neuen verarbeiteten Daten gleich sind zu den gespeicherten verarbeiteten Daten, kann die Vereinigungseinheit 255 die neuen verarbeiteten Daten verwerfen (oder die gespeicherten verarbeiteten Daten mit den neuen verarbeiteten Daten überschreiben) und eine Leerung der Kachel vermeiden. Wenn die neuen verarbeiteten Daten nicht mit den gespeicherten verarbeiteten Daten übereinstimmen, leert die Vereinigungseinheit 255 die Kachel, und beginnt mit der Vereinigung der Kachel erneut mit den neuen verarbeiteten Daten. Alternativ kann die Vereinigungseinheit 255 einen oder mehrere Einträge in dem Vereinigungspuffer 258 leeren, die von den gespeicherten verarbeiteten Daten besetzt sind, und kann die neuen verarbeiteten Daten in dem einen oder den mehreren Einträgen speichern.
  • Wenn eine nicht vollständige Kachel (d. h., eine Kachel, die nicht „voll” ist) geleert wird, gibt die Lade/Speichereinheit 290 die verarbeiteten Daten für die Pixel mit Mehrfachabtastung, die aus der Verarbeitungseinheit 250 empfangen worden sind, aus. Die Kachelabdeckungsinformation, die in der Verfolgungseinheit 275 bewahrt wird, kann von der Vereinigungseinheit 255 verwendet werden, um zu ermitteln, welche Pixel mit Mehrfachabtastung geleert werden. Wenn die verarbeiteten Daten in dem Cache-Speicher 280 gespeichert sind (,d. h. der Vereinigungspuffer 258 ist weggelassen), können die verarbeiteten Pixeldaten geleert werden, wenn ein Cache-Fehltreffer auftritt. In einer Ausführungsform ist die Verarbeitungseinheit 250 ausgebildet, die Daten für Abtastungen, die in einer einzelnen Kachel liegen, parallel zu verarbeiten, so dass die Lade/Speichereinheit 290 in der Lage ist, die Abtastungen in Kacheln zu vereinigen, die in den L2-Cache-Speicher 265 als „volle” Kacheln geleert werden.
  • Die verarbeiteten Daten für die Pixel mit Mehrfachabtastung, die geleert werden, können jeweils den gleichen Kodierzustand haben, oder ein Kodierzustand kann in dem Vereinigungspuffer 258 für jedes Pixel mit Mehrfachabtastung gespeichert sein. Die verarbeiteten Daten für die unvollständige Kachel können mit einem einzelnen Kodierzustand oder mit einem Kodierzustand für jedes Pixel mit Mehrfachabtastung (Kodierzustand pro Pixel) oder für den Bereich des Pixel mit Mehrfachabtastung ausgegeben werden. Wenn alle Pixel mit Mehrfachabtastung den gleichen Kodierzustand besitzen, können die verarbeiteten Daten mit einer Kachelmaske ausgegeben werden, die angibt, welche der Pixel mit Mehrfachabtastung bei dem Leerungsprozess enthalten sind. Wenn der Kodierzustand für jedes Pixel mit Mehrfachabtastung beibehalten wird, dann kann die Vereinigungseinheit 255 ausgebildet sein, den Kodierzustand pro Pixel für die Kachel zu untersuchen. Wenn jeder Kodierzustand pro Pixel der gleiche ist, dann können die verarbeiteten Daten mit einer Kachelmaske ausgegeben werden, die angibt, welche der Pixel mit Mehrfachabtastung in dem Leerungsprozess enthalten sind.
  • Wenn der Kodierzustand pro Pixel zumindest für ein Pixel mit Mehrfachabtastung unterschiedlich ist, können die verarbeiteten Daten, die mit einem 1SPP-Kodierzustand verknüpft sind, für die Abtastung in dem entsprechenden Pixel mit Mehrfachabtastung dupliziert werden. Alle verarbeiteten Daten können mit einer Kachelmaske und einem Kodierzustand von nicht 1SPP ausgegeben werden. Alternativ können die verarbeiteten Daten in zwei Teil-Leerungsvorgängen ausgegeben werden. Ein erster Teil-Leerungsvorgang kann die verarbeiteten Daten beinhalten, die mit dem Kodierzustand mit 1SPP verknüpft sind, und eine entsprechende erste Kachelmaske enthalten. Ein zweiter Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem entsprechenden Kodierzustand von nicht 1SPP verknüpft sind, und eine entsprechende zweite Kachelmaske enthalten. Schließlich können die verarbeiteten Daten mit einem Kodierzustand pro Pixel und einer Kachelmaske ausgegeben werden.
  • 2B zeigt eine weitere Ansicht der Lade/Speichereinheit 290, die in 2B gezeigt ist, gemäß einer Ausführungsform. Wie in 2D gezeigt ist, umfasst in einer Ausführungsform die Lade/Speichereinheit 290 einen Cache-Speicher 281, eine Ladeanforderungseinheit 286, eine Vereinigungseinheit 256 und eine Abdeckungsverfolgungseinheit 276. Die Ladeanforderungseinheit 286 und die Abdeckungsverfolgungseinheit 276 führen im Wesentlichen die gleichen Funktionen aus, die zuvor für die Ladeanforderungseinheit 285 und die Abdeckungsverfolgungseinheit 275 beschrieben sind. Der Cache-Speicher 281 führt im Wesentlichen die gleichen Funktionen aus, wie sie zuvor für den Cache-Speicher 280 beschrieben sind. Jedoch ist der Cache-Speicher 281 ausgebildet, die verarbeiteten Pixeldaten mit Mehrfachabtastung aus der Verarbeitungseinheit 250 zu empfangen. In einer Ausführungsform werden, wenn die verarbeiteten Pixeldaten mit Mehrfachabtastung, die aus der Verarbeitungseinheit 250 empfangen werden, einen Kodierzustand von 1SPP haben, die verarbeiteten Pixeldaten mit Mehrfachabtastung für alle Abtastungen in dem Pixel mit Mehrfachabtastung oder einem Teil des Pixel mit Mehrfachabtastung dupliziert und in dem Cache-Speicher 281 gespeichert. Bei einer Gestaltung für einen derartigen Betrieb muss der Kodierzustand nicht in dem Cache-Speicher 281 gespeichert werden.
  • In einer Ausführungsform ist die Vereinigungseinheit 256 ausgebildet, die Schreiboperationen in den Cache-Speicher 281 kurz zu prüfen, die aus der Verarbeitungseinheit 250 empfangen werden, und die Kachelabdeckungsmaske, die von der Abdeckungsverfolgungseinheit 276 beibehalten wird, zu aktualisieren. Wenn eine Kachel „voll” ist, liest die Vereinigungseinheit 256 die Kacheldaten aus dem Cache-Speicher 281. Einträge in dem Cache-Speicher 281, die die Daten für die Kachel speichern, können als leer markiert werden und die Bits in der Abdeckungsverfolgungseinheit 176, die der Kachel entsprechen, können zurückgesetzt werden, wenn die Kachel geleert wird.
  • Wenn in einer Ausführungsform der Kodierzustand für die verarbeiteten Daten, die geleert werden, nicht 1SPP ist, dann ist die Vereinigungseinheit 256 ausgebildet, die verarbeiteten Daten zu analysieren. Die Vereinigungseinheit 256 ist ausgebildet, die Werte der verarbeiteten Daten für unterschiedliche Abtastungen eines Pixel mit Mehrfachabtastung oder eines Teils jedes Pixel mit Mehrfachabtastung zu vergleichen und den Kodierzustand jedes Pixel oder für die Kachel aus Pixel zu bestimmen, um den Kodierzustand dem L2-Cache-Speicher 265 zuzuleiten. Der Vereinigungspuffer 250 kann ausgebildet sein, die verarbeiteten Daten für unterschiedliche Abtastungen zu speichern, während die Analyse ausgeführt wird. Der Vereinigungspuffer 259 kann ferner ausgebildet sein, den Kodierzustand für jedes Pixel mit Mehrfachabtastung oder für den Bereich jedes Pixel mit Mehrfachabtastung zu speichern, die verarbeiteten Daten analysiert werden.
  • Wenn der Vereinigungspuffer 259 ausgebildet ist, eine Teilkachel auszugeben, können die verarbeiteten Daten für die Teilkachel geleert werden, wenn die Abdeckungsverfolgungseinheit 276 angibt, dass Speicheroperationen für alle Pixel mit Mehrfachabtastung in der Teilkachel empfangen worden sind. Einträge in dem Cache-Speicher 281, die die Daten für die Teilkachel speichern, können als leer markiert werden und die Bits in der Abdeckungsverfolgungseinheit 276, die der Teilkachel entsprechen, können zurückgesetzt werden, wenn die Teilkachel geleert wird.
  • Unter gewissen Bedingungen kann eine Kachel von der Vereinigungseinheit 255 geleert werden, bevor die verarbeiteten Daten für alle Pixel mit Mehrfachabtastung in der Kachel aus der Verarbeitungseinheit 250 empfangen werden, oder wenn die Kachel nicht „voll” ist. Eine erste Bedingung besteht darin, dass die verarbeiteten Daten für eine „neue” Kachel empfangen werden und Speicherplatz in dem Cache-Speicher 281 zum Hinzufügen einer neuen Kachel nicht verfügbar ist. Die zweite Bedingung besteht darin, dass die verarbeiteten Daten für ein Pixel mit Mehrfachabtastung sind, die bereits für die Kachel, die gerade vereinigt wird, empfangen worden sind (das heißt, das Bit, das zu dem Pixel mit Mehrfachabtastung gehört, ist in der Abdeckungsverfolgungseinheit 275 gesetzt). Die Vereinigungseinheit 256 kann die verarbeiteten Daten, die bereits für die Kachel gespeichert sind, leeren, um die Vereinigung der Kachel erneut mit den neuen verarbeiteten Daten zu beginnen. Alternativ kann die Vereinigungseinheit 256 einen oder mehrere Einträge in dem Cache-Speicher 281 leeren, die von den gespeicherten verarbeiteten Daten besetzt sind, und sie kann die neuen verarbeiteten Daten in dem einen oder den mehreren Einträgen speichern.
  • Wenn eine unvollständige Kachel (das heißt, eine Kachel, die nicht „voll” ist) geleert wird, gibt die Lade/Speichereinheit 290 die verarbeiteten Daten für die Pixel mit Mehrfachabtastung, die aus der Verarbeitungseinheit 250 empfangen worden sind, aus. Die Kachelabdeckungsinformation, die in der Verfolgungseinheit 276 bewahrt wird, kann von der Vereinigungseinheit 256 verwendet werden, um zu ermitteln, welche Pixel mit Mehrfachabtastung geleert werden. Die verarbeiteten Pixeldaten können geleert werden, wenn ein Cache-Fehltreffer für den Cache-Speicher 281 auftritt. In einer Ausführungsform ist die Verarbeitungseinheit 250 ausgebildet, die Daten für Abtastungen, die in einer einzelnen Kachel liegen, parallel zu verarbeiten, um die Lade/Speichereinheit 290 in die Lage zu versetzen, die Abtastungen in die Kacheln zu vereinigen, die in den L2-Cache-Speicher 265 als „volle” Kacheln geleert werden.
  • Die verarbeiteten Daten für die Pixel mit Mehrfachabtastung, die geleert werden, können alle den gleichen Kodierzustand haben oder ein Kodierzustand kann in dem Vereinigungspuffer 259 oder Cache-Speicher 281 für jedes Pixel mit Mehrfachabtastung gespeichert sein. Die verarbeiteten Daten für die unvollständige Kachel können mit einem einzelnen Kodierzustand oder mit einem Kodierzustand für jedes Pixel mit Mehrfachabtastung (Kodierzustand pro Pixel) oder für den Bereich eines Pixel mit Mehrfachabtastung ausgegeben werden. Wenn alle Pixel mit Mehrfachabtastung den gleichen Kodierzustand besitzen, können die verarbeiteten Daten mit einer Kachelmaske ausgegeben werden, die anzeigt, welche der Pixel mit Mehrfachabtastung in dem Leerungsvorgang eingeschlossen sind. Wenn ein Kodierzustand für jedes Pixel mit Mehrfachabtastung unterhalten wird, kann die Vereinigungseinheit 246 ausgebildet sein, den Kodierzustand pro Pixel für die Kachel zu untersuchen. Wenn jeder Kodierzustand pro Pixel der gleiche ist, können die verarbeiteten Daten mit einer Kachelmaske ausgegeben werden, die anzeigt, welche der Pixel mit Mehrfachabtastung in dem Leerungsvorgang enthalten sind.
  • Wenn der Kodierzustand pro Pixel zumindest für ein Pixel mit Mehrfachabtastung anders ist, können die verarbeiteten Daten, die einen 1SPP-Kodierzustand entsprechen, für die Abtastung in den jeweiligen Pixel mit Mehrfachabtastung dupliziert werden und alle verarbeiteten Daten können mit einer Kachelmaske und einem Kodierzustand von nicht 1SPP ausgegeben werden. Alternativ können die verarbeiteten Daten in zwei Teil-Leerungsvorgängen ausgegeben werden. Ein erster Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Kodierzustand von 1SPP verknüpft sind, und eine entsprechende erste Kachelmaske enthalten. Ein zweiter Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Kodierzustand von nicht 1SPP verknüpft sind, und eine entsprechende zweite Kachelmaske enthalten. Schließlich können die verarbeiteten Daten mit einem Kodierzustand pro Pixel und einer Kachelmaske ausgegeben werden.
  • 3 zeigt ein weiteres Flussdiagramm eines Verfahrens 300 zur Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform. Die im Verfahren 300 gezeigten Schritte können von einem Schattierungsprogramm ausgeführt werden, das von einem Grafikprozessor ausgeführt wird. Im Schritt 301 empfängt die Lade/Speichereinheit 290 Pixeldaten mit Mehrfachabtastung. Im Schritt 305 ermittelt die Lade/Speichereinheit 290, ob der Kodierzustand, der mit dem Pixeldaten mit Mehrfachabtastung verknüpft ist, 1SPP ist, und wenn dies der Fall ist, stellt im Schritt 310 die Lade/Speichereinheit 290 die Daten für eine einzelne Abtastung jedes Pixel mit Mehrfachabtastung oder eines Bereichs eines Pixel mit Mehrfachabtastung und den Kodierzustand von 1SPP für die Verarbeitungseinheit 250 bereit.
  • In einer Ausführungsform empfängt die Lade/Speichereinheit 290 den Kodierzustand für die Pixel mit Mehrfachabtastung zusammen mit den Pixeldaten mit Mehrfachabtastung. In einer weiteren Ausführungsform, wie detaillierter in Verbindung mit 4B beschrieben ist, ist die Lade/Speichereinheit 290 ausgebildet, eine Analyse der Pixeldaten mit Mehrfachabtastung auszuführen, um zu ermitteln, ob die Pixeldaten mit Mehrfachabtastung einen 1SPP-Format kodiert sein können. Im Schritt 305 wird der Kodierzustand auf 1SPP gesetzt, wenn die Lade/Speichereinheit 220 ermittelt, dass die Pixeldaten mit Mehrfachabtastung in ein 1SPP-Format kodiert werden können, indem die Pixeldaten mit Mehrfachabtastung analysiert werden. Im Schritt 330 wird die eine Abtastung des Pixel von der Verarbeitungseinheit 250 verarbeitet, um verarbeitete Daten für alle Abtastungen des Pixel zu erzeugen.
  • Wenn im Schritt 305 die Lade/Speichereinheit 290 ermittelt, dass der mit dem Pixeldaten mit Mehrfachabtastung verknüpfte Kodierzustand nicht 1SPP ist, dann stellt im Schritt 315 die Lade/Speichereinheit 290 Daten für alle Abtastungen jedes Pixel mit Mehrfachabtastung oder jedes Bereichs eines Pixel mit Mehrfachabtastung und den Kodierzustand für die Verarbeitungseinheit 250 bereit. Im Schritt 315 wird der Kodierzustand auf nicht 1SPP gesetzt und wird an die Verarbeitungseinheit 250 zusammen mit den Daten für alle Abtastungen jedes Pixel mit Mehrfachabtastung oder jedes Bereichs eines Pixel mit Mehrfachabtastung ausgegeben. Im Schritt 335 verarbeitet die Verarbeitungseinheit 250 die Daten für alle Abtastungen für jedes Pixel mit Mehrfachabtastung oder jeden Bereich eines Pixel mit Mehrfachabtastung.
  • Im Schritt 340 setzt die Verarbeitungseinheit 250 den Kodierzustand auf 1SPP oder nicht-1SPP auf der Grundlage der Darstellung der verarbeiteten Daten. Im Schritt 345 gibt die Verarbeitungseinheit 250 die verarbeiteten Daten für jedes Pixel mit Mehrfachabtastung oder für jeden Bereich eines Pixels mit Mehrfachabtastung an die Lade/Speichereinheit 290 zusammen mit dem Kodierzustand aus. Die verarbeiteten Daten können Daten für die einzelne Abtastung oder für alle Abtastungen eines Pixel mit Mehrfachabtastung oder für alle Abtastungen eines Bereichs eines Pixel mit Mehrfachabtastung umfassen.
  • 4A zeigt ein Flussdiagramm eines Verfahrens 400 für die Vereinigung der Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform. Obwohl die in 4A gezeigten Schritte so beschrieben sind, dass sie von der Lade/Speichereinheit 290 ausgeführt werden, können eine oder mehrere Einheiten aus der Lade/Speichereinheit 290, der L2-Cache-Speicher 265 oder der Verarbeitungseinheit 250 die Schritte, die in 4A gezeigt sind, ausführen. Die Schritte sind im Zusammenhang mit der Lade/Speichereinheit 290 beschrieben, die in 2C gezeigt ist. Die Schritte können auch von der Lade/Speichereinheit 290 ausgeführt werden, die in 2D gezeigt ist, wobei der Cache-Speicher 281 die verarbeiteten Daten anstelle des Vereinigungspuffers 258 gespeichert.
  • Im Schritt 405 empfängt die Lade/Speichereinheit 290 die verarbeiteten Daten für ein Pixel mit Mehrfachabtastung aus der Verarbeitungseinheit 250. Im Schritt 410 prüft die Lade/Speichereinheit 290 den Kodierzustand, der von der Verarbeitungseinheit 250 mit den verarbeiteten Daten bereitgestellt wird, und ermittelt, ob der Kodierzustand 1SPP ist. Wenn der Kodierzustand nicht 1SPP ist, gibt die Lade/Speichereinheit 290 die verarbeiteten Daten an den L2-Cache-Speicher 265 im Schritt 412 aus. In einer weiteren Ausführungsform speichert die Lade/Speichereinheit 290 die verarbeiteten Daten für alle Abtastungen in dem Vereinigungspuffer 258, wenn der Kodierzustand nicht 1SPP ist. Wenn eine gesamte Kachel von dem Vereinigungspuffer 258 geleert wird, dann analysiert die Lade/Speichereinheit 290 die verarbeiteten Daten, um zu ermitteln, ob die verarbeiteten Daten für die gesamte Kachel unter Anwendung einer einzelnen Abtastung für jedes Pixel mit Mehrfachabtastung repräsentiert werden kann. Die in Verbindung mit 4B beschriebene Technik kann angewendet werden, um die Analyse auszuführen.
  • Wenn im Schritt 410 der Kodierzustand 1SPP ist, dann ermittelt im Schritt 415 die Lade/Speichereinheit 290, ob eine neue Kachel benötigt wird, um die verarbeiteten Daten zu speichern, da das Pixel mit Mehrfachabtastung nicht innerhalb einer aktuellen Kachel liegt, die in dem Vereinigungspuffer 258 gespeichert ist, und wenn dies nicht der Fall ist, geht die Lade/Speichereinheit 290 zum Schritt 420 weiter. Wenn eine neue Kachel benötigt wird, werden im Schritt 418 die verarbeiteten Daten für die aktuelle Kachel in den L2-Cache-Speicher 265 übertragen und die Kachelabdeckung wird in der Abdeckungsverfolgungseinheit 275 zurückgesetzt, bevor die Lade/Speichereinheit 290 zum Schritt 420 weitergeht. Wenn im Schritt 415 eine neue Kachel nicht benötigt wird, um die verarbeiteten Daten zu speichern, dann speichert im Schritt 420 die Lade/Speichereinheit 290 die verarbeiteten Daten für das Pixel mit Mehrfachabtastung in dem Vereinigungspuffer 258. Im Schritt 422 aktualisiert die Lade/Speichereinheit 290 die Kachelabdeckung, die in der Abdeckungsverfolgungseinheit 275 gespeichert ist, und die Lade/Speichereinheit 290 geht zum Schritt 430 weiter.
  • Im Schritt 430 ermittelt die Lade/Speichereinheit 290, ob eine in dem Vereinigungspuffer 258 gespeicherte Kachel vollständig abgedeckt ist, und wenn dies der Fall ist, werden die verarbeiteten Daten für die vollständig abgedeckte Kachel in den L2-Cache-Speicher 265 geleert und die Kachelabdeckung wird in der Abdeckungsverfolgungseinheit 275 zurückgesetzt, und die Lade/Speichereinheit 290 beendet die Handhabung der Verarbeitung der Pixeldaten mit Mehrfachabtastung, die im Schritt 405 empfangen wurden. Die in Verbindung mit 4A beschriebenen Schritte können auch für eine Teilkachel ausgeführt werden, wenn der Vereinigungspuffer 258 ausgebildet ist, anstelle einer gesamten Kachel eine Teilkachel zu speichern.
  • 4B zeigt ein Flussdiagramm eines Verfahrens zur Ausführung des Schritts 305 des Verfahrens 300, das in 3 gezeigt ist, gemäß einer Ausführungsform. Obwohl die in 4B gezeigten Schritte so beschrieben sind, dass sie von der Lade/Speichereinheit 290 ausgeführt werden, können die Lade/Speichereinheit 290 und/oder der L2-Cache-Speicher 265 und/oder die Verarbeitungseinheit 250 ausgebildet sein, die in 4B gezeigten Schritte auszuführen.
  • Im Schritt 440 ermittelt die Lade/Speichereinheit 290, ob ein Kodierzustand 1SPP mit den Pixeldaten mit Mehrfachabtastung empfangen wurde, und wenn dies der Fall ist, geht die Lade/Speichereinheit 290 zum Schritt 310 weiter. Ansonsten analysiert im Schritt 445 die Lade/Speichereinheit 290 die Pixeldaten mit Mehrfachabtastung, um zu ermitteln, ob die Pixeldaten mit Mehrfachabtastung im 1SPP-Format kodiert werden können. In einer Ausführungsform vergleicht die Lade/Speichereinheit 290 Werte für alle Abtastungen für jedes Pixel mit Mehrfachabtastung oder für einen Bereich eines Pixel mit Mehrfachabtastung, um zu ermitteln, ob eine Kachel an Pixeldaten, die von dem L2-Cache-Speicher 265 empfangen wurden, jeweils durch eine einzelne Abtastung repräsentiert werden können, bevor die Pixeldaten in dem Cache-Speicher 280 gespeichert werden. In einer weiteren Ausführungsform vergleicht die Lade/Speichereinheit 290 Werte für alle Abtastungen jedes Pixel mit Mehrfachabtastung, die aus dem Cache-Speicher 280 ausgelesen werden, für die Ausgabe an die Verarbeitungseinheit 250, um zu ermitteln, ob die Daten jeweils durch eine einzelne Abtastung repräsentiert werden können, bevor die Pixeldaten an die Verarbeitungseinheit 250 ausgegeben werden. Wenn im Schritt 450 die Lade/Speichereinheit 290 ermittelt, dass die Pixeldaten mit Mehrfachabtastung in einen 1SPP-Format kodiert werden können, dann geht die Lade/Speichereinheit 290 zum Schritt 310 weiter. Ansonsten geht die Lade/Speichereinheit 290 zum Schritt 315 weiter.
  • Wenn die Daten für die Abtastung eines Pixels gleich sind, dann kann der 1SPP-Kodierzustand verwendet werden, um die Speichergröße zur Speicherung der Pixeldaten mit Mehrfachabtastung zu reduzieren und auch um die zum Lesen, Schreiben und Senden der Pixeldaten mit Mehrfachabtastung verbrauchte Bandbreite zu reduzieren. Ferner kann in einigen Fällen eine Verarbeitungseinheit, etwa die Verarbeitungseinheit 250 ausgebildet sein, die einzelne Abtastung zu verarbeiten, um die Pixeldaten mit Mehrfachabtastung für die einzelne Abtastung zu erzeugen, die die verarbeiteten Pixeldaten mit Mehrfachabtastung für zwei oder mehr Abtastungen oder sogar alle Abtastungen eines Pixel mit Mehrfachabtastung repräsentieren.
  • VERARBEITUNG EINER OBERFLÄCHE MIT MEHRFACHABTASTUNG UNTER VERWENDUNG EINER TEILMENGE VON ABTASTUNGEN
  • Zusätzlich zu einem Kodierzustand von 1SPP und nicht 1SPP kann ein Kodierzustand bereitgestellt oder ermittelt werden, der erlaubt, dass Abtastungsteilmengen für ein Pixel mit Mehrfachabtastung die gleichen Datenwerte besitzen, aber nicht erfordern, dass alle Abtastungen in einem Pixel mit Mehrfachabtastung gleiche Datenwerte haben. Ein derartiger Kodierzustand wird als ein Teilmengen-Kodierzustand bezeichnet. Anders ausgedrückt, wenn der Kodierzustand eine Teilmenge ist, können Daten für eine einzelne Abtastung gespeichert werden, die Pixeldaten mit Mehrfachabtastung für alle Abtastungen in einer Teilmenge eines Pixel mit Mehrfachabtastung repräsentieren, das die einzelne Abtastung enthält. Die Pixeldaten mit Mehrfachabtastung werden analysiert, um Teilmengen an Abtastungen eines Pixel mit Mehrfachabtastung zu ermitteln, die gleiche Daten besitzen, wenn der Teilmengen-Kodierzustand verwendet werden kann.
  • Jede Teilmenge enthält mindestens eine Abtastung und der Kodierzustand einer Teilmenge gibt an, welche Abtastungen in einer Teilmenge für ein Pixel mit Mehrfachabtastung enthalten sind. Beispielsweise kann der Teilmengen-Kodierzustand eine Abtastmaske pro Pixel enthalten, die die Abtastungen des Pixel mit Mehrfachabtastung angibt, die in der Teilmenge enthalten sind. Typischerweise ist der Teilmengen-Kodierzustand relevant für einzelne Pixel mit Mehrfachabtastung. Der Kodierzustand einer Teilmenge kann jedoch auch für die gesamte Kachel oder eine Teilkachel aus Pixeldaten mit Mehrfachabtastung verwendet werden.
  • 5A zeigt eine weitere Ansicht der Lade/Speichereinheit 290, die in 26 gezeigt ist, gemäß einer Ausführungsform. Wie in 5A gezeigt ist, umfasst in einer Ausführungsform die Lade/Speichereinheit 290 einen Cache-Speicher 580, eine Ladeanforderungseinheit 585, eine Vereinigungseinheit 555 und eine Abdeckungsverfolgungseinheit 575. Der Cache-Speicher 580 führt im Wesentlichen die gleichen Funktionen aus, wie sie zuvor für den Cache-Speicher 280 beschrieben sind, mit der Ausnahme, dass ein Kodierzustand, der in dem Cache-Speicher gespeichert ist, auch Abtastmasken pro Pixel für den Teilmengen-Kodierzustand enthalten kann.
  • Die Ladeanforderungseinheit 585 führt zumindest die Funktionen der zuvor beschriebenen Ladeanforderungseinheit 185 aus. Die Ladeanforderungseinheit 585 umfasst ferner eine Analyseeinheit 500, die ausgebildet sein kann, die Pixeldaten mit Mehrfachabtastung zu analysieren, um zu ermitteln, ob die Pixeldaten mit Mehrfachabtastung in einem 1SPP-Format kodiert werden können, wie dies zuvor beschrieben ist. Ferner kann die Analyseeinheit 500 auch ausgebildet sein, die Pixeldaten mit Mehrfachabtastung zu analysieren, um zu ermitteln, ob die Pixeldaten mit Mehrfachabtastung in einem Kodierzustand einer Teilmenge kodiert werden können. Insbesondere kann die Analyseeinheit 500 eine Abtastmaske pro Pixel für jede Abtastungsteilmenge erzeugen, in der alle Abtastungen in einer Teilmenge durch eine einzelne Abtastung der Teilmenge repräsentiert werden können, d. h. die Abtastungen in der Teilmenge besitzen die gleichen Daten. Die Analyseeinheit 500 kann den Kodierzustand bestimmen, die an die Verarbeitungseinheit 250 ausgegeben wird. In einer Ausführungsform wird der Kodierzustand mit den Daten aus dem L2-Cache-Speicher 265 empfangen, und die Ladeanforderungseinheit 585 stellt den Kodierzustand für die Verarbeitungseinheit 250 zusammen mit den Daten bereit.
  • Die Vereinigungseinheit 555 führt zumindest die Funktionen der zuvor beschriebenen Vereinigungseinheit 255 aus. Die Vereinigungseinheit 555 empfängt verarbeitete Daten für Pixel mit Mehrfachabtastung und einen Kodierzustand, der dem Pixel mit Mehrfachabtastung entspricht, aus der Verarbeitungseinheit 250. Die Vereinigungseinheit 555 kann einen Vereinigungspuffer 558 enthalten, in welchem die verarbeiteten Daten gespeichert werden. Der Vereinigungspuffer 558 kann ferner ausgebildet sein, die Abtastmasken pro Pixel für die Abtastungsteilmengen zu speichern, wenn der Kodierzustand einer Teilmenge entspricht. Alternativ können die Abtastmasken pro Pixel in der Abdeckungsverfolgungseinheit 575 gespeichert werden, und die Abdeckungsverfolgungseinheit 565 kann ausgebildet sein, die Pixelabdeckung mit Mehrfachabtastung sowie eine Kachel-(oder Teilkachel-)Abdeckung zu verfolgen. Die Abdeckungsmasken mit Mehrfachabtastung können unter Anwendung einer Bit-weise ausgeführten ODER-Operation vereinigt werden. Wenn alle Bits in der gespeicherten Abdeckungsmaske mit Mehrfachabtastung für ein Pixel mit Mehrfachabtastung gesetzt sind, ist das Pixel mit Mehrfachabtastung vollständig abgedeckt. Wenn jedoch die Vereinigungseinheit 555 ausgebildet ist, verarbeitete Pixeldaten mit Mehrfachabtastung mit einem Kodierzustand, der einer Teilmenge entspricht, auszugeben, sollten die separaten Abdeckungsmasken pro Pixel für jede Teilmenge separat gespeichert werden. In einer Ausführungsform wird eine Abtastmaske pro Pixel in dem Vereinigungspuffer 558 mit den verarbeiteten Pixeldaten mit Mehrfachabtastung für jede Teilmenge gespeichert.
  • Die Vereinigungseinheit 555 kann ferner die zuvor beschriebene Analyseeinheit 500 beinhalten, die ausgebildet sein kann, die Pixeldaten mit Mehrfachabtastung zu analysieren, um zu ermitteln, ob die Pixeldaten mit Mehrfachabtastung mit einem Kodierzustand von 1SPP, nicht 1SPP oder Teilmenge kodiert werden können. Die Analyseeinheit 500 kann den Kodierzustand ermitteln, der an den L2-Cache-Speicher 265 ausgegeben wird. In einer Ausführungsform wird der Kodierzustand mit den Daten aus der Verarbeitungseinheit 250 empfangen und die Vereinigungseinheit 555 stellt den Kodierzustand zusammen mit den verarbeiteten Daten für den L2-Cache-Speicher 265 bereit.
  • Wenn verarbeitete Daten mit Mehrfachabtastung für ein Pixel mit Mehrfachabtastung empfangen werden, die bereits für eine gerade zusammengefügte Kachel empfangen worden sind (d. h., mindestens 1 Bit, das zu dem Pixel mit Mehrfachabtastung gehört, ist in der Abtastabdeckungsmaske pro Pixel, die in der Abdeckungsverfolgungseinheit 575 gespeichert ist, gesetzt), dann können die Daten mit Mehrfachabtastung vereinigt werden, wenn der Kodierzustand für das Pixel mit Mehrfachabtastung der Teilmenge entspricht, wenn die neuen verarbeiteten Daten gleich den gespeicherten verarbeiteten Daten sind. Ansonsten werden die verarbeiteten Daten separat zu den gespeicherten verarbeiteten Daten gespeichert und die Abtastabdeckungsmaske, die in der Abdeckungsverfolgungseinheit 575 gespeichert ist, wird aktualisiert, um die neue Abtastabdeckungsmaske pro Pixel und die gespeicherte Abtastabdeckungsmaske pro Pixel zu vereinigen.
  • Wenn der Kodierzustand pro Pixel zumindest in einem Pixel mit Mehrfachabtastung in einer Kachel unterschiedlich ist, dann können die verarbeiteten Daten, die mit einem 1SPP-Kodierzustand verknüpft sind, für jede Abtastung in dem jeweiligen Pixel mit Mehrfachabtastung dupliziert werden und die verarbeiteten Daten, die mit einem Teilmengen-Kodierzustand verknüpft sind, können für die Abtastung in der entsprechenden Teilmenge dupliziert werden. Danach können alle verarbeiteten Daten mit einer Kachelmaske und einem Kodierzustand von nicht 1SPP ausgegeben werden. Alternativ können die verarbeiteten Daten in zwei oder drei Teil-Leerungsvorgängen ausgegeben werden. Ein erster Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Kodierzustand 1SPP verknüpft sind, und eine entsprechende erste Kachelmaske enthalten. Ein zweiter Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Kodierzustand nicht 1SPP verknüpft sind, und eine entsprechende zweite Kachelmaske enthalten. Ein dritter Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Teilmengen-Kodierzustand verknüpft sind, (einschließlich der Abtastmasken pro Pixel) verknüpft sind, und eine entsprechende dritte Kachelmaske enthalten. Schließlich können die verarbeiteten Daten mit einem Kodierzustand pro Pixel und einer Kachelmaske ausgegeben werden, wobei der Kodierzustand jedes Pixel den Teilmengen-Kodierzustand enthalten kann, der zwei oder mehr Abtastmasken pro Pixel umfasst.
  • In einer Ausführungsform speichert der Vereinigungspuffer 558 die verarbeiteten Pixeldaten mit Mehrfachabtastung als eine Liste an Pixel- (x, y, verarbeitete Daten, Abtastmaske pro Pixel) werten. Die x, y-Koordinaten können auf eine Kachel bezogen sein. Die Werte werden als ein Array von Tupel gespeichert, wobei vorher eintreffende verarbeitete Daten in dem nächsten verfügbaren Index anstatt relativ zu der x, y-Position des Pixel mit Mehrfachabtastung gespeichert werden. Dies kann es erlauben, das gleiche verarbeitete Datenwerte, die unterschiedlichen Abtastungen eines Pixel mit Mehrfachabtastung entsprechen, in dem gleichen Eintrag des Vereinigungspuffers 558 „vereinigt” werden. In einer Ausführungsform können die Datenwerte vereinigt werden, wenn zwei Werte innerhalb eines Schwellwerts liegen. In einer Ausführungsform kann ein anderer Schwellwert für jedes Attribut angegeben werden. Daher können Farbwerte unter Verwendung eines anderen Schwellwerts vereinigt werden, als der Schwellwert, der für die Vereinigung von z-Werten verwendet wird. In einer Ausführungsform kann der Vereinigungspuffer 558 als ein inhaltsadressierbarer Speicher (CAM) realisiert werden. Wenn der Vereinigungspuffer 558 geleert wird, kann die Liste an Tupeln für die Sendung an den L2-Cache-Speicher 265 ausgegeben werden, oder die in dem Vereinigungspuffer 558 gespeicherten verarbeiteten Daten können auf ein Format des Kodierzustands von nicht 1SPP erweitert werden.
  • 5B zeigt eine weitere Darstellung der Lade/Speichereinheit 290, die in 2B gezeigt ist, gemäß einer Ausführungsform. Wie in 5B gezeigt ist, umfasst in einer Ausführungsform die Lade/Speichereinheit 290 einen Cache-Speicher 581, eine Ladeanforderungseinheit 586, eine Vereinigungseinheit 556 und eine Abdeckungsverfolgungseinheit 576. Die Ladeanforderungseinheit 586 und die Abdeckungsverfolgungseinheit 576 führen im Wesentlichen die gleichen Funktionen aus, wie sie zuvor für die Ladeanforderungseinheit 585 und die Abdeckungsverfolgungseinheit 575 beschrieben sind. Der Cache-Speicher 581 führt im Wesentlichen die gleichen Funktionen aus wie der zuvor beschriebene Cache-Speicher 580. Jedoch ist der Cache-Speicher 581 ausgebildet, die verarbeiteten Pixeldaten mit Mehrfachabtastung aus der Verarbeitungseinheit 250 zu empfangen. Wenn in einer Ausführungsform die verarbeiteten Pixeldaten mit Mehrfachabtastung, die aus der Verarbeitungseinheit 250 empfangen werden, einen Kodierzustand von 1SPP besitzen, dann werden die verarbeiteten Pixeldaten mit Mehrfachabtastung für alle Abtastungen in dem Pixel mit Mehrfachabtastung oder in dem Bereich des Pixel mit Mehrfachabtastung dupliziert und in dem Cache-Speicher 581 gespeichert. Wenn in ähnlicher Weise die verarbeiteten Pixeldaten mit Mehrfachabtastung, die aus der Verarbeitungseinheit 250 empfangen werden, einen Teilmengen-Kodierzustand besitzen, werden die verarbeiteten Pixeldaten mit Mehrfachabtastung für alle Abtastungen in der Teilmenge der Pixel mit Mehrfachabtastung dupliziert und in dem Cache-Speicher 581 gespeichert. Wenn eine Struktur auf diese Weise für die Verarbeitung vorgesehen ist, muss der Kodierzustand nicht in dem Cache-Speicher 581 gespeichert werden.
  • In einer Ausführungsform ist die Vereinigungseinheit 546 ausgebildet, die Schreiboperationen in den Cache-Speicher 581 kurz zu prüfen, die aus der Verarbeitungseinheit 250 empfangen werden, und die Kachelabdeckungsmaske und die Abtastabdeckungsmasken pro Pixel, die von der Abdeckungsverfolgungseinheit 576 unterhalten werden, zu aktualisieren. Wenn eine Kachel „voll” ist, liest die Vereinigungseinheit 556 die Kacheldaten aus dem Cache-Speicher 581 aus. Einträge in dem Cache-Speicher 581, die die Daten für die Kachel enthalten, können als leer markiert werden und die Bits in der Abdeckungsverfolgungseinheit 576, die der Kachel entsprechen, können zurückgesetzt werden, wenn die Kachel geleert wird.
  • In einer Ausführungsform ist, wenn der Kodierzustand für die verarbeiteten Daten, die geleert werden, nicht 1SPP ist, die Analyseeinheit 500 in der Vereinigungseinheit 256 ausgebildet, die verarbeiteten Daten zu analysieren. Die Analyseeinheit 500 kann ausgebildet sein, die Werte der verarbeiteten Daten für unterschiedliche Abtastungen für jedes Pixel mit Mehrfachabtastung zu vergleichen und den Kodierzustand für jedes Pixel oder für eine Kachel aus Pixel zu ermitteln, um den Kodierzustand dem L2-Cache-Speicher 265 zuzuleiten. Der Vereinigungspuffer 559 kann ausgebildet sein, die verarbeiteten Daten für unterschiedliche Abtastungen zu speichern, während die Analyse ausgeführt wird. Der Vereinigungspuffer 559 kann ferner ausgebildet sein, den Kodierzustand für jedes Pixel mit Mehrfachabtastung oder jeden Bereich bzw. Teil eines Pixel mit Mehrfachabtastung zu speichern, wenn die verarbeiteten Daten analysiert werden.
  • Wenn der Vereinigungspuffer 559 ausgebildet ist, eine Teilkachel auszugeben, können die verarbeiteten Daten für die Teilkachel geleert werden, wenn die Abdeckungsverfolgungseinheit 576 angibt, dass Speicheroperationen für alle Abtastungen aller Pixel mit Mehrfachabtastung in der Teilkachel empfangen worden sind. Einträge in dem Cache-Speicher 581, die die Daten für die Teilkachel speichern, können als leer markiert werden, und die Bits in der Abdeckungsverfolgungseinheit 576, die der Teilkachel entsprechen, können zurückgesetzt werden, wenn die Teilkachel geleert wird.
  • Unter gewissen Bedingungen kann eine Kachel von der Vereinigungseinheit 556 geleert werden, bevor verarbeitete Daten für alle Pixel mit Mehrfachabtastung in der Kachel aus der Verarbeitungseinheit 250 empfangen werden, oder wenn die Kachel nicht „voll” ist. Eine erste Bedingung besteht darin, dass verarbeiteten Daten für eine „neue” Kachel empfangen werden und Speicherplatz in dem Cache-Speicher 581 zur Vereinigung einer neuen Kachel nicht verfügbar ist. Die zweite Bedingung besteht darin, dass die verarbeiteten Daten für eine Abtastung eines Pixel mit Mehrfachabtastung sind, die bereits für die Kachel, die gerade zusammengestellt wird, empfangen worden sind (d. h., das mit der Abtastung des Pixel mit Mehrfachabtastung verknüpfte Bit ist in der Abdeckungsverfolgungseinheit 576 gesetzt). Die Vereinigungseinheit 556 kann die verarbeiteten Daten lesen, die bereits für die Kachel gespeichert sind, um die Zusammenführung der Kachel erneut mit den neuen verarbeiteten Daten zu beginnen. Alternativ kann die Vereinigungseinheit 556 einen oder mehrere Einträge in dem Cache-Speicher 581 leeren, die von den gespeicherten verarbeiteten Daten besetzt sind, und kann die verarbeiteten Daten in dem einen oder den mehreren Einträgen speichern.
  • Wenn eine unvollständige Kachel (d. h., eine Kachel die nicht „voll” ist) geleert wird, kann die Lade/Speichereinheit 290 die verarbeiteten Daten für die Pixel mit Mehrfachabtastung ausgegeben, die von der Verarbeitungseinheit 250 empfangen worden sind. Die Kachelabdeckungsinformation, die in der Verfolgungseinheit 576 bewahrt wird, kann von der Vereinigungseinheit 546 verwendet werden, um zu ermitteln, welche Pixel mit Mehrfachabtastung geleert werden. Die verarbeiteten Pixeldaten können geleert werden, wenn ein Cache-Fehltreffer für den Cache-Speicher 581 auftritt. In einer Ausführungsform ist die Verarbeitungseinheit 250 ausgebildet, die Daten für Abtastungen, die innerhalb einer einzelnen Kachel liegen, parallel zu verarbeiten, so dass die Lade/Speichereinheit 290 in der Lage ist, die Abtastungen in Kacheln zu vereinigen, die in den L2-Cache-Speicher 265 als „volle” Kacheln geleert werden.
  • Die verarbeiteten Daten für Pixel mit Mehrfachabtastung, die geleert werden, wenn alle den gleichen Kodierzustand haben, oder ein Kodierzustand kann in dem Vereinigungspuffer 559 oder in dem Cachespeicher 581 für jedes Pixel mit Mehrfachabtastung oder für jede Abtastteilmenge eines Pixel mit Mehrfachabtastung gespeichert sein. Die verarbeiteten Daten für die unvollständige Kachel können mit einem einzelnen Kodierzustand oder mit einem Kodierzustand für jedes Pixel mit Mehrfachabtastung (Kodierzustand pro Pixel) oder eine Abtastteilmenge eines Pixel mit Mehrfachabtastung ausgegeben werden. Wenn alle Pixel mit Mehrfachabtastung den gleichen Kodierzustand haben, können die verarbeiteten Daten mit einer Kachelmaske ausgegeben werden, die anzeigt, welche der Pixel mit Mehrfachabtastung in dem Leerungsvorgang enthalten sind. Wenn der Kodierzustand für jedes Pixel mit Mehrfachabtastung beibehalten wird, kann die Vereinigungseinheit 556 ausgebildet sein, den Kodierzustand pro Pixel oder pro Teilmenge für die Kachel zu untersuchen. Wenn alle Kodierzustände pro Pixel gleich sind, können die verarbeiteten Daten mit einer Kachelmaske ausgegeben werden, die anzeigt, welche der Pixel mit Mehrfachabtastung in dem Leerungsvorgang enthalten sind. Abtastmasken pro Pixel werden von der Vereinigungseinheit 506 ausgegeben, wenn der Kodierzustand der Teilmengen-Kodierzustand ist.
  • Wenn sich der Kodierzustand pro Pixel zumindest für ein Pixel mit Mehrfachabtastung in einer Kachel unterscheidet, können die verarbeiteten Daten, die mit einem 1SPP-Kodierzustand verknüpft sind, für die Abtastung in dem entsprechenden Pixel mit Mehrfachabtastung dupliziert werden, und die verarbeiteten Daten, die mit einem Teilmengen-Kodierzustand verknüpft sind, können für die Abtastung in der entsprechenden Teilmenge dupliziert werden. Dann können alle verarbeiteten Daten mit einer Kachelmaske und einem Kodierzustand von nicht 1SPP ausgegeben werden. Wenn der Kodierzustand pro Pixel sich zumindest für ein Pixel mit Mehrfachabtastung in einer Kachel unterscheidet (d. h., Teilmenge und 1SPP), können die verarbeiteten Daten, die mit dem 1SPP-Kodierzustand verknüpft sind, als eine Abtastungsteilmenge kodiert werden. Alternativ können die verarbeiteten Daten in zwei oder drei Teil-Lebensvorgängen ausgegeben werden. Ein erster Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Kodierzustand von 1SPP verknüpft sind, und eine entsprechende erste Kachelmaske enthalten. Ein zweiter Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Kodierzustand nicht 1SPP verknüpft sind, und eine entsprechende zweite Kachelmaske enthalten. Ein dritter Teil-Leerungsvorgang kann die verarbeiteten Daten, die mit dem Teilmengen-Kodierzustand verknüpft sind (einschließlich von Abtastmasken pro Pixel), und eine entsprechende dritte Kachelmaske enthalten. Schließlich können die verarbeiteten Daten mit einem Kodierzustand pro Pixel und einer Kachelmaske ausgegeben werden, wobei der Kodierzustand für jedes Pixel den Teilmengen-Kodierzustand enthalten kann, der zwei oder mehr Abtastmasken pro Pixel umfasst.
  • 5C zeigt eine Ansicht 520 der diversen Verarbeitungseinheiten und Verbindungen, die während der Verarbeitung mit Mehrfachabtastung gemäß einer Ausführungsform verwendet werden. Ein L2-Cache-Speicher 265 führt die Funktionen des L2-Cache-Speicher 265 aus und kann ferner eine oder mehrere Analyseeinheiten 500 enthalten, um Pixeldaten mit Mehrfachabtastung zu analysieren und einen Kodierzustand, der mit den Pixeldaten mit Mehrfachabtastung verknüpft ist, zu ermitteln. Eine Verarbeitungseinheit 550 führt die Funktion der Verarbeitungseinheit 250 aus und kann ferner eine Analyseeinheit 500 enthalten, die ausgebildet ist, Pixeldaten mit Mehrfachabtastung, die aus der Lade/Speichereinheit 290 empfangen werden, zu analysieren und einen Kodierzustand zu ermitteln, der mit den Pixeldaten mit Mehrfachabtastung verknüpft ist, bevor die Pixeldaten mit Mehrfachabtastung verarbeitet werden.
  • 6A zeigt ein weiteres Flussdiagramm eines Verfahrens 600 zur Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform. Die im Verfahren 600 gezeigten Schritte können von einem Schattierungsprogramm ausgeführt werden, das von einem Grafikprozessor abgearbeitet wird. Im Schritt 601 empfängt die Lade/Speichereinheit 290 Pixeldaten mit Mehrfachabtastung. Im Schritt 603 ermittelt die Lade/Speichereinheit 290, ob der mit dem Pixeldaten mit Mehrfachabtastung verknüpfte Kodierzustand 1SPP ist, und wenn dies der Fall ist, stellt im Schritt 608 die Lade/Speichereinheit 290 Daten für eine Abtastung jedes Pixel mit Mehrfachabtastung oder Teils eines Pixel mit Mehrfachabtastung und den Kodierzustand von 1SPP für die Verarbeitungseinheit 250 bereit.
  • In einer Ausführungsform empfängt die Lade/Speichereinheit 290 den Kodierzustand für Pixel mit Mehrfachabtastung zusammen mit dem Pixeldaten mit Mehrfachabtastung. In einer weiteren Ausführungsform enthält die Lade/Speichereinheit 290 eine Analyseeinheit 500 und ist ausgebildet, eine Analyse der Pixeldaten mit Mehrfachabtastung auszuführen, um zu ermitteln, ob die Pixeldaten mit Mehrfachabtastung mit einem Kodierzustand von 1SPP oder mit einem Teilmengen-Kodierzustand verknüpft sind. Wenn im Schritt 603 die Lade/Speichereinheit 290 ermittelt, dass die Pixeldaten mit Mehrfachabtastung in einem 1SPP-Format kodiert werden können, indem die Pixeldaten mit Mehrfachabtastung analysiert wurden, wird der Kodierzustand auf 1SPP gesetzt. Im Schritt 614 wird die einzelne Abtastung des Pixel von der Verarbeitungseinheit 250 verarbeitet, um verarbeitete Daten für alle Abtastungen des Pixel oder Pixelbereichs zu erzeugen.
  • Wenn im Schritt 603 die Lade/Speichereinheit 290 ermittelt, dass der Kodierzustand, der mit den Pixeldaten mit Mehrfachabtastung verknüpft ist, nicht 1SPP ist, dann ermittelt im Schritt 606 die Lade/Speichereinheit 290, ob die Pixeldaten mit Mehrfachabtastung mit einem Teilmengen-Kodierzustand verknüpft sind. Im Schritt 616 wird, wenn die Lade/Speichereinheit 290 durch Analyse der Pixeldaten mit Mehrfachabtastung ermittelt, dass die Pixeldaten mit Mehrfachabtastung in einem Teilmengen-Kodierzustand kodiert werden können, der Kodierzustand auf Teilmenge gesetzt, und die entsprechende Abtastmaske pro Pixel wird in den Kodierzustand für jede Abtastteilmenge eingeschlossen. Im Schritt 616 wird der Kodierzustand an die Verarbeitungseinheit 250 zusammen mit den Daten für eine einzelne Abtastung jeder Abtastteilmenge ausgegeben. Im Schritt 618 wird die einzelne Abtastung des Pixel von der Verarbeitungseinheit 250 verarbeitet, um verarbeitete Daten für alle Abtastungen der Abtastteilmenge zu erzeugen.
  • Wenn im Schritt 606 die Lade/Speichereinheit 290 ermittelt, dass der mit den Pixeldaten mit Mehrfachabtastung verknüpfte Kodierzustand nicht der Teilmengen-Kodierzustand ist, dann stellt im Schritt 623 die Lade/Speichereinheit 290 Daten für alle Abtastungen jedes Pixel mit Mehrfachabtastung oder für jeden Bereich eines Pixel mit Mehrfachabtastung und den Kodierzustand für die Verarbeitungseinheit 250 bereit. Im Schritt 623 wird der Kodierzustand auf nicht 1SPP gesetzt und wird an die Verarbeitungseinheit 250 zusammen mit den Daten für alle Abtastungen für jedes Pixel mit Mehrfachabtastung oder für den Bereich eines Pixel mit Mehrfachabtastung ausgegeben. Im Schritt 626 verarbeitet die Verarbeitungseinheit 250 die Daten für alle Abtastungen für jedes Pixel mit Mehrfachabtastung oder jeden Teil eines Pixel mit Mehrfachabtastung.
  • Im Schritt 632 setzt die Verarbeitungseinheit 250 den Kodierzustand auf 1SPP, Teilmenge oder nicht-1SPP basierend auf der Darstellung der verarbeiteten Daten. Im Schritt 634 gibt die Verarbeitungseinheit 250 die verarbeiteten Daten für jedes Pixel mit Mehrfachabtastung, jeden Bereich eines Pixel mit Mehrfachabtastung oder jede Abtastungsteilmenge an die Lade/Speichereinheit 290 zusammen mit dem Kodierzustand aus. Die verarbeiteten Daten können Daten für eine einzelne Abtastung oder für alle Abtastungen eines Pixel mit Mehrfachabtastung, eine einzelne Abtastung für jede Abtastteilmenge, eine einzelne Abtastung für alle Abtastungen eines Teils eines Pixel mit Mehrfachabtastung oder alle Abtastungen für ein Pixel mit Mehrfachabtastung enthalten.
  • 6B zeigt ein Flussdiagramm eines Verfahrens 635 für die Vereinigung der Verarbeitung von Daten mit Mehrfachabtastung gemäß einer Ausführungsform. Obwohl die in 6B gezeigten Schritte so beschrieben sind, dass sie von der Lade/Speichereinheit 290 ausgeführt werden, können die Lade/Speichereinheit 290 und/oder der L2-Cache-Speicher 265 (oder 265) und/oder die Verarbeitungseinheit 250 (oder 550) ausgebildet sein, die in 6B gezeigten Schritte auszuführen. Die Schritte sind im Zusammenhang mit der Lade/Speichereinheit 290 beschrieben, die in 5A gezeigt ist. Die Schritte können auch von der Lade/Speichereinheit 290 ausgeführt werden, die in 5B gezeigt ist, wobei der Cache-Speicher 581 die verarbeiteten Daten anstelle des Vereinigungspuffers 558 gespeichert.
  • Im Schritt 605 empfängt die Lade/Speichereinheit 290 die verarbeiteten Daten für ein Pixel mit Mehrfachabtastung aus der Verarbeitungseinheit 250. Im Schritt 607 ermittelt die Lade/Speichereinheit 290, ob eine neue Kachel zur Speicherung der verarbeiteten Daten benötigt wird, da das Pixel mit Mehrfachabtastung nicht innerhalb einer aktuellen Kachel liegt, die in dem Vereinigungspuffer 558 gespeichert ist, und wenn dies nicht der Fall ist, geht die Lade/Speichereinheit 290 zum Schritt 610 weiter. Wenn eine neue Kachel benötigt wird, werden im Schritt 609 die verarbeiteten Daten für die aktuelle Kachel in den L2-Cache-Speicher 265 geleert und die Kachelabdeckung wird in der Abdeckungsverfolgungseinheit 575 zurückgesetzt, bevor die Lade/Speichereinheit 290 zum Schritt 610 weitergeht.
  • Im Schritt 610 prüft die Lade/Speichereinheit 290 den Kodierzustand, der von der Verarbeitungseinheit 250 mit den verarbeiteten Daten bereitgestellt wird, und ermittelt, ob der Kodierzustand 1SPP ist. Wenn der Kodierzustand nicht 1SPP ist, dann ermittelt im Schritt 640 die Lade/Speichereinheit 290, ob die verarbeiteten Daten als eine oder mehrere Teilmengen kodiert werden können. Die Lade/Speichereinheit 290 kann eine Analyse der verarbeiteten Daten unter Anwendung der Analyseeinheit 500 ausführen, um den Kodierzustand zu ermitteln. Wenn die verarbeiteten Daten als eine oder mehrere Teilmengen kodiert werden können, wird im Schritt 645 eine Abtastmaske pro Pixel für jede Teilmenge erzeugt. Im Schritt 650 ermittelt die Lade/Speichereinheit 290, ob ein Eintrag in dem Vereinigungspuffer 558 mit den x, y-Koordinaten (oder einer anderen eindeutigen Kennung) für das Pixel mit Mehrfachabtastung übereinstimmt. Wenn ein übereinstimmender Eintrag im Schritt 650 ermittelt wird, dann vereinigt im Schritt 655 die Lade/Speichereinheit 290 die verarbeiteten Daten in dem übereinstimmenden Eintrag. Ansonsten speichert im Schritt 660 die Lade/Speichereinheit 290 die verarbeiteten Daten in einem leeren Eintrag des Vereinigungspuffers 558.
  • Wenn im Schritt 640 die Lade/Speichereinheit 290 ermittelt, dass eine oder mehrere Teilmengen nicht kodiert werden können, dann speichert im Schritt 660 die Lade/Speichereinheit 290 die verarbeiteten Daten in einem leeren Eintrag des Vereinigungspuffers 558. Wenn die verarbeiteten Daten nicht als 1SPP oder als Teilmenge kodiert werden können, ist der Kodierzustand nicht 1SPP und die verarbeiteten Daten für die Abtastung werden für das Pixel mit Mehrfachabtastung gespeichert. In einer weiteren Ausführungsform gibt die Lade/Speichereinheit 290 die verarbeiteten Daten an den L2-Cache-Speicher 265 aus, wenn der Kodierzustand nicht 1SPP ist.
  • Wenn im Schritt 610 der Kodierzustand 1SPP ist, dann speichert im Schritt 620 die Lade/Speichereinheit 290 die verarbeiteten Daten für das Pixel mit Mehrfachabtastung in dem Vereinigungspuffer 558. Im Schritt 665 aktualisiert die Lade/Speichereinheit 290 die Kachelabdeckung, die in der Abdeckungsverfolgungseinheit 575 gespeichert ist. Im Schritt 670 ermittelt die Lade/Speichereinheit 290, ob eine in dem Vereinigungspuffer 558 gespeicherte Kachel vollständig abgedeckt ist, und wenn dies der Fall ist, werden die verarbeiteten Daten für die vollständig abgedeckte Kachel in den L2-Cache-Speicher 265 übertragen und die Kachelabdeckung wird in der Abdeckungsverfolgungseinheit 575 zurückgesetzt. Dann beendet die Lade/Speichereinheit 290 die Handhabung des Prozesses für die Pixeldaten mit Mehrfachabtastung, die im Schritt 605 empfangen wurden. Die in Verbindung mit 66 beschriebenen Schritte können auch für eine Teilkachel ausgeführt werden, wenn der Vereinigungspuffer 558 ausgebildet ist, anstelle einer gesamten Kachel eine Teilkachel zu speichern.
  • Wenn die Daten für eine oder mehrere Teilmengen an Abtastungen eines Pixel mit Mehrfachabtastung gleich sind, kann der Teilmengen-Kodierzustand verwendet werden, um die Speichergröße zur Speicherung der Pixeldaten mit Mehrfachabtastung zu verringern und auch um die Bandbreite, die zum Lesen, Schreiben und Senden der Pixeldaten mit Mehrfachabtastung verbraucht wird, zu reduzieren. In einigen Fällen kann eine Verarbeitungseinheit, etwa die Verarbeitungseinheit 250 oder 550 ausgebildet sein, die einzelne Abtastung zu verarbeiten, um verarbeitete Pixeldaten mit Mehrfachabtastung für die einzelne Abtastung zu erzeugen, die verarbeitete Pixeldaten mit Mehrfachabtastung für zwei oder mehr Abtastungen oder sogar alle Abtastungen eines Pixel mit Mehrfachabtastung repräsentieren.
  • Lade- und Speicherbefehle mit Mehrfachabtastung
  • Wie zuvor beschrieben ist, kann ein Ladebefehl mit Mehrfachabtastung (SULD. MS) unterstützt werden, der eine Abtastmaske zurückgibt, die anzeigt, welche Abtastungen bekannt sind und den gleichen Wert besitzen. Der Ladebefehl mit Mehrfachabtastung spezifiziert ferner eine Adresse oder Koordinaten eines Pixel mit Mehrfachabtastung. In einer Ausführungsform gibt der Ladebefehl mit Mehrfachabtastung eine Vorhersage zurück, die angibt, ob das Pixel mit Mehrfachabtastung einen Kodierzustand von nicht 1SPP (das heißt, ein separater Wert ist für jede Abtastung des Pixel mit Mehrfachabtastung gespeichert) hat. In einer weiteren Ausführungsform gibt die Vorhersage den Kodierzustand des Pixel mit Mehrfachabtastung an, beispielsweise 1SPP, nicht 1SPP oder Teilmenge.
  • In einer Ausführungsform umfassen Eingaben für den Ladebefehl mit Mehrfachabtastung eine Pixeladresse und eine Abtastkennung, die einer einzelnen Abtastung in dem Pixel mit Mehrfachabtastung entspricht. Zusätzlich zur Rückgabe der Daten für die eine Abtastung kann der Ladebefehl mit Mehrfachabtastung auch eine Ganzzahl-Abtastmaske zurückgeben, die angibt, welche anderen Abtastungen in dem Pixel mit Mehrfachabtastung bekannt sind und den gleichen Wert wie die einzelne Abtastung haben. Der Ladebefehl mit Mehrfachabtastung kann so definiert sein, dass die Abtastmaske in opportunistischer Weise berechnet werden kann. Wenn beispielsweise das Pixel mit Mehrfachabtastung als Teil einer Kachel bekannt ist, die einen Kodierzustand von 1SPP besitzt, dann wird die Abtastmaske angeben, dass alle Abtastungen des Pixel mit Mehrfachabtastung die gleichen Daten haben. Wenn der Kodierzustand des Pixel mit Mehrfachabtastung Teilmenge ist, wird die Abtastmaske angeben, welche Abtastungen in der gleichen Teilmenge wie die Abtastung enthalten sind, die der spezifizierten Abtastkennung entspricht. Die Lade/Speichereinheit 290 oder der L2-Cache-Speicher 265 können ausgebildet sein, die Pixeldaten mit Mehrfachabtastung zu analysieren und die Abtastmaske pro Pixel, die der Teilmenge entspricht, die die der spezifizierten Abtastkennung entsprechende Abtastung enthält, zu erzeugen. Die erzeugte Abtastmaske pro Pixel kann von dem Ladebefehl mit Mehrfachabtastung als die Abtastmaske zurückgegeben werden. In einer Ausführungsform analysieren die Lade/Speichereinheit 290 oder der L2-Cache-Speicher 265 die anderen Abtastungen, die in einer Cache-Zeile gespeichert sind, um die Abtastmaske zu erzeugen, so dass die Abtastmaske nicht alle Abtastungen in der Teilmenge gegebenenfalls repräsentiert, wenn Daten für alle Abtastungen nicht in einer einzelnen Cache-Zeile gespeichert werden können.
  • Ferner kann ein Speicherbefehl mit Mehrfachabtastung (SUST.MS) unterstützt werden, der eine Abtastmaske akzeptiert, in der ein Wert, der mit dem Speicherbefehl mit Mehrfachabtastung bereitgestellt wird, in jeder Abtastung eines Pixel mit Mehrfachabtastung gespeichert wird, das entsprechend der spezifizierten Abtastmaske aktiviert wird. In einer Ausführungsform kann eine Abtastmaske, die ein vollständig abgedecktes Pixel angibt, in einem 1SPP-Format gespeichert werden, wie in 6B gezeigt ist. In einer weiteren Ausführungsform kann eine Abtastmaske, die ein teilweise abgedecktes Pixel angibt, in einer Teilmengen-Kodierung gespeichert werden.
  • Der in Tabelle 1 gezeigte Code zeigt ein Beispiel, wie die SUST.MS- und SULD.MS-Befehle in einem Schattierungsprogramm verwendet werden können, um eine Funktion von Werten von Abtastungen in einem Pixel zu berechnen und zu speichern, das von einem Grundelement abgedeckt ist. Tabelle 1
    Figure DE102013114279A1_0002
  • Die Pixel Abdeckungsmaske gibt die Abtastungsabdeckung eines neuen Grundelements an, unabhängig von den Werten, die für die Abtastung gespeichert sind (nicht die Abtastungsabdeckung für eine Teilmenge, in der die Abtastungen alle die gleichen Daten haben). In jeder Iteration der Schleife wird der Wert einer Abtastung, die entsprechend zu coverageMask abgedeckt ist, unter Anwendung des SULD.MS-Befehls geladen. Der SULD.MS-Befehl gibt die Abtastmaske pro Pixel (oder die Abtastmaske pro Cache-Zeile) zurück. Der Wert der angeforderten Abtastung wird verarbeitet, um eine verarbeiteten Wert zu erzeugen.
  • Die verarbeiteten Daten für die eine Abtastung werden zurückgegeben und in allen Abtastungen gespeichert, die den gleichen Wert wie die eine Abtastung haben (entsprechend der Abtastmaske pro Pixel) und die von dem neuen Grundelement abgedeckt sind. Die coverageMask bzw. Abdeckungsmaske wird bitweise UND-verknüpft mit der Abtastmaske pro Pixel, um sicherzustellen, dass nur Abtastungen, die von dem neuen Grundelement abgedeckt werden, geschrieben werden. Die coverageMask bzw. Abdeckmaske wird dann auf der Grundlage der Abtastungen, die von SUST.MS geschrieben wurden, aktualisiert. Die Schleife wird nur für jede Abtastteilmenge ausgeführt, anstatt dass sie für jede Abtastung ausgeführt wird, die gemäß der Pixel Abdeckungsmaske abgedeckt wird.
  • In einer Ausführungsform ist die Analyseeinheit 500 als eine Schaltung mit festgelegter Funktion eingerichtet, die ausgebildet ist, Vergleichsoperationen auszuführen, um die Abtastmaske pro Pixel zu berechnen, die von dem SULD.MS-Befehl zurückgegeben wird. Eine anschauliche Realisierung verwendet eine Cache-Zeile mit einer Größe von 32 Bytes und umfasst acht Komparatoren mit 4 Bytes. Gruppen aus 4 Bytes werden durch Multiplexing an die Eingänge der Komparator in Abhängigkeit von dem Datenformat des Pixel mit Mehrfachabtastung gelegt. Wenn beispielsweise das Datenformat 4BPP (beispielsweise RGBA8) ist, führen die 8 Komparator vergleiche für 8 dwords (Datenwörter, wobei ein Datenwort 4 Bytes hat):
    dword[i] == dword[0]
    dword[i] == dword[1]
    dword[i] == dword[2]
    dword[i] == dword[3]
    dword[i] == dword[4]
    dword[i] == dword[5]
    dword[i] == dword[6]
    dword[i] == dword[7]
    wobei < i > die gerade abgeholte Abtastung ist. Abhängig von dem Modus mit Mehrfachabtastung (d. h., der Anzahl an Abtastungen pro Pixel) können die geeigneten Vergleiche in eine Abtastmaske pro Pixel kombiniert werden, die zurückgegeben wird. Der Modus mit Mehrfachabtastung von 8×AA (acht Abtastungen pro Pixel) verwendet alle acht Vergleiche, 4×AA (vier Abtastungen pro Pixel) verwendet die Hälfte der Vergleiche, usw.
  • Wenn das Datenformat des Pixel mit Mehrfachabtastung 8BPP ist (beispielsweise RGBA16 F), dann können die Vergleiche in der folgenden Weise angeordnet werden:
    dword[2*i+0] == dword[0] (untere Hälfte der Abtastung 0)
    dword[2*i+1] == dword[1] (obere Hälfte der Abtastung 0)
    dword[2*i+0] == dword[2] (untere Hälfte der Abtastung 1)
    dword[2*i+1] == dword[3] (obere Hälfte der Abtastung 1)
    dword[2*i+0] == dword[4] (untere Hälfte der Abtastung 2)
    dword[2*i+1] == dword[5] (obere Hälfte der Abtastung 2)
    dword[2*i+0] == dword[6] (untere Hälfte der Abtastung 3)
    dword[2*i+1] == dword[7] (obere Hälfte der Abtastung 3)
    wenn der Modus mit Mehrfachabtastung 4×AA ist, dann kann die oben gezeigte Anordnung alle Abtastungen in einem Pixel vergleichen. Wenn der Modus mit Mehrfachabtastung 8×AA ist, dann kann die oben gezeigte Anordnung nur die Hälfte der Abtastungen in dem Pixel vergleichen und die Abtastmaske pro Pixel repräsentiert einen Teil des Pixel mit Mehrfachabtastung oder eine weitere Gruppe an Vergleichen wird ausgeführt, um die Abtastmaske pro Pixel für das gesamte Pixel mit Mehrfachabtastung zu erzeugen.
  • In einer alternativen Ausführungsform kann eine Filterschaltung verwendet werden, um die Vergleiche auszuführen. Beispielsweise kann die Lade/Speichereinheit 290 einen MIN- und einen MAX-Filtermodus realisieren, und diese Modi nehmen eine bilineare Form (vier Textelemente) an, und anstatt einen gewichteten Durchschnitt zu berechnen, sind diese ausgebildet, komponentenweise ein Minimum oder Maximum der vier Werte der Textelemente zu berechnen. In einer Ausführungsform umfasst die Lade/Speichereinheit 290 eine Textureinheit, die ausgebildet ist, Texturoperationen auszuführen. Die Textureinheit kann Komparator aufweisen, die mindestens für vier Textelemente gelten, die ausgebildet sein können, Vergleiche auf Gleichheit durchzuführen, sowie Operationen im Filtermodus MIN und MAX. In ähnlicher Weise kann die Lade/Speichereinheit 290 Tiefen-(z)Vergleichsoperationen unterstützen (d. h., abgetastete Werte mit einem von einer Schattierung bereitgestellten „Referenz”-Wert vergleichen), die angewendet werden können, um Vergleiche für Tiefenwert auszuführen.
  • Parallelverarbeitungssystem
  • 7 zeigt eine Parallelverarbeitungseinheit (PPU) 700 gemäß einer Ausführungsform. Obwohl ein paralleler Prozessor hierin als ein Beispiel der PPU 700 dargestellt ist, sollte dringend beachtet werden, dass ein derartiger Prozessor nur aus anschaulichen Zwecken dargestellt ist und dass jeder Prozessor eingesetzt werden kann, um diesen zu ergänzen und/oder zu ersetzen. In einer Ausführungsform ist die PPU 700 ausgebildet, mehrere Stränge gleichzeitig in zwei oder mehr Datenstrom-Multiprozessoren (SM) 750 auszuführen. In einer Ausführungsform sind die Verarbeitungseinheit 250 und 550 als SM 750 realisiert. Ein Strang (d. h. ein Ausführungsstrang) ist eine Instantiierung einer Gruppe von Befehlen, die in einem speziellen SM 750 ausgeführt werden. Jeder SM 750, der nachfolgend detaillierter in Verbindung mit 8 beschrieben ist, kann, ohne einschränkend zu sein, einen oder mehrere Verarbeitungskerne, einen Cache-Speicher der Ebene eins (11), einen gemeinsam benutzten Speicher und dergleichen aufweisen.
  • In einer Ausführungsform umfasst die PPU 700 eine Eingabe/Ausgabe-(I/O-)Einheit 705, die ausgebildet ist, Kommunikationsereignisse (d. h., Befehle, Daten usw.) von einer zentralen Recheneinheit (CPU) (nicht gezeigt) über den Systembus 702 zu senden und zu empfangen. Die I/O-Einheit 705 kann eine periphere Komponenten-Verbindungs-Express-(PCIe)Schnittstelle für eine Kommunikation über einen PCIe-Bus realisieren. In alternativen Ausführungsformen kann die I/O-Einheit 705 andere Arten gut bekannter Busschnittstellen realisieren.
  • Die PPU 700 umfasst ferner eine Hauptschnittstelleneinheit 710, die die Befehle dekodiert und die Befehle an die Gitterverwaltungseinheit 715 oder andere Einheiten der PPU 700 (beispielsweise Speicherschnittstelle 780) in der Art sendet, wie dies durch die Befehle angegeben ist. Die Hauptschnittstelleneinheit 710 ist ausgebildet, die Kommunikation zwischen und unter den diversen Logikeinheiten der PPU 700 zu verteilen.
  • In einer Ausführungsform wird ein Programm, das als ein Befehlsstrom kodiert ist, von der CPU in einen Puffer geschrieben. Der Puffer ist ein Gebiet im Speicher, beispielsweise dem Speicher 704 oder dem Systemspeicher, auf das sowohl die CPU als auch die PPU 700 zugreifen kann (das heißt, lesen/schreiben). Die CPU schreibt den Befehlsstrom in den Puffer und sendet einen Zeiger auf den Beginn des Befehlsstroms an die PPU 700. Die Hauptschnittstelleneinheit 710 leitet der Gitterverwaltungseinheit (GMU) 715 Zeiger auf den einen oder die mehreren Ströme zu. Die GMU 715 wählt einen oder mehrere Ströme aus und ist ausgebildet, die ausgewählten Ströme als eine Ansammlung anhängiger Gitter zu verwalten. Die Ansammlung anhängiger Gitter kann neue Gitter enthalten, die noch nicht für die Ausführung ausgewählt worden sind, und kann Gitter beinhalten, die teilweise ausgeführt und unterbrochen worden sind.
  • Eine Arbeitsverteilungseinheit 720, die zwischen der GMU 715 und den SM 750 angeordnet ist, verwaltet eine Ansammlung aktiver Gitter, wählt aktive Gitter aus und gibt diese für die Ausführung durch die SM 750 aus. Anhängige Gitter werden von der GMU 715 in die Ansammlung aktiver Gitter übertragen, wenn ein anhängiges Gitter für die Ausführung bereit ist, d. h. keine unaufgelösten Datenabhängigkeiten besitzt. Ein aktives Gitter wird in die anhängige Ansammlung übertragen, wenn die Ausführung des aktiven Gitters von einer Abhängigkeit blockiert ist. Wenn die Ausführung eines Gitters abgeschlossen ist, wird das Gitter aus der Ansammlung aktiver Gitter von der Arbeitsverteilungseinheit 720 entfernt. Zusätzlich zum Empfang von Gitter aus der Hauptschnittstelleneinheit 710 und der Arbeitsverteilungseinheit 720 empfängt die GMU 715 auch Gitter, die dynamisch von den SM 750 während der Ausführung eines Gitters erzeugt werden. Diese dynamisch erzeugten Gitter werden zu den anderen anhängigen Gittern in der Ansammlung anhängiger Gitter hinzugefügt.
  • In einer Ausführungsform führt die CPU einen Treiber-Kernel aus, der eine Anwendungsprogrammierschnittstelle (API) realisiert, die es einer oder mehreren Anwendungen ermöglicht, die in der CPU ausgeführt werden, Operationen für die Ausführung in der PPU 700 zu disponieren. Eine Anwendung kann Befehle (d. h. API-Aufrufe) beinhalten, die den Treiber-Kernel veranlassen, ein oder mehrere Gitter für die Ausführung zu erzeugen. In einer Ausführungsform realisiert die PPU 700 eine SIMD-(Einzelbefehl-Mehrfach-Daten-)Architektur, wobei jeder Strangblock (d. h. Kette) in einem Gitter gleichzeitig mit einem unterschiedlichen Datensatz von unterschiedlichen Strängen in dem Strangblock ausgeführt wird. Der Treiber-Kernel definiert Strangblöcke, die aus k zugehörigen Strängen aufgebaut sind, so dass Stränge in dem gleichen Strangblock Daten über den gemeinsam benutzten Speicher austauschen können. In einer Ausführungsform umfasst ein Strangblock 32 zugehörige Stränge und ein Gitter ist ein Array aus einem oder mehreren Strangblöcken, die den gleichen Strom ausführen und die unterschiedlichen Strangblöcke können Daten über den globalen Speicher untereinander austauschen.
  • In einer Ausführungsform umfasst die PPU 700 X SM 750(X). Beispielsweise kann die PPU 100 15 unterschiedliche SM 750 enthalten. Jeder SM 750 ist mehrsträngig und ausgebildet, mehrere Stränge (beispielsweise 32 Stränge) aus einem speziellen Strangblock gleichzeitig auszuführen. Jeder der SM 750 ist mit einem Cache-Speicher der Ebene zwei (L2) 265 über eine Lade/Speichereinheit 290 und eine Kreuzungseinheit 260 (oder eine andere Art von Verbindungsnetzwerk) verbunden. Die Lade/Speichereinheit 290 ist ausgebildet, Lade- und Speicheroperationen, die aus dem SM 750 empfangen werden, auszuführen, wie dies zuvor beschrieben ist.
  • Der L2-Cache-Speicher 265 ist mit einer oder mehreren Speicherschnittstellen 780 verbunden. Die Speicherschnittstellen 780 realisieren Datenbusse mit 16, 32, 64, 128 Bit, oder dergleichen, für eine Hochgeschwindigkeitsdatenübertragung. In einer Ausführungsform umfasst die PPU 700 U Schnittstellen 780(U), wobei jede Speicherschnittstelle 780(U) mit einer entsprechenden Speichereinrichtung 704(U) verbunden ist. Beispielsweise kann die PPU 700 mit bis zu 6 Speichereinrichtungen 704 verbunden sein, etwa mit einem synchronen dynamischen Speicher mit wahlfreiem Zugriff mit doppelter Datenrate der Version 5 (GDDR5 SDRAM).
  • In einer Ausführungsform realisiert die PPU 700 eine Mehrebenen-Speicherhierarchie. Der Speicher 704 ist in dem SDRAM außerhalb des Chips, der mit der PPU 700 verbunden ist, angeordnet. Daten aus dem Speicher 704 können in den L2-Cache-Speicher 265 abgeholt und gespeichert werden, der chipintern angeordnet ist und gemeinsam von den diversen SM 750 benutzt wird. Der L2-Cache-Speicher 265 kann durch den L2-Cache-Speicher 565 ersetzt werden. In einer Ausführungsform realisiert jeder der SM 750 auch einen L1-Cache-Speicher. Der L1-Cache-Speicher ist ein privater Speicher, der jeweils einem speziellen SM 750 zugeordnet ist. Jeder der L1-Cache-Speicher ist mit dem gemeinsam benutzten L2-Cache-Speicher 265 verbunden. Daten aus dem L2-Cache-Speicher 265 können abgeholt und in jedem der L1-Cache-Speicher zur Verarbeitung in den Funktionseinheiten der SM 750 gespeichert werden.
  • In einer Ausführungsform umfasst die PPU 700 eine grafische Verarbeitungseinheit (GPU). Die PPU 700 ist ausgebildet, Befehle zu empfangen, die Schattierungsprogramme zur Verarbeitung von Grafikdaten spezifizieren. Grafikdaten können als eine Gruppe von Grundelementen, etwa Punkte, Linien, Dreiecke, Quadrate, Dreiecksstreifen und dergleichen definiert sein. Typischerweise enthält ein Grundelement Daten, die eine Anzahl an Vertices für das Grundelement angeben (beispielsweise in einem Koordinatensystem eines Modellraums) sowie Attribute, die mit jedem Vertex des Grundelements verknüpft sind. Die PPU 700 kann ausgebildet sein, die grafischen Grundelemente zu verarbeiten, um einen Blockpuffer bzw. Bildpuffer (d. h. Pixeldaten für jedes Pixel der Anzeige) zu erzeugen. Der Treiber-Kernel realisiert eine Grafikverarbeitungs-Pipeline, etwa die Grafikverarbeitungs-Pipeline, die durch OpenGL API definiert ist.
  • Eine Anwendung schreibt Modelldaten für eine Szene (d. h., eine Ansammlung von Vertices und Attributen) in den Speicher. Die Modelldaten definieren jedes Objekt, das auf einer Anzeige sichtbar sein kann. Die Anwendung tätigt dann einen API-Aufruf in den Treiber-Kernel, der anfordert, dass die Modelldaten als Bild erzeugt und angezeigt werden. Der Treiber-Kernel liest die Modelldaten aus und schreibt Befehle in den Puffer, um eine oder mehrere Operationen zur Verarbeitung der Modelldaten auszuführen. Die Befehle können unterschiedliche Schattierungsprogramme kodieren, wozu eines oder mehrere der folgenden gehören: eine Vertex-Schattierung, eine Hüllen-Schattierung, eine Geometrie-Schattierung, eine Pixel-Schattierung, usw.
  • Beispielsweise kann die GMU 715 einen oder mehrere SM 750 konfigurieren, um ein Vertex-Schattierungsprogramm auszuführen, das eine Anzahl von Vertices bearbeitet, die durch die Modelldaten definiert sind. In einer Ausführungsform kann die GMU 715 unterschiedliche SM 750 konfigurieren, um unterschiedliche Schattierungsprogramme gleichzeitig auszuführen. Beispielsweise kann eine erste Teilgruppe an SM 750 konfiguriert werden, um ein Vertex-Schattierungsprogramm auszuführen, während eine zweite Teilgruppe an SM 750 konfiguriert werden kann, um ein Pixel-Schattierungsprogramm auszuführen. Die erste Teilgruppe an SM 750 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache-Speicher 265 und/oder den Speicher 704 mittels den Lade/Speichereinheiten 290 und der Kreuzungseinheit 260. Nachdem die verarbeiteten Vertex-Daten in ein Raster eingeteilt sind (d. h., nachdem diese von dreidimensionalen Daten in zweidimensionale Daten in einem Bildschirm-Raum umgewandelt wurden), um Fragmentdaten zu erzeugen, führt die zweite Teilgruppe an SM 750 eine Pixel-Schattierung aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Blockpuffer in dem Speicher 704 gespeichert werden. Das Vertex-Schattierungsprogramm und das Pixel-Schattierungsprogramm können gleichzeitig ausgeführt werden, wodurch unterschiedliche Daten für die gleiche Szene in der Art einer Pipeline verarbeitet werden, bis alle Modelldaten für die Szene in dem Blockpuffer als Bild erzeugt sind. Anschließend wird der Inhalt des Blockpuffers an eine Anzeigesteuerung zur Anzeige auf einer Anzeigeeinrichtung übertragen.
  • Die PPU 700 kann in einem Tischrechner, einem mobilen Rechner, einem Tablett-Rechner, einem intelligenten Telefon (beispielsweise ein drahtloses Handgerät), in einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem elektronischen Handgerät und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 700 in einem einzelnen Halbleitersubstrat ausgebildet. In einer weiteren Ausführungsform ist die PPU 700 in einem System-auf-einem-Chip (SoC) zusammen mit einer oder mehreren anderen Logikeinheiten, etwa einer CPU mit einem reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen integriert.
  • In einer Ausführungsform kann die PPU 700 in einer Grafikkarte enthalten sein, die eine oder mehrere Speichereinrichtungen 704, etwa GDDR5 SDRAM enthält. Die Grafikkarte kann ausgebildet sein, mit einem PCIe-Steckplatz auf einer Hautplatine eines Tischrechners verbunden zu werden, der beispielsweise einen Nordbrücken-Chipsatz und einen Südbrücken-Chipsatz enthält. In einer noch weiteren Ausführungsform kann die PPU 700 eine integrierte grafische Verarbeitungseinheit (iGPU) sein, die in dem Chipsatz (das heißt Nordbrücke) der Hauptplatine enthalten ist.
  • 8 zeigt den Datenstrom-Multiprozessor 750 aus 5 gemäß einer Ausführungsform. Wie in 8 gezeigt ist, umfasst der SM 750 einen Befehls-Cache-Speicher 805, eine oder mehrere Disponiereinheiten 810, eine Registerdatei 620, einen oder mehrere Verarbeitungskerne 850, eine oder mehrere Einheiten mit doppelter Genauigkeit (DPU) 851, eine oder mehrere Einheiten mit Spezialfunktion (SFU) 852, eine oder mehrere Lade/Speichereinheiten (LSU) 853, ein Verbindungsnetzwerk 880 und einen gemeinsam benutzten Speicher/L1-Cache-Speicher 870. Der SM 750 ist mit einer Lade/Speichereinheit 290 verbunden. Die Lade/Speichereinheit 290 kann eine oder mehrere Textureinheiten zusätzlich zu den Einheiten, die in 2C gezeigt sind, enthalten.
  • In einer Ausführungsform sind der SM 750 und die Lade/Speichereinheit 290 in einer GPU realisiert. In einer derartigen Ausführungsform umfasst die Lade/Speichereinheit 290 eine oder mehrere Textureinheiten, die ausgebildet sind, Texturabbildungen (das heißt ein 2D-Array an Textelementen) aus dem Speicher 704 zu laden und die Texturabbildungen abzutasten, um abgetastete Texturwerte zur Verwendung in Schattierungsprogrammen zu erzeugen. Die Textureinheiten realisieren Texturoperationen, etwa Fehlerbehebungsoperationen unter Anwendung von mip-Abbildungen (das heißt Texturabbildungen mit einem variierenden Grad an Detail).
  • Wie zuvor beschrieben ist, gibt die Arbeitsverteilungseinheit 720 aktive Gitter zur Verarbeitung in einem oder mehreren SM 750 der PPU 700 aus. Die Disponiereinheit 810 empfängt die Gitter aus der Arbeitsverteilungseinheit 720 und verwaltet die Befehlsdisponierung für einen oder mehrere Strangblöcke jedes aktiven Gitters. Die Disponiereinheit 810 disponiert Stränge für die Ausführung in Gruppen paralleler Stränge, wobei jede Gruppe als eine Kette bezeichnet wird. In einer Ausführungsform enthält jede Kette 32 Stränge. Die Disponiereinheit 810 kann mehrere unterschiedliche Strangblöcke verwalten, die Strangblöcke zu Ketten für die Ausführung zuordnen und dann Befehle aus den mehreren unterschiedlichen Ketten in den diversen Funktionseinheiten (das heißt Kerne 850, DPU 851, SFU 852 und LSU 853) während jedes Taktzyklus disponieren.
  • In einer Ausführungsform enthält jede Disponiereinheit 810 eine oder mehrere Befehlsausgabeeinheiten 815. Jede Ausgabeeinheit 815 ist ausgebildet, Befehle zu einer oder mehreren der Funktionseinheiten zu senden. In der in 8 gezeigten Ausführungsform umfasst die Disponiereinheit 810 zwei Ausgabeeinheiten 815, die es ermöglichen, dass zwei unterschiedliche Befehle aus der gleichen Kette während jedes Taktzyklus ausgegeben werden. In alternativen Ausführungsformen kann jede Disponiereinheit 810 eine einzelne Ausgabeeinheit 815 oder weitere Ausgabeeinheiten 815 enthalten.
  • Jeder SM 750 enthält eine Registerdatei 820, die eine Gruppe an Registern für die Funktionseinheiten des SM 750 bereitstellt. In einer Ausführungsform ist die Registerdatei 820 auf jeweils die Funktionseinheiten so aufgeteilt, dass jede Funktionseinheit einen speziellen Teil der Registerdatei 820 zugewiesen hat. In einer weiteren Ausführungsform ist die Registerdatei 820 auf die unterschiedlichen Ketten, die von den SM 750 ausgeführt werden, aufgeteilt. Die Registerdatei 820 stellt temporären Speicherplatz für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verbunden sind.
  • Jeder SM 750 umfasst L Verarbeitungskerne 850. In einer Ausführungsform enthält der SM 750 eine große Anzahl (beispielsweise 192, usw.) an unterschiedlichen Verarbeitungskernen 850. Jeder Kern 850 ist eine vollständig als Pipeline arbeitende Verarbeitungseinheit mit einfacher Genauigkeit und umfasst eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit. In einer Ausführungsform realisieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-2008-Standard für Gleitkommaarithmetik. Jeder SM 750 umfasst ferner M DPU 851, die eine Gleitkommaarithmetik mit doppelter Genauigkeit realisieren, N SFU 852, die Spezialfunktionen ausführen (beispielsweise Kopieren von Rechtecken, Pixel-Mischoperationen und dergleichen), und P LSU 853, die Lade- und Speicheroperationen zwischen dem gemeinsam benutzten Speicher/L1-Cache-Speicher 870 und der Registerdatei 820 ausführen. In einer Ausführungsform umfasst der SM 750 64 DPU 851, 32 SFU 852 und 32 LSU 853.
  • Jeder SM 750 enthält ein Verbindungsnetzwerk 880, das jede der Funktionseinheiten mit der Registerdatei 820 und dem gemeinsam benutzten Speicher/L1-Cache-Speicher 870 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 880 eine Kreuzungseinheit, die ausgebildet sein kann, jede der Funktionseinheiten mit jedem der Register in der Registerdatei 820 oder den Speicherstellen in dem gemeinsam benutzten Speicher/L1-Cache-Speicher 870 zu verbinden.
  • Die PPU 700, die zuvor beschrieben ist, kann ausgebildet sein, äußerst parallele Berechnungen wesentlich schneller als konventionelle CPUs auszuführen. Die parallele Berechnung hat Vorteile in der Grafikverarbeitung, der Datenkomprimierung, in biometrischen Operationen, den Datenstrom-Verarbeitungalgorithmen und dergleichen.
  • 9 zeigt ein anschauliches System 900, in welchem die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen realisiert werden können. Wie gezeigt, ist ein System 900 bereitgestellt, das mindestens einen zentralen Prozessor 901 aufweist, der mit einem Kommunikationsbus 902 verbunden ist. Der Kommunikationsbus 902 kann unter Anwendung eines beliebigen geeigneten Protokolls, etwa PCI (periphere Komponenten-Verbindung), PCI-Express, AGP (beschleunigter Graphikport), HyperTransport, oder durch ein oder mehrere andere Busprotokolle oder Punkt-Zu-Punkt-Kommunikationsprotokolle realisiert werden. Das System 900 umfasst ferner einen Hauptspeicher 904. Eine Steuerlogik (Software) und Daten sind in dem Hauptspeicher 904 gespeichert, der die Form eines Speichers mit wahlfreiem Zugriff (RAM) annehmen kann.
  • Das System 900 umfasst ferner Eingabegeräte 912, einen Grafikprozessor 906 und eine Anzeige 908, d. h. eine konventionelle CRT (Kathodenstrahlröhre), eine LCD (Flüssigkristallanzeige), eine LED (lichtemittierende Diode), eine Plasmaanzeige oder dergleichen. Eine Anwendereingabe kann aus den Eingabegeräten 912, beispielsweise Tastatur, Maus, berührungsempfindliche Auflage, Mikrofon und dergleichen empfangen werden. In einer Ausführungsform kann der Grafikprozessor 906 mehrere Schattierungs-Module, ein Rastermodul und dergleichen aufweisen. Jedes der vorhergehenden Module kann auf einer einzelnen Halbleiterplattform angeordnet sein, um eine grafische Verarbeitungseinheit (GPU) zu bilden.
  • In der vorliegenden Beschreibung bezeichnet eine einzelne Halbleiterplattform eine einzelne alleinstehende halbleiterbasierte integrierte Schaltung oder einen Chip. Es sollte beachtet werden, dass der Begriff einzelne Halbleiterplattform auch Multi-Chip-Module bezeichnet mit einer vergrößerten Verbindungsstruktur, die einen chipinternen Betrieb simulieren und die wesentliche Vorteile gegenüber einer Realisierung mit konventioneller zentraler Recheneinheit (CPU) und Bus darstellen. Selbst verständlich können die diversen Module auch separat oder in diversen Kombinationen von Halbleiterplattformen entsprechend den Bedürfnissen des Anwenders vorgesehen sein.
  • Das System 900 kann ferner einen sekundären Speicher 910 aufweisen. Der sekundäre Speicher 910 kann beispielsweise eine Festplatte und/oder eine entfernbare Speichereinrichtung sein, die ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Laufwerk einer Kompaktdiskette, ein Laufwerk einer digitale Vielseitigkeitsdiskette (DVD), ein Aufzeichnungsgerät, einen Flash-Speicher mit universellem seriellen Bus (USB) darstellen kann. Die entfernbare Speichereinrichtung liest aus und/oder schreibt in eine entfernbare Speichereinheit in gut bekannter Weise.
  • Computerprogramme oder Computer-Steuerlogikalgorithmen können in dem Hauptspeicher 904 und/oder dem sekundären Speicher 910 gespeichert sein. Derartige Computerprogramme versetzen bei der Ausführung das System 900 in die Lage, diverse Funktionen auszuführen. Das Compiler-Programm kann von dem zentralen Prozessor 901 oder dem Grafikprozessors 906 ausgeführt werden. Der Hauptspeicher 904, der Speicher 910 und/oder ein anderer Speicher sind mögliche Beispiele für computerlesbare Medien.
  • In einer Ausführungsform können die Architektur und/oder die Funktionen der diversen vorhergehenden Figuren im Zusammenhang mit dem zentralen Prozessor 901, dem Grafikprozessor 906, einer integrierten Schaltung (nicht gezeigt), die zumindest einen Teil der Eigenschaften sowohl des zentralen Prozessors 901 als auch des Grafikprozessors 906 aufweist, einem Chipsatz (d. h., einer Gruppe integrierter Schaltungen, die gestaltet sind, um der Ausführung zugehöriger Funktionen als eine Einheit zu verarbeiten und als solche verkauft zu werden, usw.) und/oder einer anderen integrierten Schaltung für diesen Zweck realisiert werden.
  • Ferner können die Architektur und/oder Funktionen der diversen vorhergehenden Figuren auch im Zusammenhang eines allgemeinen Computersystems, eines Systems aus Leiterplatten, eines Systems mit einer Spielekonsole, die für Unterhaltungszwecke gedacht ist, einem anwendungsspezifischen System und/oder einem anderen gewünschten System realisiert werden. Beispielsweise kann das System 900 die Form eines Tischrechners, eines mobilen Rechners, eines Dienstleister-Rechners, eines Arbeitplatzrechners, von Spielekonsolen, eines eingebetteten Systems und/oder einer anderen Art von Logik annehmen. Ferner kann das System 900 die Form diverser anderer Einrichtungen annehmen, wozu gehören, ohne Einschränkung, eine Einrichtung als persönlicher digitaler Assistent (PDA), eine Einrichtung als Mobiltelefon, ein Fernsehgerät, usw.
  • Obwohl dies nicht gezeigt ist, kann das System 900 mit einem Netzwerk (beispielsweise einem Telekommunikationsnetzwerk, einem Nahbereichsnetzwerk (LAN), einem drahtlosen Netzwerk, einem Weitbereichsnetzwerk (WAN), etwa dem Internet, einem Gerät-zu-Gerät-Netzwerk, einem Kabelnetzwerk oder dergleichen) für Kommunikationszwecke verbunden sein.
  • Obwohl diverse Ausführungsformen zuvor beschrieben sind, sollte beachtet werden, dass diese nur als Beispiel und nicht als Einschränkung angegeben sind. Somit sind die Breite und der Schutzbereich einer bevorzugten Ausführungsform nicht durch die oben beschriebenen anschaulichen Ausführungsformen beschränkt, sondern diese sollten entsprechend den folgenden Patentansprüchen und ihren Äquivalenten definiert sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • IEEE 754-2008-Standard [0125]

Claims (20)

  1. Ein Verfahren aufweisend: Empfangen von Mehrfachabtastung Pixeldaten; Ermitteln eines Kodierzustands, der mit den Mehrfachabtastung Pixeldaten verknüpft ist; Bereitstellen von Daten für eine Abtastung eines Mehrfachabtastung Pixel für eine Verarbeitungseinheit; Bereitstellen des Kodierzustands für die Verarbeitungseinheit; Verarbeiten der einen Abtastung des Mehrfachabtastung Pixel durch die Verarbeitungseinheit, um verarbeitete Daten für die eine Abtastung zu erzeugen, die verarbeitete Mehrfachabtastung Pixeldaten für alle Abtastungen des Mehrfachabtastung Pixel oder für zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren.
  2. Das Verfahren gemäß Anspruch 1, wobei der Kodierzustand anzeigt, dass die Daten für die eine Abtastung des Pixel die Mehrfachabtastung Pixeldaten für alle Abtastungen des Mehrfachabtastung Pixel oder für die zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren.
  3. Das Verfahren gemäß Anspruch 1, wobei eine Abtastmaske mit dem Mehrfachabtastung Pixel verknüpft ist, die anzeigt, welche Abtastungen des Mehrfachabtastung Pixel von den verarbeiteten Mehrfachabtastung Pixeldaten repräsentiert sind.
  4. Das Verfahren gemäß Anspruch 1, das ferner aufweist: Ermitteln, ob andere verarbeitete Daten in einem Puffer für das Mehrfachabtastung Pixel gespeichert sind; Ermitteln, dass die anderen verarbeiteten Daten nicht irgendwelchen Abtastungen des Mehrfachabtastung Pixel entsprechen, die von den verarbeiteten Mehrfachabtastung Pixeldaten repräsentiert sind; Speichern der Abtastmaske und der verarbeiteten Daten für die eine Abtastung in dem Puffer; und Verfolgen der Abdeckung einer Kachel, welche das Mehrfachabtastung Pixel enthält.
  5. Das Verfahren gemäß Anspruch 1, das ferner aufweist: Speichern der verarbeiteten Daten für eine Abtastung in einem Puffer; und Aktualisieren einer Kachel-Abdeckungsmaske, um anzuzeigen, dass die verarbeiteten Mehrfachabtastung Pixeldaten in dem Puffer gespeichert sind.
  6. Das Verfahren gemäß Anspruch 5, das ferner aufweist: Ermitteln, dass alle Mehrfachabtastung Pixel in einer Kachel abgedeckt sind, auf der Grundlage der Kachel-Abdeckungsmaske; und Schreiben der verarbeiteten Daten für die eine Abtastung und andere verarbeitete Daten für eine Abtastung jedes weiteren Mehrfachabtastung Pixel in der Kachel in einen Speicher.
  7. Das Verfahren gemäß Anspruch 5, das ferner aufweist: Ermitteln, dass alle Mehrfachabtastung Pixel in einer Kachel abgedeckt sind, auf der Grundlage der Kachel-Abdeckungsmaske; und Schreiben der verarbeiteten Daten für die eine Abtastung und den Kodierzustand in einen Speicher.
  8. Das Verfahren gemäß Anspruch 1, wobei die Ermittlung des Kodierzustands aufweist: Vergleichen der Mehrfachabtastung Pixeldaten für jede Abtastung des Mehrfachabtastung Pixel; und Ermitteln, dass die Daten für die eine Abtastung des Mehrfachabtastung Pixel Daten für alle Abtastungen des Mehrfachabtastung Pixel repräsentieren.
  9. Das Verfahren gemäß Anspruch 1, wobei die Bestimmung des Kodierzustands aufweist: Vergleichen der Mehrfachabtastung Pixeldaten für jede Abtastung des Mehrfachabtastung Pixel; und Ermitteln, dass die Daten für die eine Abtastung des Mehrfachabtastung Pixel Daten für die zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren.
  10. Das Verfahren gemäß Anspruch 1, wobei der Kodierzustand anzeigt, dass eine einzelne Abtastung eines Mehrfachabtastung Pixel alle Abtastungen eine Abtastteilmenge des Mehrfachabtastung Pixel repräsentiert.
  11. Das Verfahren gemäß Anspruch 1, wobei eine Anzahl an Abtastungen, die in dem Mehrfachabtastung Pixel enthalten sind, durch einen Mehrfachabtastung Modus angegeben ist.
  12. Das Verfahren gemäß Anspruch 1, wobei die zwei oder mehr Abtastungen zu einer Anzahl an Abtastungen für das Mehrfachabtastung Pixel korrespondieren, die in einer einzelnen Cache-Zeile gespeichert sind.
  13. Das Verfahren gemäß Anspruch 1, wobei die Mehrfachabtastung Daten aus dem Speicher ausgelesen werden, und wobei das Verfahren ferner aufweist: Empfangen eines Mehrfachabtastung Ladebefehls, der den Kodierzustand und die eine Abtastung des Mehrfachabtastung Pixel zurückgibt.
  14. Ein nicht-flüchtiges computerlesbares Speichermedium, das Befehle speichert, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, die Schritte auszuführen, die aufweisen: Empfangen von Mehrfachabtastung Pixeldaten; Ermitteln eines Kodierzustands, der mit den Mehrfachabtastung Pixeldaten verknüpft ist; Bereitstellen von Daten für eine Abtastung eines Mehrfachabtastung Pixel für eine Verarbeitungseinheit; Bereitstellen des Kodierzustands für die Verarbeitungseinheit; Verarbeiten der einen Abtastung des Mehrfachabtastung Pixel durch die Verarbeitungseinheit, um verarbeitete Daten für die eine Abtastung zu erzeugen, die verarbeitete Mehrfachabtastung Pixeldaten für alle Abtastungen des Mehrfachabtastung Pixel oder für zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren.
  15. Ein System aufweisend: einen Speicher, der Mehrfachabtastung Pixeldaten speichert; und einer Lade/Speichereinheit, die zwischen dem Speicher und einer Verarbeitungseinheit gekoppelt und ausgebildet ist, um: die Mehrfachabtastung Pixeldaten zu empfangen; einen Kodierzustand, der mit den Mehrfachabtastung Pixeldaten verknüpft ist, zu ermitteln; Daten für eine Abtastung eines Mehrfachabtastung Pixel für die Verarbeitungseinheit bereitzustellen; und den Kodierzustand für die Verarbeitungseinheit bereitzustellen; und einer Verarbeitungseinheit, die ausgebildet ist, um: die eine Abtastung des Mehrfachabtastung Pixel mittels der Verarbeitungseinheit zu verarbeiten, um verarbeitete Daten für die eine Abtastung zu erzeugen, die verarbeiteten Mehrfachabtastung Pixeldaten für alle Abtastungen des Mehrfachabtastung Pixel oder für zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren.
  16. Das System gemäß Anspruch 15, wobei der Kodierzustand anzeigt, dass die Daten für die eine Abtastung des Pixel die Mehrfachabtastung Pixeldaten für alle Abtastungen des Mehrfachabtastung Pixel oder für die zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren.
  17. Das System gemäß Anspruch 15, wobei die Lade/Speichereinheit ferner ausgebildet ist, um: die Mehrfachabtastung Pixeldaten für jede Abtastung des Mehrfachabtastung Pixel zu vergleichen; und zu ermitteln, ob die Daten für die eine Abtastung des Mehrfachabtastung Pixel Daten für alle Abtastungen der zwei oder mehr Abtastungen des Mehrfachabtastung Pixel repräsentieren, um den Kodierzustand zu ermitteln.
  18. Das System gemäß Anspruch 15, wobei die zwei oder mehr Abtastungen einer Anzahl an Abtastungen des Mehrfachabtastung Pixel entsprechen, die in einer einzelnen Cache-Zeile gespeichert sind.
  19. Das System gemäß Anspruch 15, wobei die Lade/Speichereinheit ferner ausgebildet ist, um: die verarbeiteten Daten für die eine Abtastung in einem Puffer zu speichern; und eine Kachel-Abdeckungsmaske so zu aktualisieren, dass diese angibt, dass die verarbeiteten Daten in dem Puffer für das Mehrfachabtastung Pixel gespeichert sind.
  20. Das System gemäß Anspruch 15, wobei die Mehrfachabtastung Daten aus dem Speicher in Reaktion auf einen Ladebefehl mit Mehrfachabtastung ausgelesen werden, und wobei die Lade/Speichereinheit ferner ausgebildet ist, den Kodierzustand und die eine Abtastung des Mehrfachabtastung Pixel zurückzugeben.
DE102013114279.6A 2013-03-15 2013-12-18 Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung Active DE102013114279B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/844,095 US9262797B2 (en) 2013-03-15 2013-03-15 Multi-sample surface processing using one sample
US13/844,095 2013-03-15

Publications (2)

Publication Number Publication Date
DE102013114279A1 true DE102013114279A1 (de) 2014-09-18
DE102013114279B4 DE102013114279B4 (de) 2022-10-20

Family

ID=51418669

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013114279.6A Active DE102013114279B4 (de) 2013-03-15 2013-12-18 Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung

Country Status (4)

Country Link
US (2) US9262797B2 (de)
CN (1) CN104050632B (de)
DE (1) DE102013114279B4 (de)
TW (1) TWI512672B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11838400B2 (en) * 2019-11-19 2023-12-05 International Business Machines Corporation Image encoding for blockchain

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262797B2 (en) 2013-03-15 2016-02-16 Nvidia Corporation Multi-sample surface processing using one sample
US9286659B2 (en) 2013-03-15 2016-03-15 Nvidia Corporation Multi-sample surface processing using sample subsets
US9965876B2 (en) * 2013-03-18 2018-05-08 Arm Limited Method and apparatus for graphics processing of a graphics fragment
US9665958B2 (en) 2013-08-26 2017-05-30 Nvidia Corporation System, method, and computer program product for redistributing a multi-sample processing workload between threads
GB2540382B (en) * 2015-07-15 2020-03-04 Advanced Risc Mach Ltd Data processing systems
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US10417739B2 (en) 2017-03-23 2019-09-17 Google Llc Phase aligned foveated rendering
US10395623B2 (en) 2017-04-01 2019-08-27 Intel Corporation Handling surface level coherency without reliance on fencing
US10152822B2 (en) 2017-04-01 2018-12-11 Intel Corporation Motion biased foveated renderer
US10157493B2 (en) 2017-04-01 2018-12-18 Intel Corporation Adaptive multisampling based on vertex attributes
US10453241B2 (en) 2017-04-01 2019-10-22 Intel Corporation Multi-resolution image plane rendering within an improved graphics processor microarchitecture
US10089230B1 (en) 2017-04-01 2018-10-02 Intel Corporation Resource-specific flushes and invalidations of cache and memory fabric structures
US10242494B2 (en) 2017-04-01 2019-03-26 Intel Corporation Conditional shader for graphics
US10223773B2 (en) 2017-04-01 2019-03-05 Intel Corporation On demand MSAA resolve during lens correction and/or other post-processing phases
US10591971B2 (en) 2017-04-01 2020-03-17 Intel Corporation Adaptive multi-resolution for graphics
US10572966B2 (en) 2017-04-01 2020-02-25 Intel Corporation Write out stage generated bounding volumes
US10572258B2 (en) 2017-04-01 2020-02-25 Intel Corporation Transitionary pre-emption for virtual reality related contexts
US10424097B2 (en) 2017-04-01 2019-09-24 Intel Corporation Predictive viewport renderer and foveated color compressor
US10628907B2 (en) 2017-04-01 2020-04-21 Intel Corporation Multi-resolution smoothing
US10489915B2 (en) 2017-04-01 2019-11-26 Intel Corporation Decouple multi-layer render fequency
US10706612B2 (en) 2017-04-01 2020-07-07 Intel Corporation Tile-based immediate mode rendering with early hierarchical-z
US10725929B2 (en) 2017-04-10 2020-07-28 Intel Corporation Graphics memory extended with nonvolatile memory
US10373365B2 (en) 2017-04-10 2019-08-06 Intel Corporation Topology shader technology
US10319064B2 (en) 2017-04-10 2019-06-11 Intel Corporation Graphics anti-aliasing resolve with stencil mask
US11030713B2 (en) 2017-04-10 2021-06-08 Intel Corporation Extended local memory including compressed on-chip vertex data
US10497340B2 (en) 2017-04-10 2019-12-03 Intel Corporation Beam scanning image processing within an improved graphics processor microarchitecture
US10204393B2 (en) 2017-04-10 2019-02-12 Intel Corporation Pre-pass surface analysis to achieve adaptive anti-aliasing modes
US10460415B2 (en) 2017-04-10 2019-10-29 Intel Corporation Contextual configuration adjuster for graphics
US10204394B2 (en) 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US10235794B2 (en) 2017-04-10 2019-03-19 Intel Corporation Multi-sample stereo renderer
US10109078B1 (en) 2017-04-10 2018-10-23 Intel Corporation Controlling coarse pixel size from a stencil buffer
US11106274B2 (en) 2017-04-10 2021-08-31 Intel Corporation Adjusting graphics rendering based on facial expression
US10235735B2 (en) 2017-04-10 2019-03-19 Intel Corporation Graphics processor with tiled compute kernels
US10152632B2 (en) 2017-04-10 2018-12-11 Intel Corporation Dynamic brightness and resolution control in virtual environments
US10719902B2 (en) 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
US10401954B2 (en) 2017-04-17 2019-09-03 Intel Corporation Sensory enhanced augmented reality and virtual reality device
US10430147B2 (en) 2017-04-17 2019-10-01 Intel Corporation Collaborative multi-user virtual reality
US10521876B2 (en) 2017-04-17 2019-12-31 Intel Corporation Deferred geometry rasterization technology
US10192351B2 (en) 2017-04-17 2019-01-29 Intel Corporation Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method
US10242486B2 (en) 2017-04-17 2019-03-26 Intel Corporation Augmented reality and virtual reality feedback enhancement system, apparatus and method
US10672175B2 (en) 2017-04-17 2020-06-02 Intel Corporation Order independent asynchronous compute and streaming for graphics
US10467796B2 (en) 2017-04-17 2019-11-05 Intel Corporation Graphics system with additional context
US10896657B2 (en) 2017-04-17 2021-01-19 Intel Corporation Graphics with adaptive temporal adjustments
US10452552B2 (en) 2017-04-17 2019-10-22 Intel Corporation Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading
US10846918B2 (en) 2017-04-17 2020-11-24 Intel Corporation Stereoscopic rendering with compression
US10347039B2 (en) 2017-04-17 2019-07-09 Intel Corporation Physically based shading via fixed-functionality shader libraries
US10290141B2 (en) 2017-04-17 2019-05-14 Intel Corporation Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices
US10242496B2 (en) 2017-04-24 2019-03-26 Intel Corporation Adaptive sub-patches system, apparatus and method
US10728492B2 (en) 2017-04-24 2020-07-28 Intel Corporation Synergistic temporal anti-aliasing and coarse pixel shading technology
US10643374B2 (en) 2017-04-24 2020-05-05 Intel Corporation Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer
US10251011B2 (en) 2017-04-24 2019-04-02 Intel Corporation Augmented reality virtual reality ray tracing sensory enhancement system, apparatus and method
US10402933B2 (en) 2017-04-24 2019-09-03 Intel Corporation Adaptive smart grid-client device computation distribution with grid guide optimization
US10347357B2 (en) 2017-04-24 2019-07-09 Intel Corporation Post-packaging environment recovery of graphics on-die memory
US10109039B1 (en) 2017-04-24 2018-10-23 Intel Corporation Display engine surface blending and adaptive texel to pixel ratio sample rate system, apparatus and method
US10553016B2 (en) * 2017-11-15 2020-02-04 Google Llc Phase aligned foveated rendering
WO2020056350A2 (en) * 2018-09-13 2020-03-19 Nvidia Corporation Multi-level image reconstruction using one or more neural networks

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6614449B1 (en) * 1998-08-28 2003-09-02 Ati International Srl Method and apparatus for video graphics antialiasing using a single sample frame buffer and associated sample memory
US6720975B1 (en) 2001-10-17 2004-04-13 Nvidia Corporation Super-sampling and multi-sampling system and method for antialiasing
US6825847B1 (en) 2001-11-30 2004-11-30 Nvidia Corporation System and method for real-time compression of pixel colors
US7242400B2 (en) * 2002-11-13 2007-07-10 Ati Technologies Ulc Compression and decompression of data using plane equations
US7162092B2 (en) 2003-12-11 2007-01-09 Infocus Corporation System and method for processing image data
US7126615B2 (en) 2004-11-12 2006-10-24 Via Technologies, Inc. Color compression using multiple planes in a multi-sample anti-aliasing scheme
US8212838B2 (en) 2005-05-27 2012-07-03 Ati Technologies, Inc. Antialiasing system and method
US7612783B2 (en) 2006-05-08 2009-11-03 Ati Technologies Inc. Advanced anti-aliasing with multiple graphics processing units
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US7911480B2 (en) * 2007-10-08 2011-03-22 Via Technologies, Inc. Compression of multiple-sample-anti-aliasing tile data in a graphics pipeline
US8086806B2 (en) 2008-03-24 2011-12-27 Nvidia Corporation Systems and methods for coalescing memory accesses of parallel threads
US8605086B2 (en) 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
GB0922126D0 (en) 2009-12-17 2010-02-03 Advanced Risc Mach Ltd Graphics processing systems
US20110285718A1 (en) * 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
US20120013629A1 (en) * 2010-07-19 2012-01-19 Advanced Micro Devices, Inc. Reading Compressed Anti-Aliased Images
US9286659B2 (en) 2013-03-15 2016-03-15 Nvidia Corporation Multi-sample surface processing using sample subsets
US9262797B2 (en) 2013-03-15 2016-02-16 Nvidia Corporation Multi-sample surface processing using one sample
US9665958B2 (en) 2013-08-26 2017-05-30 Nvidia Corporation System, method, and computer program product for redistributing a multi-sample processing workload between threads

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE 754-2008-Standard

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11838400B2 (en) * 2019-11-19 2023-12-05 International Business Machines Corporation Image encoding for blockchain

Also Published As

Publication number Publication date
US20140267376A1 (en) 2014-09-18
US9436971B2 (en) 2016-09-06
US9262797B2 (en) 2016-02-16
TW201435793A (zh) 2014-09-16
CN104050632A (zh) 2014-09-17
US20140267315A1 (en) 2014-09-18
DE102013114279B4 (de) 2022-10-20
CN104050632B (zh) 2017-10-17
TWI512672B (zh) 2015-12-11

Similar Documents

Publication Publication Date Title
DE102013114279B4 (de) Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung
DE102018132468A1 (de) Multi-gpu-frame-rendern
DE102015113797B4 (de) Relative Kodierung für eine blockbasierte Begrenzungsvolumenhierarchie
DE102012213631B4 (de) Zwischenspeichern von Kontextdatenstrukturen in einer Vektorregisterdatei zum Beibehalten von Zustandsdaten in einer Multithread-Bildverarbeitungs-Pipeline
DE102018114286A1 (de) Durchführen einer Traversierungs-Stack-Komprimierung
DE102013114090B4 (de) Konservative Rasterung von Primitiven unter Benutzung eines Fehler-Terms
DE102013022257A1 (de) Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten
DE102019103340A1 (de) Simultanes rechen- und grafik-scheduling
DE102020115026A1 (de) Systeme und Verfahren zur Tonabbildung von Bildern mit hohem Dynamikumfang für auf tiefem Lernen basierende Verarbeitung von hoher Qualität
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE102013224160A1 (de) System, Verfahren und Computer-Programm-Produkt zum Optimieren des Managements von Thread-Stapel-Speicher
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102013218594A1 (de) System, Verfahren und Computerprogrammprodukt zur parallelen Rekonstruktion eines gesampelten Suffixarrays
DE102013221024A1 (de) System, Verfahren und Computer-Programm-Produkt zum Eingeben von modifizierten Abdeckungs-Daten in einen Pixel-Schattierer
DE102018120859A1 (de) Inline-Dateninspektion zur Arbeitslastvereinfachung
DE102013113721A1 (de) Ein System, ein Verfahren und ein Computerprogrammprodukt, die eine Bildverarbeitungs-Pipeline für Bilder mit hoch dynamischem Bereich realisieren
DE102013020810A1 (de) Effiziente Super-Abtastung mit Schattierungs-Strängen pro Pixel
DE102019135639A1 (de) Auf Echtzeit-Strahlverfolgung (RTRT) basierende adaptive Mehrfrequenzschattierung (AMFS)
DE102013020807A1 (de) Handhabung von nachgeordneten Z-Abdeckungsdaten in Rasteroperationen
DE102020107080A1 (de) Grafiksysteme und Verfahren zum Beschleunigen von Synchronisation mittels feinkörniger Abhängigkeitsprüfung und Planungsoptimierungen basierend auf verfügbarem gemeinsam genutztem Speicherplatz
DE112017003932T5 (de) Mechanismus zum Beschleunigen von Grafikarbeitslasten in einer Mehrkern-Datenverarbeitungsarchitektur
DE102013222685A1 (de) System, Verfahren und Computer-Programm-Produkt zum Abtasten einer hierarchischen Tiefe-Karte
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
DE102019101871A1 (de) Verfahren und Vorrichtung zum Gewinnen von Abtastpositionen von Textuieroperationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06T0001000000

Ipc: G06T0001600000

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final