From 99a0afbaee9eddabc2b544e3a5c432901c1d498c Mon Sep 17 00:00:00 2001 From: Eric Penner Date: Tue, 30 Sep 2014 11:28:30 -0700 Subject: BufferQueueProducer: Throttle EGL frame production. Throttling was previously controlled by a combination of the driver and the number of buffers in the queue. This patch makes a more consistent trade-off, which allows two GPU frames pending but not three. More buffering could improve throughput in the case of varying frame times, but this also increases latency. Bug: 17502897 Change-Id: I4ee68019ca94c635294c5959931a555a6c4ef2df --- include/gui/BufferQueueProducer.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'include') diff --git a/include/gui/BufferQueueProducer.h b/include/gui/BufferQueueProducer.h index 3fc5de2..c619a11 100644 --- a/include/gui/BufferQueueProducer.h +++ b/include/gui/BufferQueueProducer.h @@ -197,6 +197,12 @@ private: uint32_t mStickyTransform; + // This saves the fence from the last queueBuffer, such that the + // next queueBuffer call can throttle buffer production. The prior + // queueBuffer's fence is not nessessarily available elsewhere, + // since the previous buffer might have already been acquired. + sp mLastQueueBufferFence; + }; // class BufferQueueProducer } // namespace android -- cgit v1.1