Merge "Enable dirty regions on newly created EGL surfaces"
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user