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

Структура DXGK_SEGMENTDESCRIPTOR содержит сведения о сегменте, который поддерживает драйвер.

Синтаксис

typedef struct _DXGK_SEGMENTDESCRIPTOR {
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
  [out] DXGK_SEGMENTFLAGS Flags;
} DXGK_SEGMENTDESCRIPTOR;

Члены

[out] BaseAddress

Базовый адрес сегмента, определяемый графическим процессором (GPU). Физический адрес выделения, который диспетчер видеопамять, выстраивается в сегменте, назначается адрес GPU, который смещается от базового адреса, указанного BaseAddress .

Диспетчер видеопамяли игнорирует базовый адрес сегментов диафрагмы типа AGP (где флаг битового поля AGP указан в элементе Flags ) и вместо этого использует фактический физический адрес сегмента в апертуре AGP, как определено в шине, где находится GPU. В этом случае драйвер может использовать адреса, созданные диспетчером видеопамяли для выделения напрямую, не требуя перевода.

[out] CpuTranslatedAddress

Базовый адрес сегмента относительно шины, в которую подключен GPU. Например, если GPU подключен к шине PCI, CpuTranslatedAddress — это базовый адрес диапазона, который задается регистром базовых адресов (BAR) PCI. Драйвер указывает этот адрес, только если он указывает сегмент, доступный ЦП, устанавливая флаг битового поля CpuVisible в элементе Flags .

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

Прежде чем диспетчер видеопамяти сопоставляет виртуальный адрес с физическим диапазоном, диспетчер видеопамяти преобразует этот физический адрес на основе представления ЦП шины и сообщает драйверу об операции, чтобы драйвер смог настроить диафрагму для доступа к содержимому сегмента в заданном расположении.

[out] Size

Размер сегмента (в байтах). Этот размер должен быть кратным размеру собственной главной страницы (например, 4 КБ в архитектуре x86).

Для сегментов диафрагмы типа AGP (где флаг битового поля AGP указан в элементе Flags ) диспетчер видеопамяли выделяет как можно больше диафрагмы, поэтому этот элемент игнорируется.

[out] NbOfBanks

Количество банков в сегменте, если используется банковское обслуживание (то есть, если флаг битового поля UseBanking установлен в элементе Flags ).

[out] pBankRangeTable

Массив значений, указывающий диапазоны, разделяющие каждый банк в сегменте. Драйвер указывает этот массив только в том случае, если он также задает флаг битового поля UseBanking в элементе Flags .

Массив указывает конечные адреса первого банка через банк NbOfBanks(то есть конечные смещения в сегменте для каждого банка). Следует отметить следующее.

  • Банки являются непрерывными.

  • Первый банк начинается с нуля смещения сегмента.

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

[out] CommitLimit

Максимальное число байтов, которое можно зафиксировать в сегменте. Для сегмента памяти ограничение фиксации всегда совпадает с размером сегмента, который указывается в элементе Размер . Для сегмента диафрагмы драйвер может ограничить объем памяти, который может быть зафиксирован в сегменте в системах с небольшим объемом физической памяти.

[out] Flags

Структура DXGK_SEGMENTFLAGS, определяющая свойства (в флагах битовых полей) для сегмента.

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

Требования

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

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

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_QUERYSEGMENTOUT

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo

pfnLockCb