CQ备忘录

一间存放故事的仓库

GitHub LinkedIn
30 August 2020

Android:Skia's history

by ChenQi

Skia.org

Skia 是一个开源的二维图形库,提供各种常用的 API,并可在多种软硬件平台上运行。谷歌 Chrome 浏览器、Chrome OS、安卓、Flutter、火狐浏览器、火狐操作系统以及其它许多产品都使用它作为图形引擎。

Skia 由谷歌出资管理,任何人都可基于 BSD 免费软件许可证使用。Skia 开发团队致力于开发其核心部分, 并广泛采纳各方对于 Skia 的开源贡献。

History

flowchart TB
    G[Google]

    A2005[2005.08 Android Inc. 被收购]
    A2007[2007.11 1.0 beta 发布]
    A2008[2008.09 HTC G1 发布]
    A2011[2011 ICS 4.0]
    A2012[2012 JellyBean 4.1]
    A2016[2016 Nougat 7.0]
    A2017[2017 Oreo 8.0]
    A2018[2018 Pie 9.0]

    S2005[2005.11 Skia Inc. 被收购]
    S2007[2007 开源]
    SCPU[CPU软件渲染瓶颈]
    SGPU[Skia OpenGL Vulkan]

    G --> A2005
    G --> S2005

    subgraph Android
    A2005 --> A2007
    A2007 --> A2008
    A2008 -- GPU多核硬件增强 --> A2011
    A2011 -- Project Butter --> A2012
    A2012 -- 重构HWUI --> A2016
    A2016 --> A2017
    A2017 -- Project Treble --> A2018
    end

    subgraph Skia
    S2005 --> S2007
    S2007 --> SCPU
    SCPU --> SGPU
    end

    S2007 -.2D GUI.-> A2007
    SCPU -. 混搭HWUI+OpenGL .-> A2012
    SGPU -. 配合HWUI .-> A2016

Project Treble

Android 工程师如何终结碎片化问题?

Question:

以前在 Android O 中有个开发者选项,可以切换 GPU 渲染方式为“default”或“Skia”。现在这个选项没有了,我记得 Android P 默认运行的就是 Skia 吧?

Burke:

以前 Android 的标准窗体不支持硬件渲染的。基本上是建立在 Skia 之上,而 Skia 是软件渲染。同时我们还做了个“GL 渲染器”,是基于 OpenGL 的。所以以前有两种方法。系统里有一种使用硬件加速器的方法,这得放弃 Skia 去使用 GL 渲染器。而其他部分可以使用 Skia。不过说来话长,其实一部分 GL 渲染器也在使用 Skia。听起来是有点怪。

Malchev:

一些 Skia 在慢慢地迁移到 GL 上,但并不是所有的都迁移了。

Burke:

我们在给 Skia 做一个 GL 后台。我们在清理架构。简单来说,整个架构的目标是让 Android 的 UI 框架直接与 Skia 对话,然后 Skia 负责与硬件加速的后台对话。而不是像现在这个奇怪的世界一样,一些窗体得自己去找 GL 渲染器。这就是我们要清理的东西。我只是想不起来这是 P 里的功能还是以后版本的功能了。我记得还没完全完成呢,但这是我们的目标。源代码里看得见,也不是什么大秘密。

更新:

在这次访谈结束后,Burke 澄清 Skia GL 后台实际上在 Android P 中已经完成了。

Reference

tags: