Loading include/gui/SurfaceTexture.h +5 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ namespace android { // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- class IGraphicBufferAlloc; class IGraphicBufferAlloc; class String8; class SurfaceTexture : public BnSurfaceTexture { class SurfaceTexture : public BnSurfaceTexture { public: public: Loading Loading @@ -157,6 +158,10 @@ public: // getCurrentTransform returns the transform of the current buffer // getCurrentTransform returns the transform of the current buffer uint32_t getCurrentTransform() const; uint32_t getCurrentTransform() const; // dump our state in a String void dump(String8& result) const; void dump(String8& result, const char* prefix, char* buffer, size_t SIZE) const; protected: protected: // freeAllBuffers frees the resources (both GraphicBuffer and EGLImage) for // freeAllBuffers frees the resources (both GraphicBuffer and EGLImage) for Loading libs/gui/SurfaceTexture.cpp +65 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ #include <surfaceflinger/IGraphicBufferAlloc.h> #include <surfaceflinger/IGraphicBufferAlloc.h> #include <utils/Log.h> #include <utils/Log.h> #include <utils/String8.h> namespace android { namespace android { Loading Loading @@ -755,6 +756,70 @@ int SurfaceTexture::query(int what, int* outValue) return NO_ERROR; return NO_ERROR; } } void SurfaceTexture::dump(String8& result) const { char buffer[1024]; dump(result, "", buffer, 1024); } void SurfaceTexture::dump(String8& result, const char* prefix, char* buffer, size_t SIZE) const { Mutex::Autolock _l(mMutex); snprintf(buffer, SIZE, "%smBufferCount=%d, mSynchronousMode=%d, default-size=[%dx%d], " "mPixelFormat=%d, mTexName=%d\n", prefix, mBufferCount, mSynchronousMode, mDefaultWidth, mDefaultHeight, mPixelFormat, mTexName); result.append(buffer); String8 fifo; int fifoSize = 0; Fifo::const_iterator i(mQueue.begin()); while (i != mQueue.end()) { snprintf(buffer, SIZE, "%02d ", *i++); fifoSize++; fifo.append(buffer); } snprintf(buffer, SIZE, "%scurrent: {crop=[%d,%d,%d,%d], transform=0x%02x, current=%d, target=0x%04x}\n" "%snext : {crop=[%d,%d,%d,%d], transform=0x%02x, FIFO(%d)={%s}}\n" , prefix, mCurrentCrop.left, mCurrentCrop.top, mCurrentCrop.right, mCurrentCrop.bottom, mCurrentTransform, mCurrentTexture, mCurrentTextureTarget, prefix, mNextCrop.left, mNextCrop.top, mNextCrop.right, mNextCrop.bottom, mCurrentTransform, fifoSize, fifo.string() ); result.append(buffer); struct { const char * operator()(int state) const { switch (state) { case BufferSlot::DEQUEUED: return "DEQUEUED"; case BufferSlot::QUEUED: return "QUEUED"; case BufferSlot::FREE: return "FREE"; default: return "Unknown"; } } } stateName; for (int i=0 ; i<mBufferCount ; i++) { const BufferSlot& slot(mSlots[i]); snprintf(buffer, SIZE, "%s%s[%02d] state=%-8s, crop=[%d,%d,%d,%d], transform=0x%02x, " "timestamp=%lld\n" , prefix, (i==mCurrentTexture)?">":" ", i, stateName(slot.mBufferState), slot.mLastQueuedCrop.left, slot.mLastQueuedCrop.top, slot.mLastQueuedCrop.right, slot.mLastQueuedCrop.bottom, slot.mLastQueuedTransform, slot.mLastQueuedTimestamp ); result.append(buffer); } } static void mtxMul(float out[16], const float a[16], const float b[16]) { static void mtxMul(float out[16], const float a[16], const float b[16]) { out[0] = a[0]*b[0] + a[4]*b[1] + a[8]*b[2] + a[12]*b[3]; out[0] = a[0]*b[0] + a[4]*b[1] + a[8]*b[2] + a[12]*b[3]; out[1] = a[1]*b[0] + a[5]*b[1] + a[9]*b[2] + a[13]*b[3]; out[1] = a[1]*b[0] + a[5]*b[1] + a[9]*b[2] + a[13]*b[3]; Loading Loading
include/gui/SurfaceTexture.h +5 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ namespace android { // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- class IGraphicBufferAlloc; class IGraphicBufferAlloc; class String8; class SurfaceTexture : public BnSurfaceTexture { class SurfaceTexture : public BnSurfaceTexture { public: public: Loading Loading @@ -157,6 +158,10 @@ public: // getCurrentTransform returns the transform of the current buffer // getCurrentTransform returns the transform of the current buffer uint32_t getCurrentTransform() const; uint32_t getCurrentTransform() const; // dump our state in a String void dump(String8& result) const; void dump(String8& result, const char* prefix, char* buffer, size_t SIZE) const; protected: protected: // freeAllBuffers frees the resources (both GraphicBuffer and EGLImage) for // freeAllBuffers frees the resources (both GraphicBuffer and EGLImage) for Loading
libs/gui/SurfaceTexture.cpp +65 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ #include <surfaceflinger/IGraphicBufferAlloc.h> #include <surfaceflinger/IGraphicBufferAlloc.h> #include <utils/Log.h> #include <utils/Log.h> #include <utils/String8.h> namespace android { namespace android { Loading Loading @@ -755,6 +756,70 @@ int SurfaceTexture::query(int what, int* outValue) return NO_ERROR; return NO_ERROR; } } void SurfaceTexture::dump(String8& result) const { char buffer[1024]; dump(result, "", buffer, 1024); } void SurfaceTexture::dump(String8& result, const char* prefix, char* buffer, size_t SIZE) const { Mutex::Autolock _l(mMutex); snprintf(buffer, SIZE, "%smBufferCount=%d, mSynchronousMode=%d, default-size=[%dx%d], " "mPixelFormat=%d, mTexName=%d\n", prefix, mBufferCount, mSynchronousMode, mDefaultWidth, mDefaultHeight, mPixelFormat, mTexName); result.append(buffer); String8 fifo; int fifoSize = 0; Fifo::const_iterator i(mQueue.begin()); while (i != mQueue.end()) { snprintf(buffer, SIZE, "%02d ", *i++); fifoSize++; fifo.append(buffer); } snprintf(buffer, SIZE, "%scurrent: {crop=[%d,%d,%d,%d], transform=0x%02x, current=%d, target=0x%04x}\n" "%snext : {crop=[%d,%d,%d,%d], transform=0x%02x, FIFO(%d)={%s}}\n" , prefix, mCurrentCrop.left, mCurrentCrop.top, mCurrentCrop.right, mCurrentCrop.bottom, mCurrentTransform, mCurrentTexture, mCurrentTextureTarget, prefix, mNextCrop.left, mNextCrop.top, mNextCrop.right, mNextCrop.bottom, mCurrentTransform, fifoSize, fifo.string() ); result.append(buffer); struct { const char * operator()(int state) const { switch (state) { case BufferSlot::DEQUEUED: return "DEQUEUED"; case BufferSlot::QUEUED: return "QUEUED"; case BufferSlot::FREE: return "FREE"; default: return "Unknown"; } } } stateName; for (int i=0 ; i<mBufferCount ; i++) { const BufferSlot& slot(mSlots[i]); snprintf(buffer, SIZE, "%s%s[%02d] state=%-8s, crop=[%d,%d,%d,%d], transform=0x%02x, " "timestamp=%lld\n" , prefix, (i==mCurrentTexture)?">":" ", i, stateName(slot.mBufferState), slot.mLastQueuedCrop.left, slot.mLastQueuedCrop.top, slot.mLastQueuedCrop.right, slot.mLastQueuedCrop.bottom, slot.mLastQueuedTransform, slot.mLastQueuedTimestamp ); result.append(buffer); } } static void mtxMul(float out[16], const float a[16], const float b[16]) { static void mtxMul(float out[16], const float a[16], const float b[16]) { out[0] = a[0]*b[0] + a[4]*b[1] + a[8]*b[2] + a[12]*b[3]; out[0] = a[0]*b[0] + a[4]*b[1] + a[8]*b[2] + a[12]*b[3]; out[1] = a[1]*b[0] + a[5]*b[1] + a[9]*b[2] + a[13]*b[3]; out[1] = a[1]*b[0] + a[5]*b[1] + a[9]*b[2] + a[13]*b[3]; Loading