Qualcomm_Adreno_OpenGL_ES_Developer_Guide Qualcomm® Adreno™ Open GL ES Developer Guide
User Manual:
Open the PDF directly: View PDF
Page Count: 170 [warning: Documents this large are best viewed by clicking the View PDF Link!]
- Qualcomm® Adreno™ OpenGL ES Developer Guide
- Revision history
- Contents
- 1 Overview
- 2 OpenGL ES 2.0 with Adreno
- 3 Using OpenGL ES 3.0 with Adreno
- 3.1 New features in OpenGL ES 3.0
- 3.1.1 Two-dimensional array textures
- 3.1.2 Three-dimensional textures
- 3.1.3 Immutable textures
- 3.1.4 Per-texture object LoD clamp
- 3.1.5 PCF for depth textures
- 3.1.6 New internal texture formats
- 3.1.7 Transform feedback
- 3.1.8 Instanced draw calls
- 3.1.9 Query objects
- 3.1.10 New vertex data types
- 3.1.11 Vertex array objects
- 3.1.12 Uniform buffer objects
- 3.1.13 Buffer subrange mapping
- 3.1.14 Multiple render target support
- 3.1.15 Other new features
- 3.2 Using key features
- 3.3 Walkthrough of sample applications
- 3.4 About the OpenGL ES implementation
- 3.1 New features in OpenGL ES 3.0
- 4 Using OpenGL ES 3.1 with Adreno
- 5 Introducing Android Extension Pack
- 6 Designing OpenGL ES Guidelines
- 6.1 Overview
- 6.2 OpenGL ES as a client-server architecture
- 6.3 OpenGL ES as a graphics pipeline
- 6.4 Designing a high-performance OpenGL ES application
- 6.4.1 Advanced lighting/shadowing
- 6.4.2 Avoid excessive clipping
- 6.4.3 Avoid unnecessary clear operations
- 6.4.4 Avoid unnecessary MakeCurrent calls
- 6.4.5 QTI SIMD/FPU co-processor usage
- 6.4.6 Implement multiple threads
- 6.4.7 Implement level-of-shading system
- 6.4.8 Minimize GL state changes
- 6.4.9 Minimize number of draw calls
- 6.4.10 Scaling resolutions
- 6.4.11 Avoid intra-frame resolves
- 6.4.12 Identify bottlenecks
- 6.4.13 Blur effect
- 6.4.14 Store equations in textures/look-up textures
- 6.4.15 Use front-to-back rendering
- 6.4.16 Use back face culling
- 6.4.17 Use LoD in effects
- 6.4.18 Use mipmapping
- 6.4.19 Use static and baked-in lighting
- 6.4.20 Use 2D array textures
- 6.4.21 Use vertex buffer objects
- 6.5 Handle synchronize and flush operations
- 6.6 Manage resources with OpenGL ES
- 6.7 Efficient state management
- 6.8 Energy saving tips
- 6.9 OpenGL ES and multithreading
- 7 Comparing OpenGL ES Versions and Optional Features
- 8 Understanding the Developer Tools
- 9 Optimizing Applications
- 9.1 Shader tips
- 9.1.1 Compile and link during initialization
- 9.1.2 Use built-ins
- 9.1.3 Use the appropriate data type
- 9.1.4 Reduce type casting
- 9.1.5 Pack scalar constants
- 9.1.6 Keep shader length reasonable
- 9.1.7 Sample textures in an efficient way
- 9.1.8 Threads in flight/dynamic branching
- 9.1.9 Pack shader interpolators
- 9.1.10 Minimize usage of shader GPRs
- 9.1.11 Minimize shader instruction count
- 9.1.12 Avoid uber-shaders
- 9.1.13 Avoid math on shader constants
- 9.1.14 Avoid discarding pixels in the fragment shader
- 9.1.15 Avoid modifying depth in fragment shaders
- 9.1.16 Avoid texture fetches in vertex shaders
- 9.1.17 Break up draw calls
- 9.1.18 Use medium precision where possible
- 9.1.19 Favor vertex shader calculations over fragment shader calculations
- 9.1.20 Measure, test, and verify results
- 9.1.21 Prefer uniform buffers over shader storage buffers
- 9.1.22 Invalidate frame buffer contents as early as possible
- 9.1.23 Optimize vertex buffer object updates
- 9.1.24 Eliminate subpixel triangles during tessellation
- 9.1.25 Do back-face culling during tessellation
- 9.1.26 Disable tessellation whenever it is not needed
- 9.2 Optimize vertex processing
- 9.3 Texture compression strategies
- 9.4 Bandwidth optimization
- 9.5 Depth range optimization
- 9.6 Other optimizations
- 9.1 Shader tips
- A Gamepad Support
- B Glossary