Stammsignaturen

Die Stammsignatur definiert, welche Ressourcentypen an die Grafikpipeline gebunden sind.

In diesem Abschnitt

Thema BESCHREIBUNG
Übersicht über Stammsignaturen
Eine Stammsignatur wird von der App konfiguriert und verknüpft Befehlslisten mit den Ressourcen, die die Shader benötigen. Die Grafikbefehlsliste verfügt sowohl über eine Grafik- als auch über eine Computestammsignatur. Eine Computebefehlsliste verfügt einfach über eine Computestammsignatur. Diese Stammsignaturen sind voneinander unabhängig.
Verwenden einer Stammsignatur
Die Stammsignatur ist die Definition einer beliebig angeordneten Auflistung von Deskriptortabellen (einschließlich ihres Layouts), Stammkonstanten und Stammdeskriptoren. Jeder Eintrag hat Kosten in Bezug auf einen maximalen Grenzwert, sodass die Anwendung das Gleichgewicht zwischen der Anzahl der einzelnen Eintragstypen, die die Stammsignatur enthalten wird, abwägen kann.
Erstellen einer Stammsignatur
Stammsignaturen sind eine komplexe Datenstruktur, die geschachtelte Strukturen enthält. Diese können programmgesteuert mithilfe der unten angegebenen Datenstrukturdefinition definiert werden (einschließlich Methoden zum Initialisieren von Membern). Alternativ können sie in HLSL (High Level Shading Language) erstellt werden, was den Vorteil bietet, dass der Compiler frühzeitig überprüft, ob das Layout mit dem Shader kompatibel ist.
Grenzwerte für Stammsignaturen
Bei der Stammsignatur handelt es sich um erstklassige Immobilien, und es gibt strenge Grenzwerte und Kosten, die berücksichtigt werden müssen.
Verwenden von Konstanten direkt in der Stammsignatur
Anwendungen können Stammkonstanten in der Stammsignatur als 32-Bit-Werte definieren. Sie werden in HLSL (High Level Shading Language) als konstanter Puffer angezeigt. Beachten Sie, dass konstante Puffer aus historischen Gründen als Sätze von 4 x 32-Bit-Werten betrachtet werden.
Verwenden von Deskriptoren direkt in der Stammsignatur
Anwendungen können Deskriptoren direkt in die Stammsignatur aufnehmen, um zu vermeiden, dass ein Deskriptorheap durchlaufen werden muss. Diese Deskriptoren nehmen viel Speicherplatz in der Stammsignatur ein (siehe Abschnitt Grenzwerte für Stammsignaturen), sodass Anwendungen sie nur selten verwenden müssen.
Beispiele für Stammsignaturen
Im folgenden Abschnitt werden Stammsignaturen mit unterschiedlicher Komplexität von leer bis vollständig dargestellt.
Festlegen von Stammsignaturen in HLSL
Die Angabe von Stammsignaturen in HLSL Shader Model 5.1 ist eine Alternative zur Angabe in C++-Code.
Stammsignatur, Version 1.1
Der Zweck von Root Signature Version 1.1 besteht darin, Anwendungen das Angeben von Treibern zu ermöglichen, wenn sich Deskriptoren in einem Deskriptorheap nicht ändern oder sich die Datendeskriptoren nicht ändern. Dadurch können Treiber Optimierungen vornehmen, die möglicherweise möglich sind, wenn sie wissen, dass ein Deskriptor oder der Arbeitsspeicher, auf den er verweist, für einen bestimmten Zeitraum statisch ist.

ID3D12RootSignature

ID3D12RootSignatureDeserializer

Ressourcenbindung