glxgears에 대한 수직 동기화 비활성화


85

때로는 Linux 3D 가속이 실제로 작동하는지 ( glxinfo출력 외에 ) 확인해야합니다 . 이는 glxgears도구 로 빠르게 수행 할 수 있습니다 . 그러나 FPS는 종종 디스플레이 수직 재생률 (예 : 60fps)로 제한됩니다. 따라서 소프트웨어 렌더링조차도 최신 CPU에서 60FPS glxgears를 쉽게 생성 할 수 있기 때문에 도구는 다소 쓸모가 없게됩니다.

나는 이것에 대한 빠르고 쉬운 해결책을 얻는 것이 다소 어려웠다는 것을 알았고 내 질문에 답했습니다. 시간이 절약되기를 바랍니다.

답변:


119

vblank_mode환경 변수 트릭을 수행합니다. 그런 다음 최신 하드웨어에서 수백 FPS를 얻을 수 있습니다. 이제 결과를 다른 사람과 비교할 수 있습니다.

$>   vblank_mode=0 glxgears

3
내가 찾던 바로 그것. 새로 고침 빈도 인 59.984 FPS를 얻었습니다. 설정 vblank_mode=0이제 OpenBSD 5.6을 실행하는 오래된 Intel i965 비디오 드라이버에서 1375.257 FPS를 얻습니다.
Clint Pachl

33
이것은 Mesa 오픈 소스 비디오 드라이버에서만 작동한다는 점을 언급 할 가치가 있습니다
ali_m

1
Mesa와 함께 Radeon / Intel 하이브리드를 사용하는 나를 위해 작동
Mark K Cowan

작품의 이런 종류의하지만 내 컴퓨터에 별도의 TTY의 pkill에를 요구하는 전체 시스템을 정지 (아치)
phil294

73

NVIDIA 폐쇄 소스 드라이버를 사용하는 경우 다음을 사용하여 즉시 수직 동기화 모드를 변경할 수 있습니다. __GL_SYNC_TO_VBLANK 환경 변수를 .

~$ __GL_SYNC_TO_VBLANK=1 glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
299 frames in 5.0 seconds = 59.631 FPS

~$ __GL_SYNC_TO_VBLANK=0 glxgears
123259 frames in 5.0 seconds = 24651.678 FPS

이것은 346.46 NVIDIA 드라이버를 사용하는 Ubuntu 14.04에서 나를 위해 작동합니다.


Ubuntu 16.04, 387.26 NVIDIA 드라이버에서도 작동합니다.
Alejo Bernardin

내 모든 컴퓨터에서 비슷한 결과를 얻는 것 같습니다. 그들은 모두 2 만 FPS를 약간 넘는다. Nvidia 카드 한도입니까?
Aaron Franke

GTX1050에서 47 천 FPS를 얻었습니다
drescherjm

Ubuntu 18.04에서 GTX 1050 Ti에 대해 13k FPS로 작동했습니다.
fegemo

Jetson Nano에서도 작동합니다. 약 2650 FPS를 얻습니다.
robotrovsky

28

Intel 그래픽 및 AMD / ATI 오픈 소스 그래픽 드라이버 용

/etc/X11/xorg.conf다음 지시문 중 하나가 포함 된 "장치"섹션을 찾으십시오 .

  • Driver "intel"
  • Driver "radeon"
  • Driver "fglrx"

해당 섹션에 다음 줄을 추가합니다.

Option     "SwapbuffersWait"       "false"

그리고 vblank_mode환경 변수를 다음과 0같이 설정 하여 애플리케이션을 실행하십시오 .

$ vblank_mode=0 glxgears

독점 Nvidia 드라이버가있는 Nvidia 그래픽의 경우

$ echo "0/SyncToVBlank=0" >> ~/.nvidia-settings-rc

nvidia-settings에서 옵션을 선택 취소하여 GUI 에서 동일한 변경을 수행 할 수 있습니다 X Screen 0 / OpenGL Settings / Sync to VBlank. 또는 ~/.nvidia-settings-rc파일을 수정하지 않고 설정을 테스트하려면 다음과 같이 할 수 있습니다.

$ nvidia-settings --load-config-only --assign="SyncToVBlank=0"  # disable vertical sync
$ glxgears  # test it out
$ nvidia-settings --load-config-only  # restore your original vertical sync setting

1
Nvidia의 nvidia-settings --load-config-only --assign="SyncToVBlank=0"경우 X 디스플레이의 설정을 변경하기 위해 실행할 수 있습니다 (구성 파일을 수정하거나 GUI를 실행하지 않음). 실행 후 실행 하여 구성 설정을 복원 glxgears할 수 있습니다. 실행 nvidia-settings --load-config-only중인 X 디스플레이에 대한 영구적 인 설정이기 때문에 수행하고 싶을 것입니다 (즉, 쉘뿐 아니라).
Michael Krebs

13

다른 답변을 모두 모아서 작동하는 명령 줄은 다음과 같습니다.

env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears

이는 Mesa 및 NVidia 드라이버 모두에서 작동하는 이점이 있으며 구성 파일을 변경할 필요가 없습니다.


6

nvidia-settings (OpenGL 설정 탭)에서 VBlank에 동기화 확인란을 비활성화하면 트릭이됩니다.


5

Bumblebee를 사용하여 인텔 카드와 nvidia 카드에서 작동하는 솔루션을 찾았습니다.

> export vblank_mode = 0
glxgears
...
optirun glxgears
...
export vblank_mode = 1


2

인텔 드라이버의 경우이 방법도 있습니다.

수직 동기화 (VSYNC) 비활성화

인텔 드라이버는 수직 동기화를 위해 트리플 버퍼링을 사용하므로 전체 성능을 허용하고 찢어짐을 방지합니다. 수직 동기화를 끄려면 (예 : 벤치마킹을 위해) 홈 디렉토리에서 다음 .drirc를 사용하십시오.

<device screen="0" driver="dri2">
    <application name="Default">
        <option name="vblank_mode" value="0"/>
    </application>
</device>

3
이것은 링크 전용 답변입니다. 일부 문서에 대한 링크는 모두 훌륭하고 좋지만 그 자체로 답을 구성하기에 충분하지 않습니다 (링크가 죽거나 외부에서 호스팅 된 페이지가 변경되는 등). 답변의 요점을 요약 해 주시겠습니까?
ali_m 2015 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.