[Vulkan] Vulkan Application/ Loader/ Layer/ Driver
Loader는 Application을 Layer 및 클라이언트 드라이버(ICD)에 매핑하는 역할을 한다.
목차
Vulkan
Vulkan Loader의 역할
Vulkan Loader는 Application의 요청을 받아 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에 포함되어 있지 않기 때문에 공식 사이트에서 다운받을 수 있다.
- Android를 위한 컴파일된 바이너리: https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases
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
'⭐ Vulkan & CMake > Vulkan' 카테고리의 다른 글
[Vulkan] 화면 출력을 위해 필요한 Vulkan Extension (0) | 2024.08.04 |
---|---|
[Vulkan] Vulkan Device (0) | 2024.08.02 |
[Vulkan] Vulkan Physical device (0) | 2024.08.02 |
[Vulkan] Vulkan Instance (0) | 2024.08.02 |
[Vulkan] Vulkan / Android Studio / NDK 설치 (0) | 2024.08.01 |
댓글
이 글 공유하기
다른 글
-
[Vulkan] Vulkan Device
[Vulkan] Vulkan Device
2024.08.02 -
[Vulkan] Vulkan Physical device
[Vulkan] Vulkan Physical device
2024.08.02 -
[Vulkan] Vulkan Instance
[Vulkan] Vulkan Instance
2024.08.02 -
[Vulkan] Vulkan / Android Studio / NDK 설치
[Vulkan] Vulkan / Android Studio / NDK 설치
2024.08.01