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

구문

매개 변수

NumObjects
형식: UINT
디바이스에 대해 상주시킬 ppObjects 배열의 객체 수입니다. ppObjects [in]
형식: ID3D12Pageable *const *
객체에 대한 ID3D12Pageable 인터페이스 포인터 배열이 포함된 메모리 블록에 대한 포인터입니다. 대부분의 D3D12 객체가 ID3D12Pageable에서 상속되지만, 상주 변경은 다음 객체에서만 지원됩니다: 디스크립터 힙, 힙, 커밋된 리소스 및 쿼리 힙.

반환 값

형식: HRESULT 이 메서드는 Direct3D 12 반환 코드 중 하나를 반환합니다.

설명

MakeResident는 디스크에서 리소스와 연결된 데이터를 로드하고 리소스의 적절한 메모리 풀에서 메모리를 다시 할당합니다. 이 메서드는 물리적 메모리를 소유하는 객체에서 호출해야 합니다. 이 메서드와 Evict를 사용하여 GPU 비디오 메모리를 관리합니다. D3D11에서는 자동으로 수행되었지만 D3D12에서는 앱에서 수행해야 함에 유의하세요. MakeResidentEvict는 여러 어댑터에서 애플리케이션이 상주 예산을 관리하는 데 도움이 됩니다. MakeResident는 명시적으로 데이터를 페이지 인하고 페이지 아웃을 방지하여 GPU가 데이터에 액세스할 수 있도록 합니다. Evict는 페이지 아웃을 활성화합니다. 일부 GPU 아키텍처는 충분한 GPU 가상 주소 공간이 없어 상주 조작의 이점을 얻지 못합니다. 프로세스당 최대 GPU VA 공간이 상주 예산보다 너무 작거나 대체로 동일한 크기인지 인식하려면 D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORTIDXGIAdapter3::QueryVideoMemoryInfo를 사용하세요. 이러한 아키텍처의 경우 상주 예산은 항상 GPU 가상 주소 공간의 양에 의해 제한됩니다. 이러한 시스템에서는 Evict가 상주 예산을 확보하지 않습니다. 애플리케이션은 상주 예산이 충분해 보이더라도 MakeResident 실패를 처리해야 합니다. 물리적 메모리 조각화 및 어댑터 아키텍처의 특성 때문에 큰 연속된 범위의 활용이 배제될 수 있습니다. 애플리케이션은 다시 시도하기 전에 더 많은 상주 예산을 확보해야 합니다. MakeResident는 참조 카운트가 있으므로, Evict가 효과를 나타내려면 EvictMakeResident와 동일한 횟수만큼 호출해야 합니다. 상주를 지원하는 객체는 생성 중에 상주 상태가 되므로 단일 Evict 호출로 실제로 객체가 축출됩니다. 애플리케이션은 GPU가 비상주 객체를 사용하지 않도록 펜스를 사용해야 합니다. GPU가 객체를 참조하는 명령 목록을 실행하기 전에 MakeResident가 반환되어야 합니다. GPU가 객체를 참조하는 명령 목록의 실행을 완료한 후에 Evict를 호출해야 합니다. 축출된 객체는 여전히 동일한 GPU 가상 주소와 동일한 양의 GPU 가상 주소 공간을 사용합니다. 따라서 리소스 디스크립터 및 기타 GPU 가상 주소 참조는 Evict 이후에 무효화되지 않습니다.

요구 사항

헤더: d3d12_xs.h 또는 d3d12_x.h
라이브러리: d3d12_xs.lib 또는 d3d12_x.lib
지원 플랫폼: XBOX Series 콘솔 및 XBOX One 제품군

함께 보기

ID3D12Device
마지막 수정일 2026년 8월 24일