Why is "Force GPU rendering" disabled by default Developer options?
Why is this feature disabled? When I turn it on, many apps and become snappy and awesome with smooth graphics. Seems like it'd be nice if it was enabled by default.
The linked article in this question says that hardware acceleration wasn't default up until 4.0.
Is the "Force GPU rendering" option then targeting apps that use API for 3.0 and lower?
When GPU rendering was first added, it was very unreliable. Sometimes it would be slower than software rendering, and there were some kinds of GUIs that it just couldn't work with. For this reason, it was up to the app developer to test their app with GPU rendering, and set an option in the app's manifest (the same place that it declares its permissions) to enable GPU rendering for that app. The option was mainly to make it easier for developers to test the effect of GPU rendering on their app. This makes sense because:
- most users don't know or care about what GPU rendering is, and don't know whether it should be on or off for any given app; and
- the setting really needs to be per-app, not device-wide, because some apps just wouldn't work with GPU rendering turned on.
After further development, when 4.0 came along, GPU rendering got more reliable, so it became the default for all apps: it's now up to the developer to explicitly disable GPU rendering if it causes a problem in their app. (That's very rare now.) The "Force GPU rendering" option is vestigial and rarely used even by developers now, because it's already the default.
To quote from an XDA post:
Enabling this preference in developer options offloads task of rendering window components like buttons, text and complex 2d graphics calculations to GPU. This often results in much faster UI rendering including animations. On one side you will definitely achieve better frame rate (and hence smooth experience) throughout system, but you may end up using more battery. On certain devices, GPU consumes more power the CPU, hence you may observe 5-15% lower battery life with option enabled.
I would recommend having this option enabled on devices with weaker CPUs e.g. You should seldom need to enable this on dual-core 1.4ghz ARM CPU.
Offloading UI rendering to GPU has obvious benefits so that CPU can work on other important tasks like database IO, data manipulation, layout calculations and responding to other user inputs.
That said, it should be up to the user to decide if he wants to trade battery life for performance. AND, I think most people would want their phones to last longer, and keep performance at an acceptable rate.