Windows 图形显示驱动开发-初始化WDDM 1.2 和 PnP

(WDDM) 1.2 及更高版本显示微型端口驱动程序的所有 Windows 显示驱动程序都必须支持以下行为,以响应即插即用 (PnP) 基础结构启动和停止请求。 根据驱动程序返回成功或失败代码,或者系统硬件是基于基本输入/输出系统 (BIOS) 还是统一可扩展固件接口 (UEFI) ,行为可能会有所不同。

显示微型端口驱动程序 PnP DDI

从 Windows 8 开始,Microsoft DirectX 图形内核子系统提供此函数,当显示设备启动或从休眠状态恢复时,驱动程序可以调用该函数:

DxgkCbAcquirePostDisplayOwnership
这些函数和结构可用于显示微型端口驱动程序,以实现 WDDM 1.2 及更高版本的 PnP 要求:

DxgkDdiStopDeviceAndReleasePostDisplayOwnership
DxgkDdiSystemDisplayEnable
DxgkDdiSystemDisplayWrite
DXGK_DISPLAY_INFORMATION

PnP 启动操作

在启动期间或从一个显示驱动程序升级到另一个显示驱动程序期间,在显示设备上发生即插即用 (PnP) 启动过程。 在这种情况下,驱动程序必须调用 DxgkCbAcquirePostDisplayOwnership 函数来获取有关帧缓冲区的信息并保持显示同步。 帧缓冲区信息是从固件或从系统上加载的以前的 WDDM 1.2 及更高版本的驱动程序提供的。

在调用操作系统使 DxgkDdiSetPowerState 函数返回到 D0 电源状态和 DxgkDdiStartDevice 函数期间,WDDM 1.2 及更高版本的驱动程序必须将源可见性设置为 false (DXGKARG_SETVIDPNSOURCEVISIBILITY。可见 = 所有活动视频呈现网络 (VidPN) 目标的 FALSE) 。 在这种情况下,显示管道硬件必须与监视器保持同步信号,但管道必须继续将黑色像素数据发送到监视器,无论当前正在扫描的图面中存在什么像素数据。这意味着,像素管道保证会用所有黑色像素为监视器留空。 稍后,当第一个帧呈现到帧缓冲区中时,操作系统会将源可见性设置为 true。

所有这些过程使监视器保持同步,并确保用户不会在屏幕上看到闪烁或闪烁。

PnP 停止操作

驱动程序升级到新版本时,通常会在显示设备上发生即插即用 (PnP) 停止进程。 在这种情况下,操作系统调用驱动程序的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数,这要求驱动程序提供准确的帧缓冲区信息。

在 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 调用中,驱动程序必须确保活动 VidPn 目标的源可见性为 true, (DXGKARG_SETVIDPNSOURCEVISIBILITY。可见 = TRUE) 。 此外,从 WDDM 1.2 开始,驱动程序需要确保将像素管道编程为从中扫描出来的表面填充黑色像素。 在源可见性设置为 true 之前,驱动程序应使用黑色像素完成表面填充。

此外,请确保在驱动程序中实现 DxgkDdiStopDevice 。 在某些情况下,操作系统可能会调用 DxgkDdiStopDevice 而不是 DxgkDdiStopDeviceAndReleasePostDisplayOwnership,或者在调用 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 失败之后。

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

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

相关文章

【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码

引言 2024年9月,研究者在数学领域国际顶级SCI期刊《Chaos, Solitons & Fractals》(JCR 1区,中科院1区 Top)上以“Fusion entropy and its spatial post-multiscale version: Methodology and application”为题发表最新科学研…

高并发架构设计之缓存

一、引言 缓存技术作为高并发架构设计的基石之一,通过数据暂存和快速访问机制,在提升系统性能、降低后端负载方面发挥着不可替代的作用。优秀的缓存设计能够将系统吞吐量提升数个数量级,将响应时间从秒级降至毫秒级,甚至成为系统…

Unity AI-使用Ollama本地大语言模型运行框架运行本地Deepseek等模型实现聊天对话(一)

一、Ollama介绍 官方网页:Ollama官方网址 中文文档参考:Ollama中文文档 相关教程:Ollama教程 Ollama 是一个开源的工具,旨在简化大型语言模型(LLM)在本地计算机上的运行和管理。它允许用户无需复杂的配置…

Docker Python 镜像使用指南

1. 使用 Python 镜像创建容器 docker run -itd -v /data:/data python:latest 作用:创建一个基于 python:latest 镜像的容器,并后台运行。 参数说明: -itd:交互式后台运行(-i 交互模式,-t 分配伪终端&…

matlab中Simscape的调用-入门

Simscape 是由 MathWorks 公司开发的一款基于物理建模的仿真工具,它建立在 MATLAB/Simulink 平台之上,专门用于建模和仿真多领域物理系统。 主要特点 多领域建模:Simscape 提供了丰富的物理元件库,涵盖了机械、电气、液压、气动…

Flowable7.x学习笔记(十三)查看部署流程图

前言 Flowable 的流程图是 Flowable Modeler 或 Process Editor 中,使用拖拽和属性面板基于 BPMN 2.0 元素(如任务、网关、事件、序列流等)渲染出的业务流程图形界面​。 一、将图形导出可查看的作用 ① 可视化建模 帮助业务分析师和开发者…

Bootstrap 模态框

Bootstrap 模态框 Bootstrap 模态框(Modal)是 Bootstrap 框架中的一个组件,它允许你在一个页面中创建一个模态对话框,用于显示内容、表单、图像或其他信息。模态框通常覆盖在当前页面上,提供了一种不离开当前页面的交…

python-69-基于graphviz可视化软件生成流程图

文章目录 1 Graphviz可视化软件1.1 graphviz简介1.2 安装部署2 基于python示例应用2.1 基本示例2.2 解决中文显示乱码2.3 显示多个输出边2.4 显示输出引脚名称2.5 从左至右显示布局2.6 设置节点为方形3 参考附录1 Graphviz可视化软件 1.1 graphviz简介 Graphviz(Graph Visua…

AJAX 介绍

一、什么是AJAX ? AJAX 是 异步的 JavaScript 和 XML(Asynchronous JavaScript And XML) 的缩写,是一种实现浏览器与服务器进行数据通信的技术。其核心是通过 XMLHttpRequest 对象在不重新刷新页面的前提下,与服务器交换数据并更…

新ubuntu物理机开启ipv6让外网访问

Ubuntu 物理机 SSH 远程连接与 IPv6 外网访问测试指南 1. 通过 SSH 远程连接 Ubuntu 物理机 1.1 安装 SSH 服务 sudo apt update sudo apt install openssh-server1.2 检查 SSH 服务状态 sudo systemctl status ssh确认出现 active (running)。 1.3 获取物理机 IP 地址 i…

linux系统上使用nginx访问php文件返回File not found错误处理方案

linux系统上使用nginx访问php文件返回File not found错误处理方案 第一种情况第二种情况 第一种情况 可以在你的location php 里面添加当文件不存在时返回404而不是交给php-fpm进行处理 location ~ \.php$ { ... #文件不存在转404 try_files $uri 404; ... }然后&#xff0c…

基于 SpringBoot 与 Redis 的缓存预热案例

文章目录 “缓存预热” 是什么?项目环境搭建创建数据访问层预热数据到 Redis 中创建缓存服务类测试缓存预热 “缓存预热” 是什么? 缓存预热是一种优化策略,在系统启动或者流量高峰来临之前,将一些经常访问的数据提前加载到缓存中…

java—11 Redis

目录 一、Redis概述 二、Redis类型及编码 三、Redis对象的编码 1. 类型&编码的对应关系 2. string类型常用命令 (1)string类型内部实现——int编码 (2)string类型内部实现——embstr编码 ​编辑 (3&#x…

分布式链路追踪理论

基本概念 分布式调用链标准-openTracing Span-节点组成跟踪树结构 有一些特定的变量,SpanName SpanId traceId spanParentId Trace(追踪):代表一个完整的请求流程(如用户下单),由多个Span组成…

err: Error: Request failed with status code 400

好的,今天学习ai的时候从前端发送请求,实在是想不通为啥会啥是一个坏请求,后来从前端方法一个一个找参数,传递的值都有,然后想到我这边需要传递的是一个对象,那么后端使用的RequestParam就接收不到json对象…

开发小程序后端用PHP好还是Java哪个好?

在开发后端时,是选择PHP还是Java主要取决于你的项目需求、团队技术栈、性能要求以及维护成本等因素。下面我将从几个关键方面对两者进行简要对比,以帮助你做出更明智的选择。 PHP 优点: 简单易学:PHP语法简单,上手快&a…

麒麟V10 aarch64 qt 安装

在麒麟V10(aarch64架构)中安装Qt,需根据具体需求选择合适的方法。以下是综合多个搜索结果的安装方案及注意事项: 一、安装方法 1. 在线安装默认版本 适用于对Qt版本无特殊要求的情况。通过APT包管理器安装系统默认提供的Qt版本(如Qt 5.12.12): sudo apt-get update s…

pdf.js移动端预览PDF文件时,支持双指缩放

在viewer.html中添加手势缩放代码 <script>// alert("Hello World");let agent navigator.userAgent.toLowerCase();// if (!agent.includes("iphone")) {let pinchZoomEnabled false;function enablePinchZoom(pdfViewer) {let startX 0, start…

算法笔记.kruskal算法求最小生成树

题目&#xff1a;&#xff08;来源&#xff1a;AcWing&#xff09; 给定一个 n 个点 m 条边的无向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 求最小生成树的树边权重之和&#xff0c;如果最小生成树不存在则输出 impossible。 给定一张边带权的无向…

C#开发的自定义Panel滚动分页控件 - 开源研究系列文章

前些时候因为想拥有一个自己的软件快捷打开软件&#xff0c;于是参考Windows 11的开始菜单&#xff0c;进行了编写这个应用软件&#xff0c;里面有一个功能就是对显示的Panel里的应用对象的分页功能&#xff0c;于是就想写一个对Panel的自定义滚动条控件。 下面开始介绍此控件的…