用于 fifo 约束的协议

当 Wayland compositor 考虑应用内容更新时, 它必须确保满足所有更新的就绪约束(栅栏等)。

该协议提供了一种方法,将显示刷新周期的完成 用作额外的就绪约束。

警告!此文件中描述的协议目前处于测试阶段。 向后兼容的更改可能会与相应的接口版本增加一起添加。 向后不兼容的更改只能通过创建扩展的新主版本来完成。

destroy
类型: destructor
destroy()
解除与管理器接口的绑定

通知服务器客户端将不再使用此协议对象。 由该对象创建的现有对象不受影响。

get_fifo(id: new_id<wp_fifo_v1>, surface: object<wl_surface>)
参数
类型
描述
idnew_id<wp_fifo_v1>
surfaceobject<wl_surface>
为 surface 请求 fifo 接口

为一个 surface 建立一个 fifo 对象,该对象可用于向 内容更新添加显示刷新约束。

一个 surface 只能存在一个此类对象,如果试图 创建多个对象,则会导致 already_exists 协议错误。 如果一个 surface 被多个软件组件操作, 一般的最佳实践是只有执行 wl_surface.attach 操作的组件才应该使用此协议。

error { already_exists } 
参数
描述
already_exists0
surface 的 fifo 管理器已存在
致命的呈现错误

可能会响应非法请求而发出这些致命的协议错误。


wp_fifo_v1

版本 1
fifo 接口

一个用于 surface 的 fifo 对象,可用于向内容更新添加显示刷新约束。

set_barrier()
设置 fifo 约束的起点

当应用包含 "set_barrier" 的内容更新时, 它会在与 fifo 对象关联的 surface 上设置 "fifo_barrier" 条件。 在随后的非撕裂(non-tearing)呈现的锁存截止时间(latching deadline)之后, 该条件将立即被清除。

如果为了确保客户端能够向前推进假设(forward progress assumptions), compositor 可以提前清除该条件。

要等待此条件清除,请使用 "wait_barrier" 请求。

"set_barrier" 是双缓冲状态,请参阅 wl_surface.commit。

在 fifo 对象的 surface 被销毁后请求 set_barrier, 将产生 "surface_destroyed" 错误。

wait_barrier()
向内容更新添加 fifo 约束

指示当 surface 上存在 "fifo_barrier" 条件时, 此内容更新尚未就绪。

这意味着当包含 "set_barrier" 的内容更新在锁存截止时间变为活动状态时, 它将至少在一个刷新周期内保持活动状态。如果允许撕裂的内容更新, 如果在截止时间没有内容更新变为活动状态, 则它可能会在锁存截止时间之后变为活动状态。

如果 surface 是处于同步模式的子表面(subsurface), 则必须忽略该约束。如果 surface 未被 compositor 更新(屏幕外、被遮挡), 则 compositor 可以忽略该约束。客户端必须使用额外的机制 (如帧回调或时间戳)来确保在所有条件下发生节流。

"wait_barrier" 是双缓冲状态,请参阅 wl_surface.commit。

在 fifo 对象的 surface 被销毁后请求 "wait_barrier", 将产生 "surface_destroyed" 错误。

destroy
类型: destructor
destroy()
销毁 fifo 接口

通知服务器客户端将不再使用此协议对象。

此协议之前对 surface 状态所做的更改 不受此对象销毁的影响。

参数
描述
surface_destroyed0
关联的 surface 不复存在
致命错误

可能会响应非法请求而发出这些致命的协议错误。


合成器支持

Cage
Cage
0.2.0
COSMIC
COSMIC
1.0.0~beta.8
GameScope
GameScope
3.15.14
Hyprland
Hyprland
0.52.1
Jay
1.12.0
KWin
KWin
6.6
Labwc
Labwc
0.9.2
Louvre
Louvre
2.14.1
Mir
Mir
2.26
Muffin
Muffin
6.6.0
Mutter
Mutter
49.2
niri
niri
25.11
phoc
phoc
0.52
river
river
0.3.13
Sway
Sway
1.11
Treeland
Treeland
0.8.0
Wayfire
Wayfire
0.9.0
Weston
Weston
14.0.2
wp_fifo_manager_v1
x
x
x
1
1
1
x
x
x
x
1
x
x
x
x
x
x
x

Copyright © 2023 Valve Corporation

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Footer

© 2026 Wayland Explorer

本网站与 Wayland 官方项目无任何关联。网站所有内容均根据 Wayland 协议 XML 文件自动生成。

本网站使用的 Visual Studio Code - Codicons 遵循 CC BY 4.0 许可。