# OpenVG

OpenVG (Open Vector Graphics) è una specifica che definisce una API studiata per velocizzare la grafica vettoriale 2D di sistemi portatili.
È stato progettata da un gruppo di lavoro composto da diverse aziende del settore per grafica vettoriale 2D con hardware accelerato. Il suo scopo principale sono i telefoni cellulari, i palmari, console come la PlayStation 3, ed altri prodotti dell'elettronica di consumo, per permettere di creare interfacce utente responsive, ottimizzando l'utilizzo di risorse. In particolare permette di accelerare sequenze Flash o SVG.
Il gruppo OpenVG fu creato il 6 luglio 2004 da una selezione tra le maggiori aziende del campo. La prima bozza delle specifiche fu rilasciata alla fine del 2004, mentre la versione 1.0 fu pubblicata il 1º agosto 2005.
Finora non vi è alcuna implementazione open source, ma il 16 gennaio 2007, Zack Rusin ha annunciato dal suo blog l'inizio di una implementazione open source di OpenVG poggiata su QtOpenGL. Il motivo maggiore per questa scelta è da cercarsi nelle presunte qualità e prestazioni di QtOpenGL.

## Storia

Il gruppo OpenVG è stato formato il 6 luglio 2004 da una selezione di importanti aziende tra cui 3Dlabs, Bitboys, Ericsson, Hybrid Graphics, Imagination Technologies, Motorola, Nokia, PalmSource, Symbian e Sun Microsystems. Altre aziende tra cui produttori di chip ATI, LG Electronics, Mitsubishi Electric, NVIDIA e Texas Instruments e fornitori di software e / o IP DMP, Esmertec, ETRI, Falanx Microsystems, Futuremark, HI Corporation, Ikivo , HUONE (ex MTIS), Superscape e Wow4M hanno partecipato al gruppo di lavoro. La prima bozza delle specifiche del gruppo è stata resa disponibile alla fine del 2004 e la versione 1.0 delle specifiche è stata rilasciata il 1º agosto 2005.
Il 16 gennaio 2007, Zack Rusin di Tungsten Graphics ha annunciato l'inizio di un'implementazione open source indipendente di OpenVG basata su QtOpenGL.
Poco dopo, Ivan Leben ha avviato un altro progetto open source per implementare un'implementazione ANSI C della specifica su OpenGL.
Dal 27 febbraio 2007 l'implementazione di riferimento di esempio OpenVG è disponibile sul sito Web Khronos con licenza open source MIT.
Il 9 dicembre 2008, il gruppo Khronos ha rilasciato pubblicamente la specifica OpenVG 1.1. Questa ultima revisione include il rendering dei glifi per il testo accelerato, l'anti-aliasing migliorato e il supporto Flash. Viene inoltre fornita un'implementazione di riferimento aggiornata, nonché una suite di test di conformità.
Il 1º maggio 2009 Rusin ha aggiunto il tracker di stato OpenVG a Mesa, che consente alla grafica vettoriale SVG di essere accelerata hardware da qualsiasi driver basato su Gallium3D. È stato rimosso di nuovo in Mesa 10.6 il 15 giugno 2015.
Nel settembre 2011 il gruppo di lavoro OpenVG ha deciso di non organizzare riunioni regolari per un'ulteriore standardizzazione. Tuttavia, il gruppo di lavoro ha deciso di continuare la manutenzione e la promozione della specifica OpenVG 1.1.

## Implementazioni
### Nell'hardware

* Soluzione SH7269 basata su Renesas SuperH SH2A. Sviluppato per GUI incorporate a basso costo di sistema, con un massimo di 2,5 MB di SRAM incorporata per il buffer delle immagini.
* Core grafico AMD / ATI Z160 e Z180 OpenVG 1.x. Implementato in Freescale i.MX35, i.MX51 e i.MX53. IP venduto a Qualcomm e rinominato "Adreno" per i core Snapdragon.
* Unità di elaborazione grafica ARM Mali
* SoC Broadcom BCM4760 - Annunciato il 1º giugno 2009. BCM4760 Contiene "un processore grafico compatibile con OpenGL (R) ES 1.1 / OpenVG (TM) 1.0"
* Digital Media Professionals Inc. (DMP Inc.) SMAPH-F (dandelion VG)
* Imagination PowerVR VGX150 OpenVG 1.1
* Imagination PowerVR SGX Series5 - Il supporto API include OpenGL ES 1.1 / 2.0, OpenVG 1.1, OpenGL 2.0 / 3.0 e DirectX9 / 10.1
* Takumi GV500 - GV300, acceleratore grafico GV500 IP-Core
* Think Silicon ThinkVG Graphics Core OpenVG 1.1
* Vivante GC350 (core grafico 2D) OpenVG 1.1
* Vivante GC400 e versioni successive sono core grafici 3D che supportano OpenGL ES 2.0 e OpenVG 1.1
* Le GPU Adreno supportano OpenVG 1.1. Qualcomm fornisce un SDK per Android.

### Per GPU

* Mesa Gallium3D - VMware / Tungsten Graphics fornisce implementazioni OpenVG per schede con driver Gallium (sono disponibili driver Gallio per nVidia, AMD / ATI e VMware). OpenVG è stato rimosso da Mesa nella versione 10.6.

### Per gli acceleratori multimediali

* HuOne AlexVG-forma: accelerazione dell'API di grafica vettoriale su hardware di accelerazione multimediale. Utilizzo della potenza di hardware multimediale o grafica bitmap 2D.

### Su OpenGL, OpenGL ES

* Hooked Wireless OpenVG: implementazione completa di OpenVG 1.01 e OpenVG 1.1, implementata su OpenGL ES ed è completamente conforme. Lo slogan è "Sfrutta la tecnologia proprietaria di Hooked nelle aree di tassellatura e triangolazione per forme e curve". Rilasciato per la prima volta nel febbraio 2008.
* HuOne AlexVG-forge - Un motore OpenVG che è uno standard grafico vettoriale 2D utilizzando il chip grafico che supporta OpenGL / OpenGL ES.
* Mazatech AmanithVG GLE - commerciale. Basato su OpenGL 1.1+ e OpenGL ES 1.x. Lo slogan è "Ottieni prestazioni migliori rispetto ai rasterizzatori software in termini di animazioni ad alta risoluzione ed effetti speciali complessi (trasparenze, dissolvenza, rotoscaling in tempo reale e molti altri)".
* MonkVG - open source (BSD), solo "OpenVG like"
* ShivaVG - open source (LGPL)

### Nel software

* Implementazione di riferimento di Khronos OpenVG
* HuOne AlexVG - Rilasciato per la prima volta nel settembre 2005
* Mazatech AmanithVG - Libreria multipiattaforma OpenVG con software puro e backend di rendering OpenGL (/ ES 1.1)
* Vega - Gallium3D state tracker
* GingkoVG