1.3๋ ๊ฐ์ ์์ ๋์ ๊ทธ๋ํฝ ํ์ค ์ปจ์์์์ธ Khronos๋ GPU์ ๊ทธ๋ํฝ ๋ฐ ์ปดํจํ ๊ธฐ๋ฅ์ ์ก์ธ์คํ๊ธฐ ์ํ API๋ฅผ ์ ์ํ๋ Vulkan 1.3 ์ฌ์์ ๋ฐํํ์ต๋๋ค. ์๋ก์ด ์ฌ์์๋ 3.1๋ ์ ๊ฑธ์ณ ์ถ์ ๋ ์์ ๋ฐ ํ์ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค. Vulkan 1.2 ์ฌ์์ ์๊ตฌ ์ฌํญ์ OpenGL ES XNUMX ํด๋์ค ๊ทธ๋ํฝ ์ฅ๋น์ฉ์ผ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ์ด๋ Vulkan XNUMX๋ฅผ ์ง์ํ๋ ๋ชจ๋ GPU์์ ์๋ก์ด ๊ทธ๋ํฝ API์ ๋ํ ์ง์์ ๋ณด์ฅํฉ๋๋ค. Vulkan SDK ๋๊ตฌ๋ XNUMX์ ์ค์์ ์ถ์๋ ์์ ์ ๋๋ค. ๊ธฐ๋ณธ ์ฌ์ ์ธ์๋ "Vulkan Milestone" ์๋์ ์ ์ผ๋ถ๋ก ์ง์๋ ์ค๊ธ ๋ฐ ๊ณ ๊ธ ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐ์คํฌํฑ ์ฅ์น์ ๋ํ ์ถ๊ฐ ํ์ฅ์ ์ ๊ณตํ ๊ณํ์ ๋๋ค.
๋์์ ๊ทธ๋ํฝ ์นด๋์ ์ฅ์น ๋๋ผ์ด๋ฒ์ ์๋ก์ด ์ฌ์๊ณผ ์ถ๊ฐ ํ์ฅ์ ๋ํ ์ง์์ ๊ตฌํํ๊ธฐ ์ํ ๊ณํ์ด ์ ์๋ฉ๋๋ค. Intel, AMD, ARM ๋ฐ NVIDIA๋ Vulkan 1.3์ ์ง์ํ๋ ์ ํ ์ถ์๋ฅผ ์ค๋นํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, AMD๋ ๊ณง AMD Radeon RX Vega ์๋ฆฌ์ฆ ๊ทธ๋ํฝ ์นด๋์ AMD RDNA ์ํคํ ์ฒ ๊ธฐ๋ฐ์ ๋ชจ๋ ์นด๋์์ Vulkan 1.3์ ์ง์ํ ๊ฒ์ด๋ผ๊ณ ๋ฐํํ์ต๋๋ค. NVIDIA๋ Linux ๋ฐ Windows์ฉ Vulkan 1.3์ ์ง์ํ๋ ๋๋ผ์ด๋ฒ ๊ฒ์๋ฅผ ์ค๋นํ๊ณ ์์ต๋๋ค. ARM์ Mali GPU์ Vulkan 1.3์ ๋ํ ์ง์์ ์ถ๊ฐํ ์์ ์ ๋๋ค.
์ฃผ์ ํ์ :
- ๋จ์ํ๋ ๋ ๋๋ง ํจ์ค(๋ ๋๋ง ํจ์ค ๊ฐ์ํ, VK_KHR_dynamic_rendering)์ ๋ํ ์ง์์ด ๊ตฌํ๋์ด ๋ ๋๋ง ํจ์ค ๋ฐ ํ๋ ์ ๋ฒํผ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๋ ๋๋ง์ ์์ํ ์ ์์ต๋๋ค.
- ๊ทธ๋ํฝ ํ์ดํ๋ผ์ธ ์ปดํ์ผ(ํ์ดํ๋ผ์ธ, ๋ฒกํฐ ๊ทธ๋ํฝ ๊ธฐ๋ณธ ์์ ๋ฐ ํ
์ค์ฒ๋ฅผ ํฝ์
ํํ์ผ๋ก ๋ฐ๊พธ๋ ์์
์งํฉ)์ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ธฐ ์ํด ์๋ก์ด ํ์ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- VK_EXT_extended_dynamic_state, VK_EXT_extended_dynamic_state2 - ์ถ๊ฐ ๋์ ์ํ๋ฅผ ์ถ๊ฐํ์ฌ ์ปดํ์ผ๋๊ณ ์ฐ๊ฒฐ๋ ์ํ ๊ฐ์ฒด์ ์๋ฅผ ์ค์ ๋๋ค.
- VK_EXT_pipeline_creation_cache_control - ํ์ดํ๋ผ์ธ์ด ์ปดํ์ผ๋๋ ์๊ธฐ์ ๋ฐฉ๋ฒ์ ๋ํ ๊ณ ๊ธ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- VK_EXT_pipeline_creation_feedback - ํ๋กํ์ผ๋ง ๋ฐ ๋๋ฒ๊น ์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ปดํ์ผ๋ ํ์ดํ๋ผ์ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ค์ํ ๊ธฐ๋ฅ์ด ์ ํ ์ฌํญ์์ ํ์ ๊ธฐ๋ฅ์ผ๋ก ์ ํ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ ์ค๋ ๋๊ฐ ๊ณต์ ๋ฐ์ดํฐ ๋ฐ ๋๊ธฐํ ์์ ์ ์ก์ธ์คํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๋ฒํผ ์ฐธ์กฐ(VK_KHR_buffer_device_address) ๋ฐ Vulkan ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ๊ตฌํ์ ์ด์ ํ์์ ๋๋ค.
- ๊ณต๊ธ์ ์ฒด๊ฐ ์ฌ๋ฌ ํ์ ๊ทธ๋ฃน ํฌ๊ธฐ์ ๋ํ ์ง์์ ์ ๊ณตํ๊ณ ๊ฐ๋ฐ์๊ฐ ํ์ํ ํฌ๊ธฐ๋ฅผ ์ ํํ ์ ์๋๋ก ์ธ๋ถํ๋ ํ์ ๊ทธ๋ฃน ์ ์ด(VK_EXT_subgroup_size_control)๊ฐ ์ ๊ณต๋ฉ๋๋ค.
- ๋ด์ ์์ ์ ํ๋์จ์ด ๊ฐ์ ๋๋ถ์ ๊ธฐ๊ณ ํ์ต ํ๋ ์์ํฌ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ VK_KHR_shader_integer_dot_product ํ์ฅ์ด ์ ๊ณต๋์์ต๋๋ค.
- ์ด 23๊ฐ์ ์๋ก์ด ํ์ฅํฉ์ด ํฌํจ๋์ด ์์ต๋๋ค:
- VK_KHR_copy_commands2
- VK_KHR_dynamic_rendering
- VK_KHR_format_feature_flags2
- VK_KHR_maintenance4
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_terminate_invocation
- VK_KHR_๋๊ธฐํ2
- VK_KHR_zero_initialize_workgroup_memory
- VK_EXT_4444_formats
- VK_EXT_extended_dynamic_state
- VK_EXT_extended_dynamic_state2
- VK_EXT_image_๊ฒฌ๊ณ ํจ
- VK_EXT_inline_uniform_block
- VK_EXT_pipeline_creation_cache_control
- VK_EXT_pipeline_creation_feedback
- VK_EXT_private_data
- VK_EXT_shader_demote_to_helper_invocation
- VK_EXT_subgroup_size_control
- VK_EXT_texel_buffer_alignment
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_tooling_info
- VK_EXT_ycbcr_2plane_444_formats
- ์๋ก์ด ๊ฐ์ฒด ์ ํ VkPrivateDataSlot์ ์ถ๊ฐํ์ต๋๋ค. 37๊ฐ์ ์๋ก์ด ๋ช ๋ น๊ณผ 60๊ฐ ์ด์์ ๊ตฌ์กฐ๊ฐ ๊ตฌํ๋์์ต๋๋ค.
- SPIR-V 1.6 ์ฌ์์ ๋ชจ๋ ํ๋ซํผ์ ๋ณดํธ์ ์ด๊ณ ๊ทธ๋ํฝ ๋ฐ ๋ณ๋ ฌ ์ปดํจํ ๋ชจ๋์ ์ฌ์ฉํ ์ ์๋ ์ค๊ฐ ์ ฐ์ด๋ ํํ์ ์ ์ํ๋๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค. SPIR-V์๋ ๋ณ๋์ ์ ฐ์ด๋ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ์ค๊ฐ ํํ์ผ๋ก ๋ถ๋ฆฌํ๋ ์์ ์ด ํฌํจ๋์ด ์์ด ๋ค์ํ ๊ณ ๊ธ ์ธ์ด์ ๋ํ ํ๋ฐํธ์๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ค์ํ ๊ณ ๊ธ ๊ตฌํ์ ๊ธฐ๋ฐ์ผ๋ก ๋จ์ผ ์ค๊ฐ ์ฝ๋๊ฐ ๋ณ๋๋ก ์์ฑ๋๋ฉฐ, ๋ด์ฅ๋ ์ ฐ์ด๋ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ OpenGL, Vulkan ๋ฐ OpenCL ๋๋ผ์ด๋ฒ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํธํ์ฑ ํ๋กํ์ผ์ ๊ฐ๋ ์ด ์ ์๋์์ต๋๋ค. Google์ Android ํ๋ซํผ์ฉ ๊ธฐ๋ณธ ํ๋กํ์ ์ต์ด๋ก ์ถ์ํ์ต๋๋ค. ์ด๋ฅผ ํตํด Vulkan 1.0 ์ฌ์ ์ด์์ ๊ธฐ๊ธฐ์์ ๊ณ ๊ธ Vulkan ๊ธฐ๋ฅ์ ๋ํ ์ง์ ์์ค์ ๋ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ์ฅ์น์์๋ OTA ์ ๋ฐ์ดํธ๋ฅผ ์ค์นํ์ง ์๊ณ ๋ ํ๋กํ ์ง์์ด ์ ๊ณต๋ ์ ์์ต๋๋ค.
Vulkan API๋ ๋๋ผ์ด๋ฒ์ ๊ทผ๋ณธ์ ์ธ ๋จ์ํ, GPU ๋ช ๋ น ์์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ธก์ผ๋ก ์ ์ก, ๋๋ฒ๊น ๋ ์ด์ด ์ฐ๊ฒฐ ๊ธฐ๋ฅ, ๋ค์ํ ํ๋ซํผ์ ๋ํ API ํตํฉ ๋ฐ ์ฌ์ ์ปดํ์ผ๋ API ์ฌ์ฉ์ผ๋ก ์ ๋ช ํฉ๋๋ค. GPU ์ธก์์ ์คํํ๊ธฐ ์ํ ์ฝ๋์ ์ค๊ฐ ํํ์ ๋๋ค. ๋์ ์ฑ๋ฅ๊ณผ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด Vulkan์ ์ ํ๋ฆฌ์ผ์ด์ ์ GPU ์์ ์ ์ง์ ์ ์ดํ๊ณ GPU ๋ฉํฐ์ค๋ ๋ฉ์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ์ ๊ณตํ์ฌ ๋๋ผ์ด๋ฒ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๊ณ ๋๋ผ์ด๋ฒ ์ธก ๊ธฐ๋ฅ์ ํจ์ฌ ๊ฐ๋จํ๊ณ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค. ์๋ฅผ ๋ค์ด, ๋๋ผ์ด๋ฒ ์ธก OpenGL์ ๊ตฌํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ์ ๊ฐ์ ์์ ์ Vulkan์ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ผ๋ก ์ด๋๋์์ต๋๋ค.
Vulkan์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํ๋ซํผ์ ํฌ๊ดํ๊ณ ๋ฐ์คํฌํฑ, ๋ชจ๋ฐ์ผ ๋ฐ ์น์ ์ํ ๋จ์ผ API๋ฅผ ์ ๊ณตํ๋ฏ๋ก ํ๋์ ๊ณตํต API๋ฅผ ์ฌ๋ฌ GPU ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ GPU์์ ์๋ํ๋ ๋๊ตฌ๋ฅผ ์๋ฏธํ๋ Vulkan์ ๋ค์ธต ์ํคํ
์ฒ ๋๋ถ์ OEM์ ๊ฐ๋ฐ ์ค์ ์ฝ๋ ๊ฒํ , ๋๋ฒ๊น
๋ฐ ํ๋กํ์ผ๋ง์ ์ํด ์
๊ณ ํ์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์
ฐ์ด๋ ์์ฑ์ ์ํด LLVM์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ OpenCL๊ณผ ํต์ฌ ๊ธฐ์ ์ ๊ณต์ ํ๋ ์๋ก์ด ํด๋์ฉ ์ค๊ฐ ํํ์ธ SPIR-V๊ฐ ์ ์๋์์ต๋๋ค. ์ฅ์น์ ํ๋ฉด์ ์ ์ดํ๊ธฐ ์ํด Vulkan์ OpenGL ES์ EGL๊ณผ ๊ฑฐ์ ๋์ผํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ WSI(Window System Integration) ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. WSI ์ง์์ Wayland์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Vulkan์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ ๋์ง ์์ Wayland ์๋ฒ ํ๊ฒฝ์์ ์คํ๋ ์ ์์ต๋๋ค. WSI๋ฅผ ํตํ ์์
๊ธฐ๋ฅ์ Android, X11(DRI3 ํฌํจ), Windows, Tizen, macOS ๋ฐ iOS์๋ ์ ๊ณต๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru