È disponibile il toolkit grafico GTK 4.14 con nuovi motori per OpenGL e Vulkan

Dopo sette mesi di sviluppo, è stata pubblicata la versione del toolkit multipiattaforma per la creazione di interfacce grafiche utente — GTK 4.14.0. GTK 4 si sviluppa all'interno di un nuovo processo di sviluppo che cerca di fornire agli sviluppatori di applicazioni un'API stabile e supportata per diversi anni, utilizzabile senza il timore di dover rifare le applicazioni ogni sei mesi a causa di modifiche all'API in una nuova versione di GTK.

In futuro, è previsto di formare un ramo sperimentale 4.90, nel quale saranno sviluppate funzionalità per la futura versione GTK5. Nel ramo GTK5 saranno inclusi cambiamenti che interrompono la compatibilità a livello di API, ad esempio, relativi alla deprecazione di alcuni widget, come il vecchio dialogo di selezione dei file. Si discute anche la possibilità di interrompere il supporto del protocollo X11 nel ramo GTK5 e mantenere la possibilità di lavorare solo con il protocollo Wayland.

Tra i miglioramenti più significativi in GTK 4.14:

  • Sono stati inclusi nuovi motori di rendering unificati 'ngl' e 'vulkan', che utilizzano le API grafiche OpenGL (GL 3.3+ e GLES 3.0+) e Vulkan. Entrambi i motori si basano sull'API Vulkan, ma nel motore 'ngl' per OpenGL è stato creato un livello di astrazione separato che funziona sopra Vulkan tenendo conto delle differenze tra OpenGL e Vulkan. Questo approccio ha permesso di utilizzare un'infrastruttura comune in entrambi i motori per la gestione del grafo di scena, delle trasformazioni, e per la memorizzazione nella cache delle texture e dei glifi. L'unificazione ha anche semplificato notevolmente la manutenzione del codice di entrambi i motori e il loro mantenimento in uno stato attuale e sincronizzato.

    A differenza del vecchio motore 'gl', nel quale per ogni tipo di nodo di rendering veniva utilizzato un semplice shader separato e si effettuava una periodica riorganizzazione dei dati durante il rendering offscreen, nei nuovi motori invece del rendering offscreen viene utilizzato uno shader complesso (ubershader), che interpreta i dati dal buffer. Tra le capacità distintive dei nuovi motori si menzionano l'anti-aliasing (che consente di conservare i dettagli fini e ottenere contorni più lisci), la formazione di gradienti arbitrari (è possibile utilizzare qualsiasi numero di colori e sfumature) e lo scaling frazionale.

  • Il nuovo motore di rendering "ngl" è attivato di default, ed è abilitato di default anche il supporto per l'API grafica Vulkan. Nella build con configurazione predefinita ora è richiesto il supporto per Vulkan 1.3.
  • Sono stati apportati significativi miglioramenti alla libreria GSK (GTK Scene Kit), che fornisce funzionalità di rendering di scene grafiche tramite OpenGL e Vulkan, in relazione al rendering dei caratteri, all'hinting e all'uso di valori di scala non interi durante l'output del testo. Per l'hinting (il miglioramento della nitidezza del contorno dei glifi durante la rasterizzazione per aumentare la chiarezza su schermi a bassa risoluzione) è stato implementato il posizionamento subpixel dei glifi. È stata migliorata la qualità del rendering dei caratteri con valori di scala non interi (ad esempio, 125%). È stata implementata la supporto per l'espulsione degli elementi dalla cache per glifi e texture. È stata aumentata l'efficienza della cache per i glifi.
  • Nell'ambito del lavoro per abbandonare l'uso della libreria Cairo a favore del rendering tramite GPU, è stato aggiunto il supporto per i "percorsi" (Path) per il rendering di forme e aree, utilizzando una sequenza di linee o curve cubiche e quadratiche di Bézier. Per il rendering tramite percorsi è stato proposto un oggetto GskPath, che definisce i parametri delle linee o delle curve, così come gli oggetti GskPathBuilder per creare curve, GskPathPoint per definire un punto sulla forma e GskPathMeasure per eseguire misurazioni, come la lunghezza del contorno.
    È disponibile il toolkit grafico GTK 4.14 con nuovi motori per OpenGL e Vulkan
  • Nella libreria GDK, che fornisce uno strato tra GTK e il sottosistema grafico, è stato ampliato il supporto per il meccanismo DMA-BUF, che consente l'utilizzo di buffer a livello di kernel, indirizzati tramite descrittore. Questo permette di trasferire i dati dei pixel tra i sottosistemi del kernel tramite descrittore, invece di copiarli. Nel contesto di GTK, il DMA-BUF può essere utilizzato per minimizzare la copia dei dati pixel durante il processo di compositing e nella gestione dei video (ad esempio, un video può essere registrato da un decoder hardware in dmabuf, successivamente attaccato a una superficie Wayland e inviato al gestore di composizione per sovrapporre gli elementi dell'interfaccia e visualizzarli senza operazioni inutili di copia dei dati).

    Per l'invio diretto di contenuti come video al gestore dei componenti (saltando il rendering GSK) è stato aggiunto il widget GtkGraphicsOffload, mentre per la creazione di contenuti per una trasmissione diretta è stata aggiunta la classe GdkDmabufTextureBuilder, che crea oggetti GdkTexture da dmabuf. Come sorgente per dmabuf possono essere utilizzati pipewire, video4linux o gstreamer. I formati dmabuf supportati sono NV16, NV61, NV24, NV42 e YUV.

  • È stata aggiunta la classe GtkPrintDialog, progettata per creare dialoghi di stampa e offre un'API asincrona da utilizzare invece di GtkPrintOperation.
  • Nel widget GtkEmojiChooser sono stati aggiornati i dati degli emoji e aggiunta la funzionalità di ricerca in diverse lingue tenendo conto di vari locale.
  • Nel widget GtkEntry è stato migliorato il monitoraggio delle modifiche apportate dall'utente (per implementare l'operazione di annullamento).
  • Nel widget GtkFileChooser è stata accelerata l'apertura del dialogo di selezione dei file.
  • La classe GtkShortcutsWindow, che mostra suggerimenti su combinazioni di tasti e gesti sullo schermo, è stata adattata per schermi di piccole dimensioni.
  • Nella modalità di ispezione (GTK inspector) è stata fornita la visualizzazione delle informazioni su OpenGL, sottostrutture e FPS.
  • È stato aggiunto il comando 'compare' all'utility gtk4-rendernode-tool.
  • È stata proposta una nuova utility gtk4-path-tool per lavorare con percorsi.
  • Nell'utility gtk4-node-editor è stato aggiunto il supporto per il salvataggio automatico.
  • È stato risolto un arresto anomalo che si verificava utilizzando Wayland in ambienti non basati su GNOME Shell.
  • Sono stati aggiunti nuovi strumenti per persone con disabilità legate alla visualizzazione di testo formattato complesso, all'uso di WebKitGTK e alla gestione delle notifiche. È stato migliorato il supporto per le specifiche ARIA. È stata aggiunta l'interfaccia GtkAccessibleText per sfruttare le funzionalità di accessibilità in widget di testo di terze parti. Nell'interfaccia GtkText è stato aggiunto il supporto per il protocollo AT-SPI per l'interazione con i lettori di schermo.
  • È stata aggiunta la possibilità di rendering con GPU, utilizzando l'API WGL sulla piattaforma Windows.
  • È stato ridotto il consumo di memoria durante il caricamento dei temi basati su CSS.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster