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 成员中。
相关推荐
TangDuoduo00056 天前
【Linux SPI驱动开发】
驱动开发
The️6 天前
Linux驱动开发之Read_Write函数
linux·运维·服务器·驱动开发·ubuntu·交互
FserSuN6 天前
AI编程 - 规范驱动开发(SDD)学习
驱动开发·学习·ai编程
TangDuoduo00056 天前
【Linux I2C设备驱动】
linux·驱动开发
The️6 天前
Linux驱动开发之Open_Close函数
linux·运维·驱动开发·mcu·ubuntu
LCG元7 天前
嵌入式GUI设计:STM32F429+LVGL,智能仪表盘界面开发指南
驱动开发·stm32·嵌入式硬件
小龙报7 天前
【51单片机】 给单片机加 “安全锁”!看门狗 WDT:原理 + 配置 + 复位验证全拆解,让程序稳定不跑飞
驱动开发·stm32·单片机·嵌入式硬件·物联网·51单片机·硬件工程
码农编程录7 天前
【notes12】kbuild,内核模块化,字符设备驱动,设备树,platform总线,设备驱动模型
驱动开发
乔碧萝成都分萝7 天前
二十六、IIO子系统 + SPI子系统 + ICM20608
linux·驱动开发·嵌入式
A星空1238 天前
二、交叉编译工具链(arm-linux-gnueabihf-gcc)安装与验证,搭建 TFTP+NFS 服务,调试开发板网络连通性;
linux·c++·驱动开发·单片机·嵌入式硬件