如何强制chrome使用mesa软件驱动程序的webgl

cyr*_*yrf 5 ubuntu google-chrome webgl mesa

我想强制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:
Run Code Online (Sandbox Code Playgroud)

默认的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' 命令行开关,但我不知道如何利用它来强制驱动程序进入软件模式.

作为旁注,我已经在chrome:// flags /中启用了"覆盖软件渲染列表",它确实从" 黑名单 "中移除了我的模型,从而可以使用WebGL,但OpenGL功能集仍然非常有限.

我有一台带有可怕'gpu'的旧笔记本电脑,我想用它来开发一些着色器并在WebGL中进行测试,无论性能如何.

是否可以告诉Chrome使用软件驱动程序?

gma*_*man 4

我没有 Linux 盒子,所以我无法检查,但你可以指定 chrome 将用于启动 GPU 进程的前缀

--gpu-launcher=<prefix>
Run Code Online (Sandbox Code Playgroud)

例如,它通常用于调试

--gpu-launcher="xterm -e gdb --args"
Run Code Online (Sandbox Code Playgroud)

当 chrome 启动一个进程时,它会调用 spawn。通常它只是启动

path/to/chrome <various flags>
Run Code Online (Sandbox Code Playgroud)

--gpu-launcher让您可以为其添加前缀。例如

 --gpu-launcher=/usr/local/yourname/launch.sh 
Run Code Online (Sandbox Code Playgroud)

会让它产卵

 /usr/local/yourname/launch.sh path/to/chrome <various flags>
Run Code Online (Sandbox Code Playgroud)

现在,您可以让 /usr/local/yourname/launch.sh 执行您想要的任何操作,并最终启动 chrome。最简单的就是这样

#!/bin/sh
"$@"
Run Code Online (Sandbox Code Playgroud)

就你而言,我猜你会想要

#!/bin/sh
export LIBGL_ALWAYS_SOFTWARE=1
"$@"
Run Code Online (Sandbox Code Playgroud)

请务必标记launch.sh为可执行。


鉴于上面的脚本这对我有用

/opt/google/chrome/chrome --ignore-gpu-blacklist --gpu-launcher=/usr/local/gman/launch.sh
Run Code Online (Sandbox Code Playgroud)

之后about:gpu给了我

GL_VENDOR   VMware, Inc.
GL_RENDERER Gallium 0.4 on llvmpipe (LLVM 0x301)
GL_VERSION  2.1 Mesa 9.0.3
Run Code Online (Sandbox Code Playgroud)