зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1834079 - Move stroke fallback heuristic to after we attempt AA-Stroke. r=jrmuizel
We have a heuristic that falls back from stroking certain paths with acceleration because both WGR and the texture cache can have slow output as the size of the path increases in screen area. AA-Stroke tends to have better output for these paths, or at least, this heuristic tends to have a detrimental effect on AA-Stroke usage and performance in important tests. Lets move the heuristic to after we use AA-Stroke for now. Differential Revision: https://phabricator.services.mozilla.com/D178549
This commit is contained in:
Родитель
dc797352d3
Коммит
82c989cfaf
|
@ -3024,14 +3024,6 @@ bool DrawTargetWebgl::SharedContext::DrawPathAccel(
|
|||
}
|
||||
// Nudge the bounds to account for the quantization rounding.
|
||||
Rect quantBounds = Rect(intBounds) + (realOrigin - quantizedOrigin);
|
||||
// If a stroke path covers too much screen area, it is likely that most is
|
||||
// empty space in the interior. This usually imposes too high a cost versus
|
||||
// just rasterizing without acceleration.
|
||||
if (aStrokeOptions &&
|
||||
intBounds.width * intBounds.height >
|
||||
(mViewportSize.width / 2) * (mViewportSize.height / 2)) {
|
||||
return false;
|
||||
}
|
||||
// If the pattern is a solid color, then this will be used along with a path
|
||||
// mask to render the path, as opposed to baking the pattern into the cached
|
||||
// path texture.
|
||||
|
@ -3221,6 +3213,17 @@ bool DrawTargetWebgl::SharedContext::DrawPathAccel(
|
|||
}
|
||||
}
|
||||
|
||||
// If a stroke path covers too much screen area, it is likely that most is
|
||||
// empty space in the interior. This usually imposes too high a cost versus
|
||||
// just rasterizing without acceleration. Note that AA-Stroke generally
|
||||
// produces more acceptable amounts of geometry for larger paths, so we do
|
||||
// this heuristic after we attempt AA-Stroke.
|
||||
if (aStrokeOptions &&
|
||||
intBounds.width * intBounds.height >
|
||||
(mViewportSize.width / 2) * (mViewportSize.height / 2)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If there isn't a valid texture handle, then we need to rasterize the
|
||||
// path in a software canvas and upload this to a texture. Solid color
|
||||
// patterns will be rendered as a path mask that can then be modulated
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
== bug863728-1.html bug863728-1-ref.html
|
||||
fuzzy(0-1,0-10) fuzzy-if(winWidget&&browserIsFission,47-137,211-251) == bug863728-2.html bug863728-2-ref.html # fission: bug 1717838
|
||||
fuzzy(0-128,0-281) fuzzy-if(winWidget&&browserIsFission,47-137,211-251) == bug863728-2.html bug863728-2-ref.html # fission: bug 1717838
|
||||
== bug863728-3.html bug863728-3-ref.html
|
||||
== bug945215-1.html bug945215-1-ref.html
|
||||
fuzzy(0-1,0-10) fuzzy-if(winWidget&&browserIsFission,47-137,211-251) == bug945215-2.html bug945215-2-ref.html # fission: bug 1717838
|
||||
fuzzy(0-128,0-281) fuzzy-if(winWidget&&browserIsFission,47-137,211-251) == bug945215-2.html bug945215-2-ref.html # fission: bug 1717838
|
||||
|
|
|
@ -165,7 +165,7 @@ fuzzy(0-95,0-2206) == attachment-local-clipping-image-5.html attachment-local-cl
|
|||
fuzzy(0-109,0-908) fuzzy-if(geckoview&&device,64-64,2010-2830) == attachment-local-clipping-image-6.html attachment-local-clipping-image-6-ref.html
|
||||
|
||||
fuzzy(0-1,0-84) == background-multiple-with-border-radius.html background-multiple-with-border-radius-ref.html
|
||||
fuzzy(0-11,0-49600) fails-if(useDrawSnapshot) == background-repeat-large-area.html background-repeat-large-area-ref.html # bug 1734383
|
||||
fuzzy(0-74,0-49600) fails-if(useDrawSnapshot) == background-repeat-large-area.html background-repeat-large-area-ref.html # bug 1734383
|
||||
|
||||
fuzzy(0-31,0-474) fails-if(useDrawSnapshot) == background-tiling-zoom-1.html background-tiling-zoom-1-ref.html # drawSnapshot doesn't deal with zoom properly
|
||||
|
||||
|
|
|
@ -1166,7 +1166,7 @@ fails-if(Android) == 455826-1.html 455826-1-ref.html
|
|||
== chrome://reftest/content/bugs/456147.xhtml 456147-ref.html
|
||||
fuzzy(24-110,110-800) == 456219-1a.html 456219-1-ref.html # bug 1128229
|
||||
fuzzy(24-110,107-1251) == 456219-1b.html 456219-1-ref.html # bug 1128229
|
||||
fuzzy(24-110,107-2940) == 456219-1c.html 456219-1-ref.html # bug 1128229
|
||||
fuzzy(24-110,107-3051) == 456219-1c.html 456219-1-ref.html # bug 1128229
|
||||
fuzzy(0-10,0-8) == 456219-2.html 456219-2-ref.html
|
||||
== 456330-1.gif 456330-1-ref.png
|
||||
== 456484-1.html 456484-1-ref.html
|
||||
|
|
|
@ -165,7 +165,7 @@ test-pref(layout.animation.prerender.partial.jank,true) test-pref(layout.animati
|
|||
test-pref(layout.animation.prerender.partial.jank,true) test-pref(layout.animation.prerender.partial,true) test-pref(layout.animation.prerender.viewport-ratio-limit,"1.125") == partial-prerender-translate-4.html partial-prerender-expansion-ref.html
|
||||
# This reftest doesn't fail on WebRender, this reftest fails only if there is a jank mechanism and the mechanism does inproperly handle position:fixed scroll target
|
||||
test-pref(layout.animation.prerender.partial.jank,true) test-pref(layout.animation.prerender.partial,true) test-pref(layout.animation.prerender.viewport-ratio-limit,"1.125") == partial-prerender-translate-5.html partial-prerender-translate-5-ref.html
|
||||
random-if(useDrawSnapshot) test-pref(layout.animation.prerender.partial.jank,true) test-pref(layout.animation.prerender.partial,true) test-pref(layout.animation.prerender.viewport-ratio-limit,"1.125") fuzzy(0-46,0-1250) fuzzy-if(Android,0-255,0-9900) random-if(gtkWidget&&isDebugBuild) == partial-prerender-translate-6.html partial-prerender-translate-6-ref.html
|
||||
skip-if(useDrawSnapshot) test-pref(layout.animation.prerender.partial.jank,true) test-pref(layout.animation.prerender.partial,true) test-pref(layout.animation.prerender.viewport-ratio-limit,"1.125") fuzzy(0-46,0-1250) fuzzy-if(Android,0-255,0-9900) random-if(gtkWidget&&isDebugBuild) random-if(useDrawSnapshot) == partial-prerender-translate-6.html partial-prerender-translate-6-ref.html
|
||||
test-pref(layout.animation.prerender.partial.jank,true) test-pref(layout.animation.prerender.partial,true) test-pref(layout.animation.prerender.viewport-ratio-limit,"1.125") fuzzy(0-4,0-1200) == partial-prerender-translate-7.html partial-prerender-translate-2-ref.html
|
||||
# This reftest doesn't fail on WebRender, this reftest fails only if there is a jank mechanism and the mechanism doesn't properly clip transform in iframes.
|
||||
test-pref(layout.animation.prerender.partial.jank,true) test-pref(layout.animation.prerender.partial,true) test-pref(layout.animation.prerender.viewport-ratio-limit,"1.125") == partial-prerender-translate-8.html partial-prerender-translate-8-ref.html
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[position-fixed-scroll-nested-fixed.html]
|
||||
expected:
|
||||
if os == "android": FAIL
|
||||
if os == "android": [PASS, FAIL]
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[offset-path-ray-contain-004.html]
|
||||
fuzzy:
|
||||
maxDifference=0-1;totalPixels=0-50
|
|
@ -0,0 +1,3 @@
|
|||
[devicepixel.html]
|
||||
fuzzy:
|
||||
maxDifference=0-191;totalPixels=0-2188
|
Загрузка…
Ссылка в новой задаче