Syntaxe
Membres
SizeInBytesType : SIZE_T SAL :
In
Spécifie la taille, en octets, de la structure de données opaque vers laquelle pointe le membre pPipelineStateSubobjectStream.
pPipelineStateSubobjectStreamType : void * SAL :
In_reads(Inexpressible(“Dependentonsizeofsubobjects”))
Spécifie l’adresse d’une structure de données qui décrit, sous forme de flux d’octets, un sous-objet d’état de pipeline arbitraire.
Remarques
Utilisez cette structure avec la méthode ID3D12Device2::CreatePipelineState pour créer des objets d’état de pipeline. Le format du flux fourni doit consister en un ensemble alterné de valeurs D3D12_PIPELINE_STATE_SUBOBJECT_TYPE et des types de sous-objets correspondants (par exemple, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER est associé à D3D12_RASTERIZER_DESC). En ce qui concerne l’alignement, le runtime D3D12 s’attend à ce que les sous-objets soient des paires individuelles enum-struct, plutôt qu’un ensemble continu de champs. Il s’attend également à ce qu’ils soient alignés sur l’alignement de mot naturel du système. Cela peut être réalisé soit à l’aide dealignas(void*), soit en créant une union de l’enum + sous-objet et d’un void*.
Il ne suffit pas de simplement faire une union de D3D12_PIPELINE_STATE_SUBOBJECT_TYPE avec un void*, car certains sous-objets seraient alors mal alignés. Par exemple, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY est suivi d’une enum D3D12_PRIMITIVE_TOPOLOGY_TYPE. Si le type de sous-objet est uni à un void*, il y aura un remplissage supplémentaire entre ces 2 membres, ce qui corrompra le flux. Pour cette raison, vous devez faire une union de la structure entière du sous-objet avec un void* lorsque
alignas n’est pas disponibled3dx12.h pour C++, qui fournissent un ensemble de structures d’assistance pour tous les sous-objets de pipeline (par exemple, la structure ci-dessus est très semblable à CD3DX12_PIPELINE_STATE_STREAM_RASTERIZER). Cet en-tête se trouve dans le dépôt DirectX-Headers sur GitHub.
-runtime-validation
Le runtime vérifie que la description du PSO correspond à un pipeline de calcul, de maillage ou graphique, que tous les sous-objets sont de types reconnus et qu’il n’y a pas de sous-objets en double.Certains sous-objets sont considérés comme une version « dérivée » d’autres sous-objets aux fins de la reconnaissance des sous-objets en double. Par exemple, si le runtime découvre un sous-objet D3D12_DEPTH_STENCIL_DESC, puis plus tard un D3D12_DEPTH_STENCIL_DESC1, il les considérera comme des sous-objets en double et échouera.
Configuration requise
En-tête : d3d12_xs.h ou d3d12_x.hBibliothèque : d3d12_xs.lib ou d3d12_x.lib
Plateformes prises en charge : consoles XBOX Series et famille XBOX One
