summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-09-20 15:13:14 -0700
committerMathias Agopian <mathias@google.com>2011-09-20 17:57:15 -0700
commit951c12efd684cee8bfc93daa41d87b2359dcc3c9 (patch)
tree8ecd3a302956f82442d6bff2925cd5e3dc746572 /services/surfaceflinger
parent474a27843d0aca41a8dc428af0888c28195c96ef (diff)
downloadframeworks_base-951c12efd684cee8bfc93daa41d87b2359dcc3c9.zip
frameworks_base-951c12efd684cee8bfc93daa41d87b2359dcc3c9.tar.gz
frameworks_base-951c12efd684cee8bfc93daa41d87b2359dcc3c9.tar.bz2
improve hwc dumpsys
we now log the buffer's format Change-Id: I9d3ad8018e884240a153de3baefb6331cb014d0f
Diffstat (limited to 'services/surfaceflinger')
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.cpp21
-rw-r--r--services/surfaceflinger/Layer.h2
-rw-r--r--services/surfaceflinger/LayerBase.h2
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp2
4 files changed, 21 insertions, 6 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index c9567d5..daefd5e 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -143,18 +143,29 @@ void HWComposer::dump(String8& result, char* buffer, size_t SIZE,
snprintf(buffer, SIZE, " numHwLayers=%u, flags=%08x\n",
mList->numHwLayers, mList->flags);
result.append(buffer);
-
+ result.append(
+ " type | hints | flags | tr | blend | format | source rectangle | crop rectangle name \n"
+ "-----------+----------+----------+----+-------+----------+---------------------------+--------------------------------\n");
+ // " ________ | ________ | ________ | __ | _____ | ________ | [_____,_____,_____,_____] | [_____,_____,_____,_____]
for (size_t i=0 ; i<mList->numHwLayers ; i++) {
const hwc_layer_t& l(mList->hwLayers[i]);
- snprintf(buffer, SIZE, " %8s | %08x | %08x | %02x | %04x | [%5d,%5d,%5d,%5d] | [%5d,%5d,%5d,%5d] %s\n",
+ const sp<LayerBase> layer(visibleLayersSortedByZ[i]);
+ int32_t format = -1;
+ if (layer->getLayer() != NULL) {
+ const sp<GraphicBuffer>& buffer(layer->getLayer()->getActiveBuffer());
+ if (buffer != NULL) {
+ format = buffer->getPixelFormat();
+ }
+ }
+ snprintf(buffer, SIZE,
+ " %8s | %08x | %08x | %02x | %05x | %08x | [%5d,%5d,%5d,%5d] | [%5d,%5d,%5d,%5d] %s\n",
l.compositionType ? "OVERLAY" : "FB",
- l.hints, l.flags, l.transform, l.blending,
+ l.hints, l.flags, l.transform, l.blending, format,
l.sourceCrop.left, l.sourceCrop.top, l.sourceCrop.right, l.sourceCrop.bottom,
l.displayFrame.left, l.displayFrame.top, l.displayFrame.right, l.displayFrame.bottom,
- visibleLayersSortedByZ[i]->getName().string());
+ layer->getName().string());
result.append(buffer);
}
-
}
if (mHwc && mHwc->common.version >= 1 && mHwc->dump) {
mHwc->dump(mHwc, buffer, SIZE);
diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h
index d06a35f..ff389ae 100644
--- a/services/surfaceflinger/Layer.h
+++ b/services/surfaceflinger/Layer.h
@@ -73,12 +73,14 @@ public:
virtual bool isSecure() const { return mSecure; }
virtual bool isProtected() const;
virtual void onRemoved();
+ virtual sp<Layer> getLayer() const { return const_cast<Layer*>(this); }
// LayerBaseClient interface
virtual wp<IBinder> getSurfaceTextureBinder() const;
// only for debugging
inline const sp<FreezeLock>& getFreezeLock() const { return mFreezeLock; }
+ inline const sp<GraphicBuffer>& getActiveBuffer() const { return mActiveBuffer; }
protected:
virtual void onFirstRef();
diff --git a/services/surfaceflinger/LayerBase.h b/services/surfaceflinger/LayerBase.h
index ee50428..a14b397 100644
--- a/services/surfaceflinger/LayerBase.h
+++ b/services/surfaceflinger/LayerBase.h
@@ -46,6 +46,7 @@ class Client;
class DisplayHardware;
class GraphicBuffer;
class GraphicPlane;
+class Layer;
class LayerBaseClient;
class SurfaceFlinger;
@@ -105,6 +106,7 @@ public:
void invalidate();
virtual sp<LayerBaseClient> getLayerBaseClient() const { return 0; }
+ virtual sp<Layer> getLayer() const { return 0; }
virtual const char* getTypeId() const { return "LayerBase"; }
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index df13640..431cd1a 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -925,7 +925,7 @@ Region SurfaceFlinger::setupHardwareComposer(const Region& dirty)
// what's happening here is tricky.
// we want to clear all the layers with the CLEAR_FB flags
// that are opaque.
- // however, since some GPU have are efficient at preserving
+ // however, since some GPU are efficient at preserving
// the backbuffer, we want to take advantage of that so we do the
// clear only in the dirty region (other areas will be preserved
// on those GPUs).