Windows 图形显示驱动开发-WDDM 2.1 功能(一)

news2025/4/3 6:10:20

WDDM 2.1 要求表

功能

适用性
供应和回收改进必需
视频内存管理可选
硬件保护内容的可靠性改进选择硬件
支持 Windows GameDVR 的应用程序
必需
间接显示选择硬件
驱动程序存储和并行安装必需
适用于摄像头/捕获场景的 DirectX 内存图面共享必需

WDDM 2.1 支持以下 D3D 版本:D3D9、D3D10、D3D10.1、D3D11、D3D11.x、D3D12

 供应和回收改进

添加了 PFND3DDDI_RECLAIMALLOCATIONS3CB 回调函数,以减少在后台模式下运行的应用程序的内存占用。 此接口可让应用程序在进入后台时提供可接受完全回收的资源。 因此,进程生存期管理器能够从使用 DirectX 的后台程序中回收更多内存,从而减少后台程序在内存压力下被终止的次数。

其他 DDI 更改:

  • PFND3DDDI_UPDATEALLOCATIONPROPERTYCB 回调
  • PFND3DDDI_OFFERALLOCATIONS2CB 回调
  • D3DDDICB_OFFERALLOCATIONS2 结构
  • D3DDDICB_RECLAIMALLOCATIONS3 结构

支持 Windows GameDVR 的应用程序

Windows 10 周年版改进了全屏游戏中使用 Windows 游戏栏和 GameDVR 的功能。

WDDM 2.1 驱动程序需要支持名为当前批处理的性能功能,该功能为翻转模型交换链添加了多线程支持。 此基本功能可确保带游戏栏的全屏游戏以与早期版本 Windows 相同的性能运行。

为启用此功能添加了以下 DDI:

  • PFND3DDDI_SYNCTOKENCB 回调
  • D3DDDIARG_SYNCTOKEN 结构
  • PFND3DDDI_SYNCTOKEN 回调

间接显示

在 WDDM 2.1 中,“间接显示”使 USB 连接的显示器能够像其他监视器一样,参与所有相同的用户体验。 此外,间接显示驱动程序 (IDD) 是一种用户模式驱动程序,开发起来比内核模式驱动程序简单,因此有助于提高系统的整体可靠性。

  1. 在 WDDM 2.1 中,启用了以下 USB 显示功能/体验:
  2. 当 USB 显示器连接到 Windows 平台或升级操作系统时,会从 Windows 更新下载并安装适当的驱动程序。
  3. 将监视器连接到 USB 显示硬件时,将检测并设置正确的监视器拓扑结构、分辨率和 DPI。
  4. 用户可以在监视器上更改其分辨率和缩放。
  5. 用户可以断开 USB 显示器并重新连接显示器,而不会产生意想不到的副作用。
  6. 通过断开连接并重新连接到同一监控器,监控器拓扑结构将得以保留。
  7. USB 显示器可在睡眠和休眠等各种电源状态下正常工作。

驱动程序存储和并行安装

WDDM 2.1 引入了通过驱动程序存储安装图形驱动程序的功能。 这种安装图形驱动程序的机制提高了 Windows Update 驱动程序更新的复原能力。 它能消除驱动程序文件版本不匹配导致的系统不稳定和用户发起的重启。 每个后续驱动程序更新都将直接从其在驱动程序存储中的唯一位置(即 System32\DriverStore\FileRepository\[…])运行,从而避免驱动程序文件覆盖和不匹配。

驱动程序存储功能的实现需要更改图形驱动程序 INF 文件,以确保驱动程序文件被复制到唯一的驱动程序存储库。

DXIL

WDDM 2.1 引入了 GPU 着色器编译器堆栈从 DirectX 字节代码 (DXBC) 到 DirectX 中间语言 (DXIL) 的过渡,这是一种向 GPU 传输着色器指令的较新格式。 过渡到 DXIL 可为开发人员带来以下好处:

  • 可编程性。 通过最大限度地减少 GPU 编程语法与开发人员熟悉的 CPU 语言之间的差异,提高了开发的易用性,降低了着色器创建过程对开发人员的复杂性。
  • 高性能编译器:
  1. 启用运行时着色器性能可提高性能。
  2. DXIL 提供了一套内在函数,可在 GPU 的 SIMD 处理器通道间共享数据。
  • 工作流灵活性 - DXIL 使开发人员能够控制自己的自定义工具和优化程序,并选择在生成时应用哪些编译步骤,而不是在运行时应用哪些编译步骤。
  • 高级语言功能 - 高级语言可提供关键功能,从而消除 GPU 代码与 CPU 代码之间的差异,使得 GPU 程序员的学习曲线更加平坦。

这些功能的重点是为开发人员带来好处,而最终用户得到的好处是,即使在现有硬件上运行,新游戏或更新游戏的性能也会有所提高。

适用于摄像头/捕获场景的 DirectX 内存图面共享

在 WDDM 2.1 中,引入了帧服务器组件,以便在多个进程中同时共享摄像头或捕获设备。 捕获的帧可以保存到一个内存位置,多个应用程序都可以从中读取,而无需在进程和协处理器之间多次复制图像数据。 此功能可为符合 WDDM 2.1 标准的硬件和驱动程序提供跨多个进程的高效捕获图片管理、节能、更低的带宽和减少延迟。 最终结果是提高应用程序和用户的性能。

帧服务器将捕获的图像分配为跨进程可共享内存,并将该内存共享给请求访问的进程。 由于帧服务器会将纹理广播给多个客户端进程,因此纹理必须支持并发读取。 为此,目前支持 NV12 纹理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2326340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全局曝光与卷帘曝光

文章目录 曝光方式优点缺点应用场景 为何全局曝光帧率比卷帘曝光方式低 卷帘曝光和全局曝光是CMOS传感器两种常见的曝光模式,以下是二者的对比: 参考:B站优致谱视觉 曝光方式 卷帘曝光:传感器的每一行像素按顺序逐行扫描曝光&…

【一起来学kubernetes】31、Helm使用详解

一、Helm 简介 Helm 是 Kubernetes 的包管理工具,类比 Linux 中的 yum 或 apt,用于简化应用的打包、部署和版本管理。其核心功能包括: Chart 管理:将 Kubernetes 资源(Deployment、Service 等)打包为可复…

python 常用的6个爬虫第三方库

Python中有非常多用于网络数据采集的库,功能非常强大,有的用于抓取网页,有的用于解析网页,这里介绍6个最常用的库。 1. BeautifulSoup BeautifulSoup是最常用的Python网页解析库之一,可将 HTML 和 XML 文档解析为树形…

blender场景导入Unity的流程(个人总结)

处理找不到贴图的问题 blender场景导入Unity遇到的主要问题是贴图找不到。经研究是blender里材质的着色器结构不是贴图-原理化BSDF-输出导致的。目前还没有自动解决方法,总结了一个效率还可以的手动解决流程。 打开后到材质预览,看一下显示没问题&…

可编辑36页PPT | “新基建”在数字化智慧高速公路中的支撑应用方案智慧高速解决方案智慧交通方案

这份文档是一份关于“新基建”在数字化智慧高速公路中支撑应用方案的PPT内容介绍,它详细阐述了新基建在智慧高速建设中的背景、总体要求和建设内容。从政策背景来看,多个政府部门发布了相关政策文件,推动交通运输基础设施的数字化升级和智慧交…

一文解读DeepSeek在保险业的应用

引言 随着人工智能技术的深度渗透,保险行业正经历从传统经验驱动向数据智能驱动的转型。作为国产高性能开源大模型的代表,DeepSeek 凭借其低成本、高推理效率及跨模态处理能力,已成为保险机构突破服务瓶颈、重构业务逻辑的核心工具。截止目前…

物联网时代,HMI 设计的创新机遇与挑战

随着物联网(IoT)技术的蓬勃发展,各种智能设备如雨后春笋般涌现,从智能家居到智慧城市,物联网的应用场景愈发广泛。作为人与设备之间的桥梁,人机界面(HMI)设计在物联网时代扮演着至关…

【区块链安全 | 第二十四篇】单位和全局可用变量(二)

文章目录 单位和全局可用变量(Units and Globally Available Variables)特殊变量和函数1. 区块和交易属性2. ABI 编码和解码函数3. bytes 成员函数4. string 成员函数5. 错误处理6. 数学和加密函数7. 地址类型成员函数8. 与合约相关9. 类型信息 单位和全…

C语言:指针数组、函数、二级指针

1.指针数组 指针数组是一个数组,数组中的每个元素都是指针。这些指针可以指向各种类型的数据,如整数、字符、结构体等,甚至可以指向其他数组或函数。 指针数组的声明格式通常为: 数据类型 *数组名[数组大小];其中,数…

批量修改记事本文本文件编码,可以解决文本文件乱码问题

对于文本文件来说,通常都可以设置不同的编码格式,每一种不同的编码格式支持的字符都可能是不一样的。因此当编码格式出现错误的时候,文本文件可能会出现乱码的问题。如何将文本文件的编码由一种格式变为另外一种格式呢?如果文件出…

亚马逊云科技提供完全托管的DeepSeek-R1模型

近日,亚马逊云科技宣布在Amazon Bedrock上线完全托管的DeepSeek-R1模型。DeepSeek是首个登陆Amazon Bedrock的国产大模型,自今年1月底推出以来,已有数千客户使用Amazon Bedrock的自定义模型导入功能部署了DeepSeek-R1模型。 DeepSeek在过去几…

利用 Chrome devTools Source Override 实现JS逆向破解案例

之前讲解 Chrome 一大强势技术 override 时,给的案例貌似没有给大家留下多深的印象 浏览器本地替换(local overrides)快速定位前端样式问题的案例详解(也是hook js的手段)_浏览器的 overrides 替换功能-CSDN博客 其实…

容器C++ ——STL常用容器

string容器 string构造函数 #include<iostream> using namespace std; #include<string.h> void test01() {string s1;//默认构造const char* str "hello world";string s2(str);//传入char*cout << "s2" << s2 << endl;s…

npu踩坑记录

之前使用qwen系列模型在ascend 910a卡进行了一些生成任务, 贴出踩坑过程也许对遇到类似问题的同学有帮助: ) 目录 千问 qwq32环境配置 代码部署 生成内容清洗 已生成内容清洗 生成过程优化 Failed to initialize the HCCP process问题 assistant 的历史回答丢失 推理执…

Linux信号——信号的产生(1)

注&#xff1a;信号vs信号量&#xff1a;两者没有任何关系&#xff01; 信号是什么&#xff1f; Linux系统提供的&#xff0c;让用户&#xff08;进程&#xff09;给其他进程发送异步信息的一种方式。 进程看待信号的方式&#xff1a; 1.信号在没有发生的时候&#xff0c;进…

【机器学习】——机器学习思考总结

摘要 这篇文章深入探讨了机器学习中的数据相关问题&#xff0c;重点分析了神经网络&#xff08;DNN&#xff09;的学习机制&#xff0c;包括层级特征提取、非线性激活函数、反向传播和梯度下降等关键机制。同时&#xff0c;文章还讨论了数据集大小的标准、机器学习训练数据量的…

JMeter进行分布式压测

从机&#xff1a; 1、确认防火墙是否关闭&#xff1b; 2、打开网络设置&#xff0c;关闭多余端口&#xff1b;&#xff08;避免远程访问不到&#xff09; 3、打开JMeter/bin 目录底下的jmeter.properties&#xff1b; remove_hosts设置当前访问地址&#xff0c;192.XXXXX&…

快速入手-基于Django-rest-framework的第三方认证插件(SimpleJWT)权限认证扩展返回用户等其他信息(十一)

1、修改serializer.py&#xff0c;增加自定义类 # 自定义用户登录token等返回信息 class MyTokenObtainPair(TokenObtainPairView): def post(self, request, *args, **kwargs): serializer self.get_serializer(datarequest.data) try: serializer.is_valid(raise_exceptio…

关于IP免实名的那些事

IP技术已成为个人与企业保护隐私、提升网络效率的重要工具。其核心原理是通过中介服务器转发用户请求&#xff0c;隐藏真实IP地址&#xff0c;从而实现匿名访问、突破地域限制等目标。而“免实名”代理IP的出现&#xff0c;进一步简化了使用流程&#xff0c;用户无需提交身份信…

【SQL性能优化】预编译SQL:从注入防御到性能飞跃

&#x1f525; 开篇&#xff1a;直面SQL的"阿喀琉斯之踵" 假设你正在开发电商系统&#x1f6d2;&#xff0c;当用户搜索商品时&#xff1a; -- 普通SQL拼接&#xff08;危险&#xff01;&#xff09; String sql "SELECT * FROM products WHERE name "…