. AmanithVG features
_ __ ___Features___ __ _
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
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 ****
* 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.