- 升级 demo_cc_offscreen 到 M141,主要将 demo_cc_gui 的变动迁移过来
- 升级 demo_cc_gui 到 M141,主要更改:
viz::SharedBitmapReporter已不再是cc::LayerTreeFrameSink的基类,参见 6164986DidCommit(),DidCommitAndDrawFrame(),DidCompletePageScaleAnimation(),DidObserveFirstScrollDelay()插入一个source_frame_number参数。FrameTimingDetails已添加到WebFrameWidgetImpl,参见 5331910。- 已从
LayerTreeHostClient中移除DidReceiveCompositorFrameAck(),参见 5468167。 ContentLayerClient::PaintableRegion()已被移除,参见 5190710。NotifyNewLocalSurfaceIdExpectedWhilePaused()已被加入到cc::LayerTreeFrameSink,参见 6588556。ThroughputTracker被重命名到CompositorMetricsTracker以更广泛地用于追踪 metrics,参见 6042895。WebVitalMetrics已被移除,参见 5822616。- 加入了 Gpu 初始化逻辑并初始化 FrameSinkManager 以正常使用 SharedImageInterface。其中因为 ClientSharedImageInterface 被 LayerTreeFrameSink 使用但被 7102838 改为 SharedImageInterface,此处为简化进程模型,特别在 BindToClient 中进行 cast 以绕过。
- 升级 demo_views 到 M141,主要更改:
- 升级 demo_linktest 到 M141,并支持 Windows 下编译验证。
- 升级 demo_gin 到 M141,主要更改:
v8::MicrotasksScope::MicrotasksScope(Isolate* isolate, Type type)已被移除,参见 5539888- 将
extends部分作为一个component以规避GIN_EXPORT定义不统一的问题 - 在
AsyncAdd中加入v8::Isolate::Scope以修复此处v8::internal::g_current_isolate_为空导致v8::Integer::New触发 DCheck 的问题
- 在 Windows 平台上将 demo_skia 升级到 M141 (仅软件),主要更改:
- 添加了
WinSoftwareBitmapPresenter,使用 GDI API 支持在 Windows 平台上呈现软件渲染的位图 - 修改了
SkiaCanvasSoftware,使其在 Windows 上运行时使用WinSoftwareBitmapPresenter - 更新了构建配置,包含 Windows 平台所需的依赖项
- 将
demo_skia模块中的命名空间demo_jni重命名为demo以保持一致性
- 添加了
- 升级 demo_viz_offscreen 到 M141,主要更改:
- 文档更新,将 demo 列表改成表格并加入兼容性测试情况标记
- 升级 demo_viz_gui 到 M141,主要更改:
components/viz/common/resources/bitmap_allocation.h已移除viz::TileDrawQuad::SetNew移除了is_premultiplied参数,参见 6500701viz::ContentDrawQuadBase::texture_size已被移除,几种 quad 均作修改,参见 6653194viz::TextureDrawQuad::SetNew移除了is_premultiplied,flipped和opacity参数,参见 6516061, 6019939, 5119685SharedBitmap已被删除,参见 6180918。 正常情况下应使用viz::RasterContextProvider中提供的SharedImageInterface取代之,此处使用底层接口viz::SharedImageInterfaceProvider提供的进行绕过RootFrameSink中OnBeginFrame的frame_ack参数已被删除,新增一个纯虚方法OnSurfaceEvicted(),参见 6417183, 4956873- 按照该提交 7230224 修正了 Windows 下的初始化,避免崩溃
- 修正了
SharedQuadState的clip参数。此项更改暂未找到对应的上游更改,测试发现不这样改就会导致 transform 后超出clip的绘制内容被直接丢弃(透明化) - 由于资源全部经过
SharedImage传递,相应释放逻辑较为复杂,保存好 trace 后改成直接强制退出进程,以简化实现
- 升级 demo_gl 到 M141, 主要更改:
ui::Event的type()返回值类型变更到ui::EventType,关键字修改ui::PlatformWindowDelegate的OnMouseEnter()方法重命名为OnCursorUpdate()//gpu现在不能被外部可见,此例中依赖的功能集中在//gpu/config- gl 的
SharedContextState需要 surface 是 off-screen 的,暂时注释掉SharedContextState的创建和使用
- 基础部分(log, task, memory, tracing, resources, mojo, mojo_v8)升级到 M141,更改如下:
DISALLOW_COPY_AND_ASSIGN宏已弃用base::MemoryPressureMonitor::GetCurrentPressureLevel()需要传入一个base::MemoryPressureMonitorTag参数- mojo 的
ReadData()和WriteData()都改用了std::span以替代原来的缓冲区指针+长度参数, 并新增了一个引用传递参数指示实际读取/写入了的数据量 v8::FunctionCallbackInfo::Holder()已弃用,改用This()- Resources
kDemoGenResources数组不提供长度信息 - Tracing 全面启用 Perfetto, 传统初始化方法已移除;Startup 时的初始化提前到仅需初始化 FeatureGating 后执行一次
tracing::InitTracingPostFeatureList()
- mojo 下新增一个 case
demo_mojo_child_process,演示通过父进程建联并在两个子进程间直接通讯 - ChangeLog 拆分到单独文件
- 添加 demo_task_thread, 演示在新线程中使用 task, 位于 demo_task 下;
- 升级 demos 到 chromium 120,升级内容如下:
ThreadTaskRunnerHandle被SingleThreadTaskRunner取代;TRACE_*宏默认启用 perfetto client 库;- mojo 默认启用了 ipcz,多进程初始化必须传参;
- gl 初始化接口支持选择 GPU;
SharedQuadState::SetAll接口支持设置 fast_rounded_corner;viz::TransferableResource支持更明确的区分单 plane 和多 plane 资源;- 为了减少 viz PostTask 的数量,
CompositorFrameSinkClient::OnBeginFrame合并了ReclaimResources和DidReceiveCompositorFrameAck的功能; - 删除了
SkEncodeImage接口,使用SkXXXEncoder::Encode替代; - skia 将 DDL 相关接口移动到 chromium private 内,并进行了重命名,后续不再提供 public 的 DDL 接口,变动后只有 ganesh 支持 DrawDDL,graphite 不支持。
- 添加 demo_linktest,演示错误的使用 gn 导致链接错误;
- 升级 demo_skia 到 110 版本;
- 升级 demo_views 到 110 版本;
- 升级 demo_cc_offscreen 到 110 版本;
- 升级 demo_gin 到 110 版本;
- 升级 demo_viz_gui 到 110 版本;
- 更新 110 版本的分支到 chromium 正式分支 5481;
- 升级一些 demo 到 110 版本;
- 添加 demo_gin,演示如何使用gin创建一个简单的js运行时。
- 添加 demo_mojo_v8,演示如何在 render 进程中使用 js 访问 browser 进程提供的 mojo 接口;
- 升级 demo_views 到 M91 版本;
- 升级 demo_cc_offscreen 到 M91 版本;
- 升级 demo_viz_offscreen 到 M91 版本;
- 升级 demo_ipc 到 M91 版本;
- 升级 demo_services 到 M91 版本;
- 升级 demo_gl 到 M91 版本;
- 升级以下 demo 到 M91 版本:
- demo_resources
- 升级以下 demo 到 M91 版本:
- demo_memory
- 升级以下 demo 到 M91 版本:
- demo_exe
- demo_tracing_perfetto
- demo_tracing_perfetto_content
- demo_messageloop (改名为 demo_task_executor)
- demo_tasks (改名为 demo_task_thread_pool)
- demo_mojo_single_process
- demo_mojo_multiple_process
- demo_mojo_multiple_process_binding
- 重命名以下 demo:
- demo_messageloop 改名为 demo_task_executor
- demo_tasks 改名为 demo_task_thread_pool
- 添加 demo_gl, 演示通过
//ui/gl模块调用 GL 进行渲染;
- demo_viz_layer_offscreen 支持使用 SkiaOutputDeviceOffscreen 接口进行离屏渲染;
- 添加 demo_viz_layer_offscreen, 演示使用 VIZ 的 CopyOutput 接口进行离屏渲染;
- 添加 demo_viz_layer, 演示使用 VIZ 进行笔迹书写,同时支持使用命令行进行软件和硬件渲染的切换;
- 添加 demo_viz_gui_gpu, 演示使用 VIZ 进行硬件加速渲染以及 VIZ Client 的嵌套;
- 添加 demo_x11_glx 和 demo_x11_egl;
- 添加 demo_x11, 演示使用 X11 创建透明窗口;
- 更新 demo_skia, 默认使用软件渲染,支持透明窗口,GL 渲染支持 GL_RGB565 像素格式;
- 添加 demo_skia, 演示在 Linux 中使用 Skia 进行软/硬件渲染;
- 更新 demo_android_skia, 添加多线程渲染以及帧率同步;
- 添加 demo_android_skia, 演示在 Android 中使用 Skia 进行软/硬件渲染;
- 添加 demo_tracing_perfetto_content, 演示 content 模块是如何将 trace 保存到文件的,该文件可以用于 chrome://tracing;
- 添加 demo_tracing 的文档 demo_tracing;
- 将 demo_tracing 移动到 demo_tracing 文件夹,并改名为 demo_tracing_console, 添加 Flush 功能;
- 添加 demo_tracing_perfetto, 演示 trace 和 perfetto 的集成及使用;
- 添加 demo_cc_gui, 演示使用
cc显示 GUI 界面;
- 添加 demo_cc 的 TRACE.txt, 用于协助理解 cc 的运行时行为;
- 添加 demo_cc_offscreen, 演示使用
cc进行离屏渲染;
- 添加 demo_viz_offscreen, 演示使用
viz进行离屏渲染; - 修改 demo_viz 为 demo_viz_gui,功能不变;
- 添加 demo_viz, 演示使用
viz模块; - 添加
viz的文档:viz
- 添加 demo_views,演示使用
//ui/views开发 UI;
- demo_apk 支持 JNI 调用 C++类的实例方法;
- 添加文档:浏览器启动流程简述
- demo_apk 支持 JNI;
- 添加文档: demo_apk
- 添加 demo_tracing,用来演示 trace 的使用;
- 添加 demo_apk,用来演示如何使用 gn 创建 Android 应用;
- 添加 demo_shell,用来演示如何使用 Content API 创建一个精简浏览器;
添加以下 demo 及相关文档:
- demo_exe: 最简单的 demo,演示 gn 及创建自己的 exe;
- demo_log: 演示使用日志库;
- demo_tracing: 演示使用 Trace;
- demo_tasks: 演示使用线程池 ThreadPool;
- demo_messageloop: 演示使用消息循环 MessageLoop;
- demo_mojo_single_process: 演示在单进程中使用 mojo 库;
- demo_mojo_multiple_process: 演示在多进程中使用 mojo 库;
- demo_mojo_multiple_process_binding: 演示在多进程中使用 mojo 库的 binding 层;
- demo_services: 演示使用基于 mojo 的 servcies 及多进程架构;
- demo_ipc: 演示使用基于 mojo 的 IPC 接口;
- demo_memory: 演示使用 SharedMemory;