window 显示驱动开发-线程和同步级别二级

二级线程和同步与 级别三相同,只不过视频内存不会逐出到主机 CPU 内存中。 换句话说,WDDM 保证:

显示微型端口驱动程序中只有单个线程 (调用线程) 。
图形硬件处于空闲状态。
驱动程序当前没有直接内存访问 (DMA) 缓冲区正在由驱动程序处理或通过 GPU 计划程序传递。
若要在级别 2 下进行某些调用,必须在属于 DXGKARG_ESCAPE 的 D3DDDI_ESCAPEFLAGS 结构中设置 HardwareAccess 标志。 如果未设置此标志,则调用将失败。

以下列表包含在级别 2 下对显示微型端口驱动程序进行的一些调用:

  1. DxgkDdiCommitVidPn
  2. DxgkDdiControlInterrupt
  3. DxgkDdiDispatchIoRequest
  4. DxgkDdiEscape
  5. DxgkDdiNotifyAcpiEvent
  6. DxgkDdiQueryInterface
  7. DxgkDdiRecommendFunctionalVidPn
  8. DxgkDdiRecommendMonitorModes
  9. DxgkDdiSetPalette
  10. DxgkDdiSetTimingsFromVidPn
  11. DxgkDdiSetVidPnSourceAddress
  12. DxgkDdiSetVidPnSourceVisibility
  13. DxgkDdiUpdateActiveVidPnPresentPath

 以下是关于 Windows Display Driver Model (WDDM) 中二级线程同步级别(Level 2 Synchronization Level)的行为规范,以及与三级(Level 3)的区别。以下是关键点的解析:

核心概念

1、二级(Level 2)与三级(Level 3)的异同:

  • 相同点:线程同步规则一致(如单线程调用、硬件空闲、无活跃DMA缓冲区等)。
  • 关键区别:在二级下,视频内存(VRAM)不会被逐出到主机CPU内存(即WDDM保证VRAM的稳定性)。

2、调用条件:

  • 必须通过 DXGKARG_ESCAPE 结构中的 D3DDDI_ESCAPEFLAGS.HardwareAccess 标志显式声明需要硬件访问权限。未设置此标志的调用会失败。

WDDM的保证(调用前提)

调用二级同步级别的函数时,系统确保以下状态:

  • 单线程执行:仅调用线程能访问显示微型端口驱动程序(Display Miniport Driver)。
  • 硬件空闲:图形硬件(GPU)无任何活动任务。
  • 无活跃DMA缓冲区:驱动没有正在处理或通过GPU调度器传递的DMA缓冲区。

适用场景的调用函数

以下函数通常需要在二级同步级别下调用(需满足上述条件):

1、显示配置:

  • DxgkDdiCommitVidPn(提交视频呈现网络配置)
  • DxgkDdiSetTimingsFromVidPn(设置时序)
  • DxgkDdiSetVidPnSourceAddress(设置视频源地址)
  • DxgkDdiSetVidPnSourceVisibility(控制显示源可见性)
  • DxgkDdiUpdateActiveVidPnPresentPath(更新当前显示路径)

2、中断与硬件控制:

  • DxgkDdiControlInterrupt(中断控制)
  • DxgkDdiNotifyAcpiEvent(ACPI事件通知)

3、其他操作:

  • DxgkDdiEscape(扩展自定义命令)
  • DxgkDdiQueryInterface(查询驱动接口)
  • DxgkDdiSetPalette(调色板设置)

开发者注意事项

  • 标志必要性:调用这些函数时,必须设置 HardwareAccess 标志,否则系统会拒绝请求。
  • 性能影响:二级同步避免了VRAM逐出,适合对性能敏感的操作(如实时显示配置),但需确保硬件处于安全状态。
  • 错误处理:若未满足调用条件(如硬件忙),函数应返回适当错误码(如 STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE)。

典型应用场景

  • 动态分辨率切换:通过 DxgkDdiCommitVidPn 修改显示模式时,需保证VRAM不被干扰。
  • 中断屏蔽:调用 DxgkDdiControlInterrupt 禁用中断期间,需确保无并发DMA操作。

通过遵循这些规则,WDDM驱动程序可以在保证系统稳定性的同时高效管理图形硬件资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值