阅读笔记:Multi-threaded Rasterization in the Chromium Compositor

Multi-threaded Rasterization in the Chromium Compositor PPT 原始链接:

https://docs.google.com/presentation/d/1nPEC4YRz-V1m_TsGB0pK3mZMRMVvHD1JXsHGr8I3Hvc/edit?usp=sharing

PPT主要介绍了Chromium浏览器中使用多线程光栅化(Impl-side painting)的机制,这是一种提高渲染性能和用户体验的技术。以下是涉及的关键知识点汇总:

  1. 多线程光栅化概念:也称为Impl-side painting或多线程绘制,是Chromium渲染引擎(cc)中用于加速页面渲染过程的一项技术。它通过将光栅化任务从主线程移到合成器线程来减少渲染延迟和提高页面滚动时的流畅性。

  2. 架构概述:文档描述了cc(Compositor)如何与Blink(负责JavaScript、布局等)以及GPU进程交互,并且引入了两个树(活动树和待激活树)的概念,用以实现异步渲染和减少检查板效应(checkerboarding)。

  3. 线程分工:主线程处理JavaScript执行、样式重计算、布局、图像解码和部分内容的光栅化;而合成器线程处理滚动事件、更新图层树和快速重绘。

  4. 双树结构:引入了活动树和待激活树的双树模型,使得在当前帧内容还在光栅化的同时,可以准备下一帧的内容。待激活树一旦准备充分,就会激活并替换活动树,提高了渲染效率。

  5. Tile Manager:负责管理所有的图块,包括优先级排序、GPU内存分配、触发光栅化和解码任务到RasterWorkerPool。它还具备优化策略,如跳过纯色图块的光栅化、对低成本图块进行同步光栅化以减少延迟,并利用SkPicture进行更智能的分析决策。

  6. 资源管理与优化:提到了对上传操作的优化,例如在用户未进行滚动或缩放操作时强制完成上传以快速显示新帧,以及通过资源池重用旧资源来提升性能。

  7. 问题与挑战:文档也提到了一些实施多线程光栅化带来的挑战,比如遮挡剔除(occlusion culling)的架构难题、更多并行可能导致的额外延迟,以及对Blink中像素级优化的无效化。

  8. 光栅化与纹理生命周期:详细对比了实施多线程光栅化前后的纹理处理流程,包括减少了复制次数、采用EGL图像语义,以及Skia在记录时对光栅化比例的无感知要求。

  9. 设计哲学:强调了“无特殊案例”原则,即Tile Manager需要考虑所有可能的图块,包括那些暂时不可见但未来可能需要的,以支持预渲染和减少页面滚动时的空白现象。

  10. 性能改进目标:包括减少检查板效应、优化内存管理、更快的上传速度和更智能的图块优先级处理。此外,还计划增加低质量模式以实现快速低分辨率渲染,以及改进Tile Manager性能等。

浏览器渲染引擎中图层记录(Recording)和图块化(Tiled)的一些抽象概念以及它们在历史上的发展:

  1. Recording Abstraction: 这里提到的“Recording”是指浏览器渲染引擎记录下页面内容如何绘制的过程。这通常涉及到将页面中的元素、样式等抽象成一系列的绘图命令。这些命令随后可以被用来在屏幕上重现这些内容。

  2. Projection of the viewport into the layer: 这意味着渲染引擎将当前用户可见的部分(视口)映射到一个或多个图层上。一个图层可以理解为页面的一个独立部分,它可以单独绘制和缓存。

  3. Recordings around the viewport: 为了优化性能和响应速度,浏览器不会记录整个页面的所有内容,而是只记录用户当前看到的视口区域以及周围一定距离的部分。这样可以确保用户滚动或者操作时,相邻的内容可以迅速显示出来。

  4. Dropping recordings on invalidation: 如果页面的一部分内容发生了变化(称为“失效”),与之相关的记录会被丢弃。这是因为这些记录不再反映页面的最新状态,需要重新进行记录。

  5. Historical progression: 早期,浏览器可能会将整个图层作为一个单一的SkPicture(Skia库中的一个类,代表一系列的绘图命令)进行记录。这种方法的缺点是,即使只有很小的更新,也需要重新记录整个图层,导致效率低下。

  6. PictureList: 为了解决这个问题,Android浏览器的开发者提出了“PictureList”的概念。通过将图层分割成多个小的记录单元,可以实现只更新有变化的部分。这样既减少了记录的时间,也减少了需要重绘的内容量。

  7. Why tiled?: 图块化是将图层划分成更小的区块(tiles),每个区块可以独立记录和缓存。这种方法的优点是,即使某些绘制操作很慢或者图层很大,也可以更有效地管理和渲染。对于一些需要在记录时解码的内容(例如动画GIF)或者某些特殊效果,图块化可以提供更好的性能表现。

  8. Heuristics for minimizing complexity: 为了进一步优化性能,使用了一些启发式算法来减少“图层堆”(pile,可能指由多个图块组成的结构)的复杂性。例如,如果一次失效影响到了太多的小图块,渲染引擎可能会将它们合并为一个更大的区块,然后对这个区块进行新的记录。

  9. cc::DebugState setting: 这里提到的是一个编译时的设置,它可能属于Chrome的组件(cc代表Chrome Compositor),用于调试和查看图层记录的边界。

  • Skia: Skia是一个开源的2D图形库,用于在各种平台上绘制文字、图形等。它是Chrome浏览器以及Android操作系统中的2D渲染引擎的核心组成部分。

  • Invalidation: 在浏览器中,当一部分内容因为某些操作(如元素样式更改)需要重新绘制时,这部分内容会被标记为“失效”。失效机制确保了只有必要的部分被重新绘制,避免不必要的性能开销。

  • Rasterization: 渲染引擎将记录的绘图命令(如SkPicture)转换为像素数据,以便显示在屏幕上,这个过程称为光栅化(rasterization)。对于图块化的内容,每个图块可以独立光栅化。

  • Performance Optimization: 上述所有技术和策略的目的都是为了优化浏览器的性能。通过仅记录和光栅化用户可能看到的内容,减少了内存使用和提高了渲染速度,从而为用户提供了更流畅的浏览体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python自动化发送邮件如何实现?怎么配置?

Python自动化发送邮件需要注意什么?邮件群发的技巧? 无论是个人使用还是企业需求,电子邮件的发送都是必不可少的。而Python作为一门功能强大的编程语言,可以通过自动化脚本实现批量发送邮件,从而提高工作效率。AokSen…

【外汇天眼】选择外汇EA的关键:策略适配、风险控制与稳定性评估

外汇EA(Expert Advisor)是外汇交易市场中广泛使用的自动化交易系统。它们通过预定义的规则和算法自动执行交易,旨在为交易者提供便捷的交易体验,同时提高交易效率和准确性。本文将从策略选择、风险控制和稳定性评估三个方面&#…

Excel 生成所在月份的每一天列表

Excel 的 A2 格是日期 A1Fecha201/03/24 需要生成该日期所在月份的每一天的列表 A1WholeMonth201/03/24302/03/24403/03/24504/03/24605/03/24706/03/24807/03/24908/03/241009/03/241110/03/241211/03/241312/03/241413/03/241514/03/241615/03/241716/03/241817/03/241918…

鸿蒙嵌入式设备开发之hello world

1. 环境搭建 目前鸿蒙设备的开发环境,可以分为2个部分:Windows调试环境,和Linux编译环境。 其中, Linux环境负责编译代码,并生成鸿蒙的包。Windows环境负责连接设备,进行烧录和调试。 特别注意&#xf…

访问成员变量(反射)

文章目录 前言一、访问成员变量的方法二、Field类 1.常用方法2.实操展示总结 前言 为了实现随时随地调用某个类的某个成员变量,我们可以通过反射的Field类进行调用。这其中需要我们获取该类的Class对象,再调用Field类的相关方法,实时地灵活地…

618什么数码好物值得入手?优质数码清单分享,错过等明年!

在到来的618年中大促,各种数码好物竞相亮相,正是您更新装备、升级体验的黄金时刻,在这个购物的狂欢节里,我们特别为大家准备了一份精选的优质数码清单,帮助大家从海量的选择中筛选出真正值得入手的宝贝,这些…

Wireshark抓包日常运维实用过滤

0x0 Wireshark 介绍 Wireshark 是一款功能强大的网络分析工具,适用于网络专业人员。它提供了出色的过滤器,您可以轻松放大到您认为可能存在问题的位置。过滤器的主要好处是消除定位流量,并缩小要查找的数据类型。 0x1 根据源 IP 地址过滤主…

探秘Facebook:社交媒体的未来之路

Facebook,作为全球最大的社交媒体平台之一,一直处于数字社交革命的前沿。然而,随着科技和社会的不断发展,Facebook正面临着新的挑战和机遇。本文将探索Facebook的未来之路,揭示社交媒体的新趋势和发展方向。 1. 深度社…

恢复误删和格式化的文件的利器

一、简介 1、一款由Piriform开发的免费文件恢复工具,它能够帮助用户恢复那些不小心从电脑上删除的文件,包括从回收站清空的文件,以及因用户错误操作而从存储设备中删除的图片、音乐、文档等多种格式的文件。Recuva支持对硬盘、闪存卡、U盘等多种存储介质进行扫描与恢复,并且…

Codeforces Round 951 (Div. 2) F. Kostyanych‘s Theorem(思维题 交互好题)

题目 交互题&#xff0c;n&#xff08;n<1e5&#xff09;个点的完全图&#xff0c;无向的&#xff0c;初始恰好删了n-2条边 每次询问可以输入一个d&#xff1a;? d 交互器会输出一个当前度>d的点v&#xff0c; 如果有多个这样的点&#xff0c;输出度最小的&#xff…

1+x(Java)中级题库易混淆理论题(三)

SQL 语句中进行 group by 分组时&#xff0c;可以不写 where 子句 分组时可以多层分组&#xff0c;比如&#xff1a;先按照省、再按照市来分组。 File 类不能获取文件的内容 在使用 select 语句进行查询分组时&#xff0c;如果希望去掉不满足条件的分组&#xff0c;使用 hav…

高考加油,奥利给

又到了一年一度的高考时刻了啊&#xff0c;高考是漫漫人生路上的一个转折点&#xff0c;祝各位莘莘学子都超常发挥、金榜题名

阿贝云免费虚拟主机和免费云服务器评测

阿贝云是一家提供免费虚拟主机和免费云服务器的云服务提供商。他们的服务非常受用户欢迎&#xff0c;因为他们提供的免费方案相比其他竞争对手来说更具竞争力。用户可以在阿贝云上轻松创建自己的网站&#xff0c;并享受稳定可靠的服务。阿贝云的免费虚拟主机套餐包括免费的域名…

人类语言处理nlp部分笔记——二、BERT和它的家族-介绍和微调

参考自李宏毅课程-人类语言处理 二、BERT和它的家族-介绍和微调 1. What is pre-train model 这里所说的pre-train model是输入一串tokens&#xff0c;能够输出一串vectors&#xff0c;且每个vector可以表示对应的语义的模型&#xff0c;这些vectors也被称作为embeddings。以…

【set】集合总结

一、Set Set集合是Collection的子接口,代表一种集合,此种集合是元素不重复. 有两个常用实现类 HashSet 是元素不重复,无序,主要是指遍历顺序和插入顺序不一致 TreeSet 是元素不重复,排序 LinkedHashSet不常用 二、HashSet 1.1 介绍 HashSet是Set的实现类 底层是由哈希表实…

Python数据分析I

目录 注&#xff1a;简单起见&#xff0c;下文中"df"均写为"表名"&#xff0c;"函数"均写为"HS"&#xff0c;"属性"均写为"SX"&#xff0c;"范围"均写为"FW"。 1.数据分析常用开源库 注释…

安卓手机平板使用JuiceSSH无公网IP远程连接本地服务器详细流程

文章目录 前言1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 前言 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? 本文就和大家分享一下如何使用 cpolarJuiceSSH 实现手机端远程连接Linux…

深入ES6:解锁 JavaScript 类与继承的高级玩法

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;Class&#x1f35f;1 类的由来&#x1f35f;2 co…

我国衡器市场规模逐渐扩大 出口量远大于进口量

我国衡器市场规模逐渐扩大 出口量远大于进口量 衡器是利用力的杠杆平衡原理或胡克定律来测定物体质量的一种仪器设备。随着生产技术逐渐进步&#xff0c;衡器的种类逐渐增多。根据衡量方法不同&#xff0c;衡器大致可分为非自动衡器、自动衡器等&#xff1b;根据结构原理不同&a…

操作系统教材第6版——个人笔记6

3.3.4 页面调度 页面调度 当主存空间已满而又需要装入新页时&#xff0c;页式虚拟存储管理必须按照一定的算法把已在主存的一些页调出去 #主存满加新&#xff0c;把已在主存一些页调出选择淘汰页的工作称为页面调度 选择淘汰页的算法称为页面调度算法 页面调度算法设计不当&a…