Game Developer Guides
Guides:
Qualcomm
®
Adreno™ GPU
Overview
Visibility processing
Early Z rejection
FlexRender™ technology (Hybrid Deferred and Direct Rendering mode)
Tile-based rendering
Low Resolution Z pass
Shader support
Unified shader architecture
Scalar architecture
Universal bandwidth compression
Texture features
Multiple textures
Video textures
Texture compression
Floating point textures
Cube mapping with seamless edges
Large texture size
sRGB textures and render targets
Other supported features
Percentage Closer Filtering for depth textures
Index types
Multisample anti-aliasing
Vertex texture access or vertex texture fetch
Adreno APIs
Best Practices
General
Use Variable Rate Shading
Occlusion Query usage
Bandwidth optimization
Depth range optimization
Other optimizations
Shaders
General
OpenGL ES Specific
Texture
Compression Strategies
Tiling Architecture
Avoid GMEM loads
Remove unused render targets
Down-scale render targets
Vulkan subpasses
Vertex Processing
General
OpenGL ES Specific
Frequently Asked Questions
General
What is the optimal way to sort objects? Is front-to-back object submission needed or, given the tiling architecture, is that not necessary?
Are there “no-copy’ paths available for other Snapdragon hardware blocks?
What is a good TEX to ALU ratio?
What is the Triangle setup rate?
Which is better: vertex stream or attribute fetching in VS?
Is dedicated video memory possible?
How many Occlusion Queries should I use?
What is the Occlusion Query performance?
How are timer queries calculated in Adreno GPUs?
What is the performance of user clip planes?
Which has better performance, alpha test vs alpha blend?
Best single pass stereo? Texture array? Need GS?
What is the behavior on dynamic branching in fragment shaders?
LRZ
What causes LRZ to be disabled?
Can LRZ buffers and visibility streams be stored and reused?
What is the effect on LRZ if discard/clip is used?
Textures and formats
What depth buffer format provides the best performance?
What cache levels do textures remain compressed/decompressed?
Is float or half float more performant for 8-bit texture lookup?
What is the performance of 1010102 vs. 111110 formats?
Tiling architecture
Do you have any details of how the tiling and binning process works?
What conditions trigger direct rendering with FlexRender?
Is the full Vertex Shader used when performing binning?
Is binning affected by fragment Z occlusion?
What is the CPU cost of binning?
If a primitive spans multiple tiles, will the GPU insert synthetic vertices at tile boundaries?
Vulkan
Is there a performance impact of using Vulkan Secondary Command Buffers?
Is there a performance benefit or cost to using push constants?
Static vs. dynamic state?
What is the recommended usage SSBO vs. UBO vs. Texture fetch?
What is the recommended sampler type?
How to ensure Vulkan Subpasses merged properly?
Spec Sheets
Texture formats
Qualcomm
®
Kryo™ CPU
Overview
big.LITTLE
Understanding CPU utilization
Controlling Task Execution
Power considerations
NEON intrinsics
Best practices
Avoid single-thread 100% CPU Utilization bottleneck
Avoid disk I/O or blocking operations on main/render threads
Use Neon for SIMD operations
Use big cores for compute intensive tasks
Use little cores for power efficient tasks
Multi-thread game initialization
Qualcomm
®
Hexagon™ DSP
Overview
Hexagon Vector eXtensions
Hexagon Programming Primer
Components:
Adreno SDK for OpenGL ES
OpenGL ES 2.0
Tutorials
Samples
OpenGL ES 3.0
Tutorials
Samples
Adreno SDK for Vulkan
Snapdragon Profiler
Realtime
Trace
Snapshot
Vulkan in Snapdragon Profiler
Vulkan Adreno Layer
Overview
Fault Codes
Vulkan Debug Utils
Warning Codes
Error Codes
Tutorials:
Android
Understanding and resolving Graphics Memory Loads
In a nutshell
What are Graphics Memory Loads (Unresolves)?
Why are Graphics Memory Loads expensive?
Detecting Graphics Memory Loads in Snapdragon Profiler
Qualcomm True HDR
Introduction
High Dynamic Range (HDR)
Wide Color Gamut (WCG)
Color volume
Display technique
Light-to-display overview
HDR10
Color volume mapping
Traditional Game HDR
True HDR
True HDR pipeline
Academy Color Encoding System (ACES) tonemapping
ACES pipeline
True HDR code setup
Set EGLSurface format
Set color space
Set metadata
Get the luminance of display on Android
Identify application bottlenecks
How many frames per second?
Exploring potential bottlenecks
GPU-bound application
CPU-bound app
Vsync-bound app
Windows on Arm64
Get Started with Windows on Arm64 Development
Introduction
Getting started in Visual Studio
Prerequisites
Installing and configuring Visual Studio on the Development Host
Installing and configuring the Arm64 target device
Debugging
Remote debugging with Visual Studio
Connecting to Remote Debugger from Visual Studio
Distributing the application
Non-redistributable debug runtime
Visual Studio Performance Profiler
CPU and GPU profiling with PIX
DirectX 12
Setup on Development machine
Setup on Arm64 target device
Connecting to a remote PIX debugger
Examples
Launching for GPU capture on the Arm64 target
Launching for CPU capture
Troubleshooting PIX
Platform details
Snapdragon 8cx
Memory model
Neon SIMD
Key differences between Adreno and Desktop GPUs
References
Unreal Engine for Windows on Arm64
Before you begin
Technical Prerequisites
Development machine
Target Arm64 Windows 10 machine
Building Unreal Engine from source to enable Windows Arm cross-compile
Producing builds
Additional notes
Remote debug
Build optimization
Third-party libraries
References
Game Developer Guides
Search
Please activate JavaScript to enable the search functionality.