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

> 디바이스에 대해 객체를 상주 상태로 만듭니다.

디바이스에 대해 객체를 상주 상태로 만듭니다.

## 구문

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

### 매개 변수

*NumObjects*<br />형식: UINT

디바이스에 대해 상주시킬 <i>ppObjects</i> 배열의 객체 수입니다.

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

객체에 대한 [ID3D12Pageable](/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public) 인터페이스 포인터 배열이 포함된 메모리 블록에 대한 포인터입니다.

대부분의 D3D12 객체가 [ID3D12Pageable](/reference/graphics/d3d12/interfaces/id3d12pageable/id3d12pageable_public)에서 상속되지만, 상주 변경은 다음 객체에서만 지원됩니다: 디스크립터 힙, 힙, 커밋된 리소스 및 쿼리 힙.

### 반환 값

형식: HRESULT

이 메서드는 [Direct3D 12 반환 코드](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues) 중 하나를 반환합니다.

## 설명

**MakeResident**는 디스크에서 리소스와 연결된 데이터를 로드하고 리소스의 적절한 메모리 풀에서 메모리를 다시 할당합니다. 이 메서드는 물리적 메모리를 소유하는 객체에서 호출해야 합니다.

이 메서드와 [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public)를 사용하여 GPU 비디오 메모리를 관리합니다. D3D11에서는 자동으로 수행되었지만 D3D12에서는 앱에서 수행해야 함에 유의하세요.

**MakeResident**와 [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public)는 여러 어댑터에서 애플리케이션이 상주 예산을 관리하는 데 도움이 됩니다. **MakeResident**는 명시적으로 데이터를 페이지 인하고 페이지 아웃을 방지하여 GPU가 데이터에 액세스할 수 있도록 합니다. **Evict**는 페이지 아웃을 활성화합니다.

일부 GPU 아키텍처는 충분한 GPU 가상 주소 공간이 없어 상주 조작의 이점을 얻지 못합니다. 프로세스당 최대 GPU VA 공간이 상주 예산보다 너무 작거나 대체로 동일한 크기인지 인식하려면 [D3D12\_FEATURE\_DATA\_GPU\_VIRTUAL\_ADDRESS\_SUPPORT](/reference/graphics/d3d12/structs/d3d12_feature_data_gpu_virtual_address_support_public) 및 [IDXGIAdapter3::QueryVideoMemoryInfo](https://learn.microsoft.com/en-us/windows/desktop/api/dxgi1_4/nf-dxgi1_4-idxgiadapter3-queryvideomemoryinfo)를 사용하세요. 이러한 아키텍처의 경우 상주 예산은 항상 GPU 가상 주소 공간의 양에 의해 제한됩니다. 이러한 시스템에서는 [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public)가 상주 예산을 확보하지 않습니다.

애플리케이션은 상주 예산이 충분해 보이더라도 **MakeResident** 실패를 처리해야 합니다. 물리적 메모리 조각화 및 어댑터 아키텍처의 특성 때문에 큰 연속된 범위의 활용이 배제될 수 있습니다. 애플리케이션은 다시 시도하기 전에 더 많은 상주 예산을 확보해야 합니다.

**MakeResident**는 참조 카운트가 있으므로, **Evict**가 효과를 나타내려면 [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public)를 **MakeResident**와 동일한 횟수만큼 호출해야 합니다. 상주를 지원하는 객체는 생성 중에 상주 상태가 되므로 단일 **Evict** 호출로 실제로 객체가 축출됩니다.

애플리케이션은 GPU가 비상주 객체를 사용하지 않도록 펜스를 사용해야 합니다. GPU가 객체를 참조하는 명령 목록을 실행하기 전에 **MakeResident**가 반환되어야 합니다. GPU가 객체를 참조하는 명령 목록의 실행을 완료한 후에 [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public)를 호출해야 합니다.

축출된 객체는 여전히 동일한 GPU 가상 주소와 동일한 양의 GPU 가상 주소 공간을 사용합니다. 따라서 리소스 디스크립터 및 기타 GPU 가상 주소 참조는 [Evict](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_evict_public) 이후에 무효화되지 않습니다.

## 요구 사항

**헤더:** d3d12\_xs.h 또는 d3d12\_x.h<br />**라이브러리:** d3d12\_xs.lib 또는 d3d12\_x.lib<br />**지원 플랫폼**: XBOX Series 콘솔 및 XBOX One 제품군

## 함께 보기

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


## Related topics

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