Mobile App GPU Rendering Profiling

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
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 1 servicesAll 1735 services
Mobile App GPU Rendering Profiling
Complex
~2-3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Mobile Application GPU Rendering Profiling

60 FPS on screen means 16.67 ms per frame. Out of this, CPU prepares render commands, passes them to GPU, GPU draws. If GPU doesn't finish by next vsync — frame is dropped. User sees jank. But where exactly GPU bottlenecks — without a profiler it's impossible to say: overdraw, too complex shaders, huge textures, incorrect tiling — causes vary and need different solutions.

GPU Profiling Tools

Android GPU Inspector (AGI)

Google's Android GPU Inspector — most powerful tool for mobile GPU. Works with Adreno (Qualcomm) and Mali (ARM). Requires device with GPU counter profiling support — most flagships 2020+ support it.

AGI shows:

  • GPU Counter — shader unit load, bandwidth, cache hit rate
  • Frame Profiler — breakdown of each frame by draw calls, time per vertex and fragment shader
  • Memory — VRAM consumption, texture cache

Critical metric — Fragment ALU utilization above 90% while simultaneously low Primitive Assembly means: problem is in fragment shader, not geometry. Shader simplification or LOD-system — right direction.

Xcode Metal Debugger + GPU Frame Capture

For Metal applications on iOS — GPU Frame Capture in Xcode. Captures one frame and breaks it down by draw calls. Shows:

  • Each MTLRenderCommandEncoder and its contribution to frame time
  • Heatmap — which pixels are drawn how many times (overdraw visualization)
  • Shader profiler — execution time of specific shader instructions with source line indication

For UIKit/SwiftUI — Core Animation Instrument in Instruments. Shows CATransaction, offscreen-rendering passes (yellow layers in Debug → Color Offscreen-Rendered), layer composition.

Enable Debug → Color Blended Layers in simulator: red zones — layers with alpha blending. Each red pixel is drawn twice (or more). On screen with 60% red — real problem for budget devices.

Profiling on Adreno: Snapdragon Profiler

Snapdragon Profiler (Qualcomm) gives most detailed picture for Adreno GPU: L1/L2 cache miss rate, texture cache utilization, ALU stacks. Use when AGI doesn't give enough detail or working with Vulkan application is needed.

What We Look For and How to Fix

Overdraw. Developer Options → GPU Overdraw on Android, Debug → Color Blended Layers in iOS simulator. Goal — minimize red/pink zones. Remove unnecessary backgrounds from ViewGroup, set opaque = true where transparency is not needed.

Offscreen rendering passes. CALayer with cornerRadius + masksToBounds on iOS triggers offscreen render pass — draws layer to separate buffer, then composits to screen. On list with 50 cells each with cornerRadius — 50 unnecessary offscreen passes per frame. Solution: draw rounded corners through UIBezierPath in drawRect or through background image with transparent corners.

Texture oversized. Texture 2048×2048 for icon 44×44 pt — GPU loads unnecessary data, wastes cache bandwidth. MTKTextureLoader with MTKTextureLoaderOptionGenerateMipmaps: true and correct MTKTextureLoaderOptionTextureUsage for mipmapping — standard for 3D and complex UI.

Case: 30 FPS on Adreno 650

Card game on Unity: on Samsung S21 (Adreno 650) held 30 FPS instead of expected 60. AGI showed: Fragment ALU utilization 98%, while Vertex Processing — 12%. Fragment shader for water contained 4 texture samples + normal mapping + fresnel calculation. On mobile GPU, fragment shaders are more expensive than vertex.

Solution: simplified water shader for mobile platform (2 texture samples instead of 4), fresnel approximation through dot(viewDir, normal) without pow(). FPS grew to 58–60 stably.

Timeframe

GPU profiling and analysis — 2–3 days. Render optimization based on results — 3–10 days depending on complexity of found issues.