다음을 통해 공유


변경 내용 제공 및 회수

WDDM(Windows 디스플레이 드라이버 모델) v2의 경우 제품회수 에 대한 요구 사항이 완화되고 있습니다. 사용자 모드 드라이버는 더 이상 제품을 사용하고 내부 할당에서 회수할 필요가 없습니다. 유휴/일시 중단된 애플리케이션은 Microsoft DirectX 11.1에 도입된 TrimAPI를 사용하여 드라이버 내부 리소스를 제거합니다.

제품 및 회수는 API 수준에서 계속 지원되며 사용자 모드 드라이버는 커널에 리소스를 제공하거나 회수하기 위해 애플리케이션 요청을 전달해야 합니다. WDDM v2에서 제공 할당은 할당 목록을 통해 더 이상 지원되지 않으므로 사용자 모드 드라이버는 제품 및 회수를 구현하는 방식을 변경해야 합니다.

애플리케이션에서 제공하는 리소스는 현재 모든 컨텍스트에서 빌드 중인 DMA(직접 메모리 액세스) 버퍼에 참조가 없는 경우 OfferCb를 호출하여 사용자 모드 드라이버에서 즉시 제공해야 합니다. 리소스에 빌드 중인 DMA 버퍼에 보류 중인 참조가 있는 경우 사용자 모드 드라이버는 RenderCb 를 통해 종속 DMA 버퍼가 제출될 때까지 OfferCb에 대한 호출을 연기해야 합니다. 그래픽 커널은 리소스를 제공하는 것이 안전할 때까지 비차단 방식으로 작업을 연기합니다. 따라서 사용자 모드 드라이버는 GPU(그래픽 처리 장치)에서 종속 작업이 완료될 때까지 OfferCb 호출을 연기해야 하는 것에 대해 걱정할 필요가 없습니다.

회수를 호출하면 상주 요구 사항 목록에 있는 경우 할당 페이지가 자동으로 표시됩니다(즉, 사용자 또는 드라이버가 MakeResidentCb 호출을 통해 할당을 상주하도록 요청했습니다). ReclaimAllocations2Cb의 경우 이 작업은 비동기적이며 페이징 펜스가 반환되며 MakeResidentCb에서 반환된 펜스와 동일한 방식으로 처리되어야 합니다. 할당은 펜스가 신호를 받을 때 GPU에 상주하고 사용할 수 있도록 보장됩니다.

ReclaimAllocationsCb/ReclaimAllocations2Cb에서 반환된 직후 할당의 백업 저장소가 유효하도록 보장되고 할당이 Lock2Cb를 통해 CPU 액세스 아래에 배치될 수 있습니다. 드라이버는 페이징 울타리에서 기다릴 필요가 없습니다.