Mobile Game Draw Call Optimization: GPU Batching & FPS

Imagine your mobile game stutters on Adreno 506 despite modest graphics. The Frame Debugger shows 350 Draw Calls per frame and FPS drops to 35. The target is a stable 60 FPS. Optimizing Draw Calls is the first and most effective step. We reduce the call count from an average of 300 to 150, boosting

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Mobile Game Draw Call Optimization: GPU Batching & FPS
Medium
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

Imagine your mobile game stutters on Adreno 506 despite modest graphics. The Frame Debugger shows 350 Draw Calls per frame and FPS drops to 35. The target is a stable 60 FPS. Optimizing Draw Calls is the first and most effective step. We reduce the call count from an average of 300 to 150, boosting FPS to 60 on mid-range devices without quality loss. We leverage batching, GPU Instancing, and texture atlases. We've optimized over 30 projects. Our basic optimization audit starts at $500, including a detailed report and roadmap.

Why Draw Calls Are Critical for Mobile Games

On mobile GPUs with tiled architecture (Mali, Adreno, Apple GPU), each extra Draw Call is more expensive than on desktop due to increased overdraw and fill rate pressure. The CPU spends time preparing data, and the GPU spends cycles on context switching. As a result, with chaotic rendering, FPS drops below the target 30 or 60 FPS. Optimizing Draw Calls is one of the most efficient ways to boost performance without altering content, directly impacting frame time budget.

Sources of Extra Calls

Three main sources.

Different materials on similar objects. Each unique material equals at least one separate Draw Call. We often see projects where coins, enemies, and power-ups use different textures (PNG of varying sizes) packed into different atlases. Batching becomes impossible.

Dynamic batching breaks silently. Unity batches meshes only if they have fewer than 900 vertices, use one material, and are not flagged as static. Enabling Shadow Casting = On on a dynamic object automatically kicks it out of the batch — this batching breaker is not obvious from the documentation.

Skinned mesh without GPU Instancing. Animated characters with SkinnedMeshRenderer participate neither in static batching nor dynamic batching. If 20 enemies with the same mesh are on screen without hardware instancing, that's 20 separate Draw Calls.

How to Reduce Draw Calls Without Quality Loss?

Sprite Atlas for 2D

For 2D games, use SpriteAtlas (not the legacy Sprite Packer). Put all sprites of one game layer into one atlas, one material, one Draw Call for the whole layer. The atlas must be Include in Build; otherwise, individual textures will be loaded at runtime. The maximum atlas size on mobile is 2048×2048 for most devices, 4096×4096 allowed for Android API 26+ and iOS 12+. We use ASTC 6×6 for both: good compression (2x smaller than PNG) without noticeable artifacts.

GPU Instancing for 3D

For repeated objects (enemies, trees, bullets), enable Enable Instancing on the material and use a shader with #pragma multi_compile_instancing. With Unity 2022+ you can use BatchRendererGroup for full control. GPU Instancing is 3–5x more efficient than dynamic batching on mobile. It does not work with CPU-driven animation — for animated enemies, apply GPU skinning via AnimationInstancing or vertex shaders with baked animations. Static batching uses 2x more memory than GPU Instancing, but it's effective for static geometry.

Static Batching

Mark static objects (platforms, walls) as Static, enable Static Batching in Player Settings. Unity merges meshes at build time. Overhead: increased memory, so don't mark everything as static.

Remove Unnecessary Shadow Casters

Shadows are expensive due to shader complexity. On mobile, we often disable real-time shadows and replace them with blob shadows (a simple dark circle sprite under the object). If shadows are needed, limit the distance and switch to a single cascaded shadow map instead of four.

Target Metrics

Device Recommended Max Draw Calls
Low-end Android (Adreno 505) 80–120
Mid-range Android (Adreno 618) 150–200
iPhone 12 / A14 200–300
iPhone 15 / A17 300–400

These numbers are for 60 FPS with VSync enabled. If targeting 30 FPS, the budget is roughly twice as lenient. GPU Instancing is 3–5 times more efficient than Dynamic Batching on mobile.

Batching Method Comparison

Method Applicability Memory Usage Setup Complexity
Dynamic Batching Objects <900 vertices, one material Low Minimal
Static Batching Static objects High Low
GPU Instancing Repeated objects Medium Medium

How to Diagnose Bottlenecks?

Unity Frame Debugger (documentation) is the first step. It shows every Draw Call in the frame with an explanation of why batching did not occur. Use the Frame Debugger to profile draw calls and identify batching breakers. Snapdragon Profiler (for Android on Adreno) and Xcode GPU Frame Capture (iOS) give a detailed picture on real hardware, including time per draw call. RenderDoc is for deep analysis of shader complexity and overdraw.

Common Mistakes When Optimizing Draw Calls
  • Not testing on a real device — the emulator won't show tiled architecture.
  • Forgetting to disable shadows when testing batching.
  • Using one giant atlas instead of several per layer.
  • Trying to batch animated objects without GPU Instancing.

What Is Included in the Work

  • Audit using Frame Debugger and Snapdragon Profiler
  • Implementation of Sprite Atlas and GPU Instancing
  • Optimization of shadows and static batching
  • Access to profiling software licenses for the duration
  • Developer training session (2 hours) on maintaining optimizations
  • 3 months of email support for post-launch tweaks
  • Testing on 5+ real devices (low-end, mid-range)
  • Final report and handover
  • 6-month performance guarantee (minimum 20% FPS increase on low-end)

Process

  1. Current state analysis (1 day)
  2. Problem prioritization (1 day)
  3. Implementation of atlases/instancing/batching (2–5 days depending on complexity)
  4. Testing on low-end and mid-range devices (1 day)
  5. Final report and handover

Timeline depends on scale: a simple 2D arcade game takes two to three days; a 3D game with animated characters takes a week or more. We will assess your project within one working day. Contact us for a consultation and commercial proposal.