Merge "Always swap buffers if using partial update extension" into nyc-dev am: a24b5d4811

am: 89e95934e8

* commit '89e95934e8f1a50adefcd90d42d365605951833e':
  Always swap buffers if using partial update extension
This commit is contained in:
John Reck
2016-02-27 00:15:33 +00:00
committed by android-build-merger
3 changed files with 9 additions and 1 deletions

View File

@@ -476,7 +476,7 @@ void CanvasContext::draw() {
// metrics the frame was swapped at this point
mCurrentFrameInfo->markSwapBuffers();
if (drew) {
if (drew || mEglManager.damageRequiresSwap()) {
if (CC_UNLIKELY(!mEglManager.swapBuffers(frame, screenDirty))) {
setSurface(nullptr);
}

View File

@@ -324,6 +324,10 @@ void EglManager::damageFrame(const Frame& frame, const SkRect& dirty) {
#endif
}
bool EglManager::damageRequiresSwap() {
return EglExtensions.setDamage && mSwapBehavior == SwapBehavior::BufferAge;
}
bool EglManager::swapBuffers(const Frame& frame, const SkRect& screenDirty) {
if (CC_UNLIKELY(Properties::waitForGpuCompletion)) {

View File

@@ -70,6 +70,10 @@ public:
bool makeCurrent(EGLSurface surface, EGLint* errOut = nullptr);
Frame beginFrame(EGLSurface surface);
void damageFrame(const Frame& frame, const SkRect& dirty);
// If this returns true it is mandatory that swapBuffers is called
// if damageFrame is called without subsequent calls to damageFrame().
// See EGL_KHR_partial_update for more information
bool damageRequiresSwap();
bool swapBuffers(const Frame& frame, const SkRect& screenDirty);
// Returns true iff the surface is now preserving buffers.