오래된 그래픽 칩이라도 리눅스 커널의 문이 열려 있으면 한 사람의 손으로 다시 쓸모를 얻을 수 있다. KodeMunkie라는 개발자가 공개한 sm750hdmifb는 실리콘모션(Silicon Motion)의 SM750 계열 중 SE-DP750A-HDMI라는 단일 HDMI PCIe 카드 하나만을 겨냥해 만든 실험적 DRM/KMS 드라이버다. 벤더가 더 이상 관심을 두지 않는 저사양 디스플레이 칩을, 커널 최신 인터페이스에 맞춰 현대적 방식으로 구동하려는 시도라는 점에서 오픈소스가 왜 중요한지를 압축적으로 보여주는 사례다.
왜 새 드라이버가 필요했나
리눅스에는 이미 sm750fb라는 기존 프레임버퍼 드라이버가 스테이징 트리에 존재한다. 하지만 이 프로젝트는 그 위에 얹는 것이 아니라 별도의 커널 모듈로 동작한다. 모듈 이름을 sm750hdmidrm.ko로 두어 기존 sm750fb.ko와 혼동되지 않게 했고, 설치 후 재부팅을 요구하는 이유도 명확하다. 재부팅 과정에서 오래된 sm750fb가 카드를 선점하기 전에 이를 블랙리스트 처리하기 위해서다. 지원 커널은 리눅스 6.17 이상으로 못박혀 있는데, 이 프로젝트가 사용하는 DRM 인터페이스가 그 이전 버전에는 없기 때문에 DKMS가 구버전 빌드를 의도적으로 거부한다. 소스에는 6.17부터 6.x 계열, 그리고 7.0 이후를 위한 호환 경로가 마련돼 있으며, 우분투 6.17과 7.0 커널에서 전체 테스트를 통과한다고 명시돼 있다. 다만 아웃오브트리(out-of-tree) 드라이버 특성상, 지원 범위 안이라도 커널이 내부 DRM API를 바꾸면 소스 수정이 필요할 수 있다.
대역폭이라는 물리적 제약
이 드라이버의 기술적 핵심은 대역폭 절약에 있다. SM750 프레임버퍼는 PCIe 1.1 x1이라는 매우 좁은 링크로 연결되며, 고해상도에서는 이 링크가 전체 화면을 32비트 색으로 반응성 있게 갱신하기에 부족하다. XRGB8888은 출력 픽셀당 4바이트를 보내지만 RGB565는 2바이트만 보낸다. 그래서 애플리케이션은 여전히 32비트로 렌더링하되, 업로드 직전에 변경된 화면 영역만 RGB565로 변환하고 KodeMunkie가 직접 설계한 정렬 디더링(ordered dither)을 적용한다. 여기에는 녹색 채널을 94% 보정하는 값이 들어가고, 8x8 디더 패턴을 화면 좌표에 고정해 작은 갱신에도 패턴이 기어다니거나 얼룩이 생기지 않도록 했다. 결과적으로 장치로 향하는 픽셀 트래픽을 절반으로 줄이면서 체감 색 정보를 상당 부분 보존한다.
2048픽셀의 벽과 소프트웨어 울트라와이드
하드웨어 제약도 흥미롭다. 이 카드는 보통 가로 1920픽셀까지로 소개되지만, edid_only=0 옵션을 주면 실제 2048픽셀 폭 모드가 노출된다. 그러나 2048이 하드웨어가 낼 수 있는 최대 실폭이다. SM750의 주 그래픽 평면이 오른쪽 가장자리 필드에 11비트만 할당하기 때문에 물리적 스캔아웃 폭이 2048을 넘을 수 없고, 높이를 줄여도 가로 비트는 늘어나지 않는다. 그래서 2560x1080 같은 울트라와이드는 소프트웨어로 만든다. 예컨대 2560x1080 모드는 2560을 2048로 20% 압축해 내보낸 뒤, 모니터의 '풀 와이드스크린 스트레치' 기능으로 다시 25% 늘려 패널을 채운다. 권장 모드는 오히려 2464x1080인데, 압축률이 16.9%로 더 낮아 버려지는 원본 정보가 적고 반응성과 선명도가 낫다는 것이다. 대신 최종 화면이 논리 형상보다 약 3.9% 넓어지는 미세한 종횡비 왜곡을 감수한다. 압축 후 8% 대비 샤픈을 적용하는 sharpen=1 옵션도 권장된다.
실무자가 유념할 지점
설치는 우분투 24.04와 리눅스 민트 22에서 DKMS 패키지로 로컬 빌드하는 방식이며, 모드와 스케일링 옵션은 /etc/default/grub의 커널 파라미터로 제어한다. 여기서 반드시 짚어야 할 부분은 위험 관리다. EDID 제한을 끄는 프로파일은 GPU, 트랜스미터, 모니터의 공표된 클럭 한계를 넘는 실험적 모드를 노출하며, 특정 모드는 신호 소실이나 화면 불안정을 일으킬 수 있다. 그래서 비-EDID 모드를 시험할 때는 SSH 같은 복구 경로를 확보하고, 문제 시 구버전 커널로 부팅하거나 추가한 GRUB 옵션을 제거하라는 안내가 반복된다. 지원 대상도 오직 SE-DP750A-HDMI로 표기된 특정 보드뿐이며, PCI ID가 같아도 VGA나 다른 트랜스미터, 다른 GPIO 배선을 쓰는 SM750 카드는 지원되지 않는다.
라이선스는 GPL-2.0-only이고, DDK 파생 파일은 리눅스 스테이징 sm750fb에서 온 것이며 실리콘모션의 독점 드라이버나 바이너리, 펌웨어는 포함되지 않았다고 밝힌다. 무엇보다 개발자 스스로 이 프로젝트가 상당 부분 'AI 보조 코딩' 혹은 '바이브 코딩'으로 만들어졌다고 인정한다. 동작을 직접 명세하고 물리적으로 테스트했으며 디더도 손수 설계했지만, DRM·KMS·커널 프레임워크의 모든 구현 세부를 독립적으로 보증할 만한 전문성은 없다고 선을 긋는다. 이 정직한 고백이 오히려 이 프로젝트의 성격을 잘 설명한다. 업스트림 수준의 품질 주장이 아니라, 검토와 개선을 위해 공개된 실험이라는 것이다. 벤더가 방치한 하드웨어를 개인이 되살리고, 그 결과를 모두가 뜯어볼 수 있게 내놓는 이 흐름 자체가 오픈소스가 여전히 유효한 이유다.