Поделиться через


структура DXGK_SEGMENTFLAGS (d3dkmddi.h)

Структура DXGK_SEGMENTFLAGS определяет свойства сегмента, предоставляемые драйвером посредством вызова функции DxgkDdiQueryAdapterInfo .

Синтаксис

typedef struct _DXGK_SEGMENTFLAGS {
  union {
    struct {
      UINT Aperture : 1;
      UINT Agp : 1;
      UINT CpuVisible : 1;
      UINT UseBanking : 1;
      UINT CacheCoherent : 1;
      UINT PitchAlignment : 1;
      UINT PopulatedFromSystemMemory : 1;
      UINT PreservedDuringStandby : 1;
      UINT PreservedDuringHibernate : 1;
      UINT PartiallyPreservedDuringHibernate : 1;
      UINT DirectFlip : 1;
      UINT Use64KBPages : 1;
      UINT ReservedSysMem : 1;
      UINT SupportsCpuHostAperture : 1;
      UINT SupportsCachedCpuHostAperture : 1;
      UINT ApplicationTarget : 1;
      UINT VprSupported : 1;
      UINT VprPreservedDuringStandby : 1;
      UINT EncryptedPagingSupported : 1;
      UINT LocalBudgetGroup : 1;
      UINT NonLocalBudgetGroup : 1;
      UINT PopulatedByReservedDDRByFirmware : 1;
#if ...
      UINT Reserved : 10;
#elif
      UINT Reserved : 11;
#elif
      UINT Reserved : 21;
#else
      UINT Reserved : 22;
#endif
    };
    UINT Value;
  };
} DXGK_SEGMENTFLAGS;

Члены

Aperture

[out] Значение UINT, указывающее, является ли сегмент сегментом диафрагмы, а не сегментом памяти. Сегмент диафрагмы не содержит физических страниц, на которых можно хранить содержимое для выделения. Когда диспетчер видеопамять передает выделение в сегмент памяти, диспетчер памяти передает содержимое выделения из хранилища системной памяти в расположение сегмента. Когда диспетчер видеопамяли перенаправит выделение в сегмент диафрагмы, диспетчер памяти сопоставляет физические страницы резервного хранилища выделения в сегмент.

Если драйвер указывает этот элемент, он также должен реализовать типы операций map-aperture-segment и unmap-aperture-segment для функции DxgkDdiBuildPagingBuffer .

Задание этого элемента эквивалентно установке первого бита 32-разрядного элемента Value (0x00000001).

Agp

[out] Значение UINT, указывающее, является ли сегмент сегментом диафрагмы типа AGP**, который использует часть диафрагмы AGP, которую предоставляет набор микросхем. Диспетчер видеопамяли выделяет страницу для базовой диафрагмы и взаимодействует с драйвером таблицы переназначений графического адреса (GART), чтобы сопоставить и отменить сопоставление памяти для диафрагмы. Так как может существовать только один сегмент AGP, драйвер не должен указывать флаг битового поля AGP с другими флагами битовых полей DXGK_SEGMENTFLAGS.

Задание этого элемента эквивалентно установке второго бита 32-разрядного элемента Value (0x00000002).

CpuVisible

[out] Значение UINT, указывающее, доступен ли сегмент памяти ЦП по адресу, указанному элементом CpuTranslatedAddressструктуры DXGK_SEGMENTDESCRIPTOR , описывающей сегмент памяти.

Этот элемент не имеет значения для сегмента диафрагмы, включая сегмент диафрагмы типа AGP. Единственное исключение возникает, если драйвер отображения пользовательского режима не настроил альтернативный виртуальный адрес для основного выделения (то есть если драйвер не задал UseAlternateVA в элементе Flags структуры D3DDDICB_LOCKFLAGS во время вызова функции pfnLockCb ).

Дополнительные сведения см. в разделе Примечания.

Задание этого элемента эквивалентно установке третьего бита 32-разрядного элемента Value (0x00000004).

UseBanking

[out] Значение UINT, указывающее, делится ли сегмент на банки, которые драйвер использует для предоставления диспетчеру видеопамяти указаний о размещении выделений в сегменте. Драйвер также должен указывать допустимые банковские данные в элементах NbOfBanks и pBankRangeTableструктуры DXGK_SEGMENTDESCRIPTOR , описывающей сегмент.

Задание этого элемента эквивалентно установке четвертого бита 32-разрядного элемента Value (0x00000008).

CacheCoherent

[out] Значение UINT, указывающее, может ли сегмент диафрагмы поддерживать когерентность кэша с кэшируемыми страницами, сопоставленными с диафрагмой. Этот элемент можно задать только с помощью элемента Aperture (то есть CacheCoherent не имеет значения для сегмента памяти).

Задание этого элемента эквивалентно установке пятого бита 32-разрядного элемента Value (0x00000010).

PitchAlignment

[out] Значение UINT, указывающее, должно ли выделение, сопоставленное с сегментом, выравниваться по шагу. Для этого типа сегментов диспетчер видеопамять использует элемент Sizeструктуры DXGK_ALLOCATIONINFO для выделения резервного хранилища для выделения. Однако диспетчер видеопамяли использует член PitchAlignedSize DXGK_ALLOCATIONINFO для выделения ресурсов для сегмента. Выделение, предназначенное для этого типа сегмента, обычно имеет другой размер для резервного хранилища и для сегмента. Если размер резервного хранилища не соответствует размеру сегмента, драйвер должен определить, как правильно перемещать данные в выделении. Этот тип сегмента нельзя использовать для вытеснения.

Задание этого элемента эквивалентно установке шестого бита 32-разрядного элемента Value (0x00000020).

PopulatedFromSystemMemory

[out] Значение UINT, указывающее, заполняется ли сегмент памяти из системной памяти, выделенной драйвером во время инициализации. Если сегмент памяти заполняется из системной памяти, зарезервированной BIOS и недоступной операционной системе (то есть операционная система не учитывает эту системную память, когда операционная система сообщает об общем объеме системной памяти), драйвер не должен устанавливать этот флаг. Этот флаг является недопустимым и игнорируется в сегментах диафрагмы.

Задание этого элемента эквивалентно установке седьмого бита 32-разрядного элемента Value (0x00000040).

PreservedDuringStandby

[out] Значение UINT, указывающее, сохраняется ли сегмент при переходе в режим ожидания системы питания.

Дополнительные сведения о вариантах перехода на питание см. в разделе Примечания.

Задание этого элемента эквивалентно установке восьмого бита 32-разрядного элемента Value (0x00000080).

Поддерживается начиная с Windows 8.

PreservedDuringHibernate

[out] Значение UINT, указывающее, сохраняется ли сегмент при переходе в состояние гибернации системы. Не устанавливайте этот флаг, если только не задан элемент PreservedDuringStandby . Дополнительные сведения о вариантах перехода на питание см. в разделе Примечания.

Задание этого элемента эквивалентно установке девятого бита 32-разрядного элемента Value (0x00000100).

Поддерживается начиная с Windows 8.

PartiallyPreservedDuringHibernate

[out] Значение UINT, указывающее, сохраняется ли сегмент частично при переходе в состояние гибернации системы. Не устанавливайте этот флаг, если только не задан элемент PreservedDuringStandby . Дополнительные сведения о вариантах перехода на питание см. в разделе Примечания.

Задание этого элемента эквивалентно установке десятого бита 32-разрядного элемента Value (0x00000200).

Поддерживается начиная с Windows 8.

DirectFlip

[out] Значение UINT, указывающее, поддерживает ли сегмент выделение прямого перелистывания. В этом случае драйвер должен убедиться, что выделения direct Flip можно закрепить и отсканировать из этого сегмента.

Установка этого элемента эквивалентна установке одиннадцатого бита 32-разрядного элемента Value (0x00000400).

Поддерживается начиная с Windows 8.

Use64KBPages

[out] Если этот параметр задан, сегмент памяти GPU поддерживает 64 КБ страниц. В противном случае поддерживаются страницы размером 4 КБ. Когда драйвер устанавливает ограничение и выделение можно выстраивать в сегмент, выравнивание выделения, возвращаемое драйвером режима ядра из DXGK_ALLOCATIONINFO, должно быть кратно 64 КБ.

Поддерживается начиная с Windows 10.

ReservedSysMem

[out] Зарезервировано для использования в системе и не должно задаваться драйвером режима ядра.

Поддерживается начиная с Windows 10.

SupportsCpuHostAperture

[out] Если этот параметр задан, сегмент можно сопоставить с помощью диафрагмы узла ЦП. Этот флаг нельзя использовать в сочетании с флагом CpuVisible .

Поддерживается начиная с Windows 10.

SupportsCachedCpuHostAperture

[out] Если этот параметр задан, это означает, что оборудование поддерживает согласованную диафрагму узла ЦП кэша ЦП. Кроме того, необходимо установить флаг SupportsCpuHostAperture . Флаг обычно устанавливается программными драйверами эмуляции GPU.

Поддерживается начиная с Windows 10.

ApplicationTarget

[out] Если этот параметр задан, он указывает, что этот сегмент должен быть ориентирован на бюджеты приложений.

Поддерживается начиная с Windows 10.

VprSupported

[out] Если этот параметр задан, указывает, что поддерживается область VPR.

VprPreservedDuringStandby

[out] Если этот параметр задан, указывает, что содержимое VDR сохраняется во время ожидания.

EncryptedPagingSupported

[out] Если этот параметр задан, указывает, что защищенные оборудованием выделения шифруются во время разбиения по страницам.

LocalBudgetGroup

[out] Если задано значение , указывает, что этот сегмент учитывается по отношению к бюджетной группе сегментов локальной памяти.

NonLocalBudgetGroup

[out] Если задано значение , указывает, что этот сегмент учитывается по отношению к бюджетной группе сегментов нелокейной памяти.

PopulatedByReservedDDRByFirmware

[out] Если этот параметр задан, указывает, что этот сегмент заполняется из зарезервированной системной памяти DDR по встроенному ПО. Доступно начиная с Windows Server 2022 (WDDM 2.9).

Reserved

[out] Этот элемент зарезервирован и должен иметь нулевое значение.

Value

[out] Член объединения, который DXGK_SEGMENTFLAGS содержит, который может содержать 32-разрядное значение, определяющее свойства сегмента.

Комментарии

Драйвер может указать свойства сегмента, задав биты в 32-разрядном элементе Value или задав отдельные члены структуры в объединении, которое содержит DXGK_SEGMENTFLAGS.

Обратите внимание, что для сегмента диафрагмы типа AGP драйвер должен устанавливать исключительно элемент Agp структуры в объединении, которое содержит DXGK_SEGMENTFLAGS. Хотя сегмент диафрагмы типа AGP является диафрагмой и видимым для ЦП, если установлены другие члены, адаптер не сможет инициализироваться.

В особом случае, когда при выделении используется сегмент диафрагмы на общем первичном выделении (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationType имеет значение D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE) и DXGK_ALLOCATIONINFOFLAGS. UseAlternateVA не задано, драйвер должен использовать основное выделение с поддержкой разделов (DXGK_VIDMMCAPS.SectionBackedPrimary задан) при вызове функции DxgkDdiQueryAdapterInfo драйвера. Используя основной сервер с поддержкой разделов, можно избежать ограничений CpuVisible для сегмента диафрагмы.

Вы можете избежать ограничений CpuVisible для сегмента диафрагмы, используя общее основное выделение с поддержкой разделов. В этом случае используйте сегмент диафрагмы для общего первичного выделения (DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA.StandardAllocationType имеет значение D3DKMDT_STANDARDALLOCATION_SHAREDPRIMARYSURFACE), не устанавливайте DXGK_ALLOCATIONINFOFLAGS. ИспользуйтеAlternateVA и используйте основное выделение на основе разделов (задайте DXGK_VIDMMCAPS.SectionBackedPrimary) при вызове функции DxgkDdiQueryAdapterInfo драйвера.

Оптимизированные параметры ожидания

Сочетание значений для членов PreservedDuringStandby, PreservedDuringHibernate и PartiallyPreservedDuringHibernate определяет, очищается ли сегмент от его содержимого при переходе системы в состояние системы с низким энергопотреблением (резервный), как показано ниже.

Сохраняется в режиме ожидания Сохраняется во время гибернации Частично сохраняется во время гибернации Состояние ожидания Состояние гибернации
1 1 1 недопустимо недопустимо
1 1 0 не очищается не очищается
1 0 1 не очищается частично очищен
1 0 0 не очищается Очищены
0 1 1 недопустимо недопустимо
0 1 0 недопустимо недопустимо
0 0 1 недопустимо недопустимо
0 0 0 Очищены Очищены

Операционная система не распознает сочетания в этой таблице, помеченные как недопустимые.

Если гибридный спящий режим включен, система действует так, как будто она находится в режиме гибернации: она очищает сегменты, которые не сохраняются во время гибернации, даже если она переходит в состояние с низким энергопотреблением.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows Vista.
Верхняя часть d3dkmddi.h (включая D3dkmddi.h)

См. также раздел

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTDESCRIPTOR3

DxgkDdiBuildPagingBuffer

DxgkDdiQueryAdapterInfo