← Back to team overview

ubuntu-phone team mailing list archive

HW VSYNC question

 

On a Huawei Ascend P1 device I am testing I have a very sluggish UI
and logcat has lots of these:
W/SurfaceFlinger(  136): Timed out waiting for hw vsync; faking it

Not knowing much about SurfaceFlinger and the HWComposer (version 1.0
used here based on ICS proprietary blobs and libraries)
I managed to get decent performance by forcing software VSYNC, that
causes timeouts of only 16ms instead of 1s.
This should probably have a proper fix but I am not sure whether it's
egl settings or some other PVR GPU changes are needed.
Any ideas where I should look?
This is an OMAP 4660 SoC with a PowerVR SGX 540 GPU.

thanks
Jani

project frameworks/native/
diff --git a/services/surfaceflinger/EventThread.cpp
b/services/surfaceflinger/EventThread.cpp
index edb9fa5..40bec1c 100644
--- a/services/surfaceflinger/EventThread.cpp
+++ b/services/surfaceflinger/EventThread.cpp
@@ -277,6 +277,7 @@ Vector< sp<EventThread::Connection> >
EventThread::waitForEvent(
                 // use a (long) timeout when waiting for h/w vsync, and
                 // generate fake events when necessary.
                 bool softwareSync = mUseSoftwareVSync;
+               softwareSync = true;
                 nsecs_t timeout = softwareSync ? ms2ns(16) : ms2ns(1000);
                 if (mCondition.waitRelative(mLock, timeout) == TIMED_OUT) {
                     if (!softwareSync) {