Sintaxe
Membros
SizeInBytesTipo: SIZE_T SAL:
In
Especifica o tamanho, em bytes, da estrutura de dados opaca apontada pelo membro pPipelineStateSubobjectStream.
pPipelineStateSubobjectStreamTipo: void * SAL:
In_reads(Inexpressible(“Dependentonsizeofsubobjects”))
Especifica o endereço de uma estrutura de dados que descreve, como um fluxo de bytes, um subobjeto de estado de pipeline arbitrário.
Comentários
Use esta estrutura com o método ID3D12Device2::CreatePipelineState para criar objetos de estado de pipeline. O formato do fluxo fornecido deve consistir em um conjunto alternado de D3D12_PIPELINE_STATE_SUBOBJECT_TYPE e dos tipos de subobjeto correspondentes (por exemplo, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER forma par com D3D12_RASTERIZER_DESC. Em termos de alinhamento, o runtime do D3D12 espera que os subobjetos sejam pares individuais de estruturas enum-struct, em vez de um conjunto contínuo de campos. Ele também espera que estejam alinhados ao alinhamento natural de palavra do sistema. Isso pode ser obtido usandoalignas(void*) ou criando uma union do enum + subobjeto e um void*.
Não é suficiente simplesmente fazer a união de D3D12_PIPELINE_STATE_SUBOBJECT_TYPE com um void*, porque isso fará com que certos subobjetos fiquem desalinhados. Por exemplo, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY é seguido por um enum D3D12_PRIMITIVE_TOPOLOGY_TYPE. Se o tipo de subobjeto for unido a um void*, haverá preenchimento adicional entre esses 2 membros, resultando em corrupção do fluxo. Por isso, você deve unir toda a estrutura do subobjeto com um void* quando
alignas não estiver disponíveld3dx12.h para C++, que fornecem um conjunto de estruturas auxiliares para todos os subobjetos de pipeline (por exemplo, a estrutura acima é muito semelhante a CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER). Esse cabeçalho pode ser encontrado no repositório DirectX-Headers no GitHub.
-runtime-validation
O runtime validará se a descrição do PSO é um pipeline de computação, de malha ou de gráficos, se todos os subobjetos são de tipos reconhecidos e se não há subobjetos duplicados.Alguns subobjetos são considerados uma versão “derivada” de outros para fins de reconhecimento de subobjetos duplicados. Por exemplo, se o runtime descobrir um subobjeto D3D12_DEPTH_STENCIL_DESC e, mais tarde, um D3D12_DEPTH_STENCIL_DESC1, ele os considerará subobjetos duplicados e falhará.
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
