当 DWM 被禁用时,Windows 7 中的屏幕外前端缓冲区会发生什么情况?

当 DWM 被禁用时,Windows 7 中的屏幕外前端缓冲区会发生什么情况?

这两篇文章表明,屏幕外前台缓冲区是 Windows Vista/7 驱动模型 (WDDM) 的一部分。

http://www.opengl.org/pipeline/article/vol003_7/

由于屏幕外前端缓冲区是驱动模型本身的要求,因此即使关闭 DWM 也可能解决这些问题。

关联

据广泛记载,桌面窗口管理器 (DWM) 合成前台缓冲区以呈现到屏幕上。

我的问题是:如果无论是否启用 DWM 都使用屏幕外前置缓冲区,那么在启用 DWM 时由什么来执行合成操作?已禁用

我也在寻找有关禁用 DWM 时 Windows 7 行为的良好参考。它是否只是恢复到 XP 的堆叠窗口模型?

答案1

堆叠窗口模型已不复存在。Vista 及更高版本使用复合桌面模型

我记得 Vista 刚出现时就有过这些讨论。我会尽力的。你应该用 Vista 而不是 Windows 7 来搜索这些主题。

大量文献记载,桌面窗口管理器 (DWM) 合成前端缓冲区以将其渲染到屏幕上。

我的问题是:如果无论是否启用 DWM 都使用屏幕外前置缓冲区,那么当禁用 DWM 时,合成会做什么?

您可以亲眼看看。关闭 Aero 并切换到 Basic。您现在正在运行没有 DWM 的程序。砰,没有 DWM。但是如果您尝试写入显卡内存会发生什么?大多数情况下,您会被重定向到屏幕外缓冲区,除非您是一位经验丰富的程序员。在这种情况下,您不会问这个问题。而且您会知道会发生什么

离屏前置缓冲区仍在使用的原因是驱动程序不再控制前置缓冲区。前置缓冲区已被虚拟化。这涉及 GDIDirectX。虚拟内存管理器的出现是因为不再允许直接写入物理内存。因此,屏幕外缓冲区是必要的。

我在学习 WPF 时学到了大部分内容,因为 DWM 在很多方面都只是一个庞大的 WPF 应用程序。它们都使用 DirectX 和 MIL 来组成各自的工作区。我先从 Vista 和 WPF 下的一些 Technet 文章开始。Windows 7 下 DVM 和 DDK 的更改很小,与您的问题无关。

我希望这一切都有意义。

相关内容