1. Introduction
Quality and correctness are guarenteed by our internal
massive testsuite developed to deeply test every single feature and all possible degenerations; to compare the results, the
OpenVG 1.1 reference implementation and the OpenVG 1.0.1 reference
implementation, have been used.
AmanithVG testsuite results (for OpenVG 1.1), as well as test sources, are available at:
2. Feature set
AmanithVG SRE and AmanithVG GLE implement the whole OpenVG 1.0.1 and OpenVG 1.1 features, without limitations; while for pure software
rendering solutions this is quite common, for solutions that relay on top of OpenGL ES 1.x+ this is an hard task.
AmanithVG GLE is one of the few OpenVG engines that accomplishes this task using 2 texture units and one auxiliary buffer
(depth or stencil) only, using few software fallbacks where specific GL extensions aren't available and just to realize a couple of
features.
OpenVG feature |
AmanithVG SRE |
AmanithVG GLE |
Scissoring |
CPU |
GPU |
Clearing |
CPU |
GPU |
Alpha Masking |
CPU |
GPU |
Matrices transformations |
CPU |
GPU |
Paths |
CPU |
GPU |
Fill stroke (solid, dashed) |
CPU |
GPU |
Fill rule |
CPU |
CPU |
Paints (color, gradient, pattern) |
CPU |
GPU |
Color ramp spread modes |
CPU |
GPU |
Pattern tiling modes |
CPU |
GPU |
Images |
CPU |
GPU |
Image modes (normal, multiply, stencil) |
CPU |
GPU |
Image quality |
CPU |
GPU |
Filters |
CPU |
CPU |
Rendering quality |
CPU |
GPU * |
Blend modes |
CPU |
GPU ** |
Color transform |
CPU |
GPU *** |
Font text |
CPU |
GPU |
Color spaces |
CPU **** |
GPU **** |
Vgu |
CPU |
CPU |
* antialiasing relays on GL multisampling.
** darken lighten without GL_EXT_blend_minmax are realized using CPU.
*** color transform on images in multiply mode, when bias != 0, are realized using CPU.
**** except unpremultiplied drawing surfaces format.
|
3. OpenGL and OpenGL ES extensions
To improve performance and reduce memory usage AmanithVG GLE attempts to use the following extensions:
- GL_EXT_texture_rectangle
- GL_ARB_texture_mirrored_repeat
- GL_ARB_texture_border_clamp
- GL_EXT_blend_minmax
- GL_EXT_texture_env_dot3
- GL_ARB_vertex_buffer_object
4. Egl 1.x
AmanithVG doesn't depend on, nor include an EGL implementation. In order to supply some minimal EGL functionalities, some additional
proprietary calls have been added (to the API) to accomplish the following tasks:
- vgInitContextAM to bind OpenVG API and initialize the context specifying rendering surface parameters.
- vgDestroyContextAM to unbind OpenVG API and destroy the context.
- vgResizeSurfaceAM to update the context when rendering surface is going to be resized.
- vgGetSurfaceWidthAM to retrieve the width (in pixels) of the rendering surface.
- vgGetSurfaceHeightAM to retrieve the height (in pixels) of the rendering surface.
- vgGetSurfaceFormatAM to retrieve the pixel format of the rendering surface.
- vgGetSurfacePixelsAM to get the direct access to the drawing surface pixels (AmanithVG SRE).
No other EGL functionalities such as, but not limited to, "binding OpenVG images as rendering surfaces", "open more than one rendering
context at the same time" are provided.
An Egl 1.x implementation with OpenVG support can be realized in association with hardware manufacturers and/or operating systems suppliers, at
two different integration level: an higher one, when the native EGL source are not available, and a lower one in the other situation.
In the first case it will be developed an EGL wrapper upon the already existing implementaion, in the second case it will be provided a
new fully integrated EGL implementation.
AmanithVG is a trademark of Mazatech S.r.l.
Khronos and OpenVG are trademarks of The Khronos Group, Inc.
OpenGL is a registered trademark and OpenGL|ES is a trademark of Silicon Graphics, Inc.
SVG is a trademark of the World Wide Web Consortium.
PostScript, PDF and Flash are registered trademark of Adobe Systems, Inc.
Java is a registered trademark of Sun Microsystems, Inc.
All other trademarks, icons, and logos, shown or mentioned in this site, are property of their respective owners.