다음을 통해 공유


DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE 구조체(d3dkmddi.h)

DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE 페이지 테이블 업데이트 작업의 일부로 사용됩니다.

구문

typedef struct _DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE {
  UINT                        PageTableLevel;
  HANDLE                      hAllocation;
  DXGK_PAGETABLEUPDATEADDRESS PageTableAddress;
  DXGK_PTE                    *pPageTableEntries;
  UINT                        StartIndex;
  UINT                        NumPageTableEntries;
  UINT                        Reserved0;
  DXGK_UPDATEPAGETABLEFLAGS   Flags;
  UINT64                      DriverProtection;
  UINT64                      AllocationOffsetInBytes;
  HANDLE                      hProcess;
  DXGK_PAGETABLEUPDATEMODE    UpdateMode;
  DXGK_PTE                    *pPageTableEntries64KB;
  D3DGPU_VIRTUAL_ADDRESS      FirstPteVirtualAddress;
} DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE;

멤버

PageTableLevel

업데이트되는 페이지 테이블의 수준입니다.

hAllocation

페이지 테이블 항목에 의해 매핑되는 할당의 커널 모드 드라이버 핸들입니다. 핸들은 DxgkDdiCreateAllocation의 커널 모드 드라이버에 의해 반환됩니다. 커널 모드 드라이버 핸들(페이지 테이블, 페이지 디렉터리 등)이 없는 할당의 경우 핸들은 NULL 일 수 있습니다.

PageTableAddress

업데이트할 페이지 테이블의 주소입니다. DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_CPU_VIRTUAL CPU 가상 주소는 CpuVirtual 필드에 있습니다. DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_VIRTUAL 경우 GPU 가상 주소는 GpuVirtual 필드에 있습니다. DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_PHYSICAL 경우 GPU 물리적 주소는 GpuPhysical 필드에 있습니다.

pPageTableEntries

복사해야 하는 항목입니다. pPageTableEntries 배열의 인덱스 0은 드라이버 페이지 테이블 항목 배열의 StartIndex에 해당합니다.

StartIndex

항목을 복사해야 하는 페이지 테이블 내의 페이지 테이블 항목의 시작 인덱스입니다. 페이지 테이블 항목 배열 인덱스는 0부터 시작합니다.

NumPageTableEntries

복사해야 하는 항목 수입니다.

Reserved0

이 멤버는 예약되어 있으며 0으로 설정해야 합니다.

Flags

업데이트 작업을 설명하는 구조체를 DXGK_UPDATEPAGETABLEFLAGS.

DriverProtection

MapGpuVirtualAddressRangeCb에서 UMD에 의해 전달됩니다.

AllocationOffsetInBytes

hAllocation이 NULL이 아닌 경우 이 필드는 할당 시작부터 이 업데이트 작업의 대상이 되는 첫 번째 페이지까지 상대 오프셋(바이트)을 지정합니다. 업데이트가 hAllocation의 여러 페이지를 대상으로 하는 경우 해당 페이지는 순차적으로 보장됩니다. 예를 들어 비디오 메모리 관리자는 hAllocation에서 GPU 가상 주소를 4,5,6,7페이지로 업데이트할 수 있습니다. 드라이버에 순차적이지 않은 페이지(예: 4,5,7)를 대상으로 하는 단일 업데이트 작업이 표시되는 경우는 없습니다. 페이지는 할당의 관점에서 순차적으로 보장되지만 메모리에서 물리적으로 연속되지 않을 수 있습니다.

hProcess

페이지 테이블 항목이 업데이트되는 프로세스에 대한 커널 모드 드라이버 프로세스 핸들입니다. DxgkDdiCreateProcess에서 반환된 값입니다.

UpdateMode

PageTableAddress의 의미를 정의합니다. 페이징 프로세스에 대한 페이지 테이블을 초기화할 때 업데이트 모드는 항상 DXGK_PAGETABLEUPDATE_CPU_VIRTUALpDmaBufferNULL로 설정됩니다. 이 경우 드라이버는 페이지 테이블을 즉시 업데이트해야 합니다. 다른 경우에는 UpdateModeDXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateMode에 지정된 값으로 설정됩니다.

리프 페이지 테이블에 대한 페이지 테이블 항목을 업데이트할 때 비디오 메모리 관리자는 각 항목이 4KB 페이지를 차지한다고 가정합니다. GPU 페이지가 더 큰 경우(4KB * 2n) 비디오 메모리 관리자는 배열에 GPU 페이지 내의 항목을 제공합니다. 커널 모드 드라이버는 GPU 페이지의 시작을 가리키는 페이지 테이블 항목만 초기화해야 할 수 있습니다. 다음 그림에서는 GPU 페이지가 16KB인 경우를 보여 줍니다.

pPageTableEntries64KB

64KB 페이지 테이블에서 복사해야 하는 항목입니다. pPageTableEntries 배열의 인덱스 0은 드라이버 페이지 테이블 항목 배열의 StartIndex에 해당합니다. 배열은 DXGK_GPUMMUCAPS::D PteSupported 상한이 설정된 경우에만 사용해야 합니다.

FirstPteVirtualAddress

첫 번째 업데이트된 페이지 테이블 항목에 의해 매핑되는 GPU 가상 주소입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
머리글 d3dkmddi.h(D3dkmddi.h 포함)