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

Структура DXGK_ALLOCATIONINFO описывает параметры для создания выделения.

Синтаксис

typedef struct _DXGK_ALLOCATIONINFO {
  VOID                       *pPrivateDriverData;
  UINT                       PrivateDriverDataSize;
  UINT                       Alignment;
  SIZE_T                     Size;
  SIZE_T                     PitchAlignedSize;
  DXGK_SEGMENTBANKPREFERENCE HintedBank;
  DXGK_SEGMENTPREFERENCE     PreferredSegment;
  UINT                       SupportedReadSegmentSet;
  UINT                       SupportedWriteSegmentSet;
  UINT                       EvictionSegmentSet;
  union {
    UINT MaximumRenamingListLength;
    UINT PhysicalAdapterIndex;
  };
  HANDLE                     hAllocation;
  union {
    DXGK_ALLOCATIONINFOFLAGS         Flags;
    DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 FlagsWddm2;
  };
  DXGK_ALLOCATIONUSAGEHINT   *pAllocationUsageHint;
  UINT                       AllocationPriority;
  DXGK_ALLOCATIONINFOFLAGS2  Flags2;
} DXGK_ALLOCATIONINFO;

Члены

pPrivateDriverData

[in] Указатель на блок частных данных. Эти данные для каждого выделения отличаются от элемента pPrivateDriverData в структуре DXGKARG_CREATEALLOCATION . Драйвер дисплея в пользовательском режиме может передавать эти данные в драйвер мини-порта дисплея. Однако если подсистема ядра графики Microsoft DirectX передает эти данные для описания общей основной или другой запираемой поверхности, данные передаются как первый элемент массива в элементе pAllocationInfo DXGKARG_CREATEALLOCATION.

PrivateDriverDataSize

[in] Размер (в байтах) блока частных данных в pPrivateDriverData.

Alignment

[out] Требуемое выравнивание (в байтах) для выделения.

Size

[out] Размер в байтах, необходимый для выделения. Значение размера увеличивается до кратного размера собственной главной страницы (например, 4 КБ в архитектуре x86). Драйвер мини-порта дисплея указывает размер выделения для диспетчера видеопамять.

PitchAlignedSize

[out] Размер выделения (в байтах) при расположении в сегменте, выровненном по шагу, который задается флагом битового поля PitchAlignment в элементе Flagsструктуры DXGK_SEGMENTDESCRIPTOR для сегмента. Если выделение не поддерживается в сегменте с выравниванием по шагу (графические процессоры [GPU] обычно не поддерживают этот тип сегмента), драйвер должен задать значение в PitchAlignedSize равным нулю. Если драйвер указывает ненулевое значение в PitchAlignedSize, значение должно быть больше или равно значению в элементе Size .

HintedBank

[out] Структура DXGK_SEGMENTBANKPREFERENCE , которая указывает настройки банковского заказа, которые драйвер мини-порта дисплея запрашивает, чтобы диспетчер видеопамяли использовал для распределения по страницам. Если этот элемент указан, диспетчер видеопамять использует банковские сведения о наиболее предпочтительном сегменте, который задается элементом SegmentId0структуры DXGK_SEGMENTPREFERENCE , указанной элементом PreferredSegment .

PreferredSegment

[out] Структура DXGK_SEGMENTPREFERENCE , указывающая идентификаторы предпочтительных сегментов, которые драйвер мини-порта дисплея запрашивает, чтобы диспетчер видеопамяли использовал для выделения выделения.

SupportedReadSegmentSet

[out] Идентификаторы сегментов, которые драйвер мини-порта отображения может задать в элементе PreferredSegment для операций чтения. Сегменты, которые указывают эти идентификаторы, — это сегменты, которые драйвер мини-порта дисплея запрашивает, чтобы диспетчер видеопамяти использовал для выделения ресурсов для операций чтения, независимо от производительности. Задание бита 0 означает, что поддерживается первый сегмент, значение бита 1 означает, что поддерживается второй сегмент и т. д.

Драйвер мини-порта дисплея может задавать параметры только для сегментов, которые поддерживаются для операций чтения. Диспетчер видеопамять утверждает, если драйвер пытается задать параметры для неподдерживаемых сегментов в элементе PreferredSegment .

SupportedWriteSegmentSet

[out] Идентификаторы сегментов, которые драйвер мини-порта дисплея может задать в элементе PreferredSegment для операций записи. Сегменты, которые указывают эти идентификаторы, — это сегменты, которые драйвер мини-порта дисплея запрашивает, чтобы диспетчер видеопамяти использовал для выделения ресурсов для операций записи независимо от производительности. Задание бита 0 означает, что поддерживается первый сегмент, значение бита 1 означает, что поддерживается второй сегмент и т. д.

Драйвер мини-порта дисплея может задавать параметры только для сегментов, которые поддерживаются для операций записи. Диспетчер видеопамять утверждает, если драйвер пытается задать параметры для неподдерживаемых сегментов в элементе PreferredSegment .

EvictionSegmentSet

[out] Идентификаторы сегментов, которые можно использовать для вытеснения. Задание бита 0 означает, что первый сегмент можно использовать для вытеснения, значение бита 1 означает, что второй сегмент может использоваться для вытеснения и т. д.

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

MaximumRenamingListLength

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

Поддержка этого члена началась с Windows 10 и WDDM версии 2.

PhysicalAdapterIndex

[out] Индекс физического адаптера.

Поддержка этого члена началась с Windows 10 и WDDM версии 2.

hAllocation

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

Flags

[out] Структура DXGK_ALLOCATIONINFOFLAGS , определяющая свойства для выделения в флагах битовых полей. Эти свойства указывают тип создаваемого выделения. Драйвер мини-порта дисплея задает эти флаги для диспетчера видеопамяли. Драйверы, предназначенные для любой версии WDDM, более ранней, чем WDDM 2.0, должны использовать флаги; Драйверы, предназначенные для любой версии >WDDM = WDDM 2.0, должны использовать FlagsWddm2.

FlagsWddm2

[out] Структура DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 , определяющая свойства для выделения в флагах битовых полей. Эти свойства указывают тип создаваемого выделения. Драйвер мини-порта дисплея задает эти флаги для диспетчера видеопамяли. Драйверы, предназначенные для любой версии >WDDM = WDDM 2.0, должны использовать FlagsWddm2. Драйверы, предназначенные для любой версии WDDM, более ранней, чем WDDM 2.0, должны использовать флаги.

pAllocationUsageHint

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

AllocationPriority

[out] Значение UINT, указывающее начальный уровень приоритета выделения.

Драйвер определяет соответствующий уровень приоритета для каждого выделения. Дополнительные сведения об уровнях приоритета см. в разделе Примечания функции pfnSetPriorityCb . Если уровень приоритета для распределения не является проблемой для драйвера, драйвер должен задать для всех уровней приоритета D3DDDI_ALLOCATIONPRIORITY_NORMAL. Обратите внимание, что 0 является недопустимым начальным приоритетом выделения.

Flags2

[out] Структура DXGK_ALLOCATIONINFOFLAGS2 , содержащая дополнительные свойства для выделения. Поддерживается начиная с Windows 11 (WDDM 3.0).

Комментарии

В WDDM версии 2 структура DXGK_ALLOCATIONINFO была изменена таким образом, что набор сегментов чтения и записи больше не дифференцируется. Во время создания surface диспетчер видеопамяти игнорирует значение SupportedReadSegmentSet и использует только набор сегментов, предоставляемый SupportedWriteSegmentSet. Драйверы должны гарантировать, что это значение точно представляет набор сегментов, который может использоваться выделением по назначению.

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

Требования

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

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

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFOFLAGS

DXGK_ALLOCATIONLIST

DXGK_ALLOCATIONUSAGEHINT

DXGK_SEGMENTBANKPREFERENCE

DXGK_SEGMENTDESCRIPTOR

DXGK_SEGMENTPREFERENCE

DxgkDdiCreateAllocation

DxgkDdiRender

pfnAllocateCb