weston出图调试

weston.ini配置

复制代码
# configuration file for Weston
[core]
shell=ivi-shell.so
modules=ivi-controller.so
idle-time=0
backend=drm-backend.so
repaint-window=10
require-outputs=none
require-input=false
gbm-format=abgr8888

[ivi-shell]
ivi-input-module=ivi-input-controller.so
ivi-id-agent-module=ivi-id-agent.so
bkgnd-surface-id=1
bkgnd-color=0x00000000
ivi-client-name=/usr/bin/simple-weston-client

[desktop-app-default]
default-surface-id=2000000
default-surface-id-max=2001000

[output]
name=DSI-1
mode=current

[output]
name=DP-1
mode=current

1 配置环境

复制代码
export XDG_RUNTIME_DIR=/run/user/root
export WAYLAND_DISPLAY=wayland-0

配置命令

复制代码
layer-add-surfaces -l 1000 -s 1 &
weston-simple-egl &
LayerManagerControl create layer 1000 1920 720
LayerManagerControl set screen 1 render order 1000
LayerManagerControl get surfaces
LayerManagerControl add surface 2000000 to layer 1000
LayerManagerControl set layer 1000 visibility 1
LayerManagerControl set surface 2000000 visibility 1

LayerManagerControl set surface 2000000 source region 0 0 1920 720
LayerManagerControl set surface 2000000 destination region 0 0 1920 720
  • Layer(图层):屏幕上的一个透明画布,有层级、大小、可见性,是界面的容器
  • Surface(界面):应用(如 weston-simple-egl)渲染出的具体画面,需要绑定到图层才能显示
  • LayerManager:系统底层服务,统一管理所有图层和界面的显示规则

命令解释

1. 启动应用与后台进程

复制代码
layer-add-surfaces -l 1000 -s 1 &
  • 作用 :后台启动图层界面绑定工具 ,创建 ID 为1000的图层关联,生成 ID 为1的界面(surface)

  • 参数:

    • -l 1000:指定关联的图层 ID 为 1000

    • -s 1:指定界面 ID 为 1

      weston-simple-egl &

  • 作用 :后台启动Weston 的 EGL 渲染测试程序(一个简单的彩色 / 动态界面应用)

  • 这个程序运行后,会自动生成一个Wayland 界面(Surface) ,ID 为2000000(后续命令用到的固定 ID)


2. 创建图层

复制代码
LayerManagerControl create layer 1000 1920 720
  • 核心命令 :通过图层管理工具创建一个新图层
  • 参数:
    • create layer:创建图层指令
    • 1000图层唯一 ID(自定义数字,后续操作都用这个 ID)
    • 1920:图层宽度(像素)
    • 720:图层高度(像素)
  • 效果:在显示系统中创建了一个1920x720、ID 为 1000 的空白画布

3. 设置图层渲染层级

复制代码
LayerManagerControl set screen 1 render order 1000
  • 作用 :指定屏幕 1的图层渲染优先级(显示层级)
  • 参数:
    • screen 1:操作目标为第 1 块物理屏幕
    • render order 1000:渲染序号为 1000(数字越大,图层越靠上显示,不会被其他图层遮挡)

4. 查询系统所有界面

复制代码
LayerManagerControl get surfaces
  • 作用查询并打印当前系统中所有正在运行的应用界面(Surface)列表
  • 目的:确认weston-simple-egl生成的界面2000000已成功创建

5. 将界面绑定到图层

复制代码
LayerManagerControl add surface 2000000 to layer 1000
  • 核心命令 :把应用界面 挂载到图层上(只有绑定后,界面才能通过图层显示)
  • 参数:
    • surface 2000000:目标界面 ID(weston-simple-egl 的界面)
    • to layer 1000:绑定到 ID 为 1000 的图层

6. 显示图层与界面

复制代码
LayerManagerControl set layer 1000 visibility 1
  • 作用:设置图层可见性

  • 参数:visibility 1 = 显示图层(0= 隐藏图层)

    LayerManagerControl set surface 2000000 visibility 1

  • 作用:设置界面可见性

  • 参数:visibility 1 = 显示界面(0= 隐藏界面)

  • 此时:图层 + 界面都已显示,屏幕上能看到 weston-simple-egl 的画面


7. 裁剪界面(源区域)

复制代码
LayerManagerControl set surface 2000000 source region 0 0 1920 720
  • 作用截取应用界面的一部分显示(源区域:界面本身的区域)
  • 参数含义:X起点 Y起点 宽度 高度
    • 0 0:从界面左上角开始截取
    • 1920 720:截取宽度 1920、高度 720 的完整界面
  • 效果:不裁剪,使用应用界面的全部内容

8. 显示位置(目标区域)

复制代码
LayerManagerControl set surface 2000000 destination region 0 0 1920 720
  • 作用 :设置界面在屏幕上的显示位置和大小(目标区域:屏幕上的绘制区域)
  • 参数含义:X坐标 Y坐标 宽度 高度
    • 0 0:显示在屏幕左上角
    • 1920 720:显示尺寸和图层 / 界面一致
  • 效果:界面全屏铺满图层,无偏移、无缩放

总结

这组命令完成了从无到有显示一个应用界面的完整流程:

  1. 启动测试应用 → 生成界面
  2. 创建图层 → 设置显示层级
  3. 绑定界面到图层
  4. 开启可见性 → 让画面显示
  5. 配置裁剪 / 位置 → 固定界面显示规则

2 添加一个surfaces

复制代码
layer-add-surfaces -l 1000 -s 1 &

3 启动测试程序egl

复制代码
weston-simple-egl &

4 配置参数

复制代码
//这里的1000对应上面添加layer 1000(layer-add-surfaces -l 1000 -s 1 &)
LayerManagerControl create layer 1000 1920 720 // 这里1920 720修改成对应的分辨率
LayerManagerControl set screen 1 render order 1000 

//获取surfaces 下面2000000 是这里获取到的值
LayerManagerControl get surfaces

LayerManagerControl add surface 2000000 to layer 1000
LayerManagerControl set layer 1000 visibility 1
LayerManagerControl set surface 2000000 visibility 1

LayerManagerControl set surface 2000000 source region 0 0 1920 720
LayerManagerControl set surface 2000000 destination region 0 0 1920 720

其他:

复制代码
LayerManagerControl get surfaces
LayerManagerControl get layers
LayerManagerControl get scene
相关推荐
STDD41 分钟前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格1 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
用户2367829801682 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng2 小时前
Linux LCD驱动
linux·运维·服务器
思麟呀2 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
浮生若城2 小时前
Linux库制作与原理(2):理解链接与加载
linux·运维·服务器
Cat_Rocky2 小时前
Gitlab安装与配置
linux·运维·gitlab
爱讲故事的3 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#