Skip to main content
Sérialise un objet d’état de pipeline de calcul 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*
Un pointeur vers l’état de pipeline de calcul à sérialiser. 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_COMPUTE_PIPELINE_STATE*
L’état sérialisé résultant.

Valeur de retour

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

Remarques

Cette méthode sérialise un objet d’état de pipeline (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 ID3D12Device::DeserializeComputePipelineStateX 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 seules les limites des nuanceurs diffèrent entre les objets. Il revient au développeur (1) d’effectuer un hachage ou une comparaison de mémoire entre ces invocations et (2) 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 à DeserializeComputePipelineStateX, ce qui facilite ce partage. Pour un jeu typique, la plupart des PSO sont créés hors ligne à l’aide de ce mécanisme SerializeComputePipelineStateX/DeserializeComputePipelineStateX. Les nuanceurs désérialisés peuvent être utilisés conjointement avec ID3D12Device::CreateDerivedComputePipelineStateX afin de permettre la création efficace de variantes de PSO à l’exécution. Il n’est donc pas nécessaire de créer toutes les permutations d’état possibles des PSO à l’aide de SerializeComputePipelineStateX. SerializeComputePipelineStateX 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 inactifs. 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 à ID3D12Device::DeserializeComputePipelineStateX. D3D12.x utilise un CRC pour s’assurer que tous les composants fournis à DeserializeComputePipelineStateX correspondent exactement à ceux générés par SerializeComputePipelineStateX. Notez que SerializeComputePipelineStateX 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 DeserializeComputePipelineStateX.

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