3. Vivante BLTsville API Overview
Table of Contents
LEGAL NOTICES .................................................................................................................................. 2
TABLE OF CONTENTS .......................................................................................................................... 3
1 INTRODUCTION ..................................................................................................................... 4
2 OVERVIEW OF BLTSVILLE FEATURES ....................................................................................... 5
2.1 STANDARD FEATURES AND FUNCTIONS ......................................................................................................... 5
2.2 VIVANTE-SPECIFIC FEATURES AND OPTIMIZATIONS .......................................................................................... 5
3 DOCUMENT REVISION HISTORY.............................................................................................. 7
Page 3 of 7
Rev. 1.0 / May 2012
4. Vivante BLTsville API Overview
1 INTRODUCTION
BLTsville is an open-source application programming interface (API) developed and maintained by Texas
Instruments to support their OMAP applications processors. The implementation, code base, and
optimizations were developed around Vivante’s composition graphics processing unit (CGPU). There is a
software fallback mechanism for systems without a Vivante CGPU or partial acceleration of standard API
features using a GPU.
The momentum behind the development of BLTsville goes beyond creating an open source API to accelerate
the next generation of optimized 2D graphics. The Vivante CGPU created a new rendering paradigm that goes
beyond 2D and 3D graphics. The CGPU is a composition accelerator that merges, blends, and processes
different layers to “compose” for final viewing. Other than composition, 2D graphics is a subset of features
natively built into the CGPU. The processor can also perform 3D animation effects through multi-surface
blending.
Optimized API features for 2D and composition take full advantage of CGPU hardware. Features like BLT
batching and merging are used for super-efficient data transfers and processing. Multiple formats (YUV/RGB)
are supported to allow processing in native color formats and inputs from any source (video, image, webcam,
etc.). Programmable filters and user selectable dithering modes enable users to select the algorithm, quality,
and speed to create transitional or high quality images. These are only a few of the compelling API features.
New product implementations taking advantage of these functions will see significant performance gains and
quality in composition and 2D using BLTsville CGPU hardware.
Users can download the entire API source code (kernel/user mode drivers) for commercial use if they follow
the license terms and conditions set forth by BLTsville. The source code and API is licensed under the Creative
Commons Attribution-NoDerivs 3.0 Unported License which can be reviewed at
http://creativecommons.org/licenses/by-nd/3.0/.
Page 4 of 7
Rev. 1.0 / May 2012
5. Vivante BLTsville API Overview
2 Overview of BLTsville Features
Functions and features described in this section are derived from the main BLTsville webpage. For updated
information, access to the BLTsville Wiki page or FAQs, please visit the following link:
http://graphics.github.com/bltsville/.
This is a partial list of features and optimizations supported by the API. For additional details on the API,
feature set, implementation, or programming best practices, please refer to the BLTsville website. All
functions listed below are supported in Vivante GC cores.
2.1 Standard Features and Functions
• Bit BLT
o Includes stretch BLT (stretch/shrink)
o YUV alpha blending, color key and ROP2/3/4
o FilterBlit
• Line drawing
o ROP2/4
• Rectangle fill (fast shape fill), clear, and clipping
o One clipping rectangle for all primitives
o ROP 2/4
• Full featured Sprite Engine
o ROP2, ROP3 and ROP4 with full alpha blending and transparency
o Fill, move, copy, blend on a per-pixel and image level
o Enables animations, drag-and-drop, user drawn overlays, transitions, fancy icons, and others
• Transparency
o Monochrome mask, chroma key and pattern mask
o Overlays for layered menus, titles, control bars, widgets
o 256 levels of transparency
o Color blending/bleeding for effects like fading in/out
o Alpha blending including Java 2 Porter-Duff compositing blending rules
o Pre-defined Porter-Duff and DirectFB blending
o Extensible blends
• Monochrome expansion for text rendering (hardware accelerated bitmap text)
2.2 Vivante-Specific Features and Optimizations
• Multi-source composition and blending
o Optimized for bandwidth and minimal memory transactions
o Single-Pass, multi-surface composition/blending
o Multi-planar and non-planar YUV output
o Non-planar to planer YUV conversion output
o Enables features like alpha blended GUIs (3D effects), PiP/PoP, and multi-zone displays
• Programmable Filter Engine
o 1x1 to 9x9 filter kernels
o Up to 9-tap, 32-phase for image/video scaling beyond 1080p
o Supports Bicubic (smooth/sharp), bilinear, and nearest neighbor filtering
o Used for image previews, PiP, zoom/re-sizing, scaling
o Convolution effects for image blurring, softening/sharpening, mood effects, and others
o Image processing for special effects like mosaic, aging, silhouettes, and others
Page 5 of 7
Rev. 1.0 / May 2012
6. Vivante BLTsville API Overview
• Scalable screen size and resolution support
o Supports Quad HD (4Kx2K) and higher
o 32K x 32K coordinate system
• Rotation Support
o 90 / 180 / 270 / X-Flip / Y-Flip / Mirror Rotation / Source Rotation for all primitives
o Automatic horizontal and vertical screen scaling and adjustment
• Programmable format support (RGB, YUV, etc.) and conversions
o YUV-to-RGB color space conversion (BT.601 and BT.709)
o Engine can process and support all standard color formats
o Stretch/Shrink of composite image and video
o Extensive color format support:
- RGB/RGBA and swizzle formats (ex. BGR, ARGB, RGBA, ABGR, BGRA)
- YCbCr (YUV) – subsamples, packed, planar, and U/V Swap
- sRGB (RGB24)
• Support for stereoscopic 3D (3D video, games, and displays) content and displays
o Fast, scalable pixel processing engine to support high bandwidth stereo 3D
o Pixel interleaving on pixel/sub-pixel level
• High speed video scalar for clean, crisp and vivid screen details (expand/shrink)
• Batching processing
o BLT coalescing/merging into group that can be handled more efficiently by implementations
o Character BLTs
o Multi-layer blending
o ROP/Blend combination with specified ordering
o Delta BLTs
• Dithering
o Quality based choice
o Speed based choice
o Image type based choice
o Specific dither type choice
o Extensible dither type
• Zero and Low CPU Overhead
o Minimize CPU wait states
o Synchronous operations
o Asynchronous operation through DMA command stream
o CPU does not need to wait for 2D engine to complete execution before changing states or issuing
new commands (CPU can work on other system tasks instead of servicing GPU core)
o Command batching/grouping to minimize CPU utilization and increase throughput
o Improves system performance while running applications
o Improves system performance by increasing battery life
• Choice of scaling algorithm based on:
o Quality
o Speed
o Image type
o User defined
Page 6 of 7
Rev. 1.0 / May 2012
7. Vivante BLTsville API Overview
3 Document Revision History
Version Date Compatible product Notes
1.0 2012-05-17 CGPU Initial version for release
Page 7 of 7
Rev. 1.0 / May 2012