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

๋„์ž… OpenGL ๋ฐ Vulkan API์˜ ๋ฌด๋ฃŒ ๊ตฌํ˜„ ์ถœ์‹œ - ๋ฉ”์‚ฌ 19.3.0. Mesa 19.3.0 ๋ธŒ๋žœ์น˜์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋Š” ์‹คํ—˜์  ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ตœ์ข… ์•ˆ์ •ํ™”๋˜๋ฉด ์•ˆ์ •์ ์ธ ๋ฒ„์ „ 19.3.1์ด ๋ฆด๋ฆฌ์Šค๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์‚ฌ 19.3์—์„œ ๊ตฌํ˜„ Intel GPU(i4.6, Iris ๋“œ๋ผ์ด๋ฒ„)์— ๋Œ€ํ•œ OpenGL 965 ์™„์ „ ์ง€์›, AMD(r4.5, RadeonSi) ๋ฐ NVIDIA(NVC600) GPU์— ๋Œ€ํ•œ OpenGL 0 ์ง€์›, ๊ทธ๋ฆฌ๊ณ  Intel ๋ฐ AMD ์นด๋“œ์— ๋Œ€ํ•œ Vulkan 1.1 ์ง€์›. ์–ด์ œ OpenGL 4.6 ์ง€์› ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ Radeonsi ๋“œ๋ผ์ด๋ฒ„์—๋Š” ํฌํ•จ๋˜์—ˆ์ง€๋งŒ Mesa 19.3์—๋Š” ํฌํ•จ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ค‘ ๋ณ€๊ฒฝ:

  • RADV(AMD ์นฉ์šฉ Vulkan ๋“œ๋ผ์ด๋ฒ„)์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์…ฐ์ด๋” ์ปดํŒŒ์ผ ๋ฐฑ์—”๋“œ๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ACOValve์—์„œ LLVM ์…ฐ์ด๋” ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋Œ€์•ˆ์œผ๋กœ ๊ฐœ๋ฐœ ์ค‘์ธ "ACO"๋Š” ๊ฒŒ์ž„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์…ฐ์ด๋”์— ์ตœ์ ํ™”๋œ ์ฝ”๋“œ ์ƒ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ๋งค์šฐ ๋น ๋ฅธ ์ปดํŒŒ์ผ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ACO๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, JIT ์ปดํŒŒ์ผ์— ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํฌ์ธํ„ฐ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ฅผ ํ”ผํ•˜๊ณ  ๋ฐ˜๋ณต ์ž‘์—…์— ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์ค‘๊ฐ„ ํ‘œํ˜„์€ ์ „์ ์œผ๋กœ SSA(Static Single Assignment)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์…ฐ์ด๋”์— ๋”ฐ๋ผ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ์‚ฌ์ „ ๊ณ„์‚ฐํ•˜์—ฌ ๋ ˆ์ง€์Šคํ„ฐ ํ• ๋‹น์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. Vega 8, Vega 9, Vega 10 ๋ฐ Navi 10 GPU์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ "RADV_PERFTEST=aco"๋ฅผ ์„ค์ •ํ•˜์—ฌ ACO๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๋ฒ ์ด์Šค์— ํฌํ•จ๋œ Gallium3D ๋“œ๋ผ์ด๋ฒ„ ZinkVulkan ์œ„์— OpenGL API๋ฅผ ๊ตฌํ˜„ํ•œ Zink๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ Vulkan API๋งŒ ์ง€์›ํ•˜๋„๋ก ์ œํ•œ๋˜์–ด ์žˆ์–ด๋„ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† OpenGL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Vulkan ๋“œ๋ผ์ด๋ฒ„ ANV์™€ OpenGL ๋“œ๋ผ์ด๋ฒ„ iris๋Š” 12์„ธ๋Œ€ ์ธํ…” ์นฉ(Tiger Lake, gen12)์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ง€์›์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Tiger Lake ์ง€์›์„ ์œ„ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์ธ Linux ์ปค๋„์€ ๋ฆด๋ฆฌ์Šค 5.4๋ถ€ํ„ฐ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • i965 ๋ฐ iris ๋“œ๋ผ์ด๋ฒ„๋Š” SPIR-V ์…ฐ์ด๋”์˜ ์ค‘๊ฐ„ ํ‘œํ˜„์„ ์ง€์›ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์™„์ „ํ•œ ์ง€์›์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. OpenGL 4.6;
  • RadeonSI ๋“œ๋ผ์ด๋ฒ„๋Š” AMD Navi 14 GPU์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋น„๋””์˜ค ๋””์ฝ”๋”ฉ ๊ฐ€์†์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด H.8 ๋ฐ VP265 ํ˜•์‹์˜ 9K ๋น„๋””์˜ค ๋””์ฝ”๋”ฉ ์ง€์›์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • Vulkan ๋“œ๋ผ์ด๋ฒ„ RADV๊ฐ€ ๋ชจ๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ˜ธ๋œ ์ปดํŒŒ์ผ์…ฐ์ด๋” ์ปดํŒŒ์ผ์„ ์œ„ํ•ด ์‹œ์ž‘๋œ ์Šค๋ ˆ๋“œ๋Š” seccomp ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฉ๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” RADV_SECURE_COMPILE_THREADS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
  • AMD ์นฉ ๋“œ๋ผ์ด๋ฒ„์—์„œ AMD GPU ์ปค๋„ ๋ชจ๋“ˆ ํ™œ์„ฑํ™” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค GPU๋ฅผ ์žฌ์„ค์ •ํ•˜๋ ค๋ฉด
  • AMD Radeon APU๊ฐ€ ์žฅ์ฐฉ๋œ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Intel GPU์šฉ Gallium3D Iris ๋“œ๋ผ์ด๋ฒ„์˜ ์„ฑ๋Šฅ๋„ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์†Œํ”„ํŠธ์›จ์–ด ๋ Œ๋”๋ง์„ ์ œ๊ณตํ•˜๋Š” Gallium3D์˜ LLVMpipe ๋“œ๋ผ์ด๋ฒ„์—์„œ ์ถœ์—ฐ ํ•œ ์ปดํ“จํŠธ ์…ฐ์ด๋” ์ง€์›
  • ๋””์Šคํฌ์˜ ์…ฐ์ด๋” ์บ์‹ฑ ์‹œ์Šคํ…œ ์ตœ์ ํ™” ๋œ CPU ์ฝ”์–ด๊ฐ€ 4๊ฐœ ์ด์ƒ์ธ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ
  • MSVC์™€ MinGW๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Windows์—์„œ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋„๋ก Meson ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. Windows๊ฐ€ ์•„๋‹Œ ์‹œ์Šคํ…œ์—์„œ ๋นŒ๋“œํ•  ๋•Œ scons ์‚ฌ์šฉ์ด ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • EGL ํ™•์žฅ EGL_EXT_image_flush_external์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด OpenGL ํ™•์žฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค:
  • RADV Vulkan ๋“œ๋ผ์ด๋ฒ„์— ํ™•์žฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(AMD ์นด๋“œ์šฉ):
  • ANV Vulkan ๋“œ๋ผ์ด๋ฒ„์— ํ™•์žฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(Intel ์นด๋“œ์šฉ):

์ถ”๊ฐ€์ ์œผ๋กœ ์ฃผ๋ชฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ถœํŒ AMD์— ์˜ํ•ด ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜ APU "Vega"์˜ ์•„ํ‚คํ…์ฒ˜์— ๋”ฐ๋ฅด๋ฉด 7nm ๋ช…๋ น์€ GCN(Graphics Core Next) ๋งˆ์ดํฌ๋กœ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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