SketchUp WebGL 应用程序在基于 Ubuntu 的操作系统 16.04、18.04 中挂起,这些操作系统在硬件上运行,但在 Virtualbox 中的相同操作系统中运行

SketchUp WebGL 应用程序在基于 Ubuntu 的操作系统 16.04、18.04 中挂起,这些操作系统在硬件上运行,但在 Virtualbox 中的相同操作系统中运行

我正在尝试在 Ubuntu 18.04 上使用此应用程序:https://app.sketchup.com/app,但有一个问题。当模型大于屏幕并移动到上边框后面时,SketchUp挂起。韦兰或者X11没关系。尽管 Wayland 在挂起时响应更快。浏览器没关系 -火狐铬合金歌剧- 相同的行为。

容易发生挂起的情况示例: 如果我尝试使用该Pan工具移动该模型或者使用该工具旋转Orbit,我就会被冻结。

在此处输入图片描述

我已经找到了解决方法Windows 10在 Virtualbox 中。应用程序在那里运行良好。然后我尝试Ubuntu 18.04在 Virtualbox 中 - 也运行良好。Lubuntu 18.04但如果我从这些文件(我指的是 Linux 发行版)创建 LiveUsb.iso并在真实硬件上启动它们,我会遇到同样的问题。

我尝试过其他非 Ubuntu 发行版 -Fedora 28OpenSuse 15- 没有发现任何问题。VirtualBox 和真实硬件上均没有问题。

我的假设: 我认为,原因在于mesa库,并希望从源代码编译较新的版本并进行测试。但它在 上运行Virtualbox,使用 Virtualbox 的视频驱动程序 ( vboxvideo)。但它无法与i915实际系统上的驱动程序配合使用...你怎么看?有人对解决这个问题有什么想法吗?

GPU 信息:

sudo lshw | grep -A 9 VGA

description: VGA compatible controller
product: 2nd Generation Core Processor Family Integrated Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 09
width: 64 bits
clock: 33MHz
capabilities: msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0

有关在给定 X 显示器上运行的 OpenGL 和 GLX 实现的信息:

glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
    Max core profile version: 3.3
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 18.0.5
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 18.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00

答案1

我找到了一个简单、临时的修复方法,它解决了这个问题,但我认为它可以更好。问题出在硬件加速上。这就是为什么问题没有出现在 VirtualBox 的情况下,而是在硬件运行时出现的原因。

现在我刚刚启动火狐通过这种方式:LIBGL_ALWAYS_SOFTWARE=1 firefox挂起现象就会消失。应该还有其他禁用它的方法,比如在 Firefox 配置中禁用它或类似方法。

LIBGL_ALWAYS_SOFTWARE - 如果设置为true,则始终使用软件渲染

来源:Mesa 环境变量

解释:

在设置LIBGL_ALWAYS_SOFTWARE环境变量之前,使用硬件加速。

glxinfo | grep -i "opengl"
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Desktop 

设置LIBGL_ALWAYS_SOFTWARE环境变量后,硬件加速被禁用,并使用软件渲染,就像在 VirtualBox 中一样。

LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep -i "opengl"
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 6.0, 256 bits)

但我不喜欢这个解决方案,因为它影响所有 WebGL 网站,但问题出在SketchUp仅。例如生物数码与硬件加速配合良好,我经常使用它。

需要其他解决方案。也许更新到最新的mesa库可以修复硬件加速?

另外一个问题是:为什么硬件加速在一个站点上有问题,而在其他站点上却没有问题?

相关内容