다음을 통해 공유


할당 이름 바꾸기 요청

사용자 모드 디스플레이 드라이버는 응용 프로그램이 표면을 잠그는 요청의 일부로 표면의 콘텐츠를 삭제하도록 표시할 때(예: 꼭짓점 버퍼) 비디오 메모리 관리자가 표면과 연결된 할당의 이름을 바꾸도록 요청해야 합니다. Microsoft Direct3D 런타임은 삭제 비트 필드 플래그를 전달하여 더 이상 표면의 현재 콘텐츠가 필요하지 않음을 나타냅니다. 드라이버는 현재 할당이 유휴 상태가 될 때까지 애플리케이션 스레드를 중단하지 않고 화면의 콘텐츠를 보유하는 현재 할당이 사용 중인 경우 비디오 메모리 관리자가 잠금 요청을 처리하기 위해 새 할당을 할당하도록 요청할 수 있습니다.

사용자 모드 표시 드라이버는 드라이버가 pfnLockCb 함수 호출에서 D3DDDICB_LOCKFLAGS 구조체의 무시 멤버를 설정하는 경우 비디오 메모리 관리자의 할당 이름을 바꾸도록 요청합니다. 비디오 메모리 관리자는 할당 이름을 바꿔야 하는지 또는 할당이 현재 사용 중인지 여부와 현재 메모리 상태에 따라 할당이 유휴 상태가 될 때까지 애플리케이션이 중단되도록 해야 하는지를 결정합니다. 이름이 바뀐 각 할당에 대해 비디오 메모리 관리자는 할당 잠금에 연속적으로 사용되는 할당 목록을 유지 관리합니다. 비디오 메모리 관리자는 애플리케이션이 할당 콘텐츠를 삭제할 때마다 목록을 순환합니다. 목록의 길이는 애플리케이션 요구 사항 및 메모리 압력에 따라 결정됩니다. 비디오 메모리 관리자는 잠금 요청에서 애플리케이션 스레드가 중단되는 것을 방지하기 위해 목록을 충분히 길게 유지하려고 시도합니다. 그러나 메모리 압력에서 비디오 메모리 관리자는 추가 메모리 압력을 유발하지 않도록 목록을 트리밍할 수 있습니다.

할당에 대한 이름 바꾸기 목록의 길이를 제한하기 위해 드라이버는 할당을 만들 때 DXGK_ALLOCATIONINFO 구조체의 MaximumRenamingListLength 멤버를 설정합니다. 드라이버가 MaximumRenamingListLength 를 0이 아닌 값으로 설정하는 경우 비디오 메모리 관리자는 드라이버에 의해 부과된 제한을 초과하지 않고 이름 바꾸기 목록의 적절한 길이를 결정합니다. 드라이버가 MaximumRenamingListLength 를 0으로 설정하면 메모리 관리자는 성능 향상에 필요한 크기로 이름 바꾸기 목록의 크기를 늘릴 수 있습니다.

사용자 모드 표시 드라이버가 D3DDDICB_LOCKFLAGS무시 멤버를 설정하는 경우 비디오 메모리 관리자는 디스플레이 미니포트 드라이버를 호출하여 원래 할당에 대한 추가 할당을 할당하지 않습니다. 비디오 메모리 관리자는 원래 할당의 생성 매개 변수를 사용하여 모든 추가 할당을 만듭니다. 디스플레이 미니포트 드라이버의 관점에서 동일한 할당은 잠재적으로 여러 개의 동시 세그먼트 위치에서 페이징됩니다.