Merge "Enable dirty regions on newly created EGL surfaces"

This commit is contained in:
Romain Guy
2011-12-09 12:28:46 -08:00
committed by Android (Google) Code Review

View File

@@ -441,6 +441,8 @@ public abstract class HardwareRenderer {
}
boolean mDirtyRegionsEnabled;
boolean mUpdateDirtyRegions;
final boolean mVsyncDisabled;
final int mGlVersion;
@@ -675,6 +677,12 @@ public abstract class HardwareRenderer {
initCaches();
enableDirtyRegions();
return mEglContext.getGL();
}
private void enableDirtyRegions() {
// If mDirtyRegions is set, this means we have an EGL configuration
// with EGL_SWAP_BEHAVIOR_PRESERVED_BIT set
if (sDirtyRegions) {
@@ -690,8 +698,6 @@ public abstract class HardwareRenderer {
// configuration (see RENDER_DIRTY_REGIONS)
mDirtyRegionsEnabled = GLES20Canvas.isBackBufferPreserved();
}
return mEglContext.getGL();
}
abstract void initCaches();
@@ -745,6 +751,9 @@ public abstract class HardwareRenderer {
if (!createSurface(holder)) {
return;
}
mUpdateDirtyRegions = true;
if (mCanvas != null) {
setEnabled(true);
}
@@ -943,6 +952,10 @@ public abstract class HardwareRenderer {
fallback(true);
return SURFACE_STATE_ERROR;
} else {
if (mUpdateDirtyRegions) {
enableDirtyRegions();
mUpdateDirtyRegions = false;
}
return SURFACE_STATE_UPDATED;
}
}