Skip to main content
Sérialise un objet d’état de pipeline (PSO) afin de permettre un chargement efficace à l’exécution. Cette méthode est appelée lors de la création de contenu hors ligne, et non pendant l’exécution du jeu.

Syntaxe

Paramètres

pPipelineState   _In_
Type : ID3D12PipelineState*
L’état de pipeline graphique à sérialiser, sous forme de pointeur vers ID3D12PipelineState. Flags   _In_
Type : UINT
Indicateurs permettant de contrôler cette opération, sous forme de combinaison par OR au niveau du bit des constantes d’énumération D3D12XBOX_SERIALIZE_FLAGS. Actuellement, ce paramètre doit être D3D12XBOX_SERIALIZE_FLAGS_NONE. pSerializeState   _Out_
Type : D3D12XBOX_SERIALIZE_GRAPHICS_PIPELINE_STATE*
L’état sérialisé résultant, sous forme de pointeur vers une structure D3D12XBOX_SERIALIZE_GRAPHICS_PIPELINE_STATE.

Valeur de retour

Type : HRESULT L’un des codes de retour de Direct3D 12.

Remarques

Cette méthode sérialise un PSO afin de permettre un chargement efficace à l’exécution. La méthode doit être appelée dans le cadre d’une création de contenu hors ligne, jamais pendant l’exécution d’un jeu. Habituellement, la méthode est utilisée par un outil sur PC qui invoque l’implémentation UMD12_PC.DLL/XGS12_PC_XS.DLL sur PC de l’API, du pilote et du compilateur de nuanceurs Direct3D 12.x de XBOX One. La méthode peut également être appelée sur les kits de développement XBOX One lorsque les indicateurs D3D12XBOX_PROCESS_DEBUG_FLAG_INSTRUMENTED et D3D12_PROCESS_DEBUG_FLAG_DEBUG_LAYER_ENABLED sont utilisés : ces indicateurs sont des constantes de l’énumération D3D12XBOX_PROCESS_DEBUG_FLAGS. L’appel de cette méthode sérialise un PSO en ses composants, sous une forme que DeserializeGraphicsPipelineStateX peut charger efficacement à l’exécution. Pour éviter de gaspiller de l’espace sur le disque et en mémoire, les appelants doivent dédupliquer les composants résultants dans l’ensemble de leurs PSO. Par exemple, plusieurs PSO auront probablement exactement le même ensemble d’instructions GPU pour un nuanceur lorsque seul l’état du rastériseur diffère entre les objets. Il revient au développeur d’effectuer un hachage ou une comparaison de mémoire entre ces invocations et d’identifier les composants qui peuvent être partagés. Les développeurs gèrent l’emplacement et la durée de vie de tous les composants de PSO sérialisés à l’exécution, et ils spécifient les emplacements des composants de PSO sérialisés dans l’appel à DeserializeGraphicsPipelineStateX, ce qui facilite ce partage. Pour un titre typique, la plupart des PSO sont créés hors ligne à l’aide de ce mécanisme SerializeGraphicsPipelineStateX/DeserializeGraphicsPipelineStateX. Pour permettre la création efficace de variantes de PSO à l’exécution, utilisez des nuanceurs désérialisés conjointement avec CreateDerivedGraphicsPipelineStateX. Il n’est pas nécessaire de créer toutes les permutations d’état possibles des PSO à l’aide de SerializeGraphicsPipelineStateX. SerializeGraphicsPipelineStateX retourne des structures ID3DBlob pour chacun des composants résultants. Pour interroger les tampons de composants résultants, l’appelant appelle ID3DBlob::GetBufferPointer et ID3DBlob::GetBufferSize; pour libérer la mémoire après avoir copié les résultats, l’appelant appelle Release. Les pointeurs de blob peuvent être nuls pour les nuanceurs qui ne sont pas actifs. Certains nuanceurs peuvent avoir un blob pGpuInstructions sans blob pMetaData correspondant. (pGpuInstructions et pMetaData sont des membres de la structure D3D12XBOX_SERIALIZE_SHADER.) Tous les composants doivent être conservés et fournis de nouveau à DeserializeGraphicsPipelineStateX. D3D12.x utilise un CRC pour s’assurer que tous les composants fournis à DeserializeGraphicsPipelineStateX correspondent exactement à ceux générés par SerializeGraphicsPipelineStateX. Notez que SerializeGraphicsPipelineStateX ne peut pas être utilisé pour sérialiser un objet d’état de pipeline qui a été désérialisé précédemment au moyen de DeserializeGraphicsPipelineStateX.

Configuration requise

En-tête : d3d12_x.h Bibliothèque : d3d12_x.lib Plateformes prises en charge : famille XBOX One

Voir aussi

ID3D12Device
Last modified on October 6, 2026