A curated list of various learning resources for computer graphics on mobile devices.
- GPU Framebuffer Memory: Understanding Tiling - A clear explanation with step-by-step animation.
- Tile-based Rendering - A concise introduction to different rendering architectures with brief comparative analysis.
- Mobile GPU Approaches to Power Efficiency by Andrew Gruber - An overview of power efficiency in terms of memory system, render pipeline, etc.
- Vulkan Tutorial by Hyokuen Lee, Minwook Kim - Instructive slides for rendering a textured quad from the ground up.
- Introduction to Vulkan Render Passes - A detailed note about how to use render passes in Vulkan API.
- Game Asset Optimizations - Informative tips for app deployment and run-time performance.
- Geometry Best Practices - Tips to strike a balance between geometry complexity and visual quality with lots of illustrations.
- Textures Best Practices - A number of texturing tips help apps run smoother and look better.
- Optimizing Assets for Mobile VR - General tips on game asset optimization for mobile platforms.
- Understanding Numerical Precision - A brief guide to properly choose numerical precision and to preserve accuracy of the numbers.
- Cramming Software onto Mobile GPUs by Andrew Garrard - Various essential techniques to well utilize mobile hardware.
- OpenGL ES Usage Recommendations - Practical and effective tips for GLES programming.
- How to Correctly Handle Framebuffers by Peter Harris - A crystal clear explanation with sample code for avoiding redundant tile writes.
- Vulkan Usage Recommendations - Effective guidelines for Vulkan API.
- Vulkan FAQ for Mobile Developers.
- Vulkan Case Study by Soowan Park, Joonyong Park - Informative dev tips related to swapchain, uniform buffer and rendering.
- More experiments on uniform buffer management (slides) by Soowan Park.
- Vulkan Samples - Comprehensive resources of case study and best practices.
- Surface Rotation - How appropriately use surface rotation, which was handled transparently by OpenGL ES driver.
- Render passes - How attachment load/store operations might affect performance.
- Subpasses - How tile-based renderer might save bandwidth.
- Pipeline Barriers - How efficiently set up pipeline barriers, with a focus on pipeline stages.
- Getting Faster and Leaner on Mobile: Optimizing Roblox with Vulkan by Arseny Kapoulkine - Informative optimization experiences with several concrete examples.
- Mali GPU Training - A comprehensive training series from mobile graphics fundamentals to performance analysis.
- Mali Optimization Resources with Unreal and Unity - Introductory guidelines for profiling games and optimizing artwork.
- Graphics and Gaming Development - Official Mali developer resources.
- Arm Mali GPU Best Practices Developer Guide - A complete guide for Mali graphics programming with OpenGL ES and Vulkan.
- Mali GPU OpenGL ES 3.x Developer Guide - An introductory guide for Pixel Local Storage, ASTC, and other 3.x features.
- Understanding Render Passes - Practical guides for efficient render passes with Vulkan and OpenGL ES.
- The Benefits of Buffer Packing - Several performance tips related to bandwidth usage saving.
- Using Asynchronous Compute on Arm Mali GPUs: A Practical Sample by Hans-Kristian Arntzen - An informative introduction to async-compute scheduling on Mali devices.
- Deferred Shading on Mobile: An API Overview by Hans-Kristian Arntzen - A crisp introduction to bandwidth saving techniques on deferred shading with various API options.
- Game Developer Guides - A best practice for Adreno graphics programming with OpenGL ES and Vulkan.
- OpenCL General Programming and Optimization Guide.
- Developer Documentation
- Performance Recommendations - An informative recommendations range from high-level effect techniques to low-level GLSL optimization.
- Metal Video Learning Resources.
- Modern Rendering with Metal - Demonstration of how to apply Metal features to implement deferred and tiled-forward rendering.
- Moving Mobile Graphics, SIGGRAPH Course Notes - Technical and inspirational talks from practitioners at the forefront.
- Event Archive from Galaxy GameDev - Quite a few collected slides and videos from conference talks at GDC, Unreal Summit, Unity Unite, etc.
- Vulkanised - Informative best and worst practices from game devs pioneering with Vulkan
- Vulkan Samples - Educational source code with informative explanation for developing optimized Vulkan application.
- Android Vulkan Tutorial - Beginner guide to develop Vulkan sample with Android Studio.
- PowerVR Vulkan Examples.
- RenderDoc (video tutorials) - A lightweight, reliable and developer friendly debugger for quick frame diagnosis.
- Principles of High Performance - Core ideas for mobile app optimization.
- Basic Optimization Checklist - A handy checklist for common performance bottlenecks.
- Vulkan Ecosystem Developer Tools (slides) by Spencer Fricke - A quick roll call of available dev-tools to prevent reinventing the wheel.
- Using Vulkan Validation Effectively (slides) by Spencer Fricke - An instructive guide for using validation layer and debug utilities extension.
- Introduction to Using SPIR-V (slides) by Spencer Fricke - A quick start guide for learning how to read and understand SPIR-V.
- Game Development Guides on Android, including tools, libraries, best practices, etc.
- Modern Android Development Skills on Performance - A video series of brief overviews on various profiling tools (ex. Systrace, Perfetto, etc.) on Android.
- Android GPU Inspector - A unified profiler for various GPU IPs on Android (only for few supported devices currently).
- Analyze a System Trace - A comprehensive tutorial of system inspection.
- System Tracing
- Android Profiler - Tools for inspecting usage of CPU, memory, network, and battery resources.
- Systrace for Games by Tim Murray - An introductory video tutorial with case studies.
- Improve Game Performance on Android - Tips for identifying and improving various aspects of common performance concerns in mobile games.
- Android Vulkan layers by Peter Harris - A quick recipe to get Vulkan validation layers working for Android applications.
- Enable Vulkan Layers Outside the Application - Instructions for enabling layers with adb commands.
- Enable Vulkan Debug Callback on Android - Example code snippets for enablement.
- Arm Performance Studio - A developer suite contains GPU profiler, frame analyzer, and offline shader compiler.
- Optimizing mobile games using Arm Mobile Studio - A quick overview on performance optimization workflow.
- Educational videos and step-by-step tutorials on Arm Developer Hub.
- Android performance triage with Streamline - A step-by-step diagnosis guide to identify performance problem.
- Accelerating Mali GPU analysis using Streamline by Peter Harris - A quick overview of using Streamline template charts.
- Workload Pipelining - A clear illustration of various pipeline bottlenecks.
- Frame Pipelining by Peter Harris - A lucid explanation of asynchronous execution of rendering pipeline beneath GL APIs.
- Mali GPU Performance Counters: G720, G715, G710, and others.
- Mali GPU Datasheet.
- Snapdragon Profiler.
- Identify application bottlenecks by using Snapdragon Trace Capture.
- Available Functionality for Supported Texture Format.
- Maximizing Your Game's Performance in Unreal Engine by Ari Arnbjörnsson - An engaging talk with 4 concrete examples by using built-in tools of UE5. (Few tool configs are desktop-only, but still worth watching.)
- Profiling and Optimization in UE4 by Paulo Souza - An introductory tutorial for identifying performance problems.
- UE4 Performance and Profiling by Zak Parrish - Comprehensive guidelines for optimization process.
- UE4 Graphics Profiling by Tech Art Aid - A well organized and informative tutorial series for beginners.
- Ultimate guide to profiling Unity games - A 70+ page guide on profiling workflow with built-in tools of Unity.
- Introduction to Profiling in Unity by Ciro Continisio - A beginner tutorial on CPU profiler and frame debugger.
- Tackling Profiling for Mobile Games with Unity and Arm by Mark Harkness - A crisp introduction to mobile game optimization with various tools.
- Better Together: Integrating Arm Mobile Studio with Unity by Geraint North - A concrete example of how Streamline annotations make better data interpretation.