DE102013021709A1 - STENCIL THEN COVER PATH PICTURE SHARING WITH COMMON EDGES - Google Patents

STENCIL THEN COVER PATH PICTURE SHARING WITH COMMON EDGES Download PDF

Info

Publication number
DE102013021709A1
DE102013021709A1 DE201310021709 DE102013021709A DE102013021709A1 DE 102013021709 A1 DE102013021709 A1 DE 102013021709A1 DE 201310021709 DE201310021709 DE 201310021709 DE 102013021709 A DE102013021709 A DE 102013021709A DE 102013021709 A1 DE102013021709 A1 DE 102013021709A1
Authority
DE
Germany
Prior art keywords
edge
scan
coverage
unit
path
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.)
Pending
Application number
DE201310021709
Other languages
German (de)
Inventor
Mark J. Kilgard
Jeffrey A. Bolz
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
Priority claimed from US14/028,400 external-priority patent/US9418437B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013021709A1 publication Critical patent/DE102013021709A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

Eine Ausführungsform der vorliegenden Erfindung umfasst Techniken zur Rastereinteilung von Grundelementen, die Kanten enthalten, die für Pfade gemeinsam sind. Für jede Kante wendet eine Rastereinheit eine Abtastregel aus mehreren Abtastregeln aus und wendet diese an. Wenn die Kante gemeinsam ist, dann verursacht die ausgewählte Abtastregel, dass die Gruppe an Abdeckungsabtastungen, die mit einer einzelnen Farbabtastung verknüpft sind, als entweder vollständig innerhalb oder vollständig außerhalb der Kante liegend erachtet wird. Folglich können Verschmelzungsbildfehler reduziert werden, die hervorgerufen werden, wenn die Anzahl an Abdeckungsabtastungen pro Pixel die Anzahl an Farbabtastungen pro Pixel übersteigt. In konventionellen Techniken beinhaltet die Reduzierung derartiger Verschmelzungsbildfehler typischerweise die Erhöhung der Anzahl an Farbabtastungen pro Pixel derart, dass sie gleich der Anzahl an Abdeckungsabtastungen pro Pixel ist. Vorteilhafterweise ermöglichen die offenbarten Techniken eine Bilderzeugung unter Anwendung von Algorithmen, die das Verhältnis von Farbabtastungen zu Abdeckungsabtastungen reduzieren, wodurch der Speicherverbrauch und die Speicherbandbreite verringert werden, ohne dass Verschmelzungsbildfehler, die mit gemeinsamen Kanten einhergehen, hervorgerufen werden.One embodiment of the present invention includes techniques for rasterizing primitives that contain edges that are common to paths. For each edge, a raster unit applies a scanning rule made up of several scanning rules. If the edge is common, then the selected sampling rule causes the group of coverage samples associated with a single color sample to be deemed to be either completely inside or completely outside the edge. As a result, merge artifacts caused when the number of coverage samples per pixel exceeds the number of color samples per pixel can be reduced. In conventional techniques, reducing such blending artifacts typically involves increasing the number of color samples per pixel to be equal to the number of coverage samples per pixel. Advantageously, the disclosed techniques enable imaging using algorithms that reduce the ratio of color samples to coverage samples, thereby reducing memory consumption and memory bandwidth without introducing merge artifacts associated with common edges.

Description

QUERVERWEIS AUF VERWANDTE ANMELDUNGENCROSS-REFERENCE TO RELATED APPLICATIONS

Diese Anmeldung beansprucht die Priorität der vorläufigen Patentanmeldung der vereinigten Staaten mit der Seriennummer 61/799948, die am 15. März 2013 eingereicht wurde. Der Gegenstand dieser verwandten Anmeldung ist hiermit durch Bezugnahme mit eingeschlossen.This application claims priority to United States provisional patent application Ser. No. 61 / 799,948, filed Mar. 15, 2013. The subject matter of this related application is hereby incorporated by reference.

HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION

Gebiet der ErfindungField of the invention

Ausführungsformen der vorliegenden Erfindung betreffen allgemein die grafische Verarbeitung und insbesondere eine Schablonieren-dann-Abdecken-Pfadbilderzeugung mit gemeinsamen Kanten.Embodiments of the present invention generally relate to graphical processing, and more particularly to common-edge stencil-then-masking path modeling.

Beschreibung des Stands der TechnikDescription of the Related Art

Die Pfadbilderzeugung ist eine Art einer auflösungsunabhängigen 2-dimensionalen Bilderzeugung, die häufig als „Vektorgrafik” bezeichnet wird, die die Grundlage einer Reihe wichtiger Bilderzeugungsstandards ist. Zu diesen Standards gehören PostScript, Java 2D, Apples Quartz 2D, OpenVG, PDF, TrueType-Zeichensätze, OpenType-Zeichensätze, PostScript-Zeichensätze, HTML 5 Canvas, skalierbare Vektorgrafiken (SVG), Microsoft Silverlight und Adobe Flash für interaktive Netzerfahrungen, Microsoft XML Spezifikation (XPS), Zeichnungen im Office-Dateiformat mit PowerPoint, Adobe-Illustrator-Darstellungen und mehr.Path imaging is one type of resolution-independent 2-dimensional imaging, often referred to as "vector graphics," which is the basis of a number of important imaging standards. These standards include PostScript, Java 2D, Apple's Quartz 2D, OpenVG, PDF, TrueType fonts, OpenType fonts, PostScript fonts, HTML 5 Canvas, Scalable Vector Graphics (SVG), Microsoft Silverlight and Adobe Flash for interactive web experiences, Microsoft XML Specification (XPS), Drawings in Office File Format with PowerPoint, Adobe Illustrator Appearances and More.

Bei der Pfadbilderzeugung spezifiziert typischerweise eine Softwareanwendung eine Szene als eine Sequenz aus auflösungsunabhängigen Umrissen, die als Pfade bekannt sind, die mit konstanten Farben, linearen oder radialen Gradienten oder Bildern bemalt werden können. Viele grafische Verarbeitungseinheiten (GPU) unterstützen die Bilderzeugung derartiger Pfade durch einen Bilderzeugungsprozess mit zwei Durchläufen, der als „Schablonieren-dann-Abdecken” bekannt ist. Zuerst erzeugt in dem Pfad-Schablonierungsdurchlauf die CPU einen Schablonenpuffer, der angibt, welche Abtastungen (d. h. Positionen in jedem Pixel) von dem Pfad abgedeckt sind. Zweitens, in einem Pfad-Abdeckungsdurchlauf erzeugt die GPU die Abdeckungsgeometrie für den Pfad und schattiert die Abdeckungs-Geometrie, wobei die Schablonenprüfung aktiviert ist. Typischerweise implementiert die GPU die Abdeckungsgeometrie mit einer gewissen Art konservativer abgrenzender Geometrie, etwa einen Begrenzungsfeld (d. h. zwei Dreiecken), einer konvexen Hülle oder einem ähnlichen Gebilde. Da die Schablonenprüfung während des Pfad-Abdeckungsdurchlaufes aktiviert ist, verwirft die GPU jegliche Fragmente, die nicht von dem Pfad abgedeckt sind und schreibt die verbleibenden Fragmente als verarbeitete Grafikdaten in den Farbpuffer.In path building, typically, a software application specifies a scene as a sequence of resolution-independent outlines, known as paths, that can be painted with constant colors, linear or radial gradients, or images. Many graphical processing units (GPUs) support the imaging of such paths through a two-pass imaging process known as "stencil-then-mask". First, in the path template pass, the CPU generates a template buffer indicating which samples (i.e., positions in each pixel) are covered by the path. Second, in a path coverage pass, the GPU creates the coverage geometry for the path and shadows the coverage geometry with the template check enabled. Typically, the GPU implements the coverage geometry with some sort of conservative delimiting geometry, such as a bounding box (i.e., two triangles), a convex hull, or the like. Since the template check is enabled during the path coverage pass, the GPU discards any fragments not covered by the path and writes the remaining fragments as processed graphics data into the color buffer.

In einigen Vorgehensweisen der Schablonieren-dann-Abdecken-Pfadbilderzeugung unterhält die GPU N Abdeckungsabtastungen pro Pixel und M Farbabtastungen pro Pixel, wobei N größer als M ist. Im Betrieb ermittelt die GPU die Abdeckung des Pfades an N Abdeckungsabtastungen pro Pixel. Während des Pfadabdeckungsdurchlaufes, bevor die GPU die Mischung und die Farb-Schreiboperationen ausführt, reduziert die GPU dann die Anzahl an Abdeckungsabtastungen auf die Anzahl an Farbabtastungen. Zu beachten ist, dass während dieser Reduzierung die GPU eine Gruppe aus N/M Abdeckungsabtastungen, die mit einer einzelnen Farbabtastung verknüpft sind, auswählt und einen Undurchsichtigkeitswert für die Farbabtastungen auf der Grundlage des Anteils der N/M Abdeckungsabtastungen erzeugt, die abgedeckt sind. Eine Beschränkung dieser Bilderzeugungslösung besteht darin, dass die Reduzierung der Gruppen aus mehreren Abdeckungsabtastungen auf einzelne Farbabtastungen Verschmelzungsbildfehler an Kanten bzw. Rändern, die für unterschiedliche Pfade gemeinsam sind, einführen kann. Insbesondere der Vorgang der Reduktion verschmilzt das Bool'sche Konzept der Abdeckung mit einem nicht ganzzahligen Wert der Undurchlässigkeit.In some of the template-then-masking path generation procedures, the GPU maintains N coverage scans per pixel and M color scans per pixel, where N is greater than M. In operation, the GPU determines the coverage of the path at N coverage scans per pixel. During the path coverage pass, before the GPU performs the blend and the color-write operations, the GPU then reduces the number of coverage scans to the number of color scans. Note that during this reduction, the GPU selects a set of N / M coverage samples associated with a single color scan and produces an opacity value for the color scans based on the fraction of N / M coverage scans that are covered. A limitation of this imaging solution is that reducing the groups of multiple coverage scans to single color scans may introduce merged image errors on edges that are common to different paths. In particular, the process of reduction merges the Boolean concept of coverage with a non-integer value of impermeability.

Es sei beispielsweise angenommen, dass 4 Abdeckungsabtastungen, die jeweils einer Farbabtastung entsprechen (N = 4 und M = 1) vorhanden sind, dass die Hintergrundfarbe blau ist und dass die GPU ausgebildet ist, Yin-Yang-Symbol – den Yin-Bereich zuerst, zu erzeugen. Es sei ferner angenommen, dass der Yin-Bereich des Symbols gelb ist, der Yang-Bereich des Symbols grün ist und dass die Yin- und Yang-Bereiche eine Kante an der Grenze zwischen den beiden Bereichen gemeinsam haben. Es sei schließlich angenommen, dass zwei der Abdeckungsabtastungen, die mit einer speziellen Farbabtastung verknüpft sind, durch den gelben Yin-Bereich des Symbols abgedeckt sind, und dass zwei der Abdeckungsabtastungen, die mit der speziellen Farbabtastung verknüpft sind, von dem grünen Yang-Bereich des Symbols abgedeckt sind. Bei der Bilderzeugung des Yin-Bereichs des Symbols würde die GPU eine bläuliche Zwischenfarbe der speziellen Farbabtastung zu weisen – eine Mischung aus 50% der gelben Farbe, die mit dem Yin-Bereich des Symbols verknüpft ist, und 50% der blauen Farbe, die mit dem Hintergrund verknüpft ist. Bei der Bilderzeugung des Yang-Bereichs des Symbols würde nachfolgend die GPU eine andere bläuliche Farbe der speziellen Farbabtastung zuordnen – eine Mischung aus 50% der grünen Farbe, die zu dem Yang-Bereich des Symbols gehört, und 50% der bläuliche Zwischenfarbe. Eine derartige Verarmung der Hintergrundfarbe würde die Qualität des angezeigten Bildes beeinträchtigen. Insbesondere werde ein Teil der blauen Hintergrundfarbe an der Grenze zwischen dem Yin-Bereich und dem Yang-Bereich des Yin-Yang-Symbols sichtbar (als ob ein Spalt zwischen dem Yin-Bereich und dem Yang-Bereich des Yin-Yang-Symbols vorhanden wäre.)Assume, for example, that there are 4 coverage scans, each corresponding to a color scan (N = 4 and M = 1), that the background color is blue, and that the GPU is formed, Yin-Yang symbol - the Yin region first, to create. It is further assumed that the yin area of the symbol is yellow, the yang area of the symbol is green, and that the yin and yang areas have an edge in common at the boundary between the two areas. Finally, assume that two of the coverage samples associated with a particular color scan are covered by the yellow yin region of the symbol, and that two of the coverage samples associated with the particular color scan are from the green yang area of the symbol Symbols are covered. When imaging the yin area of the symbol, the GPU would assign a bluish intermediate color to the special color sample - a mixture of 50% of the yellow color associated with the yin region of the symbol and 50% of the blue color associated with linked to the background. When imaging the Yang portion of the symbol, the GPU would subsequently assign a different bluish color to the special color sample - a blend of 50% of the green color belonging to the yang portion of the symbol and 50% of the intermediate bluish color. Such impoverishment of Background color would affect the quality of the displayed image. Specifically, part of the blue background color becomes visible at the boundary between the yin region and the yang region of the yin-yang symbol (as if there were a gap between the yin region and the yang region of the yin-yang symbol .)

In einem Ansatz zur Reduzierung der Verschmelzungsbildfehler, die mit gemeinsamen Kanten zwischen unterschiedlichen Pfaden verknüpft sind, wird die Anzahl an Farbabtastungen erhöht, so dass sie mit der Anzahl an Abdeckungsabtastungen übereinstimmt. In derartigen Implementierungen wird die Abdeckung separat für jede Farbabtastung als ein Bool'scher Wert beibehalten und nicht mit Undurchsichtigkeit verschmolzen. Bei der Bilderzeugung von Szenen, die Kanten enthalten, die gemeinsam zwischen unterschiedlichen Pfaden auftreten, werden folglich keine Verschmelzungsbildfehler eingeführt, die auf diese gemeinsamen Kanten zurückgeführt werden können. Jedoch erhöht die Vergrößerung der Anzahl an Farbabtastungen sowohl den Speicherverbrauch als auch die Speicherbandbreite, die von dem Farbpuffer verwendet werden. Da sowohl die lokale Speicherkapazität von GPUs als auch die zugehörige Speicherbandbreite begrenzt sind, ist eine Zunahme sowohl des Speicherverbrauchs als auch der Speicherbandbreite generell unerwünscht.In one approach to reducing blurring artifacts associated with common edges between different paths, the number of color scans is increased to match the number of blanking scans. In such implementations, the coverage is maintained separately for each color scan as a Boolean value and is not merged with opacity. Consequently, when imaging scenes containing edges that coexist between different paths, no blur image errors are introduced that can be traced back to these common edges. However, increasing the number of color samples increases both the memory consumption and the memory bandwidth used by the color buffer. Since both the local storage capacity of GPUs and the associated memory bandwidth are limited, an increase in both memory usage and memory bandwidth is generally undesirable.

Was daher auf diesem Gebiet der Technik benötigt wird, ist eine effektivere Vorgehensweise, um Kanten zu erzeugen, die für unterschiedliche Pfade gemeinsam sind.Therefore, what is needed in the art is a more effective way to create edges that are common to different paths.

ÜBERBLICK ÜBER ERFINDUNGOVERVIEW OF INVENTION

Eine Ausführungsform der vorliegenden Erfindung gibt ein Verfahren zur Rastereinteilung grafischer Grundelemente an. Das Verfahren umfasst: Ermitteln eines Rasterzustands, der mit einer ersten Kante eines grafischen Grundelements verknüpft ist, Auswählen einer ersten Abtastregel aus mehreren Abtastregeln auf der Grundlage des Rasterzustands, Ermitteln, ob eine erste Abdeckungsabtastung als innerhalb der ersten Kante liegend erachtet werden muss, auf der Grundlage der ersten Abtastregel, und Ermitteln, ob die erste Abdeckungsabtastung als von dem grafischen Grundelement abgedeckt zu betrachten ist auf der Grundlage darauf, ob die erste Abdeckungsabtastung als innerhalb der ersten Kante liegend betrachtet wird.An embodiment of the present invention provides a method for rasterizing graphic primitives. The method comprises: determining a halftone state associated with a first edge of a primitive, selecting a first sweep rule from a plurality of sweep rules based on halftone state, determining whether a first blanket sweep must be considered to be within the first edge; Based on the first scan rule, and determining whether to consider the first coverage scan as being covered by the graphics primitive based on whether the first coverage scan is considered to be within the first edge.

Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass eine Verarbeitungseinheit speichereffiziente Pfadbilderzeugungsoperationen ausführen kann, ohne dass Verschmelzungsbildfehler eingeführt werden, die mit Kanten verknüpft sind, die zwischen unterschiedlichen Pfaden gemeinsam sind. Da die Rastereinheit jede Gruppe an Abdeckungsabtastungen, die mit einer speziellen Farbabtastung verknüpft sind, entweder als vollständig innerhalb oder als vollständig außerhalb jeder gemeinsamen Kante betrachtet, kann die Anzahl an Abdeckungsabtastungen pro Pixel die Anzahl an Farbabtastungen überschreiten, ohne dass eine Verarmung des Hintergrunds in dem dargestellten Bild hervorgerufen wird. Folglich bewirkt die Verarbeitungseinheit nicht den erhöhten Speicherverbrauch und die größere Bandbreite, die mit bekannten Techniken verknüpft sind, in denen die Anzahl an Farbabtastungen so erhöht wird, dass sie mit der Anzahl an Abdeckungsabtastungen übereinstimmt.An advantage of the disclosed approach is that a processing unit can perform memory efficient path imaging operations without introducing merging image errors associated with edges that are common between different paths. Since the rasterizer unit considers each group of coverage samples associated with a particular color scan either as completely within or as completely outside each common edge, the number of coverage scans per pixel may exceed the number of color scans without any depletion of the background in the image caused image is produced. Consequently, the processing unit does not effect the increased memory overhead and bandwidth associated with known techniques in which the number of color samples is increased to match the number of coverage samples.

KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung detailliert verstanden werden können, anzugeben, wird eine speziellere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, mit Bezug zu Ausführungsformen angegeben, von denen einige in den angefügten Zeichnungen dargestellt sind. Es sollte jedoch beachtet werden, dass die angefügten Zeichnungen nur typische Ausführungsformen dieser Erfindung darstellen und daher nicht als Einschränkung ihres Schutzbereichs zu betrachten sind, da die Erfindung andere gleichermaßen wirksame Ausführungsformen zulässt.In order to indicate the manner in which the above-mentioned features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, will be provided with reference to embodiments, some of which are illustrated in the attached drawings , It should be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.

1 ist eine Blockansicht, die ein Computersystem darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren; 1 Figure 13 is a block diagram illustrating a computer system configured to implement one or more aspects of the present invention;

2 ist eine Blockansicht einer Parallelverarbeitungseinheit, die in dem Parallelverarbeitungssubsystem aus 1 enthalten ist, gemäß einer Ausführungsform der vorliegenden Erfindung; 2 FIG. 12 is a block diagram of a parallel processing unit that operates in the parallel processing subsystem. FIG 1 is included, according to an embodiment of the present invention;

3 ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline, die in der Parallelverarbeitungseinheit aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung realisiert werden kann; 3 FIG. 12 is a conceptual view of a graphics processing pipeline that is in the parallel processing unit. FIG 2 according to an embodiment of the present invention can be realized;

4 ist eine Konzeptansicht, die einen Pfad-Schablonierungsdurchlauf und einem Pfad-Abdeckungsdurchlauf zeigt, in den die Parallelverarbeitungseinheit aus 2 zur Realisierung gemäß einer Ausführungsform der vorliegenden Erfindung konfiguriert werden kann; 4 Figure 12 is a conceptual view showing a path template pass and a path cover pass into which the parallel processing unit is made 2 can be configured for implementation according to an embodiment of the present invention;

5 ist eine Konzeptansicht, die einen Dreiecksfächer zeigt, für den die Grafikverarbeitungs-Pipeline aus 3 so konfiguriert werden kann, um diesen gemäß einer Ausführungsform der vorliegenden Erfindung als Bild zu erzeugen; 5 is a concept view that shows a triangle fan for the graphics processing pipeline 3 can be configured to generate it as an image according to an embodiment of the present invention;

6 ist eine Konzeptansicht, die eine Abtastgruppe und Abtastkantenregeln zeigt, zu deren Implementierung die Rastereinheit aus 2 konfiguriert werden kann gemäß einer Ausführungsform der vorliegenden Erfindung; 6 FIG. 11 is a conceptual view showing a scanning group and scanning edge rules to which Implementation of the grid unit 2 can be configured according to an embodiment of the present invention;

7 ist eine Konzeptansicht, die einen Indexpuffer gemäß einer Ausführungsform der vorliegenden Erfindung zeigt; 7 Fig. 10 is a conceptual view showing an index buffer according to an embodiment of the present invention;

8A8B geben ein Flussdiagramm von Verfahrensschritten zur Rastereinteilung von Dreiecken gemäß einer Ausführungsform der vorliegenden Erfindung an; und 8A - 8B give a flowchart of method steps for rasterizing triangles according to an embodiment of the present invention; and

9 ist ein Flussdiagramm von Verfahrensschritten zur Bilderzeugung von Pfaden gemäß einer Ausführungsform der vorliegenden Erfindung. 9 FIG. 10 is a flowchart of process steps for image formation of paths according to an embodiment of the present invention. FIG.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

In der folgenden Beschreibung sind zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Der Fachmann erkennt jedoch, dass die vorliegende Erfindung auch ohne eines oder mehrerer dieser speziellen Details in die Praxis umgesetzt werden kann.In the following description, numerous specific details are set forth in order to provide a more thorough understanding of the present invention. However, those skilled in the art will recognize that the present invention may be practiced without one or more of these specific details.

SystemüberblickSystem Overview

1 ist eine Blockansicht, die ein Computersystem 100 darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Wie gezeigt, umfasst das Computersystem 100, ohne Einschränkung, eine zentrale Recheneinheit (CPU) 102 und einen Systemspeicher 104, der mit einem Parallelverarbeitungssubsystem 112 über eine Speicherbrücke 105 und einen Kommunikationspfad 113 verbunden ist. Die Speicherbrücke 105 ist ferner mit einer I/O-(Eingabe/Ausgabe-)Brücke 107 über einen Kommunikationspfad 106 verbunden, und die I/O-Brücke 107 ist wiederum mit einem Schalter bzw. eine Schalteinrichtung 116 verbunden. 1 is a block diagram showing a computer system 100 which is configured to implement one or more aspects of the present invention. As shown, the computer system includes 100 without restriction, a central processing unit (CPU) 102 and a system memory 104 that with a parallel processing subsystem 112 over a memory bridge 105 and a communication path 113 connected is. The memory bridge 105 is also provided with an I / O (input / output) bridge 107 via a communication path 106 connected, and the I / O bridge 107 is in turn with a switch or a switching device 116 connected.

Im Betrieb ist die I/O-Brücke 107 ausgebildet, eine Anwendereingabeinformation aus Eingabegeräten 108 (beispielsweise eine Tastatur, eine Maus, eine Video/Bild-Aufnahmeeinrichtung, usw.) zu empfangen und die Eingabeinformation an die CPU 102 zur Verarbeitung über den Kommunikationspfad 106 und die Speicherbrücke 105 weiterzuleiten. Der Schalter 116 ist ausgebildet, Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten des Computersystems 100, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121, bereitzustellen.In operation is the I / O bridge 107 formed, a user input information from input devices 108 (for example, a keyboard, a mouse, a video / image recorder, etc.) and input information to the CPU 102 for processing via the communication path 106 and the memory bridge 105 forward. The desk 116 is formed connections between the I / O bridge 107 and other components of the computer system 100 such as a network adapter 118 and various additional cards 120 and 121 to provide.

Wie ferner gezeigt ist, ist die I/O-Brücke 107 mit einer Systemdiskette 114 verbunden, die ausgebildet ist, Inhalt und Anwendungen und Daten zur Verwendung durch die CPU 102 und das Parallelverarbeitungssubsystem 112 zu speichern. Generell stellt die Systemdiskette 114 nicht-flüchtigen Speicher für Anwendungen und Daten bereit und kann stationäre oder entfernbare Festplattenlaufwerke, Flash-Speichereinrichtungen und CD-ROM (Kompaktdisketten-Nur-Lese-Speicher), DVD-ROM (digitale Vielseitigkeitsdisketten-ROM), Blu-ray, HD-DVD (hochauflösende DVD) oder andere magnetische, optische oder Halbleiterspeichereinrichtungen umfassen. Obwohl dies nicht explizit gezeigt ist, können ferner andere Komponenten, etwa ein universeller serieller Bus oder andere Portverbindungen, Kompaktdisketten Laufwerke, Laufwerke für digitale Vielseitigkeitsdisketten, Filmaufzeichnungsgeräte und dergleichen ebenfalls mit der I/O-Brücke 107 verbunden sein.As further shown, the I / O bridge is 107 with a system diskette 114 which is adapted to content and applications and data for use by the CPU 102 and the parallel processing subsystem 112 save. Generally, the system diskette 114 non-volatile memory for applications and data, and may include stationary or removable hard disk drives, flash memory devices and CD-ROM (compact disk read only memory), DVD-ROM (digital versatile disk ROM), Blu-ray, HD-DVD (high definition DVD) or other magnetic, optical or semiconductor memory devices. Although not explicitly shown, other components such as a universal serial bus or other port connections, compact disk drives, digital versatile floppy disk drives, film recording devices, and the like may also be used with the I / O bridge 107 be connected.

In diversen Ausführungsformen kann die Speicherbrücke 105 ein Nordbrücken-Chip sein, und die I/O-Brücke 107 kann ein Südbrücken-Chip sein. Ferner können die Kommunikationspfade 106 und 113 sowie andere Kommunikationspfade in dem Computersystem 100 unter Anwendung beliebiger technisch geeigneter Protokolle eingerichtet werden, wozu gehören, ohne Einschränkung, AGP (beschleunigter Graphikport), HyperTransport oder ein anderes Bus- oder Punkt-Zu-Punkt-Kommunikationsprotokoll, das im Stand der Technik bekannt ist.In various embodiments, the memory bridge 105 be a northbridge chip, and the I / O bridge 107 may be a southbridge chip. Furthermore, the communication paths 106 and 113 as well as other communication paths in the computer system 100 may be established using any of the technically-appropriate protocols, including, without limitation, AGP (Accelerated Graphics Port), HyperTransport, or any other bus or point-to-point communication protocol known in the art.

In einigen Ausführungsformen umfasst das Parallelverarbeitungssubsystem 112 ein grafisches Subsystem, das Pixel an ein Anzeigegerät 110 liefert, das eine konventionelle Kathodenstrahlröhre, eine Flüssigkristallanzeige, eine Anzeige mit lichtemittierenden Dioden oder dergleichen sein kann. In derartigen Ausführungsformen enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafik- und Videoverarbeitung optimiert ist, wozu beispielsweise eine Videoausgabeschaltung gehört. Wie nachfolgend detaillierter mit Bezug zu 2 beschrieben ist, kann eine derartige Schaltung über eine oder mehrere Parallelverarbeitungseinheiten (PPUs) hinweg vorgesehen sein, die in dem Parallelverarbeitungssubsystem 112 enthalten sind. In anderen Ausführungsformen enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die eine Verarbeitung für Allgemeinzwecke und/oder Rechenverarbeitung optimiert ist. Wiederum kann eine derartige Schaltung über eine oder mehrere PPUs hinweg integriert sein, die in dem Parallelverarbeitungssubsystem 112 enthalten sind und die ausgebildet sind, derartige Operationen für Allgemeinzwecke und/oder Berechnungen auszuführen. In noch anderen Ausführungsformen können die eine oder die mehreren PPUs, die in dem Parallelverarbeitungssubsystem 112 enthalten sind, ausgebildet sein, eine grafische Verarbeitung, eine Verarbeitung für Allgemeinzwecke und Rechenverarbeitungsoperationen auszuführen. Der Systemspeicher 104 enthält mindestens einen Gerätetreiber 103, der ausgebildet ist, die Verarbeitungsoperationen der einen oder mehreren PPUs in dem Parallelverarbeitungssubsystem 112 zu verwalten. Der Systemspeicher 104 enthält ferner eine Softwareanwendung 125, die in der CPU 102 ausgeführt wird und Befehle ausgeben kann, die den Betrieb der GPUs steuern.In some embodiments, the parallel processing subsystem comprises 112 a graphical subsystem that sends pixels to a display device 110 which may be a conventional cathode ray tube, a liquid crystal display, a light emitting diode display, or the like. In such embodiments, the parallel processing subsystem includes 112 a circuit optimized for graphics and video processing, including, for example, a video output circuit. As explained in more detail below with reference to 2 Such a circuit may be provided across one or more parallel processing units (PPUs) included in the parallel processing subsystem 112 are included. In other embodiments, the parallel processing subsystem includes 112 a circuit optimized for general purpose and / or computational processing. Again, such a circuit may be integrated over one or more PPUs included in the parallel processing subsystem 112 are included and are adapted to perform such operations for general purposes and / or calculations. In still other embodiments, the one or more PPUs included in the parallel processing subsystem 112 may be configured to perform graphic processing, general purpose processing, and arithmetic processing operations. The system memory 104 Contains at least one device driver 103 who is trained, the Processing operations of the one or more PPUs in the parallel processing subsystem 112 manage. The system memory 104 also includes a software application 125 that in the CPU 102 is executed and can issue commands that control the operation of the GPUs.

In diversen Ausführungsformen kann das Parallelverarbeitungssubsystem 112 in einem oder mehreren der anderen Elemente aus 1 integriert sein, um ein einzelnes System zu bilden. Beispielsweise kann das Parallelverarbeitungssubsystem 112 mit der CPU 102 und anderer Verbindungsschaltung auf einem einzelnen Chip integriert sein, um ein System-auf-einem-Chip (SoC) zu bilden.In various embodiments, the parallel processing subsystem 112 in one or more of the other elements 1 be integrated to form a single system. For example, the parallel processing subsystem 112 with the CPU 102 and other interconnect circuitry may be integrated on a single chip to form a system-on-a-chip (SoC).

Es ist zu beachten, dass das hierin gezeigte System nur anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und der Anordnung von Brücken, die Anzahl von CPUs 102 und die Anzahl an Parallelverarbeitungssubsystemen 112 können nach Bedarf modifiziert werden. Beispielsweise könnte in einigen Ausführungsformen der Systemspeicher 104 mit der CPU 102 direkt anstatt über die Speicherbrücke 105 verbunden sein, und andere Einrichtungen könnten mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102 kommunizieren. In anderen alternativen Topologien kann das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt mit der Speicherbrücke 105 verbunden sein. In noch anderen Ausführungsformen können die I/O-Brücke 107 und die Speicherbrücke 105 in einem einzelnen Chip integriert sein, anstatt dass sie als einzelne oder mehrere diskrete Bauelemente vorhanden sind. Schließlich können in gewissen Ausführungsformen eine oder mehrere der in 1 gezeigten Komponenten nicht vorhanden sein. Beispielsweise könnte der Schalter 116 weggelassen werden, und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 könnten direkt mit der I/O-Brücke 107 verbunden sein.It should be noted that the system shown herein is illustrative only and that variations and modifications are possible. The connection topology, including the number and arrangement of bridges, the number of CPUs 102 and the number of parallel processing subsystems 112 can be modified as needed. For example, in some embodiments, the system memory could 104 with the CPU 102 directly instead of the memory bridge 105 and other devices could be connected to the system memory 104 over the memory bridge 105 and the CPU 102 communicate. In other alternative topologies, the parallel processing subsystem 112 with the I / O bridge 107 or directly with the CPU 102 instead of the memory bridge 105 be connected. In still other embodiments, the I / O bridge 107 and the memory bridge 105 be integrated into a single chip rather than being present as single or multiple discrete components. Finally, in certain embodiments, one or more of the in 1 shown components are not present. For example, the switch could 116 be omitted, and the network adapter 118 and the additional cards 120 . 121 could be directly with the I / O bridge 107 be connected.

2 ist eine Blockansicht einer Parallelverarbeitungseinheit (PPU) 202, die in dem Parallelverarbeitungssubsystem 112 aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist. Obwohl 2 eine einzelne PPU 202 zeigt, kann, wie zuvor angegeben ist, das Parallelverarbeitungssubsystem 112 eine beliebige Anzahl an PPUs 202 enthalten. Wie gezeigt, ist die PPU 202 mit einem lokalen Parallelverarbeitungs-(PP-)Speicher 204 verbunden. Die PPU 202 und der PP-Speicher 204 können realisiert werden, indem ein oder mehrere integrierte Schaltungsbauelemente, etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC) oder Speicherbauelemente verwendet werden, oder sie können in einer beliebigen anderen technisch machbaren Weise realisiert werden. 2 is a block diagram of a parallel processing unit (PPU) 202 in the parallel processing subsystem 112 out 1 according to an embodiment of the present invention. Even though 2 a single PPU 202 As previously indicated, the parallel processing subsystem may be shown 112 any number of PPUs 202 contain. As shown, the PPU is 202 with a local parallel processing (PP) memory 204 connected. The PPU 202 and the PP memory 204 may be implemented using one or more integrated circuit devices, such as programmable processors, application specific integrated circuits (ASIC), or memory devices, or may be implemented in any other technically feasible manner.

In einigen Ausführungsformen umfasst die PPU 202 eine grafische Verarbeitungseinheit (GPU), die ausgebildet sein kann, eine Grafikverarbeitungs-Pipeline zu realisieren, um diverse Operationen auszuführen, die mit der Erzeugung von Pixeldaten auf der Grundlage von Grafikdaten, die von der CPU 102 und/oder dem Systemspeicher 104 bereitgestellt werden, im Zusammenhang stehen. Wenn Grafikdaten verarbeitet werden, kann der PP-Speicher 204 als Grafikspeicher verwendet werden, der einen oder mehrere konventionelle Blockpuffer bzw. Bildpuffer enthält, und bei Bedarf auch ein oder mehrere Bilderzeugungsziele enthält. Unter anderem kann der PP-Speicher 204 eingesetzt werden, um Pixeldaten zu speichern und zu aktualisieren und um endgültige Pixeldaten oder Anzeigeblöcke an das Anzeigegerät 110 für die Anzeige zu übertragen. In einigen Ausführungsformen kann die PPU 202 auch für eine Verarbeitung für Allgemeinzwecke und Rechenoperationen ausgebildet sein.In some embodiments, the PPU includes 202 a graphics processing unit (GPU) that may be configured to implement a graphics processing pipeline to perform various operations associated with the generation of pixel data based on graphics data provided by the CPU 102 and / or system memory 104 be related, related. When graphics data is processed, the PP memory may 204 may be used as graphics memory containing one or more conventional block buffers and, if desired, also containing one or more rendering targets. Among other things, the PP memory 204 can be used to store and update pixel data and final pixel data or display blocks to the display device 110 for the display. In some embodiments, the PPU 202 also be designed for processing for general purposes and arithmetic operations.

Beim Betrieb ist die CPU 102 der übergeordnete Prozessor des Computersystems 100, um die Funktion anderer Systemkomponenten zu steuern und zu koordinieren. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPU 202 steuern. In einigen Ausführungsformen schreibt die CPU 102 einen Strom an Befehlen für die PPU 202 in eine Datenstruktur (die weder in 1 noch in 2 explizit gezeigt ist), die in dem Systemspeicher 104, in dem PP-Speicher 204 oder an einer anderen Speicherstelle angeordnet sein kann, auf die sowohl die CPU 102 als auch die PPU 202 zugreifen können. Ein Zeiger auf die Datenstruktur wird in einen Schiebepuffer geschrieben, um die Verarbeitung des Stroms an Befehlen in der Datenstruktur zu initiieren. Die PPU 202 liest Befehlsströme aus dem Schiebepuffer aus und führt dann Befehle asynchron zum Betrieb der CPU 102 aus. In Ausführungsformen, in denen mehrere Schiebepuffer erzeugt werden, können Prioritäten für die Ausführung für jeden Schiebepuffer durch ein Anwendungsprogramm über den Gerätetreiber 103 angegeben werden, um die Disponierung der unterschiedlichen Schiebepuffer zu steuern.During operation, the CPU is 102 the parent processor of the computer system 100 to control and coordinate the function of other system components. In particular, the CPU gives 102 Commands out the operation of the PPU 202 Taxes. In some embodiments, the CPU writes 102 a stream of commands for the PPU 202 into a data structure (neither in 1 still in 2 explicitly shown) stored in the system memory 104 in which PP memory 204 or may be located at a different location to which both the CPU 102 as well as the PPU 202 can access. A pointer to the data structure is written to a shift buffer to initiate processing of the stream of instructions in the data structure. The PPU 202 reads instruction streams out of the shift buffer and then executes instructions asynchronously to the operation of the CPU 102 out. In embodiments where multiple shift buffers are generated, execution priorities for each shift buffer may be determined by an application program through the device driver 103 to control the scheduling of the different shift buffers.

Wie ferner gezeigt ist, enthält die PPU 202 eine I/O-(Eingabe/Ausgabe-)Einheit 205, die mit dem Rest des Computersystems 100 über den Kommunikationspfad 113 und die Speicherbrücke 105 in Verbindung steht. Die I/O-Einheit 205 erzeugt Pakete (oder andere Signale) für die Übertragung auf dem Kommunikationspfad 113 und empfängt ferner alle eintreffenden Pakete (oder andere Signale) aus dem Kommunikationspfad 113, um die eintreffenden Pakete zu geeigneten Komponenten der PPU 202 weiterzuleiten. Beispielsweise können Befehle, die Verarbeitungsaufgaben betreffen, zu einer Hauptschnittstelle 206 gesendet werden, während Befehle, die Speicheroperationen (beispielsweise lesen aus dem PP-Speicher 204 oder speichern in denselben) betreffen, zu einer Kreuzungseinheit 210 geleitet werden können. Die Hauptschnittstelle 206 liest jeden Schiebepuffer aus und sendet den in dem Schiebepuffer gespeicherten Befehlsstrom an einen Frontbereich 212.As further shown, the PPU includes 202 an I / O (input / output) unit 205 that with the rest of the computer system 100 over the communication path 113 and the memory bridge 105 communicates. The I / O unit 205 generates packets (or other signals) for transmission on the communication path 113 and further receives all incoming packets (or other signals) from the communication path 113 to get the incoming packets to appropriate components of the PPU 202 forward. For example, commands related to processing tasks may become one Main interface 206 while commands that read memory operations (for example, read from the PP memory 204 or store in the same), to an intersection unit 210 can be directed. The main interface 206 reads each shift buffer and sends the instruction stream stored in the shift buffer to a front area 212 ,

Wie zuvor in Verbindung mit 1 erwähnt ist, kann die Verbindung der PPU 202 mit dem Rest des Computersystems 100 auch anders sein. In einigen Ausführungsformen ist das Parallelverarbeitungssubsystem 112, das zumindest eine PPU 202 enthält, als eine Zusatzkarte realisiert, die in einen Erweiterungssteckplatz des Computersystems 100 eingeführt werden kann. In anderen Ausführungsformen kann die PPU 202 zusammen mit einer Busbrücke, etwa der Speicherbrücke 105 oder der I/O-Brücke 107 auf einem einzelnen Chip integriert sein. Wiederum können in noch anderen Ausführungsformen einige oder alle Elemente der PPU 202 zusammen mit der CPU 102 in einer einzelnen integrierten Schaltung oder einem System-auf-einem-Chip (SoC) enthalten sein.As previously in connection with 1 may be mentioned, the connection of the PPU 202 with the rest of the computer system 100 also be different. In some embodiments, the parallel processing subsystem is 112 that at least one PPU 202 contains, as an add-in card, implemented in an expansion slot of the computer system 100 can be introduced. In other embodiments, the PPU 202 along with a bus bridge, such as the memory bridge 105 or the I / O bridge 107 be integrated on a single chip. Again, in still other embodiments, some or all of the elements of the PPU 202 together with the CPU 102 be contained in a single integrated circuit or a system-on-a-chip (SoC).

Während des Betriebs überträgt der Frontbereich 212 Verarbeitungsaufgaben, die von der Hauptschnittstelle 206 empfangen werden, zu einer Arbeitsverteilungseinheit (nicht gezeigt) in der Aufgaben/Arbeitseinheit 207. Die Arbeitsverteilungseinheit empfängt Zeiger auf Verarbeitungsaufgaben, die als Aufgaben-Metadaten (TMD) kodiert sind und in dem Speicher gespeichert sind. Die Zeiger auf die TMD sind in einem Befehlsstrom enthalten, der als ein Schiebepuffer gespeichert ist und von der Frontbereichseinheit 212 aus der Hauptschnittstelle 206 empfangen wird. Verarbeitungsaufgaben, die als TMD kodiert sein können, enthalten Indizes, die mit den zu verarbeitenden Daten verknüpft sind, sowie Zustandsparameter und Befehle, die festlegen, wie die Daten zu verarbeiten sind. Beispielsweise können die Zustandsparameter und Befehle das Programm festlegen, das an den Daten auszuführen ist. Die Aufgaben/Arbeitseinheit 207 empfängt Aufgaben aus dem Frontbereich 212 und stellt sicher, dass die GPCs 208 in einen zulässigen Zustand konfiguriert werden, bevor die Verarbeitungsaufgaben, die jeweils durch die TMD spezifiziert ist, initiiert werden. Es kann eine Priorität jeweils für die TMD angegeben werden, die verwendet wird, um die Ausführung der Verarbeitungsaufgaben zu disponieren. Verarbeitungsaufgaben können auch aus dem Verarbeitungs-Cluster-Array 230 empfangen werden. Optional können die TMD einen Parameter enthalten, der steuert, ob die TMD dem vorderen Teil oder dem hinteren Teil einer Liste von Verarbeitungsaufgaben (oder einer Liste von Zeigern auf die Verarbeitungsaufgaben) hinzugefügt werden, wodurch eine weitere Ebene an Steuerbarkeit neben der Ausführungspriorität bereitgestellt wird.During operation, the front area transmits 212 Processing tasks coming from the main interface 206 to be received to a work distribution unit (not shown) in the task / work unit 207 , The work distribution unit receives pointers to processing tasks that are encoded as task metadata (TMD) and stored in the memory. The pointers to the TMD are contained in a command stream stored as a sliding buffer and by the front-end unit 212 from the main interface 206 Will be received. Processing tasks that may be encoded as TMD include indexes associated with the data being processed, as well as state parameters and commands that determine how the data is to be processed. For example, the state parameters and commands may specify the program to execute on the data. The tasks / work unit 207 receives tasks from the front area 212 and make sure the GPCs 208 are configured to a valid state before the processing tasks specified by the TMD are initiated. You can specify a priority for the TMD that will be used to schedule the execution of the processing tasks. Processing tasks can also be taken from the processing cluster array 230 be received. Optionally, the TMD may include a parameter that controls whether the TMD is added to the front part or the back part of a list of processing tasks (or a list of pointers to the processing tasks), thereby providing another level of controllability besides the execution priority.

Die PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur auf der Grundlage eines Verarbeitungs-Cluster-Arrays 230, das eine Gruppe aus C allgemeinen Verarbeitungs-Clustern (GPCs) 208 enthält, wobei C ≥ 1 ist. Jeder GPC 208 ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) an Strängen gleichzeitig zu bearbeiten, wobei jeder Strang eine Instanz eines Programms ist. In diversen Anwendungen können unterschiedliche GPCs 208 für die Verarbeitung unterschiedlicher Arten von Programmen oder für die Ausführung unterschiedlicher Arten von Berechnungen zugewiesen werden. Die Zuweisung von GPCs 208 kann sich in Abhängigkeit der Arbeitslast, die für jede Art von Programm oder Berechnung auftritt, ändern.The PPU 202 advantageously implements a highly parallel processing architecture based on a processing cluster array 230 that is a group of C general processing clusters (GPCs) 208 contains, where C ≥ 1. Every GPC 208 is able to process a large number (for example, hundreds or thousands) of strands simultaneously, with each strand being an instance of a program. Different applications can use different GPCs 208 for processing different types of programs or for performing different types of calculations. The assignment of GPCs 208 can change depending on the workload that occurs for each type of program or calculation.

Die Speicherschnittstelle 214 enthält eine Gruppe an D Partitionseinheiten 215, wobei D ≥ 1 ist. Jede Partitionseinheit 215 ist mit einem oder mehreren dynamischen Speichern mit wahlfreiem Zugriff (DRAM) 220 verbunden, die in dem PP-Speicher 204 liegen. In einer Ausführungsform ist die Anzahl an Partitionseinheiten 215 gleich der Anzahl an DRAM 220, und jede Partitionseinheit 215 ist mit einem anderen DRAM 220 verbunden. In anderen Ausführungsformen kann sich die Anzahl an Partitionseinheiten 215 von der Anzahl der DRAM 220 unterscheiden. Der Fachmann erkennt, dass ein DRAM 220 durch eine beliebige andere technische geeignete Speichereinrichtung ersetzt werden kann. Während des Betriebs können diverse Bilderzeugungsziele, etwa Texturkarten und Blockpuffer in den DRAM 220 gespeichert werden, so dass die Partitionseinheiten 215 Bereiche jedes Bilderzeugungsziels parallel beschreiben können, um effizient die verfügbare Bandbreite des PP-Speichers 204 auszunutzen.The storage interface 214 Contains a group of D partition units 215 where D≥1. Each partition unit 215 is with one or more Dynamic Random Access Memories (DRAM) 220 connected in the PP memory 204 lie. In one embodiment, the number of partition units 215 equal to the number of DRAM 220 , and each partition unit 215 is with another DRAM 220 connected. In other embodiments, the number of partition units may vary 215 from the number of DRAM 220 differ. The person skilled in the art recognizes that a DRAM 220 can be replaced by any other suitable technical storage device. During operation, various imaging targets, such as texture maps and block buffers, may be inserted into the DRAM 220 be stored so that the partition units 215 Describe regions of each imaging destination in parallel to efficiently estimate the available bandwidth of the PP memory 204 exploit.

Ein gegebener GPC 208 kann Daten verarbeiten, die in einen der DRAM 220 in dem PP-Speicher 204 zu schreiben sind. Die Kreuzungseinheit 210 ist ausgebildet, die Ausgabe jedes GPC 208 dem Eingang einer Partitionseinheit 215 oder einem anderen GPC 208 für die weitere Verarbeitung zuzuleiten. Die GPCs 208 kommunizieren mit der Speicherschnittstelle 214 über die Kreuzungseinheit 210, um diverse DRAMs 220 auszulesen oder zu beschreiben. In einer Ausführungsform hat die Kreuzungseinheit 210 eine Verbindung zu der I/O-Einheit 205 zusätzlich zu einer Verbindung zu dem PP-Speicher 204 über die Speicherschnittstelle 214, wodurch somit die Verarbeitungskerne in den unterschiedlichen GPCs 208 in der Lage sind, mit dem Systemspeicher 104 oder mit einem Speicher, der nicht lokal für die PPU 202 ist, zu kommunizieren. In der Ausführungsform aus 2 ist die Kreuzungseinheit 210 direkt mit der I/O-Einheit 205 verbunden. In diversen Ausführungsformen kann die Kreuzungseinheit 210 virtuelle Kanäle benutzen, um Verkehrsströme zwischen den GPCs 208 und den Partitionseinheiten 215 zu trennen.A given GPC 208 can process data in one of the DRAM 220 in the PP memory 204 to write. The crossing unit 210 is trained, the output of each GPC 208 the input of a partition unit 215 or another GPC 208 for further processing. The GPCs 208 communicate with the memory interface 214 over the crossing unit 210 to various DRAMs 220 to read or describe. In one embodiment, the intersection unit 210 a connection to the I / O unit 205 in addition to a connection to the PP memory 204 via the memory interface 214 , thus providing the processing cores in the different GPCs 208 are able to with the system memory 104 or with a memory that is not local to the PPU 202 is to communicate. In the embodiment of 2 is the crossing unit 210 directly with the I / O unit 205 connected. In various Embodiments may be the intersection unit 210 Use virtual channels to control traffic flows between the GPCs 208 and the partition units 215 to separate.

Die GPCs 208 können dabei programmiert werden, Verarbeitungsaufgaben auszuführen, die eine Fülle von Anwendungen betreffen, wozu gehören, ohne Einschränkung: lineare und nichtlineare Datentransformationen, die Filterung von Video- und/oder Audiodaten, Modellierungsoperationen (beispielsweise die Anwendung physikalischer Gesetze zur Bestimmung von Position, Geschwindigkeit und anderen Attributen von Objekten), Bilderzeugungsoperationen (beispielsweise Programme für Parkettierungs-Schattierung, Vertex-Schattierung, Geometrie-Schattierung und/oder Pixel/Fragment-Schattierung), allgemeine Rechenoperationen, usw. Im Betrieb ist die PPU 202 ausgebildet, Daten aus dem Systemspeicher 104 und/oder dem PP-Speicher 204 zu einer oder mehreren chipinternen Speichereinheiten zu übertragen, die Daten zu verarbeiten und die Ergebnisdaten zurück in den Systemspeicher 104 und/oder den PP-Speicher 204 zu schreiben. Auf die Ergebnisdaten können dann andere Systemkomponenten zugegriffen, wozu die CPU 102, eine weitere PPU 202 in dem Parallelverarbeitungssubsystem 112 oder ein weiteres Parallelverarbeitungssubsystem 112 in dem Computersystem 100 gehören.The GPCs 208 can be programmed to perform processing tasks involving a variety of applications including, without limitation: linear and non-linear data transformations, filtering of video and / or audio data, modeling operations (e.g., application of physical laws to determine position, velocity, and other attributes of objects), image rendering operations (e.g., tiling shading, vertex shading, geometry shading, and / or pixel / fragment shading), general computational operations, etc. In operation, the PPU 202 trained, data from the system memory 104 and / or the PP memory 204 to transfer to one or more on-chip storage devices, process the data and return the result data back to the system memory 104 and / or the PP memory 204 to write. The result data can then be accessed by other system components, including the CPU 102 , another PPU 202 in the parallel processing subsystem 112 or another parallel processing subsystem 112 in the computer system 100 belong.

Wie zuvor angegeben ist, kann eine beliebige Anzahl an PPUs 202 in einem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 in einer einzelnen Zusatzkarte bereitgestellt sein, oder mehrere Zusatzkarten können mit dem Kommunikationspfad 113 verbunden sein, oder eine oder mehrere der PPUs 202 können in einem Brückenchip integriert sein. Die PPUs 202 in einem Multi-PPU-System können identisch oder unterschiedlich zueinander sein. Beispielsweise können unterschiedliche PPUs 202 eine unterschiedliche Anzahl an Verarbeitungskernen und/oder unterschiedliche Größen des PP-Speichers 204 aufweisen. In Ausführungsformen, in denen mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, um Daten mit einem höheren Durchsatz zu verarbeiten, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, die eine oder mehrere PPUs 202 enthalten, können in einer Vielzahl von Konfigurationen und Formfaktoren realisiert werden, wozu gehören, ohne Einschränkung: Tischrechner, mobile Rechner, Personalcomputer in Form von Handgeräten oder andere Handgeräte, Dienstleister-Rechner, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme und dergleichen.As indicated previously, any number of PPUs 202 in a parallel processing subsystem 112 be included. For example, several PPUs 202 may be provided in a single add-on card, or multiple add-on cards may communicate with the communication path 113 or one or more of the PPUs 202 can be integrated in a bridge chip. The PPUs 202 in a multi-PPU system can be identical or different to each other. For example, different PPUs 202 a different number of processing cores and / or different sizes of PP memory 204 exhibit. In embodiments where multiple PPUs 202 In addition, these PPUs can operate in parallel to process data at a higher throughput than a single PPU 202 it is possible. Systems containing one or more PPUs 202 can be implemented in a variety of configurations and form factors, including but not limited to desktop computers, mobile computers, personal computers in the form of handheld devices or other handheld devices, service providers' computers, workstations, game consoles, embedded systems, and the like.

Architektur der Grafik-PipelineArchitecture of the graphics pipeline

3 ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline 350, die in der PPU 202 aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung realisiert werden kann. Wie gezeigt, umfasst die Grafikverarbeitungs-Pipeline 350 ohne Einschränkung eine Grundelemente-Verteilungseinheit (PD) 355; eine Vertex-Attribut-Abholeinheit (VAF) 360; eine Vertex-, Parkettierungs-, Geometrie-Verarbeitungseinheit (VTG) 365; eine Darstellungsfeldskalier-, Auswahl und Schneideeinheit (VPC) 370; eine Kacheleinheit 375, eine Einrichteinheit (Einrichten) 380, eine Rastereinheit (Raster) 385; eine Fragment-Verarbeitungseinheit, die auch als eine Pixel-Schattierungseinheit (PS) 390 bezeichnet ist, und eine Rasteroperationseinheit (ROP) 395. 3 is a conceptual view of a graphics processing pipeline 350 that in the PPU 202 out 2 according to an embodiment of the present invention can be realized. As shown, the graphics processing pipeline includes 350 without limitation a primitive distribution unit (PD) 355 ; a vertex attribute collection unit (VAF) 360 ; a vertex, tiling, geometry processing unit (VTG) 365 ; a viewport scaling, selection and cutting unit (VPC) 370 ; a tile unit 375 , a setup unit (set up) 380 , a grid unit (grid) 385 ; a fragment processing unit, also called a pixel shading unit (PS) 390 and a raster operation unit (ROP) 395 ,

Die PD 355 sammelt Vertex-Daten, die mit Oberflächen höherer Ordnung verknüpft sind, grafische Grundelemente und dergleichen aus dem Frontbereich 212 und sendet die Vertex-Daten an die VAF 360.The PD 355 collects vertex data associated with higher-order surfaces, graphical primitives, and the like from the front 212 and sends the vertex data to the VAF 360 ,

Die VAF 360 empfängt Vertex-Attribute, die mit jedem der eintreffenden Vertices verknüpft sind, aus dem gemeinsam benutzten Speicher und speichert die Vertex-Daten zusammen mit den zugehörigen Vertex-Attributen in dem gemeinsam benutzten Speicher.The VAF 360 receives vertex attributes associated with each of the incoming vertices from the shared memory and stores the vertex data along with the associated vertex attributes in the shared memory.

Die VTG 365 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Vertex-Schattierungsprogramme, Parkettierung-Programme und Geometrie-Programme auszuführen. Diese Programme verarbeiten die Vertex-Daten und Vertex-Attribute, die aus der VAF 360 empfangen werden, und erzeugt grafische Grundelemente für die Weiterverarbeitung in der Grafikverarbeitungs-Pipeline 350. Obwohl dies nicht explizit gezeigt ist, kann die VTG 365 in einigen Ausführungsformen eine oder mehrere der folgenden Einheiten aufweisen: eine Vertex-Verarbeitungseinheit, eine Parkettierungs-Initialisierungs-Verarbeitungseinheit, eine Aufgabenerzeugungseinheit, eine Aufgabenverteilungseinheit, eine Topologie-Erzeugungseinheit, eine Parkettierungs-Verarbeitungseinheit und eine Geometrie-Verarbeitungseinheit.The VTG 365 is a programmable execution unit configured to execute vertex shader programs, tiling programs, and geometry programs. These programs process the vertex data and vertex attributes that come from the VAF 360 and generates graphical primitives for further processing in the graphics processing pipeline 350 , Although not explicitly shown, the VTG 365 in some embodiments, one or more of: a vertex processing unit, a tiling initialization processing unit, a task generation unit, a task distribution unit, a topology generation unit, a tiling processing unit, and a geometry processing unit.

Die Vertex-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Vertex-Schattierungsprogramme, Beleuchtung und die Transformation von Vertex-Daten, wie dies durch die Vertex-Schattierungsprogramme angegeben ist, auszuführen. Beispielsweise kann die Vertex-Verarbeitungseinheit programmiert sein, die Vertex-Daten aus der objektbasierten Koordinatendarstellung (Objektraum) in ein Koordinatensystem mit alternativer Basis, etwa einen Welt-Raum oder einen Raum mit normierten Gerätekoordinaten (NDC) zu transformieren. Die Vertex-Verarbeitungseinheit kann Vertex-Daten und Vertex-Attribute, die in dem gemeinsam benutzten Speicher von der VAF gespeichert sind, auslesen und kann die Vertex-Daten und Vertex-Attribute verarbeiten. Die Vertex-Verarbeitungseinheit speichert verarbeitete Vertices in dem gemeinsam benutzten Speicher.The vertex processing unit is a programmable execution unit that is configured to execute vertex shader programs, lighting, and the transformation of vertex data as indicated by the vertex shader programs. For example, the vertex processing unit may be programmed to transfer the vertex data from the object-based coordinate representation (object space) to an alternative-based coordinate system, such as a world space or a space with normalized device coordinates (NDC). to transform. The vertex processing unit may read vertex data and vertex attributes stored in the shared memory from the VAF and may process the vertex data and vertex attributes. The vertex processing unit stores processed vertices in the shared memory.

Die Parkettierungs-Initialisierungs-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Parkettierungs-Initialisierungs-Schattierungsprogramme auszuführen. Die Parkettierungs-Initialisierungs-Verarbeitungseinheit verarbeitet Vertices, die von der Vertex-Verarbeitungseinheit erzeugt wurden, und erzeugt grafische Grundelemente, die als Flecken bzw. Abschnitte bekannt sind. Die Parkettierungs-Initialisierungs-Verarbeitungseinheit erzeugt ferner diverse Fleckenattribute. Die Parkettierungs-Initialisierungs-Verarbeitungseinheit speichert dann die Fleckendaten und Fleckenattribute in dem gemeinsam benutzten Speicher. In einigen Ausführungsformen kann das Parkettierungs-Initialisierungs-Schattierungsprogramm als eine Hüllen-Schattierung oder als eine Parkettierungs-Steuerungsschattierung bezeichnet werden.The tiling initialization processing unit is a programmable execution unit configured to execute tiling initialization shading programs. The tiling initialization processing unit processes vertices generated by the vertex processing unit and generates graphic primitives known as stains. The tiling initialization processing unit also generates various stain attributes. The tiling initialization processing unit then stores the stain data and stain attributes in the shared memory. In some embodiments, the tiling initialization shader may be referred to as wrap shading or tiling control shading.

Die Aufgabenerzeugungseinheit ruft Daten und Attribute für Vertices und Flecken aus dem gemeinsam benutzten Speicher ab. Die Aufgabenerzeugungseinheit erzeugt Aufgaben zur Verarbeitung der Vertices und Flecken für die Verarbeitung durch spätere Stufen in der Grafikverarbeitungs-Pipeline 350.The task generation unit retrieves data and attributes for vertices and patches from the shared memory. The task generation unit generates tasks for processing the vertices and patches for processing by later stages in the graphics processing pipeline 350 ,

Die Aufgabenverteilungseinheit verteilt die von der Aufgabenerzeugungseinheit erzeugten Aufgaben. Die von den diversen Instanzen des Vertex-Schattierungsprogramms und des Parkettierungs-Initialisierungs-Programms erzeugten Aufgaben können sich deutlich zwischen einer grafischen Verarbeitung-Pipeline 350 und einer weiteren unterscheiden. Die Aufgabenverteilungseinheit verteilt diese Aufgaben derart, dass jede Grafikverarbeitungs-Pipeline 350 ungefähr die gleiche Arbeitsauslastung während späterer Pipeline-Stufen hat.The task distribution unit distributes the tasks generated by the task generation unit. The tasks created by the various instances of the vertex shader program and the tiling initialization program can be clearly separated between a graphical processing pipeline 350 and another one. The task distribution unit distributes these tasks such that each graphics processing pipeline 350 has about the same workload during later pipeline stages.

Die Topologie-Erzeugungseinheit ruft Aufgaben, die von der Aufgabenverteilungseinheit verteilt wurden, ab. Die Topologie-Erzeugungseinheit indiziert die Vertices einschließlich von Vertices, die mit Flecken verknüpft sind, und berechnet (U, V) Koordinaten für Parkettierungs-Vertices und die Indizes, die die in ein Parkett eingeteilten Vertices verbinden, um grafische Grundelemente zu bilden. Die Topologie-Erzeugungseinheit speichert dann die indizierten Vertices in dem gemeinsam benutzten Speicher.The topology generation unit retrieves tasks distributed by the task distribution unit. The topology generation unit indexes the vertices, including vertices associated with patches, and computes (U, V) coordinates for tiling vertices and the indices connecting the vertices partitioned into a parquet to form graphic primitives. The topology generation unit then stores the indexed vertices in the shared memory.

Die Parkettierungs-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Parkettierungs-Schattierungsprogramme auszuführen. Die Parkettierungs-Verarbeitungseinheit liest Eingangsdaten von dem gemeinsam benutzten Speicher und schreibt Ausgangsdaten in diesen hinein. Die Ausgangsdaten in dem gemeinsam benutzten Speicher werden an die nächste Schattierungsstufe, d. h. die Geometrie-Verarbeitungseinheit, als Eingangsdaten weitergeleitet. In einigen Ausführungsformen kann das Parkettierungs-Schattierungsprogramme als eine Bereichsschattierung oder als eine Parkettierungs-Bewertungssteuerung bezeichnet werden.The tiling processing unit is a programmable execution unit configured to execute tiling shading programs. The tiling processing unit reads input data from the shared memory and writes output data thereto. The output data in the shared memory is sent to the next shading stage, i. H. the geometry processing unit, passed as input data. In some embodiments, the tiling shader may be referred to as a range shading or as a tiling weighting control.

Die Geometrie-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Geometrie-Schattierungsprogramme auszuführen, wodurch grafische Grundelemente transformiert werden. Vertices werden so gruppiert, dass grafische Grundelemente für die Verarbeitung aufgebaut werden, wobei grafische Grundelemente Dreiecke, Liniensegmente, Punkte und dergleichen beinhalten. Beispielsweise kann die Geometrie-Verarbeitungseinheit programmiert werden, um die grafischen Grundelemente in ein oder mehrere neue grafische Grundelemente zu unterteilen und um Parameter zu berechnen, etwa Koeffizienten für Ebenengleichungen, die verwendet werden, um die neuen grafischen Grundelemente in ein Raster einzuteilen.The geometry processing unit is a programmable execution unit that is configured to execute geometry shader programs, thereby transforming graphical primitives. Vertices are grouped to construct graphical primitives for processing, with graphic primitives including triangles, line segments, points, and the like. For example, the geometry processing unit may be programmed to subdivide the graphical primitives into one or more new primitives and to calculate parameters, such as level equation coefficients, used to divide the new primitives into a grid.

Die Geometrie-Verarbeitungseinheit sendet die Parameter und die Vertices, die die neuen grafischen Grundelemente angeben, an die VPC 370. Die Geometrie-Verarbeitungseinheit kann Daten auslesen, die in dem gemeinsam benutzten Speicher gespeichert sind, um diese bei der Verarbeitung der Geometriedaten zu verwenden. Die VPC 370 führt eine Beschneidung, eine Auswahl und eine Transformation des Darstellungsfeldes aus, um zu bestimmen, welche grafischen Grundelemente potentiell in dem endgültigen erzeugten Bild sichtbar sind und welche grafischen Grundelemente potentiell nicht sichtbar sind. Die VPC 370 sendet dann die verarbeiteten grafischen Grundelemente an die Kacheleinheit 375.The geometry processing unit sends the parameters and vertices that indicate the new graphical primitives to the VPC 370 , The geometry processing unit may read out data stored in the shared memory for use in processing the geometry data. The VPC 370 performs pruning, selection, and transformation of the viewport to determine which graphical primitives are potentially visible in the final rendered image and which graphical primitives are potentially invisible. The VPC 370 then sends the processed graphic primitives to the tiling unit 375 ,

Die Kacheleinheit 375 ist eine Einheit zur Sortierung grafischer Grundelemente, die zwischen einer Welt-Raum-Pipeline 352 und einer Bildschirm-Raum-Pipeline 354 angeordnet ist, wie dies nachfolgend hierin beschrieben ist. Grafische Grundelemente werden in der Welt-Raum-Pipeline 352 verarbeitet und dann an die Kacheleinheit 375 gesendet. Der Bildschirm-Raum wird in Cache-Kacheln eingeteilt, wobei jede Cache-Kachel einem Teil des Bildschirm-Raums zugeordnet ist. Für jedes grafische Grundelement ermittelt die Kacheleinheit 375 die Gruppe an Cache-Kacheln, die das grafische Grundelement schneiden, wobei dieser Vorgang als „Kacheleinteilung” hierin bezeichnet wird. Nach der Kacheleinteilung einer gewissen Anzahl an grafischen Grundelementen verarbeitet die Kacheleinheit 375 die grafischen Grundelemente auf Basis einer Cache-Kachel, wobei grafische Grundelemente, die zu einer speziellen Cache-Kachel gehören, zu der Einrichtungseinheit 380 gesendet werden. Die Kacheleinheit 375 sendet grafische Grundelemente an die Einrichteinheit 380 jeweils nacheinander für eine einzelne Cache-Kachel. Grafische Grundelemente, die mehrere Cache-Kacheln schneiden, werden typischerweise einmal in der Welt-Raum-Pipeline 352 verarbeitet, und werden dann aber mehrere Male an die Bildschirm-Raum-Pipeline 354 gesendet.The tile unit 375 is a unit for sorting graphic primitives that exist between a world space pipeline 352 and a screen space pipeline 354 is arranged as described hereinafter. Graphical primitives will be in the world-space pipeline 352 processed and then to the tiling unit 375 Posted. The screen space is cached, with each cache tile associated with a portion of the screen space. For each graphic primitive, the tile unit determines 375 the set of cache tiles intersecting the graphics primitive, this process being referred to as "tile ordering" herein. After the tiling of a certain number of graphic Basic elements are processed by the tiling unit 375 the graphical primitives based on a cache tile, where graphic primitives belonging to a particular cache tile become the device entity 380 be sent. The tile unit 375 sends graphical primitives to the setup unit 380 one at a time for a single cache tile. Graphical primitives that intersect multiple cache tiles are typically once in the world space pipeline 352 processed, but then several times to the screen space pipeline 354 Posted.

Eine derartige Technik verbessert die Lokalität des Cache-Speichers während der Verarbeitung in der Bildschirm-Raum-Pipeline 354, wenn mehrere Speicheroperationen, die mit einer ersten Cache-Kachel verknüpft sind, auf ein Gebiet der L2-Cache-Speicher zugreifen, oder auf einen anderen technisch machbaren Cache-Speicher, der während der Bildschirm-Raum-Verarbeitung der ersten Cache-Kachel permanent ist. Sobald die mit der ersten Cache-Kachel verknüpften grafischen Grundelemente von der Bildschirm-Raum-Pipeline 354 verarbeitet sind, wird der Bereich der L2-Cache-Speicher, der mit der ersten Cache-Kachel verknüpft ist, geleert und die Kacheleinheit kann grafische Grundelemente, die mit einer zweiten Cache-Kachel verknüpft sind, übertragen. Mehrere Speicheroperationen, die mit einer zweiten Cache-Kachel verknüpft sind, können dann auf das Gebiet der L2-Cache-Speicher zugreifen, das während der Bildschirm-Raum-Verarbeitung der zweiten Cache-Kachel permanent erhalten bleibt. Daher kann der gesamte Speicherverkehr zu den L2-Cache-Speichern und zu den Bilderzeugungszielen reduziert werden. In einigen Ausführungsformen wird die Berechnung im Welt-Raum einmal für ein gegebenes grafisches Grundelement vorgenommen, unabhängig von der Anzahl an Cache-Kacheln in dem Bildschirm-Raum, die das grafische Grundelement schneiden.Such a technique improves the locality of the cache memory during processing in the screen space pipeline 354 when multiple memory operations associated with a first cache tile access one area of the L2 cache, or another technically feasible cache memory that persists during screen space processing of the first cache tile is. Once the graphical primitives associated with the first cache tile from the screen space pipeline 354 are processed, the area of L2 cache associated with the first cache tile is flushed, and the tile unit may transmit graphic primitives associated with a second cache tile. Multiple memory operations associated with a second cache tile may then access the area of the L2 caches that is permanently maintained during screen space processing of the second cache tile. Therefore, all memory traffic to the L2 caches and to the imaging targets can be reduced. In some embodiments, the computation in world space is done once for a given primitive, regardless of the number of cache tiles in the screen space intersecting the primitive.

Die Einrichteinheit 380 empfängt Vertex-Daten aus der VPC 370 über die Kacheleinheit 375 und berechnet Parameter, die mit den grafischen Grundelementen verknüpft sind, wozu gehören, ohne Einschränkung: die Farbwerte, Oberflächennormalenvektoren und Durchlässigkeitswerte an jedem Vertex des grafischen Grundelements. Die Einrichteinheit 380 sendet dann verarbeitete grafische Grundelemente an die Rastereinheit 385.The setup unit 380 receives vertex data from the VPC 370 about the tiling unit 375 and calculates parameters associated with the primitives, including, without limitation, the color values, surface normal vectors, and transmittance values at each vertex of the primitive. The setup unit 380 then sends processed graphic primitives to the rasterizer 385 ,

Die Rastereinheit 385 wandelt die neuen grafischen Grundelemente um und sendet Fragmente und Abdeckungsdaten an die Pixel-Schattierungseinheit 390. Ferner kann die Rastereinheit 385 ausgebildet sein, eine z-Auswahl und andere z-basierte Optimierungen vorzunehmen.The grid unit 385 converts the new graphic primitives and sends fragments and coverage data to the pixel shader 390 , Furthermore, the raster unit 385 be configured to make a z-selection and other z-based optimizations.

Die Pixel-Schattierungseinheit 390 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Fragment-Schattierungsprogramme auszuführen, wodurch Fragmente, die von der Rastereinheit 385 empfangen werden, zu transformieren, wie dies durch die Fragment-Schattierungsprogramme angegeben ist. Die Fragment-Schattierungsprogramme können Fragmente mit Auflösung auf Pixelebene schattieren, wobei derartige Schattierungsprogramme als Pixel-Schattierungsprogramme bezeichnet werden können. Alternativ können Fragment-Schattierungsprogramme Fragmente mit einer Auflösung auf Abtastebene schattieren, wobei jedes Pixel mehrere Abtastungen enthält, und wobei jede Abtastung einen Teil eines Pixel repräsentiert. Alternativ können Fragment-Schattierungsprogramme Fragmente bei einer beliebigen anderen technisch machbaren Auflösung schattieren, wobei dies von der programmierten Abtastrate abhängig.The pixel shading unit 390 is a programmable execution unit that is configured to execute fragment shader programs, thereby removing fragments from the rasterizer 385 are received, as indicated by the fragment shader programs. The fragment shader programs can shade fragments at pixel level resolution, such shader programs being referred to as pixel shader programs. Alternatively, fragment shader programs may shade fragments at a scan-plane resolution, where each pixel contains multiple scans, and each scan represents a portion of a pixel. Alternatively, fragment shader programs can shade fragments at any other technically feasible resolution, depending on the programmed sampling rate.

In diversen Ausführungsformen kann die Fragment-Verarbeitungseinheit 460 programmiert sein, Operationen auszuführen, etwa perspektivische Korrektur, Texturabbildungen, Schattierung, Mischung und dergleichen, um schattierte Fragmente zu erzeugen, die an die ROP-Einheit 395 gesendet werden. Die Pixel-Schattierungseinheit 390 kann Daten, die in dem gemeinsam benutzten Speicher gespeichert sind, auslesen.In various embodiments, the fragment processing unit 460 be programmed to perform operations such as perspective correction, texture mapping, shading, blending, and the like to create shaded fragments that are applied to the ROP unit 395 be sent. The pixel shading unit 390 can read data stored in the shared memory.

Die ROP-Einheit 395 ist eine Verarbeitungseinheit, die Rasteroperationen, etwa Schablonieren, z-Prüfung, Mischung und dergleichen ausführt, und die Pixeldaten als verarbeitete Grafikdaten zur Speicherung im Grafikspeicher über die Speicherschnittstelle 214 sendet, wobei der Grafikspeicher typischerweise als ein oder mehrere Bilderzeugungsziele aufgebaut ist. Die verarbeiteten Grafikdaten können in dem Grafikspeicher, in dem Parallelverarbeitungsspeicher 204 oder in dem Systemspeicher 104 zur Anzeige auf dem Anzeigegerät 110 oder für die Weiterverarbeitung durch die CPU 102 oder das Parallelverarbeitungssubsystem 112 gespeichert werden. In einigen Ausführungsformen ist die ROP-Einheit 395 ausgebildet, z- oder Farbdaten, die in den Speicher geschrieben werden, zu komprimieren, und z- oder Farbdaten, die aus dem Speicher ausgelesen werden, zu dekomprimieren. In diversen Ausführungsformen kann die ROP-Einheit 395 in der Speicherschnittstelle 214, in den GPCs 208 in dem Verarbeitungs-Cluster-Array 230 außerhalb der GPCs oder in einer separaten Einheit (nicht gezeigt) in den PPUs 202 angeordnet sein.The ROP unit 395 is a processing unit that performs raster operations such as stenciling, z-checking, mixing, and the like, and the pixel data as processed graphics data for storage in graphics memory via the memory interface 214 The graphics memory is typically constructed as one or more imaging targets. The processed graphics data may be stored in the graphics memory in the parallel processing memory 204 or in the system memory 104 for display on the display device 110 or for further processing by the CPU 102 or the parallel processing subsystem 112 get saved. In some embodiments, the ROP unit is 395 formed to compress z or color data written in the memory, and to decompress z or color data read from the memory. In various embodiments, the ROP unit 395 in the memory interface 214 in the GPCs 208 in the processing cluster array 230 outside the GPCs or in a separate unit (not shown) in the PPUs 202 be arranged.

Die Grafikverarbeitungs-Pipeline 350 kann durch ein oder mehrere der Verarbeitungselemente innerhalb der PPU 202 realisiert werden. Beispielsweise kann ein Datenstrom-Multiprozessor (nicht gezeigt) in einem der GPCs 208 aus 2 konfiguriert werden, um die Funktionen einer oder mehrerer der VTG 365 und der Pixel-Schattierungseinheit 390 auszuführen. Die Funktionen der PD 355, der VAF 360, der VPC 450, der Kacheleinheit 375, der Einrichteinheit 380, der Rastereinheit 385 und der ROP-Einheit 395 können ebenfalls von Verarbeitungselementen innerhalb eines speziellen GPC 208 in Verbindung mit einer entsprechenden Partitionseinheit 215 ausgeführt werden. Alternativ kann die Grafikverarbeitungs-Pipeline 350 unter Anwendung spezieller Verarbeitungselemente mit festgelegter Funktion für eine oder mehrere der zuvor genannten Funktionen implementiert werden. In diversen Ausführungsformen kann die PPU 202 ausgebildet sein, eine oder mehrere Grafikverarbeitungs-Pipelines 350 zu implementieren.The graphics processing pipeline 350 may be due to one or more of the processing elements within the PPU 202 will be realized. For example, a data stream multiprocessor (not shown) in one of the GPCs 208 out 2 be configured to perform the functions of one or more of the VTG 365 and the pixel shading unit 390 perform. The functions of the PD 355 , the VAF 360 , the VPC 450 , the tiling unit 375 , the furnishing unit 380 , the raster unit 385 and the ROP unit 395 may also be from processing elements within a particular GPC 208 in conjunction with a corresponding partition unit 215 be executed. Alternatively, the graphics processing pipeline 350 be implemented using specific processing elements with a specified function for one or more of the aforementioned functions. In various embodiments, the PPU 202 be formed, one or more graphics processing pipelines 350 to implement.

In einigen Ausführungsformen kann die Grafikverarbeitungs-Pipeline 350 in eine Welt-Raum-Pipeline 352 und eine Bildschirm-Raum-Pipeline 354 aufgeteilt werden. Die Welt-Raum-Pipeline 352 verarbeitet grafische Objekte im 3D-Raum, in welchem die Position jedes grafischen Objekts in Bezug auf andere grafische Objekte und in Bezug auf ein 3D-Koordinatensystem bekannt ist. Die Bildschirm-Raum-Pipeline 354 verarbeitet grafische Objekte, die aus dem 3D-Koordinatensystem auf eine ebene 2D-Oberfläche projiziert worden sind, die die Oberfläche des Anzeigegeräts 110 repräsentiert. Beispielsweise könnte die Welt-Raum-Pipeline 352 Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 von der PD 355 bis zu der VPC 370 enthalten. Die Bildschirm-Raum-Pipeline 354 könnte Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 ausgehend von der Einrichteinheit 380 bis zu der ROP-Einheit 395 enthalten. Die Kacheleinheit 375 würde auf die letzte Stufe der Welt-Raum-Pipeline 352, das heißt auf die VPC 370, folgen. Die Kacheleinheit 375 würde vor der ersten Stufe der Bildschirm-Raum-Pipeline 354, das heißt der Einrichteinheit 380, liegen.In some embodiments, the graphics processing pipeline may 350 in a world space pipeline 352 and a screen space pipeline 354 be split. The world space pipeline 352 processes graphical objects in 3D space, where the position of each graphical object is known with respect to other graphical objects and with respect to a 3D coordinate system. The screen room pipeline 354 Processes graphical objects projected from the 3D coordinate system onto a flat 2D surface representing the surface of the display device 110 represents. For example, the world space pipeline could 352 Pipeline stages in the graphics processing pipeline 350 from the PD 355 up to the VPC 370 contain. The screen room pipeline 354 could pipeline stages in the graphics processing pipeline 350 starting from the set-up unit 380 up to the ROP unit 395 contain. The tile unit 375 would be on the final stage of the world space pipeline 352 that is, on the VPC 370 , consequences. The tile unit 375 would before the first stage of the screen space pipeline 354 that is the setup unit 380 , lie.

In einigen Ausführungsformen kann die Welt-Raum-Pipeline 352 weiter in eine Alpha-Phasen-Pipeline und eine Beta-Phasen-Pipeline unterteilt werden. Beispielsweise könnte die Alpha-Phasen-Pipeline Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 ausgehend von der PD 355 bis zu der Aufgabenerzeugungseinheit enthalten. Die Beta-Phasen-Pipeline könnte Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 ausgehend von der Topologie-Erzeugungseinheit bis zu der VPC 370 enthalten. Die Grafikverarbeitungs-Pipeline 350 führt eine erste Gruppe an Operationen während der Verarbeitung in der Alpha-Phasen-Pipeline aus und führt eine zweite Gruppe an Operationen während der Verarbeitung in der Beta-Phasen-Pipeline aus. Im hierin verwendeten Sinne ist eine Gruppe an Operationen als ein oder mehrere Befehle definiert, die von einem einzelnen Strang, von einer Stranggruppe oder von mehreren Stranggruppen, die gemeinsam arbeiten, ausgeführt werden.In some embodiments, the world space pipeline may 352 be further divided into an alpha-phase pipeline and a beta-phase pipeline. For example, the alpha-phase pipeline could be pipeline stages in the graphics processing pipeline 350 starting from the PD 355 up to the task generation unit. The beta-phase pipeline could be pipeline stages in the graphics processing pipeline 350 from the topology generation unit to the VPC 370 contain. The graphics processing pipeline 350 performs a first set of operations during processing in the alpha-phase pipeline and performs a second set of operations during processing in the beta-phase pipeline. As used herein, a group of operations is defined as one or more instructions that are executed by a single thread, by a thread group or by several thread groups that work together.

In einem System mit mehreren Grafikverarbeitungs-Pipelines 350 können die Vertex-Daten und Vertex-Attribute, die mit einer Gruppe grafischer Objekte verknüpft sind, so aufgeteilt werden, dass jede Grafikverarbeitungs-Pipeline 350 ungefähr die gleiche Menge an Arbeit in der Alpha-Phase hat. Die Alpha-Phasen-Verarbeitung kann die Menge an Vertex-Daten und Vertex-Attribute deutlich erhöhen, so dass die Menge an Vertex-Daten und Vertex-Attributen, die von der Aufgabenerzeugungseinheit erzeugt wird, deutlich größer ist als die Menge an Vertex-Daten und Vertex-Attributen, die von der PD 355 und der VAF 360 erzeugt wurden. Ferner kann die Aufgabenerzeugungseinheit, die mit einer einzelnen Grafikverarbeitungs-Pipeline 350 verknüpft ist, eine deutlich größere Menge an Vertex-Daten und Vertex-Attributen erzeugen als die Aufgabenerzeugungseinheit, die mit einer weiteren Grafikverarbeitungs-Pipeline 350 verknüpft ist, selbst in Fällen, in denen die zwei Grafikverarbeitungs-Pipelines 350 die gleiche Menge an Attributen zu Beginn der Alpha-Phasen-Pipeline verarbeiten. In derartigen Fällen verteilt die Aufgabenverteilungseinheit die Attribute, die von der Alpha-Phasen-Pipeline erzeugt werden, derart um, dass jede Grafikverarbeitungs-Pipeline 350 ungefähr die gleiche Arbeitsauslastung zu Beginn der Beta-Phasen-Pipeline hat.In a system with multiple graphics processing pipelines 350 For example, the vertex data and vertex attributes associated with a set of graphical objects can be split up into each graphics processing pipeline 350 has about the same amount of work in the alpha phase. The alpha phase processing can significantly increase the amount of vertex data and vertex attributes such that the amount of vertex data and vertex attributes generated by the task generation unit is significantly larger than the amount of vertex data and vertex attributes used by the PD 355 and the VAF 360 were generated. Furthermore, the task generation unit, which can be used with a single graphics processing pipeline 350 to generate a significantly larger amount of vertex data and vertex attributes than the task generation unit that is connected to another graphics processing pipeline 350 even in cases where the two graphics processing pipelines are linked 350 handle the same set of attributes at the beginning of the alpha-phase pipeline. In such cases, the task distribution unit redistributes the attributes generated by the alpha-phase pipeline such that each graphics processing pipeline 350 has about the same workload at the beginning of the beta-phase pipeline.

Zu beachten ist, das hierin Verweise auf den gemeinsam benutzten Speicher einen oder mehrere beliebige technisch machbare Speicher bezeichnen, wozu gehören ohne Einschränkung: ein lokaler Speicher, der von einem oder mehreren Datenstrom-Multiprozessoren gemeinsam benutzt wird, oder ein Speicher, auf den über die Speicherschnittstelle 214 zugegriffen werden kann, etwa ein Cache-Speicher, der Parallelverarbeitungsspeicher 204 oder der Systemspeicher 104. Zu beachten ist ferner, dass im hierin verwendeten Sinne Verweise auf einen Cache-Speicher einen oder mehrere beliebige technisch machbare Speicher bezeichnen, wozu gehören, ohne Einschränkung: ein L1-Cache-Speicher, ein L1.5-Cache-Speicher und die L2-Cache-Speicher.It should be noted that references herein to shared memory refer to one or more arbitrary technically feasible memory, including but not limited to: a local memory shared by one or more data stream multiprocessors, or memory accessed by the one or more data stream multiprocessors memory interface 214 can be accessed, such as a cache memory, the parallel processing memory 204 or the system memory 104 , It should also be noted that, as used herein, references to a cache memory refer to one or more arbitrary technically feasible memory, including, without limitation, an L1 cache, an L1.5 cache, and the L2 cache. cache memory.

PfadbilderzeugungPath imaging

Die Softwareanwendung 125 aus 1 kann die Grafikverarbeitungs-Pipeline 350 so konfigurieren, dass diverse Operationen in Bezug auf die Erzeugung von Pixeldaten auf der Grundlage von Grafikdaten, die von der CPU 102 und/oder dem Systemspeicher 104 bereitgestellt werden, ausgeführt werden. Insbesondere kann die Softwareanwendung 125 die Grafikverarbeitungs-Pipeline 350 konfigurieren, um Operationen auszuführen, die die Pfadbilderzeugung betreffen. Wie zuvor hierin ausgeführt ist, ist die Pfadbilderzeugung die Basis für eine Reihe wichtiger Bilderzeugungsstandards, etwa HTML 5 Canvas und SVG. Im Betrieb implementiert die PPU 202 eine Schablonenieren-dann-Abdecken-Pfadbilderzeugung mit N Abdeckungsabtastungen pro Pixel und M Farbabtastungen pro Pixel, wobei N größer ist als M. Im allgemeinen definiert die Softwareanwendung 125 einen Pfad und konfiguriert die PPU 202, um die Schablonieren-dann-Abdecken-Pfadbilderzeugung als zwei der Reihe nach ausgeführte Bilderzeugungsdurchläufe auszuführen – der Pfad-Schablonierungsdurchlauf und der Pfad-Abdeckungsdurchlauf.The software application 125 out 1 can the graphics processing pipeline 350 to configure various operations related to the generation of pixel data based on graphics data provided by the CPU 102 and / or system memory 104 be performed. In particular, the software application 125 the graphics processing pipeline 350 configure to perform operations related to path building. As noted hereinbefore, path imaging is the basis for a number of important imaging standards, such as HTML 5 Canvas and SVG. In operation, the PPU implements 202 a template kidney-then- Covering path mapping with N coverage scans per pixel and M color scans per pixel, where N is greater than M. In general, the software application defines 125 a path and configures the PPU 202 to execute the stencil-then-masking path generation as two sequentially executed imaging passes - the Path Masking Pass and the Path Cover Pass.

4 ist eine Konzeptansicht, die einen Pfad-Schablonierungsdurchlauf 485 und einem Pfad-Abdeckungsdurchlauf 495 zeigt, in die die PPU 202 aus 2 für die Implementierung gemäß einer Ausführungsform der vorliegenden Erfindung konfiguriert werden kann. Wie zuvor hierin offenbart ist, ist die PPU 202 ausgebildet, die Schablonieren-dann-Abdecken-Pfadbilderzeugung auszuführen. Zunächst führt die PPU 202 den Pfad-Schablonierungsdurchlauf 485 aus, wodurch Schablonendaten aus dem Schablonierungsdurchlauf 445 erzeugt werden. Nachfolgend initiiert die PPU 202 den Pfad-Abdeckungsdurchlauf 495, wodurch ein als Bild erzeugter Pfad 455 erzeugt wird. 4 is a conceptual view showing a path template pass 485 and a path coverage pass 495 shows in which the PPU 202 out 2 can be configured for implementation according to an embodiment of the present invention. As previously disclosed herein, the PPU 202 configured to perform the stencil-then-masking path generation. First, the PPU performs 202 the path template pass 485 from, resulting in template data from the stenciling pass 445 be generated. Subsequently, the PPU initiates 202 the path cover pass 495 , whereby a path generated as an image 455 is produced.

Beim Betrieb spezifiziert die Softwareanwendung 125 aus 1 einen Pfad und initiiert den Pfad-Schablonierungsdurchlauf 485. Bei Empfang der Pfadspezifikation erzeugt die PPU 202 eine Pfadgeometrie 403, die den Pfad repräsentiert. Wie gezeigt, verarbeiten die VPC-Einheit 370, die Rastereinheit 385, die PS-Einheit 390 und die der ROP-Einheit 395 die Pfadgeometrie 403, wodurch die Schablonendaten für den Schablonierungsdurchlauf 445 in einem Schablonenpuffer erzeugt werden. In anderen Ausführungsformen kann die PPU die Pfadgeometrie in einer beliebigen technisch machbaren Weise unter Anwendung beliebiger verfügbarer Verarbeitungseinheiten in beliebiger Kombination verarbeiten. Die Werte in dem Schablonenpuffer geben an, welche Abdeckungsabtastungen von dem Pfad abgedeckt sind. Wie zuvor hierin offenbart ist, unterhält die PPU 202N Abdeckungsabtastungen pro Pixel und M Farbabtastungen pro Pixel, wobei N größer ist als M ist. Während des Pfad-Schablonierungsdurchlauf 485 werden die Abdeckungsabtastungen aktualisiert, aber die Farbabtastungen werden nicht aktualisiert.In operation, the software application specifies 125 out 1 a path and initiates the path template pass 485 , Upon receipt of the path specification, the PPU generates 202 a path geometry 403 that represents the path. As shown, process the VPC unit 370 , the grid unit 385 , the PS unit 390 and the ROP unit 395 the path geometry 403 , whereby the template data for the stenciling pass 445 be generated in a template buffer. In other embodiments, the PPU may process the path geometry in any technically feasible manner using any available processing units in any combination. The values in the template buffer indicate which coverage scans are covered by the path. As disclosed hereinbefore, the PPU maintains 202N Coverage scans per pixel and M color scans per pixel, where N is greater than M. During the path stenciling pass 485 the coverage scans are updated, but the color scans are not updated.

Nach der Erzeugung der Schablonendaten aus dem Schablonierungsdurchlauf 445 erzeugt die PPU 202 eine Abdeckungsgeometrie 405, die den Pfad konservativ abdeckt. Wie gezeigt, verarbeiten die VPC-Einheit 370, die Rastereinheit 385, die PS-Einheit 390 und die ROP-Einheit 395 die Abdeckungsgeometrie 405, wodurch die abgedeckten Pixel schattiert werden und wodurch der als Bild erzeugte Pfad 455 erzeugt wird. In anderen Ausführungsformen kann die PPU die Abdeckungsgeometrie in einer beliebigen technisch machbaren Weise unter Anwendung beliebiger verfügbarer Verarbeitungseinheiten in beliebiger Kombination verarbeiten. Während dieses Prozesses reduziert die PPU 202 die Anzahl an Abdeckungsabtastungen auf die Anzahl an Farbabtastungen. In einigen Realisierungen ermittelt für jede Farbabtastung die PPU 202 eine Gruppe aus N/M Abdeckungsabtastungen, die zu der Farbabtastung gehört, und erzeugt einen Undurchlässigkeitswert für die Farbabtastung auf der Grundlage des Anteils der N/N Abdeckungsabtastungen, die abgedeckt werden. Wenn beispielsweise die Anzahl an Abdeckungsabtastungen pro Pixel 16 und die Anzahl der Farbabtastungen pro Pixel 4 beträgt, dann verknüpft die PPU 202 Gruppen mit 4 Abdeckungsabtastungen mit einer jeweiligen Farbabtastung, und die möglichen Undurchlässigkeitswerte sind 0, 0,25, 0,5, 0,75 und 1,0. Zu beachten ist, dass die PPU 202 die Schablonendaten aus dem Schablonierungsdurchlauf 455, die in dem Schablonenpuffer enthalten sind, verwendet, um Fragmente und Abdeckungsabtastungen zu verwerfen, die nicht von dem Pfad abgedeckt werden. Die PPU 202 schreibt dann die verbleibenden Fragmente in den Farbpuffer als den als Bild erzeugten Pfad 455.After generating the template data from the template pass 445 generates the PPU 202 a cover geometry 405 that conservatively covers the path. As shown, process the VPC unit 370 , the grid unit 385 , the PS unit 390 and the ROP unit 395 the cover geometry 405 whereby the covered pixels are shaded and thereby the path created as an image 455 is produced. In other embodiments, the PPU may process the coverage geometry in any technically feasible manner using any available processing units in any combination. During this process, the PPU reduces 202 the number of coverage scans on the number of color scans. In some implementations, the PPU determines for each color scan 202 a group of N / M coverage samples pertaining to the color scan and produces an opacity value for the color scan based on the proportion of N / N coverage scans that are covered. For example, if the number of coverage scans per pixel 16 and the number of color scans per pixel 4 is then linked to the PPU 202 Groups of 4 coverage scans with a respective color scan, and the possible opacity values are 0, 0.25, 0.5, 0.75, and 1.0. It should be noted that the PPU 202 the template data from the template pass 455 used in the template buffer are used to discard fragments and coverage scans that are not covered by the path. The PPU 202 then writes the remaining fragments in the color buffer as the image generated path 455 ,

Wie zuvor hierin offenbart ist, ermitteln typische bekannte PPUs, dass eine Farbabtastung nur teilweise von einem grafischen Grundelement an einer gemeinsamen Kante abgedeckt ist. Folglich könnten die PPUs Verschmelzungsbildfehler an den gemeinsamen Kanten einführen. Im Gegensatz dazu ermittelt die PPU 202, dass jede Farbabtastung entweder vollständig abgedeckt oder vollständig nicht abgedeckt ist von dem grafischen Grundelement, wobei dies für jede gemeinsame Kante gilt. Jedoch kann die PPU 202 ermitteln, dass eine spezielle Farbabtastung nur teilweise von einem grafischen Grundelement an einer nicht gemeinsam benutzten Kante abgedeckt ist. Daher ermöglichen die hierin offenbarten Techniken, dass die PPU 202 effizient Pfade erzeugt unter Anwendung von mehr Abdeckungsabtastungen als Farbabtastungen, während sichergestellt ist, dass die als Bild erzeugten Pfade keine Verschmelzungsbildfehler, die mit gemeinsamen Kanten verknüpft sind, enthalten.As previously disclosed herein, typical known PPUs determine that a color scan is only partially covered by a primitive at a common edge. Consequently, the PPUs could introduce merge image errors at the common edges. In contrast, the PPU determines 202 in that each color scan is either completely covered or completely uncovered by the graphic primitive, and this applies to each common edge. However, the PPU can 202 determine that a particular color scan is only partially covered by a primitive on a non-shared edge. Therefore, the techniques disclosed herein allow the PPU 202 efficiently generates paths using more coverage scans than color scans, while ensuring that the image generated paths do not contain merge image errors associated with shared edges.

5 ist eine Konzeptansicht, die einen Dreiecksfächer 500 zeigt, für dessen Erzeugung die Grafikverarbeitungs-Pipeline 350 aus 3 gemäß einer Ausführungsform der vorliegenden Erfindung konfiguriert werden kann. Wie zuvor hierin offenbart ist, ist die PPU 202 ausgebildet, die Pfadgeometrie 403 und die Abdeckungsgeometrie 405 als Teil der Schablonieren-dann-Abdecken-Pfadbilderzeugung zu erzeugen. Der Dreiecksfächer 500 kann in einem oder beiden, d. h. in der Pfadgeometrie 403 und der Abdeckungsgeometrie 405, enthalten sein. 5 is a concept view that has a triangle fan 500 for which it produces the graphics processing pipeline 350 out 3 according to an embodiment of the present invention can be configured. As previously disclosed herein, the PPU 202 trained, the path geometry 403 and the cover geometry 405 as part of the template-then-masking path generation. The triangular fan 500 can in one or both, ie in the path geometry 403 and the cover geometry 405 to be included.

Wie gezeigt, ist der Dreiecksfächer 500 eine Gruppe verbundener Dreiecke, die einen einzelnen Vertex gemeinsam haben. Wie ferner gezeigt ist, enthält der Dreiecksfächer 500 gemeinsame Kanten 510, nicht gemeinsame Kanten 520 und interne Kanten 530. Insbesondere ist jede der gemeinsamen Kanten 510 auch in einem weiteren Pfad (nicht gezeigt) enthalten. Beispielsweise kann jede der gemeinsamen Kanten 510 in einem anderen grafischen Grundelement auch enthalten sein. Im Gegensatz dazu sind die nicht gemeinsamen Kanten 520 und die internen Kanten 530 nicht in anderen Pfaden enthalten. Die gemeinsamen Kanten 510 können durch eine beliebige technisch machbare Weise ermittelt werden. Beispielsweise kann die Softwareanwendung 125 aus 1 explizit die gemeinsamen Kanten 510 als Teil der Pfadspezifizierung ermitteln. Ferner kann der Gerätetreiber 103 aus 1 gemeinsame Kanten 510 als Teil der Verarbeitung der Pfadspezifikation bezeichnen.As shown, the triangle fan is 500 a group of connected triangles that share a single vertex. As further shown is the triangle fan contains 500 common edges 510 , not common edges 520 and internal edges 530 , In particular, each of the common edges 510 also included in another path (not shown). For example, each of the common edges 510 also be included in another graphic primitive. In contrast, the non-common edges 520 and the internal edges 530 not included in other paths. The common edges 510 can be determined by any technically feasible manner. For example, the software application 125 out 1 explicitly the common edges 510 as part of the path specification. Furthermore, the device driver may 103 out 1 common edges 510 as part of the processing of path specification.

Wie gezeigt, sind die internen Kanten 530 solche Kanten, die innerhalb des Dreiecksfächers 500 liegen. Jede der internen Kanten 530 ist gemeinsam für verbundene Dreiecke, die in dem Dreiecksfächer 500 enthalten sind. Die internen Kanten 530 können durch eine beliebige technisch machbare Weise ermittelt werden. Beispielsweise können die internen Kanten 530 auf der Grundlage der Spezifikation des Dreiecksfächers 500 ermittelt werden.As shown, the internal edges are 530 such edges that are inside the triangle fan 500 lie. Each of the internal edges 530 is common for connected triangles that are in the triangle fan 500 are included. The internal edges 530 can be determined by any technically feasible manner. For example, the internal edges 530 based on the specification of the triangle fan 500 be determined.

In einer Ausführungsform ermittelt die PPU 202 während des Pfad-Schablonierungsdurchlaufs 485 die Abdeckung im Hinblick auf die gemeinsamen Kanten 510 anders als die Abdeckung für die nicht gemeinsamen Kanten 520 und die internen Kanten 530. Nachfolgend ermittelt die PPU 202 während des Pfad-Abdeckungsdurchlaufs 495 die Abdeckung im Hinblick auf die internen Kanten 530 anders als die Abdeckung im Hinblick auf die gemeinsamen Kanten 510 und die nicht gemeinsamen Kanten 520. In alternativen Ausführungsformen kann die PPU ausgebildet sein, eine beliebige Anzahl anderer Kanteneigenschaften zu ermitteln und nachfolgend den Bilderzeugungsprozess auf der Grundlage dieser Kanteneigenschaften modifizieren. Beispielsweise unterscheiden in einigen anderen Ausführungsformen die PPU während des Pfad-Abdeckungsdurchlaufs nicht zwischen gemeinsamen Kanten, nicht gemeinsamen Kanten und internen Kanten, wenn die Abdeckung ermittelt wird.In one embodiment, the PPU determines 202 during the path template pass 485 the cover with regard to the common edges 510 unlike the cover for the non-common edges 520 and the internal edges 530 , Subsequently, the PPU determines 202 during the path coverage pass 495 the cover with regard to the internal edges 530 unlike the cover with regard to the common edges 510 and the non-common edges 520 , In alternative embodiments, the PPU may be configured to determine any number of other edge properties and subsequently modify the imaging process based on those edge properties. For example, in some other embodiments, the PPU does not distinguish between common edges, non-common edges, and internal edges during the path coverage pass when the coverage is detected.

Wie der Fachmann erkennt, ist der Dreiecksfächer 501 ein Beispiel eines speziellen grafischen Grundelements, für das die Grafikverarbeitungs-Pipeline 350 ausgebildet ist, eine Bilderzeugung auszuführen. Andere grafische Grundelemente, etwa Dreiecksstreifen, können ebenfalls gemeinsame Kanten 510, nicht gemeinsame Kanten 520 und interne Kanten 530 aufweisen. Derartige grafische Grundelemente werden von der PPU 202 in ähnlicher Weise verarbeitet.As those skilled in the art will recognize, the triangle fan is 501 an example of a special graphical primitive for which the graphics processing pipeline 350 is designed to perform an image formation. Other graphic primitives, such as triangular stripes, can also share edges 510 , not common edges 520 and internal edges 530 exhibit. Such graphic primitives are provided by the PPU 202 processed in a similar way.

6 ist eine Konzeptansicht, die eine Abtastgruppe 610 und Abtastkantenregeln zeigt, die die Rastereinheit 385 aus 3 implementieren kann, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie zuvor hierin erläutert ist, unterstützt die PPU 202 N Abdeckungsabtastungen pro Pixel und M Farbabtastungen pro Pixel, wobei N größer ist als M ist. Wie gezeigt, ermittelt die PPU 202 für jede Farbabtastung die Abtastgruppe 610 aus N/M Abdeckungsabtastungen, die zu der Farbabtastung gehören. Ferner bezeichnet die PPU 202 eine der Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten ist, als eine primäre Abtastung 617, und der Rest der Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten sind, wird als sekundäre Abtastungen 615 bezeichnet. 6 is a concept view, which is a sampling group 610 and scanning edge rules showing the rasterizer unit 385 out 3 can implement, according to an embodiment of the present invention. As previously explained herein, the PPU supports 202 N coverage scans per pixel and M color scans per pixel, where N is greater than M. As shown, the PPU determines 202 for each color scan the sample group 610 from N / M coverage samples belonging to the color scan. Further, the PPU designates 202 one of the coverage samples included in the sample group 610 is included as a primary scan 617 , and the rest of the coverage samples included in the sample group 610 are included as secondary scans 615 designated.

Wie gezeigt, stellt 6 die Abtastgruppe 610 als gepunktetes Quadrat dar, wobei die primäre Abtastung 617 als kräftig gezeichneter umrissener Punkt dargestellt ist und die sekundären Abtastungen 615 als leicht umrissene Punkte gezeigt sind. Ferner zeigt 6 abgedeckte Abtastungen als gefüllt und nicht abgedeckte Abtastungen als nicht gefüllt. Wie ferner gezeigt ist, enthält jede der Abtastgruppe 610 eine einzelne primäre Abtastung 617 und drei sekundäre Abtastungen 615. Das Computersystem 100 kann die Position der Abdeckungsabtastungen ermitteln und die geringere Abdeckungsabtastungen 617 in beliebig technischer Weise kennzeichnen. Beispielsweise kann der Gerätetreiber 103 die Positionen der Abdeckungsabtastungen ermitteln und kann die erste Abdeckungsabtastung, die in jeder Abtastgruppe 610 enthalten ist, als die primäre Abdeckungsabtastung 617 kennzeichnen. Jedoch wählt für jede Abtastgruppe 610 das Computersystem 100 die entsprechende primäre Abtastung 617 deterministisch und auch in konsistenter Weise über die Pfade hinweg aus. In anderen Ausführungsformen kann die Abtastgruppe eine beliebige Anzahl einschließlich von null an sekundären Abtastungen enthalten.As shown, presents 6 the sampling group 610 as a dotted square, where the primary scan 617 is shown as a bold outlined dot and the secondary scans 615 are shown as slightly outlined dots. Further shows 6 covered samples as filled and uncovered samples as unfilled. As further shown, each of the sample groups includes 610 a single primary scan 617 and three secondary scans 615 , The computer system 100 can detect the position of the coverage scans and the lower coverage scans 617 in any technical way mark. For example, the device driver may be 103 determine the positions of the coverage samples and may determine the first coverage scan that is in each scan group 610 is included as the primary coverage scan 617 mark. However, selects for each sample group 610 the computer system 100 the corresponding primary scan 617 deterministic and consistent across the paths. In other embodiments, the sample group may include any number, including zero to secondary samples.

Vorteilhafterweise ist in einer Ausführungsform die Rastereinheit 385 ausgebildet, zwischen Abtastkantenregeln auf der Grundlage von Eigenschaften auszuwählen, die mit einer jeweiligen Kante verknüpft sind. Zu beachten ist, dass die Abtastkantenregeln, die hierin auch als „Abtastregeln” bezeichnet sind, Rastereinteilungsergebnisse sind, die auf eine Abdeckungsabtastung angewendet werden können, um zu ermitteln, ob die Abdeckungsabtastung als innerhalb einer Kante erachtet wird. Für jede Kante wendet die Rastereinheit 385 die ausgewählte Abtastkantenregel auf die Kante an, um die Abdeckung der Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten sind, zu ermitteln. Die Abtastkantenregeln beinhalten, ohne Einschränkung, eine individuelle Abtastkantenregeln 455, eine primäre Abtastkantenregeln 465 und eine beliebige Abtastkantenregel 475. Wie in konventionellen Rastereinteilungshierarchie oder ermittelt die Rastereinheit 385 die Abdeckung der Abtastgruppe 610 in Bezug auf ein spezielles Grundelement, indem der Schnitt oder die Vereinigung der Abdeckungsergebnisse, die zu jeder Kante des Grundelements gehören, ermittelt werden.Advantageously, in one embodiment, the raster unit 385 configured to select between scan edge rules based on properties associated with a respective edge. Note that the scan edge rules, also referred to herein as "scan rules," are rasterizer results that can be applied to a coverage scan to determine if the coverage scan is considered to be within an edge. For each edge applies the grid unit 385 the selected scan edge rule on the edge to the coverage of the coverage scans that are in the scan group 610 are to be determined. The scan edge rules include, without limitation, individual scan edge rules 455 , a primary scan edge rules 465 and any scan edge rule 475 , As in conventional Grid division hierarchy or determines the grid unit 385 the coverage of the scanning group 610 with respect to a particular primitive, by determining the intersection or union of the coverage results associated with each edge of the primitive.

Bei Anwendung der individuellen Abtastkantenregel 455 ermittelt die Rastereinheit 385 die Abdeckung jeder der Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten sind, unabhängig zu anderen Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten sind. Insbesondere ermittelt die Rastereinheit 385 die Abdeckung der primären Abtastung 617 auf der Grundlage der Position der primären Abtastung 617 relativ zu der Kante. In ähnlicher Weise ermittelt die Rastereinheit 385 für jede der sekundären Abtastungen 615 die Abdeckung der sekundären Abtastung 615 auf der Grundlage der Position der sekundären Abtastung 615 relativ zu der Kante.When using the individual scanning edge rule 455 determines the grid unit 385 the coverage of each of the coverage samples included in the scan set 610 regardless of other coverage samples included in the sample group 610 are included. In particular, the grid unit determines 385 the cover of the primary scan 617 based on the position of the primary scan 617 relative to the edge. Similarly, the rasterizer determines 385 for each of the secondary scans 615 the coverage of the secondary scan 615 based on the position of the secondary scan 615 relative to the edge.

Wie gezeigt, wendet die Rastereinheit 385 die individuelle Abtastkantenregel 455 auf zwei Abtastgruppe 610 an, die auf einer Kante eines Dreiecks angeordnet sind. Für die linke Abtastgruppe 610 ermittelt die Rastereinheit 385, dass die Position einer der sekundären Abtastungen 615 innerhalb der Kante des Dreiecks liegt, und daher abgedeckt ist. Für die rechte Abtastgruppe 610 ermittelt die Rastereinheit 385, dass die Positionen der primären Abtastung 617 und von zwei der drei sekundären Abtastungen 615 innerhalb der Kante des Dreiecks liegen und somit abgedeckt sind.As shown, the grid unit applies 385 the individual scanning edge rule 455 on two scanning group 610 on, which are arranged on an edge of a triangle. For the left sampling group 610 determines the grid unit 385 that the position of one of the secondary scans 615 is within the edge of the triangle, and therefore covered. For the right scanning group 610 determines the grid unit 385 in that the positions of the primary scan 617 and two of the three secondary scans 615 lie within the edge of the triangle and are thus covered.

Breite Anwendung der primären Abtastkantenregel 465 ermittelt die Rastereinheit 385 die Abdeckung aller Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten sind, auf der Grundlage der Position der primären Abtastung 617 relativ zu der Kante. Folglich ermittelt die Rastereinheit 385, dass entweder alle Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten sind, abgedeckt sind, oder dass alle Abdeckungsabtastungen, die in der Abtastgruppe 610 enthalten sind, nicht abgedeckt sind. Vorteilhafterweise stellt die Bestimmung der Abdeckung auf diese Weise sicher, dass für die Farbabtastung, die mit der Abtastgruppe 610 verknüpft ist, die Abdeckung nicht mit einer Undurchsichtigkeit während der Reduktion von (N/M) Abdeckungsabtastungen auf eine einzelne Farbabtastung verschmolzen wird.Broad application of the primary scanning edge rule 465 determines the grid unit 385 the coverage of all coverage samples that are in the scan set 610 are included, based on the position of the primary scan 617 relative to the edge. Consequently, the raster unit determines 385 in that either all coverage samples included in the sample group 610 are included, or that all coverage scans that are in the scan group 610 are not covered. Advantageously, the determination of the coverage in this way ensures that for the color scanning associated with the scanning group 610 the cover is not fused with opacity during the reduction of (N / M) coverage scans to a single color scan.

Wie gezeigt, wendet die Rastereinheit 385 die primäre Abtastkantenregel 465 auf zwei Abtastgruppen 610 an, die auf einer Kante eines Dreiecks angeordnet sind. Für die linke Abtastgruppe 610 ermittelt die Rastereinheit 385, dass die Position der primären Abtastung 617 außerhalb der Kante des Dreiecks liegt, und somit die primäre Abtastung 617 und alle sekundären Abtastungen 615 nicht abgedeckt sind. Für die rechte Abtastgruppe 610 ermittelt die Rastereinheit 385, dass die Position der primären Abtastung 617 innerhalb der Kante des Dreiecks liegt und somit die primäre Abtastung 617 und alle sekundären Abtastungen 615 abgedeckt sind.As shown, the grid unit applies 385 the primary scan edge rule 465 on two scanning groups 610 on, which are arranged on an edge of a triangle. For the left sampling group 610 determines the grid unit 385 that the position of the primary scan 617 is outside the edge of the triangle, and thus the primary scan 617 and all secondary scans 615 are not covered. For the right scanning group 610 determines the grid unit 385 that the position of the primary scan 617 lies within the edge of the triangle and thus the primary scan 617 and all secondary scans 615 are covered.

Wenn bei der Anwendung der beliebigen Abtastkantenregel 475 die Rastereinheit 385 ermittelt, dass die Position der primären Abtastung 617 oder einer der sekundären Abtastungen 615 innerhalb des Grundelements relativ zu der Kante liegt, dann ermittelt die Rastereinheit 385, dass alle Abdeckungsabtastungen abgedeckt sind. Die Ermittelung der Abdeckung auf diese Weise stellt sicher, dass für jede Farbabtastung, die mit der Abtastgruppe 610 verknüpft ist, die Abdeckung nicht mit Undurchlässigkeit während der Reduktion von (N/M) Abdeckungsabtastungen auf eine einzelne Farbabtastung verschmolzen wird. Zu beachten ist, dass die beliebige Abtastkantenregel 475 konservativer als die individuelle Abtastkantenregel 455 und die primäre Abtastkantenregel 465 ist.When applying any scanning edge rule 475 the grid unit 385 determines that the position of the primary scan 617 or one of the secondary scans 615 within the primitive relative to the edge, then the rasterizer determines 385 in that all coverage scans are covered. Determining the coverage in this way ensures that for each color scan that matches the scan group 610 the cover is not fused with opacity during the reduction of (N / M) coverage scans to a single color scan. It should be noted that the arbitrary scanning edge rule 475 more conservative than the individual scanning edge rule 455 and the primary scanning edge rule 465 is.

Wie gezeigt, wendet die Rastereinheit 385 die beliebige Abtastkantenregel 465 auf zwei Abtastgruppen 610 an, die auf einer Kante eines Dreiecks liegen. Für die linke Abtastgruppe 610 ermittelt die Rastereinheit 385, dass die Position einer der vier Abdeckungsabtastungen innerhalb der Kante des Dreiecks liegt und somit die primäre Abtastung 617 und alle sekundären Abtastungen 615 abgedeckt sind. Für die rechte Abtastgruppe 610 ermittelt die Rastereinheit 385, dass die Positionen von drei von vier Abdeckungsabtastungen innerhalb der Kante des Dreiecks liegen, und dass daher die primäre Abtastung 617 und alle sekundären Abtastungen 615 abgedeckt sind.As shown, the grid unit applies 385 the arbitrary scanning edge rule 465 on two scanning groups 610 which lie on one edge of a triangle. For the left sampling group 610 determines the grid unit 385 in that the position of one of the four coverage samples is within the edge of the triangle and thus the primary scan 617 and all secondary scans 615 are covered. For the right scanning group 610 determines the grid unit 385 in that the positions of three out of four coverage scans are within the edge of the triangle, and therefore the primary scan 617 and all secondary scans 615 are covered.

Wiederum kann die Rastereinheit 385 ausgebildet sein, unterschiedliche Abtastkantenregeln auf die Kanten eines Grundelements auf der Grundlage von Eigenschaften der Kante anzuwenden. Ferner kann die Rastereinheit 385 ausgebildet sein, unterschiedliche Kantenregeln auf der Grundlage davon auszuwählen, ob die PPU 202 den Pfad-Schablonierungsdurchlauf 485 oder den Pfad-Abdeckungsdurchlauf 495 ausführt. Obwohl die in Verbindung mit der 6 beschriebenen Beispiele eine Abdeckung relativ zu einer einzelnen Kante zeigen, ermittelt die Rastereinheit 385 die Abdeckung der Abtastgruppe 610 relativ zu einem speziellen Grundelement, indem der Schnitt der Abdeckungsergebnisse, die jede Kante des Grundelements betreffen, ermittelt wird.Again, the grid unit 385 be adapted to apply different Abtastkantenregeln on the edges of a primitive based on properties of the edge. Furthermore, the raster unit 385 be configured to select different edge rules based on whether the PPU 202 the path template pass 485 or the path coverage pass 495 performs. Although in conjunction with the 6 described examples show a cover relative to a single edge, determines the raster unit 385 the coverage of the scanning group 610 relative to a particular primitive by determining the intersection of the coverage results pertaining to each edge of the primitive.

In einer Ausführungsform wendet die Rastereinheit 385 während des Pfad-Schablonierungsdurchlaufs 485 die individuelle Abtastkantenregel 455 auf nicht gemeinsame Kanten 520 und die internen Kanten 530 an. Demgegenüber wendet die Rastereinheit 385 die primäre Abtastkantenregel 465 auf die gemeinsamen Kanten 510 an. Da die Rastereinheit 385 ermittelt, dass jede Abtastgruppe 610 entweder vollständig abgedeckt oder vollständig nicht abgedeckt ist relativ zu dem gemeinsamen Kanten 510, können Verschmelzungsbildfehler, die mit gemeinsamen Kanten im Stand der Technik verknüpft sind, reduziert werden.In one embodiment, the rasterizer employs 385 during the path template pass 485 the individual scanning edge rule 455 on not common edges 520 and the internal edges 530 at. In contrast, the grid unit applies 385 the primary scan edge rule 465 on the common edges 510 at. Because the grid unit 385 determines that each sample group 610 either completely covered or completely uncovered is relative to the common edges 510 , blurring artifacts associated with common edges in the prior art can be reduced.

Während des Pfad-Abdeckungsdurchlaufs 495 wendet die Rastereinheit 385 die beliebige Abtastkantenregel 475 auf die nicht gemeinsamen Kanten 520 und die gemeinsamen Kanten 510 an und wendet die primäre Abtastkantenregel 465 auf die internen Kanten 530 an. Da wiederum die Rastereinheit 385 ermittelt, dass jede Abtastgruppe 610 entweder vollständig abgedeckt oder vollständig nicht abgedeckt ist relativ zu dem gemeinsamen Kanten 510, können Verschmelzungsbildfehler, die mit gemeinsamen Kanten in bekannten Techniken verknüpft sind, reduziert werden. Durch die Anwendung der primären Abtastkantenregel 465 auf die internen Kanten 530 vermeidet ferner die Rastereinheit 385 eine doppelte Rastereinteilung während des Pfad-Abdeckungsdurchlaufs 495.During the path coverage pass 495 applies the grid unit 385 the arbitrary scanning edge rule 475 on the non-common edges 520 and the common edges 510 and applies the primary scanning edge rule 465 on the internal edges 530 at. Again, the grid unit 385 determines that each sample group 610 either completely covered or completely uncovered is relative to the common edges 510 , blurring artifacts associated with common edges in known techniques can be reduced. By applying the primary scanning edge rule 465 on the internal edges 530 further avoids the raster unit 385 a double rasterization during the path coverage pass 495 ,

In einigen Ausführungsformen der vorliegenden Erfindung kann das Computersystem 100 die PPU 202 konfigurieren, um in effizienter Weise die primäre Abtastkantenregeln 465 auf Basis von Pfad zu Pfad anzuwenden. Insbesondere wenn das Computersystem 100 ermittelt, dass eine der Kanten, die in einem Pfad enthalten ist, eine gemeinsame Kante 510 ist, dann kann das Computersystem 100 die PPU 202 konfigurieren, um die Abdeckung der gesamten Abtastgruppe 610 auf der Grundlage der Position der primären Abtastung 617 zu bestimmen.In some embodiments of the present invention, the computer system 100 the PPU 202 to efficiently configure the primary scan edge rules 465 apply based on path to path. Especially if the computer system 100 determines that one of the edges contained in a path has a common edge 510 is, then the computer system 100 the PPU 202 configure the coverage of the entire scan group 610 based on the position of the primary scan 617 to determine.

Wenn in einer Ausführungsform der Gerätetreiber 102 aus 1 ermittelt, dass ein Pfad gemeinsame Kanten 510 enthält, dann macht der Gerätetreiber 103 die Positionen der Abdeckungsabtastungen, die in jeder der Abtastgruppe 610 enthalten sind, gleich, wenn der Pfad in Raster eingeteilt wird. Insbesondere bevor die Rastereinheit 385 ein Grundelement in Raster einteilt, das mit einem derartigen Pfad verknüpft ist, ändert der Gerätetreiber 103 die Positionen aller sekundären Abtastungen 615 so, dass sie mit der Position der zugehörigen primären Abtastung 617 übereinstimmen. Folglich ordnet für jede Abtastgruppe 610 die Rastereinheit 385 allen Abdeckungsabtastungen eine einzelne Position zu. Nachdem die Rastereinheit 385 das Grundelement in Raster eingeteilt hat, stellt der Gerätetreiber 103 die Positionen der sekundären Abtastungen 615 wieder entsprechend den ursprünglich zugewiesenen Positionen her. Der Fachmann erkennt, dass Operationen, die die Gleichmachung der Positionen und die Wiederherstellung der Positionen der sekundären Abtastungen 615 beinhalten, reduziert werden können, wenn die PPU 202 eine Sequenz aus Grundelementen verarbeitet, die alle gemeinsame Kanten 510 enthalten.In one embodiment, the device driver 102 out 1 determines that a path has common edges 510 contains, then makes the device driver 103 the positions of the coverage samples that are in each of the sample groups 610 are included, the same if the path is divided into rasters. Especially before the grid unit 385 If a primitive divides into rasters associated with such a path, the device driver changes 103 the positions of all secondary scans 615 so that they match the position of the associated primary scan 617 to match. Consequently, assigns for each sample group 610 the grid unit 385 all cover scans a single position. After the grid unit 385 The basic element is rasterized by the device driver 103 the positions of the secondary scans 615 again according to the originally assigned positions. The skilled artisan recognizes that operations that equalize the positions and restore the positions of the secondary scans 615 can be reduced if the PPU 202 a sequence of primitives that all share common edges 510 contain.

Wenn in einer weiteren Ausführungsform das Computersystem 100 ermittelt, dass ein Pfad gemeinsame Kanten 510 enthält, konfiguriert das Computersystem 100 die PS-Einheit 390, um eine einzelne Ausgabeabdeckung allen Abtastungen zuzuordnen, die in der Abtastgruppe 510 enthalten sind, wobei dies über eine Abtastmaske erfolgt. Im Betrieb wählt die PS-Einheit 390 die Ausgabeabdeckung der primären Abtastung 617 aus, ordnet die ausgewählte Abdeckung jedem der zugeordneten sekundären Abtastungen 615 zu und schreibt die entsprechende Abtastmaske.In another embodiment, if the computer system 100 determines that a path has common edges 510 contains, configures the computer system 100 the PS unit 390 to assign a single output cover to all samples in the sample group 510 are included, this is done via a sampling mask. In operation, the PS unit selects 390 the output coverage of the primary scan 617 off, assigns the selected coverage to each of the associated secondary scans 615 and writes the corresponding sampling mask.

7 ist eine Konzeptansicht, die einen Indexpuffer 760 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie gut bekannt ist, kann der Indexpuffer 760 verwendet werden, um den Speicher zu reduzieren, der zur Speicherung von grafischen Grundelementen als Teil der indizierten Geometrie-Bilderzeugung verwendet wird. 7 is a concept view that contains an index buffer 760 according to an embodiment of the present invention. As is well known, the index buffer 760 can be used to reduce the memory used to store graphical primitives as part of indexed geometry imaging.

Im Betrieb kann ein grafisches Grundelement durch eine Sequenz aus Einträgen 750 im Indexpuffer, die in dem Indexpuffer 760 enthalten sind, repräsentiert werden. Wie gezeigt, enthält jeder Indexpuffereintrag 750 eine Kantenmarke 752 und einen Vertex-Index 754. Generell enthält jeder Indexpuffereintrag 750 insgesamt N Bits, von denen die signifikantesten M Bits die Kantenmarke 752 und die verbleibenden (N–M) Bits den Vertex-Pufferindex 754 speichern. Wie in der konventionellen indizierten Geometrie-Bilderzeugung ist der Vertex-Index 754 ein Index in den Vertex-Puffer (nicht gezeigt), der Daten pro-Vertex enthält. In bekannten Vorgehensweisen werden jedoch typischerweise alle N Bits in jedem Indexpuffereintrag für die Speicherung des Vertex-Index zugewiesen. Durch die Umwidmung der signifikantesten Bits jedes Indexpuffereintrags 750 zur Darstellung der Kantenmarke 752 kann vorteilhafterweise jeder Indexpuffereintrag 750 Daten pro Kante speichern zusätzlich zu den Daten pro Vertex, auf die über den Vertex-Index 754 zugegriffen werden kann. Im Gegensatz dazu duplizieren konventionelle Techniken typischerweise die Vertex-Daten für jede Kante.In operation, a graphic primitive may be represented by a sequence of entries 750 in the index buffer that is in the index buffer 760 are represented. As shown, each index buffer entry contains 750 an edge mark 752 and a vertex index 754 , Generally, each index buffer entry contains 750 a total of N bits, of which the most significant M bits are the edge mark 752 and the remaining (N-M) bits the vertex buffer index 754 to save. As in conventional indexed geometry imaging, the vertex index is 754 an index in the vertex buffer (not shown) containing data per vertex. However, in known approaches, typically all N bits in each index buffer entry are allocated for storage of the vertex index. By reallocating the most significant bits of each index buffer entry 750 for displaying the edge mark 752 may advantageously be any index buffer entry 750 Data per edge, in addition to the data per vertex, is stored over the vertex index 754 can be accessed. In contrast, conventional techniques typically duplicate the vertex data for each edge.

Wie beispielsweise gezeigt ist, kann das Dreieck 705-0 in Richtung des Uhrzeigersinns 720 durch die drei Vertices 715-0, 715-1 und 715-2 definiert werden. Wie ferner gezeigt ist, kann das Dreieck 705-1 in der Reihenfolge des Uhrzeigersinns 720 durch die drei Vertices 715-3, 715-0 und 715-2 definiert werden. Ferner ist die Kante, die den Vertex 715-0 und den Vertex 715-2 verbindet, gemeinsam für mehrere Pfade. Wie gezeigt, repräsentiert der Indexpuffer 760 die zwei Dreiecke 705-0 und 705-1 unter Anwendung von 8-Bit Indexpuffereinträgen 750, wobei das signifikanteste Bit die Kantenmarke 752 und die verbleibenden 7 Bits den Vertex-Index 754 speichern. Insbesondere gibt ein Wert von „1” der Kantenmarke 752 an, dass die Kante des grafischen Grundelements, die sich aus dem entsprechenden Vertex-Index 754 ergibt, eine der gemeinsamen Kanten 510 ist.For example, as shown, the triangle 705-0 in the clockwise direction 720 through the three vertices 715-0 . 715-1 and 715-2 To be defined. As further shown, the triangle 705-1 in the order of clockwise 720 through the three vertices 715-3 . 715-0 and 715-2 To be defined. Further, the edge is the vertex 715-0 and the vertex 715-2 connects, together for multiple paths. As shown, the index buffer represents 760 the two triangles 705-0 and 705-1 using 8-bit index buffer entries 750 . where the most significant bit is the edge mark 752 and the remaining 7 bits the vertex index 754 to save. In particular, a value of "1" indicates the edge mark 752 that the edge of the graphical primitive, which is made up of the corresponding vertex index 754 yields one of the common edges 510 is.

Um die Speichernutzung weiter zu optimieren, kann sich die Semantik der Kantemarke 752 in Abhängigkeit von dem Bilderzeugungsdurchlauf ändern. In dem Beispiel des Indexpuffers 760 ist die PPU 202 ausgebildet, den Pfad-Schablonierungsdurchlauf 485 zu realisieren, und eine aktivierte Kantenmarke 752 gibt den ursprünglichen Vertex 715 einer speziellen gemeinsamen Kante 510 an. Wenn im Gegensatz dazu die PPU 202 ausgebildet ist, den Pfad-Abdeckungsdurchlauf 495 zu realisieren, dann gibt die aktivierte Kantenmarke 752 den ursprünglichen Vertex 715 einer speziellen internen Kante 530 an.To further optimize memory usage, the semantics of the Kantemarke can change 752 depending on the imaging pass. In the example of the index buffer 760 is the PPU 202 trained, the path stenciling pass 485 to realize, and an activated edge mark 752 gives the original vertex 715 a special common edge 510 at. If, in contrast, the PPU 202 is formed, the path cover pass 495 to realize, then gives the activated edge mark 752 the original vertex 715 a special internal edge 530 at.

In anderen Ausführungsformen kann eine beliebige Anzahl an Bits für die Kantemarke reserviert werden, und die Kantenmarke kann beliebige Daten, die mit Kanten verknüpft sind, repräsentieren. In einigen Ausführungsformen kann die Rastereinheit ausgebildet sein, zwischen zwei Abtastkantenregeln auf der Grundlage der Kantemarke auszuwählen. In anderen Ausführungsformen kann die Kantenmarke mehrere unterschiedliche Eigenschaften der Kante repräsentieren, etwa gemeinsam gegenüber gemeinsam und intern gegenüber extern. Der Fachmann versteht, dass Ausführungsformen der Erfindung beliebige Techniken umfassen, die Bits, die in dem Indexpuffer enthalten sind, umwidmen, um die Auswahl der Abtastkantenregeln während der Rastereinteilung zu bestimmen.In other embodiments, an arbitrary number of bits may be reserved for the tag, and the edge tag may represent any data associated with edges. In some embodiments, the rasterizer unit may be configured to select between two scan edge rules based on the edge mark. In other embodiments, the edge mark may represent several different properties of the edge, such as common to common and internal to external. Those skilled in the art will understand that embodiments of the invention include any techniques that redesign bits included in the index buffer to determine the selection of the scan edge rules during the rasterization.

8A8B zeigen ein Flussdiagramm von Verfahrensschritten zur Rastereinteilung von Dreiecken gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte mit Bezug zu den Systemen der 1-7 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt. 8A - 8B 12 show a flowchart of method steps for grid division of triangles according to an embodiment of the present invention. Although the process steps related to the systems of the 1 - 7 Those skilled in the art will recognize that any system suitable for carrying out the process steps in any order is within the scope of the present invention.

Wie gezeigt, beginnt ein Verfahren 800 im Schritt 802, in welchem die Rastereinheit 385 ein einfaches Dreieck als ein Teil des Pfad-Schablonierungsdurchlaufs 485 empfängt. Im Schritt 804 wählt die Rastereinheit 385 eine spezielle Abtastgruppe 610 an Abdeckungsabtastungen aus und initialisiert einen zugehörigen primären Abdeckungswert und zugehörige sekundäre Abdeckungswerte mit Wert „1”. Der primären Abdeckungswert und jeder der sekundären Abdeckungswerte repräsentiert, ob die zugeordnete Abdeckungsabtastung durch das Eingangsdreieck als abgedeckt gilt. Wie hierin zuvor offenbart ist, unterhält die PPU 202 N Abdeckungsabtastungen pro Pixel und M Farbabtastungen pro Pixel, wobei N größer ist als M. Jede Abtastgruppe 610 ist mit einer speziellen Farbabtastung verknüpft. Ferner ist eine der (N/M) Abdeckungsabtastungen in der Abtastgruppe 610 die primäre Abtastung 617 und die verbleibenden Abdeckungsabtastungen sind die sekundären Abtastungen 615. Das Computersystem 100 kann die primäre Abtastung 617 in beliebig technisch machbarer Weise auswählen. Jedoch wählt für jede Farbabtastung das Computersystem die entsprechende primäre Abtastung 617 für die Pfade in deterministischer und konsistenter Weise aus. Zu beachten ist, dass die Anzahl an sekundären Abdeckungswerten gleich der Anzahl an sekundären Abtastungen 615 ist.As shown, a procedure begins 800 in step 802 in which the grid unit 385 a simple triangle as part of the path template pass 485 receives. In step 804 selects the grid unit 385 a special sampling group 610 to coverage samples and initializes an associated primary coverage value and associated secondary coverage values of value "1". The primary coverage value and each of the secondary coverage values represents whether the associated coverage scan is considered covered by the entrance triangle. As disclosed hereinbefore, the PPU maintains 202 N coverage scans per pixel and M color scans per pixel, where N is greater than M. Each scan group 610 is associated with a special color scan. Further, one of the (N / M) coverage samples is in the sample group 610 the primary scan 617 and the remaining coverage scans are the secondary scans 615 , The computer system 100 can be the primary scan 617 select in any technically feasible way. However, for each color scan, the computer system chooses the corresponding primary scan 617 for the paths in a deterministic and consistent way. Note that the number of secondary coverage values equals the number of secondary scans 615 is.

Im Schritt 806 wählt die Rastereinheit 385 eine erste Kante aus, die in dem Eingangsdreieck enthalten ist. Im Schritt 808 bewertet die Rastereinheit 385 die primäre Abtastung 617 in Bezug auf die ausgewählte Kante. Wenn die Rastereinheit 385 ermittelt, dass die Position der primären Abtastung 617 innerhalb des Eingangsdreiecks in Bezug auf die ausgewählte Kante liegt, dann setzt die Rastereinheit 385 den primären Abdeckungswert für die Kante auf „1”. Wenn andererseits die Rastereinheit 385 ermittelt, dass die Position der primären Abtastung 617 außerhalb des Eingangsdreiecks in Bezug auf die ausgewählte Kante liegt, dann setzt die Rastereinheit 385 den primären Abdeckungswert für die Kante auf „0”. Generell repräsentiert der primäre Kantenabdeckungswert, ob die primäre Abtastung 617 als innerhalb der ausgewählten Kante des Eingangsdreiecks liegend erachtet wird. Wenn im Schritt 810 die Rastereinheit 385 ermittelt, dass die ausgewählte Kante nicht eine der gemeinsamen Kanten 510 ist, dann geht das Verfahren 800 zum Schritt 812 weiter. Die Rastereinheit 385 kann in einer beliebigen technisch machbaren Weise ermitteln, ob die ausgewählte Kante eine der gemeinsamen Kanten 510 ist. Beispielsweise kann in einigen Ausführungsformen die Rastereinheit 385 eine Leseoperation an der Kantenmarke 752 ausführen, um zu ermitteln, ob die Kantenmarke 702 50 aktiviert ist. Im Schritt 812 wendet die Rastereinheit 385 die individuelle Abtastkantenregel 455 auf die ausgewählte Kante an. Im Betrieb setzt die Rastereinheit 385 für jede der sekundären Abtastungen 615 den entsprechenden sekundären Kantenabdeckungswert auf der Grundlage davon, ob die Position der sekundären Abtastung 615 innerhalb des Eingangsdreiecks in Bezug auf die ausgewählte Kante ist. Generell repräsentiert der sekundäre Kantenabdeckungswert, ob die sekundären Abtastung 615 als innerhalb der ausgewählten Kante des Eingangsdreiecks zu betrachten ist. Das Verfahren 800 geht dann zum Schritt 816 weiter.In step 806 selects the grid unit 385 a first edge contained in the input triangle. In step 808 rates the grid unit 385 the primary scan 617 in relation to the selected edge. If the raster unit 385 determines that the position of the primary scan 617 within the input triangle with respect to the selected edge, then sets the rasterizer 385 the primary coverage value for the edge is "1". On the other hand, if the grid unit 385 determines that the position of the primary scan 617 is outside the input triangle with respect to the selected edge, then sets the rasterizer 385 the primary coverage value for the edge is "0". Generally, the primary edge coverage value represents whether the primary scan 617 is considered to be within the selected edge of the input triangle. When in step 810 the grid unit 385 determines that the selected edge is not one of the common edges 510 is, then the procedure goes 800 to the step 812 further. The grid unit 385 can determine in any technically feasible manner whether the selected edge is one of the common edges 510 is. For example, in some embodiments, the rasterizer 385 a read operation on the edge mark 752 to determine if the edge mark 702 50 is activated. In step 812 applies the grid unit 385 the individual scanning edge rule 455 to the selected edge. In operation, the grid unit sets 385 for each of the secondary scans 615 the corresponding secondary edge coverage value based on whether the location of the secondary scan 615 within the input triangle with respect to the selected edge. Generally, the secondary edge coverage value represents whether the secondary scan 615 is to be considered within the selected edge of the input triangle. The procedure 800 then go to the step 816 further.

Wenn im Schritt 810 die Rastereinheit 385 ermittelt, dass die ausgewählte Kante eine der gemeinsamen Kanten 510 ist, dann geht das Verfahren 800 weiter zum Schritt 814. Im Schritt 814 wendet die Rastereinheit 385 die primäre Abtastkantenregel 465 auf die ausgewählte Kante an. Beim Betrieb legt die Rastereinheit 385 für jede der sekundären Abtastungen 615 den entsprechenden sekundären Kantenabdeckungswert so fest, dass dieser mit dem primären Kantenabdeckungswert übereinstimmt. Durch die Bestimmung, dass die Abtastgruppe 610 entweder vollständig abgedeckt oder vollständig nicht abgedeckt ist durch das Eingangsdreieck, kann vorteilhafterweise die Rastereinheit 385 ein Bool'sches Konzept für die Abdeckung von Farbabtastungen, die mit gemeinsamen Kanten 510 verknüpft sind, einführen.When in step 810 the grid unit 385 determines that the selected edge is one of the common edges 510 is, then the procedure goes 800 continue to step 814 , In step 814 applies the grid unit 385 the primary scan edge rule 465 to the selected edge. During operation, the raster unit sets 385 for each of the secondary scans 615 Set the appropriate secondary edge coverage value to match the primary edge coverage value. By determining that the sample group 610 either completely covered or completely uncovered by the entrance triangle, may advantageously be the raster unit 385 a Boolean concept for covering color scans with common edges 510 are linked.

Im Schritt 816 führt die Rastereinheit 385 eine logische UND-Operation zwischen dem primären Kantenabdeckungswert und dem primären Abdeckungswert aus. Auf diese Weise setzt die Rastereinheit 385 die Abdeckung der ausgewählten Kante mit vorhergehenden Kantenabdeckungswerten zusammen. Im Schritt 818 führt die Rastereinheit 385 für jeden sekundären Kantenabdeckungswert eine logische UND-Operation zwischen dem sekundären Kantenabdeckungswert und dem sekundären Abdeckungswert durch. Im Schritt 820 geht dann, wenn die Rastereinheit 385 ermittelt, dass die ausgewählte Kante nicht die dritte Kante ist, die in dem Eingangsdreieck enthalten ist, die Rastereinheit 385 weiter zum Schritt 822.In step 816 leads the grid unit 385 a logical AND operation between the primary edge coverage value and the primary coverage value. In this way, the grid unit sets 385 the coverage of the selected edge coincides with previous edge coverage values. In step 818 leads the grid unit 385 for each secondary edge coverage value, a logical AND operation between the secondary edge coverage value and the secondary coverage value. In step 820 then goes, if the grid unit 385 determines that the selected edge is not the third edge contained in the input triangle, the rasterizer 385 continue to step 822 ,

Im Schritt 822 wählt die Rastereinheit 385 die nächste Kante aus, die in dem Eingangsdreieck enthalten ist, und das Verfahren 800 kehrt zum Schritt 808 zurück. Die Rastereinheit 385 durchläuft zyklisch die Schritte 808 bis 823, wobei Kantenregeln für jede Kante ausgesucht und angewendet werden, bis die Rastereinheit 385 alle drei Kanten, die in dem Eingangsdreieck enthalten sind, verarbeitet hat. In anderen Ausführungsformen kann das Eingangsdreieck durch ein anderes Eingangsgrundelement ersetzt werden, und die Rastereinheit 385 durchläuft zyklisch die Schritte 808 bis 823, bis die Rastereinheit 385 alle Kanten, die in dem eingangs Grundelement enthalten sind, verarbeitet hat. Wenn im Schritt 820 die ausgewählte Kante die dritte Kante ist, die in dem Eingangsdreieck enthalten ist, dann repräsentieren der primäre Abdeckungswert und der sekundäre Abdeckungswert die Abdeckung der Abtastgruppe 610 im Hinblick auf das Eingangsdreieck. In anderen Ausführungsformen kann die Rastereinheit 385 mehrere Abtastgruppen oder Kanten parallel verarbeiten. In einigen anderen Ausführungsformen kann die Rastereinheit 385 eine beliebige Rastereinteilungsregel auf der Grundlage eines beliebig technisch machbaren Kriteriums auswählen, etwa andere Marken, die in dem Indexpuffereintrag 750 enthalten sind.In step 822 selects the grid unit 385 the next edge contained in the input triangle and the method 800 returns to the step 808 back. The grid unit 385 cycles through the steps 808 to 823 , where edge rules for each edge are selected and applied until the raster unit 385 has processed all three edges contained in the input triangle. In other embodiments, the input triangle may be replaced by another input primitive, and the rasterizer 385 cycles through the steps 808 to 823 until the grid unit 385 has processed all the edges contained in the initial primitive. When in step 820 the selected edge is the third edge contained in the input triangle, then the primary coverage value and the secondary coverage value represent the coverage of the scan group 610 with regard to the entrance triangle. In other embodiments, the raster unit 385 process several scanning groups or edges in parallel. In some other embodiments, the rasterizer unit 385 select any one of the rasterization rules based on any technically feasible criteria, such as other marks included in the index buffer entry 750 are included.

9 ist ein Flussdiagramm von Verfahrensschritten zur Erzeugung von Pfaden gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte mit Bezug zu den Systemen der 17 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt. 9 FIG. 10 is a flowchart of method steps for generating paths in accordance with an embodiment of the present invention. FIG. Although the process steps related to the systems of the 1 - 7 Those skilled in the art will recognize that any system suitable for carrying out the process steps in any order is within the scope of the present invention.

Wie gezeigt, beginnt ein Verfahren 900 im Schritt 902, in welchem die Softwareanwendung 125 einen Pfad spezifiziert. Als Teil der Definition des Pfades kennzeichnet die Softwareanwendung 125 beliebige gemeinsame Kanten 510. Im Schritt 904 ermittelt der Gerätetreiber 103, ob der Pfad gemeinsame Kanten 510 enthält. Der Gerätetreiber 102 kann gemeinsame Kanten 510, die in dem Pfad enthalten sind, auf beliebige technisch machbare Weise ermitteln. Beispielsweise kann der Gerätetreiber 103 einige gemeinsame Kanten 510 auf der Grundlage expliziter Befehle ermitteln, die von der Softwareanwendung 121 ausgegeben werden, und kann andere gemeinsame Kanten 510 ermitteln, während Pfad-Geometrien erzeugt werden.As shown, a procedure begins 900 in step 902 in which the software application 125 specifies a path. As part of the definition of the path, the software application identifies 125 any common edges 510 , In step 904 determines the device driver 103 whether the path has common edges 510 contains. The device driver 102 can share edges 510 detect in any technically feasible way contained in the path. For example, the device driver may be 103 some common edges 510 determine based on explicit commands issued by the software application 121 can be issued, and may have other common edges 510 while creating path geometries.

Wenn im Schritt 906 der Gerätetreiber 103 ermittelt, dass der Pfad eine oder mehrere gemeinsame Kanten 510 enthält, dann geht das Verfahren 900 weiter zum Schritt 908. Im Schritt 908 verändert der Gerätetreiber 103 für jede Farbabtastung die Abdeckungsabtastungen, die in der zugehörigen Abtastgruppe 610 enthalten sind, so, dass sie gleiche Positionen besitzen. Insbesondere legt der Gerätetreiber 103 für jede Abtastgruppe 610 die Positionen aller sekundären Abtastungen 615 so fest, dass sie mit der Position der primären Abtastung 617 übereinstimmen. In alternativen Ausführungsformen kann der Gerätetreiber die Position der Abdeckungsabtastungen in einer beliebigen technisch machbaren Weise neu programmieren. Im Schritt 910 verarbeitet die Rastereinheit 385 den Pfad. Da jede Abtastgruppe 610 mit einer einzelnen Position verknüpft ist, ermittelt vorteilhafterweise die Rastereinheit 685, dass jede Farbabtastung entweder vollständig von dem grafischen Grundelement abgedeckt oder vollständig nicht abgedeckt ist. Im Schritt 912 stellt der Gerätetreiber 103 die Positionen der sekundären Abtastungen 615, die in jeder Abtastgruppe 610 enthalten sind, wieder her und das Verfahren 900 geht weiter zum Schritt 916. Im Schritt 916 vervollständigen die PS-Einheit 390 und die ROP-Einheit 395 den Bilderzeugungsdurchlauf und das Verfahren 900 endet dann. In alternativen Ausführungsformen führen die PS-Einheit 390 und die ROP-Einheit 395 den Schritt 916 aus, wodurch der Bilderzeugungsdurchlauf beendet wird, bevor der Gerätetreiber 103 den Schritt 912 ausführt, in welchem die Positionen der sekundären Abtastungen 615 wiederhergestellt werden. When in step 906 the device driver 103 determines that the path has one or more common edges 510 contains, then goes the procedure 900 continue to step 908 , In step 908 changes the device driver 103 for each color scan, the coverage samples included in the associated scan group 610 are included so that they have the same positions. In particular, the device driver sets 103 for each sample group 610 the positions of all secondary scans 615 so firm that they match the position of the primary scan 617 to match. In alternative embodiments, the device driver may re-program the location of the coverage scans in any technically feasible manner. In step 910 processes the grid unit 385 the path. Because each sample group 610 is associated with a single position, advantageously determines the raster unit 685 in that each color scan is either completely covered by the graphics primitive or completely uncovered. In step 912 represents the device driver 103 the positions of the secondary scans 615 that in each scanning group 610 are included, restored and the procedure 900 continue to step 916 , In step 916 complete the PS unit 390 and the ROP unit 395 the imaging pass and method 900 ends then. In alternative embodiments, the PS unit performs 390 and the ROP unit 395 the step 916 which completes the imaging pass before the device driver 103 the step 912 executing in which the positions of the secondary scans 615 be restored.

Wenn im Schritt 906 der Gerätetreiber 103 ermittelt, dass der Pfad keine gemeinsame Kante 510 enthält, dann geht das Verfahren 900 weiter zum Schritt 914. Im Schritt 914 verarbeitet die Rastereinheit 385 den Pfad. Insbesondere unterhält die Rastereinheit 385 N unterschiedlich angeordnete Abdeckungsabtastungen pro Pixel und M Farbabtastungen pro Pixel, während der Pfad verarbeitet wird. Das Verfahren 900 geht dann zum Schritt 916 weiter. Im Schritt 916 beenden die PS-Einheit 390 und die ROP-Einheit 395 den Bilderzeugungsdurchlauf, und das Verfahren 900 endet dann.When in step 906 the device driver 103 determines that the path has no common edge 510 contains, then goes the procedure 900 continue to step 914 , In step 914 processes the grid unit 385 the path. In particular, the raster unit maintains 385 N differently arranged coverage scans per pixel and M color scans per pixel while the path is being processed. The procedure 900 then go to the step 916 further. In step 916 finish the PS unit 390 and the ROP unit 395 the imaging pass, and the method 900 ends then.

Zusammengefasst gilt: in einem Fall wendet die Rastereinheit unterschiedliche Kantenregeln auf die Kanten eines Grundelements auf der Grundlage von Eigenschaften an, die mit den Pfad verknüpft sind. Insbesondere wählt im Pfad-Schablonierungsdurchlauf die Rastereinheit aus, welche Kantenregeln auf welche Kante auf der Grundlage davon anzuwenden ist, ob die Kante für unterschiedliche Pfade gemeinsam ist. Wenn die Kante für unterschiedliche Pfade gemeinsam ist, dann wendet die Rastereinheit eine primäre Abtastkantenregel auf die Kante an. Bei der Anwendung der primären Abtastkantenregel auf die Kante ermittelt die Rastereinheit, ob eine Gruppe an Abdeckungsabtastungen, die mit einer einzelnen Farbabtastung verknüpft sind, kollektiv innerhalb oder außerhalb der Kante liegen, wobei dies auf der Position einer einzelnen Abdeckungsabtastung beruht – der primären Abtastung. Wenn im Gegensatz die Kante nicht gemeinsam ist, dann wendet die Rastereinheit eine unabhängige Abtastkantenregel auf die Kante an. Durch die Anwendung der unabhängigen Abtastkantenregel auf die Kante ermittelt die Rastereinheit, ob jede Abdeckungsabtastung innerhalb oder außerhalb der Kante liegt, wobei dies auf der Position der Abdeckungsabtastung beruht. Nachfolgend ermittelt dann für jede Abdeckungsabtastung die Rastereinheit, wenn die Rastereinheit ermittelt, dass die Abdeckungsabtastung innerhalb jeder Kante, die mit dem Grundelement verknüpft ist, liegt, dass die Abdeckungsabtastung von dem Grundelement abgedeckt ist.In summary, in one case, the rasterizer applies different edge rules to the edges of a primitive based on properties associated with the path. In particular, in the Path Stenciling pass, the rasterizer selects which edge rules to apply to which edge based on whether the edge is common to different paths. If the edge is common to different paths, then the rasterizer applies a primary scan edge rule to the edge. In applying the primary scan edge rule to the edge, the rasterizer determines whether a group of coverage scans associated with a single color scan are collectively located inside or outside the edge, based on the location of a single coverage scan - the primary scan. In contrast, if the edge is not common, then the rasterizer applies an independent scan edge rule to the edge. By applying the independent scan edge rule to the edge, the rasterizer determines whether each coverage scan is inside or outside the edge, based on the position of the coverage scan. Subsequently, for each coverage scan, the rasterizer unit then determines, when the rasterizer unit determines that the coverage scan within each edge associated with the primitive is that the coverage scan is covered by the primitive.

In ähnlicher Weise wählt in dem Pfad-Abdeckungsdurchlauf die Rastereinheit aus, welche Kantenregel auf welche Kante des Grundelements anzuwenden ist, auf der Grundlage dessen, ob die Kante eine innere Kante des Grundelements ist. Wenn die Kante innerhalb des Grundelements liegt, dann wendet die Rastereinheit die primäre Abtastkantenregel auf die Kante an. Wenn andererseits die Kante nicht innerhalb des Grundelements liegt, dann wendet die Rastereinheit eine beliebige Abtastkantenregel auf die Kante an. Wenn bei der Anwendung der beliebigen Abtastkantenregel auf die Kante die Rastereinheit ermittelt, dass die Position einer Abdeckungsabtastung, die mit einer Farbabtastung verknüpft ist, innerhalb der Kante liegt, dann ermittelt die Rastereinheit, dass alle Abdeckungsabtastungen, die mit der Farbabtastung verknüpft sind, innerhalb der Kante liegen. Wendet die Rastereinheit ermittelt, dass die Abdeckungsabtastung innerhalb liegt für alle Kanten, die mit dem speziellen Grundelement verknüpft sind, dann ermittelt wiederum die Rastereinheit für jede Abdeckungsabtastung, dass die Abdeckungsabtastung von dem Grundelement abgedeckt ist.Similarly, in the path coverage pass, the rasterizer selects which edge rule to apply to which edge of the primitive, based on whether the edge is an inner edge of the primitive. If the edge is within the primitive, then the rasterizer applies the primary scan edge rule to the edge. On the other hand, if the edge is not within the primitive, then the rasterizer applies any scan edge rule to the edge. In applying the arbitrary scan edge rule to the edge, if the rasterizer determines that the position of a coverage scan associated with a color scan is within the edge, then the rasterizer determines that all coverage scans associated with the color scan are within the boundary Edge lie. If the rasterizer determines that the coverage scan is within for all edges associated with the particular primitive, then, for each coverage scan, the rasterizer determines that the coverage scan is covered by the primitive.

In einem zweiten Fall ändert der Gerätetreiber bei der Erzeugung einer indizierten Geometrie den Zweck der signifikantesten Bits, die in einen Indexpuffereintrag enthalten sind, um Kantenmarken zu speichern. Im allgemeinen definiert eine Reihe aus sequenziellen Indexpuffereinträgen, die in einem Indexpuffer enthalten sind, ein Grundelement. Beispielsweise definiert eine Reihe dreier sequenzielle Indexpuffereinträge ein Grundelement in Form eines Dreiecks. Der Gerätetreiber ordnet N Bits eines N-Bit-Indexpuffereintrags zur Speicherung von Kantenmarken an, und (N–M) Bits des Indexpuffereintrags immer werden zur Speicherung eines Vertex-Index benutzt. Wie gut bekannt ist, ist der Vertex-Index ein Index für einen Vertex-Puffer, der Vertex-Daten enthält. Bei der Pfadbilderzeugung ändert sich die Semantik der Kantenmarken in Abhängigkeit von dem Bilderzeugungsdurchlauf. Während des Pfad-Schablonierungsdurchlaufs gibt ein aktiviertes signifikantestes Bit in einem speziellen Indexpuffereintrag an, dass die Kante des Grundelements, die aus dem zugehörigen Vertex-Index hervorgeht, gemeinsam für zwei oder mehr Pfade ist. Während des Pfad-Abdeckungsdurchlaufs zeigt ein aktiviertes signifikantestes Bit in einem speziellen Indexpuffereintrag an, dass die Kante des Grundelements, die sich aus dem zugehörigen Vertex-Index ergibt, eine interne Kante des Grundelements ist.In a second case, when creating an indexed geometry, the device driver changes the purpose of the most significant bits contained in an index buffer entry to store edge marks. In general, a series of sequential index buffer entries contained in an index buffer defines a primitive. For example, a series of three sequential index buffer entries defines a primitive in the form of a triangle. The device driver allocates N bits of an N-bit index buffer entry to store edge flags, and (N-M) bits of the index buffer entry are always used to store a vertex index. As is well known, the vertex index is an index for a vertex buffer containing vertex data. In path imaging, the semantics of the edge marks change depending on the imaging pass. During the path template pass, an activated most significant bit in a particular index buffer entry indicates that the edge of the primitive resulting from the associated vertex index is common to two or more paths. During path coverage traversal, an activated most significant bit in a particular index buffer entry indicates that the edge of the primitive resulting from the associated vertex index is an internal edge of the primitive.

In einen dritten Fall kann der Gerätetreiber die Positionen von sekundären Abdeckungsabtastungen auf der Grundlage von Eigenschaften neu programmieren, die mit dem Pfad verknüpft sind. Der Gerätetreiber führt eine derartige Neuprogrammierung aus, bevor die Rastereinheit die Pfade verarbeitet, als Teil des Pfad-Schablonierungsdurchlaufs oder als Teil des Pfad-Abdeckungsdurchlaufs. Insbesondere vor der Einteilung in ein Raster eines speziellen Pfades, wenn der Gerätetreiber ermittelt, dass ein spezieller Pfad eine oder mehrere Kanten enthält, die gemeinsam für mehrere Pfade sind, ändert dann der Gerätetreiber die Abdeckungsabtastpositionen, die mit jeder Farbabtastung verknüpft sind, so, dass sie gleich sind. Während des Betriebs programmiert der Gerätetreiber für jede Abdeckungsabtastgruppe der sekundären Abtastpositionen so um, dass sie mit der primären Abtastposition übereinstimmen. Nachdem die Rastereinheit Operationen ausgeführt hat, die mit der Pfad-Schablonenbildung oder der Pfad-Abdeckungsdurchlauf sind, stellt der Gerätetreiber die sekundären Abtastungen wieder mit ihren ursprünglichen Positionen her.In a third case, the device driver may reprogram the positions of secondary coverage scans based on properties associated with the path. The device driver performs such reprogramming before the rasterizer processes the paths as part of the path template pass or as part of the path coverage pass. In particular, before dividing into a raster of a particular path, if the device driver determines that a particular path contains one or more edges common to multiple paths, then the device driver changes the coverage scan positions associated with each color scan such that they are the same. During operation, the device driver for each coverage scan group programs the secondary scan positions to match the primary scan position. After the rasterizer has performed operations involving path template creation or path coverage traversal, the device driver restores the secondary scans to their original locations.

Ein Vorteil der obigen Vorgehensweise besteht darin, dass Verschmelzungsbildfehler, die mit Kanten verknüpft sind, die zwischen unterschiedlichen Pfaden gemeinsam sind, reduziert werden. Insbesondere legt für jede gemeinsame Kante die Rastereinheit jede Gruppe an Abdeckungsabtastungen, die mit einer speziellen Farbabtastung verknüpft sind, so fest, dass sie entweder vollständig durch das Grundelement abgedeckt sind oder vollständig nicht abgedeckt sind. Folglich erzeugt die Rastereinteilung von Grundelementen, die gemeinsame Kanten enthalten, keine Teilabdeckung, die eine Verarmung des Hintergrunds hervorrufen würde, wenn eine Bilderzeugung unter Anwendung von mehr Abdeckungsabtastungen pro Pixel als Farbabtastungen pro Pixel durchgeführt würde. Ferner reduziert die Bilderzeugung unter Anwendung von mehr Abdeckungsabtastungen als Farbabtastungen den Speicherverbrauch und die Speicherbandbreite im Vergleich zu bekannten Techniken, in denen die Anzahl an Farbabtastungen erhöht wird, um mit der Anzahl an Abdeckungsabtastungen überein zu stimmen. In einem Aspekt der vorhergehenden Ansätze wird der Speicherverbrauch ferner optimiert, indem Bits in ihren Zweck umgewidmet werden, die in dem Indexpuffer enthalten sind, um Kantenmarken zu speichern. Folglich erlauben die offenbarten Ansätze eine speichereffiziente Pfadbilderzeugung, ohne dass Verschmelzungsbildfehler für gemeinsame Kanten entstehen, die typischerweise mit bekannten Techniken verknüpft sind.An advantage of the above approach is that blurring image errors associated with edges that are common between different paths are reduced. In particular, for each common edge, the rasterizer sets each group of coverage scans associated with a particular color scan to either be completely covered by the primitive or completely uncovered. Thus, the rasterization of primitives containing common edges does not create a partial coverage that would cause depletion of the background if image formation were performed using more coverage scans per pixel than color scans per pixel. Further, imaging using more coverage scans than color scans reduces memory consumption and memory bandwidth compared to known techniques in which the number of color scans is increased to match the number of coverage scans. In one aspect of the foregoing approaches, memory consumption is further optimized by redirecting bits included in the index buffer to store edge tags. Thus, the disclosed approaches allow for memory efficient path imaging without creating blended image errors for shared edges typically associated with known techniques.

Eine Ausführungsform der Erfindung kann als ein Programmprodukt zur Verwendung in einem Computersystem realisiert werden. Das bzw. die Programme des Programmprodukts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Vielzahl von computerlesbaren Speichermedien enthalten sein. Zu anschaulichen computerlesbaren Speichermedien gehören, ohne Einschränkung: (i) nicht-beschreibbare Speichermedien (beispielsweise Nur-Lese-Speichereinrichtungen in einem Computer, etwa CD-ROM-Disketten, die von einem CD-ROM-Laufwerk lesbar sind, Flash-Speicher, ROM-Chips oder eine andere Art eines nicht flüchtigen Halbleiterspeichers), auf welchen Information permanent gespeichert ist; und (ii) beschreibbare Speichermedien (beispielsweise Disketten in einem Diskettenlaufwerk oder ein Festplattenlaufwerk oder eine andere Art eines Halbleiterspeichers mit wahlfreiem Zugriff), auf welchen änderbare Information gespeichert ist.An embodiment of the invention may be implemented as a program product for use in a computer system. The program (s) of the program product define functions of the embodiments (including the methods described herein) and may be included in a variety of computer-readable storage media. Illustrative computer readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices in a computer, such as CD-ROM disks readable from a CD-ROM drive, flash memory, ROM Chips or other type of nonvolatile semiconductor memory) on which information is permanently stored; and (ii) recordable storage media (eg floppy disks in a floppy disk drive or hard disk drive or other type of random access semiconductor memory) having changeable information stored thereon.

Die Erfindung ist mit Bezug zu speziellen Ausführungsformen beschrieben worden. Der Fachmann erkennt jedoch, dass diverse Modifizierungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Grundgedanken und dem Schutzbereich der Erfindung abzuweichen, wie sie in den angefügten Patentansprüchen angegeben ist. Die vorhergehende Beschreibung und die Zeichnungen sind daher als anschaulich und nicht als beschränkend zu betrachten.The invention has been described with reference to specific embodiments. However, those skilled in the art will recognize that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The foregoing description and drawings are therefore to be considered as illustrative and not restrictive.

Daher ist der Schutzbereich der vorliegenden Erfindung durch die folgenden Patentansprüche festgelegt.Therefore, the scope of the present invention is defined by the following claims.

Claims (10)

Ein computerimplementiertes Verfahren zur Rastereinteilung von grafischen Grundelementen, wobei das Verfahren umfasst: Ermitteln eines Rastereinteilungszustands, der mit einer ersten Kante eines grafischen Grundelements verknüpft ist; Auswählen einer ersten Abtastregel aus mehreren Abtastregeln auf der Grundlage des Rastereinteilungszustands; Ermitteln, ob eine erste Abdeckungsabtastung als innerhalb der ersten Kante liegend erachtet wird, auf der Grundlage der ersten Abtastregel; und Ermitteln, ob die erste Abdeckungsabtastung als durch das grafische Grundelement abgedeckt erachtet wird, auf der Grundlage davon, ob die erste Abdeckungsabtastung als innerhalb der ersten Kante liegend erachtet wird.A computer-implemented method of rasterizing graphical primitives, the method comprising: Determining a rasterization state associated with a first edge of a graphical primitive; Selecting a first scan rule from a plurality of scan rules based on the rasterization state; Determining whether a first coverage scan is considered to be within the first edge based on the first scan rule; and Determining whether the first coverage scan is deemed to be covered by the graphical primitive based on whether the first coverage scan is considered to be within the first edge. Das Verfahren nach Anspruch 1, wobei das grafische Grundelement einen Pfad umfasst, und wobei der Rastereinteilungszustand angibt, dass die erste Kante eine gemeinsame Kante des Pfads ist.The method of claim 1, wherein the primitive comprises a path, and wherein the rasterization state indicates that the first edge is a common edge of the path. Das Verfahren nach Anspruch 1, wobei das grafische Grundelement einen Pfad umfasst und wobei der Rastereinteilungszustand anzeigt, dass die erste Kante eine nicht-gemeinsame Kante des Pfads ist.The method of claim 1, wherein the primitive comprises a path, and wherein the rasterization state indicates that the first edge is a non-common edge of the path. Das Verfahren nach Anspruch 1, wobei das grafische Grundelement einen Pfad umfasst und wobei der Rastereinteilungszustand anzeigt, dass die erste Kante eine externe Kante des Pfads ist.The method of claim 1, wherein the primitive comprises a path, and wherein the rasterization state indicates that the first edge is an external edge of the path. Das Verfahren nach Anspruch 1, wobei Ermitteln, ob die erste Abdeckungsabtastung als innerhalb der ersten Kante liegend erachtet wird, umfasst: Berechnen, ob die Position der ersten Abdeckungsabtastung innerhalb des grafischen Grundelements relativ zu der ersten Kante liegt.The method of claim 1, wherein determining if the first coverage scan is considered to be within the first edge comprises: calculating if the position of the first coverage scan is within the graphical primitive relative to the first edge. Das Verfahren nach Anspruch 1, weil das grafische Grundelement ein Dreieck umfasst.The method of claim 1, wherein the graphical primitive comprises a triangle. Das Verfahren nach Anspruch 6, wobei Ermitteln, ob die erste Abdeckungsabtastung als durch das grafische Grundelement abgedeckt erachtet wird, umfasst: Ermitteln, ob die erste Abdeckungsabtastung als innerhalb aller drei Kanten des grafischen Grundelements liegend erachtet wird, wozu die erste Kante, eine zweite Kante eine dritte Kante gehören.The method of claim 6, wherein determining whether the first coverage scan is deemed to be covered by the graphical primitive comprises: determining whether the first coverage scan is considered to be within all three edges of the graphical traffic Base element is considered, including the first edge, a second edge belonging to a third edge. Das Verfahren nach Anspruch 1, das ferner umfasst: Zusammensetzen eines Farbwertes für eine erste Farbabtastung auf der Grundlage davon, ob die erste Abdeckungsabtastung als durch das grafische Grundelement abgedeckt erachtet wird.The method of claim 1, further comprising: composing a color value for a first color scan based on whether the first coverage scan is deemed to be covered by the graphics primitive. Eine Recheneinrichtung, die ausgebildet ist, grafische Grundelemente in ein Raster einzuteilen, wobei die Recheneinrichtung umfasst: einen Speicher; eine Verarbeitungseinheit, die mit dem Speicher verbunden und ausgebildet ist, mindestens einen Teil einer Grafikverarbeitungs-Pipeline zu realisieren, wobei der mindestens eine Teil der Grafikverarbeitungs-Pipeline ausgebildet ist, um: einen Rastereinteilungszustand, der mit einer ersten Kante eines grafischen Grundelements verknüpft ist, zu ermitteln; eine erste Abtastregel aus mehreren Abtastregeln auf der Grundlage des Rastereinteilungszustands auszuwählen; zu ermitteln, ob eine erste Abdeckungsabtastung als innerhalb der ersten Kante liegend erachtet wird, auf der Grundlage der ersten Abtastregel; und zu ermitteln, ob die erste Abdeckungsabtastung als durch das grafische Grundelement abgedeckt erachtet wird, auf der Grundlage davon, ob die erste Abdeckungsabtastung als innerhalb der ersten Kante liegend erachtet wird.A computing device which is designed to divide graphic primitives into a grid, wherein the computation device comprises: a memory; a processing unit coupled to the memory and configured to implement at least a portion of a graphics processing pipeline, the at least one portion of the graphics processing pipeline being configured to: determine a rasterization state associated with a first edge of a graphical primitive; select a first scan rule from a plurality of scan rules based on the rasterization state; determine whether a first coverage scan is considered to be within the first edge based on the first scan rule; and determine whether the first coverage scan is deemed to be covered by the graphics primitive based on whether the first coverage scan is considered to be within the first edge. Eine Verarbeitungseinheit, die ausgebildet ist, zumindest einen Teil einer Grafikverarbeitungs-Pipeline zu realisieren, die eine Rastereinheit enthält, wobei der mindestens eine Teil der Grafikverarbeitungs-Pipeline ausgebildet ist, um die Schritte auszuführen: Zergliedern eines ersten Index, der mit einem ersten Vertex des Grundelements verknüpft ist; Ermitteln einer ersten Kantemarke, die in dem ersten Index enthalten ist, und eines ersten Vertex-Index, der in dem Vertex-Index enthalten ist; Zugreifen auf einen Vertex-Puffer auf der Grundlage des ersten Vertex-Index, um Daten auszulesen, die mit dem ersten Vertex verknüpft sind; und Durchführen einer Rastereinteilung an einer ersten Kante des Grundelements auf der Grundlage der ersten Kantenmarke und der Daten, die mit dem ersten Vertex verknüpft sind, wobei die erste Kante von dem ersten Vertex ausgeht.A processing unit configured to implement at least a portion of a graphics processing pipeline that includes a rasterizer, wherein the at least a portion of the graphics processing pipeline is configured to perform the steps of: Parsing a first index associated with a first vertex of the primitive; Determining a first edge tag included in the first index and a first vertex index included in the vertex index; Accessing a vertex buffer based on the first vertex index to read data associated with the first vertex; and Performing a rasterization on a first edge of the primitive based on the first edge mark and the data associated with the first vertex, the first edge extending from the first vertex.
DE201310021709 2013-03-15 2013-12-20 STENCIL THEN COVER PATH PICTURE SHARING WITH COMMON EDGES Pending DE102013021709A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201361799948P 2013-03-15 2013-03-15
US61/799,948 2013-03-15
US14/028,400 2013-09-16
US14/028,393 2013-09-16
US14/028,400 US9418437B2 (en) 2013-03-15 2013-09-16 Stencil then cover path rendering with shared edges
US14/028,393 US9466115B2 (en) 2013-03-15 2013-09-16 Stencil then cover path rendering with shared edges

Publications (1)

Publication Number Publication Date
DE102013021709A1 true DE102013021709A1 (en) 2014-09-18

Family

ID=51418510

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201310021709 Pending DE102013021709A1 (en) 2013-03-15 2013-12-20 STENCIL THEN COVER PATH PICTURE SHARING WITH COMMON EDGES

Country Status (2)

Country Link
CN (1) CN104050619B (en)
DE (1) DE102013021709A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110766771A (en) * 2019-10-18 2020-02-07 天津津航计算技术研究所 Character edge tracing method based on FPGA
CN112651937A (en) * 2020-12-24 2021-04-13 中国林业科学研究院资源信息研究所 Layered crown identification method

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10186076B2 (en) * 2016-03-29 2019-01-22 Intel Corporation Per-sample MSAA rendering using comprehension data
GB2561557B (en) * 2017-04-13 2020-08-12 Advanced Risc Mach Ltd Graphics processing method and apparatus in which modified edge positions are used in rasterisation

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7564456B1 (en) * 2006-01-13 2009-07-21 Nvidia Corporation Apparatus and method for raster tile coalescing
US20100013854A1 (en) * 2008-07-18 2010-01-21 Microsoft Corporation Gpu bezier path rasterization

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110766771A (en) * 2019-10-18 2020-02-07 天津津航计算技术研究所 Character edge tracing method based on FPGA
CN110766771B (en) * 2019-10-18 2023-07-28 天津津航计算技术研究所 Character edge tracing method based on FPGA
CN112651937A (en) * 2020-12-24 2021-04-13 中国林业科学研究院资源信息研究所 Layered crown identification method
CN112651937B (en) * 2020-12-24 2024-02-20 中国林业科学研究院资源信息研究所 Layered crown identification method

Also Published As

Publication number Publication date
CN104050619A (en) 2014-09-17
CN104050619B (en) 2017-07-18

Similar Documents

Publication Publication Date Title
DE102013017639B4 (en) Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
DE102013017640B4 (en) Distributed tiled caching
DE102013114090B4 (en) Conservative screening of primitives using an error term
DE102015113240A1 (en) SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR SHADING USING A DYNAMIC OBJECT ROOM GATE
DE102013020614A1 (en) Consistent grid division with multi-resolution
DE102016122297A1 (en) Multi-pass rendering in a screen space pipeline
DE102013114373A1 (en) Consistent vertex snap-in for variable-resolution rendering
EP0984397B1 (en) Method and device for elimination of unwanted steps in raster displays
DE102013018445A1 (en) Defining a subordinate imaging state in an upstream shading entity
DE102013020810A1 (en) Efficient super-scanning with shading strands per pixel
DE102016109905A1 (en) Piecewise linear irregular rasterization
DE102013022257A1 (en) Programmable mixing in multi-strand processing units
DE102018114286A1 (en) Perform a traversal stack compression
DE102013020613A1 (en) Bypass pixel shading for low power graphic imaging
DE102013020807A1 (en) Handling Subordinate Z Cover Data in Raster Operations
DE102015115232A1 (en) Improved anti-aliasing by spatially and / or temporally varying sample patterns
DE102015107869A1 (en) Assign primitives to primitive blocks
DE102013021046A1 (en) Generation of error-free voxel data
DE102014006734A1 (en) ECKPUNKTPARAMETER DATA COMPRESSION
DE112018004343T5 (en) MULTI-ROOM RENDERING WITH CONFIGURABLE TRANSFORMATION PARAMETERS
DE102013017981A1 (en) Optimization of a triangle topology for path imaging
DE602004003111T2 (en) Deep-based antialiasing
DE102018125472B4 (en) Graphics processor that performs sampling-based rendering and method for operating the same
DE102013222685A1 (en) System, method and computer program product for scanning a hierarchical depth map
DE102017109472A1 (en) STEREO MULTIPLE PROJECTION IMPLEMENTED BY USING A GRAPHIC PROCESSING PIPELINE

Legal Events

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

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

R016 Response to examination communication