summaryrefslogtreecommitdiffstats
path: root/libs/rs
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-11-17 17:26:46 -0800
committerJason Sams <rjsams@android.com>2009-11-17 17:26:46 -0800
commit715333b832fb448c32165c7d97d408a3fa43f7cb (patch)
treeaf4da1824b78ad114d993ce6f523373046e3d514 /libs/rs
parentf0166e4dd0907e487531960e36f516406d265b73 (diff)
downloadframeworks_base-715333b832fb448c32165c7d97d408a3fa43f7cb.zip
frameworks_base-715333b832fb448c32165c7d97d408a3fa43f7cb.tar.gz
frameworks_base-715333b832fb448c32165c7d97d408a3fa43f7cb.tar.bz2
Add support for dumping RS objects to aid in debugging of white blocks bug.
Diffstat (limited to 'libs/rs')
-rw-r--r--libs/rs/rs.spec4
-rw-r--r--libs/rs/rsAllocation.cpp18
-rw-r--r--libs/rs/rsAllocation.h2
-rw-r--r--libs/rs/rsContext.cpp5
-rw-r--r--libs/rs/rsObjectBase.cpp12
-rw-r--r--libs/rs/rsObjectBase.h1
6 files changed, 42 insertions, 0 deletions
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<const Type> 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;