improve hwc dumpsys
we now log the buffer's format Change-Id: I9d3ad8018e884240a153de3baefb6331cb014d0f
This commit is contained in:
parent
efc4aae67c
commit
fb4d5d5726
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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"; }
|
||||
|
||||
|
@ -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).
|
||||
|
Loading…
Reference in New Issue
Block a user