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) 函数传递到 hDrvDevice 成员 D3D10DDIARG_CREATEDEVICE 结构中的运行时的句柄相同。 因此,驱动程序编写器必须仔细定义此句柄的类型。 此外,驱动程序还可以根据 DDI 实现处理对 CreateDevice(D3D10)的调用,提供 pfnPresent1(DXGI) 函数的不同实现。 运行时永远不会在 DDI 实现之间混合驱动程序句柄。
DXGI_DDI_ARG_PRESENT1 的 pDXGIContext 成员是不透明的通信机制。 运行时将此 DXGI 上下文传递给驱动程序。 当驱动程序调用 pfnPresentCbDXGI 函数时,驱动程序应将此 DXGI 上下文复制到 DXGIDDICB_PRESENT 结构的 pDXGIContext 成员。
驱动程序必须使用 pfnRenderCb 函数提交所有部分生成的呈现数据(命令缓冲区),并且驱动程序必须单次调用 pfnPresentCbDXGI。 调用其中任一回调时,驱动程序必须遵循 PresentDXGI 函数的线程规则。
线程规则
这些规则适用于驱动程序是否支持自由线程处理:
- 驱动程序通过将 D3D11DDI_THREADING_CAPS 结构的 Caps 成员设置为 D3D11DDICAPS_FREETHREADED来指示对免费线程的支持。 在本例中:
- 一次只能对 HCONTEXT 上下文句柄使用单个线程。
- 仅当调用驱动程序的 pfnPresent1(DXGI) 函数时,驱动程序才能调用 pfnPresentCbDXGI,并由调用 pfnPresent1(DXGI)的同一线程调用。
- 当驱动程序未指示对自由线程的支持时,它只能在线程调用驱动程序时调用回调函数。 驱动程序还必须在 pfnPresent1(DXGI)上下文中调用 pfnPresentCbDXGI 回调。
pfnCheckPresentDurationSupport
指向驱动程序 pfnCheckPresentDurationSupport(DXGI) 函数的指针。
言论
有关如何使用此结构的详细信息,请参阅 支持 DXGI DDI。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8.1、WDDM 1.3 及更高版本 |
支持的最低服务器 | Windows Server 2012 R2 |
标头 | dxgiddi.h (include D3d10umddi.h) |