如何从 Chromium 浏览器拦截 Skia 绘制命令

问题描述 投票:0回答:2

这是我的一个与远程浏览器隔离相关的实验项目。我试图在运行的 Chromium 实例中拦截 Skia 绘制命令,然后通过 CanvasKit(Skia 的 WebAssembly 版本)在客户端的不同浏览器实例中重播它们。

但是,我很难弄清楚在 Chromium 源代码中在哪里以及如何拦截这些绘制命令。非常感谢任何有关如何解决我的问题的建议!

browser chromium webassembly skia canvaskit
2个回答
3
投票

在Chromium中,所有绘制操作都将记录在

DisplayItemList
中,您可以在blink模块中的类
GraphicsContext
的定义中找到它。其次,这些记录的操作稍后会在
CC
认为合适的时候重播。

在blink结束时,上述所有相关代码大部分都分散在

blink/renderer/platform/graphics/graphics_context.cc
及其相关文件中。但如果你将所有 Chromium 视为一个整体,所有图形事物都是由
CC (Chrome Compositor)
触发的,它维护一个状态机并运行由 Android 中系统的 vsync 信号触发的
draw frame
循环。在此循环开始时,闪烁结束
draw
录制操作将被推送。在此循环结束时,合成帧的图像将被转换为一系列 GPU 操作,并调用系统的 GPU 设备相关的 API 来执行这些操作。
CC
相关代码文件可以 可以在
components/viz/
中找到。您应该阅读
Display
类的代码作为起始关键点。

我的观点来自版本

68
,你知道 Chromium 中的代码经常更改。所以我无法确认文件和位置仍然正确。


0
投票

您能提供更多帮助吗? 我们对哪一类铬进行更改? 另外,通过chrome:tracing获得的trace.json不能用于捕获skia命令吗?

© www.soinside.com 2019 - 2024. All rights reserved.