D3DKMTUpdateGpuVirtualAddress 함수(d3dkmthk.h)

D3DKMTUpdateGpuVirtualAddress 는 타일 리소스의 컨텍스트에서 사용되는 특수 작업입니다. 이를 통해 드라이버는 단일 페이지 테이블 업데이트 일괄 처리에서 프로세스 가상 주소 공간에 적용할 여러 매핑 작업을 지정할 수 있습니다.

구문

NTSTATUS D3DKMTUpdateGpuVirtualAddress(
  [in] const D3DKMT_UPDATEGPUVIRTUALADDRESS *unnamedParam1
);

매개 변수

[in] unnamedParam1

작업을 설명하는 D3DKMT_UPDATEGPUVIRTUALADDRESS 구조체에 대한 포인터입니다.

반환 값

반환 코드 설명
STATUS_SUCCESS 디바이스 컨텍스트가 성공적으로 만들어졌습니다.
STATUS_INVALID_PARAMETER 매개 변수의 유효성이 검사되었고 잘못된 것으로 확인되었습니다.

이 함수는 다른 NTSTATUS 값을 반환할 수도 있습니다.

설명

모든 작업의 GPU(그래픽 처리 장치) 가상 주소 범위(복사 작업의 원본 제외)는 ReserveGpuVirtualAddressRange를 호출하여 가져온 단일 가상 주소 범위에 속해야 합니다. 마찬가지로 복사 작업에서 모든 원본의 가상 주소 범위는 ReserveGpuVirtualAddressRange를 호출하여 얻은 단일 가상 주소 범위에 속해야 합니다.

페이지 테이블 업데이트는 지정된 렌더링 컨텍스트 전용 페이징 컨텍스트에서 실행되며, 지정된 모니터링된 펜스 개체에 대해 연결된 렌더링 컨텍스트 신호 FenceValue 후에만 GPU에서 실행됩니다. 페이지 테이블 업데이트가 완료되면 페이징 컨텍스트는 모니터링되는 펜스 개체를 FenceValue+1로 신호로 표시하여 렌더링 컨텍스트가 페이지 테이블 업데이트와 긴밀하게 연동되도록 합니다.

업데이트 작업의 가상 주소 범위는 교차할 수 있습니다. 작업은 제출된 순서대로 적용됩니다.

단일 UpdateVirtualAddress 호출에서:

  • 매핑 작업의 모든 가상 주소 범위와 복사 작업의 대상 범위는 동일한 예약된(0) 범위에 속해야 합니다.
  • 복사 작업의 원본 가상 주소 범위는 다른 예약된(0) 범위에서 사용할 수 있습니다.
  • 모든 복사 작업의 원본 가상 주소 범위는 동일한 예약된(0) 범위에 속해야 합니다.

드라이버는 렌더링 펜스 뒤에 큐에 대기되는 많은 UpdateGpuVirtualAddress 호출을 제출할 수 있습니다. 대기 중인 업데이트 작업 수가 128을 초과하면 비디오 메모리 관리자가 이전 작업을 처리할 때까지 호출 스레드가 차단됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
대상 플랫폼 유니버설
헤더 d3dkmthk.h(D3dkmthk.h 포함)
라이브러리 Gdi32.lib
DLL Gdi32.dll

추가 정보

D3DKMT_UPDATEGPUVIRTUALADDRESS

ReserveGpuVirtualAddressRange