동기화는 Vulkan을 사용할 때 가장 강력하지만 가장 복잡한 부분 중 하나입니다. 이제 애플리케이션 개발자는 다양한 Vulkan 동기화 기본 요소를 사용하여 동기화를 관리할 책임이 있습니다. 동기화를 부적절하게 사용하면 찾기 어려운 버그가 발생할 수 있을 뿐만 아니라 GPU가 불필요하게 idle 상태가 되어 성능이 저하될 수 있습니다.
크로노스 그룹에서 제공하는 예제 세트와 Vulkan 동기화 이해 블로그에서 일부 동기화 프리미티브의 사용법을 확인할 수 있습니다. 지난 Vulkan talks에서 Tobias Hector의 프레젠테이션도 있습니다: part 1 slides (video) 및 part 2 slides (video).
다음은 VkEvent
, VkFence
, VkSemaphore
의 차이점에 대한 개요도입니다.
크로노스 유효성 검사 레이어는 일부 동기화 유효성 검사를 구현했습니다. 이 기능은 Vulkan SDK에 포함된 Vulkan Configurator를 통해 쉽게 활성화할 수 있습니다. 동기화 유효성 검사에 대해 설명하는 상세한 백서(whitepaper)도 작성되어 크로노스 블로그에 공개되어있습니다.
파이프라인 장벽은 커맨드 버퍼가 실행될 때 어떤 파이프라인 스테이지가 이전 파이프라인 스테이지를 기다려야 하는지 제어합니다.
파이프라인 장벽은 처음에는 이해하기 어려울 수 있지만, 이 주제에 대해 자세히 설명하는 훌륭한 크로노스 강연과 기타 리소스가 많이 있습니다.
-
Vulkanised 2018 - Low-level mysteries of pipeline barriers (video)
-
Vulkanised 2019 - Live Long and Optimise (video) Pipeline Analysis starting slide 12
-
Vulkan barriers explained 블로그 게시물
VK_KHR_synchronization2
확장 기능은 애플리케이션 개발자의 복잡성을 줄이기 위해 기존 핵심 동기화 API를 점검하고 기존 API에 없는 몇 가지 기능을 추가합니다.
동기화 API의 차이점과 새 확장 기능을 사용하도록 포팅하는 방법에 대한 자세한 나용은 VK_KHR_synchronization2 챕터를 참조하세요.