除了 PAG 外,TGFX 目前也独立在部分音视频编辑框架,Hippy动态化框架以及腾讯文档中作为底层的绘图引擎使用。 3、架构设计 包体优化 TGFX 最终以 400K 左右的大小覆盖了 Skia 近 2M 包体的绝大部分功能。 我们在 TGFX 中彻底解决了这个耦合的问题,打造出了一个纯 GPU 的绘图引擎,这里就节省了大概一半的包体。 ● 3D 矩阵变换能力从 PAG 下沉到 TGFX。 ● 完善的运行时性能数据统计和调试接口。 5、项目地址 https://github.com/Tencent/tgfx 欢迎大家接入试用或者参与到TGFX绘图引擎的开源共建~ 请给项目 一个 Star !
在渲染引擎方面,PAG 4.0 完成了将 Skia 替换为自研的全新绘图引擎 TGFX ,为 SDK 在包体和性能上取进一步的突破打下了坚实基础,最终在包体上直线降低了约 65% 左右,并在矢量渲染性能方面提升了约 2、全新绘图引擎 TGFX为了彻底打破包体和性能的限制,我们花了将近一年半的时间自研实现了一套轻量的纯 GPU 绘图引擎包体优化策略? 相对于 Skia,Skia 需要兼容 CPU 绘制管线,而 TGFX 没有历史包袱,不需要去兼容那些逻辑,可以采用全 GPU 渲染方案,这里节省了绝大部分包体。? TGFX 从设计之初就考虑了多 GPU 渲染后端的架构,目前已经完全实现了 OpenGL 的渲染后端全平台支持,接下来会逐步补全 Metal 以及 Vulkan 等后端的实现。 在接口设计上,TGFX 充分暴露了针对 GPU 渲染的优化能力给到调用层,例如提交纹理后统一不再重复缓存一份 CPU 图片;文字图集的缓存交给上层精确控制;暴露 Path 拆解为三角形数据后的缓存接口,
为了彻底突破包体和性能的限制,我们花了将近一年半的时间自研实现了一套轻量的纯 GPU 绘图引擎 TGFX,完成了对 Skia 的替换。 下面看一下 TGFX 具体做了哪些优化: 在包体方面,我们最终以 400K 左右的大小覆盖了 Skia 近 2M 包体的绝大部分功能。 我们在 TGFX 中彻底解决了这个耦合的问题,打造出了一个纯 GPU 的绘图引擎,这里就节省了大概一半的包体。 后续我们也正在推动 TGFX 作为一个独立仓库开源。我们会持续完善并把它打造为一个通用的 2D 绘图引擎,为行业提供 Skia 之外的另一个轻量化的选择。 更多渲染后端:持续迭代完善 TGFX,增加更多渲染后端,适配Metal和 Vulkan等硬件图形接口,最大化发挥现代 GPU 硬件的渲染性能。
为了彻底突破包体和性能的限制,我们花了将近一年半的时间自研实现了一套轻量的纯 GPU 绘图引擎 TGFX,完成了对 Skia 的替换。 下面看一下 TGFX 具体做了哪些优化: 在包体方面,我们最终以 400K 左右的大小覆盖了 Skia 近 2M 包体的绝大部分功能。 我们在 TGFX 中彻底解决了这个耦合的问题,打造出了一个纯 GPU 的绘图引擎,这里就节省了大概一半的包体。 ● TGFX 在全平台都实现了默认字体的读取能力,包括读取浏览器的默认字体库。 ● 更多渲染后端: 持续迭代完善 TGFX,增加更多渲染后端,适配 Metal 和 Vulkan 等硬件图形接口,最大化发挥现代 GPU 硬件的渲染性能。
12 { 13 const struct fal_partition *part; 14 part = fal_partition_find("tgfx 通过updata /ER_EROM1命令,可以将sd中的图片资源拷贝到tgfx分区(spi flash中图片所在的位置)中 ? ymodem_ota -p tgfx命令,可以将sd中的图片资源拷贝到tgfx分区中: ?
为了彻底突破包体和性能的限制,我们花了将近一年半的时间自研实现了一套轻量的纯 GPU 绘图引擎 TGFX,完成了对 Skia 的替换。 下面看一下 TGFX 具体做了哪些优化。 我们在 TGFX 中彻底解决了这个耦合的问题,打造出了一个纯 GPU 的绘图引擎,这里就节省了大概一半的包体。 第二点是最大化的利用平台端内置的所有能力。 在性能和架构方面,可以快速看一下 TGFX 还做了哪些额外的优化:左边第一个,我们默认开启了 HardwareBuffer 的支持,来全面加速纹理的提交。 以上这些还只是 TGFX 做的优化的一部分,更多的细节欢迎大家到 Github 源代码中参考研究。 然后是 TGFX 框架的持续迭代完善,继续增加更多渲染后端,适配 Metal 和 Vulkan 等硬件图形接口,最大化发挥现代 GPU 硬件的渲染性能。
为了彻底突破包体和性能的限制,我们花了将近一年半的时间自研实现了一套轻量的纯 GPU 绘图引擎 TGFX,完成了对 Skia 的替换。 下面看一下 TGFX 具体做了哪些优化: 在包体方面,我们最终以 400K 左右的大小覆盖了 Skia 近 2M 包体的绝大部分功能。 我们在 TGFX 中彻底解决了这个耦合的问题,打造出了一个纯 GPU 的绘图引擎,这里就节省了大概一半的包体。 ● TGFX 在全平台都实现了默认字体的读取能力,包括读取浏览器的默认字体库。 后续我们也正在推动 TGFX 作为一个独立仓库开源。我们会持续完善并把它打造为一个通用的 2D 绘图引擎,为行业提供 Skia 之外的另一个轻量化的选择。
IP NODE NOMINATED NODE READINESS GATES LABELS 13 myapp-deploy-5695bb5658-7tgfx release=v1 curl访问 1 [root@k8s-master service]# curl 10.244.2.111/hostname.html 2 myapp-deploy-5695bb5658-7tgfx 1 [root@k8s-master service]# curl 10.244.2.111/hostname.html 2 myapp-deploy-5695bb5658-7tgfx 3 [root@ k8s-master ~]# 4 [root@k8s-master ~]# curl 10.102.246.104:8080/hostname.html 5 myapp-deploy-5695bb5658-7tgfx k8s-master ~]# 13 [root@k8s-master ~]# curl 10.102.246.104:8080/hostname.html 14 myapp-deploy-5695bb5658-7tgfx
其中比较值得重点关注的是PAG里孵化出的全新绘图引擎 tgfx。 tgfx的出现给行业提供了Skia外的另一个选项,我将在北京站大会上详细分享其背后的技术难点和实现细节。最后会分享一下PAG的当前总结与未来展望。
配置fal_cfg.h, tgfx分区用于touchgfx的资源存储,其他分区用于OTA、文件系统和系统参数配置。 app", "onchip_flash_128k", 0 , FLASH_SIZE_GRANULARITY_128K, 0}, \ {FAL_PART_MAGIC_WROD, "tgfx