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.pswp.cn/news/903369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903369.shtml
英文地址,請注明出處:http://en.pswp.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的自定義滾動條控件。 下面開始介紹此控件的…