Übersicht über Deskriptortabellen

Jede Deskriptortabelle speichert Deskriptoren eines oder mehrerer Typen – SRVs, UAVs, CBVs und Sampler. Eine Deskriptortabelle ist keine Speicherbelegung. Es handelt sich einfach um einen Offset und eine Länge in einen Deskriptorheap.

Verweisen auf Deskriptortabellen

Die Grafikpipeline erhält über die Stammsignatur Zugriff auf Ressourcen, indem sie nach Index in Deskriptortabellen verweist.

Eine Deskriptortabelle ist eigentlich nur ein Teilbereich eines Deskriptorheaps. Deskriptorheaps stellen die zugrunde liegende Speicherbelegung für eine Auflistung von Deskriptoren dar. Da die Speicherbelegung eine Eigenschaft zum Erstellen eines Deskriptorheaps ist, ist das Definieren einer Deskriptortabelle aus einer tabelle garantiert so günstig wie die Identifizierung einer Region im Heap für die Hardware. Deskriptortabellen müssen nicht auf API-Ebene erstellt oder zerstört werden. Sie werden nur für Treiber als Offset und Größe eines Heaps identifiziert, wenn darauf verwiesen wird.

Es ist sicherlich möglich, dass eine App sehr große Deskriptortabellen definiert, wenn ihre Shader die Freiheit haben möchten, aus einer Vielzahl von verfügbaren Deskriptoren (die häufig auf Texturen verweisen) zu wählen (möglicherweise durch Materialdaten gesteuert).

Die Stammsignatur verweist auf den Deskriptortabelleneintrag mit einem Verweis auf den Heap, der Startposition der Tabelle (ein Offset vom Anfang des Heaps) und der Länge (in Einträgen) der Tabelle. Die folgende Abbildung zeigt diese Konzepte: die Zeiger der Deskriptortabelle aus der Stammsignatur und die Deskriptoren innerhalb des Deskriptorheaps, die auf die vollständigen Textur- oder Pufferdaten in einem Heap verweisen (im Fall einer Textur der Standardheap).

Deskriptortabellen