Skip to main content
Sérialise un objet d’état de pipeline de calcul pour permettre un chargement efficace au moment de l’exécution. Cette méthode est appelée lors de la création de contenu hors connexion, et non lors de l’exécution du jeu.

Syntaxe

Paramètres

pPipelineState   _In_
Type : ID3D12PipelineState*
Pointeur vers l’état de pipeline de calcul à sérialiser. Flags   _In_
Type : UINT
Indicateurs de contrôle de cette opération, sous la forme d’une 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*
État sérialisé obtenu.

Valeur de retour

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

Remarques

Cette méthode sérialise un objet d’état de pipeline (PSO) pour permettre un chargement efficace au moment de l’exécution. La méthode doit être appelée dans le cadre d’une création de contenu hors connexion, jamais lors de l’exécution d’un jeu. En règle générale, la méthode est utilisée par un outil sur PC qui appelle l’implémentation sur PC UMD12_PC.DLL/XGS12_PC_XS.DLL de l’API Direct3D 12.x pour XBOX One, du pilote et du compilateur de nuanceurs. 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 différents composants, sous une forme que ID3D12Device::DeserializeComputePipelineStateX peut charger efficacement au moment de l’exécution. Pour éviter de gaspiller de l’espace sur le disque et en mémoire, les appelants doivent dédupliquer les composants obtenus dans l’ensemble de leur collection de PSO. Par exemple, plusieurs PSO sont susceptibles d’avoir exactement le même ensemble d’instructions GPU pour un nuanceur lorsque seules les limites de nuanceur diffèrent entre les objets. Il appartient au développeur (1) d’effectuer un hachage ou une comparaison de mémoire entre ces appels 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 au moment de 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 classique, la plupart des PSO sont créés hors connexion à l’aide de ce mécanisme SerializeComputePipelineStateX/DeserializeComputePipelineStateX. Les nuanceurs désérialisés peuvent être utilisés conjointement avec ID3D12Device::CreateDerivedComputePipelineStateX pour permettre une création efficace de variantes de PSO au moment de 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 obtenus. Pour interroger les mémoires tampons des composants obtenus, 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 null 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 à nouveau à ID3D12Device::DeserializeComputePipelineStateX. D3D12.x utilise un CRC pour garantir 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é précédemment désérialisé via 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