# 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 文档](https://www.qemu.org/docs/master/system/devices/virtio/virtio-gpu.html) 区分了 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 安装文档](https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html) 要求受支持的 Windows 环境与 NVIDIA 驱动;[NVIDIA 开源 GPU 内核模块](https://github.com/NVIDIA/open-gpu-kernel-modules) 是 Linux 接口层,并仍要求对应版本的 GSP 固件与用户态驱动。因此 Windows 的 `nvcuda.dll` 和 Linux 的内核模块均不能直接链接到当前自研裸机内核。CUDA 适用于 NVIDIA GPU;AMD 核显需要自己的驱动/计算后端。 ## 实际初始化和后端选择 `IRenderBackendProbe.InitializeAndVerify()` 由持有设备和上下文的运行时或驱动实现。调用前枚举 PCI 设备、发现 DLL、读取 EDID 都不能设置成功标志。实现需要: 1. 初始化驱动与上下文,记录真实错误。 2. 提交绘制或计算工作并检查实际输出;CUDA 后端必须有 CUDA 内核提交与结果检查。 3. 验证该渲染结果通过实际显示路径呈现;只有计算成功而没有呈现链路不能替换桌面后端。 4. 保留成功上下文的生命周期,释放失败或未选中的上下文,并提供可追溯证据。 选择顺序是已验证独显、已验证核显、已验证虚拟 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](NativeCudaPort.md)。QEMU 加速的独立方向是实现自研来宾 VirtIO GPU 加速命令协议和对应渲染器,先证明像素结果、呈现和故障回退,再纳入上述选择策略。两个方向都不能通过添加 C# 的 CUDA 包或 `gl=on` 参数完成。 本轮不安装 Toolkit/显卡驱动,不改宿主设备绑定,不尝试直通,不重启电脑。CPU 优化结果与 CUDA 未完成状态应分别在交付报告中记录。