window显示驱动开发—覆盖 DDI

覆盖 DDI 是 Direct3D 版本 9 DDI 的扩展,用于验证覆盖支持。 覆盖 DDI 由以下入口点组成:

  • Direct3D 运行时使用D3DDDICAPS_TYPE枚举中的 D3DDDICAPS_CHECKOVERLAYSUPPORT 值来验证显示设备是否支持特定的覆盖。 运行时在D3DDDIARG_GETCAPS结构的Type 成员中设置D3DDDICAPS_CHECKOVERLAYSUPPORT,当运行时调用 GetCaps 时,驱动程序的 GetCaps 函数的 pData 参数指向该成员。 运行时还将 D3DDDIARG_GETCAPS 的 pInfo 成员设置为指向描述覆盖的 DDICHECKOVERLAYSUPPORTINPUT 结构的指针。 如果驱动程序支持覆盖,则驱动程序设置 D3DOVERLAYCAPS 结构的成员,并在 D3DDDIARG_GETCAPS 的 pData 成员中返回指向此结构的指针。 否则,如果驱动程序不支持覆盖,驱动程序将无法调用其 GetCaps 函数,并D3DDDIERR_UNSUPPORTEDOVERLAYFORMAT或D3DDDIERR_UNSUPPORTEDOVERLAY,具体取决于缺少支持是否基于覆盖格式。 DirectX SDK 文档中介绍了 D3DOVERLAYCAPS。

驱动程序设置 D3DOVERLAYCAPS 的 MaxOverlayDisplayWidth 和 MaxOverlayDisplayHeight 成员,以指示驱动程序和硬件可能具有的任何限制,这些限制涉及在拉伸覆盖数据) 后的最终覆盖大小 (。

驱动程序在 D3DOVERLAYCAPS 的 Caps 成员中设置D3DOVERLAYCAPS_STRETCHX (0x00000040) 和D3DOVERLAYCAPS_STRETCHY (0x00000080) 功能位,以指示覆盖硬件能够任意拉伸和收缩覆盖数据。 驱动程序不应尝试模拟通过 GPU 的覆盖拉伸,并且只应在覆盖硬件支持拉伸时设置这些上限。 应用程序在视频处理和合成阶段执行 GPU 拉伸所需的开销通常比驱动程序在最末端执行单独的传递来模拟覆盖拉伸所需的开销更少。

  • 驱动程序应处理 来自 D3DDDI_OVERLAYINFOFLAGS 结构的以下新位字段标志。 D3DDDI_OVERLAYINFOFLAGS 结构标识要执行的覆盖操作的类型。 D3DDDI_OVERLAYINFOFLAGS 结构在调用驱动程序的 CreateOverlay 或 UpdateOverlay 函数时,在 D3DDDI_OVERLAYINFO 结构的 Flags 成员中指定。

LimitedRGB

覆盖是有限的范围 RGB,而不是全范围 RGB。 在有限范围 RGB 中,RGB 范围被压缩为 16:16:16 为黑色,235:235:235 为白色。

YCbCrBT709

覆盖层为 BT.709,表示高清电视 (HDTV) ,而不是 BT.601。

YCbCrxvYCC

覆盖是扩展的 YCbCr (xvYCC) ,而不是传统的 YCbCr。

  • 例如,当显示格式为 64 位而不是 32 位 (时,当桌面 Windows 管理器 (DWM) 将D3DFMT_A16B16G16R16F用于显示模式) 时,运行时将覆盖色键的下 32 位放置在 D3DDDI_OVERLAYINFO 结构的 DstColorKeyLow 成员中,并将高 32 位放置在 D3DDDI_OVERLAYINFO 的 DstColorKeyHigh 成员中。
相关推荐
广药门徒1 小时前
Linux驱动开发与BuildRoot是什么关系与其的应用场景
linux·运维·驱动开发
驱动开发0079 小时前
虚拟麦克风驱动下载,支持将手机话筒映射成PC端麦克风
驱动开发·安全
驱动开发00714 小时前
虚拟摄像头VirtualUSB UVC CAMERA下载 支持将手机摄像头映射成PC端摄像头
驱动开发·安全·电脑
天山老妖的混世牛魔王20 小时前
WDF驱动开发-PNP和电源管理
驱动开发
sukalot1 天前
windows显示驱动开发-节能与 VSync 控制
驱动开发
tt5555555555552 天前
嵌入式开发面试八股文详解教程
linux·c++·驱动开发·面试
sukalot2 天前
windows显示驱动开发-调试间接显示驱动程序(二)
驱动开发
tt5555555555553 天前
Linux启动流程与字符设备驱动详解 - 从bootloader到驱动开发
linux·运维·驱动开发
tt5555555555555 天前
Linux 驱动开发入门:LCD 驱动与内核机制详解
linux·运维·驱动开发
tt5555555555555 天前
Linux驱动开发核心概念详解 - 从入门到精通
linux·运维·驱动开发