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

window显示驱动开发—混合系统 DDI 和 dList DLL 支持

从 Windows 8.1(WDDM 1.3)开始,引入了对混合系统上跨适配器资源的支持。 可以使用以下用户模式和内核模式函数、结构和枚举:

  • D3D10_DDI_RESOURCE_MISC_FLAG 枚举
  • D3DDDI_RESOURCEFLAGS2 结构
  • D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 结构
  • D3DKMDT_GDISURFACEDATA 结构
  • D3DKMDT_GDISURFACETYPE 枚举
  • DXGK_DRIVERCAPS 结构
  • DXGK_VIDMMCAPS 结构
  • pfnQueryDListForApplication1 函数

从 Windows Server 2022(WDDM 2.9)开始引入了 跨适配器资源扫描 (CASO)功能。 为 CASO 添加了以下附加支持:

  • pfnQueryDListForApplication2 函数(已添加)
  • D3DDDI_DLIST_QUERY_RESULT 枚举(新增)
  • D3DDDI_DLIST_QUERY_DECISION_FACTOR 枚举(已添加)
  • NoHybridDiscreteDListDllSupport 已添加到 DXGK_DRIVERCAPS 结构
  • CrossAdapterResourceTexture 和 CrossAdapterResourceScanout 已添加到 DXGK_VIDMMCAPS 结构中

 备注

在 Windows Server 2022(WDDM 2.9)及更高版本的作系统上,混合系统上的用户模式显示驱动程序(UMD)必须支持 pfnQueryDListForApplication2 DDI,这将取代 pfnQueryDListForApplication1,而不管它是否实现对 CASO 的支持。

配置 dList DLL。

dList 是一个应用程序列表,这些应用程序需要跨适配器共享图面才能在离散 GPU 上实现高性能呈现。

离散 GPU 的 UMD 安装一个单独的小型 dList DLL,用于导出其 pfnQueryDListForApplication2 函数。 操作系统本身不会决定应用程序应在哪个 GPU 上运行。 相反,Direct3D 运行时在 Direct3D 初始化期间最多调用 pfnQueryDListForApplication2 一次。

驱动程序必须查询进程信息的 up-to日期列表,以确定进程是否需要离散 GPU 而不是集成 GPU 的增强性能。

为了获得最佳性能,DLL 应:

  • 大小小于 200 KB
  • 将分配保留为最小值
  • 能够在 4 毫秒内从 pfnQueryDListForApplication2 返回。

注册 dList DLL

UMD 在其 INF 文件的注册表项 UserModeDListDriverName 和 UserModeDListDriverNameWow 下提供了小 dList DLL 的名称,其中后者位于 Wow64 注册表项下。 下面是 INF 代码示例:

[Xxx_SoftwareDeviceSettings]
...
HKR,, UserModeDListDriverName,    %REG_MULTI_SZ%, dlistumd.dll
HKR,, UserModeDListDriverNameWow, %REG_MULTI_SZ%, dlistumdwow.dll

 

http://www.dtcms.com/a/349360.html

相关文章:

  • Shell 循环编程:for 与 select 轻松入门
  • HTTP 与 HTTPS 深度解析:从原理到实际应用
  • Kubernetes (K8s)入门指南:Docker之后,为什么需要容器编排?
  • 安全合规:AC(上网行为安全)--下
  • LeetCode热题100--102. 二叉树的层序遍历--中等
  • 什么是JSON-RPC 2.0,在项目中应该怎么使用
  • 09-数据存储与服务开发
  • GPIO子系统自主实现(简单版)
  • C++ static 关键字面试深度解析
  • 匹配网络处理不平衡数据集的6种优化策略:有效提升分类准确率
  • 【每天一个知识点】大模型训推一体机
  • RK3128 Android 7.1 进入深度休眠流程分析
  • Apache Maven 3.1.1 (eclipse luna)
  • Portswigger靶场之 Blind SQL injection with time delays通关秘籍
  • 维度建模 —— 雪花模型 和 星型模型的优缺点
  • 异常记录-神通数据库-已解决
  • go-redis库使用总结
  • jasperreports 使用
  • Vmware centos系统中通过docker部署dify,网络超时和磁盘容量解决方案
  • 解决getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装
  • 容易忽视的TOS无线USB助手配网和接入USB使用: PC和TOS-WLink需要IP畅通,
  • 社群团购平台与定制开发开源AI智能名片S2B2C商城小程序的融合创新研究
  • 解构 Spring Boot “约定大于配置”:从设计哲学到落地实践
  • 在Excel和WPS表格中拼接同行列对称的不连续数据
  • XC95144XL-10TQG144I Xilinx XC9500XL 高性能 CPLD
  • 信贷模型域——清收阶段模型(贷后模型)
  • 关于内存泄漏的一场讨论
  • [Android] 人体细胞模拟器1.5
  • leetcode 238 除自身以外数组的乘积
  • 可信医疗大数据来源、院内数据、病种数据及编程使用方案分析