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


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

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

Синтаксис

typedef struct DXGI1_3_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;
  HRESULT()(DXGI_DDI_ARG_BLT1 *) * pfnBlt1;
  HRESULT()(DXGI_DDI_ARG_OFFERRESOURCES *) * pfnOfferResources;
  HRESULT()(DXGI_DDI_ARG_RECLAIMRESOURCES *) * pfnReclaimResources;
  HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *) * pfnGetMultiplaneOverlayCaps;
  HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS *) * pfnGetMultiplaneOverlayGroupCaps;
  HRESULT()(void *) * pfnReserved1;
  HRESULT()(DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *) * pfnPresentMultiplaneOverlay;
  HRESULT()(void *) * pfnReserved2;
  HRESULT()(DXGI_DDI_ARG_PRESENT1 *) * pfnPresent1;
  HRESULT()(DXGI_DDI_ARG_CHECKPRESENTDURATIONSUPPORT *) * pfnCheckPresentDurationSupport;
} DXGI1_3_DDI_BASE_FUNCTIONS;

Члены

pfnPresent

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

pfnGetGammaCaps

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

pfnSetDisplayMode

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

pfnSetResourcePriority

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

pfnQueryResourceResidency

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

pfnRotateResourceIdentities

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

pfnBlt

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

pfnResolveSharedResource

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

pfnBlt1

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

pfnOfferResources

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

pfnReclaimResources

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

pfnGetMultiplaneOverlayCaps

Вызывается средой выполнения DXGI для запроса, чтобы драйвер дисплея пользовательского режима мог получить базовые возможности плоскости наложения. При необходимости реализуется драйверами отображения в пользовательском режиме WDDM 1.3 и более поздних версий.

pfnGetMultiplaneOverlayGroupCaps

Вызывается средой выполнения DXGI для запроса, чтобы драйвер отображения пользовательского режима мог получить группу возможностей плоскости наложения. При необходимости реализуется драйверами отображения в пользовательском режиме WDDM 1.3 и более поздних версий.

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

Синтаксис

pfnGetMultiplaneOverlayGroupCaps GetMultiplaneOverlayGroupCaps;

HRESULT __stdcall* GetMultiplaneOverlayGroupCaps(
   DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS *pGroupCaps
)
{ ... }

Параметр

pGroupCaps Указатель на структуру DXGI_DDI_ARG_GETMULTIPLANEOVERLAYGROUPCAPS , задающую группу возможностей плоскости наложения.

Возвращаемое значение

Возвращает одно из следующих значений.

  • S_OK Драйвер успешно предоставил возможности плоскости наложения.
  • D3DDDIERR_DEVICEREMOVED Драйвер обнаружил, что видеоадаптер был удален, поэтому драйвер не завершил операцию. Если драйвер не знает об удалении адаптера, он не должен возвращать этот код ошибки.

pfnReserved1

Зарезервировано для системного использования.

pfnPresentMultiplaneOverlay

Вызывается средой выполнения Microsoft DirectX Graphics Infrastructure (DXGI) для уведомления драйвера отображения пользовательского режима о том, что приложение завершило отрисовку, и запрашивает, чтобы драйвер отображал исходную поверхность путем копирования или перелистывания, или что драйвер выполняет операцию заливки цвета. Должен быть реализован с помощью драйверов windows Display Driver Model (WDDM) 1.3 или более поздней версии, поддерживающих многоплановые наложения.

Когда драйвер отображения пользовательского режима успешно завершает обработку вызова этой функции, он представляет исходную поверхность для дисплея путем вызова функции pfnPresentMultiPlaneOverlayCb (DXGI).

PFND3DDDI_PRESENTMULTIPLANEOVERLAY pfnPresentMultiPlaneOverlay;

HRESULT __stdcall* pfnPresentMultiPlaneOverlay(
   DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *pPresentDXGI
)
{ ... }

Параметр

pPresentDXGI Указатель на структуру DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY , описывающую способ отображения в области назначения.

Возвращаемое значение

Если эта функция обратного вызова завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT.

pfnReserved2

Зарезервировано для системного использования.

pfnPresent1

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

Синтаксис

pfnPresent1 Present1DXGI;

HRESULT __stdcall* Present1DXGI(
   DXGI_DDI_ARG_PRESENT1 *pPresentData
)
{ ... }

Параметр

pPresentData [in] Указатель на структуру DXGI_DDI_ARG_PRESENT1 , описывающую способ отображения в области назначения.

Комментарии

Элемент hDeviceструктуры DXGI_DDI_ARG_PRESENT1 , на которую указывает параметр pPresentData , является тем же дескриптором, что и функция CreateDevice(D3D10) драйвера, переданная обратно в среду выполнения в элементе hDrvDeviceструктуры D3D10DDIARG_CREATEDEVICE . Поэтому средства записи драйверов должны тщательно определять тип этого дескриптора. Кроме того, драйверы могут предоставлять различные реализации функции pfnPresent1(DXGI) в зависимости от того, какая реализация DDI обработала вызов CreateDevice(D3D10). Среда выполнения никогда не будет смешивать дескрипторы драйверов в реализациях DDI.

Элемент pDXGIContextDXGI_DDI_ARG_PRESENT1 является непрозрачным механизмом связи. Среда выполнения передает этот контекст DXGI драйверу. Драйвер должен скопировать этот контекст DXGI без изменений в элемент pDXGIContextструктуры DXGIDDICB_PRESENT , когда драйвер вызывает функцию pfnPresentCbDXGI .

Драйвер должен отправить все частично созданные данные отрисовки (буферы команд) с помощью функции pfnRenderCb , а драйвер должен выполнить один вызов pfnPresentCbDXGI. При вызове любого из этих обратных вызовов драйвер должен следовать правилам потоков функции PresentDXGI .

Примечание Когда функция pfnPresent1(DXGI) драйвера копирует содержимое в формате sRGB из исходной поверхности на конечную поверхность, не связанную с sRGB, драйвер должен скопировать содержимое sRGB без изменений (то есть драйвер не должен выполнять sRGB в линейное преобразование).

Правила потоков

Эти правила применяются независимо от того, поддерживает ли драйвер свободные потоки:

  • Драйвер указывает поддержку свободных потоков, задав для элемента CAPS структуры D3D11DDI_THREADING_CAPSзначение D3D11DDICAPS_FREETHREADED. В данном случае:
    • Одновременно с дескриптором контекста HCONTEXT может работать только один поток.
    • Драйвер должен вызывать pfnPresentCbDXGI только при вызове функции драйвера pfnPresent1(DXGI) и в том же потоке, который вызвал pfnPresent1(DXGI).
  • Если драйвер не указывает на поддержку свободных потоков, он может вызывать функции обратного вызова только в том случае, если поток вызвал драйвер. Драйвер также должен по-прежнему вызывать обратный вызов pfnPresentCbDXGI в контексте pfnPresent1(DXGI).
Дополнительные сведения о потоковой настройке см. в разделе Изменения, внесенные в Direct3D 10.

pfnCheckPresentDurationSupport

Указатель на функцию pfnCheckPresentDurationSupport(DXGI) драйвера.

Комментарии

Дополнительные сведения об использовании этой структуры см. в разделе Поддержка DXGI DDI.

Требования

Требование Значение
Минимальная версия клиента Windows 8.1,WDDM 1.3 и более поздних версий
Минимальная версия сервера Windows Server 2012 R2
Верхняя часть dxgiddi.h (включая D3d10umddi.h)

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

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_2_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS