Wayland中wl_surface的定义:代表窗口还是显示表面?
Wayland中wl_surface的本质与命名解析
wl_surface既不是窗口,也不是物理显示表面本身
它是客户端侧创建的抽象绘制载体,本质是一块可提交像素数据的缓冲区容器。你可以把它理解成一块“空白画布”,客户端在上面绘制内容后,交给Wayland合成器(compositor)处理,由合成器决定怎么把这块画布的内容渲染到物理屏幕上。为什么不是窗口?
窗口在Wayland里是带有窗口管理语义的对象(比如xdg_surface、wl_shell_surface),这类对象是绑定在wl_surface之上的——给wl_surface添加标题、大小规则、窗口类型等属性后,它才成为一个被系统窗口管理器识别的“窗口”。wl_surface本身可以是窗口的主体,也可以是窗口装饰、弹窗、通知甚至光标这类非窗口元素的载体。为什么叫
create_surface而非get_surface?
因为每个wl_surface都是客户端主动创建的独立实例,不是从系统已有的物理显示表面“获取”的。Wayland的合成器负责管理物理屏幕资源,但客户端不需要直接操作这些系统级资源,而是按需创建属于自己的绘制载体,每个surface都是独立的、可被合成器单独处理的单元。你创建多少个,就有多少个独立的画布,这也是“create”命名的原因。
内容的提问来源于stack exchange,提问作者nightingazer
相关产品推荐
相关产品推荐

