为wayland下的 proton 的通用 PC 端适配
Author: SukanleCreated Sep 9, 2026Updated Sep 18, 2026
Labelsenhancementambiguousrapid-submissionclient: PC
Checkboxes
请确认自己完成了下列必选项之后再进行勾选,若未完成必选项或勾选了"我未仔细阅读"选项将视为自愿接受被直接关闭 Issue
- 我基本确定这是一个新功能/建议,而不是遇到了 Bug(不确定的话请附上日志)
- 我未仔细阅读这些内容,只是一键已读所有内容,并相信这不会影响问题的处理
- 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
- 我使用的是当前更新版本的最新版, 并已查看版本发布至今的 更新内容, Pull Requests 中尚未发布的更新内容,确认我的建议未被提及
- 我已检查了 常见问题, 公告, 活跃议题, 已关闭议题 确认我的建议未被提及
说说你遇到的问题?
对wayland下的截图、键鼠控制(适用于 Proton Games),我实现的截图:
| 优先级 | 后端 | 说明 | 需特权 |
|---|---|---|---|
| DMA-BUF (异步管线) | 异步三阶段管线:EXPORT_SYNC_FILE 快照 fence → VkSemaphore 导入 → vkCmdCopyImageToBuffer(GPU 解 tile)→ CPU readback。高效,可后台不抢占前端显示 | 无 | |
| DRM/KMS (libdrmtap) | 从内核 DRM 子系统直接读取最终合成帧缓冲,绕过整个用户态显示栈。全屏捕获后根据窗口几何裁剪,仅返回游戏窗口区域。需要权限,且抢占前端显示 | CAP_SYS_ADMIN |
|
| wl_shm | 从代理的共享内存缓冲区读取,适用于软件渲染的应用。额外多一次提交到代理作为截图缓冲,性能差但兼容好 | 无 |
鼠标则获取的是绝对坐标,且键鼠均为非抢占式前端操作
https://github.com/user-attachments/assets/953f0285-785f-44af-9103-c7819016068f
有什么好的想法?
我已经完成功能性验证,但我使用了Rust来实现,现在使用OpenCV+Boost库替换一些具体实现迁移至C++
其他内容
https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/18139#issue-5393963188 这个是勾选时未勾选必选导致关闭,如果可行麻烦删除避免冗余
Source: MaaAssistantArknights/MaaAssistantArknights