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

> Hace que los objetos sean residentes para el dispositivo.

Hace que los objetos sean residentes para el dispositivo.

## Sintaxis

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

### Parámetros

*NumObjects*<br />Tipo: UINT

El número de objetos de la matriz <i>ppObjects</i> que se harán residentes para el dispositivo.

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

Un puntero a un bloque de memoria que contiene una matriz de punteros de interfaz [ID3D12Pageable](/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public) de los objetos.

Aunque la mayoría de los objetos de D3D12 heredan de [ID3D12Pageable](/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public), los cambios de residencia solo se admiten en los siguientes objetos: montones de descriptores, montones, recursos confirmados y montones de consultas.

### Valor devuelto

Tipo: HRESULT

Este método devuelve uno de los [códigos de retorno de Direct3D 12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues).

## Comentarios

**MakeResident** carga desde el disco los datos asociados a un recurso y vuelve a asignar la memoria desde el grupo de memoria apropiado del recurso. Este método debe llamarse en el objeto que posee la memoria física.

Use este método, y [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public), para administrar la memoria de vídeo de la GPU; tenga en cuenta que esto se hacía automáticamente en D3D11, pero ahora debe hacerlo la aplicación en D3D12.

**MakeResident** y [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) pueden ayudar a las aplicaciones a administrar el presupuesto de residencia en muchos adaptadores. **MakeResident** pagina explícitamente los datos hacia dentro y, a continuación, impide la paginación de salida para que la GPU pueda acceder a los datos. **Evict** habilita la paginación de salida.

Algunas arquitecturas de GPU no se benefician de la manipulación de la residencia, debido a la falta de suficiente espacio de direcciones virtuales de GPU. Use [D3D12\_FEATURE\_DATA\_GPU\_VIRTUAL\_ADDRESS\_SUPPORT](/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 reconocer cuándo el espacio máximo de direcciones virtuales de GPU por proceso es demasiado pequeño o aproximadamente del mismo tamaño que el presupuesto de residencia. Para esas arquitecturas, el presupuesto de residencia siempre estará limitado por la cantidad de espacio de direcciones virtuales de GPU. [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) no liberará ningún presupuesto de residencia en esos sistemas.

Las aplicaciones deben controlar los errores de **MakeResident**, incluso si parece haber suficiente presupuesto de residencia disponible. La fragmentación de la memoria física y las peculiaridades de la arquitectura del adaptador pueden impedir el uso de intervalos contiguos grandes. Las aplicaciones deben liberar más presupuesto de residencia antes de volver a intentarlo.

**MakeResident** cuenta las referencias, de modo que debe llamarse a [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) el mismo número de veces que a **MakeResident** antes de que **Evict** surta efecto. Los objetos que admiten residencia se hacen residentes durante la creación, por lo que una única llamada a **Evict** expulsará realmente el objeto.

Las aplicaciones deben usar barreras para asegurarse de que la GPU no use objetos no residentes. **MakeResident** debe devolver antes de que la GPU ejecute una lista de comandos que haga referencia al objeto. Debe llamarse a [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) después de que la GPU termine de ejecutar una lista de comandos que haga referencia al objeto.

Los objetos expulsados siguen consumiendo la misma dirección virtual de GPU y la misma cantidad de espacio de direcciones virtuales de GPU. Por lo tanto, los descriptores de recursos y otras referencias a direcciones virtuales de GPU no se invalidan después de [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public).

## Requisitos

**Encabezado:** d3d12\_xs.h o d3d12\_x.h<br />**Biblioteca:** d3d12\_xs.lib o d3d12\_x.lib<br />**Plataformas compatibles**: consolas XBOX Series y familia XBOX One

## Consulte también

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


## Related topics

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