Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура 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 поддерживает флаг Ноль DXGK_PTE. Это относится ко всем уровням таблиц страницы.
ExplicitPageTableInvalidation
Указывает, что все записи таблицы страницы или каталога страницы должны быть явно помещены в недопустимое состояние с помощью UpdatePageTable перед освобождением. По умолчанию диспетчер памяти видео может освободить таблицу страниц, содержащую ранее допустимые записи, если эти записи больше не нужны (например, освобождение большого диапазона виртуальных адресов GPU, что приводит к уничтожению базовых таблиц страниц).
Заметка
Эти флаги обычно используются драйвером программного обеспечения, который должен эмулировать таблицу страниц и должен отслеживать сведения на основе записи таблицы страницы и требовать четкой пары init/deinit для всех обновлений записи таблицы страницы.
CacheCoherentMemorySupported
Указывает, что драйвер поддерживает CacheCoherent битах в записи таблицы страницы и может выполнять последовательную передачу ввода-вывода в системную память.
PageTableUpdateRequireAddressSpaceIdle
Указывает, что GPU не поддерживает обновление записей таблицы страницы или недопустимый буфер перевода в сторону адресного пространства, которое в настоящее время используется подсистемой. Если эти флаги заданы, диспетчер памяти видео гарантирует, что все контекстные ресурсы, совместно использующие адресное пространство, приостановлены при изменении записей таблицы страниц и при недопустимом изменении буфера перевода в сторону.
LargePageSupported
Если задано значение 1, все уровни таблиц страниц, кроме конечной, поддерживают большие страницы (LargePage бит в DXGK_PTE).
DualPteSupported
Если задано значение 1, GPU поддерживает два указателя на таблицы страниц на уровне одной страницы (4 КБ таблицы страницы и 64 КБ страницы).
AllowNonAlignedLargePageAddress
Если задано значение 1, операционная система может задать флаг LargePage, если физический адрес большой страницы не соответствует охвату конечной страницы. Доступно начиная с Windows 10 версии 1607 (WDDM 2.1).
SysMem64KBPageSupported
Драйвер предоставляет управление сегментами памяти в 64 КБ. Доступно начиная с Windows 10 версии 1607 (WDDM 2.1).
InvalidTlbEntriesNotCached
Если этот бит задан, драйвер не получит вызовы к DxgkDdiBuildPagingBuffer для запросов FlushTlb для диапазонов VA, которые переходят из недопустимого в допустимое состояние. Ожидается, что подсистема балансировки нагрузки оборудования не кэширует недопустимые переводы
Доступно начиная с Windows 10 версии 1903 (WDDM 2.6).
SysMemLargePageSupported
Драйвер предоставляет поддержку больших страниц. Доступно начиная с Windows Server 2022 (WDDM 2.9).
CachedPageTables
Поддерживаются кэшированные таблицы страниц. Доступно начиная с версии WDDM 3.1.
Reserved
Зарезервировано для использования системы; не используйте.
Value
Значение структуры объединения, выраженное как целое число.
PageTableUpdateMode
Определяет тип адресов, используемых в операциях DxgkDdiUpdatePageTable. При установке DXGK_PAGETABLEUPDATE_GPU_VIRTUAL все операции разбиения по страницам будут выполняться в виртуальном адресном пространстве контекста системы. Если каталоги страниц находятся в локальном сегменте памяти GPU, режим обновления не может быть установлен на DXGK_PAGETABLEUPDATE_CPU_VIRTUAL.
VirtualAddressBitCount
Количество битов в виртуальном адресе GPU.
LeafPageTableSizeFor64KPagesInBytes
Размер конечной таблицы страницы при использовании 64 КБ страниц. Размер страницы ЦП должен быть кратным (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, диспетчер памяти видео задает адрес SourcePageTable в TransferVirtual во время вытеснения выделения.
LegacyBehaviors.Reserved
Скрытный; не используйте.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows 10 |
| минимальный поддерживаемый сервер | Windows Server 2016 |
| заголовка | d3dkmddi.h (include D3dkmddi.h) |