Skip to content

Windows D3D11 渲染适配器选择与跨卡显示 - #42

Draft
zeno-are-you-ok wants to merge 2 commits into
Predidit:mainfrom
zeno-are-you-ok:zeno-are-you-ok-d3d11-adapter-support
Draft

zeno-are-you-ok wants to merge 2 commits into
Predidit:mainfrom
zeno-are-you-ok:zeno-are-you-ok-d3d11-adapter-support

Conversation

@zeno-are-you-ok

@zeno-are-you-ok zeno-are-you-ok commented Oct 14, 2026 •

Copy link
Copy Markdown

概述

为 media_kit_video 增加 Windows D3D11 渲染适配器选择,并支持将另一块 GPU 上处理的帧传递到 Flutter 的显示适配器。

  • 新增 VideoControllerConfiguration.windowsD3D11AdapterId: String?,默认 null;省略或传 null 时保留现有 Flutter 适配器及共享句柄零拷贝路径。
  • 新增 VideoController.getAvailableWindowsD3D11Adapters() 和 WindowsD3D11Adapter(id: String, name: String, dedicatedVideoMemoryMb: int)。ID 是不透明 DXGI LUID,不应解析或假设跨重启稳定;无法解析的旧 ID 会回退到 Auto,并通过 VideoController.windowsVideoOutputErrors 明确报告,不会静默选择其他适配器。
  • 适配器与 Flutter 显示适配器不同时,通过 staging readback 和系统内存上传到 Flutter 适配器上的 mailbox;在提交输出 fence 前显式 Flush。帧传输失败时停止发布帧并报告包含 playerHandle / message 的错误事件。

验证

  • flutter test test/video_controller_configuration_test.dart:2 项测试通过。测试时临时使用 media_kit:source: system 避免系统 tar.exe 不支持归档所需的 LZMA;临时配置已移除。
  • dart analyze lib/src/video_controller:无错误;有 26 条 info,涉及文档注释和现有 Web API 弃用提示。
  • 使用 MSVC /W4 /WX 编译通过 6 个 Windows C++ 翻译单元:d3d11_renderer.cc、mailbox_swap_chain.cc、utils.cc、video_output.cc、video_output_manager.cc、media_kit_video_plugin.cc。
  • git diff --check 通过。
  • 完整 flutter build windows --release 未能完成:Flutter 要求 Windows 启用 Developer Mode/符号链接支持,当前环境未启用。未修改系统设置。

最新提交:d4e640c0863c9d76f5224f0c8382a35675a3d418。

lazgg and others added 2 commits October 15, 2026 01:28
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants