在ubuntu虚拟机下进行mujoco渲染时出现下列错误:
/site-packages/glfw/__init__.py:917: GLFWError: (65548) b'Wayland: The platform does not provide the window position' warnings.warn(message, GLFWError) ERROR: Shadow framebuffer is not complete, error 0x8cd6
会出现mujoco的窗口和借用mujoco场景产生的相机的窗口弹不出来,很可能是因为图形系统出现了错误。
借此机会学习一下linux的图形系统
- https://blog.csdn.net/phmatthaus/article/details/132965095
- https://www.cnblogs.com/Iflyinsky/p/17520927.html
Ubuntu 图形系统配置详解
本文档旨在解释基于 xrandr
、glxinfo
以及 lshw
命令输出的图形API、显示器、显卡和渲染器之间的关系,并详细介绍各个项目的所有种类。这些命令可以帮助我们了解当前系统的显示设置、使用的图形API、显卡类型及渲染能力。
1. 显示器与显示模式 (xrandr
)
输出示例
Screen 0: minimum 16 x 16, current 1920 x 945, maximum 32767 x 32767
XWAYLAND0 connected primary 1920x945+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1920x945 59.90*+
...
关键参数说明
- Screen 0: 表示屏幕编号,每个物理显示器对应一个编号。
- minimum 和 maximum: 分别表示支持的最小和最大分辨率。
- current: 当前使用的分辨率。
- XWAYLAND0: 连接的显示器名称,在 Wayland 环境下模拟的 X11 输出。
- connected: 表明该显示器已连接并启用。
- primary: 标记为主显示器。
- resolution list: 列出所有可用的分辨率及其刷新率(Hz),带有星号(*)的是当前使用分辨率。
所有种类
- 分辨率:如 1920x945, 1152x864, 1024x768 等。
- 刷新率:通常以 Hz 表示,如 59.90Hz。
- 显示器状态:connected(已连接)、disconnected(未连接)等。
2. 渲染器 (glxinfo
)
输出示例
OpenGL renderer string: SVGA3D; build: RELEASE; LLVM;
关键参数说明
- OpenGL renderer string: 提供了关于当前 OpenGL 渲染器的信息。
- SVGA3D: VMware 虚拟机中的一种图形加速技术。
- build: RELEASE: 表示这是一个正式发布的版本。
- LLVM: 指示编译时可能使用了 LLVM 编译器基础设施。
所有种类
- 渲染器类型: 如 NVIDIA, AMD, Intel, SVGA3D(虚拟环境)等。
- 构建类型: RELEASE, DEBUG 等。
- 编译器/工具链: LLVM, GCC 等。
3. 显卡信息 (lshw
)
输出示例
description: VGA compatible controller
product: SVGA II Adapter
vendor: VMware
...
configuration: depth=32 driver=vmwgfx latency=64 resolution=1280,800
关键参数说明
- description: 设备类型,这里是兼容VGA的控制器。
- product: 具体产品型号,此处为 VMware 的 SVGA II Adapter。
- vendor: 制造商,这里是 VMware。
- driver: 使用的驱动程序,例如 vmwgfx 是 VMware 提供的驱动。
- depth: 颜色深度,通常是 32 位。
- resolution: 默认分辨率。
所有种类
- 设备类型: VGA, DVI, HDMI 等。
- 产品型号: 各种制造商的不同型号。
- 制造商: 如 VMware, NVIDIA, AMD, Intel 等。
- 驱动程序: 如 vmwgfx, nvidia-driver, amdgpu 等。
- 颜色深度: 8-bit, 16-bit, 24-bit, 32-bit 等。
4. 参数关系图解
- 显示器通过
xrandr
设置其分辨率和刷新率,它依赖于显卡提供的输出。 - 显卡(通过
lshw
可查看详细信息)提供硬件支持,包括颜色深度、分辨率等参数,并由相应的驱动程序管理。 - 渲染器(通过
glxinfo
获取)负责处理图形数据,将它们转换成可以在显示器上显示的形式,它受到显卡能力和驱动程序的影响。
图形显示环境技术解析文档
一、核心概念定义
1. 图表API(Application Programming Interface)
- 定义:图形API是连接应用程序与图形硬件的接口规范,提供3D渲染、2D绘图标准化函数库。
- 典型种类:
- ✅ OpenGL(跨平台开源)
- ✅ Vulkan(现代低开销API)
- ✅ DirectX(Windows平台专属)
- ✅ WebGPU(浏览器专用API)
- ✅ CUDA(NVIDIA计算API)
- ✅ OpenCL(跨平台计算API)
本次环境使用
libGLX
+OpenGL 2.1
(SVGA3D限制)组合
2. 显示器技术特征
- 物理层:
XWAYLAND0 connected primary
resolution: 1920x945±0+0
dimensions: 0mm x 0mm (未知物理尺寸)
-
虚拟即成技术:
- 通过XWayland实现X11协议兼容
- 实际显示通过主机Wayland合成器处理
-
支持模式(部分示例):
分辨率 刷新率(Hz) 比例 1920×945 59.90* 16:9 1600×900 59.95 16:9 1440×900 59.89 16:10
3. 显卡架构解析
VMware® SVGA II Adapter
device type: VGA compatible controller
bus: PCI 0000:00:02.0
driver: vmwgfx 3.6.0 (Linux kernel 5.15)
memory mapping:
Framebuffer: e0000000-e7ffffff (128MB)
MMIO registers: f0000000-f01fffff
- 虚拟化特性:
- 半虚拟化3D加速(SVGA3D协议)
- 使用LLVMpipe加速(基础CPU渲染)
- 支持2D/3D混合渲染
- 动态显存分配(受限于主机资源)
二、系统参数关联分析
相互作用关系图谱
[Application] → [Graphic API]
↓ ↓
[libGLX MESA] → [DRI3/GLX providers]
↓ ↓
[vmwgfx DRM] → [KMS Mode Setting]
↓ ↓
[SVGAII PCI Device] → [Host GPU via VMware Tools]
工具链解析
xrandr | MESA | XWayland | vmwgfx |
---|---|---|---|
管理显示模式 | GL实现 | X11兼容层 | SVGA驱动 |
从atid驱动获取模式列表 | 通过LIBGL_ALWAYS_INDIRECT控制路径 | 使用drmRenderWindow共享GPUContext | 提供GMR内存管理和3D命令流 |
性能特征矩阵
特性 | 可用状态 | 实现方式 |
---|---|---|
3D加速 | ✅ | VMW_SVGA3D adapter |
VRAM大小 | 128MB | 虚拟PCI分配(io-port+MMIO) |
GL版本支持 | 2.1 | LLVMpipe回退模式 |
HDR支持 | ❌ | 无EDID数据 |
多屏支持 | ❌ | 单虚拟显示设备 |
三、技术组件详情
显示器管理协议
# 活动模式列表
current 1920x945 计算公式: ((1920×945×32)/8/1024/1024=7.03MB)
接着检测到虚拟EDID模块:
0mm x 0mm → 失败的物理尺寸获取
DRM/KMS子系统状态
vmwgfx-dri:
libkms abstractions
TTM内存管理(当前分配0MB GMR)
含有两个命令流通道:
- CMDBUF(命令缓冲)
- Escape(定制扩展)
渲染流水线
mesa3d:
┬ GL dispatch → gallium3d:
│ ┬ SVGA3D state tracker
│ │ ┬ pipe_context → (VMW pipe context)
↓ ↓ ↓
egl swrast glx context
四、环境优化建议
显示配置调优
# 推荐设置:
xrandr --newmode "2560x1080_60.00" ((Current * 1.33)
xrandr --addmode XWAYLAND0 "2560x1080_60.00"
3D渲染增强
# workaround优化:
export LIBGL_ALWAYS_SOFTWARE=0
export VMWARE_USE_SOFTWARE_GL=0
export GALLIUM_DRIVER=svga
必要模块验证
# 驱动状态检查:
modinfo vmwgfx | grep -i version
dmesg | grep -i svga | grep -i initialized
五、拓扑结构说明
【虚拟显示系统三维架构】:
Cloud Native ┌──────────────────────┐
Container ──▶ │ Xorg + GLVND │
│ ▲ glfw/xcb context │
│ │ glGetString (Renderer)│
│ ▼ │
│ GLX context (59.90Hz) │
└─────────┼──────────────┘
▼
┌────────────────┐ drivers/accelz/scb ┌────────────┐
│ Mesa SVGA driver│─ ─│ vmwgfx.ko │
└────────────────┘ └────────────┘
▼ ▼
WDDM1.3 (WS2016) PCI 33MHz Link
└──────────────────────▶─────────────────┘
VMCI虚拟化通道
▼
Host Workstation GPU
⚠️ 注意:物理机配置(如启用3D accelaration+足够显存)直接影响虚拟机图形性能表现
六、技术生态适配图
VMware虚拟化显示环境版本矩阵:
Hypervisor | Guest Driver | 3D性能 | API支持 |
---|---|---|---|
VMware Workstation | SVGA II | 低 | OpenGL ES 2.0 |
ESXi + mGPU | NVIDIA VGPU | 中高 | GL4.6/Vulkan |
Fusion Pro | WDDM1.2 | 中 | DirectX 11 |
注:SVGA3D在无物理GPU支持时会降级到llvmpipe软件渲染