diff options
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/gui/BufferItem.cpp | 20 | ||||
| -rw-r--r-- | libs/gui/BufferItemConsumer.cpp | 20 | ||||
| -rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 25 | ||||
| -rw-r--r-- | libs/gui/BufferQueueCore.cpp | 1 | ||||
| -rw-r--r-- | libs/gui/BufferQueueProducer.cpp | 18 | ||||
| -rw-r--r-- | libs/gui/ConsumerBase.cpp | 14 | ||||
| -rw-r--r-- | libs/gui/CpuConsumer.cpp | 15 | ||||
| -rw-r--r-- | libs/gui/GLConsumer.cpp | 22 | ||||
| -rw-r--r-- | libs/gui/IGraphicBufferConsumer.cpp | 42 | ||||
| -rw-r--r-- | libs/gui/IGraphicBufferProducer.cpp | 4 | ||||
| -rw-r--r-- | libs/gui/StreamSplitter.cpp | 6 | ||||
| -rw-r--r-- | libs/gui/Surface.cpp | 22 | ||||
| -rw-r--r-- | libs/gui/tests/BufferQueue_test.cpp | 26 | ||||
| -rw-r--r-- | libs/gui/tests/CpuConsumer_test.cpp | 24 | ||||
| -rw-r--r-- | libs/gui/tests/IGraphicBufferProducer_test.cpp | 9 | ||||
| -rw-r--r-- | libs/gui/tests/SRGB_test.cpp | 15 | ||||
| -rw-r--r-- | libs/gui/tests/StreamSplitter_test.cpp | 8 | ||||
| -rw-r--r-- | libs/gui/tests/Surface_test.cpp | 22 | ||||
| -rw-r--r-- | libs/ui/PixelFormat.cpp | 3 |
19 files changed, 48 insertions, 268 deletions
diff --git a/libs/gui/BufferItem.cpp b/libs/gui/BufferItem.cpp index 389d867134..e6fc791198 100644 --- a/libs/gui/BufferItem.cpp +++ b/libs/gui/BufferItem.cpp @@ -28,7 +28,6 @@ BufferItem::BufferItem() : mScalingMode(NATIVE_WINDOW_SCALING_MODE_FREEZE), mTimestamp(0), mIsAutoTimestamp(false), - mDataSpace(HAL_DATASPACE_UNKNOWN), mFrameNumber(0), mSlot(INVALID_BUFFER_SLOT), mIsDroppable(false), @@ -37,21 +36,6 @@ 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 { @@ -63,7 +47,6 @@ BufferItem::operator IGraphicBufferConsumer::BufferItem() const { bufferItem.mScalingMode = mScalingMode; bufferItem.mTimestamp = mTimestamp; bufferItem.mIsAutoTimestamp = mIsAutoTimestamp; - bufferItem.mDataSpace = mDataSpace; bufferItem.mFrameNumber = mFrameNumber; bufferItem.mBuf = mSlot; bufferItem.mIsDroppable = mIsDroppable; @@ -78,7 +61,6 @@ size_t BufferItem::getPodSize() const { sizeof(mScalingMode) + sizeof(mTimestamp) + sizeof(mIsAutoTimestamp) + - sizeof(mDataSpace) + sizeof(mFrameNumber) + sizeof(mSlot) + sizeof(mIsDroppable) + @@ -149,7 +131,6 @@ status_t BufferItem::flatten( FlattenableUtils::write(buffer, size, mScalingMode); FlattenableUtils::write(buffer, size, mTimestamp); FlattenableUtils::write(buffer, size, mIsAutoTimestamp); - FlattenableUtils::write(buffer, size, mDataSpace); FlattenableUtils::write(buffer, size, mFrameNumber); FlattenableUtils::write(buffer, size, mSlot); FlattenableUtils::write(buffer, size, mIsDroppable); @@ -192,7 +173,6 @@ status_t BufferItem::unflatten( FlattenableUtils::read(buffer, size, mScalingMode); FlattenableUtils::read(buffer, size, mTimestamp); FlattenableUtils::read(buffer, size, mIsAutoTimestamp); - FlattenableUtils::read(buffer, size, mDataSpace); FlattenableUtils::read(buffer, size, mFrameNumber); FlattenableUtils::read(buffer, size, mSlot); FlattenableUtils::read(buffer, size, mIsDroppable); diff --git a/libs/gui/BufferItemConsumer.cpp b/libs/gui/BufferItemConsumer.cpp index fb978ddf0a..61de69af97 100644 --- a/libs/gui/BufferItemConsumer.cpp +++ b/libs/gui/BufferItemConsumer.cpp @@ -19,7 +19,6 @@ //#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__) @@ -53,7 +52,7 @@ void BufferItemConsumer::setName(const String8& name) { mConsumer->setConsumerName(name); } -status_t BufferItemConsumer::acquireBuffer(BufferQueue::BufferItem *item, +status_t BufferItemConsumer::acquireBuffer(BufferItem *item, nsecs_t presentWhen, bool waitForFence) { status_t err; @@ -83,17 +82,6 @@ status_t BufferItemConsumer::acquireBuffer(BufferQueue::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; @@ -121,10 +109,4 @@ status_t BufferItemConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) { return mConsumer->setDefaultBufferFormat(defaultFormat); } -status_t BufferItemConsumer::setDefaultBufferDataSpace( - android_dataspace defaultDataSpace) { - Mutex::Autolock _l(mMutex); - return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); -} - } // namespace android diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index 821a7441cf..a798b18ba2 100644 --- a/libs/gui/BufferQueueConsumer.cpp +++ b/libs/gui/BufferQueueConsumer.cpp @@ -176,22 +176,6 @@ 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); @@ -512,15 +496,6 @@ status_t BufferQueueConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) return NO_ERROR; } -status_t BufferQueueConsumer::setDefaultBufferDataSpace( - android_dataspace defaultDataSpace) { - ATRACE_CALL(); - BQ_LOGV("setDefaultBufferDataSpace: %u", defaultDataSpace); - Mutex::Autolock lock(mCore->mMutex); - mCore->mDefaultBufferDataSpace = defaultDataSpace; - return NO_ERROR; -} - status_t BufferQueueConsumer::setConsumerUsageBits(uint32_t usage) { ATRACE_CALL(); BQ_LOGV("setConsumerUsageBits: %#x", usage); diff --git a/libs/gui/BufferQueueCore.cpp b/libs/gui/BufferQueueCore.cpp index edebc45534..ec1e63112d 100644 --- a/libs/gui/BufferQueueCore.cpp +++ b/libs/gui/BufferQueueCore.cpp @@ -60,7 +60,6 @@ BufferQueueCore::BufferQueueCore(const sp<IGraphicBufferAlloc>& allocator) : mDefaultBufferFormat(PIXEL_FORMAT_RGBA_8888), mDefaultWidth(1), mDefaultHeight(1), - mDefaultBufferDataSpace(HAL_DATASPACE_UNKNOWN), mDefaultMaxBufferCount(2), mMaxAcquiredBufferCount(1), mBufferHasBeenQueued(false), diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 4c22ba3814..13b864d29e 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -516,15 +516,14 @@ status_t BufferQueueProducer::queueBuffer(int slot, int64_t timestamp; bool isAutoTimestamp; - android_dataspace dataSpace; Rect crop; int scalingMode; uint32_t transform; uint32_t stickyTransform; bool async; sp<Fence> fence; - input.deflate(×tamp, &isAutoTimestamp, &dataSpace, &crop, &scalingMode, - &transform, &async, &fence, &stickyTransform); + input.deflate(×tamp, &isAutoTimestamp, &crop, &scalingMode, &transform, + &async, &fence, &stickyTransform); if (fence == NULL) { BQ_LOGE("queueBuffer: fence is NULL"); @@ -580,9 +579,9 @@ status_t BufferQueueProducer::queueBuffer(int slot, return BAD_VALUE; } - BQ_LOGV("queueBuffer: slot=%d/%" PRIu64 " time=%" PRIu64 " dataSpace=%d" + BQ_LOGV("queueBuffer: slot=%d/%" PRIu64 " time=%" PRIu64 " crop=[%d,%d,%d,%d] transform=%#x scale=%s", - slot, mCore->mFrameCounter + 1, timestamp, dataSpace, + slot, mCore->mFrameCounter + 1, timestamp, crop.left, crop.top, crop.right, crop.bottom, transform, BufferItem::scalingModeName(static_cast<uint32_t>(scalingMode))); @@ -596,11 +595,6 @@ status_t BufferQueueProducer::queueBuffer(int slot, return BAD_VALUE; } - // Override UNKNOWN dataspace with consumer default - if (dataSpace == HAL_DATASPACE_UNKNOWN) { - dataSpace = mCore->mDefaultBufferDataSpace; - } - mSlots[slot].mFence = fence; mSlots[slot].mBufferState = BufferSlot::QUEUED; ++mCore->mFrameCounter; @@ -616,7 +610,6 @@ status_t BufferQueueProducer::queueBuffer(int slot, item.mScalingMode = static_cast<uint32_t>(scalingMode); item.mTimestamp = timestamp; item.mIsAutoTimestamp = isAutoTimestamp; - item.mDataSpace = dataSpace; item.mFrameNumber = mCore->mFrameCounter; item.mSlot = slot; item.mFence = fence; @@ -765,9 +758,6 @@ int BufferQueueProducer::query(int what, int *outValue) { case NATIVE_WINDOW_CONSUMER_USAGE_BITS: value = static_cast<int32_t>(mCore->mConsumerUsageBits); break; - case NATIVE_WINDOW_DEFAULT_DATASPACE: - value = static_cast<int32_t>(mCore->mDefaultBufferDataSpace); - break; default: return BAD_VALUE; } diff --git a/libs/gui/ConsumerBase.cpp b/libs/gui/ConsumerBase.cpp index c8b5d0cb9f..5fc83eebf4 100644 --- a/libs/gui/ConsumerBase.cpp +++ b/libs/gui/ConsumerBase.cpp @@ -27,7 +27,6 @@ #include <hardware/hardware.h> -#include <gui/BufferItem.h> #include <gui/IGraphicBufferAlloc.h> #include <gui/ISurfaceComposer.h> #include <gui/SurfaceComposerClient.h> @@ -180,7 +179,7 @@ void ConsumerBase::dumpLocked(String8& result, const char* prefix) const { } } -status_t ConsumerBase::acquireBufferLocked(BufferItem *item, +status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item, nsecs_t presentWhen) { status_t err = mConsumer->acquireBuffer(item, presentWhen); if (err != NO_ERROR) { @@ -200,17 +199,6 @@ status_t ConsumerBase::acquireBufferLocked(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 eb39469b0c..73d34eb6ee 100644 --- a/libs/gui/CpuConsumer.cpp +++ b/libs/gui/CpuConsumer.cpp @@ -20,7 +20,6 @@ #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__) @@ -68,13 +67,6 @@ status_t CpuConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) return mConsumer->setDefaultBufferFormat(defaultFormat); } -status_t CpuConsumer::setDefaultBufferDataSpace( - android_dataspace defaultDataSpace) -{ - Mutex::Autolock _l(mMutex); - return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); -} - static bool isPossiblyYUV(PixelFormat format) { switch (static_cast<int>(format)) { case HAL_PIXEL_FORMAT_RGBA_8888: @@ -82,9 +74,11 @@ static bool isPossiblyYUV(PixelFormat format) { case HAL_PIXEL_FORMAT_RGB_888: case HAL_PIXEL_FORMAT_RGB_565: case HAL_PIXEL_FORMAT_BGRA_8888: + case HAL_PIXEL_FORMAT_sRGB_A_8888: + case HAL_PIXEL_FORMAT_sRGB_X_8888: case HAL_PIXEL_FORMAT_Y8: case HAL_PIXEL_FORMAT_Y16: - case HAL_PIXEL_FORMAT_RAW16: + case HAL_PIXEL_FORMAT_RAW16: // same as HAL_PIXEL_FORMAT_RAW_SENSOR case HAL_PIXEL_FORMAT_RAW10: case HAL_PIXEL_FORMAT_RAW_OPAQUE: case HAL_PIXEL_FORMAT_BLOB: @@ -111,7 +105,7 @@ status_t CpuConsumer::lockNextBuffer(LockedBuffer *nativeBuffer) { return NOT_ENOUGH_DATA; } - BufferItem b; + BufferQueue::BufferItem b; Mutex::Autolock _l(mMutex); @@ -206,7 +200,6 @@ status_t CpuConsumer::lockNextBuffer(LockedBuffer *nativeBuffer) { nativeBuffer->transform = b.mTransform; nativeBuffer->scalingMode = b.mScalingMode; nativeBuffer->timestamp = b.mTimestamp; - nativeBuffer->dataSpace = b.mDataSpace; nativeBuffer->frameNumber = b.mFrameNumber; nativeBuffer->dataCb = reinterpret_cast<uint8_t*>(ycbcr.cb); diff --git a/libs/gui/GLConsumer.cpp b/libs/gui/GLConsumer.cpp index d256ae5389..a0f68b4c1f 100644 --- a/libs/gui/GLConsumer.cpp +++ b/libs/gui/GLConsumer.cpp @@ -29,7 +29,6 @@ #include <hardware/hardware.h> -#include <gui/BufferItem.h> #include <gui/GLConsumer.h> #include <gui/IGraphicBufferAlloc.h> #include <gui/ISurfaceComposer.h> @@ -211,7 +210,7 @@ status_t GLConsumer::updateTexImage() { return err; } - BufferItem item; + BufferQueue::BufferItem item; // Acquire the next buffer. // In asynchronous mode the list is guaranteed to be one buffer @@ -343,7 +342,7 @@ sp<GraphicBuffer> GLConsumer::getDebugTexImageBuffer() { return sReleasedTexImageBuffer; } -status_t GLConsumer::acquireBufferLocked(BufferItem *item, +status_t GLConsumer::acquireBufferLocked(BufferQueue::BufferItem *item, nsecs_t presentWhen) { status_t err = ConsumerBase::acquireBufferLocked(item, presentWhen); if (err != NO_ERROR) { @@ -361,17 +360,6 @@ status_t GLConsumer::acquireBufferLocked(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) { @@ -1035,12 +1023,6 @@ status_t GLConsumer::setDefaultBufferFormat(PixelFormat defaultFormat) { return mConsumer->setDefaultBufferFormat(defaultFormat); } -status_t GLConsumer::setDefaultBufferDataSpace( - android_dataspace defaultDataSpace) { - Mutex::Autolock lock(mMutex); - return mConsumer->setDefaultBufferDataSpace(defaultDataSpace); -} - status_t GLConsumer::setConsumerUsageBits(uint32_t usage) { Mutex::Autolock lock(mMutex); usage |= DEFAULT_USAGE_FLAGS; diff --git a/libs/gui/IGraphicBufferConsumer.cpp b/libs/gui/IGraphicBufferConsumer.cpp index edf440884f..260288447a 100644 --- a/libs/gui/IGraphicBufferConsumer.cpp +++ b/libs/gui/IGraphicBufferConsumer.cpp @@ -23,7 +23,6 @@ #include <binder/Parcel.h> #include <binder/IInterface.h> -#include <gui/BufferItem.h> #include <gui/IConsumerListener.h> #include <gui/IGraphicBufferConsumer.h> @@ -40,7 +39,6 @@ IGraphicBufferConsumer::BufferItem::BufferItem() : mScalingMode(NATIVE_WINDOW_SCALING_MODE_FREEZE), mTimestamp(0), mIsAutoTimestamp(false), - mDataSpace(HAL_DATASPACE_UNKNOWN), mFrameNumber(0), mBuf(INVALID_BUFFER_SLOT), mIsDroppable(false), @@ -55,7 +53,6 @@ size_t IGraphicBufferConsumer::BufferItem::getPodSize() const { sizeof(mScalingMode) + sizeof(mTimestamp) + sizeof(mIsAutoTimestamp) + - sizeof(mDataSpace) + sizeof(mFrameNumber) + sizeof(mBuf) + sizeof(mIsDroppable) + @@ -136,7 +133,6 @@ status_t IGraphicBufferConsumer::BufferItem::flatten( FlattenableUtils::write(buffer, size, mScalingMode); FlattenableUtils::write(buffer, size, mTimestamp); writeBoolAsInt(buffer, size, mIsAutoTimestamp); - FlattenableUtils::write(buffer, size, mDataSpace); FlattenableUtils::write(buffer, size, mFrameNumber); FlattenableUtils::write(buffer, size, mBuf); writeBoolAsInt(buffer, size, mIsDroppable); @@ -179,7 +175,6 @@ status_t IGraphicBufferConsumer::BufferItem::unflatten( FlattenableUtils::read(buffer, size, mScalingMode); FlattenableUtils::read(buffer, size, mTimestamp); mIsAutoTimestamp = readBoolFromInt(buffer, size); - FlattenableUtils::read(buffer, size, mDataSpace); FlattenableUtils::read(buffer, size, mFrameNumber); FlattenableUtils::read(buffer, size, mBuf); mIsDroppable = readBoolFromInt(buffer, size); @@ -205,7 +200,6 @@ enum { SET_MAX_ACQUIRED_BUFFER_COUNT, SET_CONSUMER_NAME, SET_DEFAULT_BUFFER_FORMAT, - SET_DEFAULT_BUFFER_DATA_SPACE, SET_CONSUMER_USAGE_BITS, SET_TRANSFORM_HINT, GET_SIDEBAND_STREAM, @@ -238,21 +232,6 @@ 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()); @@ -392,19 +371,6 @@ public: return reply.readInt32(); } - virtual status_t setDefaultBufferDataSpace( - android_dataspace defaultDataSpace) { - Parcel data, reply; - data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor()); - data.writeInt32(static_cast<int32_t>(defaultDataSpace)); - status_t result = remote()->transact(SET_DEFAULT_BUFFER_DATA_SPACE, - data, &reply); - if (result != NO_ERROR) { - return result; - } - return reply.readInt32(); - } - virtual status_t setConsumerUsageBits(uint32_t usage) { Parcel data, reply; data.writeInterfaceToken(IGraphicBufferConsumer::getInterfaceDescriptor()); @@ -564,14 +530,6 @@ status_t BnGraphicBufferConsumer::onTransact( reply->writeInt32(result); return NO_ERROR; } - case SET_DEFAULT_BUFFER_DATA_SPACE: { - CHECK_INTERFACE(IGraphicBufferConsumer, data, reply); - android_dataspace defaultDataSpace = - static_cast<android_dataspace>(data.readInt32()); - status_t result = setDefaultBufferDataSpace(defaultDataSpace); - reply->writeInt32(result); - return NO_ERROR; - } case SET_CONSUMER_USAGE_BITS: { CHECK_INTERFACE(IGraphicBufferConsumer, data, reply); uint32_t usage = data.readUint32(); diff --git a/libs/gui/IGraphicBufferProducer.cpp b/libs/gui/IGraphicBufferProducer.cpp index a3e6fb2a25..63d881efda 100644 --- a/libs/gui/IGraphicBufferProducer.cpp +++ b/libs/gui/IGraphicBufferProducer.cpp @@ -440,7 +440,6 @@ IGraphicBufferProducer::QueueBufferInput::QueueBufferInput(const Parcel& parcel) size_t IGraphicBufferProducer::QueueBufferInput::getFlattenedSize() const { return sizeof(timestamp) + sizeof(isAutoTimestamp) - + sizeof(dataSpace) + sizeof(crop) + sizeof(scalingMode) + sizeof(transform) @@ -461,7 +460,6 @@ status_t IGraphicBufferProducer::QueueBufferInput::flatten( } FlattenableUtils::write(buffer, size, timestamp); FlattenableUtils::write(buffer, size, isAutoTimestamp); - FlattenableUtils::write(buffer, size, dataSpace); FlattenableUtils::write(buffer, size, crop); FlattenableUtils::write(buffer, size, scalingMode); FlattenableUtils::write(buffer, size, transform); @@ -476,7 +474,6 @@ status_t IGraphicBufferProducer::QueueBufferInput::unflatten( size_t minNeeded = sizeof(timestamp) + sizeof(isAutoTimestamp) - + sizeof(dataSpace) + sizeof(crop) + sizeof(scalingMode) + sizeof(transform) @@ -489,7 +486,6 @@ status_t IGraphicBufferProducer::QueueBufferInput::unflatten( FlattenableUtils::read(buffer, size, timestamp); FlattenableUtils::read(buffer, size, isAutoTimestamp); - FlattenableUtils::read(buffer, size, dataSpace); FlattenableUtils::read(buffer, size, crop); FlattenableUtils::read(buffer, size, scalingMode); FlattenableUtils::read(buffer, size, transform); diff --git a/libs/gui/StreamSplitter.cpp b/libs/gui/StreamSplitter.cpp index 43f9214fc7..8146869b83 100644 --- a/libs/gui/StreamSplitter.cpp +++ b/libs/gui/StreamSplitter.cpp @@ -20,7 +20,6 @@ #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> @@ -124,7 +123,7 @@ void StreamSplitter::onFrameAvailable(const BufferItem& /* item */) { ++mOutstandingBuffers; // Acquire and detach the buffer from the input - BufferItem bufferItem; + IGraphicBufferConsumer::BufferItem bufferItem; status_t status = mInput->acquireBuffer(&bufferItem, /* presentWhen */ 0); LOG_ALWAYS_FATAL_IF(status != NO_ERROR, "acquiring buffer from input failed (%d)", status); @@ -142,8 +141,7 @@ void StreamSplitter::onFrameAvailable(const BufferItem& /* item */) { IGraphicBufferProducer::QueueBufferInput queueInput( bufferItem.mTimestamp, bufferItem.mIsAutoTimestamp, - bufferItem.mDataSpace, bufferItem.mCrop, - static_cast<int32_t>(bufferItem.mScalingMode), + bufferItem.mCrop, static_cast<int32_t>(bufferItem.mScalingMode), bufferItem.mTransform, bufferItem.mIsDroppable, bufferItem.mFence); diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp index aa6f97e2e7..98489b1feb 100644 --- a/libs/gui/Surface.cpp +++ b/libs/gui/Surface.cpp @@ -64,7 +64,6 @@ Surface::Surface( mReqFormat = 0; mReqUsage = 0; mTimestamp = NATIVE_WINDOW_TIMESTAMP_AUTO; - mDataSpace = HAL_DATASPACE_UNKNOWN; mCrop.clear(); mScalingMode = NATIVE_WINDOW_SCALING_MODE_FREEZE; mTransform = 0; @@ -318,8 +317,8 @@ int Surface::queueBuffer(android_native_buffer_t* buffer, int fenceFd) { sp<Fence> fence(fenceFd >= 0 ? new Fence(fenceFd) : Fence::NO_FENCE); IGraphicBufferProducer::QueueBufferOutput output; IGraphicBufferProducer::QueueBufferInput input(timestamp, isAutoTimestamp, - mDataSpace, crop, mScalingMode, mTransform ^ mStickyTransform, - mSwapIntervalZero, fence, mStickyTransform); + crop, mScalingMode, mTransform ^ mStickyTransform, mSwapIntervalZero, + fence, mStickyTransform); status_t err = mGraphicBufferProducer->queueBuffer(i, input, &output); if (err != OK) { ALOGE("queueBuffer: error queuing buffer to SurfaceTexture, %d", err); @@ -450,9 +449,6 @@ int Surface::perform(int operation, va_list args) case NATIVE_WINDOW_SET_SIDEBAND_STREAM: res = dispatchSetSidebandStream(args); break; - case NATIVE_WINDOW_SET_BUFFERS_DATASPACE: - res = dispatchSetBuffersDataSpace(args); - break; default: res = NAME_NOT_FOUND; break; @@ -550,12 +546,6 @@ int Surface::dispatchSetSidebandStream(va_list args) { return OK; } -int Surface::dispatchSetBuffersDataSpace(va_list args) { - android_dataspace dataspace = - static_cast<android_dataspace>(va_arg(args, int)); - return setBuffersDataSpace(dataspace); -} - int Surface::connect(int api) { static sp<IProducerListener> listener = new DummyProducerListener(); return connect(api, listener); @@ -737,14 +727,6 @@ int Surface::setBuffersTimestamp(int64_t timestamp) return NO_ERROR; } -int Surface::setBuffersDataSpace(android_dataspace dataSpace) -{ - ALOGV("Surface::setBuffersDataSpace"); - Mutex::Autolock lock(mMutex); - mDataSpace = dataSpace; - return NO_ERROR; -} - void Surface::freeAllBuffers() { for (int i = 0; i < NUM_BUFFER_SLOTS; i++) { mSlots[i].buffer = 0; diff --git a/libs/gui/tests/BufferQueue_test.cpp b/libs/gui/tests/BufferQueue_test.cpp index c38c797810..838ad90e80 100644 --- a/libs/gui/tests/BufferQueue_test.cpp +++ b/libs/gui/tests/BufferQueue_test.cpp @@ -17,7 +17,6 @@ #define LOG_TAG "BufferQueue_test" //#define LOG_NDEBUG 0 -#include <gui/BufferItem.h> #include <gui/BufferQueue.h> #include <gui/IProducerListener.h> @@ -125,12 +124,11 @@ TEST_F(BufferQueueTest, BufferQueueInAnotherProcess) { *dataIn = 0x12345678; ASSERT_EQ(OK, buffer->unlock()); - IGraphicBufferProducer::QueueBufferInput input(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), + IGraphicBufferProducer::QueueBufferInput input(0, false, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output)); - BufferItem item; + IGraphicBufferConsumer::BufferItem item; ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, 0)); uint32_t* dataOut; @@ -152,10 +150,9 @@ TEST_F(BufferQueueTest, AcquireBuffer_ExceedsMaxAcquireCount_Fails) { int slot; sp<Fence> fence; sp<GraphicBuffer> buf; - IGraphicBufferProducer::QueueBufferInput qbi(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), + IGraphicBufferProducer::QueueBufferInput qbi(0, false, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); - BufferItem item; + BufferQueue::BufferItem item; for (int i = 0; i < 2; i++) { ASSERT_EQ(IGraphicBufferProducer::BUFFER_NEEDS_REALLOCATION, @@ -247,12 +244,11 @@ TEST_F(BufferQueueTest, DetachAndReattachOnProducerSide) { ASSERT_EQ(BAD_VALUE, mProducer->attachBuffer(&newSlot, NULL)); ASSERT_EQ(OK, mProducer->attachBuffer(&newSlot, buffer)); - IGraphicBufferProducer::QueueBufferInput input(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), + IGraphicBufferProducer::QueueBufferInput input(0, false, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, mProducer->queueBuffer(newSlot, input, &output)); - BufferItem item; + IGraphicBufferConsumer::BufferItem item; ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, static_cast<nsecs_t>(0))); uint32_t* dataOut; @@ -277,8 +273,7 @@ TEST_F(BufferQueueTest, DetachAndReattachOnConsumerSide) { mProducer->dequeueBuffer(&slot, &fence, false, 0, 0, 0, GRALLOC_USAGE_SW_WRITE_OFTEN)); ASSERT_EQ(OK, mProducer->requestBuffer(slot, &buffer)); - IGraphicBufferProducer::QueueBufferInput input(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), + IGraphicBufferProducer::QueueBufferInput input(0, false, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output)); @@ -287,7 +282,7 @@ TEST_F(BufferQueueTest, DetachAndReattachOnConsumerSide) { BufferQueueDefs::NUM_BUFFER_SLOTS)); // Index too high ASSERT_EQ(BAD_VALUE, mConsumer->detachBuffer(0)); // Not acquired - BufferItem item; + IGraphicBufferConsumer::BufferItem item; ASSERT_EQ(OK, mConsumer->acquireBuffer(&item, static_cast<nsecs_t>(0))); ASSERT_EQ(OK, mConsumer->detachBuffer(item.mBuf)); @@ -343,12 +338,11 @@ TEST_F(BufferQueueTest, MoveFromConsumerToProducer) { *dataIn = 0x12345678; ASSERT_EQ(OK, buffer->unlock()); - IGraphicBufferProducer::QueueBufferInput input(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), + IGraphicBufferProducer::QueueBufferInput input(0, false, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, mProducer->queueBuffer(slot, input, &output)); - BufferItem item; + IGraphicBufferConsumer::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/CpuConsumer_test.cpp b/libs/gui/tests/CpuConsumer_test.cpp index 0beca92de2..abd372449f 100644 --- a/libs/gui/tests/CpuConsumer_test.cpp +++ b/libs/gui/tests/CpuConsumer_test.cpp @@ -166,7 +166,7 @@ void checkPixel(const CpuConsumer::LockedBuffer &buf, uint32_t x, uint32_t y, uint32_t r, uint32_t g=0, uint32_t b=0) { // Ignores components that don't exist for given pixel switch(buf.format) { - case HAL_PIXEL_FORMAT_RAW16: { + case HAL_PIXEL_FORMAT_RAW_SENSOR: { String8 msg; uint16_t *bPtr = (uint16_t*)buf.data; bPtr += y * buf.stride + x; @@ -429,7 +429,7 @@ void checkBayerRawBuffer(const CpuConsumer::LockedBuffer &buf) { void checkAnyBuffer(const CpuConsumer::LockedBuffer &buf, int format) { switch (format) { - case HAL_PIXEL_FORMAT_RAW16: + case HAL_PIXEL_FORMAT_RAW_SENSOR: checkBayerRawBuffer(buf); break; case HAL_PIXEL_FORMAT_Y8: @@ -505,7 +505,7 @@ void produceOneFrame(const sp<ANativeWindow>& anw, case HAL_PIXEL_FORMAT_YV12: fillYV12Buffer(img, params.width, params.height, *stride); break; - case HAL_PIXEL_FORMAT_RAW16: + case HAL_PIXEL_FORMAT_RAW_SENSOR: fillBayerRawBuffer(img, params.width, params.height, buf->getStride()); break; case HAL_PIXEL_FORMAT_Y8: @@ -537,7 +537,7 @@ void produceOneFrame(const sp<ANativeWindow>& anw, ASSERT_NO_ERROR(err, "queueBuffer error:"); }; -// This test is disabled because the HAL_PIXEL_FORMAT_RAW16 format is not +// This test is disabled because the HAL_PIXEL_FORMAT_RAW_SENSOR format is not // supported on all devices. TEST_P(CpuConsumerTest, FromCpuSingle) { status_t err; @@ -571,7 +571,7 @@ TEST_P(CpuConsumerTest, FromCpuSingle) { mCC->unlockBuffer(b); } -// This test is disabled because the HAL_PIXEL_FORMAT_RAW16 format is not +// This test is disabled because the HAL_PIXEL_FORMAT_RAW_SENSOR format is not // supported on all devices. TEST_P(CpuConsumerTest, FromCpuManyInQueue) { status_t err; @@ -614,7 +614,7 @@ TEST_P(CpuConsumerTest, FromCpuManyInQueue) { } } -// This test is disabled because the HAL_PIXEL_FORMAT_RAW16 format is not +// This test is disabled because the HAL_PIXEL_FORMAT_RAW_SENSOR format is not // supported on all devices. TEST_P(CpuConsumerTest, FromCpuLockMax) { status_t err; @@ -710,12 +710,12 @@ CpuConsumerTestParams y16TestSets[] = { }; CpuConsumerTestParams rawTestSets[] = { - { 512, 512, 1, HAL_PIXEL_FORMAT_RAW16}, - { 512, 512, 3, HAL_PIXEL_FORMAT_RAW16}, - { 2608, 1960, 1, HAL_PIXEL_FORMAT_RAW16}, - { 2608, 1960, 3, HAL_PIXEL_FORMAT_RAW16}, - { 100, 100, 1, HAL_PIXEL_FORMAT_RAW16}, - { 100, 100, 3, HAL_PIXEL_FORMAT_RAW16}, + { 512, 512, 1, HAL_PIXEL_FORMAT_RAW_SENSOR}, + { 512, 512, 3, HAL_PIXEL_FORMAT_RAW_SENSOR}, + { 2608, 1960, 1, HAL_PIXEL_FORMAT_RAW_SENSOR}, + { 2608, 1960, 3, HAL_PIXEL_FORMAT_RAW_SENSOR}, + { 100, 100, 1, HAL_PIXEL_FORMAT_RAW_SENSOR}, + { 100, 100, 3, HAL_PIXEL_FORMAT_RAW_SENSOR}, }; CpuConsumerTestParams rgba8888TestSets[] = { diff --git a/libs/gui/tests/IGraphicBufferProducer_test.cpp b/libs/gui/tests/IGraphicBufferProducer_test.cpp index c904a6bd46..8d5fd8f58f 100644 --- a/libs/gui/tests/IGraphicBufferProducer_test.cpp +++ b/libs/gui/tests/IGraphicBufferProducer_test.cpp @@ -57,7 +57,6 @@ namespace { // Parameters for a generic "valid" input for queueBuffer. const int64_t QUEUE_BUFFER_INPUT_TIMESTAMP = 1384888611; const bool QUEUE_BUFFER_INPUT_IS_AUTO_TIMESTAMP = false; -const android_dataspace QUEUE_BUFFER_INPUT_DATASPACE = HAL_DATASPACE_UNKNOWN; const Rect QUEUE_BUFFER_INPUT_RECT = Rect(DEFAULT_WIDTH, DEFAULT_HEIGHT); const int QUEUE_BUFFER_INPUT_SCALING_MODE = 0; const int QUEUE_BUFFER_INPUT_TRANSFORM = 0; @@ -127,7 +126,6 @@ protected: QueueBufferInputBuilder() { timestamp = QUEUE_BUFFER_INPUT_TIMESTAMP; isAutoTimestamp = QUEUE_BUFFER_INPUT_IS_AUTO_TIMESTAMP; - dataSpace = QUEUE_BUFFER_INPUT_DATASPACE; crop = QUEUE_BUFFER_INPUT_RECT; scalingMode = QUEUE_BUFFER_INPUT_SCALING_MODE; transform = QUEUE_BUFFER_INPUT_TRANSFORM; @@ -139,7 +137,6 @@ protected: return IGraphicBufferProducer::QueueBufferInput( timestamp, isAutoTimestamp, - dataSpace, crop, scalingMode, transform, @@ -157,11 +154,6 @@ protected: return *this; } - QueueBufferInputBuilder& setDataSpace(android_dataspace dataSpace) { - this->dataSpace = dataSpace; - return *this; - } - QueueBufferInputBuilder& setCrop(Rect crop) { this->crop = crop; return *this; @@ -190,7 +182,6 @@ protected: private: int64_t timestamp; bool isAutoTimestamp; - android_dataspace dataSpace; Rect crop; int scalingMode; uint32_t transform; diff --git a/libs/gui/tests/SRGB_test.cpp b/libs/gui/tests/SRGB_test.cpp index e5907e71f4..da2add716e 100644 --- a/libs/gui/tests/SRGB_test.cpp +++ b/libs/gui/tests/SRGB_test.cpp @@ -214,11 +214,10 @@ protected: ASSERT_EQ(GL_NO_ERROR, glGetError()); } - void checkLockedBuffer(PixelFormat format, android_dataspace dataSpace) { + void checkLockedBuffer(PixelFormat format) { ASSERT_EQ(mLockedBuffer.format, format); ASSERT_EQ(mLockedBuffer.width, DISPLAY_WIDTH); ASSERT_EQ(mLockedBuffer.height, DISPLAY_HEIGHT); - ASSERT_EQ(mLockedBuffer.dataSpace, dataSpace); } static bool withinTolerance(int a, int b) { @@ -336,8 +335,7 @@ private: if (mLockedBuffer.format == outBuffer.format) { memcpy(outBuffer.bits, mLockedBuffer.data, bufferSize); } else { - ASSERT_EQ(mLockedBuffer.format, PIXEL_FORMAT_RGBA_8888); - ASSERT_EQ(mLockedBuffer.dataSpace, HAL_DATASPACE_SRGB); + ASSERT_EQ(mLockedBuffer.format, PIXEL_FORMAT_sRGB_A_8888); ASSERT_EQ(outBuffer.format, PIXEL_FORMAT_RGBA_8888); uint8_t* outPointer = reinterpret_cast<uint8_t*>(outBuffer.bits); for (int y = 0; y < outBuffer.height; ++y) { @@ -382,8 +380,7 @@ TEST_F(SRGBTest, GLRenderFromSRGBTexture) { // Lock ASSERT_EQ(NO_ERROR, mCpuConsumer->lockNextBuffer(&mLockedBuffer)); - ASSERT_NO_FATAL_FAILURE( - checkLockedBuffer(PIXEL_FORMAT_RGBA_8888, HAL_DATASPACE_UNKNOWN)); + ASSERT_NO_FATAL_FAILURE(checkLockedBuffer(PIXEL_FORMAT_RGBA_8888)); // Compare a pixel in the middle of each texture int midSRGBOffset = (DISPLAY_HEIGHT / 4) * mLockedBuffer.stride * @@ -414,8 +411,7 @@ TEST_F(SRGBTest, RenderToSRGBSurface) { // Lock ASSERT_EQ(NO_ERROR, mCpuConsumer->lockNextBuffer(&mLockedBuffer)); - ASSERT_NO_FATAL_FAILURE( - checkLockedBuffer(PIXEL_FORMAT_RGBA_8888, HAL_DATASPACE_UNKNOWN)); + ASSERT_NO_FATAL_FAILURE(checkLockedBuffer(PIXEL_FORMAT_RGBA_8888)); // Save the values of the middle pixel for later comparison against SRGB uint8_t values[PIXEL_SIZE] = {}; @@ -464,8 +460,7 @@ TEST_F(SRGBTest, RenderToSRGBSurface) { ASSERT_EQ(NO_ERROR, mCpuConsumer->lockNextBuffer(&mLockedBuffer)); // Make sure we actually got the SRGB buffer on the consumer side - ASSERT_NO_FATAL_FAILURE( - checkLockedBuffer(PIXEL_FORMAT_RGBA_8888, HAL_DATASPACE_SRGB)); + ASSERT_NO_FATAL_FAILURE(checkLockedBuffer(PIXEL_FORMAT_sRGB_A_8888)); // Verify that the stored value is the same, accounting for RGB/SRGB for (int c = 0; c < PIXEL_SIZE; ++c) { diff --git a/libs/gui/tests/StreamSplitter_test.cpp b/libs/gui/tests/StreamSplitter_test.cpp index 767c7c6e48..4e63a6f4db 100644 --- a/libs/gui/tests/StreamSplitter_test.cpp +++ b/libs/gui/tests/StreamSplitter_test.cpp @@ -17,7 +17,6 @@ #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> @@ -112,12 +111,11 @@ TEST_F(StreamSplitterTest, OneInputOneOutput) { ASSERT_EQ(OK, buffer->unlock()); IGraphicBufferProducer::QueueBufferInput qbInput(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput)); - BufferItem item; + IGraphicBufferConsumer::BufferItem item; ASSERT_EQ(OK, outputConsumer->acquireBuffer(&item, 0)); uint32_t* dataOut; @@ -179,13 +177,12 @@ TEST_F(StreamSplitterTest, OneInputMultipleOutputs) { ASSERT_EQ(OK, buffer->unlock()); IGraphicBufferProducer::QueueBufferInput qbInput(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput)); for (int output = 0; output < NUM_OUTPUTS; ++output) { - BufferItem item; + IGraphicBufferConsumer::BufferItem item; ASSERT_EQ(OK, outputConsumers[output]->acquireBuffer(&item, 0)); uint32_t* dataOut; @@ -237,7 +234,6 @@ TEST_F(StreamSplitterTest, OutputAbandonment) { outputConsumer->consumerDisconnect(); IGraphicBufferProducer::QueueBufferInput qbInput(0, false, - HAL_DATASPACE_UNKNOWN, Rect(0, 0, 1, 1), NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, false, Fence::NO_FENCE); ASSERT_EQ(OK, inputProducer->queueBuffer(slot, qbInput, &qbOutput)); diff --git a/libs/gui/tests/Surface_test.cpp b/libs/gui/tests/Surface_test.cpp index 4f878244b6..5e6aeef356 100644 --- a/libs/gui/tests/Surface_test.cpp +++ b/libs/gui/tests/Surface_test.cpp @@ -155,26 +155,4 @@ TEST_F(SurfaceTest, QueryConsumerUsage) { ASSERT_EQ(TEST_USAGE_FLAGS, flags); } -TEST_F(SurfaceTest, QueryDefaultBuffersDataSpace) { - const android_dataspace TEST_DATASPACE = HAL_DATASPACE_SRGB; - sp<IGraphicBufferProducer> producer; - sp<IGraphicBufferConsumer> consumer; - BufferQueue::createBufferQueue(&producer, &consumer); - sp<CpuConsumer> cpuConsumer = new CpuConsumer(consumer, 1); - - cpuConsumer->setDefaultBufferDataSpace(TEST_DATASPACE); - - sp<Surface> s = new Surface(producer); - - sp<ANativeWindow> anw(s); - - android_dataspace dataSpace; - - int err = anw->query(anw.get(), NATIVE_WINDOW_DEFAULT_DATASPACE, - reinterpret_cast<int*>(&dataSpace)); - - ASSERT_EQ(NO_ERROR, err); - ASSERT_EQ(TEST_DATASPACE, dataSpace); -} - } diff --git a/libs/ui/PixelFormat.cpp b/libs/ui/PixelFormat.cpp index cab1dde3fa..99ed6f7830 100644 --- a/libs/ui/PixelFormat.cpp +++ b/libs/ui/PixelFormat.cpp @@ -25,6 +25,8 @@ uint32_t bytesPerPixel(PixelFormat format) { case PIXEL_FORMAT_RGBA_8888: case PIXEL_FORMAT_RGBX_8888: case PIXEL_FORMAT_BGRA_8888: + case PIXEL_FORMAT_sRGB_A_8888: + case PIXEL_FORMAT_sRGB_X_8888: return 4; case PIXEL_FORMAT_RGB_888: return 3; @@ -55,3 +57,4 @@ uint32_t bitsPerPixel(PixelFormat format) { // ---------------------------------------------------------------------------- }; // namespace android // ---------------------------------------------------------------------------- + |