Partager via


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

Annule 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 à annuler.

[in] pCommandQueue

Type : ID3D12CommandQueue*

File d’attente de commandes sur laquelle votre application prévoit d’utiliser la ressource. Tout travail en attente accédant à la ressource entraîne la planification de la clôture sur cette file d’attente. Vous pouvez ensuite mettre en file d’attente davantage de travail 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 à 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 de retour

Type : HRESULT

Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un HRESULTcode d’erreur.

Remarques

La ressource est transférée vers D3D12_RESOURCE_STATE_COMMON (s’il 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 annuler 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 annuler une mémoire tampon de chaîne d’échange. Vous devez également renvoyer la ressource à Direct3D11on12 avant d’appeler Present (ou utiliser la ressource).

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

UnwrapUnderlyingResource ne vide pas et peut planifier le travail du GPU. Vous devez vider après avoir appelé UnwrapUnderlyingResource si vous attendez l’achèvement en externe.

Exigences

Exigence Valeur
client minimum pris en charge Windows 10, version 2004 (10.0 ; Build 19041)
serveur minimum pris en charge Windows Server, version 2004 (10.0 ; Build 19041)
d’en-tête d3d11on12.h
bibliothèque D3D11.lib
DLL D3D11.dll

Voir aussi