Sintaxe
typedef enum D3D12_STATE_OBJECT_FLAGS
{
D3D12_STATE_OBJECT_FLAG_NONE = 0,
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 1,
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 2
} D3D12_STATE_OBJECT_FLAGS
Constantes
| Constante | Descrição |
|---|---|
| D3D12_STATE_OBJECT_FLAG_NONE | Nenhuma restrição de objeto de estado. |
| D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS | Este sinalizador se aplica somente a objetos de estado do tipo coleção. Caso contrário, este sinalizador é ignorado. As exportações desta coleção podem ter referências não resolvidas (dependências) que teriam de ser resolvidas (definidas) quando a coleção for incluída em um objeto de estado recipiente, como um RTPSO (objeto de estado de pipeline de ray tracing). Isso inclui depender de associações de subobjetos definidas externamente para associar um subobjeto externo (por exemplo, a assinatura raiz) a uma exportação local. Na ausência deste sinalizador, todas as exportações desta coleção devem ter suas dependências totalmente resolvidas localmente, incluindo quaisquer associações de subobjetos necessárias definidas localmente. Implementações/drivers avançados terão informações suficientes para compilar o código na coleção sem precisar manter 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 recipiente (por exemplo, RTPSO), o driver precise fazer um trabalho mínimo, idealmente, no máximo uma vinculação “barata”. |
| D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS | Este sinalizador se aplica somente a objetos de estado do tipo coleção. Caso contrário, este sinalizador é ignorado. Se esta coleção for incluída em outro objeto de estado (por exemplo, RTPSO), os sombreadores/funções no restante do objeto de estado recipiente poderão depender de (por exemplo, chamar) exportações desta coleção. Na ausência deste sinalizador (padrão), as exportações desta coleção não podem ser referenciadas diretamente por outras partes de objetos de estado recipientes (por exemplo, RTPSO). Isso pode reduzir ligeiramente o consumo de memória da coleção, já que os drivers não precisam manter código não compilado na coleção para o caso remoto de ele ser chamado por alguma função externa que então compilaria todo o código junto. Dito isso, se nem todas as associações de subobjetos necessárias tiverem sido definidas localmente para o código desta coleção, o driver talvez ainda não consiga compilar o código do sombreador e talvez ainda precise manter código não compilado. 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 de uma definição local; portanto, a presença ou ausência deste 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 de um subobjeto definido localmente com uma exportação externa (por exemplo, um sombreador), isso conta como uma dependência externa de uma definição local e este sinalizador deve ser definido. Independentemente da presença ou ausência deste sinalizador, os pontos de entrada de sombreador (como grupos de acertos ou sombreadores de erro) na coleção ficam visíveis como pontos de entrada para um objeto de estado recipiente (por exemplo, RTPSO) se forem exportados por ele. No caso de um RTPSO, os pontos de entrada exportados podem ser usados em tabelas de sombreadores para ray tracing. |
Requisitos
Cabeçalho: d3d12_xs.h ou d3d12_x.hBiblioteca: d3d12_xs.lib ou d3d12_x.lib
Plataformas com suporte: consoles XBOX Series e família XBOX One
