What is Adreno SDK?
Adreno SDK is a collection of samples, demos, tools, and documentation to help you maximize use of the Adreno GPU.
What are the system requirements for Adreno SDK?
A PC running Windows 7 or Windows 8, Ubuntu 12.04+, or OS X with an Adreno 2xx, 3xx, or 4xx GPU device. For OpenGL ES emulation, your PC must support OpenGL 3.3 or greater for OpenGL ES 3.0 applications, or OpenGL 4.4 for OpenGL ES 3.1 and AEP applications.
To build the Adreno SDK samples for Android you will need recent versions of the Android SDK and Android NDK. If you would like to build them for Windows desktop, you’ll need Visual Studio 2012+.
Does Adreno SDK also work devices that do not have a Snapdragon® processor?
Adreno SDK is created for open cross platform APIs, thus most of the samples may work on devices that are not powered by Snapdragon processors, but the SDK samples are intended to demonstrate optimized graphics techniques on Adreno GPUs and will perform best with devices powered by Snapdragon processors.
What is included in the Adreno SDK for OpenCL?
This SDK includes documentation for Qualcomm Technologies’ extensions to OpenCL, header files and usage examples for both core OpenCL features and extensions. The usage examples include:
- Image conversions between various formats including planar and compressed formats
- Accelerated image operations like convolutions, SAD, SSD and box filters using built-in extension functions
- Efficient convolutions, matrix multiplications, fft and other linear algebra examples
- Variety of kernels using vector read and write operations for given image formats
Setup and Installation
What is the installation procedure for Adreno SDK?
Run the installer executable on your host PC. The installer will walk you through the required steps. We recommend running the installer with administrator privileges.
Once installed, use the Adreno SDK Browser to access the SDK’s samples, documentation, and tools.
What types of samples does the Adreno SDK provide?
The Adreno SDK includes samples for OpenGL ES, DirectX, and Vulkan™. A wide range of samples and demos are provided for both beginners and experienced developers.
What tools are provided in the Adreno SDK?
The Adreno SDK includes a number of small utilities you may find useful in your development. It also includes an OpenGL ES emulator, which you can use to develop OpenGL ES applications on the desktop before porting to an Android device.
A Texture Tools package is also in the SDK and includes a Texture Converter library and the Adreno Texture Tool. The Texture Converter library allows you to convert to and from compressed texture formats. The Adreno Texture Tools enables you to do the same conversion through a GUI.
A comprehensive list of all the tools and libraries included in Adreno SDK:
- Build - desktop build configurations for all tools
- Emulator - OpenGL ES emulator
- FbxModelConverter - converts FBX to a mesh model format used by the sample framework
- FontMaker - converts TrueType font to a font format used by the sample framework
- GLESExtLib - OpenGL ES 3 extension library
- MeshConverter - converts .obj to .mesh for use in the sample framework
- PC2Android - utility that allows one to use the PC to send input commands to a connected Android device
- QCompress - Adreno Texture Tool
- ResourcePacker - given assets as input, creates pak files of assets
- ShaderPreprocessor - used in sample and demo asset pipeline to parse shaders
- TextureConverter - texture conversion library
Can the Adreno SDK help me optimize my game?
The Adreno SDK is meant to guide you in developing your application for Adreno GPUs. Documentation in the Adreno SDK, such as the Adreno Developer Guide, will help you understand best practices for working with the Adreno GPU. For profiling, please refer to the Adreno Profiler.
Why do I get an error when trying to build samples for Android?
The Adreno SDK samples use ‘ndk-build’ to build for Android. Please ensure the Android platform tools are in your system path.
Why do I get an error when trying to run Vulkan samples on my commercial Android device?
Our Vulkan samples require a Vulkan driver and supported Android hardware. Currently only Snapdragon 820 MDPs from Intrinsyc are supported.
What is new in the Adreno SDK for OpenCL v1.4.1?
The OpenCL SDK version 1.4.1 contains samples for various new extensions as well as for the usage of dmabuf which replaces ION. Newly added Extension Docs include
- updated version of cl_qcom_ml_ops.txt
The new samples include:
- Sample to show usage of bicubic filter to sample images in OpenCL kernels
- Sample to show usage of the cl_qcom_extended_query_image_info extensions to query various image parameter
- Sample to show building of an OpenCL kernel using OpenCL 3.0
- Basic usage of the dmabuf extension to create OpenCL buffers and Images
- New image conversion samples that use AHB to import data into OpenCL (instead of ION/dmabuf)
Existing samples that used ION have been re-written to use dmabuf. The following specific samples have been retained to demonstrate ION usage for older targets:
What is new in the Adreno SDK for OpenCL v1.3?
The OpenCL SDK version 1.3 contains updated header files, new examples and new extension documents. The newly added extension documents include
The new samples include:
- More image conversion examples and optimized copying of images
- Example showing interop between CL and GL/EGL using server side sync
- Example showing usage of SVM and c11 atomics in OpenCL
- Examples showing usage of cl_qcom_dot_product8, cl_qcom_bitreverse, cl_qcom_perf_hint and cl_qcom_reqd_sub_group_size extensions
- Examples showing ways of importing memory into OpenCL using Android Native Buffer or Android Hardware Buffer
- Example showing a method for tuning workgroup size for OpenCL kernels
- Example showing usage of the cl_qcom_recordable_queues extension
What is included in the Adreno OpenCL ML SDK v1.1?
The OpenCL ML SDK includes usage examples for our Machine Learning (cl_qcom_ml_ops) extension to OpenCL including:
- Machine Learning Models for object detection and image classification
- Interop of regular OpenCL kernels with Machine Learning operations
- Interop of existing OpenCL features such as ION import and recordable queues with Machine Learning
- Tools to assist in the conversion of model weights