Hacker News 中文摘要

RSS订阅

开源为何强大——全新SM750(慧荣GPU)HDMI驱动 -- Why open source rocks – a new SM750 (Silicon Motion GPU) HDMI Driver

该文章介绍了SM750 HDMI DRM驱动,专为SE-DP750A-HDMI PCIe显卡设计,支持2048宽输出或2560x1080超宽桌面,通过色彩转换和更新优化提升性能。驱动尚处实验阶段,非EDID模式可能不稳定。文章提供了安装步骤,需在Ubuntu 24.04或Linux Mint 22上构建DKMS包并重启。

正文

好的,这是根据您的要求,对原文进行中文重述和精简后的版本:

SM750 HDMI DRM 驱动

该驱动旨在将SM750显卡的输出能力提升至真正的2048像素宽,或通过软件缩放实现2560x1080的超宽桌面。它通过节省带宽的色彩转换和更新优化,来获得更流畅的性能。

这是一个针对单HDMI接口的SE-DP750A-HDMI PCIe显卡的Linux显示驱动。

实验性声明:此驱动专为特定SM750板卡设计。部分可选模式可能超出GPU或显示器的时钟限制,可能导致无信号、画面失真或显示不稳定。在尝试非EDID模式时,请确保有SSH或其他恢复途径可用。

支持的显卡

经测试的板卡为SE-DP750A-HDMI,具备以下特征: - Silicon Motion SM750G10-AC芯片(修订版A1) - PCI ID: 126f:0750 - Silicon Image/Lattice SiI9024ACNU HDMI发送器 - 16 MiB显存 - 一个HDMI输出

仅凭PCI ID不足以判断。其他SM750显卡可能使用VGA、不同的发送器或GPIO接线,目前不受支持。

安装

Ubuntu 24.04和Linux Mint 22用户可通过以下命令本地构建DKMS包: bash sudo apt update sudo apt install build-essential dkms linux-headers-$(uname -r) libdrm-dev git git clone https://github.com/KodeMunkie/sm750hdmifb.git cd sm750hdmifb make check ./build-package.sh sudo apt install ./dist/sm750hdmifb_0.5.5_all.deb sudo reboot 重启很重要,它能让包在旧版sm750fb驱动占用显卡前将其列入黑名单。内核模块名为sm750hdmidrm.ko,以避免与sm750fb.ko混淆。

内核兼容性

此驱动面向Linux 6.17及更新版本。DKMS会拒绝旧内核,因为所需DRM接口不受支持。源代码包含对6.17至6.x系列以及7.0以上版本的兼容路径。目前可在6.17和7.0内核上构建并通过完整测试。

常规使用

默认情况下,驱动会: - 使用显示器的EDID模式 - 使用带抖动的16位RGB565扫描输出 - 使用硬件光标 - 在工作线程上合并更新 - 通过DMA批量上传8行数据 - 若DMA失败则安全回退

应用程序仍以32位色渲染。在上传前,驱动会将变化的屏幕区域转换为RGB565,并应用KodeMunkie的排序抖动(含94%绿色通道校正)。这是默认设置,因为SM750帧缓冲通过PCIe 1.1 x1链路访问。在高分辨率下,该链路无法提供响应迅速的32位全屏更新。抖动后的RGB565将发往设备的数据流量减半,同时保留了大部分色彩细节。

常见内核/GRUB选项

(为简洁起见,省略了sm750hdmidrm.前缀。例如,在GRUB中应输入sm750hdmidrm.enable_dma=0)

  • scanout_format=rgb565-bbdither(默认):推荐,带绿色校正的16位抖动扫描输出。
  • scanout_format=xrgb8888:仅用于32位扫描输出,禁用RGB565和抖动,上传流量翻倍,高分辨率下可能卡顿。
  • scanout_format=rgb565:仅用于纯RGB565,禁用抖动和绿色校正,降低色彩质量。
  • dither_green_gain=94(默认):开启调谐后的绿色校正。
  • dither_green_gain=100:关闭绿色校正,可能产生偏绿的色彩平衡。
  • enable_dma=1(默认):开启DMA上传,带自动CPU回退。
  • enable_dma=0:禁用DMA,强制CPU上传,性能通常较低。
  • disable_hardware_cursor=1:禁用硬件光标,使用软件光标回退。
  • edid_only=0:危险,停止EDID对模式和时钟的限制,显示器可能不支持。启用驱动目录和超宽模式所需。
  • softscale_wide=1:危险/实验性,启用宽屏压缩,需要显示器拉伸。用于2464x1080和2560x1080模式。需同时设置edid_only=0。
  • sharpen=1:推荐与超宽模式配合使用,在压缩后添加固定8%对比度锐化。
  • double_shadow=1:推荐用于避免冗余上传,添加源和输出快照比较,跳过未变化像素,但占用更多系统内存。
  • async_updates=1(默认):只保留最新的待处理更新,避免排队过时帧。

超宽缩放

该设备通常描述为支持最高1920像素宽。设置edid_only=0后,驱动会暴露以下真正的2048像素宽硬件模式(实验性,不受EDID限制): - 2048x864 (59.94-75 Hz) - 2048x1024 (59.94-72 Hz) - 2048x1080 (50-75 Hz,高刷新率可能超规格) - 2048x1152 (59.94-60 Hz)

softscale_wide=1会添加两个更宽的逻辑桌面,均需要物理2560x1080超宽显示器,并在其菜单中启用全宽屏拉伸: - 2464x1080(推荐):逻辑桌面,压缩比16.9%,发送2048x1080信号,显示器拉伸至2560x1080。推荐开启sharpen=1。 - 2560x1080:逻辑桌面,压缩比20%,发送2048x1080信号,显示器拉伸至2560x1080。细节和性能较低。

为何推荐2464x1080 对于2560x1080模式,驱动进行20%的水平压缩,显示器再反向拉伸25%。这提供了真正的2560x1080工作空间,但会丢失更多水平细节。而2464x1080模式仅压缩16.9%,丢弃的源细节更少,最终图像仅比逻辑几何形状宽约3.9%,这种轻微的比例失真通常难以察觉,但能换来更好的响应速度和清晰度。

自定义桌面抖动 rgb565-bbdither使用KodeMunkie专门为此卡桌面使用而调校的8x8有序抖动。它包含可调的绿色通道校正,并将图案锚定到屏幕坐标,使小更新不会导致图案爬行或留下不匹配的色块。

故障排除 检查绑定和驱动消息: bash lspci -nnk -d 126f:0750 journalctl -k -b | grep -iE ' sm750|sii902 ' 如果实验模式导致无信号,可从恢复模式启动旧内核或移除GRUB选项。

开发者须知 官方SM750规格说明中,至少有一个硬件观察到的部分更新边界是错误的。源代码中记录了经验证有效的解决方法,不得仅因理想模型或规格说明认为其不必要而将其移除。

许可与声明 本项目采用GPL-2.0-only许可。DDK衍生文件来自Linux的GPL-2.0暂存区sm750fb驱动。不包含任何专有驱动、二进制对象、固件或封闭库。

本项目通过大量AI辅助或“氛围编码”创建。作者指定并物理测试了行为,设计了自定义抖动,但未声称具备足够的Linux DRM、KMS、DKMS或内核框架专业知识来独立保证每个实现细节。源代码已发布供审查和改进。

您使用此实验性驱动及所有非EDID或超规格模式,风险自负。您需自行负责恢复途径、备份、模式选择和硬件兼容性。作者和贡献者对显示、数据、时间、硬件、收入或任何其他直接或间接损失不承担责任。

该软件按“原样”提供,不提供任何担保。

评论

根据评论内容,总结如下:

主要观点与论据:

  1. 开发者创新与开源贡献(核心观点):作者为廉价服务器GPU(SM750)编写了现代Linux驱动,支持超宽分辨率、高刷新率和更快性能,并开源。关键引用:

    • "I wrote a modern Linux driver that supports ultrawide resolutions, higher refresh, and faster performance"(作者SillyUsername)
    • "I decided to vibe code a new driver with new features, to make it usable for day to day desktop use"(作者SillyUsername)
  2. 社区认可与建议:评论者普遍赞赏开源行为,并提出改进建议。关键引用:

    • "Will you upstream it?"(作者realusername,询问是否向上游提交)
    • "Another piece of silicon saved from the landfill! Open source keeps hardware relevant way past its commercial lifecycle."(作者eggsome,赞扬延长硬件寿命)
  3. 技术讨论与疑问:部分评论关注技术细节或提出质疑。关键引用:

    • "A GPU with HDMI and 16MB of VRAM is a very strange combination."(作者userbinator,对硬件配置表示疑惑)
    • "What kind of motherboard has no onboard iGPU these days?"(作者torvin92,质疑使用场景)
  4. 对专有驱动的批评:评论者表达对专有驱动的不满,并肯定开源价值。关键引用:

    • "Proprietary drivers for obscure hardware were the bane of my existence. Glad to see this SM750 driver open-sourced."(作者sabot90260)

平衡性说明:评论整体积极,主要围绕开源贡献、技术细节和社区反馈展开,未出现明显负面观点。少数质疑(如硬件配置、使用场景)属于技术探讨,不影响对开源行为的肯定。