问题 CSS3的哪些确切部分是GPU加速的?


我一直在阅读几个引用,如“X是GPU加速”和“Y不是GPU加速”,但我找不到完整列表。什么 精确 CSS3的部分是GPU加速?


7580
2017-08-27 19:06


起源

它基于浏览器。因此,首先确定要支持的浏览器,然后找到这些浏览器的GPU加速CSS属性。 - Jasper
@Jasper - 它比浏览器更复杂。不同的iOS设备具有不同的功能,Safari在不同的设备上表现不同。同样,PC浏览器识别某些硬件配置,仅在某些硬件上应用GPU加速。 - jfriend00
好的,因为我们通常不知道机器上实际运行的硬件类型,我想我们现在能做的最好的事情就是尝试为支持它的浏览器使用加速属性,并希望设备实际上加速了属性。或者有人比我想到这个? - Jasper
它实际上是一个浏览器/操作系统组合。例如,Chrome中的一堆内容在MacOS上是硬件加速的,但在Vista上却没有(例如) - Michael Mullany


答案:


对,这是一个有趣的话题,它确实取决于浏览器+显卡。我一直想对此进行一些研究,所以这里有一个简短的总结。

Webkit(Safari,Chrome,iOS,Android)

在Webkit中, AnimationBase.cpp 用于指定它,但似乎已经移动了!卫生署!好吧,无论如何,如果你搜索代码 ACCELERATED_COMPOSITING,你会发现它。

具体来说,如果某些东西与其中一个匹配,那么它可以加速(至少在Chromium中):

  • 图层具有3D或透视变换CSS属性
  • 使用加速视频解码的元素使用层
  • 图层由具有3D上下文或加速2D上下文的元素使用
  • 图层用于合成插件
  • Layer使用CSS动画作为其不透明度或使用动画webkit转换
  • Layer使用加速的CSS过滤器
  • 图层具有作为合成图层的后代
  • 图层具有较低z-index的兄弟,该z-index具有合成图层(换句话说,图层在合成图层上呈现)

资源


壁虎(火狐)

在Gecko, https://wiki.mozilla.org/Platform/GFX/HardwareAcceleration 解释他们的计划/实现,就像IE一样,在XP上选项更加有限,但是如果显卡得到正确支持,其他所有操作系统都会获得一些加速。 Firefox 4(我认为!)为文本,画布和变换添加了加速度。


三叉戟(IE)

IE10似乎几乎拥有硬件加速的一切。 http://blogs.msdn.com/b/ie/archive/2011/04/26/understanding-differences-in-hardware-acceleration-through-paintball.aspx

这很快,所以我并不怀疑他们的主张!


11
2017-08-27 19:28





没有CSS3规范讨论有关GPU加速的任何内容。相反,由每个浏览器制造商或在特定硬件上实现浏览器的公司来决定他们将使用GPU的CSS3的哪些部分。并且,这可以很容易地从一个设备改变到下一个设备。

例如,截至大约一年前(我没有更多当前信息),3D转换是在iPhone3上加速GPU,但不是2D转换。但是,我希望iPhone3s或iPhone4或未来iPhone5的信息可能完全不同。


3
2017-08-27 19:08



iPhone型号应该几乎无关紧要,因为不同的手机版本运行相同的iOS /浏览器,它是确定GPU加速属性的浏览器。 - Jasper
@Jasper - 这根本不是真的。不同的iPhone具有不同的硬件功能,Safari在不同的iDevice硬件上运行不同。它们并非都具有相同的GPU功能,并且浏览器在所有iDevices上的行为都不相同。虽然您可能认为它们都是相同的iOS,但肯定有一些特定于某些设备的代码。 - jfriend00
我正在寻找并且找不到任何容易的东西,你有一些文件或一些参考吗?我只是尝试在不同设备上测试的经验。 - Jasper
@Jasper - 大约18个月前,我在几个不同的iDevices上测试了用于幻灯片转换的2d和3d转换。我发现iPod与旧款iPhone相比,新版iPhone的行为截然不同。这并不让我感到惊讶,因为这些设备具有不同的功能。我找到了一些描述这些差异的书面材料,但现在没有这些信息。 Apple已经在以后的设备中添加了更多的GPU功能,因此在较新的设备上运行Safari会比在旧设备上运行的Safari更多地使用它。 - jfriend00
@Jasper - 相关链接: stackoverflow.com/questions/9661876/... - jfriend00