为什么桌面旋转 90 度后程序会占用更多 CPU?

为什么桌面旋转 90 度后程序会占用更多 CPU?

我注意到,当我使用 ATI Tray Tools 将屏幕旋转 90 度(向左或向右)时,屏幕处理会变得非常慢;Firefox 或任何程序都会滞后(显示菜单项时使用 100% 的一个 CPU 核心),并且当我在 Firefox 中向下滚动页面时,我看到令人讨厌的刷新率撕裂(看起来屏幕被分成多个垂直部分,每个部分都比左侧的前几个部分向下约 30 像素)。

如果我观看视频(使用 VLC),然后右键单击进行设置,UI 会开始严重滞后;因此很难移动到不同的菜单项,并且 CPU 使用率会达到 100%(对于一个核心),当我退出菜单时,我注意到视频解压缩已“损坏”,所以我需要等待一段时间才能恢复正常。

在 Windows Media Player 上,视频解压始终无法正常工作,因此无法用它观看任何电影(我并不想这样做)。另一方面,当我进入右键单击菜单时,Windows Media Player 不会出现延迟。也许 Firefox 和 VLC 使用相同的菜单渲染库,而这个库不知何故会与这个 90 度旋转有关?

是否有可能在不更换屏幕或 GPU 的情况下解决此延迟/过度 CPU 占用问题?

屏幕:三星 SyncMaster 226BW

GPU:华硕 EAH3450(最新驱动程序)

操作系统:Windows XP SP3(一年没有更新了,而且可能不会更新,因为我担心我的电脑会因为“非法”的 Windows 副本而被锁定(我实际上已经买了(不幸的是)))。

更换操作系统对我来说不是解决办法。我之前尝试过 Windows 7,但它使我的 GPU 效率降低了约 20%。我的 GPU 已经很差了,这就是为什么我需要尽可能快的速度,因此我使用 Windows XP。

答案1

我相信这是由于绘制方法造成的,所有这些“数据流”的起源以及绘制屏幕都是在查看器面前逐行快速绘制的。(crt)
数据仍然在事物之间以与以前相同的线性数据流进行传输。

_______________________________________line1

_______________________________________line2 (etc)

现在只需刷新一次屏幕即可显示。当你旋转它时,一切都会改变:

    _ <-- that goes | there   
and _     this goes |  here  
and _       on & on |   

直到所有数据都以线性方式传输到显示设备,完全重新排列。与最初设计的方式相比,这是完全不同的工作。

这是一个相当蹩脚的解释,但它可能足够快地解释它。

如果两块硬件都设计为在“旋转”显示(实际上不是旋转)的不同方面工作,并且数据流不必全部重新排列,那么“纵向”显示就没有理由变得更慢。事实并非如此。很可能存在一种显示器,只是具有不同的方面,即它的高度大于宽度。

如果这个旋转过程能够得到更好的优化,能够更好地与硬件配合,那么就应该能够在不破坏一切的情况下完成。

可能发生的另一件事是子像素渲染(透明类型)无法正常工作,因为 3 个颜色单元是水平排列的,现在又旋转了。所以做得正确,所以一切都必须改变。据我所知,到目前为止还没有。

说到渲染,对于行为不同的事物,以及视频播放器显示失败的情况,请更改渲染类型。“覆盖”渲染类型只会在软件中切出一个洞,然后这个洞由硬件填充。包括微软在内的大多数视频播放器都有一个设置来更改渲染类型。

相关内容