Syntaxe
Paramètres
pLibraryBlobType : const void * Si le blob de bibliothèque d’entrée est vide, le contenu initial de la bibliothèque est vide. Si le blob de bibliothèque d’entrée n’est pas vide, son intégrité est validée, il est analysé et le pointeur est stocké. Le pointeur fourni en entrée à cette méthode doit rester valide pendant toute la durée de vie de l’objet renvoyé. Pour des raisons d’efficacité, les données ne sont pas copiées. BlobLength
Type : SIZE_T Spécifie la longueur de pLibraryBlob en octets. riid
Type : const IID & Spécifie un REFIID unique pour l’objet ID3D12PipelineLibrary. En général, définissez ce paramètre et le suivant avec la macro
IID_PPV_ARGS(&Library), où Library est le nom de l’objet.
ppPipelineLibraryType : void ** Renvoie un pointeur vers la bibliothèque créée.
Valeur renvoyée
Type : HRESULT Si la fonction réussit, elle renvoie S_OK. Sinon, elle renvoie un code d’erreur HRESULT, notamment E_INVALIDARG si le blob est endommagé ou non reconnu, D3D12_ERROR_DRIVER_VERSION_MISMATCH si les données fournies proviennent d’un ancien pilote ou runtime, et D3D12_ERROR_ADAPTER_NOT_FOUND si les données proviennent d’un matériel différent. Si vous passeznullptr pour pPipelineLibrary, le runtime effectue tout de même la validation du blob, mais évite de créer la bibliothèque proprement dite et renvoie S_FALSE si la bibliothèque aurait été créée.
En outre, la fonctionnalité nécessite un pilote mis à jour, et toute tentative de l’utiliser avec d’anciens pilotes renverra DXGI_ERROR_UNSUPPORTED.
Remarques
Une bibliothèque de pipelines permet les opérations suivantes.- Ajout d’objets d’état de pipeline (PSO) à un objet bibliothèque existant (consultez StorePipeline).
- Sérialisation d’une bibliothèque de PSO dans un bloc de mémoire contigu pour le stockage sur disque (consultez Serialize).
- Désérialisation d’une bibliothèque de PSO à partir d’un stockage persistant (gérée par CreatePipelineLibrary).
- Récupération de PSO individuels à partir de la bibliothèque (consultez LoadComputePipeline et LoadGraphicsPipeline).
Sécurité des threads
La bibliothèque de pipelines peut être utilisée de manière thread-safe et se synchronise en interne selon les besoins, à une exception près : plusieurs threads chargeant le même PSO (via LoadComputePipeline, LoadGraphicsPipeline ou LoadPipeline) doivent se synchroniser eux-mêmes, car cette opération peut modifier l’état de ce pipeline dans la bibliothèque d’une manière non thread-safe.Exemples
Consultez l’exemple de cache d’état de pipeline Direct3D 12.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
