小编Dan*_*oss的帖子

强制无头铬/铬使用实际 gpu 而不是 Google SwiftShader

我正在尝试使用无头铬(使用puppeteer)将 html打印为 pdf并且一切正常,除非 html 包含大型 png 图像(超过 10.000x10.000px),渲染页面的整个过程需要非常长的时间(最多半小时,但如果使用非无头模式只需要大约 10 秒)。经过几天的调查和调整,我得出结论,这一定是页面合成过程的问题。

以下是chrome://gpu无头和非无头模式下的页面转储。只有显著差异我注意到的是,headlessly乳宁镶边时,操纵木偶本身追加--disable-gpu-compositing--allow-pre-commit-input我相信这些负责戏剧性的服务表现下拉。

此外,在非无头模式下,chrome 看到 2 个 GPU 单元:

GPU0 VENDOR= 0x10de, DEVICE=0x1d01 *ACTIVE*
GPU1 VENDOR= 0x8086, DEVICE=0x1912
Run Code Online (Sandbox Code Playgroud)

在无头模式下只有一个:

GPU0 VENDOR= 0xffff [Google Inc.], DEVICE=0xffff [Google SwiftShader] *ACTIVE*
Run Code Online (Sandbox Code Playgroud)

这是 Vulkan 和 OpenGL ES 图形 API 的基于 CPU 的实现。

所以基本上我的问题是:

有没有办法使用实际的gpu(特别是gpu合成)使用puppeteer运行无头铬/铬,或者有没有办法在非无头模式下将页面打印为pdf?

这是我的非无头 chrome gpu 配置(页面渲染速度很快):

Canvas: Hardware accelerated
Flash: Hardware accelerated
Flash Stage3D: Hardware accelerated
Flash Stage3D Baseline profile: Hardware accelerated
Compositing: Hardware accelerated …
Run Code Online (Sandbox Code Playgroud)

gpu google-chrome compositing headless puppeteer

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

compositing ×1

google-chrome ×1

gpu ×1

headless ×1

puppeteer ×1