Share via


ID3D11On12Device2 ::UnwrapUnderlyingResource, méthode (d3d11on12.h)

Désencapsule un objet de ressource Direct3D 11 et le récupère en tant qu’objet de ressource Direct3D 12.

Syntaxe

HRESULT UnwrapUnderlyingResource(
  [in]  ID3D11Resource     *pResource11,
  [in]  ID3D12CommandQueue *pCommandQueue,
  [in]  REFIID             riid,
  [out] void               **ppvResource12
);

Paramètres

[in] pResource11

Type : ID3D11Resource*

Objet de ressource Direct3D 11 à désencapsuler.

[in] pCommandQueue

Type : ID3D12CommandQueue*

File d’attente de commandes sur laquelle votre application prévoit d’utiliser la ressource. Toute tâche en attente accédant à la ressource entraîne la planification des attentes de clôture sur cette file d’attente. Vous pouvez ensuite mettre en file d’attente d’autres travaux sur cette file d’attente, y compris un signal sur une clôture appartenant à l’appelant.

[in] riid

Type : REFIID

Référence à l’identificateur global unique (GUID) de l’interface que vous souhaitez retourner dans ppvResource12.

[out] ppvResource12

Type : void**

Pointeur vers un bloc de mémoire qui reçoit un pointeur vers la ressource Direct3D 12.

Valeur retournée

Type : HRESULT

Si la fonction réussit, elle retourne S_OK. Sinon, il retourne un code d’erreurHRESULT.

Remarques

La ressource est transférée vers D3D12_RESOURCE_STATE_COMMON (si elle n’était pas déjà dans cet état), et les attentes appropriées sont insérées dans la file d’attente de commandes (pCommandQueue).

Il existe certaines restrictions sur ce qui peut être décompressé : aucune ressource mutex à clé, aucune ressource compatible GDI et aucune mémoire tampon. Toutefois, vous pouvez utiliser UnwrapUnderlyingResource pour désencapsuler les ressources créées via la méthode ID3D11On12Device ::CreateWrappedResource , ainsi que les ressources créées via ID3D11Device ::CreateTexture2D.

En général, vous devez renvoyer l’objet à Direct3D11on12 avant de l’utiliser à nouveau dans Direct3D 11 (voir ID3D11On12Device2 ::ReturnUnderlyingResource).

Vous pouvez également utiliser UnwrapUnderlyingResource pour désencapsuler une mémoire tampon de chaîne d’échange. Vous devez également retourner la ressource à Direct3D11on12 avant d’appeler Présent (ou d’utiliser la ressource).

Unwrapping d’une ressource extrait la ressource de la couche de traduction Direct3D11On12. Vous ne pouvez pas planifier l’utilisation de la couche de traduction (via l’une ou l’autre version de l’API) pendant que la ressource est extraite. Vérifiez de nouveau la ressource (également appelée retour de la ressource) avec ID3D11On12Device2 ::ReturnUnderlyingResource.

UnwrapUnderlyingResource ne vide pas et peut planifier le travail du GPU. Vous devez vider après l’appel de UnwrapUnderlyingResource si vous attendez de manière externe la fin.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 2004 (10.0 ; Build 19041)
Serveur minimal pris en charge Windows Server, version 2004 (10.0 ; Build 19041)
En-tête d3d11on12.h
Bibliothèque D3D11.lib
DLL D3D11.dll

Voir aussi