Windows 10 1709(rs3)부터 서피스북1/2에서 DirectX 어플리케이션(게임등)을 실행할때 60FPS를 넘기지 못한다.
이전에 유튜브에 올렸던 참고 영상.
Windows 10 1709가 릴리즈 되고나서 페이스북과 트위터에서 몇번인가 언급했었다.
[현상 및 직접적인 원인]
이 성능 저하의 문제는 GPU의 성능 자체와는 상관이 없다. 순전히 swap chain의 처리방법에서 발생한다.
정확히는 최종적으로 Windows Destkop Windows Manager(이하 DWM)이 어플리케이션의 렌더타겟 버퍼를 데스크탑 윈도우에 조합(composition)할때 발생한다.
프로그래밍에서 이 문제를 약간 조정(?)은 할 수 있다.
D3D swap chain을 만들때 4가지 SWAP_EFFECT값을 설정할 수 있다.
DXGI_SWAP_EFFECT_SEQUENTIAL,
DXGI_SWAP_EFFECT_DISCARD,
DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL,
DXGI_SWAP_EFFECT_FLIP_DISCARD
어떤 값을 설정하느냐에 따라 약간 현상이 다르다.
UWP App에선 DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL하나만 허용된다고 예제코드에 주석이 붙어있다.
실험을 해보면 DXGI_SWAP_EFFECT_FLIP_DISCARD으로도 작동은 된다. 그런데 어차피 두가지 옵션 다 60프레임으로 제한된다. 윗쪽의 두개를 사용하면 바로 크래시해버린다.
win32 app에선 4가지 옵션을 다 사용할 수 있다. 아랫쪽 두개는 60프레임 락이 걸린다. 위쪽 2개는 60프레임을 넘길 수 있다. 대신 프레임이 반토막 난다. 리미터는 해제되지만 성능은 절반으로 떨어진다는 얘기다.
당연히 이 현상이 발생했을때 GPU점유율은 낮아진다. 많이 낮아진다. 즉 GPU가 펑펑 논다. GPU가 펑펑 노니까 전력소모는 크게 줄어든다. 배터리 오래간다. 발열 줄어든다.
근데 난 프레임 레이트 잘 나오는걸 원하는데? 그래서 비싼 dGPU붙은 노트북을 산건데?
[어떤 Windows버전에서 발생하는가?]
Windows 10 1709(rs3) , Windows 10 1803(rs4,곧 릴리즈 예정)에서 발생한다.
Windows 10 1703을 비롯하여 1709이전 버전에선 이 문제가 발생하지 않는다.
[Surface book에서만 발생하는가?]
이 현상은 모든 세대의 Surface book에서 발생한다.아니 어쩌면 dGPU가 붙어있지 않은 모델에선 발생하지 않을수도 있다. 그 모델만 테스트 못해봤다.
같은 Optimus 기술을 채용한 Alienware등 다른 게이밍 노트북에선 이 문제가 발생하지 않는다. 오직 Surface book에서만 발생한다.
[MS는 이 문제를 인지하고 있는가?]
이 문제가 Windows 10 rs4에선 해결될거라고 믿었다. RTM빌드로 알려진 rs4의 최신 빌드로 테스트해봤다.실망스럽게도 이 문제는 그대로 있다.
여러차례 MS에 이 문제를 보고했지만 어떤 대답도 듣지 못했다. 모를리가 없다. 고칠 생각이 없는것이다.
[디스플레이가 60Hz인데 60 FPS를 넘기 필요가 있는가?]
어떤 이들은 60FPS 이상은 필요가 없다고 주장한다. 아니다. 디스플레이가 60Hz만 지원하더라도 60FPS를 초과하는 프레임레이트는 필요하다.
당장 나처럼 게임 개발하는 사람 입장에선 60FPS으로 막혀있으면 내 게임의 최대 성능을 확인할 수 없다.
일반 유져들이 게임을 플레이할때도 손해가 있다.
일반적으로 게임에서 입력 처리는 최대 렌더링 프레임에 의존한다.
별도의 스레드로 입력을 처리하지 않을 경우, 키보드/마우스/게임 컨트롤러의 입력을 polling하는 타이밍은 최대 렌더링 프레임에 맞춰진다.
퀘이크류의 게임을 많이 해본 사람들은 알겠지만 프레임 레이트가 높게 나올수록 입력 latency가 짧아진다. 즉 더 빠릿빠릿한 입력 반응을 얻을 수 있다.
60프레임으로 제한될 경우 한 프레임당 최대 16ms정도의 지연이 있다. 즉 입력을 처리할때 재수없으면 최대 16ms에 가까운 입력 지연이 생긴다.
[결론]
1. 게이머에겐 60 FPS이상의 렌더링 프레임 레이트가 필요하다.
2. MS는 Surface book의 배터리 성능을 강조하기 위해 Surface book에서만 60프레임 락이 걸리도록 한것으로 보인다. 이것은 Windows 10 1709부터 해당된다.
3. 나는 이것이 명백한 결함이라고 생각했지만 MS는 그렇게 생각지 않는다. 의도된 기능이고 MS는 고칠 생각이 전혀 없다.
“Surface book에서 나타나는 60fps 제한 현상.”에 대한 답글 1개