Bug 1250718 - Improve layer logging for preserve-3d layers. r=thinker

--HG--
extra : rebase_source : 7405e30e0081bfa1b249ff6bd4f7bfd713110815
This commit is contained in:
Matt Woodrow 2016-03-18 09:18:10 +13:00
parent f6bfff23ab
commit 8d2b64d662
4 changed files with 40 additions and 16 deletions

View File

@ -1703,7 +1703,8 @@ void WriteSnapshotToDumpFile(Compositor* aCompositor, DrawTarget* aTarget)
#endif
void
Layer::Dump(std::stringstream& aStream, const char* aPrefix, bool aDumpHtml)
Layer::Dump(std::stringstream& aStream, const char* aPrefix,
bool aDumpHtml, bool aSorted)
{
#ifdef MOZ_DUMP_PAINTING
bool dumpCompositorTexture = gfxEnv::DumpCompositorTextures() && AsLayerComposite() &&
@ -1770,13 +1771,25 @@ Layer::Dump(std::stringstream& aStream, const char* aPrefix, bool aDumpHtml)
}
#endif
if (Layer* kid = GetFirstChild()) {
if (ContainerLayer* container = AsContainerLayer()) {
AutoTArray<Layer*, 12> children;
if (aSorted) {
container->SortChildrenBy3DZOrder(children);
} else {
for (Layer* l = container->GetFirstChild(); l; l = l->GetNextSibling()) {
children.AppendElement(l);
}
}
nsAutoCString pfx(aPrefix);
pfx += " ";
if (aDumpHtml) {
aStream << "<ul>";
}
kid->Dump(aStream, pfx.get(), aDumpHtml);
for (Layer* child : children) {
child->Dump(aStream, pfx.get(), aDumpHtml, aSorted);
}
if (aDumpHtml) {
aStream << "</ul>";
}
@ -1785,8 +1798,6 @@ Layer::Dump(std::stringstream& aStream, const char* aPrefix, bool aDumpHtml)
if (aDumpHtml) {
aStream << "</li>";
}
if (Layer* next = GetNextSibling())
next->Dump(aStream, aPrefix, aDumpHtml);
}
void
@ -1920,6 +1931,15 @@ Layer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
if (GetContentFlags() & CONTENT_BACKFACE_HIDDEN) {
aStream << " [backfaceHidden]";
}
if (Extend3DContext()) {
aStream << " [extend3DContext]";
}
if (Combines3DTransformWithAncestors()) {
aStream << " [combines3DTransformWithAncestors]";
}
if (Is3DContextLeaf()) {
aStream << " [is3DContextLeaf]";
}
if (GetScrollbarDirection() == VERTICAL) {
aStream << nsPrintfCString(" [vscrollbar=%lld]", GetScrollbarTargetContainerId()).get();
}
@ -2310,14 +2330,15 @@ ReadbackLayer::DumpPacket(layerscope::LayersPacket* aPacket, const void* aParent
// LayerManager
void
LayerManager::Dump(std::stringstream& aStream, const char* aPrefix, bool aDumpHtml)
LayerManager::Dump(std::stringstream& aStream, const char* aPrefix,
bool aDumpHtml, bool aSorted)
{
#ifdef MOZ_DUMP_PAINTING
if (aDumpHtml) {
aStream << "<ul><li>";
}
#endif
DumpSelf(aStream, aPrefix);
DumpSelf(aStream, aPrefix, aSorted);
nsAutoCString pfx(aPrefix);
pfx += " ";
@ -2340,17 +2361,18 @@ LayerManager::Dump(std::stringstream& aStream, const char* aPrefix, bool aDumpHt
}
void
LayerManager::DumpSelf(std::stringstream& aStream, const char* aPrefix)
LayerManager::DumpSelf(std::stringstream& aStream, const char* aPrefix, bool aSorted)
{
PrintInfo(aStream, aPrefix);
aStream << " --- in " << (aSorted ? "3D-sorted rendering order" : "content order");
aStream << "\n";
}
void
LayerManager::Dump()
LayerManager::Dump(bool aSorted)
{
std::stringstream ss;
Dump(ss);
Dump(ss, "", false, aSorted);
print_stderr(ss);
}

View File

@ -564,12 +564,13 @@ public:
* Dump information about this layer manager and its managed tree to
* aStream.
*/
void Dump(std::stringstream& aStream, const char* aPrefix="", bool aDumpHtml=false);
void Dump(std::stringstream& aStream, const char* aPrefix="",
bool aDumpHtml=false, bool aSorted=false);
/**
* Dump information about just this layer manager itself to aStream
*/
void DumpSelf(std::stringstream& aStream, const char* aPrefix="");
void Dump();
void DumpSelf(std::stringstream& aStream, const char* aPrefix="", bool aSorted=false);
void Dump(bool aSorted=false);
/**
* Dump information about this layer manager and its managed tree to
@ -1587,7 +1588,8 @@ public:
* Dump information about this layer manager and its managed tree to
* aStream.
*/
void Dump(std::stringstream& aStream, const char* aPrefix="", bool aDumpHtml=false);
void Dump(std::stringstream& aStream, const char* aPrefix="",
bool aDumpHtml=false, bool aSorted=false);
/**
* Dump information about just this layer manager itself to aStream.
*/

View File

@ -841,7 +841,7 @@ LayerManagerComposite::Render(const nsIntRegion& aInvalidRegion)
// Dump to console
if (gfxPrefs::LayersDump()) {
this->Dump();
this->Dump(/* aSorted= */true);
} else if (profiler_feature_active("layersdump")) {
std::stringstream ss;
Dump(ss);

View File

@ -1280,7 +1280,7 @@ CompositorParent::CompositeToTarget(DrawTarget* aTarget, const gfx::IntRect* aRe
#ifdef MOZ_DUMP_PAINTING
if (gfxPrefs::DumpHostLayers()) {
printf_stderr("Painting --- compositing layer tree:\n");
mLayerManager->Dump();
mLayerManager->Dump(/* aSorted = */ true);
}
#endif
mLayerManager->SetDebugOverlayWantsNextFrame(false);