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

22.0.0๊ฐœ์›” ๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— OpenGL ๋ฐ Vulkan API์˜ ๋ฌด๋ฃŒ ๊ตฌํ˜„์ธ Mesa 22.0.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Mesa 22.0.1 ๋ธŒ๋žœ์น˜์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋Š” ์‹คํ—˜์  ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ตœ์ข… ์•ˆ์ •ํ™”๋˜๋ฉด ์•ˆ์ •์ ์ธ ๋ฒ„์ „ 1.3์ด ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฆด๋ฆฌ์Šค๋Š” Intel GPU์šฉ anv ๋“œ๋ผ์ด๋ฒ„์™€ AMD GPU์šฉ radv์—์„œ Vulkan XNUMX ๊ทธ๋ž˜ํ”ฝ API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์œผ๋กœ ์ฃผ๋ชฉํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค.

Vulkan 1.2 ์ง€์›์€ ์—๋ฎฌ๋ ˆ์ดํ„ฐ(vn) ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , Vulkan 1.1 ์ง€์›์€ Qualcomm(tu) GPU ๋ฐ lavapipe ์†Œํ”„ํŠธ์›จ์–ด ๋ž˜์Šคํ„ฐ๋ผ์ด์ €์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Vulkan 1.0 ์ง€์›์€ Broadcom VideoCore VI(Raspberry Pi 4) GPU์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Mesa 22.0์€ ๋˜ํ•œ 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)์— ๋Œ€ํ•ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

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

  • Vulkan 1.3 ๊ทธ๋ž˜ํ”ฝ API์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Gallium3D ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํด๋ž˜์‹ OpenGL ๋“œ๋ผ์ด๋ฒ„์šฉ ์ฝ”๋“œ๋Š” Intel GPU์šฉ i915 ๋ฐ i965 ๋“œ๋ผ์ด๋ฒ„, AMD GPU์šฉ r100 ๋ฐ r200, NVIDIA GPU์šฉ Nouveau๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ธฐ๋ณธ Mesa์—์„œ ๋ณ„๋„์˜ ๋ถ„๊ธฐ "Amber"๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Intel OpenSWR ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ OpenGL ์†Œํ”„ํŠธ์›จ์–ด ๋ž˜์Šคํ„ฐ๋ผ์ด์ €๋ฅผ ์ œ๊ณตํ•˜๋Š” SWR ๋“œ๋ผ์ด๋ฒ„๋„ "Amber" ๋ถ„๊ธฐ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์‹ xlib ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ธฐ๋ณธ ๊ตฌ์กฐ์—์„œ ์ œ์™ธ๋˜๋ฉฐ ๋Œ€์‹  gallium-xlib ๋ณ€ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • DirectX 3 API(D12D12) ์œ„์— OpenGL ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ์ด์–ด๊ฐ€ ํฌํ•จ๋œ Gallium ๋“œ๋ผ์ด๋ฒ„ D3D12๋Š” OpenGL ES 3.1๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๋Š” Windows์—์„œ Linux ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด WSL2 ๊ณ„์ธต์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • Intel Alderlake(S ๋ฐ N) ์นฉ์— ๋Œ€ํ•œ ์ง€์›์ด OpenGL ๋“œ๋ผ์ด๋ฒ„ "iris" ๋ฐ Vulkan ๋“œ๋ผ์ด๋ฒ„ "ANV"์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Intel GPU ๋“œ๋ผ์ด๋ฒ„์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ VRR(Adaptive-Sync) ๊ธฐ์ˆ  ์ง€์›์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ž˜๋ฆฌ๋Š” ํ˜„์ƒ ์—†๋Š” ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์œ„ํ•ด ๋ชจ๋‹ˆํ„ฐ์˜ ํ™”๋ฉด ์ฃผ์‚ฌ์œจ์„ ์ ์‘์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • RADV Vulkan ๋“œ๋ผ์ด๋ฒ„(AMD)๋Š” ๊ด‘์„  ์ถ”์  ๋ฐ ๊ด‘์„  ์ถ”์ ์šฉ ์…ฐ์ด๋”์— ๋Œ€ํ•œ ์ง€์›์„ ๊ณ„์†ํ•ด์„œ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • Raspberry Pi 3 ๋ชจ๋ธ๋ถ€ํ„ฐ ์‚ฌ์šฉ๋˜๋Š” VideoCore VI ๊ทธ๋ž˜ํ”ฝ ๊ฐ€์†๊ธฐ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ v4dv ๋“œ๋ผ์ด๋ฒ„๋Š” Android ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • EGL์˜ ๊ฒฝ์šฐ "dma-buf ํ”ผ๋“œ๋ฐฑ" ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๊ตฌํ˜„๋˜์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ GPU์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ธฐ๋ณธ GPU์™€ ๋ณด์กฐ GPU ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๊ฐ„ ๋ฒ„ํผ๋ง ์—†์ด ์ถœ๋ ฅ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • VMware ํ™˜๊ฒฝ์—์„œ 3D ๊ฐ€์†์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” vmwgfx ๋“œ๋ผ์ด๋ฒ„์— OpenGL 4.3 ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Vulkan ๋“œ๋ผ์ด๋ฒ„ RADV(AMD), ANV(Intel) ๋ฐ zink(Vulkan์„ ํ†ตํ•œ OpenGL)์— ํ™•์žฅ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • VK_KHR_dynamic_rendering(์šฉ์•”ํŒŒ์ดํ”„,radv,anv)
    • VK_EXT_image_view_min_lod(radv) KHR_synchronization2.txt VK_KHR_synchronization2]](radv)
    • VK_EXT_memory_object (์ง•ํฌ)
    • VK_EXT_memory_object_fd (์ง•ํฌ)
    • VK_EXT_semaphore(์ง•ํฌ)
    • VK_EXT_semaphore_fd (์ง•ํฌ)
    • VK_VALVE_mutable_descriptor_type(์ง•ํฌ)
  • ์ƒˆ๋กœ์šด OpenGL ํ™•์žฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค:
    • GL_ARB_sparse_texture(๋ผ๋ฐ์˜จ์‹œ, zink)
    • GL_ARB_sparse_texture2(๋ผ๋ฐ์˜จ์‹œ, zink)
    • GL_ARB_sparse_texture_clamp(๋ผ๋ฐ์˜จ์‹œ, zink)
    • GL_ARB_framebuffer_no_attachments
    • GL_ARB_sample_shading

    ์ถœ์ฒ˜ : opennet.ru

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