Writing and optimizing code for heterogeneous computing can be difficult, especially if you are starting from scratch.

Imagination has set up a new page where developers can access the source code for an example camera and video post-processing application that leverages the PowerVR Imaging Framework to implement efficient zero-copy flows for a range of image processing kernels. To download the PowerVR Imaging Framework SDK and examples, visit our dedicated GPU compute landing page, register your interest and sign a click-through NDA.

Because the framework requires low-level integration within Android, it is not generally available across all platforms in the market. Applications built using the PowerVR Imaging Framework are therefore not suitable for general release, for example in the Google Play store. Instead, the framework is intended to be used in a number of specific ways, outlined below:

  • By silicon vendors that license PowerVR multimedia IP for their hardware designs. Vendors can enable the imaging framework in the Android BSPs they deliver to their customers (OEMs).
  • By OEMs that design their products using PowerVR-based SoCs. OEMs can utilize the PowerVR Imaging Framework to develop applications that efficiently leverage all available SoC, which can be pre-packaged with the product.
  • By third-party software companies working within Imagination’s software ecosystem, for example as a lead partner to a silicon vendor or OEM. Software companies can use our SDK with any supported reference platform available in the market to prototype new computational photography and computer vision algorithms on a PowerVR Rogue GPU.

The PowerVR Imaging Framework has been used extensively by silicon vendors and OEMs to improve their Android camera applications. The Android Camera HAL includes a number of optional features, which silicon vendors may selectively enable depending on the capabilities of their ISP hardware. Some partners have used the imaging framework to implement some of these optional features using GPU compute, including image de-noising, face detection, video stabilization and HDR (high dynamic range), overcoming limitations with their ISP hardware feature set.

25-Integrating zero-copy flow with Android Camera HAL

OEMs have used the framework to process data from new types of image sensor, such as stereo sensors which require disparity to be computed to determine depth, and to implement differentiated features that are not available in the stock Android camera such as beautification and augmented reality.

In the TV market, OEMs have used the framework to implemented software codecs that are not yet supported in hardware such as HEVC and VP9, using GPU compute to accelerate vector computations found in tasks such as motion compensation and de-blocking filters.

In the automotive market, Tier 1 module makers have used the framework as the foundation of their computer vision software subsystems, for example to implement use cases such as lane departure warning and pedestrian detection, accelerating related workloads such as edge detection and histogram-of-gradients (HoG) calculation.PowerVR imaging framework - ADAS demo

Partners are also deploying the framework in emerging markets such as smart security cameras, and retail analytics systems that track people in stores to determine demographic information (age, gender and ethnicity, for example) and dwell time.

The PowerVR Imaging Framework and SDK are now supported on a range of platforms available to purchase in the market including development boards and end-user products such as mobile phones and tablets. Imagination maintains a list of supported platforms online, complete with corresponding quick start guides and SDK source code.

To download our PowerVR Imaging Framework SDK, please visit http://www.imgtec.com/gpucompute

Developers can use the SDK as a starting point by substituting Imagination-supplied example kernels with their own source code. To ensure high performance, this code should be optimized based on the existing programming guidelines downloadable from our webpage. Once an initial implementation has been developed and tested, its performance can be profiled based on the useful metrics presented there.

Finally, the guidelines also offer several advanced suggestions to maximize performance.

In my next article, I will be using the PowerVR Imaging Framework to showcase snippets of OpenCL kernels written for PowerVR Rogue GPUs.

Further reading

Here is a menu to help you navigate through every article published in this heterogeneous compute series:

 

Please let us know if you have any feedback on the materials published on the blog and leave a comment on what you’d like to see next. Make sure you also follow us on Twitter (@ImaginationPR, @GPUCompute and @PowerVRInsider) for more news and announcements from Imagination.

About the author: Salvatore

Profile photo of Salvatore

Salvatore De Dominicis is a Leading Technical Specialist on OpenCL and GPU compute. Salvatore joined Imagination in 2013 and has more than eight years of combined experience in the industry, including various roles at STMicroelectronics. He brings to Imagination extensive experience in supporting customers and helping them create cutting-edge products in the market on a variety of operating systems (Linux, Android) and computing architectures (MIPS, Intel, ARM). Salvatore holds a MSC. in Computer Engineering from Politecnico di Milano.

View all posts by Salvatore