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 demeurer valide pendant toute la durée de vie de l’objet retourné. 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 ** Retourne un pointeur vers la bibliothèque créée.
Valeur de retour
Type : HRESULT Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne 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 d’un ancien 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 elle-même et retourne S_FALSE si la bibliothèque aurait été créée.
De plus, la fonctionnalité nécessite un pilote à jour, et toute tentative de l’utiliser avec d’anciens pilotes retournera DXGI_ERROR_UNSUPPORTED.
Remarques
Une bibliothèque de pipelines permet les opérations suivantes.- Ajouter des objets d’état de pipeline (PSO) à un objet de bibliothèque existant (consultez StorePipeline).
- Sérialiser une bibliothèque de PSO dans un bloc de mémoire contigu pour le stockage sur disque (consultez Serialize).
- Désérialiser une bibliothèque de PSO à partir d’un stockage persistant (cette opération est gérée par CreatePipelineLibrary).
- Récupérer des PSO individuels 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 au besoin, à une exception près : plusieurs threads qui chargent le même PSO (au moyen de LoadComputePipeline, LoadGraphicsPipeline ou LoadPipeline) doivent se synchroniser eux-mêmes, car cette action peut modifier l’état de ce pipeline au sein de 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
