ID3D12Device8 ::CreateCommittedResource2, méthode (d3d12.h)
Crée à la fois une ressource et un tas implicite (éventuellement pour une session protégée), de sorte que le tas est suffisamment grand pour contenir l’intégralité de la ressource et que la ressource est mappée au tas. Consultez également ID3D12Device ::CreateCommittedResource pour obtenir un exemple de code.
Syntaxe
HRESULT CreateCommittedResource2(
const D3D12_HEAP_PROPERTIES *pHeapProperties,
D3D12_HEAP_FLAGS HeapFlags,
const D3D12_RESOURCE_DESC1 *pDesc,
D3D12_RESOURCE_STATES InitialResourceState,
const D3D12_CLEAR_VALUE *pOptimizedClearValue,
ID3D12ProtectedResourceSession *pProtectedSession,
REFIID riidResource,
void **ppvResource
);
Paramètres
pHeapProperties
Type : _In_ const D3D12_HEAP_PROPERTIES*
Pointeur vers une structure D3D12_HEAP_PROPERTIES qui fournit des propriétés pour le tas de la ressource.
HeapFlags
Type : D3D12_HEAP_FLAGS
Options de segment de mémoire, sous la forme d’une combinaison de D3D12_HEAP_FLAGS constantes d’énumération au niveau du bit.
pDesc
Type : const D3D12_RESOURCE_DESC1*
Pointeur vers une structure D3D12_RESOURCE_DESC1 qui décrit la ressource, y compris une région mip.
InitialResourceState
Type : D3D12_RESOURCE_STATES
État initial de la ressource, sous la forme d’une combinaison de D3D12_RESOURCE_STATES constantes d’énumération au niveau du bit.
Lorsque vous créez une ressource avec un tas D3D12_HEAP_TYPE_UPLOAD, vous devez définir InitialResourceState sur D3D12_RESOURCE_STATE_GENERIC_READ.
Lorsque vous créez une ressource avec un tas D3D12_HEAP_TYPE_READBACK, vous devez définir InitialResourceState sur D3D12_RESOURCE_STATE_COPY_DEST.
pOptimizedClearValue
Type : const D3D12_CLEAR_VALUE*
Spécifie une structure D3D12_CLEAR_VALUE qui décrit la valeur par défaut d’une couleur claire.
pOptimizedClearValue spécifie une valeur pour laquelle les opérations claires sont les plus optimales. Lorsque la ressource créée est une texture avec les indicateurs D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL, vous devez choisir la valeur avec laquelle l’opération claire sera généralement appelée. Vous pouvez appeler l’opération clear avec d’autres valeurs, mais ces opérations ne seront pas aussi efficaces que lorsque la valeur correspond à celle passée à la création de ressources.
Lorsque vous utilisez D3D12_RESOURCE_DIMENSION_BUFFER, vous devez définir pOptimizedClearValue sur nullptr
.
pProtectedSession
Type : ID3D12ProtectedResourceSession*
Pointeur facultatif vers un objet qui représente une session pour la protection du contenu. Si elle est fournie, cette session indique que la ressource doit être protégée. Vous pouvez obtenir un ID3D12ProtectedResourceSession en appelant ID3D12Device4 ::CreateProtectedResourceSession.
riidResource
Type : REFIID
Référence à l’identificateur global unique (GUID) de l’interface de ressource à retourner dans ppvResource .
Bien que
ppvResource
Type : void**
Pointeur facultatif vers un bloc de mémoire qui reçoit le pointeur d’interface demandé vers l’objet de ressource créé.
ppvResource peut être nullptr
, pour activer les tests de capacité. Quand ppvResource est nullptr
, aucun objet n’est créé et S_FALSE est retourné lorsque pDesc est valide.
Valeur de retour
Type : HRESULT
Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.
Valeur de retour | Description |
---|---|
E_OUTOFMEMORY | La mémoire est insuffisante pour créer la ressource. |
Consultez codes de retour Direct3D 12 pour d’autres valeurs de retour possibles.
Remarques
Cette méthode crée à la fois une ressource et un tas, de sorte que le tas est suffisamment grand pour contenir l’ensemble de la ressource et que la ressource est mappée au tas. Le tas créé est appelé segment de mémoire implicite, car l’objet tas ne peut pas être obtenu par l’application. Avant de publier la référence finale sur la ressource, votre application doit s’assurer que le GPU ne lit plus ni n’écrit dans cette ressource.
Le tas implicite est rendu résident pour l’accès GPU avant que la méthode retourne le contrôle à votre application. Voir également résidence.
Impossible de modifier le mappage VA GPU de ressource. Consultez ID3D12CommandQueue ::UpdateTileMappings et ressources en mosaïques volume.
Cette méthode peut être appelée simultanément par plusieurs threads.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10 Build 20348 |
serveur minimum pris en charge | Windows 10 Build 20348 |
d’en-tête | d3d12.h |
bibliothèque | d3d12.lib |
DLL | d3d12.dll |