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
This commit is contained in:
parent
82c6bcc970
commit
cf3834db10
|
@ -44,6 +44,7 @@ class BufferItem : public Flattenable<BufferItem> {
|
||||||
// The default value of mBuf, used to indicate this doesn't correspond to a slot.
|
// The default value of mBuf, used to indicate this doesn't correspond to a slot.
|
||||||
enum { INVALID_BUFFER_SLOT = -1 };
|
enum { INVALID_BUFFER_SLOT = -1 };
|
||||||
BufferItem();
|
BufferItem();
|
||||||
|
BufferItem(const IGraphicBufferConsumer::BufferItem& item);
|
||||||
~BufferItem();
|
~BufferItem();
|
||||||
operator IGraphicBufferConsumer::BufferItem() const;
|
operator IGraphicBufferConsumer::BufferItem() const;
|
||||||
|
|
||||||
|
@ -86,8 +87,13 @@ class BufferItem : public Flattenable<BufferItem> {
|
||||||
// mFrameNumber is the number of the queued frame for this slot.
|
// mFrameNumber is the number of the queued frame for this slot.
|
||||||
uint64_t mFrameNumber;
|
uint64_t mFrameNumber;
|
||||||
|
|
||||||
// mSlot is the slot index of this buffer (default INVALID_BUFFER_SLOT).
|
union {
|
||||||
int mSlot;
|
// mSlot is the slot index of this buffer (default INVALID_BUFFER_SLOT).
|
||||||
|
int mSlot;
|
||||||
|
|
||||||
|
// mBuf is the former name for mSlot
|
||||||
|
int mBuf;
|
||||||
|
};
|
||||||
|
|
||||||
// mIsDroppable whether this buffer was queued with the
|
// mIsDroppable whether this buffer was queued with the
|
||||||
// property that it can be replaced by a new buffer for the purpose of
|
// property that it can be replaced by a new buffer for the purpose of
|
||||||
|
|
|
@ -76,8 +76,10 @@ class BufferItemConsumer: public ConsumerBase
|
||||||
//
|
//
|
||||||
// If waitForFence is true, and the acquired BufferItem has a valid fence object,
|
// If waitForFence is true, and the acquired BufferItem has a valid fence object,
|
||||||
// acquireBuffer will wait on the fence with no timeout before returning.
|
// acquireBuffer will wait on the fence with no timeout before returning.
|
||||||
status_t acquireBuffer(BufferItem *item, nsecs_t presentWhen,
|
status_t acquireBuffer(BufferQueue::BufferItem *item, nsecs_t presentWhen,
|
||||||
bool waitForFence = true);
|
bool waitForFence = true);
|
||||||
|
status_t acquireBuffer(android::BufferItem* item, nsecs_t presentWhen,
|
||||||
|
bool waitForFence = true);
|
||||||
|
|
||||||
// Returns an acquired buffer to the queue, allowing it to be reused. Since
|
// Returns an acquired buffer to the queue, allowing it to be reused. Since
|
||||||
// only a fixed number of buffers may be acquired at a time, old buffers
|
// only a fixed number of buffers may be acquired at a time, old buffers
|
||||||
|
|
|
@ -48,6 +48,8 @@ public:
|
||||||
// is CLOCK_MONOTONIC.
|
// is CLOCK_MONOTONIC.
|
||||||
virtual status_t acquireBuffer(BufferItem* outBuffer,
|
virtual status_t acquireBuffer(BufferItem* outBuffer,
|
||||||
nsecs_t expectedPresent);
|
nsecs_t expectedPresent);
|
||||||
|
virtual status_t acquireBuffer(android::BufferItem* outBuffer,
|
||||||
|
nsecs_t expectedPresent);
|
||||||
|
|
||||||
// See IGraphicBufferConsumer::detachBuffer
|
// See IGraphicBufferConsumer::detachBuffer
|
||||||
virtual status_t detachBuffer(int slot);
|
virtual status_t detachBuffer(int slot);
|
||||||
|
|
|
@ -153,8 +153,8 @@ protected:
|
||||||
// initialization that must take place the first time a buffer is assigned
|
// initialization that must take place the first time a buffer is assigned
|
||||||
// to a slot. If it is overridden the derived class's implementation must
|
// to a slot. If it is overridden the derived class's implementation must
|
||||||
// call ConsumerBase::acquireBufferLocked.
|
// call ConsumerBase::acquireBufferLocked.
|
||||||
virtual status_t acquireBufferLocked(IGraphicBufferConsumer::BufferItem *item,
|
virtual status_t acquireBufferLocked(BufferItem *item, nsecs_t presentWhen);
|
||||||
nsecs_t presentWhen);
|
virtual status_t acquireBufferLocked(BufferQueue::BufferItem *item, nsecs_t presentWhen);
|
||||||
|
|
||||||
// releaseBufferLocked relinquishes control over a buffer, returning that
|
// releaseBufferLocked relinquishes control over a buffer, returning that
|
||||||
// control to the BufferQueue.
|
// control to the BufferQueue.
|
||||||
|
|
|
@ -241,8 +241,8 @@ protected:
|
||||||
|
|
||||||
// acquireBufferLocked overrides the ConsumerBase method to update the
|
// acquireBufferLocked overrides the ConsumerBase method to update the
|
||||||
// mEglSlots array in addition to the ConsumerBase behavior.
|
// mEglSlots array in addition to the ConsumerBase behavior.
|
||||||
virtual status_t acquireBufferLocked(BufferQueue::BufferItem *item,
|
virtual status_t acquireBufferLocked(BufferItem *item, nsecs_t presentWhen);
|
||||||
nsecs_t presentWhen);
|
virtual status_t acquireBufferLocked(IGraphicBufferConsumer::BufferItem *item, nsecs_t presentWhen);
|
||||||
|
|
||||||
// releaseBufferLocked overrides the ConsumerBase method to update the
|
// releaseBufferLocked overrides the ConsumerBase method to update the
|
||||||
// mEglSlots array in addition to the ConsumerBase.
|
// mEglSlots array in addition to the ConsumerBase.
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
namespace android {
|
namespace android {
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class BufferItem;
|
||||||
class Fence;
|
class Fence;
|
||||||
class GraphicBuffer;
|
class GraphicBuffer;
|
||||||
class IConsumerListener;
|
class IConsumerListener;
|
||||||
|
@ -147,6 +148,7 @@ public:
|
||||||
// Return of a negative value means an error has occurred:
|
// Return of a negative value means an error has occurred:
|
||||||
// * INVALID_OPERATION - too many buffers have been acquired
|
// * INVALID_OPERATION - too many buffers have been acquired
|
||||||
virtual status_t acquireBuffer(BufferItem* buffer, nsecs_t presentWhen) = 0;
|
virtual status_t acquireBuffer(BufferItem* buffer, nsecs_t presentWhen) = 0;
|
||||||
|
virtual status_t acquireBuffer(android::BufferItem* buffer, nsecs_t presentWhen) = 0;
|
||||||
|
|
||||||
// detachBuffer attempts to remove all ownership of the buffer in the given
|
// detachBuffer attempts to remove all ownership of the buffer in the given
|
||||||
// slot from the buffer queue. If this call succeeds, the slot will be
|
// slot from the buffer queue. If this call succeeds, the slot will be
|
||||||
|
|
|
@ -37,6 +37,21 @@ BufferItem::BufferItem() :
|
||||||
mCrop.makeInvalid();
|
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::~BufferItem() {}
|
||||||
|
|
||||||
BufferItem::operator IGraphicBufferConsumer::BufferItem() const {
|
BufferItem::operator IGraphicBufferConsumer::BufferItem() const {
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
//#define ATRACE_TAG ATRACE_TAG_GRAPHICS
|
//#define ATRACE_TAG ATRACE_TAG_GRAPHICS
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
|
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/BufferItemConsumer.h>
|
#include <gui/BufferItemConsumer.h>
|
||||||
|
|
||||||
//#define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__)
|
//#define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__)
|
||||||
|
@ -52,7 +53,7 @@ void BufferItemConsumer::setName(const String8& name) {
|
||||||
mConsumer->setConsumerName(name);
|
mConsumer->setConsumerName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t BufferItemConsumer::acquireBuffer(BufferItem *item,
|
status_t BufferItemConsumer::acquireBuffer(BufferQueue::BufferItem *item,
|
||||||
nsecs_t presentWhen, bool waitForFence) {
|
nsecs_t presentWhen, bool waitForFence) {
|
||||||
status_t err;
|
status_t err;
|
||||||
|
|
||||||
|
@ -82,6 +83,17 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item,
|
||||||
return OK;
|
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,
|
status_t BufferItemConsumer::releaseBuffer(const BufferItem &item,
|
||||||
const sp<Fence>& releaseFence) {
|
const sp<Fence>& releaseFence) {
|
||||||
status_t err;
|
status_t err;
|
||||||
|
|
|
@ -176,6 +176,22 @@ status_t BufferQueueConsumer::acquireBuffer(BufferItem* outBuffer,
|
||||||
return NO_ERROR;
|
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) {
|
status_t BufferQueueConsumer::detachBuffer(int slot) {
|
||||||
ATRACE_CALL();
|
ATRACE_CALL();
|
||||||
ATRACE_BUFFER_INDEX(slot);
|
ATRACE_BUFFER_INDEX(slot);
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
#include <hardware/hardware.h>
|
#include <hardware/hardware.h>
|
||||||
|
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/IGraphicBufferAlloc.h>
|
#include <gui/IGraphicBufferAlloc.h>
|
||||||
#include <gui/ISurfaceComposer.h>
|
#include <gui/ISurfaceComposer.h>
|
||||||
#include <gui/SurfaceComposerClient.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) {
|
nsecs_t presentWhen) {
|
||||||
status_t err = mConsumer->acquireBuffer(item, presentWhen);
|
status_t err = mConsumer->acquireBuffer(item, presentWhen);
|
||||||
if (err != NO_ERROR) {
|
if (err != NO_ERROR) {
|
||||||
|
@ -199,6 +200,17 @@ status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item,
|
||||||
return OK;
|
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,
|
status_t ConsumerBase::addReleaseFence(int slot,
|
||||||
const sp<GraphicBuffer> graphicBuffer, const sp<Fence>& fence) {
|
const sp<GraphicBuffer> graphicBuffer, const sp<Fence>& fence) {
|
||||||
Mutex::Autolock lock(mMutex);
|
Mutex::Autolock lock(mMutex);
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include <cutils/compiler.h>
|
#include <cutils/compiler.h>
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/CpuConsumer.h>
|
#include <gui/CpuConsumer.h>
|
||||||
|
|
||||||
#define CC_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__)
|
#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;
|
return NOT_ENOUGH_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferQueue::BufferItem b;
|
BufferItem b;
|
||||||
|
|
||||||
Mutex::Autolock _l(mMutex);
|
Mutex::Autolock _l(mMutex);
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include <hardware/hardware.h>
|
#include <hardware/hardware.h>
|
||||||
|
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/GLConsumer.h>
|
#include <gui/GLConsumer.h>
|
||||||
#include <gui/IGraphicBufferAlloc.h>
|
#include <gui/IGraphicBufferAlloc.h>
|
||||||
#include <gui/ISurfaceComposer.h>
|
#include <gui/ISurfaceComposer.h>
|
||||||
|
@ -210,7 +211,7 @@ status_t GLConsumer::updateTexImage() {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferQueue::BufferItem item;
|
BufferItem item;
|
||||||
|
|
||||||
// Acquire the next buffer.
|
// Acquire the next buffer.
|
||||||
// In asynchronous mode the list is guaranteed to be one buffer
|
// In asynchronous mode the list is guaranteed to be one buffer
|
||||||
|
@ -342,7 +343,7 @@ sp<GraphicBuffer> GLConsumer::getDebugTexImageBuffer() {
|
||||||
return sReleasedTexImageBuffer;
|
return sReleasedTexImageBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t GLConsumer::acquireBufferLocked(BufferQueue::BufferItem *item,
|
status_t GLConsumer::acquireBufferLocked(BufferItem *item,
|
||||||
nsecs_t presentWhen) {
|
nsecs_t presentWhen) {
|
||||||
status_t err = ConsumerBase::acquireBufferLocked(item, presentWhen);
|
status_t err = ConsumerBase::acquireBufferLocked(item, presentWhen);
|
||||||
if (err != NO_ERROR) {
|
if (err != NO_ERROR) {
|
||||||
|
@ -360,6 +361,17 @@ status_t GLConsumer::acquireBufferLocked(BufferQueue::BufferItem *item,
|
||||||
return NO_ERROR;
|
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,
|
status_t GLConsumer::releaseBufferLocked(int buf,
|
||||||
sp<GraphicBuffer> graphicBuffer,
|
sp<GraphicBuffer> graphicBuffer,
|
||||||
EGLDisplay display, EGLSyncKHR eglFence) {
|
EGLDisplay display, EGLSyncKHR eglFence) {
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <binder/Parcel.h>
|
#include <binder/Parcel.h>
|
||||||
#include <binder/IInterface.h>
|
#include <binder/IInterface.h>
|
||||||
|
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/IConsumerListener.h>
|
#include <gui/IConsumerListener.h>
|
||||||
#include <gui/IGraphicBufferConsumer.h>
|
#include <gui/IGraphicBufferConsumer.h>
|
||||||
|
|
||||||
|
@ -237,6 +238,21 @@ public:
|
||||||
return reply.readInt32();
|
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) {
|
virtual status_t detachBuffer(int slot) {
|
||||||
Parcel data, reply;
|
Parcel data, reply;
|
||||||
data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor());
|
data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor());
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
|
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
|
||||||
//#define LOG_NDEBUG 0
|
//#define LOG_NDEBUG 0
|
||||||
|
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/IGraphicBufferConsumer.h>
|
#include <gui/IGraphicBufferConsumer.h>
|
||||||
#include <gui/IGraphicBufferProducer.h>
|
#include <gui/IGraphicBufferProducer.h>
|
||||||
#include <gui/StreamSplitter.h>
|
#include <gui/StreamSplitter.h>
|
||||||
|
@ -123,7 +124,7 @@ void StreamSplitter::onFrameAvailable(const BufferItem& /* item */) {
|
||||||
++mOutstandingBuffers;
|
++mOutstandingBuffers;
|
||||||
|
|
||||||
// Acquire and detach the buffer from the input
|
// Acquire and detach the buffer from the input
|
||||||
IGraphicBufferConsumer::BufferItem bufferItem;
|
BufferItem bufferItem;
|
||||||
status_t status = mInput->acquireBuffer(&bufferItem, /* presentWhen */ 0);
|
status_t status = mInput->acquireBuffer(&bufferItem, /* presentWhen */ 0);
|
||||||
LOG_ALWAYS_FATAL_IF(status != NO_ERROR,
|
LOG_ALWAYS_FATAL_IF(status != NO_ERROR,
|
||||||
"acquiring buffer from input failed (%d)", status);
|
"acquiring buffer from input failed (%d)", status);
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#define LOG_TAG "BufferQueue_test"
|
#define LOG_TAG "BufferQueue_test"
|
||||||
//#define LOG_NDEBUG 0
|
//#define LOG_NDEBUG 0
|
||||||
|
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/BufferQueue.h>
|
#include <gui/BufferQueue.h>
|
||||||
#include <gui/IProducerListener.h>
|
#include <gui/IProducerListener.h>
|
||||||
|
|
||||||
|
@ -129,7 +130,7 @@ TEST_F(BufferQueueTest, BufferQueueInAnotherProcess) {
|
||||||
NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE);
|
NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE);
|
||||||
ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output));
|
ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output));
|
||||||
|
|
||||||
IGraphicBufferConsumer::BufferItem item;
|
BufferItem item;
|
||||||
ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, 0));
|
ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, 0));
|
||||||
|
|
||||||
uint32_t* dataOut;
|
uint32_t* dataOut;
|
||||||
|
@ -154,7 +155,7 @@ TEST_F(BufferQueueTest, AcquireBuffer_ExceedsMaxAcquireCount_Fails) {
|
||||||
IGraphicBufferProducer::QueueBufferInput qbi(0, false,
|
IGraphicBufferProducer::QueueBufferInput qbi(0, false,
|
||||||
HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1),
|
HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1),
|
||||||
NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE);
|
NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE);
|
||||||
BufferQueue::BufferItem item;
|
BufferItem item;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
ASSERT_EQ(IGraphicBufferProducer::BUFFER_NEEDS_REALLOCATION,
|
ASSERT_EQ(IGraphicBufferProducer::BUFFER_NEEDS_REALLOCATION,
|
||||||
|
@ -251,7 +252,7 @@ TEST_F(BufferQueueTest, DetachAndReattachOnProducerSide) {
|
||||||
NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE);
|
NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE);
|
||||||
ASSERT_EQ(OK, mProducer->queueBuffer(newSlot, input, &output));
|
ASSERT_EQ(OK, mProducer->queueBuffer(newSlot, input, &output));
|
||||||
|
|
||||||
IGraphicBufferConsumer::BufferItem item;
|
BufferItem item;
|
||||||
ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, static_cast<nsecs_t>(0)));
|
ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, static_cast<nsecs_t>(0)));
|
||||||
|
|
||||||
uint32_t* dataOut;
|
uint32_t* dataOut;
|
||||||
|
@ -286,7 +287,7 @@ TEST_F(BufferQueueTest, DetachAndReattachOnConsumerSide) {
|
||||||
BufferQueueDefs::NUM_BUFFER_SLOTS)); // Index too high
|
BufferQueueDefs::NUM_BUFFER_SLOTS)); // Index too high
|
||||||
ASSERT_EQ(BAD_VALUE, mConsumer->detachBuffer(0)); // Not acquired
|
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->acquireBuffer(&item, static_cast<nsecs_t>(0)));
|
||||||
|
|
||||||
ASSERT_EQ(OK, mConsumer->detachBuffer(item.mBuf));
|
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);
|
NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE);
|
||||||
ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output));
|
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->acquireBuffer(&item, static_cast<nsecs_t>(0)));
|
||||||
ASSERT_EQ(OK, mConsumer->detachBuffer(item.mBuf));
|
ASSERT_EQ(OK, mConsumer->detachBuffer(item.mBuf));
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#define LOG_TAG "StreamSplitter_test"
|
#define LOG_TAG "StreamSplitter_test"
|
||||||
//#define LOG_NDEBUG 0
|
//#define LOG_NDEBUG 0
|
||||||
|
|
||||||
|
#include <gui/BufferItem.h>
|
||||||
#include <gui/BufferQueue.h>
|
#include <gui/BufferQueue.h>
|
||||||
#include <gui/IConsumerListener.h>
|
#include <gui/IConsumerListener.h>
|
||||||
#include <gui/ISurfaceComposer.h>
|
#include <gui/ISurfaceComposer.h>
|
||||||
|
@ -116,7 +117,7 @@ TEST_F(StreamSplitterTest, OneInputOneOutput) {
|
||||||
Fence::NO_FENCE);
|
Fence::NO_FENCE);
|
||||||
ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput));
|
ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput));
|
||||||
|
|
||||||
IGraphicBufferConsumer::BufferItem item;
|
BufferItem item;
|
||||||
ASSERT_EQ(OK, outputConsumer->acquireBuffer(&item, 0));
|
ASSERT_EQ(OK, outputConsumer->acquireBuffer(&item, 0));
|
||||||
|
|
||||||
uint32_t* dataOut;
|
uint32_t* dataOut;
|
||||||
|
@ -184,7 +185,7 @@ TEST_F(StreamSplitterTest, OneInputMultipleOutputs) {
|
||||||
ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput));
|
ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput));
|
||||||
|
|
||||||
for (int output = 0; output < NUM_OUTPUTS; ++output) {
|
for (int output = 0; output < NUM_OUTPUTS; ++output) {
|
||||||
IGraphicBufferConsumer::BufferItem item;
|
BufferItem item;
|
||||||
ASSERT_EQ(OK, outputConsumers[output]->acquireBuffer(&item, 0));
|
ASSERT_EQ(OK, outputConsumers[output]->acquireBuffer(&item, 0));
|
||||||
|
|
||||||
uint32_t* dataOut;
|
uint32_t* dataOut;
|
||||||
|
|
Loading…
Reference in New Issue