DescriptionBegin instanced rendering for simple shapes
Adds a module that performs instanced rendering and starts using it
for a select subset of draws on Mac GL platforms. The instance
processor can currently handle rects, ovals, round rects, and double
round rects. It can generalize shapes as round rects in order to
improve batching. The instance processor also employs new drawing
algorithms, irrespective of instanced rendering, that improve GPU-side
performance (e.g. sample mask, different triangle layouts, etc.).
This change only scratches the surface of instanced rendering. The
majority of draws still only have one instance. Future work may
include:
* Passing coord transforms through the texel buffer.
* Sending FP uniforms through instanced vertex attribs.
* Using instanced rendering for more draws (stencil writes,
drawAtlas, etc.).
* Adding more shapes to the instance processor’s repertoire.
* Batching draws that have mismatched scissors (analyzing draw
bounds, inserting clip planes, etc.).
* Bindless textures.
* Uber shaders.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2066993003
Committed: https://skia.googlesource.com/skia/+/42eafa4bc00354b132ad114d22ed6b95d8849891
Committed: https://skia.googlesource.com/skia/+/a7f29640f6ab4eb50962a9d9f12d01ac2ce8b471
Patch Set 1 #Patch Set 2 : fixes #Patch Set 3 : rebase #Patch Set 4 : add missing file #Patch Set 5 : get mixed samples and base instance paths working again #
Total comments: 2
Patch Set 6 : rebase and comments #Patch Set 7 : #Patch Set 8 : fix barriers #Patch Set 9 : Implement instanced rendering for simple shapes #Patch Set 10 : rebase #Patch Set 11 : fix assertion #Patch Set 12 : instances as linked list #Patch Set 13 : Implement instanced rendering for simple shapes #Patch Set 14 : Implement instanced rendering for simple shapes #Patch Set 15 : fix coverage circles #Patch Set 16 : test msaa4 and msaa8 on desktop as well #Patch Set 17 : undo msaa4/msaa8 #Patch Set 18 : Mac/NV whitelist #Patch Set 19 : Improve subpixel rects #Patch Set 20 : rebase #Patch Set 21 : rebase #Patch Set 22 : remove static initializer #Patch Set 23 : Rix perf regressions #
Depends on Patchset: Messages
Total messages: 35 (15 generated)
|