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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user