벌컨 (API)
1. 개요
벌컨(Vulkan)은 차세대 그래픽스 API로, 크로노스 그룹이 개발했으며, 2016년 2월에 정식 사양이 출시되었다. Direct3D 12와 유사한 멀티스레드 렌더링 기능과 SPIR-V 중간 표현을 도입하여 CPU 부하를 줄이고 멀티 코어 CPU에서 향상된 확장성을 제공한다. 안드로이드, 리눅스, 윈도우 등 다양한 운영체제와 하드웨어를 지원하며, MoltenVK를 통해 macOS 및 iOS에서도 사용할 수 있다. 벌컨은 OpenGL에 비해 오버헤드가 적고, GPU를 더 직접적으로 제어할 수 있으며, CPU 사용량이 적다는 장점이 있다. 여러 게임 엔진과 비디오 게임에서 지원하며, 게임 개발과 에뮬레이터 분야에서 널리 사용되고 있다.
이미지 준비중입니다.
| 개발자 | AMD, DICE (원래 Mantle 디자인) |
|---|---|
| 기여자 | 크로노스 그룹 (기증 및 파생 변형, 벌칸으로서) |
| 출시일 | 2016년 2월 16일 |
| 최신 버전 | 1.3.253 |
| 최신 버전 출시일 | 2023년 6월 10일 |
| 프로그래밍 언어 | C |
| 운영 체제 | Android Linux Haiku Fuchsia BSD Unix QNX Windows Nintendo Switch Stadia Tizen Raspberry Pi vxWorks HarmonyOS OpenHarmony |
| 장르 | 3D 그래픽 및 컴퓨팅 API |
| 라이선스 | Apache License 2.0 MIT |
| 웹사이트 | 벌칸 공식 웹사이트 |
| API 종류 | 3D 그래픽 API |
|---|---|
| 플랫폼 | 크로스 플랫폼 |
-
3차원 그래픽스 API -
WebGL
WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다. -
3차원 그래픽스 API -
Direct3D
Direct3D는 마이크로소프트가 개발한 3차원 그래픽스 API로, 그래픽 하드웨어 가속을 지원하며 렌더링 파이프라인을 통해 데이터를 화면의 이미지로 변환하며, 윈도우 운영체제 및 다른 플랫폼에서도 사용 가능하다. -
그래픽 표준 -
WebGL
WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다. -
그래픽 표준 -
크로노스 그룹
크로노스 그룹은 AMD, 애플, 구글, 엔비디아, 삼성 등 주요 기술 기업들이 참여하는 비영리 컨소시엄으로, OpenGL, Vulkan, OpenCL, glTF 등 그래픽 및 컴퓨팅 관련 개방형 표준 API를 개발하고 관리하며 메타버스 상호 운용성 표준 개발에도 기여한다. -
크로스 플랫폼 소프트웨어 -
MSN
MSN은 1995년 마이크로소프트가 윈도우 95와 함께 출시한 웹 포털이자 관련 서비스 모음으로, 뉴스, 엔터테인먼트, 스포츠, 금융 등 다양한 콘텐츠를 제공하며 주요 온라인 서비스를 통합하는 허브 역할을 수행한다. -
크로스 플랫폼 소프트웨어 -
구글 포토
구글 포토는 사진 및 동영상 저장, 공유, 관리 기능을 제공하는 구글의 클라우드 기반 서비스로, 자동 분류, 얼굴 인식, 검색 기능을 제공하지만 2021년부터 무료 무제한 저장 용량 제공 정책이 변경되었고, 2024년에는 기술의 군사적 이용에 대한 윤리적 논란이 있었다.
2. 역사
크로노스 그룹은 2014년 7월 밸브 코퍼레이션의 킥오프 미팅과 함께 차세대 그래픽스 API를 만들기 위한 프로젝트를 시작했다. SIGGRAPH 2014에서 이 프로젝트는 참여자들의 요청에 따라 공개 발표되었다.
벌컨은 AMD의 Mantle API를 기반으로 만들어졌으며, AMD가 산업 전반에서 표준화할 수 있는 로우 레벨 API를 개발할 수 있도록 크로노스에 제공하였다.
2015년 GDC에서, 새로운 규격의 이름이 "Vulkan"으로 발표되었고, Direct3D 12와 유사한 커맨드 큐 기반의 멀티스레드 렌더링 기능 및 OpenCL과의 프로그래밍 기반을 공유하는 SPIR-V 중간 표현을 도입할 것이 명확해졌다.
2016년 2월 16일, Vulkan 1.0의 정식 사양이 출시되었다. AMD, NVIDIA, Intel, Qualcomm, Imagination Technologies영어와 같은 대표적인 벤더들은 Vulkan 지원 드라이버의 베타 버전 제공 및 인증을 시작했다.
Vulkan은 하드웨어의 상세한 제어가 가능한 로우 레벨 API인 반면, 기존 OpenGL은 CPU-GPU 간의 동기화 등 번거로운 처리를 자동으로 수행해주는 상위 계층 API로서, 앞으로도 유지 보수 및 업데이트가 계속될 예정이다.
2.1. 주요 버전
SIGGRAPH 2016에서, 크로노스(Khronos)는 Vulkan이 Direct3D 12에서 제공하는 것과 유사한 자동 멀티 GPU 기능을 지원할 것이라고 발표했다. API 내에 포함된 멀티 GPU 지원은 그래픽 카드가 동일한 모델이어야 하는 SLI 또는 Crossfire가 필요하지 않게 한다. 대신 API 멀티 GPU는 API가 두 개 이상의 완전히 다른 GPU 간에 워크로드를 지능적으로 분할할 수 있게 해준다. 예를 들어, CPU에 포함된 통합 GPU는 약간의 성능 향상을 위해 고급 전용 GPU와 함께 사용할 수 있다.
Vulkan의 주요 버전은 다음과 같다.
| 버전 | 출시일 | 주요 특징 |
|---|---|---|
| Vulkan 1.0 | 2016년 2월 | 초기 버전 |
| Vulkan 1.1 | 2018년 3월 7일 | 멀티 뷰, 장치 그룹, 프로세스 간 및 API 간 공유, 고급 컴퓨트 기능, HLSL 지원 및 YCbCr 지원과 같은 여러 확장을 표준화했다. DirectX 12와의 더 나은 호환성, 명시적 멀티 GPU 지원, 레이 트레이싱 지원, 및 차세대 GPU를 위한 기반을 마련했다. SPIR-V는 버전 1.3으로 업데이트되었다. |
| Vulkan 1.2 | 2020년 1월 15일 | 널리 사용되고 입증된 23개의 추가 Vulkan 확장을 기본 Vulkan 표준에 통합했다. "쉽게 관리되는 동기화를 위한 타임라인 세마포어", "다양한 스레드에서 동기화 및 메모리 연산의 의미를 정확하게 정의하는 공식 메모리 모델", "여러 셰이더에서 디스크립터 레이아웃을 재사용할 수 있도록 하는 디스크립터 인덱싱"을 포함한다. Vulkan 1.2의 추가 기능은 "균일 버퍼 표준 레이아웃", "스칼라 블록 레이아웃", "별도의 스텐실 사용"을 포함하여 Vulkan 위에 다른 그래픽 API를 구현할 때 유연성을 향상시켰다. |
| Vulkan 1.3 | 2022년 1월 25일 | 널리 사용되고 입증된 23개의 추가 Vulkan 확장 기능을 기본 Vulkan 표준에 통합했다. 장치가 Vulkan 1.3을 지원하는 것으로 간주되기 위해 새로운 기능을 선택 사항이 아닌 필수 사항으로 만들어 단편화를 줄이는 데 중점을 두었다. 새로운 기능에는 동적 렌더링, 추가 동적 상태, 개선된 동기화 API 및 장치 프로필이 포함된다. |
| Vulkan 1.4 | 2024년 12월 3일 |
3. 특징
벌컨(Vulkan)은 OpenGL이나 Direct3D 11 같은 이전 API보다 더 뛰어난 성능과 효율적인 CPU 및 GPU 사용을 제공한다. 이는 벌컨이 응용 프로그램에 더 낮은 수준의 API를 제공하여 최신 GPU의 작동 방식과 더 유사하게 만들어졌기 때문이다.
벌컨은 애플의 Metal API나 마이크로소프트의 Direct3D 12와 비교될 수 있다. 낮은 CPU 사용량 외에도, 개발자들이 여러 CPU 코어에 작업을 더 잘 분산시킬 수 있도록 설계되었다.
벌컨은 2015년 GDC에서 크로노스 그룹(Khronos Group)에 의해 처음 발표되었다. 처음에는 "차세대 OpenGL 이니셔티브" 또는 "OpenGL next"로 불렸지만, "벌컨"이 발표되면서 이 이름은 사용되지 않았다.
벌컨은 AMD의 Mantle API를 기반으로 만들어졌으며, AMD가 크로노스에 기증하여 산업 표준 로우 레벨 API 개발의 기반을 제공했다.
벌컨은 OpenGL에 비해 오버헤드가 적고, GPU를 더 직접적으로 제어할 수 있으며, CPU 사용량이 적다는 장점을 가진다. 벌컨의 전반적인 개념과 기능은 Mantle에서 비롯되었으며, Direct3D 12와 Metal에서 채택한 개념과 유사하다.
이전 세대 API와 비교했을 때 벌컨의 주요 이점은 다음과 같다.
2016년 엔비디아(NVIDIA)는 "OpenGL은 많은 사용 사례에서 여전히 훌륭한 선택이며, Vulkan보다 훨씬 낮은 복잡성과 유지 관리 부담으로 제공되면서 많은 경우 여전히 훌륭한 전체 성능을 제공합니다."라고 언급했다.
AMD는 "Vulkan은 윈도우 7, 윈도우 8.1, 윈도우 10 및 리눅스에서 빠른 성능과 더 나은 이미지 품질을 가능하게 하는 메탈에 가까운 제어를 지원합니다. 다른 그래픽 API는 OS 호환성, 렌더링 기능 및 하드웨어 효율성의 동일한 강력한 조합을 제공하지 않습니다."라고 언급했다.
3.1. 크로스 플랫폼
벌컨은 Direct3D 12와 달리 단일 OS 또는 장치 폼 팩터에 묶여 있지 않으며, 여러 최신 운영체제와 컴퓨터 아키텍처에서 사용할 수 있다. 데스크톱 및 모바일 그래픽 장치 모두에 단일 API를 제공하며, 이전에는 OpenGL과 OpenGL ES로 분리되어 있었다. Vulkan은 안드로이드, 리눅스, BSD 유닉스, QNX, Haiku, 닌텐도 스위치, 라즈베리 파이, 스타디아, 퓨샤, 타이젠, 윈도우 7, 8, 10, 11에서 기본적으로 실행된다.
MoltenVK는 애플의 Metal API를 감싸서 macOS, iOS 및 tvOS에 대한 자유 라이선스 타사 지원을 제공한다.
3.2. 낮은 CPU 사용량
벌컨은 CPU 부하를 줄이기 위해 배치 및 기타 낮은 수준의 최적화를 사용하여 CPU 작업량을 줄이고, CPU가 더 많은 계산 또는 렌더링을 수행할 수 있도록 한다.
3.3. 멀티스레딩 친화적 디자인
Vulkan은 멀티 코어 CPU에서 향상된 확장성을 제공한다. Direct3D 11과 OpenGL 4는 초기 설계 단계에서 싱글 코어 CPU와 함께 사용하도록 설계되었으나, 이후 멀티 코어에서 실행될 수 있도록 보완되었다. 하지만, 애플리케이션 개발자가 이러한 보완 기능을 사용하더라도, 이 API들은 멀티 코어에서 제대로 확장되지 않는 경우가 많다.
3.4. 셰이더 사전 컴파일
벌컨 드라이버는 SPIR-V(표준 휴대용 중간 표현)라는 중간 이진 형식으로 이미 변환된 셰이더를 받아들인다. 이는 Direct3D에서 HLSL 셰이더가 컴파일되는 이진 형식과 유사하다. 셰이더 사전 컴파일을 통해 응용 프로그램 초기화 속도가 향상되고 장면당 더 다양한 셰이더를 사용할 수 있다. 벌컨 드라이버는 GPU 관련 최적화 및 코드 생성만 수행하면 되므로, 드라이버 유지 관리가 더 쉬워지고 드라이버 패키지 크기가 줄어들 수 있다.
3.5. 기타 특징
* 컴퓨트 커널과 그래픽 셰이더를 통일적으로 관리하여, 그래픽 API와 함께 별도의 컴퓨트 API를 사용할 필요가 없게 한다.
* 광선 추적은 여러 벤더의 확장 기능을 통해 제공되며, 이는 OptiX 및 DirectX Raytracing API와 유사하다. OpenGL에서는 이러한 기능이 제공되지 않는다.
* 비디오 가속은 H.264 및 H.265와 같은 디코딩 및 인코딩을 지원한다.
4. 파이프라인
벌컨은 파이프라인 방식이며, 그래픽스 파이프라인과 컴퓨트 파이프라인을 정의한다.
4.1. 그래픽스 파이프라인
그래픽스 파이프라인(Graphics pipeline영어)은 3D 모델 렌더링을 위해 벌컨이 지원하는 일련의 작업이다.
그래픽스 파이프라인은 여러 셰이더 스테이지, 여러 고정 기능 파이프라인 스테이지, 하나의 파이프라인 레이아웃으로 구성된다.Primitive Shading 모드의 경우, 다음 스테이지로 구성된다:
| 순서 | 단계 | 설명 |
|---|---|---|
| 1 | Input Assembler | |
| 2 | Vertex Shader | 버텍스 셰이더 |
| 3 | 테셀레이션 | |
| 3.1 | Tessellation Control Shader | |
| 3.2 | Tessellation Primitive Generator (Tessellator) | |
| 3.3 | Tessellation Evaluation Shader | |
| 4 | Geometry Shader | 지오메트리 셰이더 |
| 5 | Vertex Post-Processing | 클리핑, 좌표 정규화 등 |
| 6 | Rasterization | 래스터화 |
| 7 | Early Per-Fragment Tests | |
| 8 | Fragment Shader | 프래그먼트 셰이더 |
| 9 | Late Per-Fragment Tests | |
| 10 | Blending |
5. 셰이딩 언어
Vulkan의 셰이더는 SPIR-V영어로 작성된다.
SPIR-V는 다른 고급 셰이더 언어로부터 사전 컴파일할 수 있다. Vulkan이 지원하는 최초의 고수준 셰이딩 언어는 OpenGL과 마찬가지로 GLSL이 된다. Vulkan SDK에 포함된 오프라인 셰이더 컴파일러 glslangValidator에는 HLSL로 작성된 소스 코드를 입력으로 사용할 수 있게 해주는 컴파일 옵션도 존재한다.
6. 개발 환경
Vulkan 개발을 위해 다음과 같은 다양한 도구와 라이브러리가 제공된다.
* GPU PerfStudio 3.6은 리눅스, 윈도우에서 벌컨을 지원한다.
* GTK+ Scene Graph Kit은 2017년 3월 GTK+ 3.90의 일부로 출시되었으며 벌컨 렌더링 경로를 포함한다.
* RenderDoc은 2016년 2월 10일부터 벌컨을 지원한다.
6.1. SDK
Valve사의 협력 하에 LunarG사가 LunarG Vulkan SDK를 출시하고 있다. 해당 SDK는 Windows, Linux, 및 macOS를 지원한다. macOS에 관해서는 후술할 MoltenVK를 간접적으로 이용하고 있다。 이 SDK는 iOS를 지원하지 않는다.
Vulkan을 지원하는 디바이스 드라이버나 독자적인 SDK 개발을 원하는 벤더를 위해, ICD (Installable Client Driver) 로더 및 아키텍처에 관한 문서가 GitHub에서 공개되어 있다.
Android에서는 2016년 6월에 출시된 리비전 12 이후의 NDK에서 Vulkan 1.0을 정식 지원한다。 또한, Android 10에서는 벤더 드라이버에 의한 OpenGL ES 구현 외에, 후술할 Vulkan 백엔드의 ANGLE을 이용한 OpenGL ES 2.0 호환 구현도 이용할 수 있게 되었다。
6.2. 보조 라이브러리
* GLFW영어 - OpenGL용 멀티 플랫폼 라이브러리이지만, 버전 3.2 이후부터 Vulkan도 지원한다.
* vulkan-cpp - 구글에서 제공하는 Vulkan용 C++ 추상화 라이브러리. 라이선스는 아파치 라이선스 2.0이다.
* V-EZ - AMD에서 제공하는 Vulkan용 간소화 미들웨어.
* Anvil - AMD에서 제공하는 Vulkan용 프레임워크. 라이선스는 MIT 라이선스이다.
* Falcor - NVIDIA에서 제공하는 Vulkan 및 DirectX 12용 렌더링 프레임워크.
* Vulkan Memory Allocator - AMD에서 제공하는 Vulkan용 메모리 관리 라이브러리. 라이선스는 MIT 라이선스이다.
* ANGLE영어 - 각종 3D 그래픽스 API를 백엔드로 사용할 수 있는 OpenGL ES 호환 레이어. 2021년 3월 현재, OpenGL ES 3.1 대응의 Vulkan 백엔드가 완성되었다.
6.3. 언어 바인딩
* Vulkan-Hpp - 크로노스 그룹이 제공하는 Vulkan API의 C++바인딩이다. 아파치 라이선스 2.0으로 배포된다. 원래 NVIDIA에서 개발되었다.
* VulkanSharp - Mono Project가 제공하는 Vulkan API의 .NET 바인딩이다. MIT 라이선스로 배포된다.
6.4. 호환 레이어
크로노스 그룹은 애플의 Metal API 상에서 Vulkan API를 사용하기 위한 호환 레이어인 "MoltenVK"를 제공하고 있다。 라이선스는 Apache License 2.0이다.
또한 마이크로소프트는 Vulkan API를 Direct3D 12 API 상에서 사용하기 위한 Mesa의 Dzn 백엔드 개발을 추진하고 있다。 참고로 그 이전에도 이와 유사한 것으로 VulkanOnD3D12와 Rostkatze가 존재했으나 둘 다 개발이 중단되었다.
7. 하드웨어 지원
초기 사양에서는 벌컨 드라이버를 OpenGL ES 3.1 또는 OpenGL 4.x 이상을 지원하는 모든 하드웨어에서 구현할 수 있다고 명시했다. 그러나 벌컨을 지원하려면 새로운 그래픽 드라이버가 필요했기 때문에, OpenGL ES 3.1 또는 OpenGL 4.x를 지원하는 모든 기존 장치가 벌컨 드라이버를 사용할 수 있는 것은 아니었다.
7.1. 주요 벤더
인텔, 엔비디아, AMD는 모두 리눅스 및 윈도우 시스템용 벌컨 드라이버를 제공한다. 벌컨 1.2는 비교적 새로운 하드웨어에서 지원되며, 인텔 스카이레이크 이후(리눅스의 경우 브로드웰 이후), AMD GCN 2세대 이후, 엔비디아 케플러 이후 등에서 이용할 수 있다.
2018년 후반 이후, AMD, Arm, Imagination Technologies, 인텔, 엔비디아, 퀄컴은 실제 하드웨어를 Vulkan 1.1 드라이버에서 지원하고 있다. Mesa 18.1은 RADV와 ANVIL 드라이버를 통해 AMD 및 인텔 하드웨어를 지원한다. Mesa 3D의 실제 RADV 및 ANVIL 상태는 Mesamatrix에서 확인할 수 있다.
7.2. 모바일 GPU
대부분의 최신 안드로이드 기기는 Vulkan을 지원한다. 안드로이드 7.0 누가는 Vulkan 1.0을, 안드로이드 9.0 파이는 Vulkan 1.1을 선택적으로 지원하며, 안드로이드 10은 모든 비저전력 64비트 기기에서 Vulkan 1.1을 지원할 것으로 예상하지만 필수는 아니다. 안드로이드 13은 동일한 조건에서 Vulkan 1.3 지원을 예상한다.
리눅스 및 일부 크롬OS 기기에서 오픈 소스 메사(Mesa) 드라이버는 Arm Mali(미드가드 및 비프로스트), 퀄컴 아드레노(Qualcomm Adreno), 브로드컴 비디오코어 VI(Broadcom VideoCore VI) 하드웨어에 대한 지원을 제공한다.
퀄컴 스냅드래곤 플랫폼용 아드레노 5xx(2018) 및 6xx 시리즈 GPU(스냅드래곤 820 등)는 아드레노 GPU SDK를 통해 Vulkan 1.0을 지원한다. SDK는 안드로이드 스튜디오 IDE를 기반으로 하며, 모든 기능을 이용하려면 안드로이드 NDK가 필요하다.
다음은 Vulkan을 지원하는 주요 모바일 GPU 제조사 및 제품군이다.
7.3. Apple
Apple 기기는 벌컨을 네이티브로 지원하지 않지만, 오픈 소스 라이브러리인 MoltenVK를 통해 벌컨 구현을 제공한다. MoltenVK는 iOS 및 macOS 기기에서 제공되는 메탈 그래픽 API 위에 벌컨을 구현하지만, 특정 고급 API 기능과 관련하여 몇 가지 제한 사항이 있다.
2018년 2월 26일, 크로노스 그룹은 MoltenVK 라이브러리를 통해 모든 macOS 및 iOS 사용자가 벌컨 API를 사용할 수 있게 되었다고 발표했다. 이전에는 MoltenVK가 독점적이고 상업적으로 라이선스된 솔루션이었지만, 밸브는 개발자 Brenwill Workshop Ltd와 협력하여 MoltenVK를 아파치 2.0 라이선스 하에 오픈 소스로 공개했다. 밸브는 또한 같은 날 Dota 2가 MoltenVK를 기반으로 하는 벌컨 API를 사용하여 macOS에서 실행될 수 있다고 발표했다.
2022년 6월, 벌컨 버전 1.3.217은 메탈 객체에 대한 지원을 추가하여 두 API 간의 가져오기 및 내보내기를 용이하게 했다. 2022년 12월, 벌컨 버전 1.3.236은 애플 메탈과의 상호 작용에 대한 작은 수정 사항을 추가했다.
8. 호환성
벌컨은 다양한 하드웨어 및 소프트웨어 플랫폼에서 폭넓게 지원된다.
| 기업 | 하드웨어 | 소프트웨어 지원: Vulkan 1.0 | ||||||
|---|---|---|---|---|---|---|---|---|
| 마이크로아키텍처 | 이용 가능 시점 | GPU (칩) | 그래픽 카드 / SoC | 안드로이드 | 리눅스 | 마이크로소프트 윈도우 | ||
| AMD | GCN 5th | 2017년 8월 | Vega 10 | Radeon Rx Vega series | rowspan="3" | rowspan="5" | |||
| GCN 4th | 2016년 6월 | Polaris 10, Polaris 11, Polaris 12 | Radeon Rx 400 series | |||||
| GCN 3rd | 2014년 8월 | Tonga, Fiji, Carrizo | Radeon R9 Series | |||||
| GCN 2nd | 2013년 3월 | Bonaire, Hawaii, Kaveri, Kabini, Temash, Mullins, Beema, Carrizo-L | Radeon HD 7790, 플레이스테이션 4, 엑스박스 원 | rowspan="2" | ||||
| GCN 1st | 2012년 1월 | Oland, Cape Verde, Pitcairn, Tahiti | Radeon HD 77xx-7900 Series | |||||
| 엔비디아 | 볼타 | 2017년 12월 | GV10x | Nvidia Titan V | ||||
| 파스칼 | 2016년 5월 | GP10x | 지포스 10 시리즈, Tegra X2 | rowspan="3" | rowspan="3" | ||||
| 맥스웰 | 2014년 2월 | GM10x, GM20x | GeForce GTX 750 Ti, GTX 750, GTX 860M, 지포스 900 시리즈, 엔비디아 테그라 | |||||
| 인텔 | 커피레이크 | 2017년 10월 | Core i3-/i5-/i7-8000, | |||||
| Kaby Lake | 2016년 9월 | Core i3-/i5-/i7-7000, Pentium xyz, Celeron xyz | rowspan="2" | | |||||
| Skylake | 2015년 8월 | Core i3-/i5-/i7-6000, Core m3-/m5-/m7-6Yxx, Pentium G4xxx, Celeron G39xx | ||||||
| Imagination Technologies | 파워VR Series 8 | 2016년 2월 | GE8200, GE8300 | rowspan="3" colspan="3" | ||||
| PowerVR Series 7 | 2014년 11월 | GE7400, GE7800, GT7200, GT7400, GT7600, GT7800, GT7900 | Apple A9, A9X, A10 Fusion, Helio X30 (MT6799) | |||||
| PowerVR Series 6 | 2012년 1월 | G6100, G6200, G6230, G6400, G6430, G6630, RK3368, G6050, G6060, G6100 (XE), G6110, GX6240, GX6250, GX6450, GX6650 | Apple A7, A8, A8X, MediaTek MT8173, MT8176, MediaTek MT6595M, MT6595T, MT6595M, MT6795, MT8135, Helio X10 (MT6795), LG H13, Atom Z3460, Z3480, Z3530, Z3560, Z3570, Z3580 | |||||
| 퀄컴 | 아드레노 500 series | Adreno 510, Adreno 530, Adreno 540, adreno 506 | Snapdragon 430, 625, 650, 652, 820, 821, 835, 450 | colspan="3" | ||||
| Adreno 400 series | Adreno 418,Adreno 420,Adreno 430, | Snapdragon 415, 615, 616, 617, 805, 808, 810 | colspan="3" | |||||
| ARM | Bifrost | 2016년 6월 | Mali-G71, … | Kirin 960, 970, Exynos 8895, MediaTek Helio P23 (MT6763T), Helio P30 | colspan="3" rowspan="2" | |||
| Midgard 4th | 2015년 4분기 | Mali-T860, Mali-T830, Mali-T880 | Exynos 8890, Exynos7880, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797), X25 (MT6797T), P10 (MT6755), P20 (MT6757) | |||||
* 안드로이드의 경우, 안드로이드 누가 이상에서 벌컨을 지원한다.
* 리눅스의 경우, AMD는 AMDGPU PRO와 메사의 RADV를 통해 벌컨을 지원한다. 엔비디아는 지포스 드라이버를 통해 벌컨을 지원한다. 인텔은 메사의 Anvil을 통해 벌컨을 지원한다.
* 마이크로소프트 윈도우의 경우, AMD는 AMD 라데온 소프트웨어 크림슨을 통해 벌컨을 지원한다. 엔비디아와 인텔은 각각 지포스 및 인텔 그래픽스 드라이버를 통해 벌컨을 지원한다.
8.1. 하위 호환성
벌컨은 OpenGL과 하위 호환되지 않는다. 벌컨과 OpenGL의 주요 차이점은 다음과 같다.
2016년에 엔비디아는 "OpenGL은 많은 사용 사례에서 여전히 훌륭한 선택이며, Vulkan보다 훨씬 낮은 복잡성과 유지 관리 부담으로 제공되면서 많은 경우 여전히 훌륭한 전체 성능을 제공합니다."라고 언급했다.
AMD는 "Vulkan은 윈도우 7, 윈도우 8.1, 윈도우 10 및 리눅스에서 빠른 성능과 더 나은 이미지 품질을 가능하게 하는 메탈에 가까운 제어를 지원합니다. 다른 그래픽 API는 OS 호환성, 렌더링 기능 및 하드웨어 효율성의 동일한 강력한 조합을 제공하지 않습니다."라고 언급했다.
하지만, 구글의 ANGLE과 Mesa의 Zink와 같이 Vulkan을 기반으로 OpenGL을 구현하는 특정 프로젝트가 있다.
Vulkan은 또한 Direct3D, Metal, Mantle과 같은 다른 그래픽 API와 호환되지 않지만, 해당 API의 구현체가 Vulkan 위에 존재한다.
* Direct3D에는 Direct3D 8, 9, 10, 11을 위한 DXVK와 Direct3D 12 지원을 위한 [https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton]을 포함한 여러 구현체가 있다. 다른 이전 버전의 Direct3D는 Wine과 같은 다른 관련 소프트웨어로 활성화할 수 있다.
* Metal은 Darling 호환 레이어와 함께 사용하기 위한 개발 중인 타사 구현인 [https://github.com/darlinghq/indium Indium]이 있다.
* Mantle은 이전 Mantle 게임을 지원하기 위해 개발 중인 타사 구현인 [https://github.com/libcg/grvk GRVK]가 있다.
Vulkan 위에 구현된 플랫폼별 그래픽 API는 다른 플랫폼에서도 실행할 수 있다. 예를 들어, [https://github.com/doitsujin/dxvk DXVK]는 게임 이식에 도움이 되도록 Linux에서 기본적으로 (Wine 호환 레이어 없이) 사용하기 위한 대체 공유 라이브러리를 제공한다.
8.2. 다른 그래픽 API와의 호환성
벌컨은 Direct3D, Metal, Mantle과 같은 다른 그래픽 API와 호환되지 않지만, 해당 API의 구현체가 벌컨 위에 존재한다.
* Direct3D에는 Direct3D 8, 9, 10, 11을 위한 DXVK와 Direct3D 12 지원을 위한 [https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton]을 포함한 여러 구현체가 있다. 다른 이전 버전의 Direct3D는 Wine과 같은 다른 관련 소프트웨어로 활성화할 수 있다.
* Metal은 Darling 호환 레이어와 함께 사용하기 위한 개발 중인 타사 구현인 [https://github.com/darlinghq/indium Indium]이 있다.
* Mantle은 이전 Mantle 게임을 지원하기 위해 개발 중인 타사 구현인 [https://github.com/libcg/grvk GRVK]가 있다.
벌컨 위에 구현된 플랫폼별 그래픽 API는 다른 플랫폼에서도 실행할 수 있다. 예를 들어, [https://github.com/doitsujin/dxvk DXVK]는 게임 이식에 도움이 되도록 Linux에서 기본적으로 (Wine 호환 레이어 없이) 사용하기 위한 대체 공유 라이브러리를 제공한다.
9. 벌컨을 지원하는 소프트웨어
벌컨을 지원하는 소프트웨어는 다음과 같다.
=== 비디오 게임 ===
* 더 탈로스 프린시플 - 벌컨 렌더링을 지원하는 최초의 게임이다.
* 도타 2 - 2016년 5월 벌컨 지원을 공개하였다. macOS에서는 2018년 2월 26일부터 MoltenVK를 기반으로 하는 벌컨 API를 사용하여 실행될 수 있다고 발표했다.
* 둠 - 2016년 7월 벌컨 지원을 공개하였다.
* vkQuake - 벌컨 퀘이크 이식을 2016년 7월 공개하였다.
* Roblox - 2017년 3월, Roblox를 위한 벌컨 지원이 추가되었다.
* 스타 시티즌 - 2017년 3월, 클라우드 임페리엄 게임즈의 그래픽스 프로그래밍 감독 Alistair Brown은 공식 스타 시티즌 포럼에서 클라우드 임페리엄이 이제 스타 시티즌과 Squadron 42에 벌컨 구현을 집중할 것이라고 발표하였다. DirectX 지원은 중단될 것인데, 이는 고객들이 윈도우 10을 사용하도록 강제하기 때문이다.
* 매드 맥스 - 2017년 3월, 개발자들은 리눅스 포팅으로 예외적으로 벌컨의 베타 지원을 추가하였다.
* Ballistic Overkill - 2017년 5월 벌컨 지원을 공개했다.
* Quake III Arena Kenny Edition - 퀘이크 3 엔진 모드(mod)가 2017년 5월 벌컨 지원을 추가했다.
* Ashes of the Singularity: Escalation - 차기작에 벌컨 지원 추가 예정.
* vkDoom3 - Doom3 BFG의 벌컨 포팅 지원을 2017년 8월 공개했다.
* Wolfenstein II: The New Colossus - 벌컨만 지원하며, 2017년에 출시되었다.
* X4: Foundations - 벌컨 전용 그래픽스 엔진과 함께 2018년 출시 예정이다.
* X-Plane 11 - Laminar Research는 2017년 하반기에 OpenGL에서 벌컨으로 이동할 예정이며, 테스트는 2018년에 시작될 예정이다.
* 레드 데드 리뎀션 2/레드 데드 온라인 - 처음 공개 후, 베타 테스트 때 추가되었다.
* 구글의 스타디아 스트리밍 클라우드 게임 서비스는 AMD GPU를 사용하여 리눅스 기반 서버에서 벌컨을 사용했다.
=== 게임 콘솔 에뮬레이터 ===
* Beetle/Mednafen PSX
* 돌핀
* Mupen64Plus
* RPCS3
* PPSSPP
* Xenia
=== 게임 엔진 ===
| | 지원 시작 버전 || 발표일 || 비고 | |||
|---|---|---|---|
| 소스 | 소스 2 | 2015년 3월 | 밸브 코퍼레이션 발표 |
| 시리어스 엔진 4 | - | 2016년 2월 | Croteam 발표 |
| 언리얼 엔진 | 4 | 2016년 2월 | 에픽게임즈가 삼성 갤럭시 S7 언팩 행사에서 발표 |
| 토크 | - | 2016년 4월 | 개발자 공동체 발표 |
| 퀘이크 엔진 | - | 2016년 7월 | |
| id Tech 3 | - | 2017년 5월 | |
| id Tech 4 | - | 2017년 8월 | |
| id Tech 6 | - | 2016년 5월 | 이드 소프트웨어가 둠에서 지원 발표 |
| Xenko | - | 2016년 7월 | |
| 유니티 | 5.6 | - | |
| 크라이엔진 | 5.4 | - | |
| Intrinsic | - | - | 자유-오픈 소스 크로스 플랫폼 게임 엔진 |
| Unigine | - | 2017년 4월 | Unigine Corp 발표 |
| Abyss Engine | - | 2017년 5월 | 딥 실버 FISHLABS가 안드로이드 갤럭시 온 파이어 3 출시 |
| Banshee 3D | - | - | 자유-오픈 소스 크로스 플랫폼 게임 엔진 |
| Godot | - | 2018년 2월 | OpenGL ES 2와 벌컨 혼합 사용 발표 |
| RAGE | - | - | 레드 데드 리뎀션 2에서 지원 |
9.1. 비디오 게임
* 더 탈로스 프린시플 - 벌컨 렌더링을 지원하는 최초의 게임이다.
* 도타 2 - 2016년 5월 벌컨 지원을 공개하였다. macOS에서는 2018년 2월 26일부터 MoltenVK를 기반으로 하는 벌컨 API를 사용하여 실행될 수 있다고 발표했다.
* 둠 - 2016년 7월 벌컨 지원을 공개하였다.
* vkQuake - 벌컨 퀘이크 이식을 2016년 7월 공개하였다.
* Roblox - 2017년 3월, Roblox를 위한 벌컨 지원이 추가되었다.
* 스타 시티즌 - 2017년 3월, 클라우드 임페리엄 게임즈의 그래픽스 프로그래밍 감독 Alistair Brown은 공식 스타 시티즌 포럼에서 클라우드 임페리엄이 이제 스타 시티즌과 Squadron 42에 벌컨 구현을 집중할 것이라고 발표하였다. DirectX 지원은 중단될 것인데, 이는 고객들이 윈도우 10을 사용하도록 강제하기 때문이다.
* 매드 맥스 - 2017년 3월, 개발자들은 리눅스 포팅으로 예외적으로 벌컨의 베타 지원을 추가하였다.
* Ballistic Overkill - 2017년 5월 벌컨 지원을 공개했다.
* Quake III Arena Kenny Edition - 퀘이크 3 엔진 모드(mod)가 2017년 5월 벌컨 지원을 추가했다.
* Ashes of the Singularity: Escalation - 차기작에 벌컨 지원 추가 예정.
* vkDoom3 - Doom3 BFG의 벌컨 포팅 지원을 2017년 8월 공개했다.
* Wolfenstein II: The New Colossus - 벌컨만 지원하며, 2017년에 출시되었다.
* X4: Foundations - 벌컨 전용 그래픽스 엔진과 함께 2018년 출시 예정이다.
* X-Plane 11 - Laminar Research는 2017년 하반기에 OpenGL에서 벌컨으로 이동할 예정이며, 테스트는 2018년에 시작될 예정이다.
* 레드 데드 리뎀션 2/레드 데드 온라인 - 처음 공개 후, 베타 테스트 때 추가되었다.
* 구글의 스타디아 스트리밍 클라우드 게임 서비스는 AMD GPU를 사용하여 리눅스 기반 서버에서 벌컨을 사용했다.
9.2. 게임 콘솔 에뮬레이터
* Beetle/Mednafen PSX
* 돌핀
* Mupen64Plus
* RPCS3
* PPSSPP
* Xenia
9.3. 게임 엔진
| | 지원 시작 버전 || 발표일 || 비고 | |||
|---|---|---|---|
| 소스 | 소스 2 | 2015년 3월 | 밸브 코퍼레이션 발표 |
| 시리어스 엔진 4 | - | 2016년 2월 | Croteam 발표 |
| 언리얼 엔진 | 4 | 2016년 2월 | 에픽게임즈가 삼성 갤럭시 S7 언팩 행사에서 발표 |
| 토크 | - | 2016년 4월 | 개발자 공동체 발표 |
| 퀘이크 엔진 | - | 2016년 7월 | |
| id Tech 3 | - | 2017년 5월 | |
| id Tech 4 | - | 2017년 8월 | |
| id Tech 6 | - | 2016년 5월 | 이드 소프트웨어가 둠에서 지원 발표 |
| Xenko | - | 2016년 7월 | |
| 유니티 | 5.6 | - | |
| 크라이엔진 | 5.4 | - | |
| Intrinsic | - | - | 자유-오픈 소스 크로스 플랫폼 게임 엔진 |
| Unigine | - | 2017년 4월 | Unigine Corp 발표 |
| Abyss Engine | - | 2017년 5월 | 딥 실버 FISHLABS가 안드로이드 갤럭시 온 파이어 3 출시 |
| Banshee 3D | - | - | 자유-오픈 소스 크로스 플랫폼 게임 엔진 |
| Godot | - | 2018년 2월 | OpenGL ES 2와 벌컨 혼합 사용 발표 |
| RAGE | - | - | 레드 데드 리뎀션 2에서 지원 |