DXGK_PTE 结构 (d3dukmdt.h)
PTE) (页表条目提供页面的物理地址和其他属性。 PTE 的确切格式取决于硬件实现。
语法
typedef struct _DXGK_PTE {
union {
struct {
ULONGLONG Valid : 1;
ULONGLONG Zero : 1;
ULONGLONG CacheCoherent : 1;
ULONGLONG ReadOnly : 1;
ULONGLONG NoExecute : 1;
ULONGLONG Segment : 5;
ULONGLONG LargePage : 1;
ULONGLONG PhysicalAdapterIndex : 6;
ULONGLONG PageTablePageSize : 2;
ULONGLONG SystemReserved0 : 1;
ULONGLONG Reserved : 44;
};
ULONGLONG Flags;
};
union {
ULONGLONG PageAddress;
ULONGLONG PageTableAddress;
};
} DXGK_PTE;
成员
Valid
设置后,这表示该条目有效。 除非设置了 Zero 标志,否则访问无效条目会导致无法恢复的地址错误。
Zero
设置为 Valid = 1 时,对条目的访问会导致返回内存访问的零值。 这用于支持平铺资源。
从 Windows 10 开始支持。
CacheCoherent
设置后,这表示内存页在 CPU 和 GPU 之间缓存一致。
ReadOnly
设置后,这表示内存页是只读的。
NoExecute
设置后,这表示内存页包含数据,不应将其视为可执行命令。
从 Windows 10 开始支持。
Segment
从零开始的 GPU 内存段标识符,对应内存页所在的位置。 段 0 是为系统内存保留的。
LargePage
仅当内核模式驱动程序设置 DXGK_VIRTUALADDRESSCAPS::GpuMmu 时,才能设置 位。LargePageSupported cap。 设置页表地址 (PageTableAddress + SegmentId) 是分配的内存地址。 分配大小等于虚拟地址范围,由较低的页表级别涵盖。 无法为叶页表设置此标志。
从 Windows 10 开始支持。
PhysicalAdapterIndex
在链接的显示适配器配置中定义物理适配器索引。 一个物理适配器上的页表的 PTE 可以指向另一个物理适配器上的内存。
从 Windows 10 开始支持。
PageTablePageSize
对于级别 1 页表条目,定义叶页表 PTE 的页面大小。 该值由 DXGK_PTE_PAGE_SIZE 枚举器提供。 当支持双 PTE 时,应忽略此值。
从 Windows 10 开始支持。
SystemReserved0
Reserved
保留供系统使用,并将设置为零。
Flags
结构的未屏蔽值。
PageAddress
内存页的 64 位物理地址的高 52 位。 低 12 位为零。 地址是段开头的偏移量(由 Segment 或系统内存地址定义)。
PageTableAddress
较低级别页表的 64 位物理地址的高 52 位。 低 12 位为零。 地址是段开头的偏移量(由 Segment 或系统内存地址定义)。
从 Windows 10 开始支持。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows 7 及更高版本的 Windows 操作系统中可用。 |
标头 | d3dukmdt.h (包括 D3dkmddi.h) |