diff options
author | Andy McFadden <fadden@android.com> | 2014-06-13 14:04:23 -0700 |
---|---|---|
committer | Andy McFadden <fadden@android.com> | 2014-06-17 10:41:46 -0700 |
commit | 91b2ca8562763c981c4ce93148db80adb51d0cb6 (patch) | |
tree | 13441947f4c92fae7b6ee64df558f7160300d147 /services | |
parent | 24730ee6215ca4d69e7737111743c613db58a51d (diff) | |
download | frameworks_native-91b2ca8562763c981c4ce93148db80adb51d0cb6.zip frameworks_native-91b2ca8562763c981c4ce93148db80adb51d0cb6.tar.gz frameworks_native-91b2ca8562763c981c4ce93148db80adb51d0cb6.tar.bz2 |
Add two new display info fields
This adds SurfaceFlinger's app VSYNC offset and buffer deadline
values to DisplayInfo.
Bug 14612039
Change-Id: Ie0ab21d388fe2764f2b6f71bd1cefa33dc861a73
Diffstat (limited to 'services')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index edf867a..4ecdc8b 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -576,6 +576,22 @@ status_t SurfaceFlinger::getDisplayConfigs(const sp<IBinder>& display, info.xdpi = xdpi; info.ydpi = ydpi; info.fps = float(1e9 / hwConfig.refresh); + info.appVsyncOffset = VSYNC_EVENT_PHASE_OFFSET_NS; + + // This is how far in advance a buffer must be queued for + // presentation at a given time. If you want a buffer to appear + // on the screen at time N, you must submit the buffer before + // (N - presentationDeadline). + // + // Normally it's one full refresh period (to give SF a chance to + // latch the buffer), but this can be reduced by configuring a + // DispSync offset. Any additional delays introduced by the hardware + // composer or panel must be accounted for here. + // + // We add an additional 1ms to allow for processing time and + // differences between the ideal and actual refresh rate. + info.presentationDeadline = + hwConfig.refresh - SF_VSYNC_EVENT_PHASE_OFFSET_NS + 1000000; // All non-virtual displays are currently considered secure. info.secure = true; @@ -586,11 +602,11 @@ status_t SurfaceFlinger::getDisplayConfigs(const sp<IBinder>& display, return NO_ERROR; } -int SurfaceFlinger::getActiveConfig(const sp<IBinder>& display) { +int SurfaceFlinger::getActiveConfig(const sp<IBinder>&) { return 0; } -status_t SurfaceFlinger::setActiveConfig(const sp<IBinder>& display, int id) { +status_t SurfaceFlinger::setActiveConfig(const sp<IBinder>&, int) { return NO_ERROR; } |