# Mobile, Graphics, and Gaming

## Subjects
- Gaming
- Graphics
- ML
- Performance and Architecture

## OS
- Android
- Linux
- macOS
- Windows

## Skill Level
- Advanced
- Introductory

## Tools, Software, and Languages
- 7-Zip
- ADB
- adb
- Android
- Android NDK
- Android SDK
- Android Studio
- Arm AI Portal
- Arm Development Studio
- Arm Mobile Studio
- Arm Performance Studio
- Assembly
- Bash
- Bazel
- C
- C++
- CameraX
- CCA
- Clang
- CMake
- CPP
- csharp
- Docker
- ETDump
- ETRecord
- ExecuTorch
- Frame Advisor
- GCC
- Generative AI
- glslc
- Godot
- Google Pixel 8
- Google Test
- Gradio
- Halide
- Hugging Face
- Java
- Jupyter Notebook
- KleidiAI
- Kotlin
- LiteRT
- LiteRT-LM
- llama.cpp
- LLM
- LLVM
- llvm-mca
- MCP
- MediaPipe
- Model Explorer
- MTE
- Neon
- NX
- ONNX
- ONNX Runtime
- OpenGL ES
- Python
- PyTorch
- QEMU
- RenderDoc
- RME
- Runbook
- Rust
- SDDiskTool
- SME
- SME2
- SVE2
- TensorFlow
- Topo
- TorchAO
- TOSA
- Transformers
- Trusted Firmware
- Unity
- Unreal Engine
- VGF
- Visual Studio
- Visual Studio Code
- Vulkan
- Vulkan SDK
- XNNPACK

## [New? Learn the basics of Mobile, Graphics, and Gaming.](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/intro/)

## Learning paths

- [Accelerate multimodal Voice Assistant performance with KleidiAI and SME2](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/voice-assistant/)
- [Enable Neural Frame Rate Upscaling in Unreal Engine](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/nfru-unreal/)
- [Train and evaluate Neural Frame Rate Upscaling models using Model Gym](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/model-training-gym-nfru/)
- [Integrate a KleidiAI SME2 kernel into XNNPACK](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/integrate-kleidiai-kernel-xnnpack-qd8-f16-qc4w/)
- [Run an optimized vision-language model from the Arm AI Portal on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ai-portal-mobile-vision-language/)
- [Classify pet images with DeiT-Tiny and Arm VGF using ExecuTorch](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/deploy-deit-tiny-with-vgf/)
- [Inspect model artifacts and runtime profiles with Google Model Explorer and Arm extensions](https://learn.arm.com/learning-paths/cross-platform/explore-model-artifacts-with-model-explorer/)
- [Analyze Neural Frame Rate Upscaling using Project Moku](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/nfru-cases-study/)
- [Arm Neural Graphics Playbook - Evaluate](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/neural-graphics-playbook-evaluate/)
- [Accelerate matrix multiplication performance with SME2](https://learn.arm.com/learning-paths/cross-platform/multiplying-matrices-with-sme2/)
- [Deploy Unity Machine Learning Agents on Arm Android devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/using_unity_machine_learning_agents/)
- [Optimize image processing on Android using Halide](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_halide/)
- [Decode low-bit weights with Arm SME2 lookup-table instructions](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/luti/)
- [Accelerate Generative AI workloads using KleidiAI](https://learn.arm.com/learning-paths/cross-platform/kleidiai-explainer/)
- [Learn SVE and SME programming with SIMD Loops](https://learn.arm.com/learning-paths/cross-platform/simd-loops/)
- [Run an Arm AI Portal depth estimation model on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/run-depth-anything-v2-on-android/)
- [Get started with Realm Management Extension (RME)](https://learn.arm.com/learning-paths/cross-platform/cca_rme/)
- [Deploy models with the Arm AI Portal](https://learn.arm.com/learning-paths/cross-platform/ai-portal-model-deployment/)
- [Run an Arm AI Portal image segmentation model on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/run-image-to-image-models-on-android/)
- [Run optimized object-detection models from the Arm AI Portal on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ai-portal-mobile-object-detection/)
- [Compare KleidiCV Gaussian blur performance across Neon, SVE2, and SME on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/explore-kleidicv-gaussian-blur-on-android/)
- [Run optimized TinySD image generation from the Arm AI Portal on Arm-powered Android devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ai-portal-tinysd-android/)
- [Run optimized image classification models from the Arm AI Portal on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ai-portal-mobile-image-classification/)
- [Run Arm AI Portal text-generation models on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/run-text-to-text-models-on-android/)
- [Run optimized Whisper speech transcription models from the Arm AI Portal on Arm-powered Android devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ai-portal-audio-to-text/)
- [Understand KleidiAI SME2 matmul microkernels](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/kai_sme2_matmul_ukernel_explained/)
- [Build a Sentiment-Aware Voice Assistant with On-Device LLMs](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/voice-sentiment-analysis-with-llm/)
- [Enable neural graphics using ML Extensions for Vulkan](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/vulkan-ml-sample/)
- [Implement ray tracing effects with Vulkan on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ray_tracing/)
- [Optimize Unity applications on Android using Neon intrinsics](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/using-neon-intrinsics-to-optimize-unity-on-android/)
- [Profile the Performance of AI and ML Mobile Applications on Arm](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-ml-on-arm/)
- [Profile Unity application performance on Android devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/profiling-unity-apps-on-android/)
- [Quantize neural upscaling models with ExecuTorch](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/quantize-neural-upscaling-models/)
- [Generate audio with Stable Audio Open Small on LiteRT](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/run-stable-audio-open-small-with-lite-rt/)
- [Generate audio with Stable Audio Open Small using ExecuTorch](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/run-stable-audio-with-executorch/)
- [Install a Unity Game on a single board computer (Orange Pi 5)](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/unity_on_orange_pi/)
- [Install and Use Arm integration packages for Unity](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/unity_packages/)
- [Optimize graphics performance using Frame Advisor render graphs](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/render-graph-optimization/)
- [Prepare models for neural graphics with Arm neural technology](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/preparing-models-for-nt/)
- [Run Vision LLM inference on Android with KleidiAI and MNN](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/vision-llm-inference-on-android-with-kleidiai-and-mnn/)
- [Run ExecuTorch Llama 3.2 1B Instruct on an Android phone with Vulkan](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/executorch-vulkan-learning-path/)
- [Profile ONNX model performance with SME2 using KleidiAI and ONNX Runtime](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/performance_onnxruntime_kleidiai_sme2/)
- [Measure LLM inference performance with KleidiAI and SME2 on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/performance_llama_cpp_sme2/)
- [Explore Arm Memory Tagging Extension with an example C program](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/mte/)
- [Accelerate LiteRT Models on Android with KleidiAI and SME2](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/litert-sme/)
- [Benchmark a KleidiAI micro-kernel in ExecuTorch](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/measure-kleidiai-kernel-performance-on-executorch/)
- [Run LLM inference on Android with KleidiAI, MediaPipe, and XNNPACK](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/kleidiai-on-android-with-mediapipe-and-xnnpack/)
- [Deploy optimized ML models with ONNX Runtime on Arm platforms](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/onnx/)
- [Enable hardware ray tracing on Lumen for Android devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/how-to-enable-hwrt-on-lumen-for-android-devices/)
- [Get started with Arm Accuracy Super Resolution](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/get-started-with-arm-asr/)
- [Profile Android game performance in Godot with Arm Performance Studio](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/godot_packages/)
- [Optimize graphics vertex efficiency for Arm GPUs](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/optimizing-vertex-efficiency/)
- [Enable Memory Tagging Extension on Google Pixel 8](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/mte_on_pixel8/)
- [Enable Neural Super Sampling in Unreal Engine with ML Extensions](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/nss-unreal/)
- [Generate neural graphics datasets with Neural Graphics Data Capture in Unreal Engine](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/neural-graphics-data-capture-unreal/)
- [Debug with MTE on Google Pixel 8](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/debugging_with_mte_on_pixel8/)
- [Fine-tune neural graphics models using Model Gym](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/model-training-gym/)
- [Get started with Unity on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/get-started-with-unity-on-android/)
- [Query Arm GPU configuration information](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/libgpuinfo/)
- [Analyze a frame from an Android application with Frame Advisor](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/analyze_a_frame_with_frame_advisor/)
- [Accelerate Denoising, Background Blur and Low-Light Camera Effects with SME2](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ai-camera-pipelines/)
- [Build a Hands-Free Selfie Android Application with MediaPipe](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/build-android-selfie-app-using-mediapipe-multimodality/)
- [Add an LLM to your Android app with Arm's AI Chat library](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android-ai-chat-lib/)
- [Build a customer support chatbot on Android with Llama and ExecuTorch](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/customer-support-chatbot-with-llama-and-executorch-on-arm-based-mobile-devices/)
- [Build an Android chat application with ONNX Runtime API](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/build-android-chat-app-using-onnxruntime/)
- [Detect faces with OpenCV on Android Devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_facedetection/)
- [Get started with Scalable Vector Extension 2 on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_sve2/)
- [Learn about Arm Fixed Rate Compression (AFRC)](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/afrc/)
- [Optimize hardware ray tracing with Lumen on Android devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/best-practices-for-hwrt-lumen-performance/)
- [Profile an Android application with Arm Performance Studio](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/)
- [Accelerate an OpenCV-based Android Application with KleidiCV](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_kleidicv/)
- [Build an Android chat app with Llama, KleidiAI, ExecuTorch, and XNNPACK](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/build-llama3-chat-android-app-using-executorch-and-xnnpack/)
- [Build and profile a simple WebGPU Android Application](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_webgpu_dawn/)
- [Create Computer Vision Applications with OpenCV on Android Devices](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/)
- [Optimize SIMD code with vectorization-friendly data layout](https://learn.arm.com/learning-paths/cross-platform/vectorization-friendly-data-layout/)
- [Build an on-device AI fitness tutor app on Android](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ai-plank-tutor/)
- [Learn about integer and floating-point conversions](https://learn.arm.com/learning-paths/cross-platform/integer-vs-floats/)
- [Understand the `restrict` keyword in C99](https://learn.arm.com/learning-paths/cross-platform/restrict-keyword-c99/)
- [Use SIMD.info to port SIMD intrinsics across Arm architectures](https://learn.arm.com/learning-paths/cross-platform/simd-info-demo/)
- [Memory latency for application software developers](https://learn.arm.com/learning-paths/cross-platform/memory-latency/)
- [Develop a native C++ library on an Arm-based machine](https://learn.arm.com/learning-paths/cross-platform/matrix/)
- [Build a multimodal retail restocking assistant on Armv9 with MNN](https://learn.arm.com/learning-paths/cross-platform/multimodel_mnn_v9/)
- [Create and train a PyTorch model for digit classification using the MNIST dataset](https://learn.arm.com/learning-paths/cross-platform/pytorch-digit-classification-arch-training/)
- [Migrate x86-64 SIMD to Arm64](https://learn.arm.com/learning-paths/cross-platform/vectorization-comparison/)
- [Optimize C and C++ code using compiler autovectorization techniques](https://learn.arm.com/learning-paths/cross-platform/loop-reflowing/)
- [Profile ExecuTorch models with SME2 on Arm](https://learn.arm.com/learning-paths/cross-platform/sme-executorch-profiling/)
- [Use LLVM Machine Code Analyzer to analyze assembly performance on Arm](https://learn.arm.com/learning-paths/cross-platform/mca-godbolt/)
- [Write SIMD code on Arm using Rust](https://learn.arm.com/learning-paths/cross-platform/simd-on-rust/)
- [Learn about function multiversioning](https://learn.arm.com/learning-paths/cross-platform/function-multiversioning/)
- [Run ERNIE-4.5 Mixture of Experts model on Armv9 with llama.cpp](https://learn.arm.com/learning-paths/cross-platform/ernie_moe_v9/)
- [Understand floating-point behavior across x86 and Arm architectures](https://learn.arm.com/learning-paths/cross-platform/floating-point-behavior/)
- [Use the Eigen Linear Algebra Library on Arm](https://learn.arm.com/learning-paths/cross-platform/eigen-linear-algebra-on-arm/)
- [Write Neon intrinsics using GitHub Copilot to improve Adler32 performance](https://learn.arm.com/learning-paths/cross-platform/adler32/)
- [Get started with Arm hardware](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/intro/)
