added a few more commands to SF's dumpsys
--latency-clear [name] clears the latency data for the specified layer or for all layers if none is specified --list prints the list of all layers regardless of their visibility Change-Id: I7c07ae020f838c173b98ee50f3fb3e93da78acbb
This commit is contained in:
parent
751ecf24fd
commit
25e66fc324
|
@ -553,8 +553,6 @@ void Layer::dump(String8& result, char* buffer, size_t SIZE) const
|
|||
|
||||
result.append(buffer);
|
||||
|
||||
LayerBase::dumpStats(result, buffer, SIZE);
|
||||
|
||||
if (mSurfaceTexture != 0) {
|
||||
mSurfaceTexture->dump(result, " ", buffer, SIZE);
|
||||
}
|
||||
|
@ -580,6 +578,12 @@ void Layer::dumpStats(String8& result, char* buffer, size_t SIZE) const
|
|||
result.append("\n");
|
||||
}
|
||||
|
||||
void Layer::clearStats()
|
||||
{
|
||||
LayerBaseClient::clearStats();
|
||||
memset(mFrameStats, 0, sizeof(mFrameStats));
|
||||
}
|
||||
|
||||
uint32_t Layer::getEffectiveUsage(uint32_t usage) const
|
||||
{
|
||||
// TODO: should we do something special if mSecure is set?
|
||||
|
|
|
@ -88,6 +88,7 @@ protected:
|
|||
virtual void onFirstRef();
|
||||
virtual void dump(String8& result, char* scratch, size_t size) const;
|
||||
virtual void dumpStats(String8& result, char* buffer, size_t SIZE) const;
|
||||
virtual void clearStats();
|
||||
|
||||
private:
|
||||
friend class SurfaceTextureLayer;
|
||||
|
|
|
@ -489,13 +489,14 @@ void LayerBase::dump(String8& result, char* buffer, size_t SIZE) const
|
|||
result.append(buffer);
|
||||
}
|
||||
|
||||
void LayerBase::shortDump(String8& result, char* scratch, size_t size) const
|
||||
{
|
||||
void LayerBase::shortDump(String8& result, char* scratch, size_t size) const {
|
||||
LayerBase::dump(result, scratch, size);
|
||||
}
|
||||
|
||||
void LayerBase::dumpStats(String8& result, char* scratch, size_t SIZE) const
|
||||
{
|
||||
void LayerBase::dumpStats(String8& result, char* scratch, size_t SIZE) const {
|
||||
}
|
||||
|
||||
void LayerBase::clearStats() {
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
|
|
@ -212,6 +212,7 @@ public:
|
|||
virtual void dump(String8& result, char* scratch, size_t size) const;
|
||||
virtual void shortDump(String8& result, char* scratch, size_t size) const;
|
||||
virtual void dumpStats(String8& result, char* buffer, size_t SIZE) const;
|
||||
virtual void clearStats();
|
||||
|
||||
|
||||
enum { // flags for doTransaction()
|
||||
|
|
|
@ -1486,12 +1486,27 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args)
|
|||
|
||||
bool dumpAll = true;
|
||||
size_t index = 0;
|
||||
if (args.size()) {
|
||||
size_t numArgs = args.size();
|
||||
if (numArgs) {
|
||||
dumpAll = false;
|
||||
if (args[index] == String16("--latency")) {
|
||||
|
||||
if ((index < numArgs) &&
|
||||
(args[index] == String16("--list"))) {
|
||||
index++;
|
||||
listLayersLocked(args, index, result, buffer, SIZE);
|
||||
}
|
||||
|
||||
if ((index < numArgs) &&
|
||||
(args[index] == String16("--latency"))) {
|
||||
index++;
|
||||
dumpStatsLocked(args, index, result, buffer, SIZE);
|
||||
}
|
||||
|
||||
if ((index < numArgs) &&
|
||||
(args[index] == String16("--latency-clear"))) {
|
||||
index++;
|
||||
clearStatsLocked(args, index, result, buffer, SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
if (dumpAll) {
|
||||
|
@ -1506,6 +1521,18 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args)
|
|||
return NO_ERROR;
|
||||
}
|
||||
|
||||
void SurfaceFlinger::listLayersLocked(const Vector<String16>& args, size_t& index,
|
||||
String8& result, char* buffer, size_t SIZE) const
|
||||
{
|
||||
const LayerVector& currentLayers = mCurrentState.layersSortedByZ;
|
||||
const size_t count = currentLayers.size();
|
||||
for (size_t i=0 ; i<count ; i++) {
|
||||
const sp<LayerBase>& layer(currentLayers[i]);
|
||||
snprintf(buffer, SIZE, "%s\n", layer->getName().string());
|
||||
result.append(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
void SurfaceFlinger::dumpStatsLocked(const Vector<String16>& args, size_t& index,
|
||||
String8& result, char* buffer, size_t SIZE) const
|
||||
{
|
||||
|
@ -1529,6 +1556,25 @@ void SurfaceFlinger::dumpStatsLocked(const Vector<String16>& args, size_t& index
|
|||
}
|
||||
}
|
||||
|
||||
void SurfaceFlinger::clearStatsLocked(const Vector<String16>& args, size_t& index,
|
||||
String8& result, char* buffer, size_t SIZE) const
|
||||
{
|
||||
String8 name;
|
||||
if (index < args.size()) {
|
||||
name = String8(args[index]);
|
||||
index++;
|
||||
}
|
||||
|
||||
const LayerVector& currentLayers = mCurrentState.layersSortedByZ;
|
||||
const size_t count = currentLayers.size();
|
||||
for (size_t i=0 ; i<count ; i++) {
|
||||
const sp<LayerBase>& layer(currentLayers[i]);
|
||||
if (name.isEmpty() || (name == layer->getName())) {
|
||||
layer->clearStats();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SurfaceFlinger::dumpAllLocked(
|
||||
String8& result, char* buffer, size_t SIZE) const
|
||||
{
|
||||
|
|
|
@ -337,8 +337,12 @@ private:
|
|||
void debugFlashRegions();
|
||||
void drawWormhole() const;
|
||||
|
||||
void listLayersLocked(const Vector<String16>& args, size_t& index,
|
||||
String8& result, char* buffer, size_t SIZE) const;
|
||||
void dumpStatsLocked(const Vector<String16>& args, size_t& index,
|
||||
String8& result, char* buffer, size_t SIZE) const;
|
||||
void clearStatsLocked(const Vector<String16>& args, size_t& index,
|
||||
String8& result, char* buffer, size_t SIZE) const;
|
||||
void dumpAllLocked(String8& result, char* buffer, size_t SIZE) const;
|
||||
|
||||
mutable MessageQueue mEventQueue;
|
||||
|
|
Loading…
Reference in New Issue