D3D12_STATE_OBJECT_FLAGS-Enumeration (d3d12.h)

Gibt Einschränkungen für Zustandsobjekte an. Verwenden Sie Werte aus dieser Enumeration in der D3D12_STATE_OBJECT_CONFIG-Struktur .

Syntax

typedef enum D3D12_STATE_OBJECT_FLAGS {
  D3D12_STATE_OBJECT_FLAG_NONE = 0,
  D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
  D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
  D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS
} ;

Konstanten

 
D3D12_STATE_OBJECT_FLAG_NONE
Wert: 0
Keine Zustandsobjekteinschränkungen.
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
Wert: 0x1
Dieses Flag gilt nur für Zustandsobjekte der Typauflistung. Andernfalls wird dieses Flag ignoriert.

Die Exporte aus dieser Auflistung dürfen nicht aufgelöste Verweise (Abhängigkeiten) aufweisen, die aufgelöst (definiert) werden müssen, wenn die Auflistung in ein enthaltendes Zustandsobjekt eingeschlossen wird, z. B. ein Raytracing-Pipelinezustandsobjekt (RTPSO). Dies schließt die Abhängigkeit von extern definierten Unterobjektzuordnungen ein, um einem lokalen Export ein externes Unterobjekt (z. B. Stammsignatur) zuzuordnen.

Wenn dieses Flag nicht vorhanden ist, müssen alle Exporte in dieser Auflistung ihre Abhängigkeiten vollständig lokal aufgelöst haben, einschließlich aller erforderlichen Unterobjektzuordnungen, die lokal definiert werden. Erweiterte Implementierungen/Treiber verfügen über genügend Informationen, um den Code in der Auflistung zu kompilieren und keinen nicht kompilierten Code zu umgehen (es sei denn, das flag D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS ist festgelegt), sodass bei Verwendung der Auflistung in einem enthaltenden Zustandsobjekt (z. B. RTPSO) nur minimale Arbeit vom Treiber ausgeführt werden muss. im Idealfall höchstens ein "billiger" Link.
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
Wert: 0x2
Dieses Flag gilt nur für Zustandsobjekte der Typauflistung. Andernfalls wird dieses Flag ignoriert.

Wenn diese Auflistung in einem anderen Zustandsobjekt (z. B. RTPSO) enthalten ist, können Shader/Funktionen im rest des enthaltenden Zustandsobjekts von Exporten (z. B. Aufruf) aus dieser Auflistung abhängen.

Ohne dieses Flag (Standard) können Exporte aus dieser Auflistung nicht direkt von anderen Teilen enthaltener Zustandsobjekte (z. B. RTPSO) referenziert werden. Dies kann den Speicherbedarf für die Sammlung geringfügig reduzieren, da Treiber nicht kompilierten Code in der Auflistung bei der Wahrscheinlichkeit beibehalten müssen, dass er von einer externen Funktion aufgerufen wird, die dann den gesamten Code zusammen kompiliert. Wenn jedoch nicht alle erforderlichen Unterobjektzuordnungen für Code in dieser Auflistung lokal definiert wurden, kann der Treiber möglicherweise noch keinen Shadercode kompilieren und muss möglicherweise weiterhin nicht kompilierten Code beibehalten.

Eine extern definierte Unterobjektzuordnung, die einem lokalen Export ein externes Unterobjekt zuordnet, zählt nicht als externe Abhängigkeit von einer lokalen Definition, sodass das Vorhandensein oder Fehlen dieses Flags keinen Einfluss darauf hat, ob die Zuordnung zulässig ist oder nicht. Wenn die aktuelle Auflistung hingegen eine Unterobjektzuordnung für ein lokal definiertes Unterobjekt zu einem externen Export (z. B. Shader) definiert, zählt dies als externe Abhängigkeit von einer lokalen Definition, und dieses Flag muss festgelegt werden.

Unabhängig vom Vorhandensein oder Fehlen dieses Flags sind Shadereinstiegspunkte (z. B. Treffergruppen oder Fehlershader) in der Auflistung als Einstiegspunkte für ein enthaltende Zustandsobjekt (z. B. RTPSO) sichtbar, wenn sie von diesem exportiert werden. Im Falle eines RTPSO können die exportierten Einstiegspunkte in Shadertabellen für Raytracing verwendet werden.

Anforderungen

Anforderung Wert
Header d3d12.h