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

Dopo sette mesi di sviluppo, è stato rilasciato GTK 4.14.0, un toolkit multipiattaforma per la creazione di interfacce grafiche. GTK 4 si sviluppa all'interno di un nuovo processo di sviluppo che cerca di fornire agli sviluppatori un'API stabile e supportata per diversi anni, consentendo loro di utilizzarla senza temere di dover rifare le applicazioni ogni sei mesi a causa delle modifiche all'API in una nuova versione di GTK.

In futuro, è in programma di creare un ramo sperimentale 4.90, nel quale si svilupperà la funzionalità per il futuro rilascio di GTK5. Il ramo GTK5 includerà modifiche che rompono la compatibilità a livello di API, ad esempio, l'eliminazione di alcuni widget obsoleti, come la vecchia finestra di dialogo per la selezione dei file. Si discute anche la possibilità di interrompere il supporto per il protocollo X11 nel ramo GTK5, consentendo solo l'uso del protocollo Wayland.

Tra i miglioramenti più evidenti in GTK 4.14:

  • Sono stati introdotti 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 consentito di sfruttare un'infrastruttura comune in entrambi i motori per l'elaborazione del grafo della scena, delle trasformazioni, della memorizzazione nella cache delle texture e dei glifi. L'unificazione ha inoltre semplificato notevolmente la manutenzione del codice di base di entrambi i motori e il loro aggiornamento e mantenimento in uno stato attuale e sincronizzato.

    A differenza del vecchio motore «gl», in cui ogni tipo di nodo di rendering (rendernode) utilizzava un semplice shader separato e veniva eseguita una periodica riorganizzazione dei dati durante il rendering offscreen, nei nuovi motori viene utilizzato uno shader complesso (ubershader) che interpreta i dati dal buffer. Tra le caratteristiche distintive dei nuovi motori si menzionano l'antialiasing (che consente di preservare i dettagli più fini e di ottenere contorni più lisci), la generazione di gradienti arbitrarî (è possibile utilizzare qualsiasi numero di colori e sfumature) e la scala frazionaria.

  • Per impostazione predefinita, è attivato il nuovo motore di rendering «ngl» e, inoltre, è attivato per impostazione predefinita il supporto per l'API grafica Vulkan. Nella configurazione predefinita ora è richiesta la compatibilità con Vulkan 1.3.
  • Nella libreria GSK (GTK Scene Kit), che offre funzionalità per il rendering di scene grafiche tramite OpenGL e Vulkan, sono stati apportati significativi miglioramenti relativi al rendering dei caratteri, al hinting e all'uso di valori di scala non interi durante l'output del testo. Nel hinting (l'anti-aliasing del contorno del glifo durante la rasterizzazione per migliorare la nitidezza su schermi a bassa risoluzione) è stato implementato il posizionamento sub-pixel dei glifi. È stata migliorata la qualità del rendering dei caratteri quando si utilizzano valori di scala non interi (ad esempio, 125%). È stata implementata la gestione della rimozione degli elementi dalle cache per i glifi e le texture. È stata aumentata l'efficienza della memorizzazione nella cache dei glifi.
  • Nel contesto dell'abbandono 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 cubic e quadratiche di Bézier. Per il rendering tramite percorsi è stato proposto l'oggetto GskPath, che definisce i parametri delle linee o delle curve, oltre agli oggetti GskPathBuilder per la creazione delle curve, GskPathPoint per determinare un punto sulla figura 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, è stata ampliata la supporto per il meccanismo DMA-BUF, che consente di utilizzare buffer a livello kernel indirizzati tramite descrittori. Questo permette di trasferire i dati dei pixel tra i sottosistemi del kernel tramite descrittori, invece di copiarli. Nel contesto di GTK, DMA-BUF può essere utilizzato per minimizzare la copia dei dati dei pixel durante il processo di composizione e nella gestione video (ad esempio, un video può essere registrato da un decodificatore hardware in dmabuf, per poi essere allegato alla superficie Wayland e inviato al gestore di composizione per sovrapporre gli elementi dell'interfaccia e visualizzarli senza operazioni di copia dati superflue).

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

  • Aggiunta la classe GtkPrintDialog, progettata per creare dialoghi di output per la stampa e offre un'API asincrona da utilizzare al posto di GtkPrintOperation.
  • Nel widget GtkEmojiChooser sono stati aggiornati i dati Emoji e aggiunta la possibilità di ricerca in diverse lingue tenendo conto di varie localizzazioni.
  • Nel widget GtkEntry è migliorato il tracciamento delle modifiche effettuate dall'utente (per implementare l'operazione di annullamento).
  • Nel widget GtkFileChooser è stato accelerato l'apertura della finestra di selezione file.
  • La classe GtkShortcutsWindow, che mostra suggerimenti per le combinazioni di tasti e gesti su schermo, è stata adattata per schermi più piccoli.
  • In modalità di ispezione (GTK inspector) è fornita la visualizzazione delle informazioni su OpenGL, sotto superfici e FPS.
  • Aggiunta il comando «compare» all'utilità gtk4-rendernode-tool.
  • Proposta una nuova utilità gtk4-path-tool per lavorare con i percorsi.
  • Nell'utilità gtk4-node-editor è stato aggiunto il supporto per il salvataggio automatico.
  • Risolto un arresto anomalo che si verificava utilizzando Wayland in ambienti non basati su GNOME Shell.
  • Sono stati aggiunti nuovi strumenti per le persone con disabilità, relativi alla visualizzazione di testo formattato complesso, al funzionamento di WebKitGTK e alla visualizzazione di notifiche. È stato migliorato il supporto per le specifiche ARIA. È stata aggiunta l'interfaccia GtkAccessibleText per utilizzare le funzionalità di accessibilità nei widget di testo di terze parti. Nell'interfaccia GtkText è stato aggiunto il supporto per il protocollo AT-SPI per l'interazione con gli screen reader.
  • È stata aggiunta la possibilità di rendering con l'utilizzo della GPU, sfruttando l'API WGL sulla piattaforma Windows.
  • È stata ridotta l'utilizzo di memoria durante il caricamento dei temi basati su CSS.

Fonte: opennet.ru

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