Wayland์— ์ดˆ์ ์„ ๋งž์ถ˜ KWin์˜ ํฌํฌ์ธ KWinFT ์ถœ์‹œ

๋กœ๋งˆ ๊ธธ๊ทธ, ์ฐธ์—ฌ KDE, Wayland, Xwayland ๋ฐ X Server ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋„์ž… ๋œ ๊ณ„ํš KWinFT (KWin Fast Track), ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Wayland ๋ฐ X11์„ ์œ„ํ•œ ์œ ์—ฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ๋ณตํ•ฉ ์ฐฝ ๊ด€๋ฆฌ์ž ๊ฐœ๋ฐœ ์ผ€์ด์œˆ. ์ฐฝ ๊ด€๋ฆฌ์ž ์™ธ์—๋„ ํ”„๋กœ์ ํŠธ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ๋žฉ๋žœ๋“œ Qt/C++์šฉ libwayland์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ๊ตฌํ˜„์œผ๋กœ ์ง€์†์ ์ธ ๊ฐœ๋ฐœ ์ฝฐ์ด๋žœ๋“œ, ๊ทธ๋Ÿฌ๋‚˜ Qt์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์—์„œ ํ•ด์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” GPLv2 ๋ฐ LGPLv2 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” KWin๊ณผ KWayland๋ฅผ ์žฌํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ด๊ณ , ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ณ , ์ตœ์ ํ™”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ทผ๋ณธ์ ์ธ ํ˜์‹  ์ถ”๊ฐ€๋ฅผ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ๊ธฐ์ˆ  ๋ฐ ๊ฐœ๋ฐœ ๋ฐฉ์‹์„ ํ˜„์žฌ ํ˜•ํƒœ์˜ KWin์— ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. KWinFT์™€ Wrapland๋Š” KWin๊ณผ KWayland๋ฅผ ์›ํ™œํ•˜๊ฒŒ ๋Œ€์ฒดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์™„์ „ํ•œ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ˜์‹ ์˜ ์ง„์ „์„ ๋ฐฉํ•ดํ•˜๋Š” ๋งŽ์€ ์ œํ’ˆ์˜ KWin ์ž ๊ธˆ์œผ๋กœ ์ธํ•ด ์ œํ•œ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

KWinFT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๋ณด๋‹ค ํ˜„๋Œ€์ ์ธ ๊ฐœ๋ฐœ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ž์œ ๋กญ๊ฒŒ ์‹คํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, KWinFT ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฆฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒ€์ฆ, ์–ด์…ˆ๋ธ”๋ฆฌ ์ž๋™ ์ƒ์„ฑ ๋ฐ ๊ด‘๋ฒ”์œ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ง€์†์ ์ธ ํ†ตํ•ฉ ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์ธก๋ฉด์—์„œ KWinFT์˜ ์ฃผ์š” ์ดˆ์ ์€ ๊ณ ํ’ˆ์งˆ์˜ ์™„์ „ํ•œ ํ”„๋กœํ† ์ฝœ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Wayland์™€์˜ ํ†ตํ•ฉ์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” KWin ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋Šฅ ์žฌ์ž‘์—…์„ ํฌํ•จํ•œ Wayland.

KWinFT์— ์ด๋ฏธ ์ถ”๊ฐ€๋œ ์‹คํ—˜์  ํ˜์‹ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ•ฉ์„ฑ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฌ์ž‘์—…๋˜์–ด X11 ๋ฐ Wayland๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ฝ˜ํ…์ธ ์˜ ๋ Œ๋”๋ง์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ๊ณผ ํ™”๋ฉด ํ‘œ์‹œ ์‚ฌ์ด์˜ ์ง€์—ฐ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ด๋จธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Wayland ํ”„๋กœํ† ์ฝœ ํ™•์žฅ ๊ตฌํ˜„ "๋ทฐํฌํ„ฐ", ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ‘œ๋ฉด ๊ฐ€์žฅ์ž๋ฆฌ์˜ ์„œ๋ฒ„ ์ธก ํฌ๊ธฐ ์กฐ์ • ๋ฐ ํŠธ๋ฆฌ๋ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. XWayland์˜ ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค์™€ ๊ฒฐํ•ฉ๋œ ํ™•์žฅ ๊ธฐ๋Šฅ์€ ์ด์ „ ๊ฒŒ์ž„์˜ ํ™”๋ฉด ํ•ด์ƒ๋„ ๋ณ€๊ฒฝ์„ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Wayland ๊ธฐ๋ฐ˜ ์„ธ์…˜์— ๋Œ€ํ•œ ํšŒ์ „ ๋ฐ ๋ฏธ๋Ÿฌ๋ง ์ถœ๋ ฅ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Wrapland๋Š” C++ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ๋กœ libwayland ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” Qt ์Šคํƒ€์ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Wrapland๋Š” ์›๋ž˜ KWayland์˜ ํฌํฌ๋กœ ๊ฐœ๋ฐœ๋  ์˜ˆ์ •์ด์—ˆ์œผ๋‚˜, KWayland ์ฝ”๋“œ ์ƒํƒœ๊ฐ€ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ๋ชปํ•˜์—ฌ ํ˜„์žฌ๋Š” KWayland๋ฅผ ์ „๋ฉด ๊ฐœํŽธํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋กœ ๊ฒ€ํ† ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Wrapland์™€ KWayland์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์€ ๋” ์ด์ƒ Qt์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  Qt๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณ„๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์—๋Š” Wrapland๋ฅผ C++ API์™€ ํ•จ๊ป˜ ๋ฒ”์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ libwayland C API๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Manjaro Linux ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๊ธฐ์„ฑํ’ˆ ํŒจํ‚ค์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. KWinFT๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ €์žฅ์†Œ์—์„œ kwinft๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ‘œ์ค€ KWin์œผ๋กœ ๋กค๋ฐฑํ•˜๋ ค๋ฉด kwin ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. Wrapland์˜ ์‚ฌ์šฉ์€ KDE์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„์€ ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šธ๋ฃจ์ธ  ์ถœ๋ ฅ ์ œ์–ด ํ”„๋กœํ† ์ฝœ, wlroots ๊ธฐ๋ฐ˜์˜ ๋ณตํ•ฉ ์„œ๋ฒ„ ํ—ˆ์šฉ(๋™์š”, ์›จ์ด ํŒŒ์ด์–ด) KScreen์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์‚ฌ์ด์— ๊ณ„์†ํ•˜๋‹ค ํ”„๋กœ์ ํŠธ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค KWin-๋‚ฎ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„, ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‘๋‹ต์„ฑ์„ ๋†’์ด๊ณ  ์ž…๋ ฅ ๋Š๊น€๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ž‘์—…์— ๋Œ€ํ•œ ์‘๋‹ต ์†๋„์™€ ๊ด€๋ จ๋œ ์ผ๋ถ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํŒจ์น˜๋กœ KWin ๋ณตํ•ฉ ๊ด€๋ฆฌ์ž ๋ฒ„์ „์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. DRM VBlank ์™ธ์—๋„ KWin-lowlatency๋Š” glXWaitVideoSync, glFinish ๋˜๋Š” NVIDIA VSync์˜ ์‚ฌ์šฉ์„ ์ง€์›ํ•˜์—ฌ ์‘๋‹ต์„ฑ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ํ…Œ์–ด๋ง์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(KWin์˜ ์›๋ž˜ ํ…Œ์–ด๋ง ๋ณดํ˜ธ๋Š” ํƒ€์ด๋จธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜๋ฉฐ ํฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„(์ตœ๋Œ€ 50ms) ์ถœ๋ ฅ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Œ) ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž…๋ ฅ ์‹œ ์‘๋‹ต์ด ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค. KWin-lowlatency์˜ ์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์Šค๋Š” KDE Plasma 5.18์˜ ๊ธฐ๋ณธ ๋ณตํ•ฉ ์„œ๋ฒ„ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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