KWinFT, KWin рдЪрд╛ рдПрдХ рдХрд╛рдЯрд╛, рдЬреЛ Wayland рд╡рд░ тАЛтАЛрдХреЗрдВрджреНрд░рд┐рдд рдЖрд╣реЗ, рд╕рд╛рджрд░ рдХреЗрд▓рд╛

рд░реЛрдорди рдЧрд┐рд▓реНрдЧ, рд╕рд╣рднрд╛рдЧреА рд╣реЛрдд рдЖрд╣реЗ KDE, Wayland, Xwayland рдЖрдгрд┐ X рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдордзреНрдпреЗ, рдУрд│рдЦ рдХрд░реВрди рджрд┐рд▓реА рдкреНрд░рдХрд▓реНрдк KWinFT (KWin рдлрд╛рд╕реНрдЯ рдЯреНрд░реЕрдХ), рдХреЛрдбрдмреЗрд╕рд╡рд░ рдЖрдзрд╛рд░рд┐рдд Wayland рдЖрдгрд┐ X11 рд╕рд╛рдареА рд▓рд╡рдЪрд┐рдХ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕-рд╕реБрд▓рдн рдХрдВрдкреЛрдЭрд┐рдЯ рд╡рд┐рдВрдбреЛ рдореЕрдиреЗрдЬрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рдХреЗрд╡рд┐рди. рд╡рд┐рдВрдбреЛ рдореЕрдиреЗрдЬрд░ рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рдХрд▓реНрдк рд▓рд╛рдпрдмреНрд░рд░реА рджреЗрдЦреАрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЛ рдЖрд╡рд░рдг Qt/C++ рд╕рд╛рдареА libwayland рд╡рд░ тАЛтАЛрдмрдВрдзрдирдХрд╛рд░рдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╣, рд╕рддрдд рд╡рд┐рдХрд╛рд╕ рдХреЗрд╡реЗрд▓рдБрдб, рдкрд░рдВрддреБ Qt рд▓рд╛ рдмрдВрдзрдирдХрд╛рд░рдХ рдХрд░рдгреНрдпрд╛рдкрд╛рд╕реВрди рдореБрдХреНрдд рдХреЗрд▓реЗ. рдХреЛрдб GPLv2 рдЖрдгрд┐ LGPLv2 рд▓рд╛рдпрд╕рдиреНрд╕ рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

KWin рдЖрдгрд┐ KWayland рд╡рд╛рдкрд░реВрди рд░реАрд╕рд╛рдпрдХрд▓ рдХрд░рдгреЗ рд╣реЗ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдзреНрдпреЗрдп рдЖрд╣реЗ
рдЖрдзреБрдирд┐рдХ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕ рдкрджреНрдзрддреА рдЬреНрдпрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд▓рд╛ рдЧрддреА рджреЗрддрд╛рдд, рдХреЛрдб рд░рд┐рдлреЕрдХреНрдЯрд░ рдХрд░рддрд╛рдд, рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдЬреЛрдбрддрд╛рдд рдЖрдгрд┐ рдореВрд▓рднреВрдд рдирд╡рдХрд▓реНрдкрдирд╛ рдЬреЛрдбрдгреЗ рд╕реЛрдкреЗ рдХрд░рддрд╛рдд, рдЬреНрдпрд╛рдЪреЗ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд KWin рдордзреНрдпреЗ рдПрдХреАрдХрд░рдг рдХрд░рдгреЗ рдХрдареАрдг рдЖрд╣реЗ. KWinFT рдЖрдгрд┐ Wrapland рдЪрд╛ рд╡рд╛рдкрд░ KWin рдЖрдгрд┐ KWayland рдЕрдЦрдВрдбрдкрдгреЗ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ, рдкрд░рдВрддреБ рддреЗ рдЕрдиреЗрдХ рдЙрддреНрдкрд╛рджрдирд╛рдВрдЪреНрдпрд╛ KWin рд▓реЙрдХ-рдЗрдирджреНрд╡рд╛рд░реЗ рдорд░реНрдпрд╛рджрд┐рдд рдирд╛рд╣реАрдд рдЬреЗрдереЗ рдкреВрд░реНрдг рд╕реБрд╕рдВрдЧрддрддрд╛ рд░рд╛рдЦрдгреЗ рд╣реЗ рдкреНрд░рд╛рдзрд╛рдиреНрдп рдЖрд╣реЗ рдЬреЗ рдирд╛рд╡рд┐рдиреНрдпрд╛рд╕ рдкреБрдвреЗ рдЬрд╛рдгреНрдпрд╛рдкрд╛рд╕реВрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ.

KWinFT рд╕рд╣, рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рддрдВрддреНрд░рд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рд╕реНрдерд┐рд░рддрд╛ рд░рд╛рдЦреВрди рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╕рд╣ рдкреНрд░рдпреЛрдЧ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдореЛрдХрд│рд╛ рд╣рд╛рдд рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, KWinFT рдХреЛрдб рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рд╕рддрдд рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рднрд┐рдиреНрди рд▓рд┐рдВрдЯрд░реНрд╕ рд╡рд╛рдкрд░реВрди рдкрдбрддрд╛рд│рдгреА, рдЕрд╕реЗрдВрдмреНрд▓реАрдЪреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдирд┐рд░реНрдорд┐рддреА рдЖрдгрд┐ рдкреНрд░рдЧрдд рдЪрд╛рдЪрдгреА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯреАрдиреЗ, KWinFT рдЪреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддреЗрдЪреЗ рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╡рд░ рдЕрд╕реЗрд▓.
рд╡реЗрд▓рдБрдб, рдХреЗрд╡рд┐рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдкреБрдиреНрд╣рд╛ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╣ рдЬреЗ рд╡реЗрд▓рдБрдбрд╕рд╣ рдПрдХреАрдХрд░рдг рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдд рдХрд░рддрд╛рдд.

KWinFT рдордзреНрдпреЗ рдЖрдзреАрдЪ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдирд╡рдХрд▓реНрдкрдирд╛рдВрдкреИрдХреА рд╣реЗ рдЖрд╣реЗрдд:

  • рд╕рдВрдорд┐рд╢реНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреНрдпрд╛рдиреЗ X11 рдЖрдгрд┐ Wayland рд╡рд░ тАЛтАЛрдЪрд╛рд▓рдгрд╛рд▒реНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрдЪреНрдпрд╛ рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдгрд╛рдд рд▓рдХреНрд╖рдгреАрдп рд╕реБрдзрд╛рд░рдгрд╛ рдХреЗрд▓реА рдЖрд╣реЗ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд╕реНрдХреНрд░реАрдирд╡рд░ рддреНрдпрд╛рдЪреЗ рдкреНрд░рджрд░реНрд╢рди рдпрд╛рдордзреАрд▓ рд╡рд┐рд▓рдВрдм рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯрд╛рдЗрдорд░ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ.
  • рд╡реЗрд▓рдБрдб рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд╛рдЧреВ рдХреЗрд▓рд╛ "рджрд░реНрд╢рдХ", рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рд╕рд░реНрд╡реНрд╣рд░-рд╕рд╛рдЗрдб рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЖрдгрд┐ рдкреГрд╖реНрдарднрд╛рдЧрд╛рдЪреНрдпрд╛ рдХрдбрд╛ рдЯреНрд░рд┐рдо рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. XWayland рдЪреНрдпрд╛ рдкреБрдвреАрд▓ рдореЛрдареНрдпрд╛ рд░рд┐рд▓реАрдЭрд╕рд╣ рдПрдХрддреНрд░рд┐рдд, рд╡рд┐рд╕реНрддрд╛рд░ рдЬреБрдиреНрдпрд╛ рдЧреЗрдорд╕рд╛рдареА рд╕реНрдХреНрд░реАрди рд░рд┐рдЭреЛрд▓реНрдпреВрд╢рди рдмрджрд▓рд╛рдВрдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрд▓.
  • рд╡реЗрд▓рдБрдб-рдЖрдзрд╛рд░рд┐рдд рд╕рддреНрд░рд╛рдВрд╕рд╛рдареА рд░реЛрдЯреЗрдЯрд┐рдВрдЧ рдЖрдгрд┐ рдорд┐рд░рд░рд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯрд╕рд╛рдареА рдкреВрд░реНрдг рд╕рдорд░реНрдерди.

Wrapland рдПрдХ Qt-рд╢реИрд▓реАрдЪрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЛ рдЬреЛ C++ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реЛрдкреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд libwayland рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддреЛ. рд░реЕрдкрд▓рдБрдб рдореВрд│рддрдГ KWayland рдЪрд╛ рдПрдХ рдХрд╛рдЯрд╛ рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рд╣реЛрддреА, рдкрд░рдВрддреБ KWayland рдХреЛрдбрдЪреНрдпрд╛ рдЕрд╕рдорд╛рдзрд╛рдирдХрд╛рд░рдХ рд╕реНрдерд┐рддреАрдореБрд│реЗ, рдЖрддрд╛ KWayland рдЪреА рд╕рдВрдкреВрд░реНрдг рджреБрд░реБрд╕реНрддреА рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдХрд▓реНрдк рдореНрд╣рдгреВрди рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ. Wrapland рдЖрдгрд┐ KWayland рдордзреАрд▓ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪрд╛ рдлрд░рдХ рд╣рд╛ рдЖрд╣реЗ рдХреА рддреЗ рдпрд╛рдкреБрдвреЗ Qt рд▓рд╛ рдЬреЛрдбрд▓реЗрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ Qt рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рднрд╡рд┐рд╖реНрдпрд╛рдд, рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ libwayland C API рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рджреВрд░ рдХрд░реВрди, Wrapland рдЪрд╛ рд╡рд╛рдкрд░ C++ API рд╕рд╣ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рд▓рд╛рдпрдмреНрд░рд░реА рдореНрд╣рдгреВрди рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдорд╛рдВрдЬрд╛рд░реЛ рд▓рд┐рдирдХреНрд╕ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рддрдпрд╛рд░ рдкреЕрдХреЗрдЬ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗрдд. KWinFT рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдлрдХреНрдд рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди kwinft рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рдорд╛рдирдХ KWin рд╡рд░ рдкрд░рдд рдпреЗрдгреНрдпрд╛рд╕рд╛рдареА, kwin рдкреЕрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛. Wrapland рдЪрд╛ рд╡рд╛рдкрд░ KDE рдкреБрд░рддрд╛ рдорд░реНрдпрд╛рджрд┐рдд рдирд╛рд╣реА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓рд╛рдпрдВрдЯ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рддрдпрд╛рд░ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ wlroots рдЖрдЙрдЯрдкреБрдЯ рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, wlroots рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрдорд┐рд╢реНрд░ рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ (рд╕реНрд╡, рд╡реЗрдлрд╛рдпрд░) рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА KScreen рд╡рд╛рдкрд░рд╛.

рджрд░рдореНрдпрд╛рди, рд╕реБрд░реВ рдкреНрд░рдХрд▓реНрдк рдЕрджреНрдпрддрдиреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓ рдХреЗрд╡рд┐рди-рд▓реЛрд▓реЗрдЯрдиреНрд╕реА, рдЗрдВрдЯрд░рдлреЗрд╕рдЪреА рдкреНрд░рддрд┐рд╕рд╛рджрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдкреЕрдЪрд╕рд╣ KWin рд╕рдВрдорд┐рд╢реНрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рдЪреА рдЖрд╡реГрддреНрддреА рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдЪреНрдпрд╛ рдЧрддреАрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд╣реА рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреЗ, рдЬрд╕реЗ рдХреА рдЗрдирдкреБрдЯ рд╕реНрдЯрдЯрд░рд┐рдВрдЧ. DRM VBlank рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, KWin-lowlatency рдкреНрд░рддрд┐рд╕рд╛рджрдХреНрд╖рдорддреЗрд╡рд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рди рдХрд░рддрд╛ рдлрд╛рдбрдгреНрдпрд╛рдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА glXWaitVideoSync, glFinish рдХрд┐рдВрд╡рд╛ NVIDIA VSync рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЗ (KWin рдЪреЗ рдореВрд│ рдЭреАрдЬ рд╕рдВрд░рдХреНрд╖рдг рдЯрд╛рдпрдорд░ рд╡рд╛рдкрд░реВрди рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдореЛрдареНрдпрд╛ рд╡рд┐рд▓рдВрдм рд╣реЛрдК рд╢рдХрддреЗ (50ms рдкрд░реНрдпрдВрдд) рдЖрдгрд┐, рдкрд░рд┐рдгрд╛рдореА, рдЗрдирдкреБрдЯ рдХрд░рддрд╛рдирд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдд рд╡рд┐рд▓рдВрдм рд╣реЛрддреЛ). KDE Plasma 5.18 рдордзреАрд▓ рд╕реНрдЯреЙрдХ рдХрдВрдкреЛрдЭрд┐рдЯ рд╕рд░реНрд╡реНрд╣рд░рдРрд╡рдЬреА KWin-lowlatency рдЪреЗ рдирд╡реАрди рдкреНрд░рдХрд╛рд╢рди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛