Condividi tramite


enumerazione D3D12_STATE_OBJECT_FLAGS (d3d12.h)

Specifica i vincoli per gli oggetti di stato. Usare i valori di questa enumerazione nella struttura D3D12_STATE_OBJECT_CONFIG .

Sintassi

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
} ;

Costanti

 
D3D12_STATE_OBJECT_FLAG_NONE
Valore: 0
Nessun vincolo di oggetto di stato.
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
Valore: 0x1
Questo flag si applica solo agli oggetti di stato della raccolta di tipi. In caso contrario, questo flag viene ignorato.

Le esportazioni da questa raccolta possono avere riferimenti non risolti (dipendenze) che devono essere risolti (definiti) quando la raccolta viene inclusa in un oggetto stato contenitore, ad esempio un oggetto stato raytracing (RTPSO). Ciò include, a seconda delle associazioni di sottooggetti definiti esternamente per associare un sottooggetto esterno (ad esempio, la firma radice) a un'esportazione locale.

In assenza di questo flag, tutte le esportazioni in questa raccolta devono avere le relative dipendenze completamente risolte localmente, incluse eventuali associazioni di oggetti secondari necessarie definite localmente. Le implementazioni/i driver avanzati avranno informazioni sufficienti per compilare il codice nella raccolta e non è necessario mantenere il codice non compilato (a meno che non sia impostato il flag di D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS ), in modo che quando la raccolta viene usata in un oggetto di stato contenitore (ad esempio RTPSO), il lavoro minimo deve essere eseguito dal driver, idealmente un collegamento "economico" al massimo.
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
Valore: 0x2
Questo flag si applica solo agli oggetti di stato della raccolta di tipi. In caso contrario, questo flag viene ignorato.

Se questa raccolta è inclusa in un altro oggetto di stato (ad esempio RTPSO), gli shader/funzioni nel resto dell'oggetto stato contenitore possono dipendere dalle esportazioni (ad esempio chiamate) da questa raccolta.

In assenza di questo flag (impostazione predefinita), le esportazioni da questa raccolta non possono essere referenziate direttamente da altre parti di oggetti di stato contenenti (ad esempio RTPSO). Ciò può ridurre leggermente il footprint di memoria per la raccolta, poiché i driver non devono mantenere il codice non compilato nella raccolta, in caso contrario, che possa essere chiamato da una funzione esterna che compilerebbe quindi tutto il codice insieme. Ciò premesso, se non tutte le associazioni di oggetti secondari necessarie sono state definite localmente per il codice in questa raccolta, il driver potrebbe non essere ancora in grado di compilare il codice shader e potrebbe comunque essere necessario mantenere il codice non compilato.

Un'associazione oggetto secondario definita esternamente che associa un sottooggetto esterno a un'esportazione locale non viene considerata come dipendenza esterna da una definizione locale, pertanto la presenza o l'assenza di questo flag non influisce sul fatto che l'associazione sia consentita o meno. D'altra parte, se l'insieme corrente definisce un'associazione di oggetti secondari per un sottooggetto definito localmente a un'esportazione esterna (ad esempio, shader), che conta come dipendenza esterna da una definizione locale e questo flag deve essere impostato.

Indipendentemente dalla presenza o dall'assenza di questo flag, i punti di ingresso dello shader (ad esempio hit groups o miss shader) nell'insieme sono visibili come punti di ingresso a un oggetto stato contenitore (ad esempio RTPSO) se esportato da esso. Nel caso di un RTPSO, i punti di ingresso esportati possono essere usati nelle tabelle shader per il raytracing.

Requisiti

Requisito Valore
Intestazione d3d12.h