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

Windows 图形显示驱动开发-驱动驻留的供应和回收更改

访问非用户分配

对于 Windows 显示驱动程序模型 (WDDM) v2,有关 套餐 和 回收 的要求正在放宽。 用户模式驱动程序不再需要在内部分配上使用套餐和回收。 空闲/挂起的应用程序将使用 Microsoft DirectX 11.1 中引入的 TrimAPI 删除驱动程序内部资源。

API 级别将继续支持套餐和回收,并且需要用户模式驱动程序将应用程序请求转发到内核,以便将资源提供或回收到内核。 在 WDDM v2 下,不再通过分配列表支持产品/服务分配,因此用户模式驱动程序需要更改其实现套餐和回收的方式。

如果资源在直接内存访问 (DMA) 缓冲区中没有引用,则用户模式驱动程序应立即通过调用 OfferCb 来提供应用程序提供的资源。 如果资源在正在生成的 DMA 缓冲区中具有挂起的引用,则用户模式驱动程序应延迟对 OfferCb 的调用,直到通过 RenderCb 提交依赖的 DMA 缓冲区之后。 图形内核将负责以非阻塞的方式延迟操作,直到提供资源是安全的,因此用户模式驱动程序无需担心必须延迟对 OfferCb 的调用,直到图形处理单元上的依赖操作完成, (GPU) 。

如果呼叫回收位于驻留要求列表中, (即用户或驱动程序已通过 MakeResidentCb 调用) 请求分配驻留,则调用回收将自动在分配中分页。 对于 ReclaimAllocations2Cb,此操作是异步的,并且返回分页围栏,处理方式应与从 MakeResidentCb 返回的围栏相同。 当发出围栏信号时,保证分配在 GPU 上驻留和可用。

从 ReclaimAllocationsCb/ReclaimAllocations2Cb 返回后,立即保证分配的后备存储有效,并且可以通过 Lock2Cb 将分配置于 CPU 访问权限下。 驱动程序无需等待分页围栏即可执行此操作。

访问非用户分配

GPU 对非驻留分配的访问是非法的。 此类访问会导致为生成错误的应用程序删除设备。

有两种不同的模型来处理此类无效访问,具体取决于故障引擎是否支持 GPU 虚拟寻址:

对于不支持 GPU 虚拟寻址并使用分配和修补位置列表来修补内存引用的引擎:

当用户模式驱动程序提交引用不驻留在设备上的分配的分配列表 (即用户模式驱动程序未在该分配) 上调用 MakeResidentCb 时,将发生无效访问。 发生此无效访问时,图形内核会将错误的上下文/设备置于错误状态。

对于支持 GPU 虚拟寻址但访问 GPU 虚拟地址 (VA) 无效的引擎:

GPU 预期会以中断的形式引发不可恢复的页面错误。 发生页面错误中断时,内核模式驱动程序需要通过新的页面错误通知将错误转发到图形内核。 当图形内核收到此通知时,它会在出错的引擎上启动引擎重置,并使错误的上下文/设备出错。 如果引擎重置失败,图形内核会将错误提升为完整的适配器范围的超时检测和恢复 (TDR) 。

访问无效的 VA 可能是因为 VA 后面没有分配,或者存在有效的分配,但它不是驻留的。

进程驻留预算

在 Windows 显示驱动程序模型 (WDDM) v2 中,将为进程分配预算,用于保留其驻留的内存量。 此预算可能会随时间而变化,但通常仅在系统面临内存压力时才施加。 在 Microsoft Direct3D 12 之前,预算由用户模式驱动程序以 剪裁 通知和 MakeResident 故障的形式 处理STATUS_NO_MEMORY。 TrimToBudget 通知、 Evict 和失败的 MakeResident 调用均以整数 NumBytesToTrim 值的形式返回最新预算,该值指示需要剪裁多少才能适应新预算。

对于 Direct3D 12 应用程序,预算完全由应用程序处理。 预算大小旨在提供提示,让应用程序知道要调整自己的大小。 通过使用预算大小作为提示,应用程序可以决定保留驻留的资源数、要保留的分辨率和资源质量。

若要正确管理这些预算,内核需要知道哪些内存应参与预算。 DXGK_SEGMENTFLAGS2 结构中有一个新的 ApplicationTarget 位,需要在内核模式驱动程序希望包含在预算逻辑中的段上设置。 例如,在一个离散图形处理单元上, (GPU) 具有 1 段适合应用程序使用的 VRAM,以及 1 段自动用于特殊用途资源的 VRAM,驱动程序可能只会将主要 VRAM 段标记为 ApplicationTarget。 对于集成 GPU,main内存调节段通常是标记的。 可以标记为 ApplicationTarget 的段数没有限制。 内核会将这些聚合在一起,并使用统一大小呈现应用程序。

相关文章:

Windows 图形显示驱动开发-驱动驻留的供应和回收更改

访问非用户分配 对于 Windows 显示驱动程序模型 (WDDM) v2,有关 套餐 和 回收 的要求正在放宽。 用户模式驱动程序不再需要在内部分配上使用套餐和回收。 空闲/挂起的应用程序将使用 Microsoft DirectX 11.1 中引入的 TrimAPI 删除驱动程序内部资源。 API 级别将继…...

【含文档+PPT+源码】基于Python的图书推荐系统的设计与实现

课程简介: 本课程演示的是一款基于python的图书推荐系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行…...

glob 用法技巧

目录 处理大量文件节省内存 匹配多个文件扩展名 遍历多种格式文件 遍历某一个文件: 查找当前目录和子目录 6. 排除特定文件 7. 大小写不敏感匹配 8. 获取绝对路径 9. 处理特殊字符 处理大量文件节省内存 技巧:用 iglob 替代 glob,逐…...

Windows 启动 SSH 服务

Windows 启动 SSH 服务 一、OpenSSH Server 安装 以 Win10 系统为例 打开设置 -> 系统 -> 可选功能 在 添加的功能 查看是否安装了 OpenSSH 服务 或者 OpenSSH Server 如果没有安装,找到 系统->添加可选功能 -> 查看功能->搜索 OpenSSH 服务 ->…...

基于Llama 3.2-Vision的医学报告生成

记录运用大模型解决医学报告实例,仅介绍本地调用的情况。 前情提要 已安装 Python 显存不少于8G(8G设备上测试成功,其他环境可以自行测试)。 需要安装Ollama (Ollama 是一个允许在本地运行多模态模型的平台)。 方式1&#xff1…...

Freertos学习第一篇-总体概述

目录 1、基础概念1.1、FreeRTOS概念 2、模块学习2.1、任务2.2、调度(Scheduling)2.3、任务间通讯2.4、时间管理2.5、内存管理 3、各模块串联逻辑3.1、任务创建与调度3.2、任务间通讯3.3、时间管理3.4、内存管理 4、示例代码4.1、代码说明 5、学习路线建议…...

Windows系统安装GPU驱动/CUDA/cuDNN

1、驱动安装步骤 1.1下载驱动 通过浏览器访问Download The Official NVIDIA Drivers | NVIDIA 1.2安装驱动 1.3检查 打开【设备管理器】—【显示适配器】 2、CUDA安装步骤 2.1下载CUDA 官网链接CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA 开发者 2.2安装CUDA 3、cuDN…...

Nginx 安装及配置教程(Windows)【安装】

文章目录 一、 Nginx 下载 1. 官网下载2. 其它渠道 二、 Nginx 安装三、 配置四、 验证五、 其它问题 1. 常用命令2. 跨域问题 软件 / 环境安装及配置目录 一、 Nginx 下载 1. 官网下载 安装地址:https://nginx.org/en/download.html 打开浏览器输入网址 htt…...

一只企鹅如何改变世界

一、历史的转折点:一只企鹅如何改变世界 1991年,芬兰大学生Linus Torvalds在邮件列表中写道:“我正在做一个自由的操作系统(只是爱好,不会像GNU那样庞大专业)”。这个后来被称为Linux内核的项目,与GNU项目的结合,点燃了开源运动的燎原之火。 关键演化: 1996年:Tux企…...

linux进程的内存空间映射(段)

Linux进程的内存空间映射 在 Linux 中,每个进程的内存空间是一个虚拟地址空间,操作系统通过内存映射机制(Memory Mapping)将不同的内存区域分配给不同类型的资源和需求。内存空间映射决定了进程如何访问不同类型的内存&#xff0…...

前端导出word文件,并包含导出Echarts图表等

基础导出模板 const html <html><head><style>body {font-family: Times New Roman;}h1 {text-align: center;}table {border-collapse: collapse;width: 100%;color: #1118FF;font-weight: 600;}th,td {border: 1px solid black;padding: 8px;text-align: …...

武汉火影数字|VR大空间内容制作:开启沉浸式体验新时代

近年来&#xff0c;随着VR技术的飞速发展&#xff0c;VR大空间制作逐渐成为行业的热门话题。它突破传统VR的空间限制&#xff0c;为用户带来了更加自由、沉浸的体验。无论是娱乐、教育还是工业领域&#xff0c;VR大空间制作都在悄然改变我们的生活和工作方式。 什么是VR大空间制…...

【拥抱AI】GPT Researcher的诞生

一、GPT Researcher 研究过程总结 GPT Researcher 是一个开源的自主智能体&#xff0c;旨在通过利用人工智能技术实现高效、全面且客观的在线研究。它通过一系列创新的设计和优化&#xff0c;解决了传统研究工具&#xff08;如 AutoGPT&#xff09;中存在的问题&#xff0c;如…...

Mac端homebrew安装配置

拷打了一下午o3-mini-high&#xff0c;不如这位博主的超强帖子&#xff0c;10分钟结束战斗 跟随该文章即可&#xff0c;2025/2/19亲测可行 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客文章浏览阅读10w次&#xff0c;点赞258次&#xff0c;收藏837次。一直觉得自己写…...

第四篇:开源生态与蒸馏模型的价值

开篇:从单体模型到生态赋能 DeepSeek-R1 的发布不仅是一款推理模型的亮相,更是一个全新生态的起点。在前三篇中,我们剖析了 R1 的诞生背景、技术核心和性能实力,但它的意义远不止于此。2024 年末,DeepSeek 团队不仅开源了 R1-Zero 和 R1 的完整权重,还推出了基于 Qwen 和…...

C语言——深入理解指针(3)

文章目录 字符指针变量数组指针变量数组指针变量是什么&#xff1f;数组指针变量怎么初始化 二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用两段关于函数的有趣代码typedef关键字 函数指针数组转移表第一种写法&#xff1a;第二种写法&#xff08;函数指…...

CentOS 7 企业级Redis 7部署指南

CentOS 7 企业级Redis 7部署指南 目录导航 一、环境准备 1.1 依赖管理 二、离线安装 2.1 源码编译安装2.2 目录结构规范 三、生产配置 3.1 主配置文件3.2 配置生成脚本 四、系统集成 4.1 Systemd服务文件4.2 服务管理命令 五、安全加固 5.1 网络安全配置5.2 审计配置 六、性能…...

Linux-C/C++《C++/1、C++基础》(C++语言特性、面向对象等)

这里主要介绍概念为主&#xff0c;主要介绍 C与 C 语言中常用的不同点&#xff0c;和一些新的变化。其中不会去说指针、数据类型、变量类型、判断和循环等这些知识&#xff0c;这些和C 语言基本是一样使用的。我们主要学习 C的面向对象编程&#xff0c;对学习 Qt 有很大的帮助。…...

Java-11

淘天集团2025届春季校园招聘在线笔试-研发 1。设有一个顺序共享栈storageArray[70]&#xff0c;其中栈X的栈顶指针top1的初值为-1&#xff0c;栈Y的栈顶指针top2的初值为70&#xff0c;通过不断进行入栈操作&#xff0c;直到storageArray数组已满&#xff0c;此时top1 top2 …...

第4章 信息系统架构(四)

4.6 网络架构 网络是信息技术架构中的基础&#xff0c;不仅是用户请求和获取IT信息资源服务的通道&#xff0c;同时也是 信息系统架构中各类资源融合和调度的枢纽。特别是云计算、大数据和移动互联网技术飞速发 展的今天&#xff0c;网络更加成为实现这些技术跨越的重要环节。…...

用C++ Qt实现安卓电池充电动效 | 打造工业级电量控件

一、为什么需要自定义电池控件&#xff1f; 在工业控制、车机系统、智能硬件等领域的UI开发中&#xff0c;电池状态显示是高频出现的UI组件。通过实现一个支持颜色渐变、动态充电动画、警戒阈值提示的电池控件&#xff0c;开发者可以系统掌握以下核心能力&#xff1a; Qt绘图…...

【第二节】C++设计模式(创建型模式)-抽象工厂模式

目录 引言 一、抽象工厂模式概述 二、抽象工厂模式的应用 三、抽象工厂模式的适用场景 四、抽象工厂模式的优缺点 五、总结 引言 抽象工厂设计模式是一种创建型设计模式&#xff0c;旨在解决一系列相互依赖对象的创建问题。它与工厂方法模式密切相关&#xff0c;但在应用…...

自用题库---面试使用

1、css中如何实现水平垂直居中 方法一&#xff1a;flex&#xff1a; display: flex; justify-content: center; align-item: center;方法二&#xff1a;绝对定位margin:auto: position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin:auto;方法三&#xff1a;已…...

【Mysql】我在广州学Mysql 系列—— 有关日志管理的示例

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天星期四了&#xff0c;明天周五&#xff0c;美好的周末又要到了&#xff01;&#xff01;&#x1f606; 本文是对MySQL日志管理内容进行练习&#xff0c;后续将添加更多相关知识噢&#xff0c;谢谢各位的支持&#x1f64f; 复习…...

dify如何升级到0.15.3(目前最新版本)

Docker Compose 部署 警告 docker-legacy 目录中的文件将很快停止维护&#xff0c;并将从存储库中删除。如果您仍在使用它们&#xff0c;请尽快切换到新版本。 备份自定义的 docker-compose YAML 文件&#xff08;可选&#xff09; cd docker cp docker-compose.yaml docker-c…...

UNIAPP开发之利用阿里RTC服务实现音视频通话后端THINKPHP5

下面是一个使用ThinkPHP 5实现后端逻辑的示例。我们将创建一个简单的ThinkPHP 5项目来处理生成推流和播流地址的请求。 后端部分&#xff08;ThinkPHP 5&#xff09; 1. 初始化ThinkPHP 5项目 首先&#xff0c;确保你已经安装了Composer。然后使用Composer创建一个新的Think…...

使用JWT实现微服务鉴权

目录 一、微服务鉴权 1、思路分析 2、系统微服务签发token 3、网关过滤器验证token 4、测试鉴权功能 前言&#xff1a; 随着微服务架构的广泛应用&#xff0c;服务间的鉴权与安全通信成为系统设计的核心挑战之一。传统的集中式会话管理在分布式场景下面临性能瓶颈和扩展性…...

基于WOA鲸鱼优化的WSN网络最优节点部署算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 鲸鱼优化算法&#xff08;WOA&#xff09;是一种模拟座头鲸捕食行为的元启发式优化算法。其主要原理基于座头鲸独特的 “气泡网” 捕食策略&#xff0c;通过数学模…...

TikTok账户安全指南:如何取消两步验证?

TikTok账户安全指南&#xff1a;如何取消两步验证&#xff1f; 在这个数字化的时代&#xff0c;保护我们的在线账户安全变得尤为重要。TikTok&#xff0c;作为全球流行的社交媒体平台&#xff0c;其账户安全更是不容忽视。两步验证作为一种增强账户安全性的措施&#xff0c;虽…...

将 Type Code 替换为 State/Strategy 模式

Replace Type Code with State/Strategy 要将 Type Code 替换为 State/Strategy 模式&#xff0c;你的目的是通过将行为分离到独立的类中来消除使用类型代码&#xff08;如整数、字符串或枚举类型&#xff09;来决定行为的需要。这种做法能够让系统变得更加灵活和易于维护。 …...

c#爬取数据并解析json

安装 Newtonsoft.Json Install-Package Newtonsoft.Json代码 HttpClient client new HttpClient();// 获取网页内容HttpResponseMessage response client.GetAsync("https://opentdb.com/api.php?amount10&category18&difficultyeasy&typemultiple"…...

Spring Boot 内置工具类

ObjectUtils // 获取对象的类名。参数为 null 时&#xff0c;返回字符串&#xff1a;"null" String nullSafeClassName(Object obj) // 参数为 null 时&#xff0c;返回 0 int nullSafeHashCode(Object object) // 参数为 null 时&#xff0c;返回字符串&#xff1…...

蓝桥杯15 填空题

1.握手问题&#xff1a; 思路&#xff1a;首先当所有人都握过手&#xff0c;由于一次握手相当于两个人都握手过&#xff0c;所以容易发现这是一个组合问题&#xff0c;为&#xff08;50*49&#xff09;/2&#xff0c;而其中有7个人没有相互握过手&#xff0c;那么减去&#xff…...

分布式光纤声波振动技术在钻井泄漏检测中的应用

在石油天然气的钻井作业中&#xff0c;及时发现并定位泄漏点对于保障开采安全、降低环境污染以及避免经济损失至关重要。传统的泄漏检测方法往往存在局限性&#xff0c;而分布式光纤声波振动技术凭借其独特的优势&#xff0c;正逐渐成为钻井过程中寻找泄漏的有力工具。 技术原理…...

0081.基于springboot+uni-app的垃圾分类小程序+论文

一、系统说明 基于springbootuni-app的垃圾分类小程序,系统功能齐全, 代码简洁易懂&#xff0c;适合小白学编程。 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本…...

基于STM32+ESP8266+手机 APP+阿里云的智能小车设计与实现(系统资料)

基于STM32+ESP8266+手机APP+阿里云的智能小车设计与实现 摘要:本研究旨在设计一款高度智能化的智能小车系统,通过集成 STM32 微控制器、ESP8266 无线模块、手机 APP 以及阿里云平台,实现环境数据实时采集、远程精准控制和高效的数据交互。详细阐述系统各部分的设计原理、实…...

分布式 IO 模块:水力发电设备高效控制的关键

在能源领域不断追求高效与可持续发展的今天&#xff0c;水力发电作为一种清洁、可再生的能源形式&#xff0c;备受关注。而要实现水力发电设备的高效运行&#xff0c;精准的控制技术至关重要。分布式 IO 模块&#xff0c;正悄然成为水力发电设备高效控制的核心力量。 传统挑战 …...

Spring Boot +SQL项目优化策略,GraphQL和SQL 区别,Spring JDBC 等原理辨析(万字长文+代码)

WebFlux 定义&#xff1a;Spring 5引入的响应式Web框架&#xff0c;基于Reactor库实现非阻塞、异步编程模型。通常用途&#xff1a;构建实时通信、流数据处理等高并发场景。使用异步事件驱动模型&#xff0c;单线程可处理数千并发连接。用途&#xff1a;处理高并发网络请求&am…...

QSNCTF-WEB做题记录

第一题&#xff0c;文章管理系统 来自 <天狩CTF竞赛平台> 描述&#xff1a;这是我们的文章管理系统&#xff0c;快来看看有什么漏洞可以拿到FLAG吧&#xff1f;注意&#xff1a;可能有个假FLAG哦 1&#xff0c;首先观察题目网站的结构和特征 这个一个文件管理系统&#x…...

使用Dify将AI机器人嵌入到你的前端页面中及chrome的扩展应用

目录 1 博主有话说2 前提环境3 Dify创建个聊天助手应用4 将AI聊天机器人嵌入到html中5 将AI聊天机器人设置为chrome的扩展应用6 博主增语 1 博主有话说 那博主话不多说&#xff0c;先展示一下成果&#xff01; 这个界面是使用dify配置的一个“聊天助手”的应用&#xff0c;助…...

接口测试-API测试中常用的协议(下)

一、RPC RPC&#xff08;Remote Procedure Call&#xff09;即远程过程调用协议&#xff0c;它允许程序调用位于其他计算机上的程序中的过程或函数&#xff0c;就像调用本地程序中的过程一样。下面从其概念、工作原理、特点、应用场景等方面详细介绍&#xff1a; 概念起源与核…...

【git】提交修改、回撤、回滚、Tag 操作讲解,与reset (--soft、--mixed、--hard) 的区别

Git 提交修改、回撤、回滚、Tag 操作详解 1. git commit --amend -m "message" 作用&#xff1a;修改最近一次提交的信息或内容。 适用场景&#xff1a; 提交后发现 commit message 写错了。提交后发现 少 add 了文件&#xff0c;想直接加进上一次提交。 示例 1&…...

【设计模式】【创建型模式】抽象工厂模式(Abstract Factory)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…...

Embedding模型介绍部署部署

概述 是一种将高维数据&#xff08;如‌文本、图像、音频&#xff09;映射到低维空间的技术&#xff0c;其中每个数据点由实数构成的向量表示&#xff0c;这些向量在向量空间中的位置反映了数据的语义特征。这种技术广泛应用于‌自然语言处理和‌机器学习中&#xff0c;使得计…...

web网络安全:跨站脚本攻击(XSS)

跨站脚本攻击&#xff08;XSS&#xff09;概述 跨站脚本攻击&#xff08;XSS&#xff0c;Cross-Site Scripting&#xff09; 是一种常见的 Web 安全漏洞&#xff0c;攻击者通过向受信任的网站注入恶意脚本&#xff08;通常是 JavaScript&#xff09;&#xff0c;诱使其他用户在…...

【C++】 Flow of Control

《C程序设计基础教程》——刘厚泉&#xff0c;李政伟&#xff0c;二零一三年九月版&#xff0c;学习笔记 文章目录 1、选择结构1.1、if 语句1.2、嵌套的 if 语句1.3、条件运算符 ?:1.4、switch 语句 2、循环结构2.1、while 语句2.2、do-while 语句2.3、 for 循环2.4、循环嵌套…...

Kafka中commitAsync的使用与实例解析

在使用Apache Kafka进行消息处理时&#xff0c;正确管理偏移量&#xff08;offset&#xff09;是确保数据一致性和可靠性的重要环节。Kafka提供了多种方式来提交偏移量&#xff0c;其中commitAsync()方法是一种高效且灵活的选择。本文将通过一个完整的实例&#xff0c;详细介绍…...

上海餐饮冷藏配送全方案 一站式服务助企提速发展

在上海这座国际化大都市中&#xff0c;餐饮行业以其繁荣与多元著称。消费者对食品安全和品质要求的日益提高&#xff0c;餐饮冷链运输成为了保障餐饮供应链稳定、高效的关键环节。近日&#xff0c;华鼎冷链科技凭借其创新的一站式服务方案&#xff0c;在上海餐饮冷链领域脱颖而…...

基于微信小程序的电影院订票选座系统的设计与实现,SSM+Vue+毕业论文+开题报告+任务书+指导搭建视频

本系统包含用户、管理员两个角色。 用户角色&#xff1a;注册登录、查看首页电影信息推荐、查看电影详情并进行收藏预定、查看电影资讯、在线客服、管理个人订单等。 管理员角色&#xff1a;登录后台、管理电影类型、管理放映厅信息、管理电影信息、管理用户信息、管理订单等。…...

Java 面试笔记 - Java基础

1 、JDK、JRE 和 JVM 是 Java 开发与运行环境中的三个核心组件&#xff0c;它们之间的关系和区别如下&#xff1a; 1. JDK (Java Development Kit) 定义&#xff1a;JDK 是 Java 开发工具包&#xff0c;包含了开发 Java 应用程序所需的所有工具和库。包含内容&#xff1a; 编…...