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


структура DXGI1_1_DDI_BASE_FUNCTIONS (dxgiddi.h)

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

Синтаксис

typedef struct DXGI1_1_DDI_BASE_FUNCTIONS {
  HRESULT()(DXGI_DDI_ARG_PRESENT *) * pfnPresent;
  HRESULT()(DXGI_DDI_ARG_GET_GAMMA_CONTROL_CAPS *) * pfnGetGammaCaps;
  HRESULT()(DXGI_DDI_ARG_SETDISPLAYMODE *) * pfnSetDisplayMode;
  HRESULT()(DXGI_DDI_ARG_SETRESOURCEPRIORITY *) * pfnSetResourcePriority;
  HRESULT()(DXGI_DDI_ARG_QUERYRESOURCERESIDENCY *) * pfnQueryResourceResidency;
  HRESULT()(DXGI_DDI_ARG_ROTATE_RESOURCE_IDENTITIES *) * pfnRotateResourceIdentities;
  HRESULT()(DXGI_DDI_ARG_BLT *) * pfnBlt;
  HRESULT()(DXGI_DDI_ARG_RESOLVESHAREDRESOURCE *) * pfnResolveSharedResource;
} DXGI1_1_DDI_BASE_FUNCTIONS;

Члены

pfnPresent

Указатель на функцию PresentDXGI драйвера.

pfnGetGammaCaps

Указатель на функцию GetGammaCapsDXGI драйвера.

pfnSetDisplayMode

Функция SetDisplayModeDXGI переключается в режим отображения или основной режим, который не поддерживается рабочим столом GDI.

Среда выполнения Microsoft Direct3D вызывает SetDisplayModeDXGI для переключения в режим отображения или основной режим, который не поддерживается рабочим столом GDI. В следующем списке приведены примеры таких первичных объектов:

  • Первичные объекты, созданные с 10 битами на канал (10:10:10:2), отображают и отрисовывают целевые форматы (например, D3DFMT_A2R10G10B10)
  • Первичные серверы с несколькими выборкой, в которых выполняется множественная выборка при сканировании
  • Постоянные первичные приложения, которые используют полноэкранные приложения Microsoft DirectX версии 10
Среда выполнения Direct3D вызывает функцию CreateResource(D3D10) драйвера отображения пользовательского режима, чтобы создать источник для сканирования. Однако драйвер должен запрограммировать оборудование на сканирование только при вызове его функции SetDisplayModeDXGI . Таким образом, среда выполнения задает элементы hResource и SubResourceIndexструктуры DXGI_DDI_ARG_SETDISPLAYMODE , на которую указывает параметр pDisplayModeData , в качестве основного элемента, созданного с помощью вызова функции CreateResourceD3D10 драйвера. Затем драйвер должен преобразовать основной объект, который представляют hResource и SubResourceIndex , в основной дескриптор выделения. После того как драйвер выполняет это преобразование, драйвер должен передать результирующий дескриптор в вызове функции pfnSetDisplayModeCb , которая затем инициирует вызов функции DxgkDdiCommitVidPn драйвера miniport дисплея.

Драйвер отображения пользовательского режима может задать элемент hPrimaryAllocationструктуры D3DDDICB_SETDISPLAYMODE в вызове pfnSetDisplayModeCb для сканирования выделения. Однако выделение должно быть отмечено как основное (то есть драйвер отображения пользовательского режима должен задать флаг основного битового поля в элементе Flags структуры D3DDDI_ALLOCATIONINFO в вызове функции pfnAllocateCb для создания выделения).

pDisplayModeData

Указатель на структуру DXGI_DDI_ARG_SETDISPLAYMODE , которая задает параметры для настройки режима отображения.

pfnSetResourcePriority

Указатель на функцию SetResourcePriorityDXGI драйвера.

pfnQueryResourceResidency

Указатель на функцию QueryResourceResidencyDXGI драйвера.

pfnRotateResourceIdentities

Указатель на функцию RotateResourceIdentitiesDXGI драйвера.

pfnBlt

Указатель на функцию BltDXGI драйвера.

pfnResolveSharedResource

Функция ResolveSharedResourceDXGI сообщает драйверу дисплея в пользовательском режиме, что владение общей поверхностью изменилось или что поверхность используется для взаимодействия GDI.

Среда выполнения Direct3D вызывает ResolveSharedResourceDXGI , когда приложение вызывает одну из следующих функций:

  • IDXGIKeyedMutex::ReleaseSynch на синхронизированной общей поверхности
  • IDXGISurface1::GetDC для поверхности взаимодействия GDI
Среда выполнения вызывает функцию ResolveSharedResourceDXGI драйвера при каждом изменении владельца общей поверхности или при использовании поверхности для взаимодействия GDI.

Драйвер реализует ResolveSharedResourceDXGI для соответствующего управления ресурсами для нескольких сценариев GPU. Каждый ресурс может быть разделен между памятью для нескольких GPU для отрисовки. Драйвер может реализовать ResolveSharedResourceDXGI для повторного объединения каждого ресурса, чтобы новый владелец ресурса получил объединенный ресурс. Драйвер должен очистить все частично созданные буферы команд, которые могут изменить ресурс.

Windows 7 предоставляет макрос IS_DXGI1_1_BASE_FUNCTIONS (который определен в файле заголовка D3D10umddi.h), позволяющий драйверу отображения пользовательского режима определить, получает ли он указатель на DXGI1_1_DDI_BASE_FUNCTIONS или DXGI_DDI_BASE_FUNCTIONS структуру в вызове функции CreateDevice(D3D10). Структура DXGI1_1_DDI_BASE_FUNCTIONS включает элемент pfnResolveSharedResource , который драйвер может заполнить указателем на функцию ResolveSharedResourceDXGI . Если IS_DXGI1_1_BASE_FUNCTIONS возвращает значение TRUE, драйвер должен получить указатель на структуру DXGI1_1_DDI_BASE_FUNCTIONS в элементе pDXGIDDIBaseFunctionsструктуры DXGI_DDI_BASE_ARGS , указанной элементом DXGIBaseDDI структуры D3D10DDIARG_CREATEDEVICE . В противном случае, если IS_DXGI1_1_BASE_FUNCTIONS возвращает значение FALSE, драйвер ожидает получения указателя на структуру DXGI_DDI_BASE_FUNCTIONS. Windows 7 предоставляет макрос IS_DXGI1_1_BASE_FUNCTIONS, чтобы разрешить более новым драйверам версий работать в старых средах выполнения версий. Затем драйверы могут определить, повреждают ли они память, если попытаются заполнить член pfnResolveSharedResourceDXGI1_1_DDI_BASE_FUNCTIONS указателем на функцию ResolveSharedResourceDXGI .

pResourceData

Указатель на структуру DXGI_DDI_ARG_RESOLVESHAREDRESOURCE , которая задает параметры для устройства отображения и поверхности, связанной с устройством отображения.

Комментарии

Windows 7 предоставляет макрос IS_DXGI1_1_BASE_FUNCTIONS (который определен в файле заголовка D3D10umddi.h), чтобы разрешить драйверу отображения пользовательского режима определить, получает ли он указатель на DXGI1_1_DDI_BASE_FUNCTIONS или DXGI_DDI_BASE_FUNCTIONS структуру в вызове функции CreateDevice(D3D10). Структура DXGI1_1_DDI_BASE_FUNCTIONS включает элемент pfnResolveSharedResource , который драйвер может заполнить указателем на функцию ResolveSharedResourceDXGI . Если IS_DXGI1_1_BASE_FUNCTIONS возвращает значение TRUE, драйвер должен получить указатель на структуру DXGI1_1_DDI_BASE_FUNCTIONS в элементе pDXGIDDIBaseFunctionsструктуры DXGI_DDI_BASE_ARGS , указанной элементом DXGIBaseDDI структуры D3D10DDIARG_CREATEDEVICE . В противном случае, если IS_DXGI1_1_BASE_FUNCTIONS возвращает значение FALSE, драйвер ожидает получения указателя на структуру DXGI_DDI_BASE_FUNCTIONS. Windows 7 предоставляет макрос IS_DXGI1_1_BASE_FUNCTIONS, чтобы разрешить более новым драйверам версий работать в старых средах выполнения версий. Затем драйверы могут определить, повреждают ли они память, если попытаются заполнить член pfnResolveSharedResourceDXGI1_1_DDI_BASE_FUNCTIONS указателем на функцию ResolveSharedResourceDXGI .

Требования

Требование Значение
Минимальная версия клиента DXGI1_1_DDI_BASE_FUNCTIONS поддерживается начиная с операционной системы Windows 7.
Верхняя часть dxgiddi.h (включая D3d10umddi.h)

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

BltDXGI

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS

GetGammaCapsDXGI

PresentDXGI

QueryResourceResidencyDXGI

ResolveSharedResource

ResolveSharedResourceDXGI

RotateResourceIdentitiesDXGI

SetDisplayModeDXGI

SetResourcePriorityDXGI