GNOME Mutter, 보조 GPU 복사 버퍼의 손상 추적 개선
요약
GNOME Mutter가 보조 GPU 복사 버퍼의 손상 추적 기능을 개선하여 멀티-GPU 환경에서의 사용자 경험을 향상시킵니다. 이 업데이트는 특히 하이브리드 노트북과 같은 여러 디스플레이를 사용하는 시스템에서 안정적인 프레임 처리를 가능하게 합니다.
핵심 포인트
- GNOME 51.2부터 보조 GPU 복사 버퍼 손상 추적 기능이 도입됩니다.
- 멀티-GPU 환경의 사용자 경험 개선에 초점을 맞춘 업데이트입니다.
- 세 가지 목적지 버퍼를 순환하는 주요-GPU 복사 로직을 개선했습니다.
GNOME Mutter, 보조 GPU 복사 버퍼의 손상 추적 개선

업데이트: 이는 GNOME 51.2에서 처음 등장할 예정이며, 컴포지터가 이제 보조 GPU 복사 버퍼에 대한 손상을 추적합니다. 이는 일부 하이브리드 노트북과 같은 멀티-GPU 설정을 사용하는 사용자들에게 경험을 개선해야 합니다.
Red Hat의 Ray Strode가 디스플레이가 다른 GPU에 연결된 경우, 보조 GPU 복사 버퍼의 손상 추적을 지원하는 코드를 작성했습니다. Ray는 병합 요청(merge request)에서 다음과 같이 설명했습니다:
"네이티브 백엔드는 모니터가 다른 GPU에 연결될 때 렌더링된 프레임을 복사합니다. 선택된 복사 모드에 따라 두 개의 GPU 버퍼 또는 세 개의 CPU 접근 가능한 버퍼를 대상으로 사용합니다. 이 경로들에 전달되는 손상 영역은 최신 프레임으로부터의 변경 사항을 설명합니다.
주요-GPU 복사는 세 개의 목적지 버퍼를 순환합니다. 재사용된 버퍼는 여러 프레임이 지났을 수 있으므로, 최신 손상만 복사하는 것은 이전 픽셀들을 남겨둘 수 있습니다. 직렬화된 보조-GPU 복사는 유효한 두 프레임 가정을 가지고 있으며 모든 복사가 성공할 때마다 그러하지만, 실패는 그 손상 기록이 버퍼 내용과 불일치하게 만들 수 있습니다. CPU 폴백은 전체 프레임을 복사하지만, 현재 읽기 실패 후의 버퍼를 반환합니다. 성공적인 제로-카피 간격 또한 폴백 버퍼가 기록된 상태보다 더 오래되게 남겨둘 수 있습니다.
이 병합 요청은 MetaSecondaryGpuCopyState를 추가하여 각 목적지 버퍼에서 마지막으로 성공한 소스 프레임을 기록하고 최근 프레임의 손상을 유지합니다. 네이티브 복사 경로는 이를 사용하여 선택된 버퍼가 필요로 하는 모든 변경 사항을 포함합니다. 알 수 없거나 너무 오래된 버퍼는 전체 프레임을 받고, 16개 이상의 사각형 영역도 마찬가지입니다. 버퍼 선택은 성공적인 복사 후에만 진행되며, 성공적인 제로-카피 가져오기는 폴백 상태를 무효화합니다."
해당 코드는 어제 이 병합 요청을 통해 Mutter Git에 병합되었습니다. 해당 코드는 한 달 전에 작성되었으나, 처음에 커밋 메시지 일부가 AI/LLM 생성의 불필요한 내용(slop)이라는 우려로 인해 지연된 바 있습니다.
Strode는 가상 디스플레이를 위한 실험적인 Linux DRM/KMS 드라이버인 castkms의 일환으로 이 손상 추적 개선 작업을 진행했습니다. 이와 관련하여, 그는 Google Cast 기기를 관리되는 Linux 데스크톱 디스플레이로 변환하는 Pronk 프로젝트도 진행하고 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기