Closed
Bug 1467847
Opened 2 years ago
Closed Last year
Assertion failure: !aTransform.IsSingular(), at mozilla/gfx/Polygon.h:333
Categories
(Core :: Graphics, defect)
Core
Graphics
Not set
Tracking
()
RESOLVED
FIXED
mozilla63
People
(Reporter: truber, Assigned: lsalzman)
References
(Blocks 2 open bugs)
Details
(Keywords: assertion, testcase)
Attachments
(2 files)
392 bytes,
text/html
|
Details | |
3.41 KB,
patch
|
miko
:
review+
|
Details | Diff | Splinter Review |
The attached testcase causes an assertion in m-c 20180608-e0595117ff5b. #0: mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits>::TransformToScreenSpace(mozilla::gfx::Matrix4x4Typed<mozilla::gfx::UnknownUnits, mozilla::gfx::UnknownUnits> const&) at gfx/2d/Polygon.h:333 #1: mozilla::layers::TransformLayerGeometry(mozilla::layers::Layer*, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> >&) at gfx/layers/composite/ContainerLayerComposite.cpp:151 #2: void mozilla::layers::RenderLayers<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::RenderTargetPixel> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:453 #3: void mozilla::layers::ContainerRender<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:622 #4: void mozilla::layers::RenderLayers<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::RenderTargetPixel> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:456 #5: void mozilla::layers::ContainerRender<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:622 #6: void mozilla::layers::RenderLayers<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::RenderTargetPixel> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:456 #7: void mozilla::layers::ContainerRender<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:622 #8: void mozilla::layers::RenderLayers<mozilla::layers::RefLayerComposite>(mozilla::layers::RefLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::RenderTargetPixel> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:456 #9: void mozilla::layers::ContainerRender<mozilla::layers::RefLayerComposite>(mozilla::layers::RefLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:622 #10: void mozilla::layers::RenderLayers<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::RenderTargetPixel> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:456 #11: void mozilla::layers::ContainerRender<mozilla::layers::ContainerLayerComposite>(mozilla::layers::ContainerLayerComposite*, mozilla::layers::LayerManagerComposite*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, mozilla::Maybe<mozilla::gfx::PolygonTyped<mozilla::gfx::UnknownUnits> > const&) at gfx/layers/composite/ContainerLayerComposite.cpp:622 #12: mozilla::layers::LayerManagerComposite::Render(mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&) at gfx/layers/composite/LayerManagerComposite.cpp:954 #13: mozilla::layers::LayerManagerComposite::UpdateAndRender() at gfx/layers/composite/LayerManagerComposite.cpp:534 #14: mozilla::layers::LayerManagerComposite::EndTransaction(mozilla::TimeStamp const&, mozilla::layers::LayerManager::EndTransactionFlags) at gfx/layers/composite/LayerManagerComposite.cpp:464 #15: mozilla::layers::CompositorBridgeParent::CompositeToTarget(mozilla::gfx::DrawTarget*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const*) at gfx/layers/ipc/CompositorBridgeParent.cpp:1068 #16: mozilla::layers::CompositorVsyncScheduler::Composite(mozilla::TimeStamp) at gfx/layers/ipc/CompositorVsyncScheduler.cpp:243
Flags: in-testsuite?
Assignee | ||
Comment 1•Last year
|
||
In layers, transform.IsSingular() is checked, and transform.Inverse() is passed as the transform to Polygon::TransformToScreenSpace. However, transform.Inverse().IsSingular() unfortunately fails, due to precision issues, i.e. transform.Inverse().Inverse() is not guaranteed to exist. However, since we already have the original transform and the inverse lying around, it makes more sense to just pass both of these into the Polygon code, both avoiding the precision headaches from recomputing them and also avoiding unnecessary computation. I also put in the testcase as a crashtest.
Comment 2•Last year
|
||
Comment on attachment 8990076 [details] [diff] [review] avoid taking inverse in Polygon::TransformToScreenSpace when possible Review of attachment 8990076 [details] [diff] [review]: ----------------------------------------------------------------- Looks great. Thank you for fixing this.
Attachment #8990076 -
Flags: review?(mikokm) → review+
Pushed by lsalzman@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/a28effafa2d7 avoid taking inverse in Polygon::TransformToScreenSpace when possible. r=miko
Comment 4•Last year
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/a28effafa2d7
Status: ASSIGNED → RESOLVED
Closed: Last year
status-firefox63:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
Updated•Last year
|
status-firefox61:
--- → wontfix
status-firefox-esr52:
--- → wontfix
status-firefox-esr60:
--- → wontfix
Flags: in-testsuite? → in-testsuite+
You need to log in
before you can comment on or make changes to this bug.
Description
•