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

window显示驱动开发—在注册表中设置 DXGI 信息

DXGI 和参考光栅器使用以下注册表项:

DWORD Software\Microsoft\DXGI\DisableFullscreenWatchdog
设置为 1 可禁用监视器线程。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\FlushOften
设置为 1 以经常刷新。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\FenceEachEntryPoint
设置为 1 以使用 GPU 对 DDI 函数围栏进行每次调用。 使用 GPU 进行隔离意味着刷新命令批处理和块,直到 GPU 处于空闲状态。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\Debug
将 设置为 1 以:

  • 经常刷新,并使用 GPU 对 DDI 函数围栏进行每次调用。

  • (RefRast) 单线程运行引用光栅器。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\D3D10RefGdiDisplayMask
如果设置为 1) ,则 DWORD 掩码中的每个位都会启用 (;如果设置为 0,则禁用 () 显示监视器(由引用设备控制)。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\SingleThreaded
设置为 1 以启用运行 RefRast 单线程。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\ForceHeapAlloc
设置为 1 可使引用设备使用常规进程堆创建资源,而不是使用其他分配机制。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\AllowAsync
设置为 1 以允许引用设备的第二个线程异步运行 (也就是说,允许多个命令缓冲区) 未完成。

引用硬件通常在第二个线程中运行;但是,此第二个线程在主线程可以继续之前完成其所有工作。

DWORD Software\Microsoft\Direct3D\ReferenceDevice\SimulateInfinitelyFastHW
设置为 1 可使引用设备的模拟硬件进程仅执行几个有限的命令,使引用设备看起来非常快速 (,实质上不执行任何) 。

驱动程序可以将此密钥用作性能工具。

1. DXGI 相关注册表项

(1) DisableFullscreenWatchdog

  • 路径: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DXGI\DisableFullscreenWatchdog
  • 类型: DWORD
  • 作用:
  1. 默认行为: DXGI 会启动一个监视器线程(Watchdog Thread),检测全屏应用的响应性。若应用阻塞(如死循环),DXGI 会强制恢复窗口模式。
  2. 设置为 1: 禁用此监视器线程,适用于需要独占全屏控制的场景(如游戏或专业图形应用)。
  • 风险: 禁用后,应用崩溃可能导致显示模式无法自动恢复,需手动干预。

2. 参考光栅器(RefRast)调试与性能控制

参考光栅器是微软提供的软件实现的 D3D 设备,用于功能验证和调试。以下注册表项均位于:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Direct3D\ReferenceDevice\

(1) FlushOften

  1. 类型: DWORD
  2. 作用:
  • 设置为 1: 强制 RefRast 频繁刷新命令队列(类似手动调用 ID3D11DeviceContext::Flush)。
  • 用途: 检测命令提交间的资源依赖问题,但会显著降低性能。

(2) FenceEachEntryPoint

  1. 类型: DWORD
  2. 作用:
  • 设置为 1: 对每个 DDI 函数调用插入 GPU 围栏(Fence),强制等待 GPU 空闲后再继续。
  • 用途: 精确调试 GPU 命令顺序问题,但会引入极高延迟。

(3) Debug

  1. 类型: DWORD
  2. 作用:
  • 设置为 1: 组合以下行为:
  • 启用 FlushOften 和 FenceEachEntryPoint。
  • 强制 RefRast 单线程运行(禁用并行命令处理)。
  • 用途: 简化调试复现问题,牺牲性能换取确定性。

(4) D3D10RefGdiDisplayMask

  1. 类型: DWORD
  2. 作用:
  • 按位掩码控制 RefRast 输出的显示监视器(如 0x1 表示仅主显示器)。
  • 用途: 多显示器环境下隔离测试目标。

(5) SingleThreaded

  1. 类型: DWORD
  2. 作用:
  • 设置为 1: 强制 RefRast 单线程运行,禁用异步命令处理。
  • 用途: 排查多线程同步问题。

(6) ForceHeapAlloc

  1. 类型: DWORD
  2. 作用:
  • 设置为 1: 使用进程堆(HeapAlloc)而非专用内存池分配资源。
  • 用途: 检测内存管理问题(如泄漏或越界访问)。

(7) AllowAsync

  1. 类型: DWORD
  2. 作用:
  • 设置为 1: 允许 RefRast 的异步线程处理命令缓冲区(模拟真实硬件行为)。
  • 默认行为: 异步线程需完成所有工作后主线程才继续。
  • 用途: 测试多线程命令提交的稳定性。

(8) SimulateInfinitelyFastHW

  1. 类型: DWORD
  2. 作用:
  • 设置为 1: RefRast 跳过实际渲染操作,仅模拟命令提交流程。
  • 用途:
  • 性能工具: 测量 CPU 端驱动开销(如 API 调用延迟)。

快速验证应用逻辑,忽略 GPU 执行时间。

  • 3. 典型应用场景

(1) 驱动开发调试

  • 问题复现: 启用 Debug=1 + SingleThreaded=1 简化多线程问题定位。
  • GPU 同步验证: 使用 FenceEachEntryPoint=1 检查命令提交顺序错误。

(2) 应用兼容性测试

  • 内存问题检测: 设置 ForceHeapAlloc=1 结合工具(如 DrMemory)捕捉泄漏。
  • 多显示器隔离: 通过 D3D10RefGdiDisplayMask 限制输出到特定显示器。

(3) 性能分析

  • CPU 开销测量: 启用 SimulateInfinitelyFastHW=1 剥离 GPU 时间,专注驱动逻辑耗时。
  • 异步行为验证: 对比 AllowAsync=0 和 AllowAsync=1 的性能差异。
http://www.dtcms.com/a/263375.html

相关文章:

  • SCAU期末笔记 - 操作系统 选填题
  • 【机器学习第四期(Python)】LightGBM 方法原理详解
  • 跨主机用 Docker Compose 部署 PostgreSQL + PostGIS 主从
  • [特殊字符]【联邦学习实战】用 PyTorch 从 0 搭建一个最简单的联邦学习系统(含完整代码)
  • 编程新手之环境搭建:node python
  • [论文阅读] Neural Architecture Search: Insights from 1000 Papers
  • 创客匠人解析知识变现赛道:从 IP 孵化到商业闭环的核心策略
  • xilinx axi datamover IP使用demo
  • 【STM32HAL-第1讲 基础篇-单片机简介】
  • C#数字格式化全解析:从基础到进阶的实战指南
  • 腾讯云空间,高性能显卡云,安装xinference报错,pip install 空间不够用了
  • leedcode:找到字符串中所有字母异位词
  • 04密码加密
  • 中钧科技参加中亚数字经济对话会,引领新疆企业数字化新征程!
  • 【Teensy】在ArduinoIDE中配置Teensy4.1
  • LoRA 实战指南:NLP 与 CV 场景的高效微调方法全解析
  • 非常详细版: dd.device.geolocation 钉钉微应用获取定位,移动端 PC端都操作,Vue实现钉钉微应用获取精准定位并渲染在地图组件上
  • 强化学习概述及学习流程
  • 视频讲解:门槛效应模型Threshold Effect分析数字金融指数与消费结构数据
  • spring-ai 工作流
  • LG 将正式终止手机相关服务,彻底告别手机市场
  • 机器人、灵巧手动捕方案 | 突破底层适配,动捕数据直通仿真平台
  • 【科研绘图系列】R语言绘制世界地图分布(world map)
  • 【数据挖掘】数据挖掘综合案例—银行精准营销
  • 衡石科技chatbot分析手册--钉钉数据问答机器人配置
  • 纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)
  • 阿里云计算巢私有化MCP市场:企业级AI工具的安全部署新选择
  • hono+postgresql+CURD
  • 华为云Flexus+DeepSeek征文 | 从零开始搭建Dify-LLM应用开发平台:华为云全流程单机部署实战教程
  • FPGA实现CameraLink视频解码转SDI输出,基于LVDS+GTX架构,提供2套工程源码和技术支持