Commit Graph

2 Commits

Author SHA1 Message Date
Jeff Muizelaar
0471905a26 Bug 845874. Switch to Y-X banded regions. r=roc
Previously our region code was just a simple y,x sorted list of
non-intersecting rectangles. This can cause us to have simple regions
represented in a complex unoptimizable way.

Switching to pixman regions gives us a canonical region implementation.

There are some cases when this can cause performance regressions.

For example, with the old region code we end up with this region:
http://people.mozilla.org/~jmuizelaar/region-pre.html
which is represented like this:
http://people.mozilla.org/~jmuizelaar/region-post.html
with the new code.

We call SimplifyOutward(4) on this. With old regions we can't simplify it so we
end up taking the bounds and get 1 rect. With the new regions we have only 3
rects to start and so we do nothing. The difference between 3 rects and 1 rect
cause D2D to do a PushLayer() instead of a ClipRect() and that seems to be the
causes for the regression.

--HG--
extra : rebase_source : 65e0d29d67b51a3780448eaecfde33dbcb6b99b1
2013-11-18 13:01:54 -05:00
Benoit Girard
066eb25793 Bug 865902 - Port old gfx unit tests. r=milan
--HG--
rename : gfx/tests/TestColorNames.cpp => gfx/tests/gtest/TestColorNames.cpp
rename : gfx/tests/TestRect.cpp => gfx/tests/gtest/TestRect.cpp
rename : gfx/tests/TestRegion.cpp => gfx/tests/gtest/TestRegion.cpp
rename : gfx/tests/gfxFontSelectionTest.cpp => gfx/tests/gtest/gfxFontSelectionTest.cpp
rename : gfx/tests/gfxFontSelectionTests.h => gfx/tests/gtest/gfxFontSelectionTests.h
rename : gfx/tests/gfxSurfaceRefCountTest.cpp => gfx/tests/gtest/gfxSurfaceRefCountTest.cpp
rename : gfx/tests/gfxTextRunPerfTest.cpp => gfx/tests/gtest/gfxTextRunPerfTest.cpp
rename : gfx/tests/gfxWordCacheTest.cpp => gfx/tests/gtest/gfxWordCacheTest.cpp
rename : gfx/tests/per-word-runs.h => gfx/tests/gtest/per-word-runs.h
2013-04-25 19:02:13 -04:00