From 957985be86bb17f227ff0c8aefbed7d1d1fe54fe Mon Sep 17 00:00:00 2001 From: Brian Lindahl Date: Tue, 31 Jan 2023 15:42:47 -0700 Subject: Increase frame history size when SF buffer queue size changes While the existing frame history size is sufficient for graphics, the buffer queue sizes for video playback are much larger (more pipelined) so in order for accurate frame tracking of video frames, increase the frame event history size based on the buffer queue size (pipeline size), so that buffer queue producers can always track all frames that have been queued. Bug: 234833109 Test: atest DecoderRenderTest Change-Id: Ida587a239a03f74ebb099d8634ff722a500fcdda --- libs/gui/BufferQueueProducer.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libs/gui/BufferQueueProducer.cpp') diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 5fe5e71db9..9eb1a9f526 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -119,6 +119,12 @@ status_t BufferQueueProducer::requestBuffer(int slot, sp* buf) { status_t BufferQueueProducer::setMaxDequeuedBufferCount( int maxDequeuedBuffers) { + int maxBufferCount; + return setMaxDequeuedBufferCount(maxDequeuedBuffers, &maxBufferCount); +} + +status_t BufferQueueProducer::setMaxDequeuedBufferCount(int maxDequeuedBuffers, + int* maxBufferCount) { ATRACE_CALL(); BQ_LOGV("setMaxDequeuedBufferCount: maxDequeuedBuffers = %d", maxDequeuedBuffers); @@ -134,6 +140,8 @@ status_t BufferQueueProducer::setMaxDequeuedBufferCount( return NO_INIT; } + *maxBufferCount = mCore->getMaxBufferCountLocked(); + if (maxDequeuedBuffers == mCore->mMaxDequeuedBufferCount) { return NO_ERROR; } @@ -183,6 +191,7 @@ status_t BufferQueueProducer::setMaxDequeuedBufferCount( return BAD_VALUE; } mCore->mMaxDequeuedBufferCount = maxDequeuedBuffers; + *maxBufferCount = mCore->getMaxBufferCountLocked(); VALIDATE_CONSISTENCY(); if (delta < 0) { listener = mCore->mConsumerListener; -- cgit v1.2.3-59-g8ed1b