OpenGL ๋ฐ Vulkan์˜ ๋ฌด๋ฃŒ ๊ตฌํ˜„์ธ Mesa 22.1 ์ถœ์‹œ

๋‘ ๋‹ฌ ๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— OpenGL ๋ฐ Vulkan API์˜ ๋ฌด๋ฃŒ ๊ตฌํ˜„์ธ Mesa 22.1.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Mesa 22.1.0 ๋ธŒ๋žœ์น˜์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋Š” ์‹คํ—˜์  ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ตœ์ข… ์•ˆ์ •ํ™”๋˜๋ฉด ์•ˆ์ •์ ์ธ ๋ฒ„์ „ 22.1.1์ด ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค.

Mesa 22.1์—์„œ๋Š” Intel GPU์šฉ anv ๋“œ๋ผ์ด๋ฒ„, AMD GPU์šฉ radv ๋ฐ lavapipe ์†Œํ”„ํŠธ์›จ์–ด ๋ž˜์Šคํ„ฐ๋ผ์ด์ €์—์„œ Vulkan 1.3 ๊ทธ๋ž˜ํ”ฝ API์— ๋Œ€ํ•œ ์ง€์›์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vulkan 1.2์— ๋Œ€ํ•œ ์ง€์›์€ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋ชจ๋“œ(vn)์—์„œ ๊ตฌํ˜„๋˜๊ณ , Vulkan 1.1์€ Qualcomm GPU์šฉ ๋“œ๋ผ์ด๋ฒ„(tu)์—์„œ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. Broadcom VideoCore VI GPU(Raspberry Pi 1.0)์šฉ ๋“œ๋ผ์ด๋ฒ„์˜ Vulkan 4. Mesa๋Š” ๋˜ํ•œ 4.6, iris(Intel), radeonsi(AMD), zink ๋ฐ llvmpipe ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์™„์ „ํ•œ OpenGL 965 ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. OpenGL 4.5 ์ง€์›์€ AMD(r600) ๋ฐ NVIDIA(nvc0) GPU์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ OpenGL 4.3์€ virgl(QEMU/KVM์šฉ Virgil3D ๊ฐ€์ƒ GPU) ๋ฐ vmwgfx(VMware)์— ๋Œ€ํ•ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํ˜์‹ :

  • ANV Vulkan ๋“œ๋ผ์ด๋ฒ„(Intel) ๋ฐ Iris OpenGL ๋“œ๋ผ์ด๋ฒ„๋Š” Intel DG2(Arc Alchemist) ๋ฐ Arctic Sound-M ๊ฐœ๋ณ„ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • DirectX 3 API(D12D12) ์œ„์— OpenGL ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ์ด์–ด๊ฐ€ ์žˆ๋Š” D3D12 ๋“œ๋ผ์ด๋ฒ„๋Š” OpenGL 4.2์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๋Š” Windows์—์„œ Linux ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด WSL2 ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Vulkan API(llvmpipe์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ Vulkan์˜ ๊ฒฝ์šฐ Vulkan API ํ˜ธ์ถœ์„ Gallium API๋กœ ๋ณ€ํ™˜)์šฉ ์†Œํ”„ํŠธ์›จ์–ด ๋ž˜์Šคํ„ฐ๋ผ์ด์ €๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” lavapipe ๋“œ๋ผ์ด๋ฒ„๋Š” Vulkan 1.3์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • AMD GFX1036 ๋ฐ GFX1037 GPU์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • RADV ๋“œ๋ผ์ด๋ฒ„(AMD)๋Š” DOOM Eternal๊ณผ ๊ฐ™์€ ๊ฒŒ์ž„์— ๋Œ€ํ•œ ๊ด‘์„  ์ถ”์  ์ง€์›์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ด‘์„  ๊ธฐ๋ณธ ์ปฌ๋ง์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Imagination์—์„œ ๊ฐœ๋ฐœํ•œ PowerVR Rogue ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” GPU์šฉ Vulkan ๋“œ๋ผ์ด๋ฒ„์˜ ์ดˆ๊ธฐ ๊ตฌํ˜„์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ตฌํ˜• GeForce 6/7/8 GPU์šฉ Nouveau ๋“œ๋ผ์ด๋ฒ„๋Š” NIR ์…ฐ์ด๋”์˜ ์œ ํ˜• ์—†๋Š” IR(์ค‘๊ฐ„ ํ‘œํ˜„)์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. NIR ์ง€์›์„ ์‚ฌ์šฉํ•˜๋ฉด NIR์„ TGSI๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TGSI(Tungsten Graphics Shader Infrastructure) ์ค‘๊ฐ„ ํ‘œํ˜„์— ๋Œ€ํ•œ ์ง€์›์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ตฌ์„ฑ์—๋Š” Intel์—์„œ ์ œ์•ˆํ•˜๊ณ  ๊ด‘์„  ์ถ”์ ์— ์‚ฌ์šฉ๋˜๋Š” ์†Œํ˜• OpenCL ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Raspberry Pi 3 ๋ชจ๋ธ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋˜๋Š” VideoCore VI ๊ทธ๋ž˜ํ”ฝ ๊ฐ€์†๊ธฐ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ OpenGL ๋“œ๋ผ์ด๋ฒ„ v4d๋Š” ๋””์Šคํฌ์˜ ์…ฐ์ด๋” ์บ์‹ฑ ์ง€์›์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • VCN 2.0 ๋น„๋””์˜ค ์ฒ˜๋ฆฌ ์—”์ง„์ด ํƒ‘์žฌ๋œ AMD GPU์˜ ๊ฒฝ์šฐ EFC(์ธ์ฝ”๋” ํ˜•์‹ ๋ณ€ํ™˜) ์ง€์›์ด ๊ตฌํ˜„๋˜์–ด ํ•˜๋“œ์›จ์–ด ๋น„๋””์˜ค ์ธ์ฝ”๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์…ฐ์ด๋”์—์„œ ์ˆ˜ํ–‰๋˜๋Š” RGB->YUV ๋ณ€ํ™˜ ์—†์ด RGB ํ‘œ๋ฉด์„ ์ง์ ‘ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Iris ๋“œ๋ผ์ด๋ฒ„์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” Gen4-Gen7 ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์˜ ์ด์ „ Intel GPU์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ Crocus ๋“œ๋ผ์ด๋ฒ„์—๋Š” ์ด์ „ ๋ฒ„์ „์˜ OpenGL๊ณผ์˜ ํ˜ธํ™˜์„ฑ ํ”„๋กœํ•„์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ARM Mali Midgard ๋ฐ Bifrost GPU์šฉ Vulkan ๊ทธ๋ž˜ํ”ฝ API์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” PanVk ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ปดํ“จํŒ… ์…ฐ์ด๋” ์ง€์› ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Vulkan API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ€์ƒ GPU(virtio-gpu)๋ฅผ ๊ตฌํ˜„ํ•œ Venus ๋“œ๋ผ์ด๋ฒ„์—๋Š” OpenGL ES ํ˜ธ์ถœ์„ OpenGL, Direct3D 9/11, Desktop GL ๋ฐ Vulkan์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ANGLE ๋ ˆ์ด์–ด์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋ ˆ์ž„ ๋ฒ„ํผ ๋˜๋Š” ํ…์Šค์ฒ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ง์‚ฌ๊ฐํ˜•์„ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ์„ค๊ณ„๋œ NVIDIA์˜ OpenGL ํ™•์žฅ GL_NV_pack_subimage์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Vulkan ๋“œ๋ผ์ด๋ฒ„ RADV(AMD), ANV(Intel) ๋ฐ lavapipe์— ํ™•์žฅ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์šฉ์•”ํŒŒ์ดํ”„ ๋ฐ RADV์šฉ VK_EXT_๊นŠ์ด_ํด๋ฆฝ_์ปจํŠธ๋กค.
    • ์šฉ์•”ํŒŒ์ดํ”„์šฉ VK_EXT_graphics_pipeline_library.
    • ์šฉ์•” ํŒŒ์ดํ”„์— ๋Œ€ํ•œ VK_EXT_primitives_generated_query.
    • ANV ๋ฐ ์šฉ์•”ํŒŒ์ดํ”„์˜ ๊ฒฝ์šฐ VK_EXT_image_2d_view_of_3d์ž…๋‹ˆ๋‹ค.
    • ์šฉ์•” ํŒŒ์ดํ”„์— ๋Œ€ํ•œ VK_KHR_swapchain_mutable_format.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€