查询 VidPN 硬件功能
从 Windows 7 开始,需要显示微型端口驱动程序来报告指定功能 VidPN 的所有硬件功能。 驱动程序应支持以下回调函数及其关联结构:
当驱动程序报告硬件功能时,应考虑克隆是作为旋转或缩放转换的一部分完成的隐式过程:必须先克隆源,然后才能进行轮换或缩放。
如果D3DKMDT_VIDPN_HW_CAPABILITY的任何成员对指定的 VidPN 路径没有任何意义,则如果成员设置为非零值,则显示模式管理器 (DMM) 将不会报告任何错误。 DMM 将清除所有此类值,然后再将其报告给用户模式客户端。 但是,驱动程序需要将 D3DKMDT_VIDPN_HW_CAPABILITY 的 Reserved 成员的值设置为 0。
示例方案
若要显示微型端口驱动程序应如何报告硬件功能,请考虑以下示例硬件配置集 P1、P2 和 P3:
P1: 从源 S1 克隆 Surface,然后旋转 90 度并缩放以适应目标。
P2: Surface 是从源 S1 克隆的,未应用转换。
P3: 源 S2 没有应用转换。
调用 DxgkDdiQueryVidPnHWCapability 时,驱动程序应根据下表返回 D3DKMDT_VIDPN_HW_CAPABILITY 的旋转、缩放和克隆成员的值:
D3DKMDT_VIDPN_HW_CAPABILITY硬件功能 VidPN 路径驱动程序角色驱动程序缩放驱动程序锁定硬件的成员返回的值可以执行所有旋转、缩放和克隆转换。
P₁
0
0
0
P-2
0
0
0
P₃
0
0
0
硬件可以执行除克隆以外的所有转换
P₁
0
0
0
P-2
0
0
1
P₃
0
0
0
硬件可以执行克隆和缩放转换,但不能执行旋转。 驱动程序使用中间旋转 blit 执行旋转。
P₁
1
0
0
P-2
0
0
0
P₃
0
0
0
硬件无法执行克隆、缩放或旋转转换。 这些操作由驱动程序执行。
P₁
1
1
0
P-2
0
0
1
P₃
0
0
0