جعبه ابزار گرافیکی GTK 4.14 با موتورهای جدید برای OpenGL و Vulkan در دسترس است

پس از هفت ماه توسعه، انتشار یک جعبه ابزار چند پلتفرمی برای ایجاد رابط کاربری گرافیکی منتشر شد - GTK 4.14.0. GTK 4 به عنوان بخشی از یک فرآیند توسعه جدید در حال توسعه است که تلاش می کند به توسعه دهندگان برنامه یک API پایدار و پشتیبانی شده برای چندین سال ارائه دهد که می تواند بدون ترس از بازنویسی برنامه ها هر شش ماه یک بار به دلیل تغییرات API در GTK بعدی استفاده شود. شاخه.

در آینده، برنامه ریزی شده است که یک شاخه آزمایشی 4.90 تشکیل شود که عملکردی را برای نسخه آینده GTK5 توسعه دهد. شاخه GTK5 شامل تغییراتی می شود که سازگاری در سطح API را نقض می کند، به عنوان مثال، مربوط به منسوخ شدن برخی ویجت ها، مانند گفتگوی قدیمی انتخاب فایل. امکان پایان دادن به پشتیبانی از پروتکل X5 در شاخه GTK11 و باقی ماندن قابلیت کار فقط با استفاده از پروتکل Wayland نیز مورد بحث قرار گرفته است.

از جمله قابل توجه ترین پیشرفت ها در GTK 4.14 عبارتند از:

  • این شامل موتورهای رندر یکپارچه جدید "ngl" و "vulkan" با استفاده از OpenGL (GL 3.3+ و GLES 3.0+) و APIهای گرافیکی Vulkan است. هر دو موتور بر اساس API Vulkan هستند، اما موتور "ngl" دارای یک لایه انتزاعی جداگانه برای OpenGL است که در بالای Vulkan اجرا می شود، با در نظر گرفتن تفاوت بین OpenGL و Vulkan. این رویکرد امکان استفاده از یک زیرساخت مشترک در هر دو موتور را برای پردازش نمودار صحنه، تبدیل‌ها، بافت‌های کش و گلیف‌ها فراهم کرد. Unification همچنین به طور قابل توجهی نگهداری از کد پایه هر دو موتور و به روز نگه داشتن آنها و همگام سازی آنها را ساده کرد.

    برخلاف موتور قدیمی gl که از یک سایه زن ساده جداگانه برای هر نوع گره رندر استفاده می کرد و به طور دوره ای داده ها را در حین رندر خارج از صفحه مرتب می کرد، موتورهای جدید به جای رندر خارج از صفحه از یک سایه زن پیچیده (ubershader) استفاده می کنند که داده ها را از بافر تفسیر می کند. . از جمله ویژگی های متمایز موتورهای جدید، صاف کردن کانتور (به شما امکان می دهد جزئیات ظریف را حفظ کنید و به ترسیم خطوط صاف تر برسید)، ایجاد شیب های دلخواه (از هر تعداد رنگ و ضد آلیاژ می توان استفاده کرد) و پوسته پوسته شدن کسری ذکر شده است.

  • موتور رندر جدید "ngl" به طور پیش فرض فعال است و پشتیبانی از API گرافیکی Vulkan نیز به طور پیش فرض فعال است. هنگام ساخت در پیکربندی پیش فرض، پشتیبانی از Vulkan 1.3 اکنون مورد نیاز است.
  • کتابخانه GSK (GTK Scene Kit) که امکان رندر صحنه های گرافیکی را از طریق OpenGL و Vulkan فراهم می کند، پیشرفت های قابل توجهی در زمینه رندر فونت، اشاره و استفاده از مقادیر غیرصحیح مقیاس هنگام نمایش متن ایجاد کرده است. هنگام اشاره کردن (هموارسازی طرح کلی حروف در طول شطرنجی برای افزایش وضوح در صفحه‌های با وضوح پایین)، موقعیت‌یابی زیرپیکسلی حروف اجرا می‌شود. کیفیت رندر فونت در مقادیر غیرصحیح (به عنوان مثال، 125٪) بهبود یافته است. پشتیبانی پیاده سازی شده برای بیرون راندن عناصر از حافظه پنهان برای گلیف ها و بافت ها. بهره وری بهبود یافته از حافظه نهان گلیف.
  • به عنوان بخشی از دور شدن از استفاده از کتابخانه قاهره به نفع رندر GPU، پشتیبانی از "Paths" برای ترسیم اشکال و مناطق با استفاده از دنباله ای از خطوط یا منحنی های Bezier مکعبی و درجه دوم اضافه شده است. برای ترسیم با مسیرها، یک شی GskPath که پارامترهای خطوط یا منحنی ها را تعریف می کند، و همچنین اشیاء GskPathBuilder برای ایجاد منحنی ها، GskPathPoint برای تعریف نقطه روی یک شکل و GskPathMeasure برای اندازه گیری هایی مانند طول مسیر وجود دارد.
    جعبه ابزار گرافیکی GTK 4.14 با موتورهای جدید برای OpenGL و Vulkan در دسترس است
  • کتابخانه GDK که لایه ای بین GTK و زیرسیستم گرافیکی فراهم می کند، پشتیبانی از مکانیزم DMA-BUF را گسترش داده است، که امکان استفاده از بافرهای سطح هسته با استفاده از یک توصیفگر را فراهم می کند، که این امکان را به جای کپی کردن داده های پیکسل می دهد. برای انتقال آنها بین زیرسیستم های هسته از طریق یک توصیفگر. در زمینه GTK، از DMA-BUF می توان برای به حداقل رساندن کپی کردن داده های پیکسلی در حین ترکیب و هنگام کار با ویدئو استفاده کرد (به عنوان مثال، ویدئو را می توان توسط یک رمزگشای سخت افزاری در dmabuf ضبط کرد، سپس به سطح Wayland متصل شد و به یک صفحه ارسال کرد. مدیریت ترکیب برای رابط کاربری و ترکیب خروجی روی صفحه بدون عملیات کپی غیر ضروری داده ها).

    یک ویجت GtkGraphicsOffload برای ارسال مستقیم محتوا مانند ویدیو به مدیر ترکیبی (با دور زدن رندر GSK) و یک کلاس GdkDmabufTextureBuilder برای ایجاد اشیاء GdkTexture از dmabuf برای ایجاد محتوا برای انتقال مستقیم اضافه شده است. Pipewire، video4linux یا gstreamer می توانند به عنوان منبعی برای dmabuf استفاده شوند. فرمت های dmabuf NV16، NV61، NV24، NV42 و YUV پشتیبانی می شوند.

  • کلاس GtkPrintDialog را اضافه کرد که برای تولید دیالوگ های چاپی و ارائه یک API ناهمزمان برای استفاده به جای GtkPrintOperation طراحی شده است.
  • ویجت GtkEmojiChooser داده های Emoji را به روز کرده و قابلیت جستجو به زبان های مختلف را با در نظر گرفتن مناطق مختلف اضافه کرده است.
  • ویجت GtkEntry ردیابی تغییرات ایجاد شده توسط کاربر (برای اجرای عملیات لغو) را بهبود بخشیده است.
  • در ویجت GtkFileChooser، باز کردن گفتگوی انتخاب فایل تسریع شده است.
  • کلاس GtkShortcutsWindow که نکات ابزار را برای میانبرهای صفحه کلید و حرکات نمایشگر نمایش می دهد، برای نمایشگرهای کوچک سازگار شده است.
  • حالت بازرسی (بازرس GTK) اطلاعات مربوط به OpenGL، زیرسطحی و FPS را نمایش می دهد.
  • دستور "مقایسه" را به ابزار gtk4-rendernode-tool اضافه کرد.
  • یک ابزار جدید، gtk4-path-tool، برای کار با مسیرها پیشنهاد شده است.
  • پشتیبانی از ضبط خودکار به ابزار gtk4-node-editor اضافه شده است.
  • مشکلی را که هنگام استفاده از Wayland در محیط‌های غیر مبتنی بر شل گنوم رخ داده بود، برطرف کرد.
  • اضافه شدن ویژگی های جدید برای افراد دارای معلولیت مربوط به نمایش متن های قالب بندی شده پیچیده، عملکرد WebKitGTK و نمایش اعلان ها. پشتیبانی بهبود یافته از مشخصات ARIA. رابط GtkAccessibleText برای استفاده از ویژگی‌های دسترسی در ویجت‌های متنی شخص ثالث اضافه شد. رابط GtkText از پروتکل AT-SPI برای تعامل با صفحه خوان ها پشتیبانی می کند.
  • اضافه شدن قابلیت رندر GPU با استفاده از WGL API در پلتفرم ویندوز.
  • کاهش مصرف حافظه هنگام بارگیری تم های مبتنی بر CSS.

منبع: opennet.ru

اضافه کردن نظر