> ## 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

> Rend des objets résidents pour l'appareil.

Rend des objets résidents pour l'appareil.

## Syntaxe

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

### Paramètres

*NumObjects*<br />Type : UINT

Nombre d'objets du tableau <i>ppObjects</i> à rendre résidents pour l'appareil.

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

Pointeur vers un bloc de mémoire qui contient un tableau de pointeurs d'interface [ID3D12Pageable](/fr/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public) pour les objets.

Même si la plupart des objets D3D12 héritent de [ID3D12Pageable](/fr/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public), les modifications de résidence ne sont prises en charge que sur les objets suivants : tas de descripteurs, tas, ressources validées et tas de requêtes

### Valeur renvoyée

Type : HRESULT

Cette méthode renvoie l'un des [codes de retour Direct3D 12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues).

## Remarques

**MakeResident** charge depuis le disque les données associées à une ressource et réalloue la mémoire à partir du pool de mémoire approprié de la ressource. Cette méthode doit être appelée sur l'objet qui possède la mémoire physique.

Utilisez cette méthode, ainsi que [Evict](/fr/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public), pour gérer la mémoire vidéo du GPU. Notez que cette opération était effectuée automatiquement dans D3D11, mais qu'elle doit désormais être effectuée par l'application dans D3D12.

**MakeResident** et [Evict](/fr/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) peuvent aider les applications à gérer le budget de résidence sur de nombreux adaptateurs. **MakeResident** charge explicitement les données en mémoire (page-in), puis empêche leur déchargement (page-out) afin que le GPU puisse accéder aux données. **Evict** autorise le déchargement.

Certaines architectures GPU ne tirent aucun avantage de la manipulation de la résidence, en raison d'un espace d'adressage virtuel GPU insuffisant. Utilisez [D3D12\_FEATURE\_DATA\_GPU\_VIRTUAL\_ADDRESS\_SUPPORT](/fr/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public) et [IDXGIAdapter3::QueryVideoMemoryInfo](https://learn.microsoft.com/en-us/windows/desktop/api/dxgi1_4/nf-dxgi1_4-idxgiadapter3-queryvideomemoryinfo) pour déterminer si l'espace VA GPU maximal par processus est trop petit ou à peu près de la même taille que le budget de résidence. Pour de telles architectures, le budget de résidence sera toujours limité par la quantité d'espace d'adressage virtuel GPU. [Evict](/fr/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) ne libérera aucun budget de résidence sur de tels systèmes.

Les applications doivent gérer les échecs de **MakeResident**, même si le budget de résidence disponible semble suffisant. La fragmentation de la mémoire physique et les particularités de l'architecture de l'adaptateur peuvent empêcher l'utilisation de grandes plages contiguës. Les applications doivent libérer davantage de budget de résidence avant de réessayer.

**MakeResident** utilise un décompte de références, de sorte que [Evict](/fr/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) doit être appelé autant de fois que **MakeResident** avant que **Evict** ne prenne effet. Les objets qui prennent en charge la résidence sont rendus résidents lors de leur création ; un seul appel à **Evict** suffit donc à évincer l'objet.

Les applications doivent utiliser des fences pour garantir que le GPU n'utilise pas d'objets non résidents. **MakeResident** doit retourner avant que le GPU n'exécute une liste de commandes qui référence l'objet. [Evict](/fr/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) doit être appelé après que le GPU a terminé l'exécution d'une liste de commandes qui référence l'objet.

Les objets évincés consomment toujours la même adresse virtuelle GPU et la même quantité d'espace d'adressage virtuel GPU. Par conséquent, les descripteurs de ressources et les autres références d'adresses virtuelles GPU ne sont pas invalidés après [Evict](/fr/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public).

## Configuration requise

**En-tête :** d3d12\_xs.h ou d3d12\_x.h<br />**Bibliothèque :** d3d12\_xs.lib ou d3d12\_x.lib<br />**Plateformes prises en charge** : consoles XBOX Series et famille XBOX One

## Voir aussi

[ID3D12Device](/fr/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

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