DXGK_GPUMMUCAPS 구조체(d3dkmddi.h)
DXGK_GPUMMUCAPS 구조는 커널 모드 드라이버에서 가상 메모리 주소 지정 기능을 표현하는 데 사용됩니다.
구문
typedef struct _DXGK_GPUMMUCAPS {
union {
struct {
UINT ReadOnlyMemorySupported : 1;
UINT NoExecuteMemorySupported : 1;
UINT ZeroInPteSupported : 1;
UINT ExplicitPageTableInvalidation : 1;
UINT CacheCoherentMemorySupported : 1;
UINT PageTableUpdateRequireAddressSpaceIdle : 1;
UINT LargePageSupported : 1;
UINT DualPteSupported : 1;
UINT AllowNonAlignedLargePageAddress : 1;
UINT SysMem64KBPageSupported : 1;
UINT InvalidTlbEntriesNotCached : 1;
UINT SysMemLargePageSupported : 1;
UINT CachedPageTables : 1;
#if ...
UINT Reserved : 19;
#elif
UINT Reserved : 20;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#else
UINT Reserved : 24;
#endif
};
UINT Value;
};
DXGK_PAGETABLEUPDATEMODE PageTableUpdateMode;
UINT VirtualAddressBitCount;
UINT LeafPageTableSizeFor64KPagesInBytes;
UINT PageTableLevelCount;
struct {
UINT SourcePageTableVaInTransfer : 1;
UINT Reserved : 31;
} LegacyBehaviors;
} DXGK_GPUMMUCAPS;
멤버
ReadOnlyMemorySupported
1로 설정하면 드라이버는 메모리 페이지에서 읽기 전용 보호를 지원합니다.
NoExecuteMemorySupported
1로 설정하면 드라이버는 메모리 페이지에서 실행 보호를 지원하지 않습니다 .
ZeroInPteSupported
1로 설정하면 GPU는 Zero DXGK_PTE 플래그를 지원합니다. 이는 모든 페이지 테이블 수준에 적용됩니다.
ExplicitPageTableInvalidation
이 플래그는 해제되기 전에 UpdatePageTable 을 통해 페이지 테이블 또는 페이지 디렉터리의 모든 항목을 명시적으로 잘못된 상태로 전환해야 했음을 나타냅니다. 기본적으로 비디오 메모리 관리자는 이러한 항목이 더 이상 필요하지 않은 경우 이전에 유효한 항목을 포함하는 페이지 테이블을 해제할 수 있습니다(예: 큰 GPU 가상 주소 범위를 해제하면 기본 페이지 테이블이 소멸됩니다.)
CacheCoherentMemorySupported
이 플래그는 드라이버가 페이지 테이블 항목에서 CacheCoherent 비트를 지원하고 시스템 메모리로 I/O 일관된 전송을 수행할 수 있음을 나타냅니다.
PageTableUpdateRequireAddressSpaceIdle
이 플래그는 GPU가 페이지 테이블 항목 업데이트 또는 현재 엔진에서 사용 중인 주소 공간에 대한 번역 보기 버퍼 무효화를 지원하지 않음을 나타냅니다. 이 플래그가 설정되면 비디오 메모리 관리자는 페이지 테이블 항목이 수정되고 번역 조회 버퍼가 무효화될 때 주소 공간을 공유하는 모든 컨텍스트가 일시 중단되도록 합니다.
LargePageSupported
1로 설정하면 리프 테이블을 제외한 모든 수준의 페이지 테이블이 큰 페이지(DXGK_PTE LargePage 비트)를 지원합니다.
DualPteSupported
1로 설정하면 GPU는 수준 1 페이지 테이블(4KB 페이지 테이블 및 64KB 페이지 테이블)의 페이지 테이블에 대한 두 개의 포인터를 지원합니다.
AllowNonAlignedLargePageAddress
1로 설정하면 큰 페이지 항목의 실제 주소가 리프 페이지 테이블 검사에 맞지 않는 경우 운영 체제에서 LargePage 플래그를 설정할 수 있습니다.
SysMem64KBPageSupported
InvalidTlbEntriesNotCached
이 비트가 설정되면 드라이버는 잘못된 상태에서 유효한 상태로 전환되는 VA 범위에 대한 FlushTlb 요청에 대한 DxgkDdiBuildPagingBuffer 호출을 받지 않습니다. 하드웨어의 TLB가 잘못된 번역을 캐시하지 않을 것으로 예상됩니다.
WDDM 2.6부터 지원됨
SysMemLargePageSupported
CachedPageTables
Reserved
이 멤버는 예약되어 있으며 사용하면 안 됩니다.
Value
정수로 표현된 구조체의 값입니다.
PageTableUpdateMode
DxgkDdiUpdatePageTable 작업에 사용되는 주소 유형을 정의합니다. DXGK_PAGETABLEUPDATE_GPU_VIRTUAL 설정되면 모든 페이징 작업이 시스템 컨텍스트의 가상 주소 공간에서 발생합니다. 페이지 디렉터리를 로컬 GPU 메모리 세그먼트에 있는 경우 업데이트 모드를 DXGK_PAGETABLEUPDATE_CPU_VIRTUAL 설정할 수 없습니다.
VirtualAddressBitCount
GPU 가상 주소의 비트 수입니다.
LeafPageTableSizeFor64KPagesInBytes
64KB 페이지를 사용하는 경우 리프 페이지 테이블의 크기입니다. 크기는 CPU 페이지 크기의 배수여야 합니다(4096).
PageTableLevelCount
지원되는 페이지 테이블 수준 수입니다. 최소값은 2( DXGK_MIN_PAGE_TABLE_LEVEL_COUNT로 정의됨)입니다. 최대값은 DXGK_MAX_PAGE_TABLE_LEVEL_COUNT.
PageTableLevelCount가 2이면 루트 페이지 테이블의 크기를 동적으로 조정할 수 있으며 페이지 테이블의 크기는 DxgkDdiGetRootPageTableSize를 통해 결정됩니다. PageTableLevelCount가 2보다 크면 모든 페이지 테이블 수준에는 고정 크기가 있으며 DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes를 통해 설명됩니다.
LegacyBehaviors
LegacyBehaviors.SourcePageTableVaInTransfer
1로 설정하면 비디오 메모리 관리자는 할당 제거 중에 TransferVirtual에서 SourcePageTable 주소를 설정합니다.
LegacyBehaviors.Reserved
요구 사항
| 지원되는 최소 클라이언트 | Windows 10 |
| 지원되는 최소 서버 | Windows Server 2016 |
| 머리글 | d3dkmddi.h(D3dkmddi.h 포함) |
피드백
다음에 대한 사용자 의견 제출 및 보기