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
相关推荐
k4m7v2pz1 小时前
把 Bevy 0.14 游戏移植到 R36S 掌机:一场与“无窗口系统“的搏斗
linux·rust·bevy·r36s·rk3326·开源掌机
木子欢儿2 小时前
Intel 架构的 MacBook Pro 运行 Linux 发热量高解决
linux·运维·服务器
会编程的土豆5 小时前
Go 模板初识
linux·运维·服务器
regret~7 小时前
【记录】网络路由、转发与网卡隔离
linux·服务器·网络
aFakeProgramer7 小时前
Linux版本兼容问题及RTA-VRTE环境配置笔记
linux·笔记
Zhu7587 小时前
在Ubuntu24快速配置专用SFTP
linux·sftp
码农客栈8 小时前
Linux 内核顶层 Makefile 详解
linux
Embedded-Xin8 小时前
Rust学习——Cargo工具
linux·学习·架构·rust·嵌入式
weixin_435776118 小时前
2026年长沙托育vi设计从风格定位到元素运用的设计方法
linux·运维·服务器·python
benjiangliu9 小时前
LINUX系统-19-库制作与原理(一)
linux·运维·服务器