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


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

Структура D3DKMDT_FENCESTORAGESURFACEDATA описывает сегменты памяти, в которых должно размещаться хранилище забора.

Синтаксис

typedef struct _D3DKMDT_FENCESTORAGESURFACEDATA {
  UINT                          PhysicalAdapterIndex;
  DXGKARG_FENCESTORAGEVALUETYPE FenceStorageValueType;
  D3DDDI_NATIVEFENCE_TYPE       FenceStorageType;
  UINT                          PrivateDriverDataSize;
  BYTE                          *pPrivateDriverData;
  DXGKARG_FENCESTORAGEFLAGS     Flags;
  UINT                          Reserved;
  DXGK_ALLOCATIONINFO           AllocationInfo;
} D3DKMDT_FENCESTORAGESURFACEDATA;

Члены

PhysicalAdapterIndex

[in] Индекс физического адаптера в конфигурации LDA, в которой хранилище забора будет резидентом.

FenceStorageValueType

[in] Значение DXGKARG_FENCESTORAGEVALUETYPE, указывающее тип собственного значения ограждения.

FenceStorageType

[in] Значение D3DDDI_NATIVEFENCE_TYPE, указывающее тип собственного ограждения.

PrivateDriverDataSize

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

pPrivateDriverData

[in] Указатель на данные частного драйвера. Зарезервировано для дальнейшего использования.

Flags

[in] Значение DXGKARG_FENCESTORAGEFLAGS, указывающее флаги для хранилища забора.

Reserved

[in] Зарезервировано для дальнейшего использования.

AllocationInfo

[out] Структура DXGK_ALLOCATIONINFO, в которой драйвер должен возвращать свойства выделения.

Замечания

Когда ОС вызывает функцию драйвера в режиме ядра DxgkDdiGetStandardAllocation со стандартным типом выделения D3DKMDT_STANDARDALLOCATION_FENCESTORAGE, драйвер должен вернуть сегменты памяти, в которых хранилище забора должно размещаться в D3DKMDT_FENCESTORAGESURFACEDATA.

На основе полей ввода драйвер должен заполнить следующие сведения о выделении в AllocationInfo:

  • SupportedWriteSegmentSet
  • EvictionSegmentSet
  • PreferredSegment

Драйвер должен игнорировать указатель на частные данные. Драйвер не должен проверять, что указатель имеет значение NULL и не должен запрашивать частные данные, задав его размер.

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

После создания собственного объекта забора с типом D3DDDI_NATIVEFENCE_TYPE_INTRA_GPU драйвер пользовательского режима всегда должен задать начальное значение, отправив пакет DMA с помощью виртуального адреса GPU. Текущие значения упаковываются на страницу памяти 4K, которая может находиться в сегменте локальной памяти, отличном от ЦП. Таким образом, ОС не имеет способа задать начальное значение.

Общие выделения всегда помещаются в системную память.

Дополнительные сведения см. в разделе Объекты забора собственного GPU.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 версии 24H2 (WDDM 3.2)
заголовка d3dkmddi.h

См. также

D3DDDI_NATIVEFENCE_TYPE

D3DKMDT_STANDARDALLOCATION_TYPE

DXGK_ALLOCATIONINFO

DXGKARG_FENCESTORAGEFLAGS

DXGKARG_FENCESTORAGEVALUETYPE

DXGKARG_GETSTANDARDALLOCATIONDRIVERDATA

DxgkDdiGetStandardAllocation