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 图形基础结构 (DXGI) 运行时调用,以通知用户模式显示驱动程序应用程序已完成呈现,并请求驱动程序通过复制或翻转来显示源图面,或者驱动程序执行颜色填充操作。 必须由支持多平面覆盖的 Windows 显示驱动程序模型 (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 结构的指针。

注解

pPresentData 参数指向的 DXGI_DDI_ARG_PRESENT1 结构的 hDevice 成员与驱动程序的 CreateDevice (D3D10) 函数在 D3D10DDIARG_CREATEDEVICE 结构的 hDrvDevice 成员中传回运行时的句柄相同。 因此,驱动程序编写器必须仔细定义此句柄的类型。 此外,驱动程序可以提供 pfnPresent1 (DXGI) 函数的不同实现,DDI 实现根据该函数处理对 CreateDevice (D3D10) 的调用。 运行时永远不会在 DDI 实现中混合驱动程序句柄。

DXGI_DDI_ARG_PRESENT1pDXGIContext 成员是一种不透明的通信机制。 运行时将此 DXGI 上下文传递给驱动程序。 当驱动程序调用 pfnPresentCbDXGI 函数时,驱动程序应将此 DXGI 上下文未更改复制到 DXGIDDICB_PRESENT 结构的 pDXGIContext 成员。

驱动程序必须使用 pfnRenderCb 函数) 提交所有部分生成的呈现数据 (命令缓冲区,并且驱动程序必须对 pfnPresentCbDXGI 进行单个调用。 调用上述任一回调时,驱动程序必须遵循 PresentDXGI 函数的线程规则。

注意 当驱动程序的 pfnPresent1 (DXGI) 函数将 sRGB 格式的内容从源图面复制到非 sRGB 目标图面时,驱动程序应复制未更改的 sRGB 内容 (也就是说,驱动程序不应) 执行 sRGB 到线性转换。

线程规则

无论驱动程序是否支持自由线程,这些规则都适用:

  • 驱动程序通过将 D3D11DDI_THREADING_CAPS 结构的 Caps 成员设置为 D3D11DDICAPS_FREETHREADED 来指示对自由线程的支持。 在这种情况下:
    • 一次只能有一个线程针对 HCONTEXT 上下文句柄工作。
    • 仅当驱动程序的 pfnPresent1 (DXGI) 函数被调用时,驱动程序必须调用 pfnPresentCbDXGI,并且由调用 pfnPresent1 的同一线程 (DXGI) 调用。
  • 当驱动程序未指示支持自由线程时,它只能在线程已调用驱动程序时调用回调函数。 驱动程序还必须在 pfnPresent1 (DXGI) 上下文中调用 pfnPresentCbDXGI 回调。
有关线程处理的详细信息,请参阅 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