Compartilhar via


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

Cria um recurso (opcionalmente para uma sessão protegida) reservado e ainda não mapeado para nenhuma página em um heap. Consulte também ID3D12Device::CreateReservedResource.

Observação

Somente blocos de heaps criados com a mesma sessão de recurso protegido podem ser mapeados em um recurso reservado protegido.

Sintaxe

HRESULT CreateReservedResource1(
  [in]            const D3D12_RESOURCE_DESC      *pDesc,
  [in]            D3D12_RESOURCE_STATES          InitialState,
  [in, optional]  const D3D12_CLEAR_VALUE        *pOptimizedClearValue,
  [in, optional]  ID3D12ProtectedResourceSession *pProtectedSession,
  [in]            REFIID                         riid,
  [out, optional] void                           **ppvResource
);

Parâmetros

[in] pDesc

Tipo: const D3D12_RESOURCE_DESC*

Um ponteiro para uma estrutura D3D12_RESOURCE_DESC que descreve o recurso.

[in] InitialState

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.

[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] riid

Tipo: REFIID

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

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.

Retornar valor

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

CreateReservedResource é equivalente a D3D11_RESOURCE_MISC_TILED no Direct3D 11. Ele cria um recurso somente com memória virtual, sem repositório de backup.

Você precisa mapear o recurso para a memória física (ou seja, para um heap) usando CopyTileMappings e UpdateTileMappings.

Esses tipos de recursos só podem ser criados quando o adaptador dá suporte à camada de recursos lado a lado 1 ou superior. A camada de recursos lado a lado define o comportamento de acessar um recurso que não é mapeado para um heap.

Requisitos

Requisito Valor
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

Confira também

CreateCommittedResource1

CreatePlacedResource

ID3D12Device4