Direct3D 12-Glossar
Diese Begriffe unterscheiden sich von Direct3D 12.
-
Bindung
-
Der Prozess zum Anfügen von Arbeitsspeicher an die Grafikpipeline. Die Ressourcenbindung umfasst beispielsweise die Bindung einer Ressource, z. B. einer Textur, an die Pipeline zur Verwendung beim Rendern eines Objekts.
-
Puffer
-
Ein Typ von D3D-Ressource, der synonym mit einer zusammenhängenden Speicherbelegung ist.
-
Bündel
-
Ein Befehlspuffer, den die Grafikverarbeitungseinheit (GRAPHICS Processing Unit, GPU) nur direkt über eine direkte Befehlsliste ausführen kann. Ein Bundle erbt den gesamten GPU-Zustand (mit Ausnahme des derzeit festgelegten Pipelinezustandsobjekts und der primitiven Topologie).
-
Befehlszuweisung
-
Die zugrunde liegenden Speicherbelegungen, in denen GPU-Befehle gespeichert werden. Das Befehlszuweisungsobjekt gilt sowohl für direkte Befehlslisten als auch für Bundles.
-
Befehlsliste
-
Eine Befehlsliste entspricht einer Reihe von Befehlen, die von der GPU ausgeführt werden. Dazu gehören Befehle wie Festlegen des Zustands, Zeichnen, Löschen und Kopieren. Die D3D12-Befehlslistenschnittstelle unterscheidet sich erheblich von der D3D11-Befehlslistenschnittstelle. Die D3D12-Befehlslistenschnittstelle enthält APIs, die den D3D11-Gerätekontextrendering-APIs ähneln.
Eine D3D12-Befehlsliste ordnet keine Ressourcen zu oder hebt die Zuordnung auf, ändert Kachelzuordnungen, ändert die Größe von Kachelpools, ruft Abfragedaten ab und übermittelt auch keine Befehle implizit zur Ausführung an die GPU.
Im Gegensatz zu verzögerten D3D11-Kontexten unterstützen D3D12-Befehlslisten nur zwei Dereferenzierungsebenen. Eine direkte Befehlsliste entspricht einem Befehlspuffer, den die GPU ausführen kann. Ein Bundle kann nur direkt über eine direkte Befehlsliste ausgeführt werden.
Eine direkte Befehlsliste erbt keinen GPU-Zustand. Ein Bundle erbt den gesamten GPU-Zustand (mit Ausnahme des derzeit festgelegten Pipelinezustandsobjekts und der primitiven Topologie).
Der Arbeitsspeicher für eine Befehlsliste wird durch die Befehlszuweisung festgelegt. Der Zweck von Befehlslisten besteht darin, dass sie als einzelne Renderinganforderung an eine GPU übermittelt werden können.
-
Befehlswarteschlange
-
Eine Warteschlange mit Befehlen listet auf, dass die GPU nacheinander ausgeführt wird. Anwendungen müssen Befehlslisten zur Ausführung explizit an eine Befehlswarteschlange übermitteln. In der Regel gibt es drei Befehlswarteschlangen: 3D-Grafiken, Compute und Kopieren, die der 3D-Grafikpipeline, der Compute-Engine und einer oder mehreren Kopiermodulen auf der GPU entsprechen.
-
konservative Rasterisierung
-
Die konservative Rasterisierung ist ein Betriebsmodus für die Rasterisierungsphase der Direct3D-Grafikpipeline. Es deaktiviert die standardmäßige beispielbasierte Rasterung und rastert stattdessen ein Pixel, das von einem Grundtyp abgedeckt wird. Ein wichtiger Unterschied besteht darin, dass zwar jede Abdeckung überhaupt ein rasterisiertes Pixel erzeugt, diese Abdeckung jedoch nicht durch die Hardware gekennzeichnet werden kann, sodass die Abdeckung für einen Pixelshader immer binär erscheint: entweder vollständig abgedeckt oder nicht abgedeckt. Es bleibt dem Pixelshadercode überlassen, die tatsächliche Abdeckung analytisch zu bestimmen.
Konservative Rasterung kann bei Problemen wie Kollisions- und Treffererkennung, Binning und Okklusionskulling helfen, bei denen die Farbe eines Pixels sicherer ist und Edgefälle eliminiert werden können. Weitere Informationen finden Sie unter Konservative Rasterung.
-
Konstantenpufferansicht (CBV)
-
Konstantenpuffer enthalten Shaderkonstantendaten, z. B. eine Kameraansicht, Projektionsmatrizen und Weltmatrizen. Eine "Konstantenpufferansicht" ist die formatspezifische Ansicht des Puffers, wie sie von der Grafikpipeline angezeigt wird.
-
Standardheap
-
Ein Benutzermodusheap, der sich auf die Unterstützung persistenter GPU-Ressourcentypen konzentriert, einschließlich gpu-geschriebener Ressourcen.
-
Deskriptor
-
Deskriptoren sind die primäre Bindungseinheit für eine einzelne Ressource in D3D12. Ein Deskriptor ist ein relativ kleiner Datenblock, der ein Objekt für die GPU vollständig in einem GPU-spezifischen Format beschreibt. Es gibt viele verschiedene Arten von Deskriptoren: Shaderressourcensichten (SRVs), Unordered Access Views (UAVs), Constant Buffer Views (CBVs) und Sampler sind einige Beispiele.
-
Deskriptorheap
-
Ein Deskriptorheap ist eine Sammlung zusammenhängender Zuordnungen von Deskriptoren, eine Zuordnung für jeden Deskriptor. Der primäre Punkt eines Deskriptorheaps besteht darin, den Großteil der Speicherbelegung zu umfassen, der zum Speichern der Deskriptorspezifikationen von Objekttypen erforderlich ist, auf die Shader auf ein möglichst großes Renderingfenster verweisen (idealerweise ein ganzer Renderingframe oder mehr).
-
Deskriptortabelle
-
Eine Deskriptortabelle ist logisch ein Array von Deskriptoren. Jede Deskriptortabelle speichert Deskriptoren eines oder mehrerer Typen, einschließlich SRVs, UAVe, CBVs und Sampler. Eine Deskriptortabelle ist keine Speicherbelegung, sie ist einfach ein Offset und eine Länge in einem Deskriptorheap.
-
Direkte Befehlsliste
-
Ein Befehlspuffer, den die GPU ausführen kann. Eine direkte Befehlsliste erbt keinen GPU-Zustand.
-
Zaun
-
Ein Mechanismus zum Synchronisieren von GPU und CPU. Sowohl die GPU als auch die CPU können angewiesen werden, an einem Zaun zu warten und zu warten, bis der andere Prozessor aufholen kann. Weitere Informationen finden Sie unter Synchronisierung mit mehreren Engines.
-
Gefahrenverfolgung, Gefahrenverfolgung
-
Eine Gefahr tritt auf, wenn eine Ressource für einen Zweck verwendet wurde und die App beabsichtigt, sie für einen anderen Zweck wiederzuverwenden. Um die Ressource erneut verwenden zu können, müssen Zwischencaches geleert oder ungültig werden, die Komprimierungsanforderungen müssen mit der zweiten Verwendung konsistent sein, und die Ressource sollte sich im erforderlichen Zustand befinden, um zu vermeiden, dass die Ressource gelesen wird, nachdem sie in den beabsichtigten Zweck geschrieben und für ungültig erklärt wurde.
Der Prozess zum Verwalten von Ressourcen und zur Vermeidung dieser Synchronisierungsprobleme wird als Gefahrenverfolgung bezeichnet. Wenn es keine Gefahrenverfolgung durch den Fahrer gibt, ist die App dafür verantwortlich. In den meisten früheren Versionen von DirectX wurde die Gefahrenverfolgung vom Treiber verarbeitet. Um die Leistung zu verbessern, sind Methoden ohne Gefahrenverfolgung in DirectX 12 verfügbar.
-
High-Level Shader Language (HLSL)
-
Eine Computersprache, die sich ähnlich, aber in vielerlei Hinsicht von C unterscheidet, die zum Schreiben von Shadercode verwendet wird. Vertex-, Pixel-, Geometry-, Compute-, Domänen- und Hull-Shader werden alle mit HLSL geschrieben. Ein Compiler konvertiert die HLSL-Quelle in ein Binärformat für die GPU, die genutzt werden soll.
-
Multiengine
-
Die verschiedenen Instanzen und Typen von Engines in einer einzelnen GPU. Die Typen von Engines umfassen: Grafiken, Compute und Kopieren.
-
MultiGPU
-
Eine Hardwarekonfiguration, bei der mehrere Grafikkarten vorhanden sind. Die separaten Adapter werden manchmal als Knoten bezeichnet. Wenn Mehrere GPUs vorhanden sind, kann die Synchronisierung mit der CPU und untereinander erheblich komplexer sein als mit einer einzelnen GPU.
-
Pipeline State-Objekt (PSO)
-
Ein erheblicher Teil des Zustands der GPU. Dieser Zustand umfasst alle derzeit festgelegten Shader und bestimmte Objekte mit festem Funktionszustand. Die einzige Möglichkeit zum Ändern der im Pipelineobjekt enthaltenen Zustände besteht darin, das aktuell gebundene Pipelineobjekt zu ändern.
-
Prädication
-
Die Prädication ist ein Feature, mit dem die GPU und nicht die CPU bestimmen kann, ob ein Objekt nicht gezeichnet, kopiert oder verteilt wird. Wenn z. B. ein Begrenzungsrahmen eines Objekts von einem anderen Objekt vollständig verdeckt wird oder die Perspektive das Objekt auf kleiner als die Größe eines Pixels reduziert hat, kann es keinen Sinn haben, das ausgeblendete Objekt überhaupt zu zeichnen. Siehe Prädication.
-
Rasterisierungsreihenfolgeansicht (ROV)
-
Standardgrafikpipelines haben möglicherweise Probleme, mehrere Texturen, die Transparenz enthalten, ordnungsgemäß zusammenzuführen. Objekte wie Drahtzäune, Rauch, Feuer, Vegetation und farbiges Glas nutzen Transparenz, um den gewünschten Effekt zu erzielen. Probleme treten auf, wenn mehrere Texturen, die Transparenz enthalten, nebeneinander stehen (z. B. Rauch vor einem Zaun vor einem Glasgebäude mit Vegetation). Rasterizer ordered views (ROVs) ermöglichen es den zugrunde liegenden Order Independent Transparency (OIT)-Algorithmen, Features der Hardware zu verwenden, um zu versuchen, die Transparenzreihenfolge ordnungsgemäß aufzulösen. Transparenz wird vom Pixelshader behandelt.
Rasterizer Ordered Views (ROVs) ermöglichen es Pixelshadercode, UAV-Bindungen (Unordered Access View) mit einer Deklaration zu markieren, die die normalen Anforderungen für die Reihenfolge der Grafikpipelineergebnisse für UAVs ändert.
-
Readback-Heap
-
Ein Benutzermodusheap, der sich auf die Datenübertragung von der GPU zurück zur CPU konzentriert.
-
Ressource
-
Eine Entität, die Daten für die Pipeline bereitstellt und definiert, was während der Szene gerendert wird. Ressourcen können von Ihren Spielmedien geladen oder dynamisch zur Laufzeit erstellt werden. In der Regel umfassen Ressourcen Texturdaten, Vertexdaten und Shaderdaten. Die meisten Direct3D-Anwendungen erstellen und zerstören Ressourcen während ihrer gesamten Lebensdauer umfassend.
-
Ressourcenbarriere
-
Eine Ressourcenbarriere benachrichtigt den Treiber darüber, dass möglicherweise eine Synchronisierung mehrerer Zugriffe auf eine einzelne Ressource erforderlich ist, z. B. Lesen und Schreiben in derselben Textur.
-
Ressourcenbindung
-
Bei der Ressourcenbindung werden Ressourcen (Texturen, Vertexpuffer, Indexpuffer usw.) mit der Grafikpipeline verknüpft, sodass die Shader der Pipeline die richtige Ressource verarbeiten können.
-
Ressourcenheaps
-
Ressourcenheaps ist ein generischer Begriff für die Heaps, bei denen es sich um Speicherpuffer handelt, die bei der Übertragung an und von der GPU Ressourcen enthalten. Für eine Übertragung an die GPU ist ein Upload heap erforderlich, von der GPU auf die CPU ist ein Readback-Heap erforderlich, und ein persistenter Heap, damit die GPU mehrere Renderingframes verwalten kann, wird als Standardheap bezeichnet.
-
Stammsignatur
-
Stammsignaturen definieren alle Ressourcen, die an die Grafik- oder Computepipelines gebunden werden sollen. Eine Stammsignatur wird von der App konfiguriert und verknüpft Befehlslisten mit den Ressourcen, die die Shader benötigen. In der Regel gibt es eine Grafik und eine Computestammsignatur pro App.
-
Sampler
-
Ein Sampler ist Code, der aus einer Textur liest.
-
Shaderressourcenansicht (SRV)
-
Eine formatspezifische Möglichkeit zum Betrachten der Daten in einer Shaderressource, z. B. einer Textur.
-
statischer Heap
-
Ein Benutzermodus-Heap, der sich auf mehrere schreibgeschützte GPU-Ressourcen konzentriert, die in der Regel gleichzeitig verwendet werden und nicht häufig geändert werden.
-
Swap chain
-
Swap chains steuern die Rückwärtspufferrotation und bilden die Grundlage der Grafikanimation. Swapchains werden vom LOW-Level-API-Satz DXGI verarbeitet (siehe DXGI-Übersicht).
-
Swizzle
-
Ein Verfahren zum Auffinden mehrdimensionaler Daten im Speicher, sodass Daten mit näherer Dimensionalität in der Regel adressen in der Nähe aufweisen. Insbesondere befinden sich alle Daten für eine Zeile nicht zusammenhängend vor den Daten für die nächste Zeile. Ein "Parametrisiertes Swizzle" beschreibt eine standardisierte Methode zum Beschreiben von Swizzle-Mustern.
-
Textur
-
Ein D3D-Ressourcentyp, der mehrdimensional ist und über ein Speicherlayout verfügt, das für den mehrdimensionalen Zugriff über die GPU optimiert ist. Texturen enthalten häufig das rohe Bild, das zum Rendern auf einer Oberfläche erforderlich ist, bevor beleuchtungs- und blending erfolgt, aber sie können andere Formen von Daten enthalten, z. B. Farbverläufe und Referenzfarben. Direct3D 12 unterstützt ein-, zwei- und dreidimensionale Texturen.
-
Fliese
-
Eine Seite des Videospeichers, ähnlich einer CPU-/Systemseite des Arbeitsspeichers. Die Kachelnotation trägt dazu bei, das Subsystem des virtuellen GPU-Arbeitsspeichers vom subsystem des virtuellen CPU-Arbeitsspeichers zu unterscheiden. GPUs bieten ähnliche Funktionen des virtuellen Arbeitsspeichers wie der virtuelle Systemspeicher. Einige GPUs verfügen über freigegebene Funktionen des virtuellen Arbeitsspeichers, die die Gemeinsame Nutzung einiger Seiten des virtuellen Speichersubsystems mit cpu und GPU ermöglichen.
-
gekachelte Ressourcen
-
Gekachelte Ressourcen werden benötigt, sodass weniger GPU-Arbeitsspeicher verschwendet wird, um Speicherbereiche von Oberflächen zu speichern, von denen die Anwendung weiß, dass nicht auf sie zugegriffen wird, und die Hardware kann verstehen, wie sie über benachbarte Kacheln filtern kann. Gekachelte Ressourcen sind große logische Ressourcen, die jedoch kleine Mengen an physischem Arbeitsspeicher erfordern.
-
Ungeordnete Zugriffsansicht (UAV)
-
Eine nicht sortierte Zugriffsansicht in eine Ressource (einschließlich Puffer, Texturen und Texturarrays ohne Multisampling) ermöglicht zeitlich ungeordneten Lese-/Schreibzugriff aus mehreren Threads. Dies bedeutet, dass dieser Ressourcentyp gleichzeitig von mehreren Threads gelesen/geschrieben werden kann, ohne Speicherkonflikte zu erzeugen.
-
Heap hochladen
-
Ein Benutzermodus-Heap, der sich auf die Datenübertragung von der CPU zur GPU konzentriert.
-
Heap im Benutzermodus
-
Eine Sammlung großer, zusammenhängender Speicherzuordnungen, die ohne Daseinsbewusstsein der Kernelkomponenten wiederverwendet werden: Die Zuordnungs- und Zerstörungsmethoden rufen keine Kernelzuordnungs- und Zerstörungsmethoden während des stabilen Zustands auf. Upload-, Readback- und Standardheaps sind Varianten von Benutzermodus-Heaps.
-
gekachelte Volumeressourcen
-
Dreidimensional gekachelte Ressourcen.