我想强制chrome使用软件驱动程序渲染WebGL,而不是硬件。
我正在使用Ubuntu Linux,并且我了解在启动程序时,可以通过指定环境变量LIBGL_ALWAYS_SOFTWARE=1来强制使用Mesa GL驱动程序来使用软件实现。我确认在指定env var。
时驱动程序会发生变化bash$ glxinfo | grep -i "opengl"
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 945GM x86/MMX/SSE2
OpenGL version string: 1.4 Mesa 10.1.3
OpenGL extensions:
bash$ LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep -i "opengl"
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.4, 128 bits)
OpenGL version string: 2.1 Mesa 10.1.3
OpenGL shading language version string: 1.30
OpenGL extensions:
默认的GL驱动程序提供OpenGL 1.4支持,软件驱动程序提供OpenGL 2.1支持。
我追踪桌面启动器所在的位置(/ usr / share / applications /)并编辑它以指定env var,但chrome:// gpu仍显示GL版本1.4。 Chrome GPU信息包含一个很有前途的价值:
命令行参数--flag-switches-begin --disable-accelerated-2d-canvas --ignore-gpu-blacklist --flag-switches-end
我想知道我是否可以自定义--flag-switches-begin。
我还发现了' - use-gl' command line switch,但我不确定如何利用它来强制驱动程序进入软件模式。
作为旁注,我已经启用了“覆盖软件渲染列表”。在chrome:// flags /中,它确实从' blacklist'删除了我的模型。可以使用WebGL,但OpenGL功能集仍然非常有限。
我有一台可怕的老式笔记本电脑' gpu'我希望用它来开发一些着色器并在WebGL中进行测试,无论性能如何。
是否可以告诉Chrome使用软件驱动程序?
答案 0 :(得分:4)
我没有linux盒子,所以我无法检查,但你可以指定chrome用于启动GPU进程的前缀
--gpu-launcher=<prefix>
它通常用于调试,例如
--gpu-launcher="xterm -e gdb --args"
当chrome启动一个进程时,它会调用spawn。通常它只是启动
path/to/chrome <various flags>
--gpu-launcher
允许您为其添加前缀。例如,
--gpu-launcher=/usr/local/yourname/launch.sh
会使它产生
/usr/local/yourname/launch.sh path/to/chrome <various flags>
你现在可以让/usr/local/yourname/launch.sh做任何你想做的事情,最后启动chrome。最简单的就是
#!/bin/sh
"$@"
在你的情况下,我猜你想要
#!/bin/sh
export LIBGL_ALWAYS_SOFTWARE=1
"$@"
请务必将launch.sh
标记为可执行文件。
鉴于上面的脚本,这对我有用
/opt/google/chrome/chrome --ignore-gpu-blacklist --gpu-launcher=/usr/local/gman/launch.sh
之后about:gpu
给了我
GL_VENDOR VMware, Inc.
GL_RENDERER Gallium 0.4 on llvmpipe (LLVM 0x301)
GL_VERSION 2.1 Mesa 9.0.3