Compartir a través de


enumeración D3D12_STATE_OBJECT_FLAGS (d3d12.h)

Especifica restricciones para objetos de estado. Use valores de esta enumeración en la estructura D3D12_STATE_OBJECT_CONFIG .

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

Constantes

 
D3D12_STATE_OBJECT_FLAG_NONE
Valor: 0
No hay restricciones de objeto de estado.
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
Valor: 0x1
Esta marca solo se aplica a los objetos de estado de la colección de tipos. De lo contrario, se omite esta marca.

Las exportaciones de esta colección pueden tener referencias sin resolver (dependencias) que tendrían que resolverse (definirse) cuando la colección se incluye en un objeto de estado contenedor, como un objeto de estado de canalización de raytracing (RTPSO). Esto incluye en función de las asociaciones de subobjetos definidos externamente para asociar un subobjeto externo (por ejemplo, firma raíz) a una exportación local.

En ausencia de esta marca, todas las exportaciones de esta colección deben tener sus dependencias totalmente resueltas localmente, incluidas las asociaciones de subobjetos necesarias que se definen localmente. Las implementaciones o controladores avanzados tendrán suficiente información para compilar el código de la colección y no es necesario mantener en torno a ningún código no compilado (a menos que se establezca la marca de D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS ), de modo que, cuando la colección se use en un objeto de estado contenedor (por ejemplo, RTPSO), el controlador debe realizar un trabajo mínimo, idealmente un enlace "barato" como máximo.
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
Valor: 0x2
Esta marca solo se aplica a los objetos de estado de la colección de tipos. De lo contrario, se omite esta marca.

Si esta colección se incluye en otro objeto de estado (por ejemplo, RTPSO), los sombreadores o funciones del resto del objeto de estado contenedor pueden depender de las exportaciones de esta colección (por ejemplo, llamada).

En ausencia de esta marca (valor predeterminado), las exportaciones de esta colección no pueden hacer referencia directamente a otras partes de objetos de estado (por ejemplo, RTPSO). Esto puede reducir ligeramente la superficie de memoria de la colección, ya que los controladores no necesitan mantener el código sin compilar en la colección con la posibilidad de que alguna función externa llame a ella y, a continuación, compilaría todo el código juntos. Dicho esto, si no todas las asociaciones de subobjetos necesarias se han definido localmente para el código de esta colección, es posible que el controlador no pueda compilar el código del sombreador todavía y es posible que tenga que mantener el código sin compilar.

Una asociación de subobjetos definida externamente que asocia un subobjeto externo a una exportación local no cuenta como una dependencia externa en una definición local, por lo que la presencia o ausencia de esta marca no afecta a si la asociación está permitida o no. Por otro lado, si la colección actual define una asociación de subobjetos para un subobjeto definido localmente en una exportación externa (por ejemplo, sombreador), que cuenta como una dependencia externa en una definición local y se debe establecer esta marca.

Independientemente de la presencia o ausencia de esta marca, los puntos de entrada del sombreador (como grupos de aciertos o sombreadores de errores) de la colección son visibles como puntos de entrada a un objeto de estado contenedor (por ejemplo, RTPSO) si lo exportan. En el caso de un RTPSO, los puntos de entrada exportados se pueden usar en tablas de sombreador para raytracing.

Requisitos

Requisito Valor
Header d3d12.h