diff options
author | Dan Stoza <stoza@google.com> | 2015-03-11 14:04:22 -0700 |
---|---|---|
committer | Dan Stoza <stoza@google.com> | 2015-03-19 13:58:07 -0700 |
commit | cf3834db104e0b052056e3a06d46e3f222f0d372 (patch) | |
tree | 7f8bdabc545370935e0f4fbde18b1a92a427144d /libs | |
parent | 82c6bcc9705eabcaf5b9e45bc81867b0e2d61a02 (diff) | |
download | frameworks_native-cf3834db104e0b052056e3a06d46e3f222f0d372.zip frameworks_native-cf3834db104e0b052056e3a06d46e3f222f0d372.tar.gz frameworks_native-cf3834db104e0b052056e3a06d46e3f222f0d372.tar.bz2 |
DO NOT MERGE libgui: Prepare for IGBC::BufferItem removal
Currently, there are two instances of BufferItem: one inside of
IGraphicBufferConsumer, and a standalone one inside of libgui. They
only differ in the name of one of the fields, and we want to remove
the IGBC version. This changes things so that client code may be
incrementally switched over to the libgui version.
This is a squashed commit containing the following changes:
I64f495105f56cbf5803cea4aa6b072ea29b70cf5
I1394e693314429ada93427889f10b7b01c948053
I9c3bc8037fa9438d4d9080b8afb694219ef2f71f
I699ed0a6837076867ca756b28d1ffb2238f7a0d9
Iac8425e1241774304a131da2fb9dec6e82922f13
Change-Id: Ic4d51f5df6dbc70b376d13fceba2335b9bae4f3d
Diffstat (limited to 'libs')
-rw-r--r-- | libs/gui/BufferItem.cpp | 15 | ||||
-rw-r--r-- | libs/gui/BufferItemConsumer.cpp | 14 | ||||
-rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 16 | ||||
-rw-r--r-- | libs/gui/ConsumerBase.cpp | 14 | ||||
-rw-r--r-- | libs/gui/CpuConsumer.cpp | 3 | ||||
-rw-r--r-- | libs/gui/GLConsumer.cpp | 16 | ||||
-rw-r--r-- | libs/gui/IGraphicBufferConsumer.cpp | 16 | ||||
-rw-r--r-- | libs/gui/StreamSplitter.cpp | 3 | ||||
-rw-r--r-- | libs/gui/tests/BufferQueue_test.cpp | 11 | ||||
-rw-r--r-- | libs/gui/tests/StreamSplitter_test.cpp | 5 |
10 files changed, 100 insertions, 13 deletions
diff --git a/libs/gui/BufferItem.cpp b/libs/gui/BufferItem.cpp index f3a37ca..389d867 100644 --- a/libs/gui/BufferItem.cpp +++ b/libs/gui/BufferItem.cpp @@ -37,6 +37,21 @@ BufferItem::BufferItem() : mCrop.makeInvalid(); } +BufferItem::BufferItem(const IGraphicBufferConsumer::BufferItem& item) : + mGraphicBuffer(item.mGraphicBuffer), + mFence(item.mFence), + mCrop(item.mCrop), + mTransform(item.mTransform), + mScalingMode(item.mScalingMode), + mTimestamp(item.mTimestamp), + mIsAutoTimestamp(item.mIsAutoTimestamp), + mDataSpace(item.mDataSpace), + mFrameNumber(item.mFrameNumber), + mSlot(item.mBuf), + mIsDroppable(item.mIsDroppable), + mAcquireCalled(item.mAcquireCalled), + mTransformToDisplayInverse(item.mTransformToDisplayInverse) {} + BufferItem::~BufferItem() {} BufferItem::operator IGraphicBufferConsumer::BufferItem() const { diff --git a/libs/gui/BufferItemConsumer.cpp b/libs/gui/BufferItemConsumer.cpp index 655bfe6..fb978dd 100644 --- a/libs/gui/BufferItemConsumer.cpp +++ b/libs/gui/BufferItemConsumer.cpp @@ -19,6 +19,7 @@ //#define ATRACE_TAG ATRACE_TAG_GRAPHICS #include <utils/Log.h> +#include <gui/BufferItem.h> #include <gui/BufferItemConsumer.h> //#define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__) @@ -52,7 +53,7 @@ void BufferItemConsumer::setName(const String8& name) { mConsumer->setConsumerName(name); } -status_t BufferItemConsumer::acquireBuffer(BufferItem *item, +status_t BufferItemConsumer::acquireBuffer(BufferQueue::BufferItem *item, nsecs_t presentWhen, bool waitForFence) { status_t err; @@ -82,6 +83,17 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item, return OK; } +status_t BufferItemConsumer::acquireBuffer(android::BufferItem* outItem, + nsecs_t presentWhen, bool waitForFence) { + BufferQueue::BufferItem item; + status_t result = acquireBuffer(&item, presentWhen, waitForFence); + if (result != NO_ERROR) { + return result; + } + *outItem = item; + return NO_ERROR; +} + status_t BufferItemConsumer::releaseBuffer(const BufferItem &item, const sp<Fence>& releaseFence) { status_t err; diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index 526c3b7..821a744 100644 --- a/libs/gui/BufferQueueConsumer.cpp +++ b/libs/gui/BufferQueueConsumer.cpp @@ -176,6 +176,22 @@ status_t BufferQueueConsumer::acquireBuffer(BufferItem* outBuffer, return NO_ERROR; } +status_t BufferQueueConsumer::acquireBuffer(android::BufferItem* outBuffer, + nsecs_t expectedPresent) { + if (outBuffer == nullptr) { + return BAD_VALUE; + } + + BufferItem item; + status_t result = acquireBuffer(&item, expectedPresent); + if (result != NO_ERROR) { + return result; + } + + *outBuffer = item; + return NO_ERROR; +} + status_t BufferQueueConsumer::detachBuffer(int slot) { ATRACE_CALL(); ATRACE_BUFFER_INDEX(slot); diff --git a/libs/gui/ConsumerBase.cpp b/libs/gui/ConsumerBase.cpp index 5fc83ee..c8b5d0c 100644 --- a/libs/gui/ConsumerBase.cpp +++ b/libs/gui/ConsumerBase.cpp @@ -27,6 +27,7 @@ #include <hardware/hardware.h> +#include <gui/BufferItem.h> #include <gui/IGraphicBufferAlloc.h> #include <gui/ISurfaceComposer.h> #include <gui/SurfaceComposerClient.h> @@ -179,7 +180,7 @@ void ConsumerBase::dumpLocked(String8& result, const char* prefix) const { } } -status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item, +status_t ConsumerBase::acquireBufferLocked(BufferItem *item, nsecs_t presentWhen) { status_t err = mConsumer->acquireBuffer(item, presentWhen); if (err != NO_ERROR) { @@ -199,6 +200,17 @@ status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item, return OK; } +status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *outItem, + nsecs_t presentWhen) { + BufferItem item; + status_t result = acquireBufferLocked(&item, presentWhen); + if (result != NO_ERROR) { + return result; + } + *outItem = item; + return NO_ERROR; +} + status_t ConsumerBase::addReleaseFence(int slot, const sp<GraphicBuffer> graphicBuffer, const sp<Fence>& fence) { Mutex::Autolock lock(mMutex); diff --git a/libs/gui/CpuConsumer.cpp b/libs/gui/CpuConsumer.cpp index a7ca055..eb39469 100644 --- a/libs/gui/CpuConsumer.cpp +++ b/libs/gui/CpuConsumer.cpp @@ -20,6 +20,7 @@ #include <cutils/compiler.h> #include <utils/Log.h> +#include <gui/BufferItem.h> #include <gui/CpuConsumer.h> #define CC_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__) @@ -110,7 +111,7 @@ status_t CpuConsumer::lockNextBuffer(LockedBuffer *nativeBuffer) { return NOT_ENOUGH_DATA; } - BufferQueue::BufferItem b; + BufferItem b; Mutex::Autolock _l(mMutex); diff --git a/libs/gui/GLConsumer.cpp b/libs/gui/GLConsumer.cpp index 21bb4c4..d256ae5 100644 --- a/libs/gui/GLConsumer.cpp +++ b/libs/gui/GLConsumer.cpp @@ -29,6 +29,7 @@ #include <hardware/hardware.h> +#include <gui/BufferItem.h> #include <gui/GLConsumer.h> #include <gui/IGraphicBufferAlloc.h> #include <gui/ISurfaceComposer.h> @@ -210,7 +211,7 @@ status_t GLConsumer::updateTexImage() { return err; } - BufferQueue::BufferItem item; + BufferItem item; // Acquire the next buffer. // In asynchronous mode the list is guaranteed to be one buffer @@ -342,7 +343,7 @@ sp<GraphicBuffer> GLConsumer::getDebugTexImageBuffer() { return sReleasedTexImageBuffer; } -status_t GLConsumer::acquireBufferLocked(BufferQueue::BufferItem *item, +status_t GLConsumer::acquireBufferLocked(BufferItem *item, nsecs_t presentWhen) { status_t err = ConsumerBase::acquireBufferLocked(item, presentWhen); if (err != NO_ERROR) { @@ -360,6 +361,17 @@ status_t GLConsumer::acquireBufferLocked(BufferQueue::BufferItem *item, return NO_ERROR; } +status_t GLConsumer::acquireBufferLocked(BufferQueue::BufferItem *outItem, + nsecs_t presentWhen) { + BufferItem item; + status_t result = acquireBufferLocked(&item, presentWhen); + if (result != NO_ERROR) { + return result; + } + *outItem = item; + return NO_ERROR; +} + status_t GLConsumer::releaseBufferLocked(int buf, sp<GraphicBuffer> graphicBuffer, EGLDisplay display, EGLSyncKHR eglFence) { diff --git a/libs/gui/IGraphicBufferConsumer.cpp b/libs/gui/IGraphicBufferConsumer.cpp index f38abbe..edf4408 100644 --- a/libs/gui/IGraphicBufferConsumer.cpp +++ b/libs/gui/IGraphicBufferConsumer.cpp @@ -23,6 +23,7 @@ #include <binder/Parcel.h> #include <binder/IInterface.h> +#include <gui/BufferItem.h> #include <gui/IConsumerListener.h> #include <gui/IGraphicBufferConsumer.h> @@ -237,6 +238,21 @@ public: return reply.readInt32(); } + virtual status_t acquireBuffer(android::BufferItem* buffer, + nsecs_t presentWhen) { + if (buffer == nullptr) { + return BAD_VALUE; + } + + BufferItem item; + status_t result = acquireBuffer(&item, presentWhen); + if (result != NO_ERROR) { + return result; + } + *buffer = item; + return NO_ERROR; + } + virtual status_t detachBuffer(int slot) { Parcel data, reply; data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor()); diff --git a/libs/gui/StreamSplitter.cpp b/libs/gui/StreamSplitter.cpp index 1461337..43f9214 100644 --- a/libs/gui/StreamSplitter.cpp +++ b/libs/gui/StreamSplitter.cpp @@ -20,6 +20,7 @@ #define ATRACE_TAG ATRACE_TAG_GRAPHICS //#define LOG_NDEBUG 0 +#include <gui/BufferItem.h> #include <gui/IGraphicBufferConsumer.h> #include <gui/IGraphicBufferProducer.h> #include <gui/StreamSplitter.h> @@ -123,7 +124,7 @@ void StreamSplitter::onFrameAvailable(const BufferItem& /* item */) { ++mOutstandingBuffers; // Acquire and detach the buffer from the input - IGraphicBufferConsumer::BufferItem bufferItem; + BufferItem bufferItem; status_t status = mInput->acquireBuffer(&bufferItem, /* presentWhen */ 0); LOG_ALWAYS_FATAL_IF(status != NO_ERROR, "acquiring buffer from input failed (%d)", status); diff --git a/libs/gui/tests/BufferQueue_test.cpp b/libs/gui/tests/BufferQueue_test.cpp index 80119de..c38c797 100644 --- a/libs/gui/tests/BufferQueue_test.cpp +++ b/libs/gui/tests/BufferQueue_test.cpp @@ -17,6 +17,7 @@ #define LOG_TAG "BufferQueue_test" //#define LOG_NDEBUG 0 +#include <gui/BufferItem.h> #include <gui/BufferQueue.h> #include <gui/IProducerListener.h> @@ -129,7 +130,7 @@ TEST_F(BufferQueueTest, BufferQueueInAnotherProcess) { NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output)); - IGraphicBufferConsumer::BufferItem item; + BufferItem item; ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, 0)); uint32_t* dataOut; @@ -154,7 +155,7 @@ TEST_F(BufferQueueTest, AcquireBuffer_ExceedsMaxAcquireCount_Fails) { IGraphicBufferProducer::QueueBufferInput qbi(0, false, HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); - BufferQueue::BufferItem item; + BufferItem item; for (int i = 0; i < 2; i++) { ASSERT_EQ(IGraphicBufferProducer::BUFFER_NEEDS_REALLOCATION, @@ -251,7 +252,7 @@ TEST_F(BufferQueueTest, DetachAndReattachOnProducerSide) { NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, mProducer->queueBuffer(newSlot, input, &output)); - IGraphicBufferConsumer::BufferItem item; + BufferItem item; ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, static_cast<nsecs_t>(0))); uint32_t* dataOut; @@ -286,7 +287,7 @@ TEST_F(BufferQueueTest, DetachAndReattachOnConsumerSide) { BufferQueueDefs::NUM_BUFFER_SLOTS)); // Index too high ASSERT_EQ(BAD_VALUE, mConsumer->detachBuffer(0)); // Not acquired - IGraphicBufferConsumer::BufferItem item; + BufferItem item; ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, static_cast<nsecs_t>(0))); ASSERT_EQ(OK, mConsumer->detachBuffer(item.mBuf)); @@ -347,7 +348,7 @@ TEST_F(BufferQueueTest, MoveFromConsumerToProducer) { NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output)); - IGraphicBufferConsumer::BufferItem item; + BufferItem item; ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, static_cast<nsecs_t>(0))); ASSERT_EQ(OK, mConsumer->detachBuffer(item.mBuf)); diff --git a/libs/gui/tests/StreamSplitter_test.cpp b/libs/gui/tests/StreamSplitter_test.cpp index 429ab6c..767c7c6 100644 --- a/libs/gui/tests/StreamSplitter_test.cpp +++ b/libs/gui/tests/StreamSplitter_test.cpp @@ -17,6 +17,7 @@ #define LOG_TAG "StreamSplitter_test" //#define LOG_NDEBUG 0 +#include <gui/BufferItem.h> #include <gui/BufferQueue.h> #include <gui/IConsumerListener.h> #include <gui/ISurfaceComposer.h> @@ -116,7 +117,7 @@ TEST_F(StreamSplitterTest, OneInputOneOutput) { Fence::NO_FENCE); ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput)); - IGraphicBufferConsumer::BufferItem item; + BufferItem item; ASSERT_EQ(OK, outputConsumer->acquireBuffer(&item, 0)); uint32_t* dataOut; @@ -184,7 +185,7 @@ TEST_F(StreamSplitterTest, OneInputMultipleOutputs) { ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput)); for (int output = 0; output < NUM_OUTPUTS; ++output) { - IGraphicBufferConsumer::BufferItem item; + BufferItem item; ASSERT_EQ(OK, outputConsumers[output]->acquireBuffer(&item, 0)); uint32_t* dataOut; |