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 成员中传回运行时的句柄相同。 因此,驱动程序编写器必须仔细定义此句柄的类型。 此外,驱动程序还可以根据 DDI 实现处理对 CreateDevice (D3D10 ) 调用的 pfnPresent1 (DXGI) 函数提供不同的实现。 运行时永远不会在 DDI 实现之间混合驱动程序句柄。

DXGI_DDI_ARG_PRESENT1pDXGIContext 成员是一种不透明的通信机制。 运行时将此 DXGI 上下文传递给驱动程序。 当驱动程序调用 pfnPresentCbDXGIGIGI 函数时,驱动程序应将此 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
Header dxgiddi.h (包括 D3d10umddi.h)

请参阅

CreateDevice (D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI1_2_DDI_BASE_FUNCTIONS

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS