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

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

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



답변

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

$>   vblank_mode=0 glxgears


답변

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에서 나를 위해 작동합니다.


답변

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


답변

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

env vblank_mode=0 __GL_SYNC_TO_VBLANK=0 glxgears

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


답변

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


답변

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

> export vblank_mode = 0
glxgears

optirun glxgears

export vblank_mode = 1


답변

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

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

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

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