当前位置: 首页 > news >正文

Windows 图形显示驱动开发-WDDM 3.2-可调性改进

TDR 可调试性改进

为了帮助 TDR(超时检测和恢复)分析,OS 传统上会调用内核模式驱动程序的 DxgkddiCollectDbgInfo 回调,以允许驱动程序将自己的有效负载写入系统从客户计算机上传的 TDR 报告中。

从 Windows 11 版本 24H2 (WDDM 3.2) 开始,将提供本文中所述的 TDR 调试改进。 图形驱动程序开发人员应熟悉 Windows 中的 GPU 超时检测和恢复,如超时检测和恢复和 Windows 8 及更高版本中的 TDR 中所述。

DDI 更改

 DxgkddiCollectDbgInfo2

DxgkddiCollectDbgInfo2 已作为 TDR 调试扩展添加。 此回调允许 OS 将有关 TDR 根本原因的更详细信息传递给 KMD。 内核模式驱动程序 (KMD) 反过来可以保存与负责 TDR 的 GPU 部分相关的状态。

DxgkddiCollectDbgInfo2 是现有 DxgkddiCollectDbgInfo 的超集。

  1. 实施 DxgkddiCollectDbgInfo2 不需要 WDDM 3.2 驱动程序,在这种情况下 OS 会调用 DxgkddiCollectDbgInfo。
  2. 如果 KMD 确实实施了 DxgkddiCollectDbgInfo2,则 OS 在所有情况下都会调用它,而不是 DxgkddiCollectDbgInfo。

DRIVER_INITIALIZATION_DATA 结构被扩展,以包含指向 DxgkddiCollectDbgInfo2 的指针。 

DXGKARG_COLLECTDBGINFO2

OS 会将添加的 DXGKARG_COLLECTDBGINFO2 结构添加到 DxgkddiCollectDbgInfo2。

DXGKARG_COLLECTDBGINFO2 的布局与现有 DXGKARG_COLLECTDBGINFO 结构向后兼容,以允许 DxgkDdiCollectDbgInfo2 实施根据需要重复使用现有 DxgkDdiCollectDbgInfo 帮助程序。 因此,Reason、pBuffer、BufferSize 和 pExtension 字段具有相同的语义。

以下其他字段位于 DXGKARG_COLLECTDBGINFO2 中,但不在DXGKARG_COLLECTDBGINFO 中。

  • TdrType
  • TdrPayloadSize
  • TdrPayload

对于某些 TDR 类型,OS 在 TdrPayloadSize 字节的 TdrPayload 缓冲区中提供了其他信息。 它可以为 NULL,并且驱动程序应处理这种情况,而不会出现崩溃。

当有效负载不为 NULL 时,可以将其强制转换为与 TDR 类型对应的结构。 OS 可能会以向后兼容的方式扩展这些结构,从而在末尾添加新字段。 驱动程序必须在访问 TdrPayload 字段之前检查 TdrPayloadSize,以确保 OS 实施所需的有效负载版本或更高版本。

TdrPayload 指向的内存仅在 DxgkddiCollectDbgInfo2 调用期间有效。 驱动程序不应在 DxgkddiCollectDbgInfo2 调用结束后存储指向 TdrPayload 的指针。

从 WDDM 3.2 开始,将添加以下有效负载结构作为 TdrPayload 将指向的可能有效负载。

  • 引擎超时有效负载的 DXGK_TDR_PAYLOAD_ENGINE_TIMEOUT(TdrType 等于 DXGK_TDR_TYPE_ENGINE_TIMEOUT)。
  • VSync 超时有效负载的 DXGK_TDR_PAYLOAD_VSYNC_TIMEOUT(TdrType 等于 DXGK_TDR_TYPE_VSYNC_TIMEOUT)。

相关文章:

  • [论文阅读]Trustworthiness in Retrieval-Augmented Generation Systems: A Survey
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-7.3.2使用GraphQL封装查询接口
  • 2-003:MySQL 三层 B+ 树能存多少数据?
  • torch.distributions.categorical.Categorical 介绍
  • 智慧停车小程序:实时车位查询、导航与费用结算一体化
  • Datawhale AI + 办公 笔记2
  • linux自启动服务
  • 使用 Tesseract 进行 OCR 识别的详细指南
  • Linux开发工具----vim
  • Room数据库的使用
  • STM32Cubemx-H7-7-OLED屏幕
  • 【Python】【数据分析】Python 数据分析与可视化:全面指南
  • 【Python 2D绘图】Matplotlib绘图(统计图表)
  • 【冯诺依曼:到底有什么重大贡献 关键字摘抄】
  • ngx_conf_param
  • JAVA面试_进阶部分_java中四种引用类型(对象的强、软、弱和虚引用)
  • 开发中常见状态码以及状态码用途
  • Mysql8.x常用命令
  • XXE 目录
  • 从零开发Chrome广告拦截插件:开发、打包到发布全攻略
  • 习近平抵达莫斯科对俄罗斯进行国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典
  • 首家股份行旗下AIC来了,兴银金融资产投资有限公司获批筹建
  • 建筑瞭望|融入自然的新泳池,治愈了中央公园的历史旧伤
  • 外交部发言人就当前印巴局势答记者问
  • 特朗普要征电影关税惊扰全球电影业,“让好莱坞再次伟大”或现反效果
  • GOMU超马世锦赛,男女冠军刷新世界纪录