Why open source rocks – a new SM750 (Silicon Motion GPU) HDMI Driver
The new open-source Linux display driver for the Silicon Motion SM750-based SE-DP750A-HDMI PCIe card pushes it to real 2048-wide output or a software-scaled 2560x1080 ultrawide desktop, using bandwidth-saving colour conversion and update optimisations for smoother performance. It is experimental and supports only one specific SM750 board; optional modes can exceed published GPU or monitor clock limits and may produce no signal, distortion, or an unstable display, so users should keep SSH or another recovery route available when trying non-EDID modes.
The tested board must be sold or marked as SE-DP750A-HDMI and have all of: Silicon Motion SM750G10-AC revision A1 (PCI ID 126f:0750), Silicon Image/Lattice SiI9024ACNU HDMI transmitter, 16 MiB display memory, and one HDMI output. The PCI ID alone is not enough; other SM750 cards using VGA, a different transmitter, or different GPIO wiring are not supported. Ubuntu 24.04 and Linux Mint 22 users can build a DKMS package locally with the listed apt/git commands, and the reboot after installing the .deb matters because it lets the package blacklist Linux's old sm750fb driver before it can claim the card. The package is named sm750hdmifb; the kernel module is sm750hdmidrm.ko.
The driver is intended for Linux 6.17 and newer; DKMS deliberately refuses older kernels because the required DRM interfaces are unsupported. The source has compatibility paths for Linux 6.17 through the 6.x series and for Linux 7.0 onward. It currently builds and passes the full test suite against 6.17 and 7.0 Ubuntu kernels, and the manual CI workflow also builds against Ubuntu 24.04's 6.17 kernel headers. There is no fixed upper version cap, but future kernels can change internal DRM APIs; since this is out-of-tree, a new kernel version may require a source update. Prebuilt packages are published under GitHub Releases when available, but local building is recommended so DKMS compiles against the installed kernel headers.
By default the driver uses monitor EDID modes, dithered 16-bit RGB565 scanout, a hardware cursor, coalesces updates on a worker, uploads eight-row batches with DMA, and falls back safely if DMA fails. Applications still render in 32-bit colour; immediately before upload, the driver converts changed screen regions to RGB565 and applies KodeMunkie's ordered dither with a 94% green-channel correction. This is the default because the SM750 framebuffer is reached over a PCIe 1.1 x1 link, which cannot provide responsive full-screen 32-bit updates at higher resolutions: XRGB8888 sends four bytes per output pixel while RGB565 sends two, so dithered RGB565 halves device-bound pixel traffic.