I think Sotaro (CC'd) probably knows the most about this. Alternatively this sounds appropriate for a bug to me.

Thanks!

Ben

On 5/20/2014 11:31 PM, Raven Dou wrote:
Hi All:



     The method onFrameAvailable In FrameBufferSurface.cpp of Android:

------------------------------------------------------------
void FramebufferSurface::onFrameAvailable() {
     sp<GraphicBuffer> buf;
     sp<Fence> acquireFence;
     status_t err = nextBuffer(buf, acquireFence);
     if (err != NO_ERROR) {
         ALOGE("error latching nnext FramebufferSurface buffer: %s (%d)",
                 strerror(-err), err);
         return;
     }
     err = mHwc.fbPost(mDisplayType, acquireFence, buf);
     if (err != NO_ERROR) {
         ALOGE("error posting framebuffer: %d", err);
     }
}
-------------------------------------------------------------

     fbPost be executed here, but in B2G, the fbPost is executed in 
GonkDisplayJB::SwapBuffers, not in 
gecko/widget/gonk/libdisplay/FramebufferSurface.cpp

--------------------------------------------------------------
bool
GonkDisplayJB::SwapBuffers(EGLDisplay dpy, EGLSurface sur)
{
     StopBootAnimation();
     mBootAnimBuffer = nullptr;

     // Should be called when composition rendering is complete for a frame.
     // Only HWC v1.0 needs this call.
     // HWC > v1.0 case, do not call compositionComplete().
     // mFBDevice is present only when HWC is v1.0.
     if (mFBDevice && mFBDevice->compositionComplete) {
         mFBDevice->compositionComplete(mFBDevice);
     }

#if ANDROID_VERSION == 17
     mList->dpy = dpy;
     mList->sur = sur;
#else
     mList->outbuf = nullptr;
     mList->outbufAcquireFenceFd = -1;
#endif
     eglSwapBuffers(dpy, sur);
     return Post(mFBSurface->lastHandle, mFBSurface->lastFenceFD);
}
--------------------------------------------------------------



I'm wondering why there's such a difference ?

on my device, the views on screen will be torn, especially when views change 
quickly.

But if I move the method {Post(mFBSurface->lastHandle, 
mFBSurface->lastFenceFD);} to 
gecko/widget/gonk/libdisplay/FramebufferSurface.cpp::onFrameAvailable() , this 
problem is resolved.

Any body could explain the reason ?  thanks in advance!
_______________________________________________
dev-b2g mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-b2g

_______________________________________________
dev-b2g mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-b2g

Reply via email to