Selepas tujuh bulan pembangunan, keluaran kit alat berbilang platform untuk mencipta antara muka pengguna grafik telah diterbitkan - GTK 4.14.0. GTK 4 sedang dibangunkan sebagai sebahagian daripada proses pembangunan baharu yang cuba menyediakan pembangun aplikasi dengan API yang stabil dan disokong selama beberapa tahun yang boleh digunakan tanpa rasa takut perlu menulis semula aplikasi setiap enam bulan disebabkan perubahan API dalam GTK seterusnya cawangan.
Pada masa hadapan, ia dirancang untuk membentuk cawangan percubaan 4.90, yang akan membangunkan fungsi untuk keluaran masa depan GTK5. Cawangan GTK5 akan menyertakan perubahan yang melanggar keserasian pada peringkat API, contohnya, berkaitan dengan penamatan beberapa widget, seperti dialog pemilihan fail lama. Kemungkinan menamatkan sokongan untuk protokol X5 di cawangan GTK11 dan meninggalkan keupayaan untuk berfungsi hanya menggunakan protokol Wayland juga sedang dibincangkan.
Beberapa penambahbaikan yang paling ketara dalam GTK 4.14 termasuk:
- Ia termasuk enjin pemaparan bersatu baharu "ngl" dan "vulkan" menggunakan OpenGL (GL 3.3+ dan GLES 3.0+) dan API grafik Vulkan. Kedua-dua enjin adalah berdasarkan API Vulkan, tetapi enjin "ngl" mempunyai lapisan abstraksi yang berasingan untuk OpenGL yang berjalan di atas Vulkan, dengan mengambil kira perbezaan antara OpenGL dan Vulkan. Pendekatan ini memungkinkan untuk menggunakan infrastruktur biasa dalam kedua-dua enjin untuk memproses graf pemandangan, transformasi, tekstur caching dan glif. Penyatuan juga memudahkan penyelenggaraan asas kod kedua-dua enjin dan memastikannya dikemas kini dan disegerakkan.
Tidak seperti enjin gl lama, yang menggunakan shader ringkas yang berasingan untuk setiap jenis nod pemaparan dan mengisih semula data secara berkala semasa pemaparan luar skrin, enjin baharu dan bukannya pemaparan luar skrin menggunakan shader kompleks (ubershader) yang mentafsir data daripada penimbal . Antara ciri tersendiri enjin baharu, pelicinan kontur disebut (membolehkan anda mengekalkan butiran halus dan mencapai lukisan kontur yang lebih licin), pembentukan kecerunan sewenang-wenang (sebarang bilangan warna dan anti-aliasing boleh digunakan) dan penskalaan pecahan.
- Enjin pemaparan "ngl" baharu didayakan secara lalai dan sokongan untuk API grafik Vulkan juga didayakan secara lalai. Apabila membina dalam konfigurasi lalai, sokongan Vulkan 1.3 kini diperlukan.
- Pustaka GSK (GTK Scene Kit), yang menyediakan keupayaan untuk memaparkan pemandangan grafik melalui OpenGL dan Vulkan, telah membuat peningkatan yang ketara berkaitan dengan pemaparan fon, pembayang dan penggunaan nilai skala bukan integer apabila memaparkan teks. Apabila membayangkan (melicinkan garis besar glif semasa rasterisasi untuk meningkatkan kejelasan pada skrin resolusi rendah), kedudukan subpiksel glif dilaksanakan. Kualiti pemaparan fon telah dipertingkatkan pada nilai skala bukan integer (contohnya, 125%). Sokongan yang dilaksanakan untuk pengusiran elemen daripada cache untuk glif dan tekstur. Kecekapan caching glif dipertingkat.
- Sebagai sebahagian daripada peralihan daripada menggunakan perpustakaan Kaherah yang memihak kepada pemaparan GPU, sokongan untuk "Laluan" telah ditambahkan untuk melukis bentuk dan kawasan menggunakan jujukan garisan atau lengkung Bezier padu dan kuadratik. Untuk melukis dengan laluan, terdapat objek GskPath yang mentakrifkan parameter garisan atau lengkung, serta objek GskPathBuilder untuk mencipta lengkung, GskPathPoint untuk menentukan titik pada bentuk dan GskPathMeasure untuk mengambil ukuran seperti panjang laluan.

- Pustaka GDK, yang menyediakan lapisan antara GTK dan subsistem grafik, telah memperluaskan sokongan untuk mekanisme DMA-BUF, yang membenarkan penggunaan penimbal peringkat kernel yang ditangani menggunakan deskriptor, yang membolehkannya, bukannya menyalin data piksel, untuk memindahkannya antara subsistem kernel melalui deskriptor. Dalam konteks GTK, DMA-BUF boleh digunakan untuk meminimumkan penyalinan data piksel semasa penggubahan dan semasa bekerja dengan video (contohnya, video boleh dirakam oleh penyahkod perkakasan dalam dmabuf, kemudian dilampirkan pada permukaan Wayland dan dihantar ke pengurus penggubahan untuk UI dan penggubahan output ke skrin tanpa operasi penyalinan data yang tidak perlu).
Widget GtkGraphicsOffload telah ditambahkan untuk menghantar terus kandungan seperti video kepada pengurus komposit (memintas pemaparan GSK), dan kelas GdkDmabufTextureBuilder telah ditambahkan untuk mencipta objek GdkTexture daripada dmabuf untuk mencipta kandungan untuk pemindahan terus. Pipewire, video4linux atau gstreamer boleh digunakan sebagai sumber untuk dmabuf. dmabuf NV16, NV61, NV24, NV42 dan format YUV disokong.
- Menambahkan kelas GtkPrintDialog, direka untuk menjana dialog cetakan dan menawarkan API tak segerak untuk digunakan dan bukannya GtkPrintOperation.
- Widget GtkEmojiChooser telah mengemas kini data Emoji dan menambahkan keupayaan untuk mencari dalam bahasa yang berbeza, dengan mengambil kira tempat yang berbeza.
- Widget GtkEntry telah menambah baik penjejakan perubahan yang dibuat oleh pengguna (untuk melaksanakan operasi buat asal).
- Dalam widget GtkFileChooser, pembukaan dialog pemilihan fail telah dipercepatkan.
- Kelas GtkShortcutsWindow, yang memaparkan petua alat untuk pintasan papan kekunci dan gerak isyarat skrin, disesuaikan untuk skrin kecil.
- Mod pemeriksaan (pemeriksa GTK) menyediakan paparan maklumat tentang OpenGL, subpermukaan dan FPS.
- Menambahkan arahan "bandingkan" pada utiliti alat gtk4-rendernode.
- Utiliti baharu, gtk4-path-tool, telah dicadangkan untuk bekerja dengan laluan.
- Sokongan rakaman automatik telah ditambahkan pada utiliti gtk4-node-editor.
- Memperbaiki ranap sistem yang berlaku apabila menggunakan Wayland dalam persekitaran berasaskan Shell bukan GNOME.
- Menambahkan ciri baharu untuk orang kurang upaya yang berkaitan dengan paparan teks berformat kompleks, pengendalian WebKitGTK dan paparan pemberitahuan. Sokongan yang lebih baik untuk spesifikasi ARIA. Menambahkan antara muka GtkAccessibleText untuk menggunakan ciri kebolehaksesan dalam widget teks pihak ketiga. Antara muka GtkText telah menambah sokongan untuk protokol AT-SPI untuk berinteraksi dengan pembaca skrin.
- Menambah keupayaan untuk membuat render menggunakan GPU menggunakan API WGL pada platform Windows.
- Mengurangkan penggunaan memori apabila memuatkan tema berasaskan CSS.
Sumber: opennet.ru

