Bug 1493616. blob-inval: Log whether we have a 3d transform
authorJeff Muizelaar <jmuizelaar@mozilla.com>
Mon, 01 Oct 2018 11:34:54 -0400
changeset 494724 a91bad5598839b3de0560cd34d5013e9bf69da3f
parent 494723 d8ba9d86cee499c2d1eb10cfc7970b633c780eef
child 494725 2ef457f256d535e5edf98b125f6275b241553015
push id9984
push userffxbld-merge
push dateMon, 15 Oct 2018 21:07:35 +0000
treeherdermozilla-beta@183d27ea8570 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1493616
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1493616. blob-inval: Log whether we have a 3d transform
gfx/layers/wr/WebRenderCommandBuilder.cpp
--- a/gfx/layers/wr/WebRenderCommandBuilder.cpp
+++ b/gfx/layers/wr/WebRenderCommandBuilder.cpp
@@ -742,18 +742,27 @@ struct DIGroup
       }
 
       if (mInvalidRect.Contains(bounds)) {
         GP("Wholely contained\n");
         BlobItemData* data = GetBlobItemData(item);
         data->mInvalid = false;
       } else {
         BlobItemData* data = GetBlobItemData(item);
-        if (data->mInvalid)
-          gfxCriticalError() << "DisplayItem" << item->Name() << "should be invalid";
+        if (data->mInvalid) {
+          if (item->GetType() == DisplayItemType::TYPE_TRANSFORM) {
+            nsDisplayTransform* transformItem = static_cast<nsDisplayTransform*>(item);
+            const Matrix4x4Flagged& t = transformItem->GetTransform();
+            Matrix t2d;
+            bool is2D = t.Is2D(&t2d);
+            gfxCriticalError() << "DisplayItemTransform-" << is2D << "-should-be-invalid";
+          } else {
+            gfxCriticalError() << "DisplayItem" << item->Name() << "should be invalid";
+          }
+        }
         // if the item is invalid it needs to be fully contained
         MOZ_RELEASE_ASSERT(!data->mInvalid);
       }
 
       nsDisplayList* children = item->GetChildren();
       if (children) {
         GP("doing children in EndGroup\n");
         aGrouper->PaintContainerItem(this, item, bounds, children, aContext, aRecorder);