summaryrefslogtreecommitdiffstats
path: root/core/java/android/view
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-10-18 15:05:02 -0700
committerRomain Guy <romainguy@google.com>2012-10-18 15:05:02 -0700
commit7c25aab491707f7324f9941b8cfa9bd2b4b97e76 (patch)
tree2e670c818c33bf2ead5342dad73b48e000d2e94c /core/java/android/view
parentb2e2f2470693e78baed20617f989d9a166864ed4 (diff)
downloadframeworks_base-7c25aab491707f7324f9941b8cfa9bd2b4b97e76.zip
frameworks_base-7c25aab491707f7324f9941b8cfa9bd2b4b97e76.tar.gz
frameworks_base-7c25aab491707f7324f9941b8cfa9bd2b4b97e76.tar.bz2
Defer layer rendering to avoid stalls
Bug #7326824 When a layer is taken out of the cache and initialized it gets cleared to prepare it for future rendering. This triggers the following sequence of operations: glBindFramebuffer(layer.fbo) attach texture storage to FBO glClear() glBindFramebuffer(defaultFbo) The clear forces a resolve on tilers which stalls the CPU for a little while, thus producing jank during animations. This change moves the clear to the next frame when we know we will have to execute a resolve anyway. Change-Id: Ic1939c25df20ed65a4c48dc81ee549b2cd8b6ec3
Diffstat (limited to 'core/java/android/view')
-rw-r--r--core/java/android/view/HardwareRenderer.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index ec1695e..59f941d 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -1200,7 +1200,12 @@ public abstract class HardwareRenderer {
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
- status = onPreDraw(dirty);
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "prepareFrame");
+ try {
+ status = onPreDraw(dirty);
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
saveCount = canvas.save();
callbacks.onHardwarePreDraw(canvas);