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 se composer d’une alternance 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. Pour cela, vous pouvez utiliseralignas(void*) ou créer une union de l’enum + sous-objet et d’un void*.
Il ne suffit pas de créer simplement 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 fait l’objet d’une union avec un void*, un remplissage supplémentaire sera ajouté entre ces 2 membres, ce qui corrompra le flux. Pour cette raison, vous devez créer une union de toute la structure 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 similaire à 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 pour la détection 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ère comme des sous-objets en double et échoue.
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
