XFESystem C# 渲染后端与 CUDA 边界
2026-10-14:RenderBackendSelection 是后续驱动接入合同和能力诊断。它没有实现 NVIDIA 驱动,也没有将当前自研浏览器改为 CUDA 渲染。本轮是否修复预览卡顿应以实际 QEMU 输入、脚本、布局和绘制时长证明,不能由宿主显卡型号推断。
当前实际路径
Tools/OpenCSharp.ps1 使用 QEMU 标准 VGA (-vga std) 和 GTK。CanvasAdapter 使用 Cosmos Canvas 的 CPU 像素缓冲,再经 IDisplay.Framebuffer / Flush 呈现。QEMU 的 CPU 加速选项 WHPX/TCG 和 EDID 的 240 Hz 提示都不代表来宾 GPU 渲染或 CUDA 成功。
固定 Cosmos 3.0.94 已包含 VirtioGpuDriver,但它只协商 2D 资源、DMA、TRANSFER_TO_HOST_2D 和 RESOURCE_FLUSH,明确不协商 VirGL。即使切换到此设备,当前 CSS、文字和阴影仍由来宾 CPU 光栅化。它还包含 AMD DCN 3.1.5 显示接管驱动(PCI 1002:13C0 与 1002:164E),可以接管固件已有的显示面并做翻页/硬件光标;这也不是 CUDA 或通用 GPU 绘制执行器,且本轮没有实体机验收。
QEMU 11.1.0 本机设备清单存在 virtio-gpu-gl,但本轮启动参数没有使用它,也没有 GPU 直通设备。设备名称存在不能证明所需宿主 GL、来宾协议和实际提交链路已经可用。QEMU 官方 VirtIO GPU 文档 区分了 2D、VirGL 和 Rutabaga;加速路径需要匹配的协议、资源共享及驱动。
本机只读核验
Windows 主机包含 NVIDIA GeForce RTX 5090 与 AMD Radeon 核显。RTX 5090 的驱动为 617.14,nvidia-smi 返回计算能力 12.0,活动显示模式为 3840 × 2160、240 Hz。Windows 的 nvcuda.dll 存在;本次没有找到 nvcc、CUDA_PATH 或标准 CUDA Toolkit 安装目录。这只证明宿主硬件与驱动信息,不证明 XFESystem 可以使用它们;也没有把 nvidia-smi 的最大支持 CUDA 版本当作已安装 Toolkit。
NVIDIA Windows 安装文档 要求受支持的 Windows 环境与 NVIDIA 驱动;NVIDIA 开源 GPU 内核模块 是 Linux 接口层,并仍要求对应版本的 GSP 固件与用户态驱动。因此 Windows 的 nvcuda.dll 和 Linux 的内核模块均不能直接链接到当前自研裸机内核。CUDA 适用于 NVIDIA GPU;AMD 核显需要自己的驱动/计算后端。
实际初始化和后端选择
IRenderBackendProbe.InitializeAndVerify() 由持有设备和上下文的运行时或驱动实现。调用前枚举 PCI 设备、发现 DLL、读取 EDID 都不能设置成功标志。实现需要:
- 初始化驱动与上下文,记录真实错误。
- 提交绘制或计算工作并检查实际输出;CUDA 后端必须有 CUDA 内核提交与结果检查。
- 验证该渲染结果通过实际显示路径呈现;只有计算成功而没有呈现链路不能替换桌面后端。
- 保留成功上下文的生命周期,释放失败或未选中的上下文,并提供可追溯证据。
选择顺序是已验证独显、已验证核显、已验证虚拟 GPU,最后可用的 CPU 光栅器。仅软件 framebuffer / VirtIO 2D 传输成功时,GpuAccelerationActive 和 CudaAccelerationActive 必须为 false。不存在可用后端时返回空结果,不能凭空宣告软件回退成功。
每个结果标记执行位置。宿主 Windows 的 CUDA 初始化或运算成功不能作为 XFESystemGuest 候选;只有显式选择宿主范围时才可用于宿主工具。主机协助计算实验若后续建立,必须单独标明依赖 Windows 主机,不能当作实体电脑独立运行的 CUDA 实现。
尚待实现
已增加 C# 原生 NativeNvidiaDiscovery:通过 PCI 总线复制现有 BAR 和能力,执行有边界的资源几何检查,始终拒绝绑定并保留固件显示。它是驱动的资源发现层,没有执行 GPU 命令,不能成为已验证的加速后端。原生 RTX 5090 的 BAR 映射、DMA/IOMMU、GSP 固件、GPU 地址空间、队列提交与同步,以及 NVIDIA CUDA 用户态/内核接口兼容,仍未实现。具体第一条真实计算命令的前置工作与验收见 NativeCudaPort.md。QEMU 加速的独立方向是实现自研来宾 VirtIO GPU 加速命令协议和对应渲染器,先证明像素结果、呈现和故障回退,再纳入上述选择策略。两个方向都不能通过添加 C# 的 CUDA 包或 gl=on 参数完成。
本轮不安装 Toolkit/显卡驱动,不改宿主设备绑定,不尝试直通,不重启电脑。CPU 优化结果与 CUDA 未完成状态应分别在交付报告中记录。