Android side of the fix for [2121211] Sholes has stutter during animations
a new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to perfrom the proper synchronization.
diff --git a/include/hardware/gralloc.h b/include/hardware/gralloc.h
index cdf415a..5e868e6 100644
--- a/include/hardware/gralloc.h
+++ b/include/hardware/gralloc.h
@@ -162,6 +162,8 @@
int (*unlock)(struct gralloc_module_t const* module,
buffer_handle_t handle);
+ /* reserved for future use */
+ void* reserved_proc[8];
} gralloc_module_t;
/*****************************************************************************/
@@ -254,7 +256,7 @@
* the screen to the display panel, upon demand -- as opposed to
* constantly refreshing the panel 60 times per second, for instance.
*
- * Only the area defined by this rectangle is guranteed to be valid, that
+ * Only the area defined by this rectangle is guaranteed to be valid, that
* is, the driver is not allowed to post anything outside of this
* rectangle.
*
@@ -287,6 +289,15 @@
*/
int (*post)(struct framebuffer_device_t* dev, buffer_handle_t buffer);
+
+ /*
+ * The (*compositionComplete)() method must be called after the
+ * compositor has finished issuing GL commands for client buffers.
+ */
+
+ int (*compositionComplete)(struct framebuffer_device_t* dev);
+
+
void* reserved_proc[8];
} framebuffer_device_t;