From 715333b832fb448c32165c7d97d408a3fa43f7cb Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Tue, 17 Nov 2009 17:26:46 -0800 Subject: Add support for dumping RS objects to aid in debugging of white blocks bug. --- libs/rs/rs.spec | 4 ++++ libs/rs/rsAllocation.cpp | 18 ++++++++++++++++++ libs/rs/rsAllocation.h | 2 ++ libs/rs/rsContext.cpp | 5 +++++ libs/rs/rsObjectBase.cpp | 12 ++++++++++++ libs/rs/rsObjectBase.h | 1 + 6 files changed, 42 insertions(+) (limited to 'libs/rs') diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec index be988e7..a4e72d9 100644 --- a/libs/rs/rs.spec +++ b/libs/rs/rs.spec @@ -42,6 +42,10 @@ ContextSetSurface { param void *sur } +ContextDump { + param int32_t bits +} + ContextSetPriority { param int32_t priority } diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index 16029a6..408d83f 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -190,6 +190,24 @@ void Allocation::subData(uint32_t xoff, uint32_t yoff, uint32_t zoff, { } +void Allocation::dumpLOGV(const char *prefix) const +{ + ObjectBase::dumpLOGV(prefix); + + String8 s(prefix); + s.append(" type "); + if (mType.get()) { + mType->dumpLOGV(s.string()); + } + + LOGV("%s allocation ptr=%p mCpuWrite=%i, mCpuRead=%i, mGpuWrite=%i, mGpuRead=%i", + prefix, mPtr, mCpuWrite, mCpuRead, mGpuWrite, mGpuRead); + + LOGV("%s allocation mIsTexture=%i mIsTextureID=%i, mIsVertexBuffer=%i, mBufferID=%i", + prefix, mIsTexture, mTextureID, mIsVertexBuffer, mBufferID); + + +} ///////////////// diff --git a/libs/rs/rsAllocation.h b/libs/rs/rsAllocation.h index 1b83267..514b1c2 100644 --- a/libs/rs/rsAllocation.h +++ b/libs/rs/rsAllocation.h @@ -65,6 +65,8 @@ public: void enableGLVertexBuffers() const; void setupGLIndexBuffers() const; + virtual void dumpLOGV(const char *prefix) const; + protected: ObjectBaseRef mType; diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index deb9592..08ed725 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -819,6 +819,11 @@ void rsi_ContextSetPriority(Context *rsc, int32_t p) rsc->setPriority(p); } +void rsi_ContextDump(Context *rsc, int32_t bits) +{ + ObjectBase::dumpAll(rsc); +} + } } diff --git a/libs/rs/rsObjectBase.cpp b/libs/rs/rsObjectBase.cpp index b7d67cc..05791cb 100644 --- a/libs/rs/rsObjectBase.cpp +++ b/libs/rs/rsObjectBase.cpp @@ -190,3 +190,15 @@ void ObjectBase::zeroAllUserRef(Context *rsc) } } +void ObjectBase::dumpAll(Context *rsc) +{ + if (rsc->props.mLogObjects) { + LOGV("Dumping all objects"); + const ObjectBase * o = rsc->mObjHead; + while (o) { + o->dumpLOGV(" "); + o = o->mNext; + } + } +} + diff --git a/libs/rs/rsObjectBase.h b/libs/rs/rsObjectBase.h index dc85ac7..f247022 100644 --- a/libs/rs/rsObjectBase.h +++ b/libs/rs/rsObjectBase.h @@ -49,6 +49,7 @@ public: void setContext(Context *); static void zeroAllUserRef(Context *rsc); + static void dumpAll(Context *rsc); virtual void dumpLOGV(const char *prefix) const; -- cgit v1.1