DE102015002581A1 - Mapping a multi-rate harm to monolithic programs - Google Patents
Mapping a multi-rate harm to monolithic programs Download PDFInfo
- Publication number
- DE102015002581A1 DE102015002581A1 DE102015002581.3A DE102015002581A DE102015002581A1 DE 102015002581 A1 DE102015002581 A1 DE 102015002581A1 DE 102015002581 A DE102015002581 A DE 102015002581A DE 102015002581 A1 DE102015002581 A1 DE 102015002581A1
- Authority
- DE
- Germany
- Prior art keywords
- pixel
- coarse
- shading
- group
- processor
- 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
Links
- 238000013507 mapping Methods 0.000 title claims description 27
- 238000000034 method Methods 0.000 claims description 48
- 230000015654 memory Effects 0.000 claims description 47
- 230000006870 function Effects 0.000 claims description 20
- 230000005484 gravity Effects 0.000 claims description 2
- 238000005286 illumination Methods 0.000 claims 1
- 238000009877 rendering Methods 0.000 abstract description 13
- 238000012545 processing Methods 0.000 description 45
- 239000000872 buffer Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 13
- 239000013598 vector Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 238000005070 sampling Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000013459 approach Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 241001367450 Provertex Species 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000016507 interphase Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 238000000137 annealing Methods 0.000 description 1
- 239000000729 antidote Substances 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005562 fading Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Abstract
Beim Mehrratenshading wird eine Grobratenshadingphase zu einer existierenden Pixelratenphase hinzugefügt, um die Leistungsfähigkeit bei einem minimalen Einfluss auf die Bildqualität erheblich zu verbessern. Zwei Shadingphasen, die bei unterschiedlichen Raten bewertet werden, können auf ein monolithisches Programm abgebildet werden, das auf Prozessorgraphik-einzelner-Befehl-mehrere-Daten-(SIMD)-Maschinen läuft. Gemäß einer Ausführungsform ermöglicht das Mehrratenshading einen einzelnen Renderdurchgang zum Ausführen eines Shadingcodes bei einer oder mehreren verschiedenen Raten: pro Pixelgruppe, pro Pixel und pro Abtastwert.In multi-rate shading, a coarse data hading phase is added to an existing pixel rate phase to significantly improve performance with minimal impact on image quality. Two shading phases, valued at different rates, can be mapped to a monolithic program running on single-instruction-command-multiple-data-processor (SIMD) machines. In one embodiment, the multi-rate shading enables a single rendering pass to execute a shading code at one or more different rates: per pixel group, per pixel and per sample.
Description
Querverweis auf verwandte AnmeldungCross-reference to related application
Dies ist eine nicht vorläufige Anmeldung, welche die Priorität der am 3. April 2014 eingereichten vorläufigen Anmeldung mit der laufenden Nummer 61/974 602, die hier ausdrücklich durch Verweis aufgenommen ist, beansprucht.This is a non-provisional application claiming priority of provisional application Serial No. 61 / 974,602 filed April 3, 2014, which is expressly incorporated herein by reference.
Hintergrundbackground
Ein erheblicher Teil der Leistungskosten in einer 3D-Pipeline ist auf das Pixelshading zurückzuführen. Höhere Anzeigeauflösungen und eine höhere Graphikqualität, insbesondere bei handgehaltenen Vorrichtungen, sind mit der Anforderung des Minimierens der Leistungsabfuhr unvereinbar. Es wäre daher besonders vorteilhaft, Pixelshader wirksamer arbeiten zu lassen.A significant part of the performance costs in a 3D pipeline is attributed to pixel shading. Higher display resolutions and higher graphics quality, especially in hand-held devices, are incompatible with the requirement of minimizing power dissipation. It would therefore be particularly advantageous to make pixel shaders work more effectively.
Das Grobpixelsshading nutzt die Tatsache aus, dass eine geometrische Verdeckung typischerweise Einzelheiten mit höherer Frequenz als beim Oberflächenshading herbeiführt, und das Shading wird dabei bei einer niedrigeren Rate als beim Sichtbarkeitstesten ausgeführt. Das Grobpixelshading ist für Anzeigen mit einer hohen Pixeldichte gut geeignet, wo die Wirkungen verringerter Shadingraten aus normalen Betrachtungsabständen kaum wahrnehmbar sind. Die Shadingraten können in Bildschirmgebieten weiter verringert sein, welche verschwommen oder auf andere Weise für den Benutzer weniger wahrnehmbar sind, beispielsweise in Gebieten, die durch Bewegungs- oder Defokussierungsunschärfe beeinflusst werden, oder in Gebieten außerhalb der fovealen Sicht des Benutzers.Coarse pixel shading takes advantage of the fact that geometric occlusion typically causes details of higher frequency than surface shading, and shading is performed at a lower rate than in visibility testing. Coarse pixel shading is well-suited for displays with a high pixel density where the effects of reduced shading rates from normal viewing distances are barely perceptible. The shading rates may be further reduced in screen areas which are blurred or otherwise less noticeable to the user, for example in areas affected by motion or defocusing blur, or in areas outside the user's foveal vision.
Es ist schwierig, diese Gelegenheiten auf aktuellen Graphikarchitekturen auszunutzen, bei denen Shader bei einer Pro-Pixel- oder Pro-Abtastwert-Rate arbeiten. Die Shadingraten können durch Ändern der Rahmenpufferauflösung grob gesteuert werden, dies ermöglicht jedoch keine feinkörnigere Änderung der Shadingraten, beispielsweise pro Objekt, pro Dreieck oder pro Bildgebiet, welche noch mit der Sichtbarkeitsabtastrate gekoppelt sind.It is difficult to capitalize on these opportunities on current graphics architectures where shaders operate at a per-pixel or per-sample rate. The shading rates can be coarsely controlled by changing the frame buffer resolution, but this does not allow for a finer-grained change in the shading rates, for example, per object, per triangle, or per image area, which are still coupled to the visibility sample rate.
Das Grobpixelshading (CPS) ist eine Architektur zum Ändern von Shadingraten in einer Rasterisierungspipeline, während die Sichtbarkeitsabtastrate konstant gehalten wird.Coarse pixel shading (CPS) is an architecture for changing shading rates in a rasterization pipeline while keeping the visibility sampling rate constant.
Es wurden viele Ansätze vorgeschlagen, um die Shadingwirksamkeit durch Abtasten des Shadings mit einer niedrigeren Rate als der Sichtbarkeitsabtastrate zu verbessern. Mehrere-Abtastwerte-Anti-Aliasing (MSAA) ist eine solche Technik, die häufig durch Graphikprozessorhardware unterstützt wird. Mit MSAA werden mehrere Abdeckungsabtastwerte (auch als Sichtbarkeitsabtastwerte bezeichnet) pro Pixel gespeichert, Pixelshader werden jedoch nur einmal für jedes von einem primitiven Element abgedeckte Pixel ausgeführt. Dies steht im Gegensatz zur Überabtastung, wobei Shader einmal pro abgedecktem Abtastwert ausgeführt werden.Many approaches have been proposed to improve shading efficiency by sampling the shading at a lower rate than the visibility sampling rate. Multiple-sample anti-aliasing (MSAA) is one such technique often supported by graphics processor hardware. MSAA stores multiple coverage samples (also called visibility scans) per pixel, but pixel shaders are executed only once for each pixel covered by a primitive. This is in contrast to oversampling, where shaders are executed once per covered sample.
Kurzbeschreibung der ZeichnungBrief description of the drawing
Einige Ausführungsformen werden mit Bezug auf die folgenden Figuren beschrieben. Es zeigen:Some embodiments will be described with reference to the following figures. Show it:
Detaillierte BeschreibungDetailed description
Beim Grobpixelshading (CPS) werden das Shading und die Sichtbarkeit in einer entkoppelten Weise abgetastet. Das Pixelshading wird bequem über ein Bildraumshadinggitter bewertet und in einem Memorisierungs-Cache zur Wiederverwendung für eine reguläre oder stochastische Rasterisierung (SR) zwischengespeichert. Bei einem anderen Grobpixelabtastansatz wird das Shading in einem parametrischen Fleckraum in einer optimierten Reyes-Architektur gleichmäßig abgetastet. Diese Techniken ermöglichen Shadinggitter mit einem beliebigen Gitterabstand, wodurch gemäß einigen Ausführungsformen eine flexiblere Steuerung der Shadingrate ermöglicht wird.Coarse pixel shading (CPS) scans the shading and visibility in a decoupled manner. The pixel shading is conveniently evaluated via an image space fading grid and cached in a reuse memorization cache for regular or stochastic rasterization (SR). In another coarse pixel sampling approach, the shading in a parametric patch space is uniformly sampled in an optimized Reyes architecture. These techniques enable shading gratings with any grid spacing, thereby allowing for more flexible control of the shading rate, in accordance with some embodiments.
Beim Mehrratenshading wird eine Grobratenshadingphase zur existierenden Pixelratenphase hinzugefügt, um gemäß einigen Ausführungsformen die Leistungsfähigkeit bei einem minimalen Einfluss auf die Bildqualität erheblich zu verbessern. Zwei Shadingphasen, die bei verschiedenen Raten bewertet werden, können auf ein monolithisches Programm abgebildet werden, das auf Prozessorgraphik-Einzelner-Befehl-mehrere-Daten-(SIMD)-Maschinen läuft. Ein monolithisches Programm ist eine einschichtige Software, deren Ausführung nicht von einem anderen Programm abhängt. Gemäß einer Ausführungsform ermöglicht ein Mehrratenshading, dass ein einziger Renderdurchgang einen Shadingcode bei einer oder mehreren verschiedenen Raten ausführt: pro Pixelgruppe, pro Pixel und pro Abtastwert.In multi-rate shading, a coarse data hading phase is added to the existing pixel rate phase to significantly improve performance with minimal impact on image quality, in accordance with some embodiments. Two shading phases, valued at different rates, can be mapped onto a monolithic program running on processor graphics single instruction multiple data (SIMD) machines. A monolithic program is a one-tier software whose execution does not depend on another program. In one embodiment, multi-rate shading allows a single rendering pass to execute a shading code at one or more different rates: per pixel group, per pixel and per sample.
Ein neuer Assembly-Befehl (Schnittstelle zum Festfunktionshardwarebeschleuniger) ermöglicht eine schnelle Umschaltung der Programmausführung von der Grobrate zur Pixelrate innerhalb desselben auf der SIMD-Maschine laufenden Kernprogramms.A new assembly command (hard-function hardware accelerator interface) allows for rapid switching of program execution from the rough rate to the pixel rate within the same core program running on the SIMD engine.
Die neue Festfunktionslogik beschleunigt gemäß einigen Ausführungsformen die Grob-zu-Pixel-Abbildung, die eine viel geringere Komplexität/viel geringere Kosten aufweist als die Logik, die erforderlich ist, um getrennte Programme zu verwalten. Gleichzeitig ist der Softwarezusatzaufwand für die Verwendung der neuen Logik minimal, so dass die Leistungsfähigkeit monolithischer Programme gemäß einigen Ausführungsformen nicht behindert wird.The new hard-function logic, in some embodiments, speeds up the coarse-to-pixel mapping, which has a much lower complexity / cost than the logic required to manage separate programs. At the same time, the software overhead for using the new logic is minimal, so that the performance of monolithic programs is not hindered according to some embodiments.
In der ersten Phase (”Grobphase”) führen alle vier SIMD-Bahnen Grobratenbefehle für ein Grobpixelviereck aus. In der nächsten Phase (Pixelphase #1) werden dieselben SIMD-Bahnen verwendet, um nachfolgende Gruppen von Pixelvierecken auszuführen, die durch das grobe Viereck bedeckt sind. Der Satz von Pixelshadervierecken und ihre Abbildung auf Grobpixel hängen sowohl vom Grobpixellayout (beispielsweise 1×1, 1×2, 2×1, 2×2, 2×4, 4×2, 4×4) als auch von der Rasterisierungsmaske (einige Vierecke können vollständig unbeleuchtet sein) ab. Ferner kann die SIMD-Ausführungsmaske für jede Gruppe verschieden sein. In the first phase ("coarse phase"), all four SIMD paths execute coarse-pixel commands for a coarse-pixel quadrilateral. In the next phase (pixel phase # 1), the same SIMD paths are used to perform subsequent groups of pixel quads covered by the coarse quad. The set of pixel shader quads and their mapping to coarse pixels depend on both the coarse pixel layout (e.g., 1 × 1, 1 × 2, 2 × 1, 2 × 2, 2 × 4, 4 × 2, 4 × 4) and the rasterization mask (some Squares can be completely unlighted). Furthermore, the SIMD execution mask may be different for each group.
In Phase 1, wobei die ersten drei Pixel beleuchtet sind und das vierte Pixel nicht beleuchtet ist, ist die Ausführungsmaske (1, 1, 1, 0), so dass das nicht beleuchtete Pixel nicht ausgeführt wird. Die Grob-zu-Pixel-Abbildung für die Phase #1 ist (0, 1, 0, 1), oder Grobpixel 0 wird auf Pixel A abgebildet, Grobpixel 1 wird auf Pixel B abgebildet, Pixel C wird auch auf Grobpixel 0 abgebildet und Pixel D wird auf Grobpixel 1 abgebildet. Für die Phase #2 ist die Grob-zu-Pixel-Abbildung 2, 3, 2, 3. All diese Informationsbestandteile sind bei der Shaderkompilierung unbekannt, was zu einem erheblichen Softwarezusatzaufwand beitragen würde, falls der Grob-zu-Pixel-Übergang unter Verwendung eines existierenden Satzes von Assembly-Befehlen in Software implementiert werden würde.In
Die Ausführungssequenzen auf der rechten Seite in den
- Pixel_Maske – Angabe, welche Pixel in jeder Gruppe beleuchtet sind
- Pixel_zu_Grob_Abbildung – Angabe eines übergeordneten Grobpixels für jedes Pixel (zum Vermischen von Zwischenphasendaten von Grobphasenausgaben verwendet)
- Pixel_Raten_Schwerpunkt – Pixelort des Schwerpunkts zum Bewerten von Eingangsattributen
- Nächste_Gruppe_Kennung – Kennung der nächsten zu verarbeitenden Pixelgruppe
- Pixel_Mask - specifies which pixels in each group are illuminated
- Pixel_to_Grob_map - specifying a parent coarse pixel for each pixel (used to blend interphase data from coarse phase outputs)
- Pixel_Rate_Point - Pixel location of center of gravity for evaluating input attributes
- Next_group_identifier - Identifier of the next pixel group to be processed
Der neue Befehl ist eine Schnittstelle zum Festfunktionshardwarebeschleuniger. Der Beschleuniger bestimmt eine zweidimensionale Abbildung grober Vierecke auf Pixelvierecke und verwaltet die veränderliche Erweiterung dieser Abbildung, weil die Anzahl der zu verarbeitenden Pixelvierecke sowohl vom Grobvierecklayout als auch von der Rasterisierungsmaske abhängt. Insbesondere unterdrückt der Beschleuniger ganze Vierecke, falls alle Pixel nicht beleuchtet sind. Mit diesem Ansatz abstrahiert ein monolithisches Shaderprogramm von spezifischen Grobvierecklayouts und Abbildungen und verarbeitet Pixelgruppen in einer Schleife, bis der Hardwarebeschleuniger informiert, dass die Verarbeitung abgeschlossen ist (Nächste_Gruppe_Kennung = 0).The new command is an interface to the hard-function hardware accelerator. The accelerator determines a two-dimensional mapping of coarse squares onto pixel quadrilaterals and manages the variable extension of that image because the number of pixel quads to be processed depends on both the coarse square layout and the rasterization mask. In particular, the accelerator suppresses whole squares if all the pixels are not illuminated. With this approach, a monolithic shader program abstracts from specific coarse quad layouts and mappings and loops pixel groups until the hardware accelerator informs that processing is complete (Next_Group_Key = 0).
Gemäß einigen Ausführungsformen führt ein einziger Kern Programme sowohl für das Grob- als auch das Pixelratenshading aus. Gemäß einigen Ausführungsformen kann die SIMD-Maschine verwendet werden, in welcher die gleichen Bahnen sowohl für Grob- als auch für Pixelvierecke, die von den Grobvierecken bedeckt sind, verwendet werden.According to some embodiments, a single core executes programs for both coarse and pixel rate shading. According to some embodiments, the SIMD engine may be used in which the same paths are used for both coarse and pixel quads covered by the rough quads.
Die in
In der Sequenz aus
Dann empfängt die Sequenz eine Pixelgruppenkennung (Pixelgruppen_Kennung) (Block
Gemäß einigen Ausführungsformen kann ein Festfunktionsbeschleuniger in Software, Firmware und/oder Hardware implementiert werden. Bei Software- und Firmwareausführungsformen kann der Beschleuniger durch computerlesbare Befehle implementiert werden, die in einem oder mehreren nicht flüchtigen computerlesbaren Medien wie magnetischen, optischen oder Halbleiterspeichern gespeichert sind. According to some embodiments, a fixed-function accelerator may be implemented in software, firmware, and / or hardware. In software and firmware embodiments, the accelerator may be implemented by computer-readable instructions stored in one or more non-transitory computer-readable media, such as magnetic, optical, or semiconductor memories.
Die in
Die einzigartige Schnittstelle und Zerlegung der Funktionalität zwischen Software (SIMD-Programm) und Hardware (Festfunktionsbeschleuniger) ermöglicht gemäß einer Ausführungsform eine wirksame Abbildung von Mehrratenshadingphasen auf ein monolithisches SIMD-Programm. Gemäß einer Ausführungsform verringert dieser Ansatz erheblich die Hardwarekomplexität (Logik, Puffern) und beeinträchtigt die Leistungsfähigkeit nicht.The unique interface and decomposition of functionality between software (SIMD program) and hardware (fixed function accelerator), according to one embodiment, enables efficient mapping of multi-rate skipping phases to a monolithic SIMD program. In one embodiment, this approach significantly reduces hardware complexity (logic, buffers) and does not degrade performance.
Zum Ermöglichen eines Shadings mit einer Rate, die niedriger als einmal pro Pixel ist, wird der Begriff eines Grobpixels (CP) eingeführt. Ein CP ist eine Gruppe von Nx×Ny Pixeln, die sich das Ergebnis einer einzigen Grobpixelshader-(CPS)-Bewertung teilen. Dies ähnelt der Art, wie sich mehrere Sichtbarkeitsproben eine einzige Pixelshaderbewertung mit MSAA teilen, wobei der Unterschied darin besteht, dass die Shadingrate durch Ändern der CP-Größe geändert werden kann. Gruppen von 2×2-CP, die als Grobvierecke (CQ) bezeichnet werden, werden zu einer Zeit geshadet, um das Berechnen von Ableitungen unter Verwendung endlicher Differenzen zu erleichtern.To allow shading at a rate lower than once per pixel, the notion of a coarse pixel (CP) is introduced. A CP is a set of N x N y pixels sharing the result of a single coarse pixel shader (CPS) rating. This is similar to the way multiple visibility samples share a single pixel shard score with MSAA, the difference being that the shading rate can be changed by changing the CP size. Groups of 2 × 2 CP, called coarse squares (CQ), are shaded at one time to facilitate calculating derivatives using finite differences.
Viele Anwendungen können von der Fähigkeit profitieren, Shadingraten über verschiedene Gebiete des Bildschirms zu variieren. Um eine solche Variation der Shadingrate zu ermöglichen, kann der Bildschirm in Kacheln mit der Größe Tx×Ty unterteilt werden, während für jede Kachel ein verschiedener Wert der CP-Größe erlaubt wird. Jede Kachel wird auf ein Shadinggitter von CQ mit der ausgewählten CP-Größe abgebildet.Many applications can benefit from the ability to vary shading rates across different areas of the screen. To allow such variation of the shading rate, the screen may be divided into tiles of size T x x T y , while for each tile a different value of CP size is allowed. Each tile is mapped to a CQ shading grid with the selected CP size.
Eine vereinfachte entkoppelte Abtasttechnik kann durch Vermeiden überlappender Shadinggitter erreicht werden, wodurch gewährleistet wird, dass jedes Pixel eindeutig zu nur einem CQ gehört. Dies kann erreicht werden, indem die CP-Größen auf einen endlichen Wertesatz beschränkt werden, wodurch gewährleistet wird, dass das Shadinggitter mit den Kachelgrenzen vollkommen ausgerichtet ist. Unter dieser Annahme kann die Shadingtechnik folgendermaßen zusammengefasst werden: A simplified decoupled sampling technique can be achieved by avoiding overlapping shading lattices, thereby ensuring that each pixel clearly belongs to only one CQ. This can be achieved by limiting the CP sizes to a finite set of values, ensuring that the shading grid is perfectly aligned with the tile boundaries. Under this assumption, the shading technique can be summarized as follows:
Um ein vollkommen ausgerichtetes Gitter von CQ innerhalb einer Kachel zu gewährleisten, können die CP-Größen so beschränkt werden, dass die Kachelgröße ein gemeinsames Vielfaches (beispielsweise das kleinste gemeinsame Vielfache (LCM)) aller erlaubten CQ-Größen ist. To ensure a perfectly aligned grid of CQ within a tile, the CP sizes can be constrained so that the tile size is a common multiple (eg, the least common multiple (LCM)) of all allowed CQ sizes.
Eine kleine Anzahl von Modi, die leicht zu verwenden sind, kann die CP-Größe steuern, diese Modi sind jedoch mächtig genug, um einen Bereich von Anwendungen zu unterstützen. In jedem Fall braucht der Benutzer eine CP-Größe nicht direkt zu spezifizieren, sondern vielmehr ein Paar von CP-Parametern (sx, sy), wodurch die gewünschte CP-Größe spezifiziert wird. Die CP-Parameter werden dann auf die nächstliegende verfügbare CP-Größe quantisiert, welche die angeforderte Shadingrate erfüllt oder überschreitet. Auf der Grundlage des ausgewählten Modus können die CP-Parameter (sx, sy)
- • anhand Pro-Vertex-Shaderausgaben interpoliert werden,
- • unter Verwendung des Renderzustands auf einen konstanten Wert gelegt werden oder
- • als eine radiale Funktion von Bildschirmkoordinaten ausgedrückt werden.
- • interpolated using pro vertex shader outputs,
- • be set to a constant value using the rendering state or
- • expressed as a radial function of screen coordinates.
Das Steuern der CP-Parameter mit einer Shaderausgabe ist sehr flexibel und ermöglicht es, viele Verwendungsfälle auszudrücken.Controlling the CP parameters with a shader output is very flexible and allows many usage cases to be expressed.
Aus Gründen der Einfachheit können konstante CP-Parameter ermöglicht werden. Dies ist das am wenigsten invasive Verfahren, um CPS zu einer existierenden Anwendung hinzuzufügen. Die Fähigkeit, eine radiale Funktion zu verwenden, ist insbesondere für das foveale Rendern aufgenommen. Weil eine radiale Funktion nicht robust unter Verwendung einer linearen Interpolation von Pro-Vertex-Attributen ausgedrückt werden kann, kann ein getrennter Modus für diesen Spezialfall verwendet werden.For the sake of simplicity, constant CP parameters can be enabled. This is the least invasive method to add CPS to an existing application. The ability to use a radial function is especially included for foveal rendering. Because a radial function can not be robustly expressed using linear interpolation of pro-vertex attributes, a separate mode can be used for this special case.
Um stets die erforderliche Shadingrate zu erfüllen, wird die CP-Größe, Nx×Ny, durch Berechnen konservativer Untergrenzen für |sx| und |sy| innerhalb der Kachel bestimmt und auf die nächstgelegene verfügbare CP-Größe abgerundet. Die Verwendung von Absolutwerten ermöglicht hier die Verwendung negativer CP-Parameter für eine Bewegungs- und Defokussierungsunschärfe.To always meet the required shading rate, the CP size, N x x N y , is calculated by computing conservative lower limits for | s x | and | s y | within the tile and rounded to the nearest available CP size. The use of absolute values allows the use of negative CP parameters for a movement and defocusing blur.
Es gibt zwei Quantisierungsquellen von CP-Größen. Erstens wird die CP-Größe nur einmal pro Kachel bewertet. Zweitens wird die CP-Größe auf eine der endlichen verfügbaren CP-Größen quantisiert. Diese beiden Quellen bewirken, dass sich Diskontinuitäten in den CP-Größen von Kachel zu Kachel bewegen, was zu sichtbaren Kachelübergängen führen kann. Um diese Diskontinuitäten zu kompensieren, wird die Detailniveau-(LOD)-Berechnung des Texturabtasters erweitert, um die angeforderte (nicht quantisierte) CP-Größe widerzuspiegeln. Dies kann durch Skalieren der endlichen Differenzen von Texturkoordinaten erfolgen, die für das Berechnen des Textur-LOD-Werts verwendet werden: wobei δx und δy die endlichen Differenzen der Texturkoordinaten entlang der x- bzw. der y-Achse sind. Die Werte von δx und δy werden anders als die CP-Größe, die einmal pro Kachel bewertet wird, für jedes CP bewertet. Die Kompensation des Textur-LODs erzeugt eine glatte Variation von Bildeinzelheiten, wodurch die Diskontinuitäten in der CP-Größe maskiert werden.There are two quantization sources of CP sizes. First, the CP size is scored only once per tile. Second, the CP size is quantized to one of the finite available CP sizes. These two sources cause discontinuities in the CP sizes to move from tile to tile, which can lead to visible tile transitions. To compensate for these discontinuities, the detail level (LOD) calculation of the texture scanner is extended to reflect the requested (unquantized) CP size. This can be done by scaling the finite differences of texture coordinates used to calculate the texture LOD value: where δ x and δ y are the finite differences of the texture coordinates along the x and y axes, respectively. The values of δ x and δ y are evaluated for each CP other than the CP size, which is evaluated once per tile. The compensation of the texture LOD produces a smooth variation of image detail, masking the discontinuities in the CP size.
Wenngleich die LOD-Kompensation in vielen Fällen wirksam sein kann, gibt es einige Szenarien, in denen sie nicht anwendbar sein könnte, beispielsweise für prozedural erzeugte Texturen. In diesen Fällen können LOD-Kompensationstechniken möglicherweise im Benutzerraum auf der Grundlage der CP-Größe und CP-Parameter, die als Shadereingaben verfügbar sind, angewendet werden.Although LOD compensation can be effective in many cases, there are some scenarios in which it may not be applicable, such as procedurally generated textures. In these cases, LOD compensation techniques may possibly be applied in user space based on the CP size and CP parameters available as shader inputs.
Das Shading kann mit drei verschiedenen Raten innerhalb desselben Renderdurchgangs ausgeführt werden. Einige der Shaderberechnungen können zu einer niedrigeren Rate als einmal pro Pixel verschoben werden, während bestimmte Hochfrequenzeffekte pro Pixel oder sogar pro Sichtbarkeitsabtastwert bewertet werden können, um das Aliasing zu verringern. Dies ist bei aktuellen Graphikanwendungsprogrammschnittstellen (API) nicht möglich, weil der Pixelshader dafür ausgelegt sein kann, bei der Pixel- oder Abtastrate zu laufen, die beiden einander jedoch ausschließen. Konzeptionell wird die einzelne Pixelshaderstufe der Graphikpipeline in drei verschiedene Phasen unterteilt, nämlich eine für jede Rate (siehe
Beim Mehrratenshading wird ein Niederfrequenzdiffusionsterm pro Grobpixel berechnet und wird ein Hochfrequenzspiegelterm pro Pixel berechnet. Die CP-Größe wird durch den Vertexshader gesteuert. Gemäß einer Ausführungsform kann eine einzige konzeptionelle Pipelinestufe einen einzigen Shader ausführen, der von bis zu drei verschiedenen Eingangspunkten kompiliert wurde, wobei einer jeder Rate zugeordnet ist, wie nachstehend dargestellt ist: In multi-rate shading, a low frequency diffusion term per coarse pixel is calculated and a high frequency mirror term per pixel is calculated. The CP size is controlled by the vertex shader. In one embodiment, a single conceptual pipeline stage may execute a single shader compiled from up to three different entry points, with one associated with each rate, as shown below:
Dieser Ansatz bietet Programmierern ein hohes Maß an Einsicht in und ein hohes Maß an Steuerung darüber, welcher Code bei jeder Rate abläuft sowie welche Daten zwischen Phasen fließen. Die einfacheren vorstehend beschriebenen Modelle können noch als geschichtete Abstraktionen in Fällen implementiert werden, in denen die Steuerung im Interesse einer einfachen Verwendung geopfert werden kann.This approach provides programmers with a high degree of insight into and control over which code expires at each rate and which data flows between phases. The simpler models described above may still be implemented as layered abstractions in cases where control may be sacrificed for the sake of ease of use.
Wenn die CP-Größe durch den Shadercode gesteuert wird, wird ein zusätzlicher vom System interpretierter Wert, SV_GrobPixelGröße, der letzten Shadingstufe vor dem Rasterisierer verfügbar gemacht. Diese Ausgabe ist ein Zweikomponentenvektor und entspricht den CP-Parametern (δx, δy). Typischerweise wird diese Ausgabe in einen Vertexshader eingesetzt, könnte jedoch auch in einem Hüllen-, Domain- oder Geometrieshader definiert werden, falls verwendet.If the CP size is controlled by the shader code, an additional system interpreted value, SV_GrobPixelSize, of the last shading level before the rasterizer is made available. This output is a two-component vector and corresponds to the CP parameters (δ x , δ y ). Typically, this output is used in a vertex shader, but could also be defined in a shell, domain, or geometry shader, if used.
Zusätzlich hat der bei der CP-Rate laufende Shadercode Zugriff auf Eingaben sowohl für die interpolierten Werte der CP-Parameter vor der Quantisierung als auch für die tatsächliche Grobpixelgröße: SV_AngeforderteGrobPixelGröße bzw. SV_GrobPixelGröße. Diese beiden Werte reichen zusammen aus, damit ein Shader seine eigene LOD-Kompensation für die Verwendung bei Berechnungen berechnen kann, welche den Texturabtaster nicht einschließen (beispielsweise Vorfiltern einer prozeduralen Textur).In addition, the shader code running at the CP rate has access to inputs for both the interpolated values of the CP parameters before quantization and for the actual coarse pixel size: SV_ requestedGrobPixelSize and SV_GrobPixelSize, respectively. These two values are sufficient for a shader to compute its own LOD compensation for use in calculations that do not include the texture scanner (for example, prefiltering a procedural texture).
Es gibt mehrere wichtige Verwendungsfälle, in denen CPS verwendet werden kann, um das Ausmaß der Pixelshadingarbeit erheblich zu verringern. Dies ist in keiner Weise eine erschöpfende Liste, weil es viel mehr Verwendungsfälle gibt.There are several important uses cases where CPS can be used to significantly reduce the amount of pixel shading work. This is by no means an exhaustive list because there are many more uses.
Das Rendern auf die native Auflösung von Anzeigen mit hohen DPI-Werten ist häufig eine für eine Graphikverarbeitungseinheit (GPU) zu anspruchsvolle Aufgabe. Das typische Gegenmittel besteht darin, die gerenderte Auflösung zu verringern und eine Aufwärtsabtastung des Bilds vorzunehmen, was zu einer wahrnehmbaren Qualitätsverschlechterung entlang Objektsilhouetten führt, während Änderungen im Inneren von Flächen nicht so auffällig sind. Stattdessen können wir durch Verwendung von CPS und Legen der CP-Parameter auf einen konstanten Wert, wie 2×2-Pixel, eine drastische Verringerung der Shadingrate erreichen, während die meisten Einzelheiten beibehalten werden.Rendering to the native resolution of displays with high DPI values is often a demanding task for a graphics processing unit (GPU). The typical antidote is to reduce the rendered resolution and upsample the image, resulting in perceptible quality degradation along object silhouettes, while changes in interior surfaces are not so noticeable. Instead, by using CPS and setting the CP parameters to a constant value, such as 2 × 2 pixels, we can achieve a drastic reduction in the shading rate while retaining most of the details.
Mit einer flexibleren Steuerung über die Shadingrate kann ein breiterer Anwendungsbereich ermöglicht werden, wie nachstehend erörtert wird.With more flexible control over the shading rate, a wider scope of application can be enabled, as discussed below.
Einige Materialien weisen zahlreiche Oberflächeneinzelheiten auf, während dies bei anderen nicht der Fall ist. Durch Wählen eines vom Materialtyp abhängigen CP-Parameters können Berechnungen eingespart werden, bei denen der sichtbare Einfluss minimal ist. Beispielsweise kann ein Teilchensystem für das Rendern von Rauch ziemlich homogen sein und bei einer niedrigen Rate geshadet werden, während ein Zeichen mit Text ein Shading mit einer höheren Auflösung rechtfertigen kann. Ähnlich können Objekte in einem Vollschatten möglicherweise bei einer geringeren Rate geshadet werden als Objekte im hellen Sonnenlicht.Some materials have numerous surface details, while others do not. By choosing a CP parameter that depends on the material type, calculations can be saved where the visible influence is minimal. For example, a particle system may be quite homogeneous for rendering smoke and be shed at a low rate, while a character with text may justify shading at a higher resolution. Similarly, objects in a full shade may possibly be shaded at a lower rate than objects in bright sunlight.
CPS erleichtert es, mit einer fovealen Renderung wirksam zu shaden, wodurch vermieden wird, dass eine Geometrie über mehrere Renderdurchgänge erneut gesendet wird. Eine konfigurierbare radiale Funktion steuert die Shadingrate mit wenigen Parametern: dem Punkt c, welcher dem Sichtzentrum entspricht, dem Aspektverhältnis a, inneren und äußeren kleinen Radien ri und ro und inneren und äußeren CP-Parametern smin und smax. Für ein foveales Rendern kann ri auf eine Größe gesetzt werden, welche einen Sichtwinkel von etwa 5° repräsentiert, und kann für eine kreisförmige Abfallfunktion a = 1 gesetzt werden.CPS makes it easier to effectively shade with a foveal rendering, which avoids retransmitting a geometry over multiple render passes. A configurable radial function controls the shading rate with few parameters: the point c, which corresponds to the view center, the aspect ratio a, inner and outer small radii r i and r o, and inner and outer CP parameters s min and s max . For a foveal rendering, r i can be set to a size representing a viewing angle of about 5 ° and can be set for a circular truncation function a = 1.
Wenngleich das Shadingsystem gemäß einigen Ausführungsformen beliebige Positionen für das Gebiet hoher Auflösung unterstützt, erzeugt auch das einfache Fixieren von c im Zentrum des Bildschirms und das Verwenden einer breiteren Sicht gute Ergebnisse, und zwar insbesondere, wenn aus einer First-Person-Perspektive gerendert wird. Diese Technik kann als peripheres CPS-Rendern im Gegensatz zum eigentlichen fovealen Rendern bezeichnet werden, was nur bei der Sichtverfolgung möglich ist.While the shading system, in accordance with some embodiments, supports any location for the high resolution area, simply fixing c in the center of the screen and using a broader view produces good results, especially when rendering from a first-person perspective. This technique may be referred to as peripheral CPS rendering as opposed to actual foveal rendering, which is only possible with visual tracking.
Gebiete des Bildschirms mit einer Bewegungs- oder Defokussierungsunschärfe haben typischerweise eine schmale Frequenzantwort und können mit einer niedrigeren Rate geshadet werden. Mit CPS kann die Shadingrate in diesen Gebieten gesteuert werden, indem CP-Parameter im Vertexshader festgelegt werden, die proportional zur Bildschirmraumgeschwindigkeit oder zum Konfusionskreis an diesem Vertex sind. Weil der Vertexshader vor dem Abschneiden bewertet wird, können sich Vertexe hinter der Kamera oder bei einer Tiefe von Null befinden. Für diese Fälle wird die Shadingrate nicht verringert, um Robustheit zu gewährleisten.Regions of the screen with a motion or defocus blur typically have a narrow frequency response and can be shaded at a lower rate. With CPS, the shading rate in these areas can be controlled by setting CP parameters in the vertex shader that are proportional to the screen space velocity or the confusion circle at that vertex. Because the vertex shader is scored before truncation, vertexes may be behind the camera or at a depth of zero. For these cases, the shading rate is not reduced to ensure robustness.
Die CP-Parameter können für die x- und y-Achsen getrennt bestimmt werden, um anisotrope Shadingraten für die Bewegungsunschärfe zu erzeugen. Durch Zuweisen negativer CP-Parameter für Vertexe vor der Brennebene und positiver CP-Parameter für jene, die dahinter liegen, interpolieren die CP-Parameter an der Brennebene auf Null. Ähnlich gewährleistet das Zuweisen signierter CP-Parameter für die Geschwindigkeit Nullwerte an stationären Punkten innerhalb eines sich bewegenden primitiven Elements. Weil der Konfusionskreisradius des Bildschirmraums und die Geschwindigkeit lineare Funktionen im Bildschirmraum sind, sollte eine perspektivisch korrekte Interpolation für den CP-Parameter in diesen Fällen deaktiviert werden.The CP parameters can be determined separately for the x and y axes to produce anisotropic shading rates for motion blur. By assigning negative CP parameters for vertexes before the focal plane and positive CP parameters for those behind, the CP parameters at the focal plane interpolate to zero. Similarly, assigning signed CP parameters for velocity ensures zero values at stationary points within a moving primitive element. Because the confusion circle radius of the screen space and the velocity are linear functions in the screen space, a perspective correct interpolation for the CP parameter should be disabled in these cases.
Es gibt mehrere verschiedene Anwendungen, bei denen ein Mehrratenshading ein wertvolles Werkzeug für das Skalieren der Qualität gegen die Leistungsfähigkeit bereitstellt. Der Umgebungsverdeckungsterm hoher Qualität wird unter Verwendung einer Voxelkegelverfolgung alle 2×2 Pixel berechnet, während diffuse Texturnachschlagewerte bei einer Pixelrate bewertet werden, um möglichst viele Oberflächeneinzelheiten zu erhalten. Ähnlich können auch komplexe niederfrequente Beleuchtungsberechnungen in der Art der Berechnung einer indirekten Beleuchtung bei einer niedrigeren Rate bewertet werden. There are several different applications where multi-rate shading provides a valuable tool for scaling quality versus performance. The high quality ambient occlusion term is calculated using voxel-cone tracking every 2 x 2 pixels, while evaluating diffuse texture lookup values at a pixel rate to obtain as many surface details as possible. Similarly, complex low-frequency lighting calculations such as the calculation of indirect lighting at a lower rate can also be evaluated.
Ein weiteres Beispiel ist die lokale Erhöhung der Shadingrate in schwierigen Gebieten. Dies kann erfolgen, um das Shading bei einer Pixel- oder Abtastwertrate nur um spiegelnde Merkmale zu berechnen und ansonsten bei einer niedrigeren Rate zu berechnen. Es ist bei den heutigen Echtzeitarbeitsbelastungen recht üblich, einen Typ eines Mehrratenshadings unter Verwendung eines Ansatzes mit zwei Durchgängen zu implementieren. In diesem Fall läuft der erste Durchgang bei der Pixelrate (MSAA), verwirft jedoch schwierige Pixel, die in einem Stencil-Puffer markiert werden. Der zweite Durchgang führt das Shading dann pro Abtastwert aus, jedoch nur für Pixel, die im Stencil-Puffer markiert sind. Unter Verwendung von CPS können diese Algorithmen in einen einzigen Durchgang umgewandelt werden, der selektiv das Ergebnis in Pixel- und Abtastwert-Raten-Shadern berechnet, die bei sogar noch niedrigeren Raten Ergebnisse liefern, wenn dies möglich ist.Another example is the local increase in shading rates in difficult areas. This can be done to calculate the shading at a pixel or sample rate only by specular features and otherwise compute at a lower rate. It is quite common in today's real-time workloads to implement one type of multi-rate harming using a two-pass approach. In this case, the first pass runs at the pixel rate (MSAA), but discards difficult pixels that are marked in a stencil buffer. The second pass then performs shading per sample, but only for pixels marked in the stencil buffer. Using CPS, these algorithms can be converted into a single pass that selectively calculates the result in pixel and sample rate shaders that yield results at even lower rates, if possible.
Das CPS-Mehrratenshading kann auch verwendet werden, um ein Aussondern auf einer Pro-CP-(beispielsweise 4×4 Pixel)-Basis auszuführen.CPS multi-rate shading may also be used to perform paging on a per-CP (e.g., 4 x 4 pixels) basis.
Eine CPS-Softwareimplementation ist eine Pipeline in einem Zentralprozessor auf der Grundlage eines funktionellen Direct3D-11-Simulators. Für diese Implementation können eine Kachelgröße von 16×16 Pixeln und CP-Breiten und Höhen von 1, 2 oder 4 verwendet werden. Um die CPS-Programmiererabstraktionen zu unterstützen, wird die DirectX High Level Shading Language erweitert und können neue API-Funktionen eingeführt werden. Der Simulator kann dafür eingerichtet werden, den dynamischen Befehlszählwert zu messen, um einen Hinweis auf die Kosten des Shadings zu geben. Alle Speicherzugriffe auf den Farbpuffer können zum Messen der Farbbandbreite verfolgt werden.A CPS software implementation is a pipeline in a central processor based on a Direct3D-11 functional simulator. For this implementation, a tile size of 16x16 pixels and CP widths and heights of 1, 2, or 4 may be used. To support the CPS programmer abstractions, the DirectX High Level Shading Language is extended and new API functions can be introduced. The simulator can be set up to measure the dynamic command count to give an indication of the cost of shading. All memory accesses to the color buffer can be tracked to measure color bandwidth.
Zusätzlich zum Pixelshading können eine Grobpixel-(CP)- sowie eine Abtastwertratenshadingphase in die Pipeline eingebracht werden. Es gibt mehrere mögliche Implementationsstrategien für das Mehrratenshading abhängig davon, wie diese zusätzlichen Phasen über mehrere Prozessoren und Threads geplant werden. Bei einer Planungsstrategie werden die CP-, Pixel- und Abtastwertratenshadingphasen nacheinander auf demselben Thread ausgeführt. Eine Beschränkung des Plans in dieser Weise ermöglicht eine einfache Implementation, wobei erheblich weniger Änderungen an der Pipeline erforderlich sind. Dadurch wird es unnötig, Daten über Phasen zu transportieren, weil die Daten in denselben Registern bleiben können. Dadurch werden auch komplexe Ablaufsteuermechanismen für das Drosseln von Zwischenphasendaten vermieden.In addition to pixel shading, a coarse pixel (CP) as well as a sample rate shading phase may be introduced into the pipeline. There are several possible implementation strategies for multi-rate shading depending on how these additional phases are scheduled across multiple processors and threads. In a scheduling strategy, the CP, pixel and sample rate slopes phases are executed one after the other on the same thread. Limiting the plan in this manner allows for easy implementation, with significantly fewer changes to the pipeline. This makes it unnecessary to transport data across phases because the data can remain in the same registers. This also avoids complex flow control mechanisms for throttling interphase data.
Für SIMD-Breiten, die größer als 4 sind (beispielsweise 8 oder 12), können mehrere Grobvierecke gleichzeitig geplant werden. Weil jedes Grobviereck jedoch eine andere Anzahl abgedeckter Pixel aufweisen kann, kann eine höhere SIMD-Breite auch zu einer geringeren Verwendung einiger SIMD-Bahnen führen, weil einige Pixelphasenschleifen früh enden. Für eine verbesserte Effizienz mit großen SIMD-Breiten kann ein besseres Planungsschema gewählt werden, das die Pixelphasenarbeit gleichmäßiger über SIMD-Bahnen oder sogar getrennte Threads verteilt.For SIMD widths greater than 4 (for example, 8 or 12), multiple coarse quads can be scheduled simultaneously. However, because each coarse square may have a different number of covered pixels, a higher SIMD width may also result in less use of some SIMD traces because some pixel phase loops will end sooner. For improved efficiency with large SIMD widths, a better scheduling scheme can be chosen that distributes pixel phase work more uniformly across SIMD lanes or even separate threads.
Ein Shading bei einer niedrigeren Rate als einmal pro Pixel hat einen Einfluss darauf, wie gut eine Farbpufferkompression für das Verringern der Speicherbandbreite wirkt. Ein höherer Gleichmäßigkeitsgrad in Farbwerten innerhalb von 2×2-Pixelblöcken oder größeren Pixelblöcken verringert im Allgemeinen die Entropie und macht die Kompression wirksamer. Es gibt viele existierende Verfahren für die Farbkompression, die von CPS profitieren können. Um zu veranschaulichen, dass dies in der Praxis funktioniert, kann das Schema von Pool u. a. verwendet werden, das Farbdifferenzen zwischen Pixeln berechnet und dann eine Entropiecodierung über die Differenzen unter Verwendung eines Fibonacci-Codierers anwendet. Pool u. a.
Das Schema von Pool u. a. kann modifiziert werden, so dass die Pixel stets unter Verwendung einer vordefinierten Hilbert-Kurve in einer hierarchischen Weise aufgesucht werden. Dadurch werden die Differenzen zuerst innerhalb eines 2×2-Vierecks und dann innerhalb eines 4×4-Gebiets usw. berechnet. Wenn die CPS aktiviert wird, ist es wahrscheinlich, dass mehrere Farben innerhalb einiger dieser Gebiete gleich sind, wodurch Nulldifferenzen erzeugt werden, die unter Verwendung eines Fibonacci-Codierers wirksam codiert werden. Wir verwenden eine Cacheleitungsgröße von 128 Bytes, entsprechend 8×4 Pixeln für ein RGBA8-Renderziel. Wenn eine Leitung aus dem Farbcache ausgestoßen wird, wird sie komprimiert, und falls die sich ergebende Größe kleiner oder gleich 64 Bytes ist, ist die Kompression erfolgreich, und die Leitung wird in einem getrennten Steuerpuffer als komprimiert markiert und in nur einer 64-Byte-Transaktion zum Speicher gesendet. Andernfalls werden die unkomprimierten Daten in zwei 64-Byte-Transaktionen zum Speicher gesendet. Ein 64-kB-Farbcache wird mit einer Am-wenigstens-kürzlich-verwendeten-(LRU)-Ersetzungsrichtlinie modelliert.The scheme of Pool u. a. can be modified so that the pixels are always visited using a predefined Hilbert curve in a hierarchical manner. Thereby, the differences are first calculated within a 2 × 2 quadrilateral and then within a 4 × 4 region and so on. When the CPS is activated, it is likely that several colors will be the same within some of these areas, producing zero differences that are effectively coded using a Fibonacci coder. We use a cache line size of 128 bytes, corresponding to 8x4 pixels for an RGBA8 render destination. When a line is ejected from the color cache, it is compressed, and if the resulting size is less than or equal to 64 bytes, compression is successful and the line is marked as compressed in a separate control buffer and written in only one 64-byte stream. Transaction sent to the store. Otherwise, the uncompressed data is sent to memory in two 64-byte transactions. A 64kB color cache is modeled using an Am At Least Recently Used (LRU) replacement policy.
Das Grobpixelshading (CPS) kann die Kosten des Shadens mit einem geringen bis keinem wahrnehmbaren Einfluss auf die Bildqualität erheblich verringern. Die CPS passt natürlich in die Entwicklung der Echtzeitgraphikpipeline, weil sie einen neuen Grad an Flexibilität durch programmierbare Shadingraten einführt, während sie noch einen realen Bedarf an Energieeffizienz für den schnell wachsenden Markt handgehaltener Vorrichtungen adressiert.Coarse pixel shading (CPS) can significantly reduce the cost of shadowing with little to no noticeable impact on image quality. Of course, the CPS fits in with the development of the real-time graphics pipeline because it introduces a new level of flexibility through programmable shading rates while still addressing a real need for energy efficiency for the fast growing handheld device market.
Eine Ausführungsform des Datenverarbeitungssystems
Der eine oder die mehreren Prozessoren
Gemäß einer Ausführungsform weist der Prozessor
Der Prozessor
Die Speichervorrichtung
Der ICH
Die internen Cacheeinheiten
Der Prozessor
Gemäß einer Ausführungsform weisen der eine oder die mehreren Kerne
Der Prozessor
Gemäß einer Ausführungsform wird eine ringbasierte Verbindungseinheit
Die als Beispiel dienende I/O-Strecke
Gemäß einer Ausführungsform sind die Kerne
Der Prozessor
Der Graphikprozessor
Gemäß einer Ausführungsform weist der Graphikprozessor
Die GPE
Gemäß einer Ausführungsform weist die Medienpipeline
Das 3D/Medien-Untersystem
Gemäß einer Ausführungsform koppelt die GPE
Eine Abtastmaschine
Die spezialisierte Medienabtastlogik in der Abtastmaschine
Die Bewegungsschätzmaschine
Das Bildskalier- und Filtermodul
Gemäß einer Ausführungsform weist die Graphikverarbeitungsmaschine
Der Graphikprozessor empfängt Befehlsstapel über die Ringverbindung
Der Graphikprozessor weist skalierbare Thread-Ausführungsressourcen mit modularen Kernen
Gemäß einer Ausführungsform wird das Ausführungseinheitsfeld
Jede Ausführungseinheit im Ausführungseinheitsfeld
Der Ausführungseinheitsbefehlssatz schließt Einzelner-Befehl-mehrere-Daten-(SIMD)-Befehle ein. Die verschiedenen Datenelemente können als ein gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit verarbeitet die verschiedenen Elemente auf der Grundlage der Datengröße der Elemente. Wenn beispielsweise ein 256 Bit breiter Vektor verarbeitet wird, werden die 256 Bits des Vektors in einem Register gespeichert und bearbeitet die Ausführungseinheit den Vektor als vier getrennte 64-Bit-gepackte Datenelemente (Vier-Wort-(QW)-Größen-Datenelemente), acht getrennte 32-Bit-gepackte Datenelemente (Doppel-Wort-(DW)-Größen-Datenelemente), sechzehn getrennte 16-Bit-gepackte Datenelemente (Wort-(W)-Größen-Datenelemente) oder zweiunddreißig getrennte 8-Bit-Datenelemente (Byte-(B)-Größen-Datenelemente). Es sind jedoch auch andere Vektorbreiten und Registergrößen möglich.The execution unit instruction set includes single instruction multiple data (SIMD) instructions. The various data elements can be stored as a packed data type in a register, and the execution unit processes the various elements based on the data size of the elements. For example, when processing a 256 bit wide vector, the 256 bits of the vector are stored in a register and the execution unit processes the vector as four separate 64-bit packed data elements (four word (QW) size data elements), eight separated 32-bit packed data elements (double word (DW) size data elements), sixteen 16-bit separate packed data elements (word (W) size data elements) or thirty-two separate 8-bit data elements (bytes - (B) -Sizes data elements). However, other vector widths and register sizes are possible.
Ein oder mehrere interne Befehlscaches (beispielsweise
Während der Ausführung senden die Graphik- und Medienpipelines Thread-Einleitungsanforderungen über die Thread-Hervorbringungs- und Abfertigungslogik zur Thread-Ausführungslogik
Sobald eine Gruppe geometrischer Objekte verarbeitet und zu Pixeldaten rasterisiert wurde, wird der Pixelshader
Gemäß einer Ausführungsform stellt der Datenport
Gemäß einer Ausführungsform unterstützen die Graphikprozessorausführungseinheiten Befehle in einem 128-Bit-Format
Für jedes Format definiert ein Befehlsoperationscode
Einige Ausführungseinheitsbefehle haben bis zu drei Operanden, einschließlich zweier Quelloperanden src0
Gemäß einer Ausführungsform werden Befehle auf der Grundlage von Operationscodebitfeldern gruppiert, um die Operationscodedecodierung
Gemäß einer Ausführungsform enthält die 3D-Graphikanwendung
Das Betriebssystem
Der Benutzermodusgraphiktreiber
In dem Maße, dass hier verschiedene Operationen oder Funktionen beschrieben werden, können sie als Hardwareschaltungen, Softwarecode, Befehle, Konfigurationen und/oder Daten beschrieben oder definiert werden. Der Inhalt kann in Hardwarelogik oder als direkt ausführbare Software (”Objekt”- oder ”ausführbare” Form), Quellcode, Shadercode hoher Ebene, der für die Ausführung auf einer Graphikmaschine vorgesehen ist, oder Assemblysprachencode niedriger Ebene in einem Befehlssatz für einen spezifischen Prozessor oder Graphikkern verwirklicht werden. Der Softwareinhalt der hier beschrienbenen Ausführungsformen kann durch einen Herstellungsgegenstand mit dem darauf gespeicherten Inhalt oder durch ein Verfahren zum Betreiben einer Kommunikationsschnittstelle, um Daten über die Kommunikationsschnittstelle zu senden, bereitgestellt werden.To the extent that various operations or functions are described herein, they may be described or defined as hardware circuits, software code, commands, configurations, and / or data. The content may be in hardware logic or as directly executable software ("object" or "executable" form), source code, high level shader code intended for execution on a graphics engine, or low level assembly language code in a instruction set for a specific processor or Graphics core can be realized. The software content of the embodiments herein may be provided by an article of manufacture having the content stored thereon or by a method of operating a communications interface to send data over the communications interface.
Ein nicht flüchtiges maschinenlesbares Speichermedium kann eine Maschine veranlassen, die beschriebenen Funktionen oder Operationen auszuführen, und es weist einen Mechanismus auf, der Informationen in einer für eine Maschine (beispielsweise einer Rechenvorrichtung, einem elektronischen System usw.) zugänglichen Form speichert, wie beschreibbare/nicht beschreibbare Medien (beispielsweise Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen usw.). Eine Kommunikationsschnittstelle weist einen Mechanismus auf, der sich mit einem fest verdrahteten, drahtlosen, optischen usw. Medium verbindet, um mit einer anderen Vorrichtung zu kommunizieren, wie eine Speicherbusschnittstelle, eine Prozessorbusschnittstelle, eine Internetverbindung, eine Plattensteuereinrichtung usw. Die Kommunikationsschnittstelle ist dafür ausgelegt, durch Bereitstellen von Konfigurationsparametern oder Senden von Signalen die Kommunikationsschnittstelle zu präparieren, um ein den Softwareinhalt beschreibendes Datensignal bereitzustellen. Auf die Kommunikationsschnittstelle kann durch einen oder mehrere Befehle oder Signale, die zur Kommunikationsschnittstelle gesendet werden, zugegriffen werden.A non-transitory machine-readable storage medium may cause a machine to perform the described functions or operations, and has a mechanism that stores information in a form accessible to a machine (eg, a computing device, an electronic system, etc.), such as writable / non-writable recordable media (e.g., read-only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.). A communication interface has a mechanism that connects to a hard-wired, wireless, optical, etc. medium to communicate with another device such as a memory bus interface, processor bus interface, internet connection, disk controller, etc. The communication interface is configured to prepare the communication interface by providing configuration parameters or transmitting signals to provide a data signal describing the software content. The communication interface may be accessed by one or more commands or signals sent to the communication interface.
Die folgenden Klauseln und/oder Beispiele betreffen weitere Ausführungsformen:
Eine als Beispiel dienende Ausführungsform kann ein Verfahren sein, bei dem eine Grob-zu-Pixel-Abbildung für eine Pixelgruppe definiert wird, ein Grobpixelshading ausgeführt wird und ein Pixelshading in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung ausgeführt wird. Bei dem Verfahren kann auch bestimmt werden, welche Pixel in der Gruppe beleuchtet sind. Bei dem Verfahren kann auch derselbe Kern für das Grob- und Pixelshading verwendet werden. Bei dem Verfahren kann auch ein Einzelner-Befehl-mehrere-Daten-Shader verwendet werden. Bei dem Verfahren können auch dieselben Bahnen sowohl für das Grob- als auch für das Pixelshading verwendet werden. Bei dem Verfahren kann auch ein Pixelshading für die Gruppe ausgeführt werden, nachdem ein Grobshading für die Gruppe ausgeführt wurde. Bei dem Verfahren kann auch ein Befehl zum Schalten der Programmausführung von einer Grobrate zu einer Pixelrate im selben Kernprogramm, das auf einer Einzelner-Befehl-mehrere-Daten-Maschine läuft, verwendet werden. Das Verfahren kann auch das Grobshading mehrerer Vierecke zur Zeit und das anschließende nacheinander erfolgende Pixelshading von jedem der Vierecke aufweisen.The following clauses and / or examples relate to further embodiments:
An example embodiment may be a method in which a coarse-to-pixel mapping is defined for a pixel group, coarse pixel shading is performed, and pixel shading is performed in a hardware processor for the group using the coarse-to-pixel mapping becomes. The method may also determine which pixels in the group are illuminated. The same core can also be used for coarse and pixel shading in the method. The method may also use a single-instruction-multiple-data-shader. In the method, the same paths can also be used for both coarse and pixel shading. The method may also perform pixel shading for the group after coarse shading has been performed on the group. The method may also use an instruction to switch program execution from a rough rate to a pixel rate in the same core program running on a single instruction multiple data engine. The method may also include coarse shading of multiple squares at a time and then successively pixel shading each of the squares.
Eine andere als Beispiel dienende Ausführungsform kann ein Verfahren sein, bei dem Grob- und Pixelshadings mit Phasen in ein monolithisches Einzelner-Befehl-mehrere-Daten-Programm abgebildet werden, Pixelorte im Schwerpunktsraum bestimmt werden und eine Pixelgruppe unterdrückt wird, falls alle Pixel in der Gruppe unbeleuchtet sind. Bei dem Verfahren können eine Grob-zu-Pixel-Abbildung, eine Pixelbeleuchtungsmaske, eine Pixelgruppe und Schwerpunkte in einem Festfunktionsbeschleuniger kompiliert werden. Bei dem Verfahren können Pixelratenphasen als schleifenförmiger Durchgang über Pixelgruppen, welche durch den Festfunktionsbeschleuniger bestimmt wurden, implementiert werden. Bei dem Verfahren kann eine Ausführungsmaske in jeder Schleife festgelegt werden, kann eine Grob-zu-Pixel-Abbildung für das Vermischen von Zwischenstufendaten zwischen Grob-zu-Pixelratenphasen verwendet werden und können Schwerpunkte verwendet werden, um Pro-Pixel-Attribute in jedem Schleifendurchgang zu interpolieren.Another exemplary embodiment may be a method in which coarse and pixel shading with phases are mapped into a monolithic single-instruction-multiple-data program, pixel locations in centroid space are determined, and a pixel group is suppressed if all the pixels in the Group are unlighted. In the method, a coarse-to-pixel map, a pixel lighting map, a pixel cluster, and centroids can be compiled in a solid-state accelerator. In the method, pixel rate phases may be implemented as a looped pass across pixel groups determined by the fixed function accelerator. In the method, an execution mask may be set in each loop, a coarse-to-pixel mapping may be used for blending interstitial data between coarse-to-pixel rate phases, and centroids may be used to assign per-pixel attributes in each loop pass interpolate.
Gemäß einer anderen als Beispiel dienenden Ausführungsform sind ein oder mehrere nicht flüchtige computerlesbare Medien vorgesehen, welche Befehle speichern, die von einem Prozessor ausgeführt werden, um eine Sequenz auszuführen, wobei eine Grob-zu-Pixel-Abbildung für eine Pixelgruppe definiert wird, ein Grobpixelshading ausgeführt wird und ein Pixelshading in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung ausgeführt wird. Die Medien können die Sequenz aufweisen, wobei bestimmt wird, welche Pixel in der Gruppe beleuchtet sind. Die Medien können die Sequenz aufweisen, wobei derselbe Kern für das Grob- und das Pixelshading verwendet wird. Die Medien können die Sequenz aufweisen, wobei ein Einzelner-Befehl-mehrere-Daten-Shader verwendet wird. Die Medien können die Sequenz aufweisen, wobei dieselben Bahnen für das Grob- und das Pixelshading verwendet werden. Die Medien können die Sequenz aufweisen, wobei ein Pixelshading für die Gruppe nach der Ausführung des Grobshadings für die Gruppe ausgeführt wird. Die Medien können die Sequenz aufweisen, wobei ein Befehl zum Schalten der Programmausführung von der Grobrate zur Pixelrate im selben Kernprogramm, welches eine Einzelner-Befehl-mehrere-Daten-Maschine ausführt, verwendet wird. Die Medien können die Sequenz aufweisen, wobei mehrere Vierecke zur Zeit grob geshadet werden und dann ein aufeinander folgendes Pixelshading von jedem der Vierecke ausgeführt wird.In another exemplary embodiment, one or more non-transitory computer readable media is provided which stores instructions executed by a processor to execute a sequence defining a coarse-to-pixel mapping for a pixel group, coarse pixel shading and pixel shading is performed in a hardware processor for the group using the coarse-to-pixel mapping. The media may comprise the sequence, determining which pixels in the group are illuminated. The media may have the sequence using the same core for coarse and pixel shading. The media may comprise the sequence using a single-instruction-multiple-data-shader. The media may have the sequence using the same coarse and pixel shading paths. The media may comprise the sequence, with pixel shading for the group being performed after the coarse-casting of the group. The media may comprise the sequence wherein a command to switch program execution from the rough rate to the pixel rate is used in the same core program executing a single command multiple data engine. The media may comprise the sequence, with multiple rectangles currently being roughly shed and then consecutive pixel shading being performed on each of the quadrangles.
Eine weitere als Beispiel dienende Ausführungsform kann eine Vorrichtung sein, welche einen Hardwareprozessor, um eine Grob-zu-Pixel-Abbildung für eine Pixelgruppe zu definieren, ein Grobpixelshading auszuführen und ein Pixelshading in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung auszuführen, und einen mit dem Prozessor gekoppelten Speicher umfasst. Die Vorrichtung kann den Prozessor aufweisen, um zu bestimmen, welche Pixel in der Gruppe beleuchtet sind. Die Vorrichtung kann den Prozessor aufweisen, um denselben Kern für das Grob- und das Pixelshading zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um einen Einzelner-Befehl-mehrere-Daten-Shader zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um dieselben Bahnen sowohl für das Grob- als auch für das Pixelshading zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um ein Pixelshading für die Gruppe auszuführen, nachdem ein Grobshading für die Gruppe ausgeführt wurde. Die Vorrichtung kann den Prozessor aufweisen, um einen Befehl zum Schalten der Programmausführung von der Grobrate zur Pixelrate im selben Kernprogramm, das eine Einzelner-Befehl-mehrere-Daten-Maschine ausführt, zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um mehrere Vierecke zu einer Zeit grob zu shaden und dann ein Pixelshading von jedem der Vierecke nacheinander auszuführen. Die Vorrichtung kann einen Speichersteuerungs-Hub aufweisen. Die Vorrichtung kann einen Drahtlostransceiver aufweisen.Another example embodiment may be an apparatus that performs a hard-disk processor to define a coarse-to-pixel mapping for a pixel group, coarse pixel shading, and pixel shading in a group hardware processor using the coarse-to-pixel Map and includes a memory coupled to the processor. The Apparatus may include the processor to determine which pixels in the group are illuminated. The device may include the processor to use the same core for coarse and pixel shading. The device may include the processor to use a single-instruction-multiple-data shader. The device may include the processor to use the same paths for both coarse and pixel shading. The device may include the processor to perform pixel shading on the group after coarse shading has been performed on the group. The apparatus may include the processor to use an instruction to switch program execution from the coarse rate to the pixel rate in the same core program executing a single instruction multiple data engine. The apparatus may include the processor for roughly shaving a plurality of quadrangles at a time and then performing pixel shading of each of the quadrangles sequentially. The device may include a memory control hub. The device may comprise a wireless transceiver.
Verschiedene Komponenten, die hier beschrieben werden, können ein Mittel zum Ausführen der beschriebenen Operationen oder Funktionen sein. Jede hier beschriebene Komponente weist Software, Hardware oder eine Kombination von diesen auf. Die Komponenten können als Softwaremodule, Hardwaremodule, Hardware für einen speziellen Zweck (beispielsweise anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASIC), digitale Signalprozessoren (DSP) usw.), eingebettete Steuereinrichtungen, festverdrahtete Schaltungen usw. implementiert sein. Abgesehen von dem, was hier beschrieben wurde, können an den offenbarten Ausführungsformen und Implementationen der Erfindung verschiedene Modifikationen vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen. Daher sollten die hier gegebenen Erläuterungen und Beispiele als erläuternd und nicht in einschränkendem Sinne ausgelegt werden. Der Schutzumfang der Erfindung sollte ausschließlich anhand der folgenden Ansprüche bemessen werden.Various components described herein may be a means for performing the described operations or functions. Each component described here has software, hardware or a combination of these. The components may be implemented as software modules, hardware modules, special purpose hardware (eg, application specific hardware, application specific integrated circuits (ASIC), digital signal processors (DSP), etc.), embedded controllers, hardwired circuits, and so on. Apart from what has been described herein, various modifications can be made to the disclosed embodiments and implementations of the invention without departing from its scope. Therefore, the explanations and examples given herein should be interpreted as illustrative and not in a limiting sense. The scope of the invention should be determined solely by reference to the following claims.
Die hier beschriebenen Graphikverarbeitungstechniken können in verschiedenen Hardwarearchitekturen implementiert werden. Beispielsweise kann eine Graphikfunktionalität in einen Chipsatz integriert werden. Alternativ kann ein diskreter Graphikprozessor verwendet werden. Gemäß einer anderen Ausführungsform können die Graphikfunktionen durch einen Prozessor für allgemeine Zwecke, einschließlich eines Mehrkernprozessors, implementiert werden.The graphics processing techniques described herein may be implemented in various hardware architectures. For example, graphics functionality can be integrated into a chipset. Alternatively, a discrete graphics processor may be used. In another embodiment, the graphics functions may be implemented by a general purpose processor, including a multi-core processor.
In dieser Patentschrift gemachte Bezüge auf ”eine einzige Ausführungsform” oder ”eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Zusammenhang mit der Ausführungsform beschrieben wird, in wenigstens einer Implementation enthalten ist, die von der vorliegenden Offenbarung eingeschlossen wird. Demgemäß beziehen sich Instanzen des Begriffs ”eine einzige Ausführungsform” oder ”gemäß einer Ausführungsform” nicht notwendigerweise auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Eigenschaften in anderen geeigneten Formen als der erläuterten speziellen Ausführungsform verwirklicht werden, und all diese Formen können von den Ansprüchen der vorliegenden Anmeldung abgedeckt werden.References made to "a single embodiment" or "an embodiment" in this specification mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one implementation that is well-defined This disclosure is included. Accordingly, instances of the term "a single embodiment" or "according to one embodiment" do not necessarily refer to the same embodiment. Further, the particular features, structures, or properties may be embodied in other suitable forms than the particular embodiment discussed, and all such forms may be covered by the claims of the present application.
Wenngleich eine beschränkte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleuten zahlreiche Modifikationen und Variationen davon einfallen. Es ist vorgesehen, dass die anliegenden Ansprüche all diese Modifikationen und Variationen abdecken, die in den wahren Gedanken und den Schutzumfang dieser Offenbarung fallen.Although a limited number of embodiments have been described, many modifications and variations will occur to those skilled in the art. It is intended by the appended claims to cover all such modifications and variations that fall within the true spirit and scope of this disclosure.
ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.
Zitierte Nicht-PatentliteraturCited non-patent literature
-
”Lossless Compression of Variable Precision Floating-Point Buffers on GPUs,” Symposium on Interactive 3D Graphics and Games (2012), S. 47–54 [0071] "Lossless Compression of Variable Precision Floating-Point Buffers on GPUs," Symposium on
Interactive 3D Graphics and Games (2012), pp. 47-54 [0071]
Claims (25)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461974602P | 2014-04-03 | 2014-04-03 | |
US61/974,602 | 2014-04-03 | ||
US14/492,471 | 2014-09-22 | ||
US14/492,471 US9905046B2 (en) | 2014-04-03 | 2014-09-22 | Mapping multi-rate shading to monolithic programs |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102015002581A1 true DE102015002581A1 (en) | 2015-10-08 |
Family
ID=54146495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102015002581.3A Pending DE102015002581A1 (en) | 2014-04-03 | 2015-02-27 | Mapping a multi-rate harm to monolithic programs |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110246210B (en) |
DE (1) | DE102015002581A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111048156A (en) * | 2019-11-21 | 2020-04-21 | 中国航空工业集团公司西安航空计算技术研究所 | Large-scale dyeing array performance detection and evaluation method |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811237B2 (en) * | 1999-04-06 | 2017-11-07 | Iii Holdings 2, Llc | Visual navigation of virtual environments through logical processes |
KR100532456B1 (en) * | 2003-07-30 | 2005-11-30 | 삼성전자주식회사 | Memory controller and semiconductor having the same |
US8325184B2 (en) * | 2007-09-14 | 2012-12-04 | Qualcomm Incorporated | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
US8605086B2 (en) * | 2008-07-03 | 2013-12-10 | Nvidia Corporation | Hybrid multisample/supersample antialiasing |
US8266542B2 (en) * | 2010-06-17 | 2012-09-11 | Hewlett-Packard Development Company, L.P. | Rendering and sorting book search results as three dimensional icons |
US20130063460A1 (en) * | 2011-09-08 | 2013-03-14 | Microsoft Corporation | Visual shader designer |
-
2015
- 2015-02-27 DE DE102015002581.3A patent/DE102015002581A1/en active Pending
- 2015-03-03 CN CN201910496135.4A patent/CN110246210B/en active Active
Non-Patent Citations (1)
Title |
---|
"Lossless Compression of Variable Precision Floating-Point Buffers on GPUs," Symposium on Interactive 3D Graphics and Games (2012), S. 47-54 |
Also Published As
Publication number | Publication date |
---|---|
CN110246210B (en) | 2024-04-16 |
CN110246210A (en) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101653157B1 (en) | Mapping multi-rate shading to monolithic programs | |
EP3286738B1 (en) | Apparatus and method for non-uniform frame buffer rasterization | |
US10242493B2 (en) | Method and apparatus for filtered coarse pixel shading | |
DE102019120661A1 (en) | Video refinement mechanism | |
DE102019117469A1 (en) | Video processing mechanism | |
DE102019119085A1 (en) | POINT-BASED RENDERING AND PROJECTION NOISE REMOVAL | |
EP3221850B1 (en) | Apparatus and method for efficient frame-to-frame coherency exploitation for sort-last architectures | |
DE112017003932T5 (en) | Mechanism for accelerating graphics workloads in a multi-core computing architecture | |
DE102019117218A1 (en) | Reduced rendering of a video with six degrees of freedom | |
DE112014002477T5 (en) | Apparatus and method for efficient graphics processing in a virtual execution environment | |
CN107004280A (en) | Method and apparatus for efficient texture compression | |
US9412195B2 (en) | Constant buffer size multi-sampled anti-aliasing depth compression | |
DE102019115130A1 (en) | Device and method for conservative morphological anti-aliasing with multiple scanning | |
DE112017004077T5 (en) | DEVICE AND METHOD FOR OPTIMIZED TILE-BASED RENDERING | |
DE112017003838T5 (en) | THREAD PRIORITY MECHANISM | |
US10410081B2 (en) | Method and apparatus for a high throughput rasterizer | |
DE102019133561A1 (en) | System and method for detecting changes in rendered scenes using remote-hosted graphics applications | |
DE112017004550T5 (en) | ON MINIMUM / MAXIMUM AND BITWEISER AND / OR BASED GROOVED TEMPLATE TEST | |
US10198850B2 (en) | Method and apparatus for filtering compressed textures | |
DE102019127349A1 (en) | POINT CLOUD CODE STANDARD CONFORMITY DEFINITION IN COMPUTER ENVIRONMENTS | |
DE102015002581A1 (en) | Mapping a multi-rate harm to monolithic programs | |
DE102020107430A1 (en) | Dynamically enabling tile generation on 3D workloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication |