Método ID3D12Device::MakeResident (d3d12.h)

Torna os objetos residentes para o dispositivo.

Sintaxe

HRESULT MakeResident(
       UINT           NumObjects,
  [in] ID3D12Pageable * const *ppObjects
);

Parâmetros

NumObjects

Tipo: UINT

O número de objetos na matriz ppObjects para tornar residente para o dispositivo.

[in] ppObjects

Tipo: ID3D12Pageable*

Um ponteiro para um bloco de memória que contém uma matriz de ponteiros de interface ID3D12Pageable para os objetos.

Embora a maioria dos objetos D3D12 herde de ID3D12Pageable, as alterações de residência só têm suporte nos seguintes objetos: Heaps de descritor, heaps, recursos confirmados e heaps de consulta

Retornar valor

Tipo: HRESULT

Esse método retorna um dos códigos de retorno do Direct3D 12.

Comentários

MakeResident carrega os dados associados a um recurso do disco e aloca novamente a memória do pool de memória apropriado do recurso. Esse método deve ser chamado no objeto que possui a memória física.

Use esse método, e Remover, para gerenciar a memória de vídeo de GPU, observando que isso foi feito automaticamente em D3D11, mas agora precisa ser feito pelo aplicativo em D3D12.

MakeResident e Remove podem ajudar os aplicativos a gerenciar o orçamento de residência em muitos adaptadores. MakeResident explicitamente páginas em dados e, em seguida, impede page-out para que a GPU possa acessar os dados. Remover habilita a saída de página.

Algumas arquiteturas de GPU não se beneficiam da manipulação de residência, devido à falta de espaço de endereço virtual de GPU suficiente. Use D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT e IDXGIAdapter3::QueryVideoMemoryInfo para reconhecer quando o espaço máximo de VA de GPU por processo é muito pequeno ou aproximadamente do mesmo tamanho que o orçamento de residência. Para essas arquiteturas, o orçamento de residência sempre será restrito pela quantidade de espaço de endereço virtual de GPU. O despejo não liberará nenhum orçamento de residência nesses sistemas.

Os aplicativos devem lidar com falhas do MakeResident , mesmo que pareça haver orçamento de residência suficiente disponível. A fragmentação de memória física e as peculiaridades da arquitetura do adaptador podem impedir a utilização de grandes intervalos contíguos. Os aplicativos devem liberar mais orçamento de residência antes de tentar novamente.

MakeResident é ref-counted, de modo que o Despejo deve ser chamado da mesma quantidade de vezes que MakeResident antes que o Despejo entre em vigor. Os objetos que dão suporte à residência são feitos residentes durante a criação, portanto, uma única chamada de Despejo removerá o objeto.

Os aplicativos devem usar cercas para garantir que a GPU não use objetos não residentes. MakeResident deve retornar antes que a GPU execute uma lista de comandos que referencie o objeto . O despejo deve ser chamado depois que a GPU terminar de executar uma lista de comandos que referencie o objeto .

Os objetos removidos ainda consomem o mesmo endereço virtual de GPU e a mesma quantidade de espaço de endereço virtual de GPU. Portanto, os descritores de recursos e outras referências de endereço virtual de GPU não são invalidados após a remoção.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d12.h
Biblioteca D3D12.lib
DLL D3D12.dll

Confira também

ID3D12Device