Loader는 Application을 Layer 및 클라이언트 드라이버(ICD)에 매핑하는 역할을 한다.

 

 

 

 


 

 

 

Vulkan


 

 

 

Vulkan Loader의 역할

 

 

 

Vulkan LoaderApplication의 요청을 받아 Layer들이 순차적으로 실행되게 한다.

그리고 마지막에 Driver가 호출되도록 한다.

 

 

Vulkan API 호출 시

  • Layer A → Layer B → Layer C → Vulkan ICD 순서로 호출
  • '레이어 구조' 라고 부른다.

 

 

Vulkan Loader의 장점

 

장점 #1:  레이어 구조 -   Release 때 불필요한 부분 제외

Vulkan 프로그래밍 시 위와 같이 순서대로 모두 실행되어야 한다.

하.지.만. 배포하는 Release 때는 불필요한 Layer가 있을 수 있다. 

 

 

만약 위와 같이 개발 시점에만 필요하고 Release 때에 Layer B가 필요하지 않다면

Vulkan Loader에서 Layer B를 로드하지 않도록 설정하면 된다.  

(반면에 OpenGL는 레이어 구조가 없기 때문에 개발에만 필요한 기능들이 Release도 포함되게 된다.)

 

 

 

장점 #2:  레이어 구조 -   소스 코드 없이 분석 가능

 

프로그램에 문제가 발생한 경우에 소스 코드 없이 문제를 분석할 수 있다.

Vulkan Loader에 디버깅에 필요한 Layer들이 로드하도록 설정하면 된다.

 

 

 

장점 #3:  레이어 구조 -   에러 처리 부분

 

 

에러 처리는 개발 시에만 필요하고 Release에는 필요하지 않다.

위의 그림을 보면 OpenGL의 경우, 에러를 처리하는 부분이 크다. 반면에 Vulkan은 에러를 처리하는 부분을 Release 시 제외 시킨다.

 

OpenGL의 경우, 개발을 할 때나 Release 할 때나 동일한 OpenGL 드라이버를 사용한다. 그래서 OpenGL은 에러 처리를 항상 포함할 수 밖에 없다.  에러 처리는 막대한 CPU를사용하기 때문에 OpenGL은 성능르 더 내기 어렵다. 

 

Vulkan의 경우, OpenGL에서 에러 처리를 하던 부분을 Layer로 만들었다. 이를 Vulkan Validation Layers라 부른다.


 

 

Vulkan Validation Layers

 

Vulkan의 잘못된 사용을 알려주기 위해 Khronos에서 제공하는 Layer다.

 

  • Vulkan Validation Layers는 개발에만 사용하고 Release에는 사용하지 않는다.
  • Vulkan Validation Layers는 NDK에 포함되어 있지 않기 때문에 공식 사이트에서 다운받을 수 있다.

 

 

Vulkan Validation Layers 설치하기

 

1. 웹사이트에서 다운로드

 

  https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases 

 

2. 다운로드 압축 해제

 

 

Android Studio에서 압축해제한 파일을 복사해서 사용한다.


 

 

Vulkan 코딩 컨벤션

 

매크로:  VK 접두사

  • VK_API_MAJOR_VERSION
  • VK_API_MINOR_VERSION

 

클래스:  Vk 접두사

  • VkInstance
  • VkDevice

 

함수:  vk 접두사

  • vkDevice
  • vkCreativeInstance
  • vkCreativeDevice