Share via


enumeração D3D12_STATE_OBJECT_FLAGS (d3d12.h)

Especifica restrições para objetos de estado. Use valores dessa enumeração na estrutura 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
Nenhuma restrição de objeto de estado.
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS
Valor: 0x1
Esse sinalizador se aplica somente a objetos de estado da coleção de tipos. Caso contrário, esse sinalizador será ignorado.

As exportações dessa coleção têm permissão para ter referências não resolvidas (dependências) que teriam que ser resolvidas (definidas) quando a coleção é incluída em um objeto de estado que contém, como um RTPSO (objeto de estado do pipeline de raytracing). Isso inclui depender de associações de subobjeto definidas externamente para associar um subobjeto externo (por exemplo, assinatura raiz) a uma exportação local.

Na ausência desse sinalizador, todas as exportações nesta coleção devem ter suas dependências totalmente resolvidas localmente, incluindo as associações de subobjeto necessárias que estão sendo definidas localmente. Implementações/drivers avançados terão informações suficientes para compilar o código na coleção e não precisarão manter em torno de nenhum código não compilado (a menos que o sinalizador D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS esteja definido), de modo que, quando a coleção for usada em um objeto de estado contido (por exemplo, RTPSO), o trabalho mínimo precisa ser feito pelo driver, idealmente um link "barato" no máximo.
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS
Valor: 0x2
Esse sinalizador se aplica somente a objetos de estado da coleção de tipos. Caso contrário, esse sinalizador será ignorado.

Se essa coleção estiver incluída em outro objeto de estado (por exemplo, RTPSO), sombreadores/funções no restante do objeto de estado contido terão permissão para depender das exportações (por exemplo, chamada) dessa coleção.

Na ausência desse sinalizador (padrão), as exportações dessa coleção não podem ser referenciadas diretamente por outras partes do que contém objetos de estado (por exemplo, RTPSO). Isso pode reduzir um pouco o volume de memória da coleção, pois os drivers não precisam manter o código não compilado na coleção na chance de que ela possa ser chamada por alguma função externa que compilaria todo o código em conjunto. Dito isto, se nem todas as associações de subobjeto necessárias tiverem sido definidas localmente para o código nesta coleção, o driver pode não ser capaz de compilar o código do sombreador ainda e ainda pode precisar manter o código não compilado ao redor.

Uma associação de subobjeto definida externamente que associa um subobjeto externo a uma exportação local não conta como uma dependência externa em uma definição local, portanto, a presença ou ausência desse sinalizador não afeta se a associação é permitida ou não. Por outro lado, se a coleção atual definir uma associação de subobjeto para um subobjeto definido localmente para uma exportação externa (por exemplo, sombreador), isso conta como uma dependência externa em uma definição local e esse sinalizador deve ser definido.

Independentemente da presença ou ausência desse sinalizador, os pontos de entrada do sombreador (como grupos de ocorrências ou sombreadores perdidos) na coleção são visíveis como pontos de entrada para um objeto de estado que contém (por exemplo, RTPSO) se exportados por ele. No caso de um RTPSO, os pontos de entrada exportados podem ser usados em tabelas de sombreador para raytracing.

Requisitos

Requisito Valor
Cabeçalho d3d12.h