Metodo ID3D12Device8::CreateCommittedResource2 (d3d12.h)
Crea sia una risorsa che un heap implicito (facoltativamente per una sessione protetta), in modo che l'heap sia sufficientemente grande da contenere l'intera risorsa e che la risorsa sia mappata all'heap. Vedere anche ID3D12Device::CreateCommittedResource per un esempio di codice.
Sintassi
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
);
Parametri
pHeapProperties
Tipo: _In_ const D3D12_HEAP_PROPERTIES*
Puntatore a una struttura D3D12_HEAP_PROPERTIES che fornisce proprietà per l'heap della risorsa.
HeapFlags
Tipo: D3D12_HEAP_FLAGS
Opzioni heap, come combinazione or bit per bit di D3D12_HEAP_FLAGS costanti di enumerazione.
pDesc
Tipo: const D3D12_RESOURCE_DESC1*
Puntatore a una struttura D3D12_RESOURCE_DESC1 che descrive la risorsa, inclusa un'area mip.
InitialResourceState
Tipo: D3D12_RESOURCE_STATES
Stato iniziale della risorsa, come combinazione or bit per bit di costanti di enumerazione D3D12_RESOURCE_STATES.
Quando si crea una risorsa insieme a un heap D3D12_HEAP_TYPE_UPLOAD, è necessario impostare InitialResourceState su D3D12_RESOURCE_STATE_GENERIC_READ.
Quando si crea una risorsa insieme a un heap D3D12_HEAP_TYPE_READBACK, è necessario impostare InitialResourceState su D3D12_RESOURCE_STATE_COPY_DEST.
pOptimizedClearValue
Tipo: D3D12_CLEAR_VALUE* const
Specifica una struttura D3D12_CLEAR_VALUE che descrive il valore predefinito per un colore chiaro.
pOptimizedClearValue specifica un valore per cui le operazioni non crittografate sono ottimali. Quando la risorsa creata è una trama con i flag D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET o D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL, è necessario scegliere il valore con cui verrà chiamata l'operazione chiara. È possibile chiamare l'operazione di cancellazione con altri valori, ma queste operazioni non saranno efficienti come quando il valore corrisponde a quello passato alla creazione di risorse.
Quando si usa D3D12_RESOURCE_DIMENSION_BUFFER, è necessario impostare pOptimizedClearValue su nullptr
.
pProtectedSession
Tipo: ID3D12ProtectedResourceSession*
Puntatore facoltativo a un oggetto che rappresenta una sessione per la protezione del contenuto. Se specificato, questa sessione indica che la risorsa deve essere protetta. È possibile ottenere un ID3D12ProtectedResourceSession chiamando ID3D12Device4::CreateProtectedResourceSession.
riidResource
Tipo: REFIID
Riferimento all'identificatore univoco globale (GUID) dell'interfaccia della risorsa da restituire in ppvResource.
Anche se
ppvResource
Tipo: void**
Puntatore facoltativo a un blocco di memoria che riceve il puntatore di interfaccia richiesto all'oggetto risorsa creato.
ppvResource può essere nullptr
, per abilitare i test delle funzionalità. Quando ppvResource viene nullptr
, non viene creato alcun oggetto e S_FALSE viene restituito quando pDesc è valido.
Valore restituito
Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore
Valore restituito | Descrizione |
---|---|
E_OUTOFMEMORY | Memoria insufficiente per creare la risorsa. |
Vedere codici restituiti Direct3D 12 per altri possibili valori restituiti.
Osservazioni
Questo metodo crea sia una risorsa che un heap, in modo che l'heap sia sufficientemente grande da contenere l'intera risorsa e che la risorsa sia mappata all'heap. L'heap creato è noto come heap implicito, perché l'oggetto heap non può essere ottenuto dall'applicazione. Prima di rilasciare il riferimento finale sulla risorsa, l'applicazione deve assicurarsi che la GPU non leggerà più né scriverà in questa risorsa.
L'heap implicito viene reso residente per l'accesso alla GPU prima che il metodo restituisca il controllo all'applicazione. Vedere anche Residenza.
Non è possibile modificare il mapping della risorsa GPU VA. Vedere ID3D12CommandQueue::UpdateTileMappings e Risorse affiancate del volume.
Questo metodo può essere chiamato contemporaneamente da più thread.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10 Build 20348 |
server minimo supportato | Windows 10 Build 20348 |
intestazione |
d3d12.h |
libreria |
d3d12.lib |
dll | d3d12.dll |