这仅仅是一个 CPU 密集型活动,还是有更多内容?为什么不能将更多处理任务转移到 GPU 上?
答案1
为什么不能将更多的处理任务转移到 GPU 上?
因为 Flash 过去缺乏与操作系统和显卡 API 的集成,因此无法实现这一点。为了让 Flash 插件将解码推迟到 GPU,它需要与操作系统通信,然后与显卡通信以传递解码和渲染指令。
Flash 10.1 终于来了引入 GPU 加速。
在 Windows XP、Windows Vista 和 Windows 7 上运行的某些视频卡和驱动程序支持硬件加速 H.264 解码。此版本不支持 Linux 和 Mac OS X 硬件加速解码。
罪魁祸首是:OS X做过允许 Flash 访问 GPU稍后的用于解码 H.264 视频,但他们的支持并不好。因为——简单地说——苹果仍然讨厌 Flash(缺乏 API 支持的原因与他们不希望在 iPhone 或 iPad 等移动设备上使用 Flash 的原因相同)。有关 OS X 中的 GPU 支持,请参阅此简短Adobe 知识库条目。
为什么它还不能在 Linux 上运行,我个人不知道。
为了回答你的第一个问题,我还要引用 Adobe 本身。主要观点是,现代视频编解码器(如 h.264)解码起来非常非常复杂,而且它们对 CPU 的压力很大。如果没有用于 GPU 解码的 API,或者对 GPU 解码的支持不佳,你会看到 CPU 使用率很高,而且你对此无能为力。
H.264 提供出色的视频质量,但解码时需要大量处理能力。只要有可用的硬件,Flash Player 10.1 中的 H.264 视频就会通过 GPU 或媒体加速器进行解码,从而大大提高播放性能和电池寿命。这对于资源受限的移动设备(如上网本和智能手机)尤其有用。