#swap #chain #context #surfman #surface #back #double-buffered

surfman-chains

surfman的双缓冲交换链实现

11个版本 (7个破坏性更新)

0.8.0 2023年6月16日
0.7.0 2023年2月28日
0.6.0 2021年3月5日
0.5.1 2020年8月7日
0.1.1 2019年11月8日

#35 in #surface

Download history 2/week @ 2024-03-08 34/week @ 2024-03-29 277/week @ 2024-06-07 26/week @ 2024-06-14

303 每月下载次数

MPL-2.0 许可证

33KB
633 代码行

surfman表面管理器的线程安全交换链实现。

交换链的作用是在不同上下文之间传递表面,通常在不同的线程中。每个交换链都有一个 生产者 上下文,负责创建和销毁表面,以及多个 消费者 上下文(通常只有一个),它们从交换链中获取表面,并将它们返回以进行回收。

每个交换链都有一个 后缓冲区,即生产者上下文可以绘制的当前表面。每个交换链都有一个 前缓冲区,即生产者上下文完成绘制的最新表面。

生产者在完成绘制并准备好显示表面时可以 交换 这些缓冲区。

消费者可以 获取 前缓冲区,显示它,然后 回收 它。

每个生产者上下文都有一个 附加 的交换链,其后缓冲区是上下文的当前表面。生产者可以更改附加的交换链,将当前未附加的交换链附加到它,并断开当前附加的交换链。

依赖关系

~1–14MB
~156K SLoC