> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MakeResident

> Torna objetos residentes para o dispositivo.

Torna objetos residentes para o dispositivo.

## Sintaxe

```cpp theme={null}
HRESULT MakeResident(
    UINT NumObjects,
    ID3D12Pageable const  ppObjects
)
```

### Parâmetros

*NumObjects*<br />Tipo: UINT

O número de objetos na matriz <i>ppObjects</i> a serem tornados residentes para o dispositivo.

*ppObjects \[in]*<br />Tipo: ID3D12Pageable \*const \*

Um ponteiro para um bloco de memória que contém uma matriz de ponteiros de interface [ID3D12Pageable](/pt-BR/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public) para os objetos.

Embora a maioria dos objetos D3D12 herde de [ID3D12Pageable](/pt-BR/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public), as alterações de residência só têm suporte nos seguintes objetos: heaps de descritores, heaps, recursos confirmados e heaps de consulta

### Valor retornado

Tipo: HRESULT

Este método retorna um dos [Códigos de retorno do Direct3D 12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues).

## Comentários

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

Use este método e [Evict](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) para gerenciar a memória de vídeo da GPU, observando que isso era feito automaticamente no D3D11, mas agora precisa ser feito pelo aplicativo no D3D12.

**MakeResident** e [Evict](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) podem ajudar os aplicativos a gerenciar o orçamento de residência em muitos adaptadores. **MakeResident** pagina explicitamente os dados para a memória e, em seguida, impede a remoção da página para que a GPU possa acessar os dados. **Evict** permite a remoção da 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](/pt-BR/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public) e [IDXGIAdapter3::QueryVideoMemoryInfo](https://learn.microsoft.com/en-us/windows/desktop/api/dxgi1_4/nf-dxgi1_4-idxgiadapter3-queryvideomemoryinfo) para reconhecer quando o espaço máximo de VA da GPU por processo é pequeno demais ou aproximadamente do mesmo tamanho do orçamento de residência. Para essas arquiteturas, o orçamento de residência será sempre limitado pela quantidade de espaço de endereço virtual da GPU. [Evict](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) não liberará nenhum orçamento de residência nesses sistemas.

Os aplicativos devem lidar com falhas de **MakeResident**, mesmo que pareça haver orçamento de residência suficiente disponível. A fragmentação da 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** tem contagem de referências, de modo que [Evict](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) deve ser chamado a mesma quantidade de vezes que **MakeResident** antes que **Evict** entre em vigor. Objetos que dão suporte à residência são tornados residentes durante a criação, portanto, uma única chamada de **Evict** removerá de fato o objeto.

Os aplicativos devem usar fences 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 faça referência ao objeto. [Evict](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) deve ser chamado depois que a GPU terminar de executar uma lista de comandos que faça referência ao objeto.

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 [Evict](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public).

## Requisitos

**Cabeçalho:** d3d12\_xs.h ou d3d12\_x.h<br />**Biblioteca:** d3d12\_xs.lib ou d3d12\_x.lib<br />**Plataformas com suporte**: consoles XBOX Series e família XBOX One

## Confira também

[ID3D12Device](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [EnqueueMakeResident](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device3/methods/id3d12device3_enqueuemakeresident_public.md)
- [ID3D12Pageable](/pt-BR/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public.md)
- [Evict](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public.md)
- [D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT](/pt-BR/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public.md)
- [D3D12_RESIDENCY_FLAGS](/pt-BR/reference/graphics/d3d12/enums/d3d12_residency_flags_public.md)
