본문 바로가기

vulkan

Vulkan tutorial #5 part1. swap chain overview

그동안 우리는 그래픽 파이프라인의 일렬의 과정에 대해서 배워왔고 vulkan에서 세팅하는 방법에 대해서 배워왔다.

 

우리가 graphics pipeline이 적용시킬때 컴퓨터 모니터에는 다른 화면을 보여주어야 끊김없이 화면전환이 되기 때문에 swap chain이 존재한다. double buffering은 frame buffer가 2개 있는 상황을 지칭한다. 

마찬가지로 triple buffering은 frame buffer가 3개 있는 상황

여기서 V-sync는 vertical sync의 줄임말로 그래픽 카드의 프레임 생성과 모니터의 프레임 출력 타이밍을 맞추는 옵션, 안끄면 tearing이 일어날 수 있음 (컴퓨터 모니터는 한화면을 출력하는 시간동안 그래픽카드가 2,3프레임을 내보낼 수 있기 때문.)

Swap chain의 모드마다 방식 FIFO Mailbox Immediate가 존재한다. 간단하게 설명하자면,

 

FIFO V-sync기간중 프레임버퍼는 자기 출력부분을 한번만 파이프라인연산을 하고 기다렸다가 내는 방식 속도는 빠르지만, Latency가 느리다.

 

Mailbox V-sync 기간중 프레임 버퍼는 계속해서 파이프라인을 업데이트한다. 결국 가장 최신으로 나온 프레임버퍼를 내놓기 때문에 Latency가 매우 적은 대신 gpu를 계속 사용하므로 성능이 많이 필요하다.

 

Immediate V-sync 가 아닌 그냥 각 프레임버퍼가 자기의 pipline이 끝내면 바로 출력하는 방삭 Tearing이 발생할 수 있고, 성능이 많이 사용되지만, 지원되는 곳이 많고 레이턴시가 적다.

 

 

Renderpass에서 Graphics pipeline을 생성하고 그 결과물을 프레임 버퍼에 저장될 때 어디에 어떤정보가 저장 된다는 layout 이 저장되는지에 대해 설명한다 보면된다.

 

강의영상에서 수정한 부분들을 수정하면 이제 assertion은 사라질 것이다.

 

code url : https://github.com/comwitch/VulkanStudy/tree/tutorial5