Trình điều khiển mã nguồn mở SM750 HDMI: Đẩy GPU cũ Silicon Motion vượt giới hạn, hỗ trợ màn hình siêu rộng 2560x1080
Một dự án mã nguồn mở mới có tên sm750hdmifb mang đến trình điều khiển DRM hiện đại cho card đồ họa Silicon Motion SM750 vốn chỉ hỗ trợ VGA, mở ra khả năng xuất tín hiệu HDMI với độ phân giải thực 2048 pixel và không gian làm việc ảo lên tới 2560x1080 nhờ kỹ thuật nén thông minh. Trình điều khiển tối ưu băng thông PCIe 1.1 x1 bằng cách sử dụng định dạng màu RGB565 với thuật toán dither tùy chỉnh, hứa hẹn cải thiện hiệu năng đáng kể. Dự án được phát hành theo giấy phép GPL-2.0 và đặc biệt phù hợp để hồi sinh các bo mạch chủ hoặc máy trạm cũ đang sử dụng loại card màn hình này.

Trình điều khiển mã nguồn mở "hồi sinh" GPU Silicon Motion SM750: Hỗ trợ HDMI và màn hình siêu rộng 2560x1080
Trong khi thế giới công nghệ đổ dồn sự chú ý vào những GPU mạnh mẽ nhất, một dự án mã nguồn mở đầy tham vọng vừa xuất hiện, mang đến một luồng gió mới cho một con chip đồ họa đã có tuổi đời hơn 15 năm. Dự án sm750hdmifb cung cấp một trình điều khiển Linux DRM hiện đại cho card đồ họa Silicon Motion SM750, vốn thường chỉ được sử dụng để hiển thị VGA cơ bản. Trình điều khiển mới này không chỉ mở khóa khả năng xuất tín hiệu HDMI mà còn đẩy giới hạn phần cứng lên mức tối đa, cho phép tạo ra một không gian làm việc "siêu rộng" ảo lên tới 2560x1080 pixel.
Điểm đáng chú ý nhất của dự án nằm ở cách tiếp cận thông minh để vượt qua giới hạn băng thông vốn có của card. Thay vì cố gắng truyền toàn bộ dữ liệu 32-bit, trình điều khiển sm750hdmifb chuyển đổi khung hình sang định dạng RGB565 16-bit với một thuật toán dither (phối màu) có trật tự tùy chỉnh được tác giả phát triển riêng. Điều này giúp giảm một nửa lượng dữ liệu cần truyền qua khe PCIe 1.1 x1, mang lại hiệu năng mượt mà hơn đáng kể ở các độ phân giải cao.
Khả năng tương thích phần cứng cụ thể
Điều quan trọng cần lưu ý là trình điều khiển này không hỗ trợ mọi loại card sử dụng chip SM750. Để được hỗ trợ, card của bạn cần đáp ứng đầy đủ các điều kiện sau:
- Chip Silicon Motion SM750G10-AC, revision A1
- PCI ID
126f:0750 - Bộ chuyển đổi tín hiệu HDMI Silicon Image/Lattice SiI9024ACNU
- 16 MiB bộ nhớ hiển thị
- Một cổng xuất HDMI
Các card SM750 khác có thể sử dụng cổng VGA, bộ chuyển đổi tín hiệu khác hoặc có cách đi dây GPIO khác và hiện không được hỗ trợ. Việc kiểm tra duy nhất ID PCI là không đủ.
Cài đặt dễ dàng trên Ubuntu và Linux Mint
Dự án cung cấp một cách cài đặt tương đối đơn giản cho người dùng Ubuntu 24.04 và Linux Mint 22 bằng cách xây dựng gói DKMS cục bộ. Quá trình này giúp trình điều khiển tự động biên dịch và cài đặt cho đúng phiên bản kernel đang chạy.
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
Việc khởi động lại máy tính là bắt buộc để gói cài đặt có thể đưa trình điều khiển cũ sm750fb của Linux vào danh sách đen trước khi nó chiếm quyền điều khiển card.
Tùy chỉnh linh hoạt với các tham số kernel
Một trong những điểm mạnh của trình điều khiển mã nguồn mở này là khả năng tùy chỉnh cao thông qua các tham số dòng lệnh kernel (GRUB). Người dùng có thể điều chỉnh định dạng quét hình, thao tác với thuật toán dither, bật/tắt DMA, hay kích hoạt các chế độ siêu rộng thử nghiệm.
| Tuỳ chọn | Mặc định | Mục đích |
|---|---|---|
scanout_format | rgb565-bbdither | Chọn định dạng quét hình, mặc định là RGB565 với dither |
dither_green_gain | 94 | Điều chỉnh mức hiệu chỉnh kênh màu xanh lá trong thuật toán dither |
enable_dma | 1 | Bật/tắt truyền dữ liệu DMA, mặc định là bật |
edid_only | 1 | CẢNH BÁO: Đặt 0 để bỏ qua giới hạn EDID, cho phép các chế độ phân giải thử nghiệm |
softscale_wide | 0 | THỬ NGHIỆM: Bật tính năng nén để tạo màn hình siêu rộng |
sharpen | 0 | Thêm hiệu ứng tăng độ tương phản 8% sau khi nén, cải thiện độ sắc nét |
double_shadow | 0 | So sánh khung hình trước/sau để bỏ qua các vùng không thay đổi, giảm tải truyền dữ liệu |
Chế độ siêu rộng thử nghiệm: Vượt qua giới hạn 2048 pixel
Phần cứng SM750 có một giới hạn cứng về độ rộng quét hình vật lý là 2048 pixel. Tuy nhiên, trình điều khiển mới có thể tận dụng tối đa giới hạn này với các chế độ phân giải thực như 2048x1080 ở tần số quét lên tới 75Hz. Bước đột phá tiếp theo là tính năng softscale_wide, cho phép tạo ra các không gian làm việc ảo rộng hơn bằng cách nén dữ liệu trước khi xuất ra màn hình.
Màn hình logic 2464x1080 do trình điều khiển tạo ra
Màn hình logic 2464x1080: Đây là không gian làm việc mà hệ điều hành nhìn thấy, rộng hơn giới hạn phần cứng.
Với chế độ này, trình điều khiển sẽ nén một màn hình logic có độ phân giải lên tới 2560x1080 xuống đúng 2048 pixel chiều ngang trước khi gửi tín hiệu HDMI. Khi đó, một màn hình siêu rộng 2K vật lý với chức năng FULL WIDESCREEN STRETCH (kéo giãn toàn màn hình) được bật sẽ tự động kéo giãn tín hiệu 2048x1080 này ra toàn bộ 2560 pixel vật lý của tấm nền.
Tín hiệu HDMI 2048x1080 sau khi nén bởi trình điều khiển
Tín hiệu HDMI 2048x1080 thực tế: Hình ảnh trông "bẹt" vì đã được nén từ màn hình logic 2464x1080 xuống giới hạn 2048 pixel của phần cứng.
Khuyến nghị chọn chế độ 2464x1080
Mặc dù cả hai chế độ 2464x1080 và 2560x1080 đều hoạt động, tác giả khuyến nghị người dùng nên chọn 2464x1080 vì lý do hiệu năng và độ sắc nét. Chế độ này chỉ cần nén 16,9% chiều ngang (so với 20% của chế độ 2560), đồng nghĩa với việc ít chi tiết nguồn bị mất hơn. Hình ảnh cuối cùng sau khi màn hình kéo giãn sẽ sắc nét hơn, có độ méo nhẹ khoảng 3,9% mà mắt thường khó nhận ra, nhưng bù lại tốc độ phản hồi nhanh hơn đáng kể. Kèm theo đó, người dùng nên bật tham số sharpen=1 để khôi phục một phần độ tương phản cạnh bị mất trong quá trình nén.
Kết quả hiển thị trên màn hình vật lý
Kết quả cuối cùng trên màn hình vật lý 2560x1080 ở 75Hz: Hình ảnh siêu rộng được tái tạo hoàn hảo nhờ sự kết hợp giữa nén và kéo giãn.
Cảnh báo rủi ro và tinh thần mã nguồn mở
Dự án này mang đậm tinh thần của cộng đồng mã nguồn mở: mạnh dạn khám phá, chia sẻ và cải tiến. Tuy nhiên, người dùng cần đặc biệt lưu ý rằng toàn bộ các chế độ vượt qua giới hạn EDID đều được đánh dấu là thử nghiệm và có thể khiến màn hình mất tín hiệu, bị nhiễu hoặc không ổn định. Tác giả dự án cũng thành thật chia sẻ rằng dự án được tạo ra với sự hỗ trợ đáng kể từ AI ("vibe coding"), và dù đã được kiểm thử vật lý, anh vẫn hoan nghênh các chuyên gia DRM/Kernel đóng góp ý kiến để hoàn thiện mã nguồn.
"Dự án này được tạo ra thông qua sự hỗ trợ rộng rãi của AI... Tôi đã xác định, kiểm thử hành vi vật lý và thiết kế thuật toán dither tùy chỉnh, nhưng không tự nhận đủ chuyên môn về Linux DRM, KMS, DKMS để đảm bảo độc lập cho từng chi tiết triển khai."
Điểm đáng khen ngợi là dự án hoàn toàn mã nguồn mở với giấy phép GPL-2.0, không chứa bất kỳ blob firmware hay thư viện đóng nào từ Silicon Motion. Đây là một ví dụ tuyệt vời cho thấy cộng đồng có thể tự tay cải thiện và kéo dài tuổi thọ phần cứng, đồng thời là nguồn tài liệu tham khảo quý giá cho các lập trình viên quan tâm đến phát triển trình điều khiển DRM cho Linux.

