Igalia가 Valve와 협력해 Steam Frame, Steam Machine 등 차세대 Steam 기기를 위해 FEX, Mesa3D Turnip, Vulkan CTS, LAVD 스케줄러, AMD 디스플레이 드라이버 등 핵심 오픈소스 기술을 개선하고 Linux 게임 생태계를 강화한 과정을 소개한다.
지난주 Valve는 한꺼번에 세 가지 새로운 게임 기기를 공개하며 PC 게임 업계를 깜짝 놀라게 했습니다. 무선 VR 헤드셋인 Steam Frame, PlayStation이나 Xbox와 비슷한 콘솔인 Steam Machine, 그리고 휴대용 게임 컨트롤러인 Steam Controller입니다. 매우 성공적이었던 Valve Index와 Steam Deck의 후속 제품인 이 기기들은 내년에 출시될 예정입니다.
Igalia는 오래전부터 Valve와 함께 Machine과 Frame의 기반이 되는 SteamOS를 개발해 왔으며, 특히 Frame에 기여하게 되어 매우 기쁘게 생각합니다. Machine이나 Deck이 x86 CPU를 사용하는 것과 달리, Frame은 ARM 기반 CPU를 사용합니다.
일반적으로 이는 ARM 칩용으로 컴파일된 게임만 Frame에서 실행할 수 있다는 뜻입니다. 이 장벽을 넘기 위해, FEX라는 번역 레이어를 사용합니다. 이는 거의 모든 게임용 PC에 쓰이는 x86 칩용으로 컴파일된 애플리케이션을, x86 기계어 코드를 ARM64 기계어 코드로 번역함으로써 ARM 칩에서 실행할 수 있게 해 줍니다.
“Igalia의 컴파일러 팀에서 일하는 엔지니어로서, 저처럼 비디오게임을 사랑하는 사람이 Valve와 함께 FEX를 작업한다는 건 그야말로 꿈이 현실이 된 거죠.”라고 Paulo Matos는 말합니다. 그렇다 해도 과제는 만만치 않습니다. 번역이 제대로 작동하는지 확인하는 일이 대체로 자동화된 테스트가 아닌, 수동 QA에 의존해야 하기 때문입니다. “게임을 직접 실행해 봐야 해요. 때로는 색이나 사운드에서 오류가 나타나기도 하고, 2단계에서 문을 부술 때 게임이 어떻게 반응하는지에서 드러나기도 하죠. 이런 걸 디버깅하는 데만도 시간이 꽤 걸립니다.”라고 Matos는 말합니다. “작년 초에 했던 최적화 작업에서는 _Psychonauts_라는 게임을 테스트에 썼습니다. 디버깅 때문에 게임 시작 후 3~4분 정도를 정말 수없이 반복해서 플레이했어요. 제 기록을 보면 Steam에서 이 게임을 29시간 플레이했다고 나오는데, 사실상 항상 처음 몇 분만 반복한 셈입니다.”
CPU를 넘어, Steam Frame에 사용된 Qualcomm Adreno 750 GPU는 이 기기에서 데스크톱 게임과 기타 복잡한 워크로드를 실행하는 데 있어서 또 다른 도전을 제기했습니다. 이를 위해서는 높은 성능을 유지하면서도 주요 렌더링 버그를 제거하고 정확성을 보장할 수 있는 매우 견고한 Vulkan 드라이버가 필요합니다. 이런 두 가지를 동시에 만족시키는 건 매우 어렵지만, 우리는 Valve를 위해 Qualcomm Adreno GPU용 FOSS Vulkan 드라이버인 Mesa3DTurnip으로 바로 그 목표를 달성했습니다.


게임 “Monster Hunter World”의 메인 메뉴에서 렌더링 오류 수정 전후를 비교한 슬라이딩 이미지
우리가 작업을 시작하기 전에는, 여기 블로그 글에서 더 자세히 살펴볼 수 있는 LRZ 같은 핵심 최적화나 autotuner (그리고 그 후속 대규모 개편)가 구현되어 있지 않았습니다. 더 나쁜 것은 Adreno 700 시리즈 GPU에 대한 지원 자체가 전혀 없었다는 점입니다. 이후 우리는 이 지원을 추가했고, 동시에 타일드 렌더링 지원도 도입했습니다.
“우리는 많은 Vulkan 확장을 구현했고, 다른 수많은 확장들을 리뷰했습니다.”라고 그래픽스 팀 엔지니어인 Danylo Piliaiev은 말합니다. “수년간 DXVK, vkd3d-proton, Zink를 통해 D3D11, D3D12, OpenGL 게임들이 올바르게 렌더링되도록 보장해 왔고, 그 과정에서 많은 렌더링 문제를 조사했습니다. 우리는 독점 드라이버보다 더 높은 수준의 정확성을 달성했으며, 많은 경우 성능 면에서도 Mesa3D Turnip이 더 빠릅니다.”
우리는 Valve, Google, 기타 여러 회사의 훌륭한 사람들과 함께 수년간 Vulkan 드라이버를 반복적으로 개선해 왔습니다. 새로운 기능, 버그 수정, 성능 향상, 디버깅 워크플로우를 도입하는 과정이었습니다. 그중 일부는 이후 Igalia에 합류하기도 했는데, 예를 들어 지금은 우리의 동료이자 그래픽스 팀 개발자인 Emma Anholt가 그렇습니다. “저는 22년 동안 Mesa에서 일해 왔는데, 이제는 여러 하드웨어 프로젝트 전반에 걸쳐 그 일을 계속할 수 있는, 그리고 조직이 개발자의 업무 경험을 우선시하고 구성원에게 권한을 부여하는 집을 얻게 되어 정말 좋습니다.”
이 모든 과정에서 Valve의 지원은 아무리 강조해도 지나치지 않습니다. Mesa3D Turnip이나 FEX 같은 오픈 소프트웨어를 기기 기반으로 선택했다는 것은, Valve가 이와 같은 오픈소스 프로젝트를 사용하는 누구에게나 돌아가는 개선과 최적화에 적극적으로 참여하고 지원하겠다는 의미입니다.
“우리가 한 작업의 결과로, PC 게임을 안드로이드 폰에서 돌리기 위해 이런 프로젝트들을 사용하는 취미 개발자들로부터 성능이 크게 향상되고 렌더링 글리치가 줄었다는 긍정적인 피드백을 많이 받았습니다.”라고 Turnip 작업에 참여하는 또 다른 그래픽스 팀 엔지니어 Dhruv Mark Collins는 말합니다. “그리고 이는 양방향이에요! 이렇게 널리 테스트된 덕분에 꽤 골치 아픈 버그 몇 개를 잡을 수 있었고, 이는 FOSS 모델이 관련된 모든 이들에게 왜 이로운지 잘 보여줍니다.”

2025년 6월 이후 Turnip의 자동 측정 성능 향상 추세
그래픽스 드라이버 개발에서 흥미로운 영역 중 하나는 그 안에 포함된 모든 컴파일러 작업입니다. Mesa3D Turnip 같은 Vulkan 드라이버는 애플리케이션이 GPU로 보내는 셰이더 프로그램을 처리해야 하는데, 이 프로그램은 게임을 플레이하는 동안 화면의 픽셀들이 기하, 텍스처, 조명과 결합되어 어떻게 음영 처리되거나 색을 입히는지를 제어합니다. 우리의 컴파일러 팀 엔지니어인 Job Noorman은 Mesa3D Turnip에서 사용하는 컴파일러에 중요한 기여를 했습니다. 그는 또한 모든 Mesa 드라이버가 사용하는 공통 구성 요소인 Mesa3D NIR 셰이더 컴파일러에도 기여했는데, 여기에는 RADV (Steam Deck에서 가장 널리 사용됨)나 V3DV (Raspberry Pi 보드에 사용됨)도 포함됩니다.
Igalia에서 늘 그렇듯, 우리는 고객을 위한 결과 전달에 집중하면서도, 우리의 작업을 가능한 한 널리 유용하게 만들고자 했습니다. 예를 들어 Anholt는 말합니다. “우리 작업의 목표는 줄곧 Frame에 들어가는 Snapdragon 8 Gen 3였지만, 실제로는 수년간의 Snapdragon 하드웨어에까지 거슬러 올라가 영향을 미치고 있습니다. 우리는 이들에 대해서도 회귀 테스트를 수행해 Vulkan 적합성을 유지하는지 확인합니다.” 이는 Igalia가 Frame을 위해 수행한 작업이 Vulkan 적합성 테스트 모음(CTS) 280만 개 이상의 테스트를 꾸준히 통과해 왔다는 뜻이며, 일부 테스트는 Igalia가 직접 만드는 데 참여하고 있습니다.
우리의 Vulkan CTS 전문가 Ricardo García는 다음과 같이 말합니다.
Igalia와 다른 Valve 협력사들은 그래픽스 API 표준(예: Vulkan)을 유지·개발하는 단체인 Khronos Group 내 여러 분야에 적극적으로 참여하고 있습니다. 우리는 명세 수정과 피드백을 제공하고, 수많은 새로운 Vulkan 확장 개발에 정기적으로 관여하고 있습니다. 이들 중 일부는 메시 셰이딩처럼 게임 개발자에게 매우 중요한 기능이 되기도 하고, 다른 일부는 DirectX 같은 다른 API를 Vulkan으로 매끄럽고 효율적으로 변환할 수 있도록 돕거나, 하드웨어 기능을 최대한 활용해 Steam Frame과 같은 모바일 기기나 Steam Machine과 같은 데스크톱 기기 등 여러 플랫폼에서 애플리케이션이 훌륭한 성능을 낼 수 있도록 돕습니다. 이러한 새로운 확장들에 대해 Vulkan CTS 커버리지를 확보하는 일은 릴리스 과정에서 매우 중요한 단계이며, 명세가 명확한지, 드라이버가 이를 올바로 구현하는지를 보장하는 데 큰 역할을 합니다. Igalia 엔지니어들은 Valve와의 협업이 시작된 이후 수백만 줄의 소스 코드와 테스트를 여기에 기여해 왔습니다.
개발을 계속 진행하면서 우리가 마주한 큰 도전 중 하나는 회귀(regression)를 일으키지 않는 것이었습니다. 겉보기에 사소해 보이는 작은 변경도 게임 렌더링을 완전히 망가뜨릴 수 있고, 때로는 CTS조차 이런 문제를 잡아내지 못합니다. 자동화된 테스트는 할 수 있는 범위가 상당히 제한적이지만, Igalian들은 이런 장벽을 돌파할 방법을 찾았습니다. Piliaiev는 자신의 최근 XDC 2025 발표에서 다룬 개발에 대해 이렇게 말합니다. “D3D11, D3D9, D3D8, Vulkan, OpenGL API에 걸친 다양한 게임들을 대상으로 단일 프레임 캡처를 자동으로 실행하는 지속적 통합(CI) 테스트를 만들었습니다. 이를 통해 렌더링이나 성능 회귀가 발생하지 않도록 보장합니다.”
앞을 내다보면, Igalia의 Valve를 위한 작업은 앞으로도 더 넓은 Linux 게임 생태계에 혜택을 줄 것입니다. 예를 들어, 배터리로 구동되는 VR 헤드셋인 Steam Frame은 제한된 전력 예산 안에서 높은 성능을 제공해야 합니다. 이를 해결하는 한 가지 방법은 더 효율적인 태스크 스케줄러를 만드는 것이며, 이는 Igalia의 커널 팀 소속 민창우가 작업해 온 부분입니다. 그의 말입니다. “저는 게임을 위한 맞춤형 CPU 스케줄러인 LAVD: Latency-criticality Aware Virtual Deadline scheduler를 개발해 왔습니다.”
일반적으로 스케줄러는 중요한 태스크를 자동으로 식별하고, 응답성을 개선하기 위해 이들의 데드라인을 동적으로 끌어올립니다. 대부분의 태스크 스케줄러는 에너지 소비를 고려하지 않지만, Rust 기반의 LAVD는 다릅니다. Min은 말합니다. “LAVD는 각 칩의 성능 대 에너지 트레이드오프를 고려해 스케줄링 결정을 내립니다. 필요한 연산 능력을 실시간으로 측정하고 예측한 뒤, 그 수요를 최소한의 에너지 소비로 충족시킬 수 있는 최적의 CPU 집합을 선택합니다.”
또 다른 커널 엔지니어인 Melissa Wen은 AMD 커널 디스플레이 드라이버를 개선해, Steam Deck과 Steam Machine을 포함한 AMD 하드웨어 계열 전반에서 SteamOS의 우수한 색 관리와 HDR 지원을 유지하는 작업을 해 왔습니다. 이는 Steam Machine의 최신 디스플레이 하드웨어에 특히 중요합니다. 이 하드웨어는 색상 성능에서 눈에 띄는 차이를 제공하며, 더 강력하고 효율적인 색 관리 기능을 목표로 하기 때문에, 이를 뒷받침하는 드라이버 작업이 필수적이었습니다.
…이렇게 해서 마무리입니다! 우리는 앞으로도 향후 버전의 SteamOS를 개선하기 위한 노력을 계속할 것이며, Valve처럼 강력히 지지해 주는 파트너와 함께라면 Linux 게임을 더 좋게 만들 수 있는 더 많은 작업을 하게 되리라 기대합니다. 방금 소개한 내용이 흥미롭게 느껴졌고, 우리와 함께 여러분 고유의 까다로운 문제들을 해결해 보고 싶다면 언제든 연락해 주세요!