Closed Bug 1621454 Opened 4 years ago Closed 3 years ago

Implement specialized image shaders for Software WebRender

Categories

(Core :: Graphics: WebRender, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
84 Branch
Tracking Status
firefox84 --- fixed

People

(Reporter: lsalzman, Assigned: lsalzman)

References

(Blocks 1 open bug)

Details

(Keywords: perf-alert)

Attachments

(4 files)

There are potentially huge performance improvements to be gained from specializing the various image brush shaders in SW-WR to bypass the generalized shader path. This can easily offer huge speed-ups on image heavy pages such as Amazon, roughly cutting rasterization overheads in half or better.

Depends on: 1623093
Blocks: 1623093
No longer depends on: 1623093

Span shaders can be defined in GLSL by defining a function named swgl_drawSpanRGBA8
(or R8 depending on output format). A set of extended SWGL intrinsics is defined in
swgl_ext.h that provides various optimized means for implementing these span shaders.
This replaces the older C++ include-file based draw_span functionality that was
unfinished and cumbersome to use with a more flexible mechanism that interacts better
with fragment shaders.

Pushed by lsalzman@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/80c0aaa81c2e
support SWGL span shaders for fast-pathing inside WR GLSL. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/29943d5348df
implement SWGL shaders for brush_image/solid/opacity. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/6675f76d6f11
reduce requirements for SIMD padding in SWGL. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/d0d03d5a81a8
adjust fuzz for SWGL span shaders. r=jrmuizel
Backout by abutkovits@mozilla.com:
https://hg.mozilla.org/mozilla-central/rev/b1d72b69a8e6
Backed out 4 changesets for causing bustage src/swgl_ext.h. a=backout
Pushed by lsalzman@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ab54cc8c61f1
support SWGL span shaders for fast-pathing inside WR GLSL. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/4d421ff053dc
implement SWGL shaders for brush_image/solid/opacity. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/d13f7a62af01
reduce requirements for SIMD padding in SWGL. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/caeaf3b5c665
adjust fuzz for SWGL span shaders. r=jrmuizel
Regressions: 1674556

== Change summary for alert #27495 (as of Tue, 03 Nov 2020 13:24:44 GMT) ==

Improvements:

Ratio Suite Test Platform Options Absolute values (old vs new)
22% rasterflood_gradient windows10-64-shippable-qr e10s stylo webrender-sw 157.58 -> 191.83
21% rasterflood_gradient windows10-64-shippable-qr e10s stylo webrender-sw 158.00 -> 191.83
20% rasterflood_gradient linux64-shippable-qr e10s stylo webrender-sw 169.75 -> 203.08
20% tsvgx windows10-64-shippable-qr e10s stylo webrender-sw 337.78 -> 271.45
13% tsvgx linux64-shippable-qr e10s stylo webrender-sw 349.21 -> 304.57
11% glterrain linux64-shippable-qr e10s stylo webrender-sw 10.10 -> 9.00
7% tsvg_static linux64-shippable-qr e10s stylo webrender-sw 41.20 -> 38.13
4% rasterflood_svg linux64-shippable-qr e10s stylo webrender-sw 10,943.69 -> 10,526.76
4% tresize linux64-shippable-qr e10s stylo webrender-sw 14.88 -> 14.32

For up to date results, see: https://treeherder.mozilla.org/perfherder/alerts?id=27495

Keywords: perf-alert
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: