이 빌어먹을 현상이 dGPU + 내장 GPU 구성을 가지는 다른 노트북에선 이 현상이 발생하지 않는다. 적어도 내가 테스트한 바로는 오직 서피스북에서만 발생했다.
하여간 엊그제 트위터 타임라인에 DX12개발자 계정이 BLT대신 FLIP방식을 사용하라는 문서를 공유했다. 혹시나 해서 읽어보다가 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING옵션을 처음 알게 됐다.
오늘 SwapChain만들때 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING값을 넣어보니 서피스북에서 60프레임 락이 드디어 풀리는걸 확인했다.
이 건을 페이스북에서 짤막하게 공유했는데 김명현님이 다음의 링크를 찾아서 알려주셨다.
https://msdn.microsoft.com/en-us/library/windows/desktop/mt742104.aspx
그래. 이거네.
아 이 MS망할놈들. 이런건 바뀌었을때 바로 알려줘야되는거 아닌가. 게다가 그동안 내가 수많은 채널로 그리 지랄을 했는데 아무런 답변도 하지 않았다.
[요약]
vsync를 끄고 최대 프레임으로 렌더링하고자 한다면
Present()할때 sync interval값을 0으로 주는것 외에, 반드시 SwapChain 생성할때 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING옵션을 주도록 한다.