Share via


Método ID3D12Device4::CreateCommittedResource1 (d3d12.h)

Cria um recurso e um heap implícito (opcionalmente para uma sessão protegida), de modo que o heap seja grande o suficiente para conter todo o recurso e o recurso seja mapeado para o heap. Consulte também ID3D12Device::CreateCommittedResource para obter um exemplo de código.

Sintaxe

HRESULT CreateCommittedResource1(
  [in]            const D3D12_HEAP_PROPERTIES    *pHeapProperties,
  [in]            D3D12_HEAP_FLAGS               HeapFlags,
  [in]            const D3D12_RESOURCE_DESC      *pDesc,
  [in]            D3D12_RESOURCE_STATES          InitialResourceState,
  [in, optional]  const D3D12_CLEAR_VALUE        *pOptimizedClearValue,
  [in, optional]  ID3D12ProtectedResourceSession *pProtectedSession,
  [in]            REFIID                         riidResource,
  [out, optional] void                           **ppvResource
);

Parâmetros

[in] pHeapProperties

Tipo: const D3D12_HEAP_PROPERTIES*

Um ponteiro para uma estrutura D3D12_HEAP_PROPERTIES que fornece propriedades para o heap do recurso.

[in] HeapFlags

Tipo: D3D12_HEAP_FLAGS

Opções de heap, como uma combinação or'd bit a bit de D3D12_HEAP_FLAGS constantes de enumeração.

[in] pDesc

Tipo: const D3D12_RESOURCE_DESC*

Um ponteiro para uma estrutura D3D12_RESOURCE_DESC que descreve o recurso.

[in] InitialResourceState

Tipo: D3D12_RESOURCE_STATES

O estado inicial do recurso, como uma combinação or'd bit a bit de D3D12_RESOURCE_STATES constantes de enumeração.

Ao criar um recurso junto com um heap de D3D12_HEAP_TYPE_UPLOAD , você deve definir InitialResourceState como D3D12_RESOURCE_STATE_GENERIC_READ.

Ao criar um recurso junto com um heap de D3D12_HEAP_TYPE_READBACK , você deve definir InitialResourceState como D3D12_RESOURCE_STATE_COPY_DEST.

[in, optional] pOptimizedClearValue

Tipo: const D3D12_CLEAR_VALUE*

Especifica uma estrutura D3D12_CLEAR_VALUE que descreve o valor padrão para uma cor clara.

pOptimizedClearValue especifica um valor para o qual as operações claras são mais ideais. Quando o recurso criado é uma textura com os sinalizadores D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET ou D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL , você deve escolher o valor com o qual a operação clara será mais comumente chamada. Você pode chamar a operação clara com outros valores, mas essas operações não serão tão eficientes quanto quando o valor corresponder ao passado para a criação de recursos.

Ao usar D3D12_RESOURCE_DIMENSION_BUFFER, você deve definir pOptimizedClearValue comonullptr.

[in, optional] pProtectedSession

Tipo: ID3D12ProtectedResourceSession*

Um ponteiro opcional para um objeto que representa uma sessão para proteção de conteúdo. Se fornecido, esta sessão indica que o recurso deve ser protegido. Você pode obter uma ID3D12ProtectedResourceSession chamando ID3D12Device4::CreateProtectedResourceSession.

[in] riidResource

Tipo: REFIID

Uma referência ao GUID (identificador global exclusivo) da interface de recurso a ser retornada em ppvResource.

Embora riidResource seja mais comumente o GUID de ID3D12Resource, ele pode ser o GUID de qualquer interface. Se o objeto de recurso não der suporte à interface para esse GUID, a criação falhará com E_NOINTERFACE.

[out, optional] ppvResource

Tipo: void**

Um ponteiro opcional para um bloco de memória que recebe o ponteiro de interface solicitado para o objeto de recurso criado.

ppvResource pode ser nullptr, para habilitar o teste de funcionalidade. Quando ppvResource é nullptr, nenhum objeto é criado e S_FALSE é retornado quando pDesc é válido.

Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erroHRESULT.

Valor retornado Descrição
E_OUTOFMEMORY Não há memória suficiente para criar o recurso.

Confira Códigos de retorno do Direct3D 12 para obter outros valores retornados possíveis.

Comentários

Esse método cria um recurso e um heap, de modo que o heap seja grande o suficiente para conter todo o recurso e o recurso seja mapeado para o heap. O heap criado é conhecido como um heap implícito, porque o objeto heap não pode ser obtido pelo aplicativo. Antes de liberar a referência final no recurso, seu aplicativo deve garantir que a GPU não será mais lida nem gravada nesse recurso.

O heap implícito é feito residente para acesso à GPU antes que o método retorne o controle para seu aplicativo. Consulte também Residência.

O mapeamento de VA da GPU do recurso não pode ser alterado. Consulte ID3D12CommandQueue::UpdateTileMappings e Volume de recursos lado a lado.

Esse método pode ser chamado por vários threads simultaneamente.

Requisitos

   
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Plataforma de Destino Windows
Cabeçalho d3d12.h
Biblioteca d3d12.lib
DLL d3d12.dll