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

OpenGL ๋ฐ Vulkan API์˜ ๋ฌด๋ฃŒ ๊ตฌํ˜„์ธ Mesa 21.0.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Mesa 21.0.0 ๋ธŒ๋žœ์น˜์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋Š” ์‹คํ—˜์  ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ตœ์ข… ์•ˆ์ •ํ™”๋˜๋ฉด ์•ˆ์ •์ ์ธ ๋ฒ„์ „ 21.0.1์ด ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค. Mesa 21.0์€ 4.6, iris(Intel), radeonsi(AMD), zink ๋ฐ llvmpipe ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ OpenGL 965์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. OpenGL 4.5 ์ง€์›์€ AMD(r600) ๋ฐ NVIDIA(nvc0) GPU์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ virgl(QEMU/KVM์šฉ Virgil4.3D ๊ฐ€์ƒ GPU)์—์„œ๋Š” OpenGL 3์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Vulkan 1.2๋Š” Intel ๋ฐ AMD ์นด๋“œ์—์„œ ์ง€์›๋˜๊ณ  Vulkan 1.0์€ VideoCore VI(Raspberry Pi 4)์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

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

  • Zink ๋“œ๋ผ์ด๋ฒ„(Vulkan ์œ„์— OpenGL API ๊ตฌํ˜„)๋Š” OpenGL 4.6์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— Vulkan API๋งŒ ์ง€์›ํ•˜๋„๋ก ์ œํ•œ๋œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ Zink๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋“œ์›จ์–ด ๊ฐ€์† OpenGL์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zink์˜ ์„ฑ๋Šฅ์€ ๊ธฐ๋ณธ OpenGL ๊ตฌํ˜„์˜ ์„ฑ๋Šฅ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.
  • ์†Œํ”„ํŠธ์›จ์–ด ๋ Œ๋”๋ง์šฉ์œผ๋กœ ์„ค๊ณ„๋œ llvmpipe ๋“œ๋ผ์ด๋ฒ„๋Š” OpenGL 4.6์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Qualcomm ๊ทธ๋ž˜ํ”ฝ ํ•˜์œ„ ์‹œ์Šคํ…œ์— ์‚ฌ์šฉ๋˜๋Š” Freedreno ๋“œ๋ผ์ด๋ฒ„๋Š” Adreno a6xx GPU์šฉ OpenGL ES 3.0์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • GPU Midgard(Mali-T7xx, Mali-T8xx) ๋ฐ Bifrost(Mali G3x, G5x, G7x)์šฉ Panfrost ๋“œ๋ผ์ด๋ฒ„๋Š” OpenGL 3.1์€ ๋ฌผ๋ก  GPU Bifrost์šฉ OpenGL ES 3.0๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • radeonsi ๋“œ๋ผ์ด๋ฒ„๋Š” OpenGL ํ™•์žฅ GL_EXT_demote_to_helper_invocation ๋ฐ GL_NV_compute_shader_derivatives๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. "Counter-Strike: Global Offensive" ๊ฒŒ์ž„์˜ ๊ฒฝ์šฐ ์ตœ์ ํ™” ๋ชจ๋“œ "mesa_glthread"๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์„ฑ๋Šฅ์„ 10-20% ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SPECViewPerf ํ…Œ์ŠคํŠธ ํ†ต๊ณผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ตœ์ ํ™”๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Radeon GPU ํ”„๋กœํŒŒ์ผ๋Ÿฌ(RGP) ํ”„๋กœํŒŒ์ผ๋ง ๋„๊ตฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Zen 3 ๋ฐ RDNA 2 GPU์— ๋Œ€ํ•œ Smart Access Memory ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HEVC SAO ์ธ์ฝ”๋”(VCN2, VCN2.5 ๋ฐ VCN3 ์—”์ง„์„ ์ง€์›ํ•˜๋Š” GPU์šฉ ์ƒ˜ํ”Œ ์ ์‘ํ˜• ์˜คํ”„์…‹) ๋ฐ AV1 ๋””์ฝ”๋”(RDNA 2/RX 6000 ๋ฐ OpenMAX ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด์„œ๋งŒ)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • RADV Vulkan ๋“œ๋ผ์ด๋ฒ„(AMD ์นด๋“œ์šฉ)๋Š” Rapid Packed Math(16๋น„ํŠธ ๋ฒกํ„ฐํ™”) ๋ฐ Sparse ๋ฉ”๋ชจ๋ฆฌ(์ด๋ฏธ์ง€ ๋ฐ ํ…์Šค์ฒ˜์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ผ๊ด€๋˜์ง€ ์•Š๊ฒŒ ๋ฐฐ์น˜ํ•˜๊ณ  ์ด๋ฅผ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ)์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. RX 6000 ์‹œ๋ฆฌ์ฆˆ ์นด๋“œ์˜ ์„ฑ๋Šฅ์ด ์ตœ์ ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. VK_VALVE_mutable_descriptor_type ๋ฐ VK_KHR_fragment_shading_rate ํ™•์žฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(RDNA2๋งŒ ํ•ด๋‹น).
  • Intel ANV ๋ฐ Iris ๋“œ๋ผ์ด๋ฒ„๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  Xe HPG ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์— ๊ตฌํ˜„๋œ Vulkan ๊ด‘์„  ์ถ”์  ํ™•์žฅ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Xlib๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  X11 ๋ฆฌ์†Œ์Šค์—์„œ EGL ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” EGL_MESA_platform_xcb ํ™•์žฅ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Broadcom BCM3 ์นฉ ๊ธฐ๋ฐ˜ Raspberry Pi 4 ๋ณด๋“œ์— ์‚ฌ์šฉ๋˜๋Š” VideoCore VI ๊ทธ๋ž˜ํ”ฝ ๊ฐ€์†๊ธฐ์šฉ์œผ๋กœ ๊ฐœ๋ฐœ๋œ Vulkan ๋“œ๋ผ์ด๋ฒ„ V2711DV์—๋Š” Wayland ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ Vulkan API์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” Wayland WSI(Windowing System Integration)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • OpenGL ํ˜ธ์ถœ์„ DirectX 12 API๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ ˆ์ด์–ด์˜ ์ดˆ๊ธฐ ๊ตฌํ˜„์€ WSL(Linux์šฉ Windows ํ•˜์œ„ ์‹œ์Šคํ…œ) ํ™˜๊ฒฝ์—์„œ ๊ทธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ฑ„ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ SPIR-V ์…ฐ์ด๋”์˜ ์ค‘๊ฐ„ ํ‘œํ˜„์„ Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ DXIL(DirectX Intermediate Language)๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ spirv_to_dxil ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Haiku OS์— ๋Œ€ํ•œ ์ง€์›์ด ์žฌ์„ค๊ณ„๋˜๊ณ  ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • driconf์—์„œ glx_disable_oml_sync_control, glx_disable_sgi_video_sync ๋ฐ glx_disable_ext_buffer_age ์„ค์ •์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • DRI1์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ฑฐํ•˜๊ณ  8.0 ๋ฏธ๋งŒ์˜ Mesa ๋ฒ„์ „์—์„œ DRI ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ๋ฅผ ์ค‘์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์‹ DRI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜๊ณ  OpenGL ์†Œํ”„ํŠธ์›จ์–ด ๋ Œ๋”๋ง์šฉ์œผ๋กœ ์ œ์ž‘๋œ swast ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค(๋‚˜๋จธ์ง€ ์†Œํ”„ํŠธ์›จ์–ด ๋ Œ๋”๋ง ๋“œ๋ผ์ด๋ฒ„์ธ llvmpipe ๋ฐ Softpipe๋Š” ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋Šฅ ์ธก๋ฉด์—์„œ swast๋ณด๋‹ค ๋ˆˆ์— ๋„๊ฒŒ ์•ž์„œ ์žˆ์Šต๋‹ˆ๋‹ค). ์ด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋” ์ด์ƒ ๋ฐฐํฌํŒ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋งŽ์€ ๋ฌธ์ œ์™€ ํšŒ๊ท€ ๋ฐœ์ƒ์œผ๋กœ ์ธํ•ด swast ์ œ๊ฑฐ๊ฐ€ ์ด‰์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • OSMesa API์˜ ๊ธฐ์กด ํด๋ž˜์‹ ๋ฒ„์ „์ด ์ œ๊ฑฐ๋˜์–ด(Gallium ๊ธฐ๋ฐ˜ OSMesa๋Š” ๋‚จ์Œ) ํ™”๋ฉด์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฒ„ํผ์— ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ถœ์ฒ˜ : opennet.ru

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