리눅스에서 비디오 찢어짐이 왜 그런 문제입니까?


101

나는 10 년 넘게 많은 리눅스 변종 (주로 데비안 파생물)을 사용 해왔다. 내가 만족스럽게 해결하지 못한 한 가지 문제는 수평 분리 또는 Vsync가 제대로 구현되지 않는 문제입니다.

나는 다양한 모니터와 Nvidia / AMD / ATI / Intel 그래픽 카드가 장착 된 4 대의 다른 컴퓨터에서 5 개의 서로 다른 배포판을 사용하기 때문에 이것을 말합니다. 매번 약간의 움직임으로 비디오가 찢어지는 문제가있었습니다.

특히 Windows XP에서도 최신 하드웨어에 이러한 문제가 없으므로 큰 문제입니다. 누구나 Linux를 어떤 용도로 사용하려고한다면 CLI 이외의 작업을 수행 할 때 지속적인 결함이 나타나는 이유는 무엇입니까?

소수의 개발자 가이 문제에 대해 알고 있거나 문제를 해결하기에 충분히 신경을 쓰는 것으로 추측됩니다. 나는 거의 모든 컴포 지터를 시도했지만 일반적으로 그들이 할 수있는 최선의 방법은 문제를 최소화하지만 제거하지 않는 것입니다. 모니터의 재생 빈도와 동기화하는 것만 큼 간단하지 않아야합니까? OSS 커뮤니티에는 누군가가 이것을 고치는 코드를 저 지르지 못하게하는 정치가 있습니까?

과거 에이 문제에 대한 도움을 요청할 때마다 가장 중요한 사례로 취급되거나 (문제를 복제 한 횟수가 주어진다고 믿기가 어렵습니다) 잠재적 해결책을 얻습니다. 최대로 인열을 최소화하십시오.


2
어떤 DE를 사용하는지 언급하지 않습니다. KDE는 1 년 정도 찢어짐으로 괜찮 았습니다.
Sparhawk

1
어떻게 문제를 쉽게 복제 할 수 있습니까? 데비안 / 우분투 / 민트 컴퓨터에서?
Xen2050

50
XKCD 는 여기에 잘 맞는 것 같습니다 ...
Angew

찢어짐에 대한 나의 경험은 완전히 다릅니다. 나는 리눅스에서 매우 행복한 게임과 영화를보고 있습니다. Steam은 실제로 Linux를 훌륭한 게임을위한 실용적인 플랫폼으로 만들었습니다. 나는 요즘 Witcher 2와 Talos Principle을 연주 해 왔으며 약 50 시간의 게임 플레이에서 찢어짐을 보지 못했습니다. Arch에 독점 드라이버가있는 Nvidia 카드가 있습니다. Xen2050에 동의하면 빌드에 대한 정확한 사양이 제공된 경우이 질문이 더 유용 할 것입니다. 나는 문제가 있다는 것을 부인하지 않고 단지 아주 좋은 경험을했다.
미로

Nvidia 컴 포지 팅을 사용하면 2007 년에 Nvidia를 다시 사용할 때 문제가 해결되었습니다. 전체 화면이 아닌 경우 전체 화면 창에서 컴포 지터가 꺼 지므로 OpenGL 게임을 실행한다고 가정합니다. Intel에서 X의 "장치"옵션 "TearFree" "true"섹션을 설정해 보셨습니까? 비디오 RAM 사용을 두 배로 늘리지 만 작동한다고 생각합니다.
Zan Lynx 23

답변:


92

이것은 X 서버가 오래되어 오늘날의 그래픽 하드웨어에 적합하지 않으며 기본적으로 모든 직접 비디오 카드 통신이 고대 부풀어 오른 코어에 대한 확장 ( "패치")으로 수행되기 때문입니다. X 서버는 창을 렌더링하는 사용자와 창을 표시하는 화면간에 기본 동기화 수단을 제공하지 않으므로 렌더링 중에 컨텐츠가 변경됩니다. 이것은 X 서버의 잘 알려진 문제 중 하나입니다 (서브 윈도우에서 이벤트 처리, 윈도우에 대한 메타 데이터, 다이렉트 드로잉을위한 그래픽 프리미티브 등). 위젯 툴킷은 대부분이 모든 것을 다룰 수 있지만,이를 처리 할 메커니즘이 없기 때문에 찢기는 여전히 문제가됩니다. 다른 드라이버가 필요한 카드가 여러 개인 경우 추가 문제가 발생합니다.

X를 대체하기 위해 다소 열성적으로 노력하고있는 Wayland는 코어에서 Pedantic vsync 동기화를 지원하며 모든 프레임이 정확히 완벽하도록 광고됩니다.

Google "wayland video tearing"을 빠르게 검색하면 모든 것에 대한 자세한 정보를 찾을 수 있습니다.


38
+1“X는 문제입니다. Wayland를 살펴보십시오.”죽음은 심각합니다. 정답입니다.
HalosGhost

2
이동 중에도 @HalosGhost wayland 전도 :) 여전히 네트워크 세션을 지원하지 않습니까?
kagali-san

3
@ kagali-san 나는 Wayland가 완벽하다고 말하지 않았다. 그러나 X보다 확실히 낫습니다. :)
HalosGhost

8
@ kagali-san : Weston은 1 년 전에 RDP 백엔드를 병합했습니다.
grawity

3
바로이 페이지가 지금의 # 1 결과 당신에 감사 : @orion wayland video tearing: P
Tobia Tesan

16

화면 찢기는 주로 두 가지 이유-아직없는 드라이버 및 특정 창 관리자와의 vsync 부족으로 인해 나타납니다.

드라이버의 경우 무료 및 독점 드라이버 모두 무료 티어링 합성을 지원합니다 (nvidia 및 amd 모두). 예를 들어 촉매 ( fglrx) 에서 찢어지지 않는 데스크탑을 활성화 하면 프레임 드롭 및 지연이 발생할 수 있으므로 일반적으로 기본적으로 비활성화되어 있습니다. 열린 드라이버의 경우 기본적으로 vsync가 활성화되어 있어야합니다. 따라서 화면 찢기 문제는 다른 드라이버를 시도하고 구성하여 해결할 수 있습니다.

창 관리자에 관해서는 Openbox, Awesome 및 기타 경량 wms는 찢어짐을 지원하지 않는 것으로 알려져 있습니다. XFCE (xfwm, 구체적으로)는 최근 릴리스에서이를 수정했으며, 4.11 / 12에는 Vsync가 있습니다. 그놈, KDE, 유니티 및 시나몬을 포함한 주요 데스크탑 환경에도 인열 문제가 없습니다.

여전히 화면이 찢어 질 경우 옵션은 Compton 또는 Kwin과 같은 다른 합성 관리자를 사용해 보는 것입니다. Kwin은 KDE의 창 관리자이며 vsync를 지원하지 않고 XFCE에서 kwin을 사용한 경험이 있으며 실제로 잘 작동했습니다.

여기의 해결책은 실험입니다. driver / wm의 한 조합에서 깨진 것은 다른 것에서 작동 할 수 있습니다. 오픈 소스 드라이버가 발전하고 웨이 랜드로 전환하면 Xorg의 오래된 문제가 사라질 수 있기 때문에 상황이 곧 개선 될 것이라고 믿습니다.


5
실제로는 아닙니다. KDE (Kwin 또는 기타 작곡가 포함)는 여전히 NVidia 또는 Intel에서 지옥처럼 찢어집니다.
Ivan

1
Openbox 등은 찢어지지 않습니다. 별도의 컴포 지터를 실행하기 만하면됩니다. 예를 들어 compton은 훌륭하게 작동합니다.
wingedsubmariner 2019

1
@wingedsubmariner, openbox를 언급 할 때 fluxbox도 의미합니까?
nass

또한 다른 창 환경에서 WM 상태를 확인하는 데 매우 도움이됩니다.
nass

@nass 물론입니다. 창 관리자는 결코 제한 요소가 아닙니다.
wingedsubmariner

14

nvidia 드라이버> = 365.20을 사용하는 경우에서 "강제 전체 구성 파이프 라인"옵션을 활성화하십시오 nvidia-settings.

여기에 이미지 설명을 입력하십시오


엔비디아 레노버 W520, 페도라 25에 쿼드 이것은 :) 일
Jerther

4
또한 그러한 옵션이 없으면 창 하단의 "고급 설정"을 클릭하면 표시됩니다. 이 "전체 컴포지션 파이프 라인"이 기본적으로 활성화되어 있지 않은 이유는 무엇입니까? ..
마지막

1
@Rast 성능 문제가 있었기 때문입니다.
Ruslan

BTW, 적어도 인텔 드라이버 TearFree에는 해당 Device섹션에 넣을 수 있는 옵션 도 있습니다 . 방금 시도했지만 nvidia의 전체 구성 파이프 라인과 매우 유사한 결과를 제공합니다.
Ruslan

재부팅 할 때 설정을 저장할 수없는 것 같습니다 ~ / .xinitrc 파일을 만들고 "nvidia-settings --load-config-only &. / etc / X11 / xinit / xinitrc"를 넣어 보았습니다. 작동하지 않는 것 같습니다
FragmentalStew

9

나는 여기에 강한 눈물이 있었고 이제는 해결되었습니다.

Xorg 서버의 작동 방식에 대한멋진 설명을 읽은 후에 는 합성 가능한 창 관리자를 사용하지 않는 한 X 서버가 임의의 시간에 창 업데이트를 메모리 카드에 직접 페인트한다는 것을 깨달았습니다.

컴 포지 팅이 활성화되면 창 관리자가 다른 창 메모리 버퍼의 모든 변경 사항을 모아 전체 화면에 대한 결과 이미지를 생성 한 다음 한 번에 디스플레이 카드에 덤프합니다.

대부분의 최신 배포판에는 합성 창 관리자가 있습니다. KDE 용 KWin, 그놈 용 머 터링, 시나몬 용 머핀, 메이트 용 Marco, XFCE 용 xfwm 등. 그러나 컴 포지 팅을 비활성화하여 리소스를 절약 할 수 있습니다.

필자의 경우 컴 포지 팅이 KDE4에서 비활성화되었습니다. 일단 인열이 가능 해졌다. 편집 : 또한 이 kwin 관련 버그 보고서에 설명 된대로 찢김을 없애기 위해 KWin 옵션에서 VSync 전략을 자동 에서 재사용 화면 내용 으로 변경해야했습니다 .

드라이버 옵션도 고려할 수 있습니다. 제 경우에는 기본 옵션이 정상적으로 작동합니다. Arch Wiki는 Intel 카드 또는 NVIDIA 카드 와 같은 다른 디스플레이 카드 옵션에 대한 훌륭한 문서를 가지고 있습니다 .

현재 xorg 구성에서 옵션이 활성화되어 있는지 확인하려면 로그를 확인할 수 있습니다. 예를 들어 DRI가 활성화되어 있는지 확인하려면

cat /var/log/Xorg.0.log | grep DRI

1
XFCE (Xubuntu 16.04)에서 컴 포지 팅은 기본적으로 활성화되어 있지만 수직 공백과의 동기화는 아닙니다 . xfwm4-tweaks-settings명령을 사용하여 tweaker 애플리케이션을 표시하고 컴포 지터 탭에서 위 옵션을 찾을 수 있습니다. 이 기능을 켜면 큰 차이가 생겼으며 여기에서 확인할 수 있습니다 : vsynctester.com/index.html (애니메이션을 표시하는 동안 기능 켜기 / 끄기). 완벽하지는 않지만 누락 된 프레임이 있지만 꺼져있을 때보 다 훨씬 좋습니다.
karatedog

1

해결책은 다음과 같습니다. Linux Mint 17.3 MATE는 이제 Compton과 함께 제공됩니다 .

Desktop Settings-> Windows-> 로 이동하여을 Window Manager선택하십시오 Metacity + Compton. 그게 다야.

AMD 비디오 카드를 가지고 있으며 오픈 소스 드라이버를 위해 즉시 작동합니다.

독점 AMD 드라이버의 경우 HTML5 비디오를 전체 화면으로 최대화하면 전체 화면을 채우는 파란색이 표시 될 수 있습니다. 이 문제를 해결하려면 chmod +x아래 스크립트를 작성 하십시오.

#!/bin/bash
killall compton 2> /dev/null
compton -b --unredir-if-possible

시스템을 다시 시작할 때마다 실행하지만 추가하지 마십시오 Startup Applications. 어떤 이유로 시작이 중단 될 수 있습니다.


0

Peppermint Linux에서 환경 설정> Peppermint Control Center로 이동하여 데스크탑 효과를 선택하고 "바탕 화면 효과 사용"및 "수직 공백으로 도면 동기화"를 활성화하십시오.


0

Linux Mint XFCE를 사용하고 있으며이 문제로 인해 오랫동안 실망했습니다. 인텔 통합 그래픽 카드가 장착 된 랩톱 용 솔루션을 찾았으며 인열 문제를 해결했습니다 . 트릭이 작동하지 않는 NVIDIA 카드가 장착 된 데스크탑의 경우 하지만 방금 범인을 찾았습니다.

창 합성을 비활성화하면 즉시 성능이 향상되었습니다. 이를 수행하는 방법은 다음과 같습니다.

All Settings / Window Manager Tweaks / Compositor로 이동하여 모든 것을 비활성화하십시오.

이것은 배포판에 따라 다르며 XFCE에서는 Mint이며 다른 배포판에서 비슷한 것을 찾는 방법을 모릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.