Issue 10419 in skia: Implement Path rendering and stroking with GPU tessellation shaders

124 views
Skip to first unread message

csmartda… via monorail

unread,
Jun 22, 2020, 5:15:08 PM6/22/20
to bu...@skia.org
Status: Accepted
Owner: csmart...@google.com
Area: GPU
Priority: Medium
Type: Defect

New issue 10419 by csmart...@google.com: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419

This is a catch-all bug for our effort to implement path rendering and stroking with GPU tessellation shaders.

--
You received this message because:
1. The project was configured to send all issue notifications to this address

You may adjust your notification preferences at:
https://bugs.chromium.org/hosting/settings

bugdroid via monorail

unread,
Jun 23, 2020, 12:57:23 PM6/23/20
to bu...@skia.org

Comment #1 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c1

The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src.git/+/0de0f5e3d507e426fe2b33273d436890c7ca483f

commit 0de0f5e3d507e426fe2b33273d436890c7ca483f
Author: Chris Dalton <csmart...@google.com>
Date: Mon Jun 22 23:46:12 2020

Fill in glPatchParameteri on Skia's GL interface

Bug: skia:10419
Change-Id: I4f6926d7e4039edf9e16549c1ebd4db60011e1dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2253344
Commit-Queue: Chris Dalton <csmart...@chromium.org>
Reviewed-by: Zhenyao Mo <z...@chromium.org>
Cr-Commit-Position: refs/heads/master@{#781051}

[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/generate_bindings.py
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/gl_bindings_api_autogen_gl.h
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/gl_bindings_autogen_gl.cc
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/gl_bindings_autogen_gl.h
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/gl_bindings_autogen_mock.cc
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/gl_bindings_autogen_mock.h
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/gl_mock_autogen_gl.h
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/gl_stub_autogen_gl.h
[modify] https://crrev.com/0de0f5e3d507e426fe2b33273d436890c7ca483f/ui/gl/init/create_gr_gl_interface.cc

bugdroid via monorail

unread,
Jun 23, 2020, 1:32:34 PM6/23/20
to bu...@skia.org

Comment #2 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c2

bugdroid via monorail

unread,
Jun 23, 2020, 2:10:11 PM6/23/20
to bu...@skia.org

Comment #3 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c3

bugdroid via monorail

unread,
Jun 23, 2020, 3:03:32 PM6/23/20
to bu...@skia.org

Comment #4 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c4

bugdroid via monorail

unread,
Jun 25, 2020, 9:33:17 AM6/25/20
to bu...@skia.org

Comment #5 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c5


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/768adaa3c248a8a889a0c3b1af12a4af51756903

commit 768adaa3c248a8a889a0c3b1af12a4af51756903
Author: Chris Dalton <csmart...@google.com>
Date: Thu Jun 25 13:28:57 2020

Remove GrMiddleOutCubicShader::kMaxResolveLevel

This should have been removed already. Everybody can just use
GrTessellationPathRenderer::kMaxResolveLevel instead.

Bug: skia:10419
Change-Id: If38e499ce6f74a7b052219c2cac2a402d3d05d8c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298901
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Osman <brian...@google.com>

[modify] https://crrev.com/768adaa3c248a8a889a0c3b1af12a4af51756903/src/gpu/tessellate/GrResolveLevelCounter.h
[modify] https://crrev.com/768adaa3c248a8a889a0c3b1af12a4af51756903/src/gpu/tessellate/GrStencilPathShader.h
[modify] https://crrev.com/768adaa3c248a8a889a0c3b1af12a4af51756903/src/gpu/tessellate/GrStencilPathShader.cpp

bugdroid via monorail

unread,
Jun 25, 2020, 9:58:16 AM6/25/20
to bu...@skia.org

Comment #6 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c6


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/a6858aed839d11922c0fbb8e62df8fc95e2f9fe1

commit a6858aed839d11922c0fbb8e62df8fc95e2f9fe1
Author: Chris Dalton <csmart...@google.com>
Date: Thu Jun 25 13:57:38 2020

Don't write instance locations for unused resolve levels

This is a minor optimization for GrTessellatePathOp.cpp.

Bug: skia:10419
Change-Id: Ie9173f0827981aa254075820bee862f13a0ea333
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298902
Reviewed-by: Brian Osman <brian...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/a6858aed839d11922c0fbb8e62df8fc95e2f9fe1/src/gpu/tessellate/GrTessellatePathOp.cpp

bugdroid via monorail

unread,
Jun 30, 2020, 12:19:57 PM6/30/20
to bu...@skia.org

Comment #7 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c7


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/1c62a7b034c073dae64784a57bb4f794d41db893

commit 1c62a7b034c073dae64784a57bb4f794d41db893
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jun 30 16:19:36 2020

Implement stroking with GPU tessellation

Bootstraps tessellated stroking using GrStrokeGeometry mostly as
written. Strokes get decomposed into tessellation patches that
represent either a "cubic" (single stroked bezier curve with butt
caps) or a "join". The patches get drawn directly to the canvas
without any intermediate stencil steps. For the first revision, only
opaque, constant-color strokes are supported.

Bug: skia:10419
Change-Id: I601289189b93ebdf2f1efecd08628a6e0d9acb01
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/299142
Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/GrProcessor.h
[modify] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[add] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/tessellate/GrTessellateStrokeShader.h
[add] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/tessellate/GrTessellateStrokeOp.h
[modify] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/tessellate/GrStrokeGeometry.cpp
[add] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/tessellate/GrTessellateStrokeOp.cpp
[modify] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/gn/gpu.gni
[modify] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/tessellate/GrStrokeGeometry.h
[add] https://crrev.com/1c62a7b034c073dae64784a57bb4f794d41db893/src/gpu/tessellate/GrTessellateStrokeShader.cpp

bugdroid via monorail

unread,
Jul 6, 2020, 1:17:08 PM7/6/20
to bu...@skia.org

bugdroid via monorail

unread,
Jul 6, 2020, 9:37:45 PM7/6/20
to bu...@skia.org

Comment #9 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c9


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/d10f080fa844b7eb5479f56396285500e44af5b8

commit d10f080fa844b7eb5479f56396285500e44af5b8
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jul 07 01:37:40 2020

Return the actual block capacity from GrBufferAllocPool::makeSpaceAtLeast

It looks like this was changed to return the fallback size instead of
the block capacity for the sake of GrTextureOp, but GrTextureOp does
not call makeSpaceAtLeast() anymore.

For ops that write their vertex data in chunks, it's best to know the
full capacity of the block. This way they can maximize the amount of
data written out per chunk.

Bug: skia:10419
Change-Id: I7d3f74cdfc7d9b89f9d331e09069f8d178c07d81
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300396
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/d10f080fa844b7eb5479f56396285500e44af5b8/src/gpu/GrBufferAllocPool.cpp

bugdroid via monorail

unread,
Jul 7, 2020, 3:27:04 AM7/7/20
to bu...@skia.org

Comment #10 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c10


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/95dfda4ecaa7b483712befaae176c4d645447604

commit 95dfda4ecaa7b483712befaae176c4d645447604
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jul 07 07:17:15 2020

Revert "Return the actual block capacity from GrBufferAllocPool::makeSpaceAtLeast"

This reverts commit d10f080fa844b7eb5479f56396285500e44af5b8.

Reason for revert: Possible failures on roll

Original change's description:

> Return the actual block capacity from GrBufferAllocPool::makeSpaceAtLeast
>
> It looks like this was changed to return the fallback size instead of
> the block capacity for the sake of GrTextureOp, but GrTextureOp does
> not call makeSpaceAtLeast() anymore.
>
> For ops that write their vertex data in chunks, it's best to know the
> full capacity of the block. This way they can maximize the amount of
> data written out per chunk.
>
> Bug: skia:10419
> Change-Id: I7d3f74cdfc7d9b89f9d331e09069f8d178c07d81
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300396
> Reviewed-by: Brian Salomon <bsal...@google.com>
> Commit-Queue: Chris Dalton <csmart...@google.com>

TBR=bsal...@google.com,csmart...@google.com

Change-Id: Idb315fd68bcb585dcf5017872c0ffb7d0a52214c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10419
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300850
Reviewed-by: Chris Dalton <csmart...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/95dfda4ecaa7b483712befaae176c4d645447604/src/gpu/GrBufferAllocPool.cpp

bugdroid via monorail

unread,
Jul 7, 2020, 2:17:34 PM7/7/20
to bu...@skia.org

Comment #11 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c11


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/476975460ddb188faf1ab3865d140e09c92d9603

commit 476975460ddb188faf1ab3865d140e09c92d9603
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jul 07 18:13:51 2020

Reland "Return the actual block capacity from GrBufferAllocPool::makeSpaceAtLeast"

This is a reland of d10f080fa844b7eb5479f56396285500e44af5b8


Original change's description:
> Return the actual block capacity from GrBufferAllocPool::makeSpaceAtLeast
>
> It looks like this was changed to return the fallback size instead of
> the block capacity for the sake of GrTextureOp, but GrTextureOp does
> not call makeSpaceAtLeast() anymore.
>
> For ops that write their vertex data in chunks, it's best to know the
> full capacity of the block. This way they can maximize the amount of
> data written out per chunk.
>
> Bug: skia:10419
> Change-Id: I7d3f74cdfc7d9b89f9d331e09069f8d178c07d81
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300396
> Reviewed-by: Brian Salomon <bsal...@google.com>
> Commit-Queue: Chris Dalton <csmart...@google.com>

TBR=bsal...@google.com

Bug: skia:10419
Change-Id: Id76b0ef56d9df32545773634a13733739284240c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300877

Reviewed-by: Chris Dalton <csmart...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Jul 9, 2020, 1:58:52 PM7/9/20
to bu...@skia.org

Comment #12 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c12


The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src.git/+/4f79dddfd9c079fcf94eab96873faf66d62c182d

commit 4f79dddfd9c079fcf94eab96873faf66d62c182d
Author: Chris Dalton <csmart...@google.com>
Date: Thu Jul 09 17:55:51 2020

Check for tessellation extensions when wrangling glPatchParameteri

Makes sure to set up bindings for glPatchParameteri when
GL_ARB_tessellation_shader or GL_OES_tessellation_shader are supported.

Bug: skia:10419
Change-Id: Ie28e440955063cb3d5f644c81cec97692a25c4c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2285170
Reviewed-by: Zhenyao Mo <z...@chromium.org>
Reviewed-by: ccameron <ccam...@chromium.org>
Commit-Queue: Chris Dalton <csmart...@chromium.org>
Cr-Commit-Position: refs/heads/master@{#786824}

[modify] https://crrev.com/4f79dddfd9c079fcf94eab96873faf66d62c182d/ui/gl/generate_bindings.py
[modify] https://crrev.com/4f79dddfd9c079fcf94eab96873faf66d62c182d/ui/gl/gl_bindings_autogen_gl.cc
[modify] https://crrev.com/4f79dddfd9c079fcf94eab96873faf66d62c182d/ui/gl/gl_bindings_autogen_gl.h
[modify] https://crrev.com/4f79dddfd9c079fcf94eab96873faf66d62c182d/ui/gl/gl_bindings_autogen_mock.cc
[modify] https://crrev.com/4f79dddfd9c079fcf94eab96873faf66d62c182d/ui/gl/gl_bindings_autogen_mock.h

bugdroid via monorail

unread,
Jul 9, 2020, 4:59:43 PM7/9/20
to bu...@skia.org

Comment #13 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c13


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/1413d11eaaa2fef25b3660ed971abb6d93e20389

commit 1413d11eaaa2fef25b3660ed971abb6d93e20389
Author: Chris Dalton <csmart...@google.com>
Date: Thu Jul 09 20:59:03 2020

Check sk_VertexID support for GrTessellationPathRenderer

This functionality was being used but we forgot to check for it.

Bug: skia:10419
Change-Id: If74d7b58de5b9e902798e0d9834beaf2ad7f752b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301544
Reviewed-by: Jim Van Verth <jvan...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/1413d11eaaa2fef25b3660ed971abb6d93e20389/src/gpu/GrPathRendererChain.cpp
[modify] https://crrev.com/1413d11eaaa2fef25b3660ed971abb6d93e20389/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/1413d11eaaa2fef25b3660ed971abb6d93e20389/src/gpu/tessellate/GrTessellationPathRenderer.h

bugdroid via monorail

unread,
Jul 10, 2020, 12:40:13 PM7/10/20
to bu...@skia.org

Comment #14 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c14


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/b490eb2c51a167f05c644b6026392d633c60e5be

commit b490eb2c51a167f05c644b6026392d633c60e5be
Author: Chris Dalton <csmart...@google.com>
Date: Fri Jul 10 16:39:53 2020

Add ANGLE's glMultiDraw*BaseInstance functions to the GL interface

This is how we will implement indirect draws in ANGLE and WebGL.
Emscripten will expose WEBGL_multi_draw through this extension.

Bug: skia:10419
Change-Id: I3fc56b130b06cdcc05a25be69878b398b8820f50
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301736
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/b490eb2c51a167f05c644b6026392d633c60e5be/src/gpu/gl/GrGLAssembleGLESInterfaceAutogen.cpp
[modify] https://crrev.com/b490eb2c51a167f05c644b6026392d633c60e5be/tools/gpu/gl/interface/interface.json5
[modify] https://crrev.com/b490eb2c51a167f05c644b6026392d633c60e5be/include/gpu/gl/GrGLInterface.h
[modify] https://crrev.com/b490eb2c51a167f05c644b6026392d633c60e5be/src/gpu/gl/GrGLInterfaceAutogen.cpp
[modify] https://crrev.com/b490eb2c51a167f05c644b6026392d633c60e5be/include/gpu/gl/GrGLFunctions.h

bugdroid via monorail

unread,
Jul 13, 2020, 6:16:04 PM7/13/20
to bu...@skia.org

Comment #15 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c15


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/5bdbdf44a99fb9537c747fe62c18b6580aa93b27

commit 5bdbdf44a99fb9537c747fe62c18b6580aa93b27
Author: Chris Dalton <csmart...@google.com>
Date: Mon Jul 13 22:13:30 2020

Update glMultiDraw... to use GLuint* for baseInstances

There seems to be some inconsistency across specs, but GLuint* is the
correct type to use for this array.

TBR=bsal...@google.com

Bug: skia:10419
Change-Id: I4106b98278850e30e748746159ea4efc05688c0c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/302433
Reviewed-by: Chris Dalton <csmart...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/5bdbdf44a99fb9537c747fe62c18b6580aa93b27/include/gpu/gl/GrGLFunctions.h

bugdroid via monorail

unread,
Jul 14, 2020, 3:05:23 PM7/14/20
to bu...@skia.org

Comment #16 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c16


The following revision refers to this bug:
https://chromium.googlesource.com/chromium/src.git/+/8d9f618149150d7d222111d6470a727f6bcef6ac

commit 8d9f618149150d7d222111d6470a727f6bcef6ac
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jul 14 19:02:04 2020

Add glMultiDraw*BaseInstance bindings to Skia's GL interface

Also updates the glMultiDrawArraysInstancedBaseInstanceANGLE signature
to match the current spec.

Bug: skia:10419
Change-Id: Icac21ec71ed5545a07f60c62be0183eaaf81f80d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2292705
Commit-Queue: Chris Dalton <csmart...@chromium.org>
Reviewed-by: ccameron <ccam...@chromium.org>
Reviewed-by: Zhenyao Mo <z...@chromium.org>
Cr-Commit-Position: refs/heads/master@{#788282}

[modify] https://crrev.com/8d9f618149150d7d222111d6470a727f6bcef6ac/ui/gl/init/create_gr_gl_interface.cc

bugdroid via monorail

unread,
Jul 16, 2020, 8:40:22 PM7/16/20
to bu...@skia.org

Comment #17 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c17


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/d72cb4c076b7113b667a706ddecb8f03695ca555

commit d72cb4c076b7113b667a706ddecb8f03695ca555
Author: Chris Dalton <csmart...@google.com>
Date: Fri Jul 17 00:39:03 2020

Mixed samples/conservative raster cleanups for tessellation

Tessellation previously worked under the assumption that conservative
raster was always supported if we were using mixed samples, but this
is not the case in ANGLE. This CL checks for support before using
conservative raster and also disables the atlas if kAlpha8 does not
support MSAA.

Bug: skia:10419
Change-Id: I0bf429b3b7bb3f0e67c46552f08c689b7b816b57
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/303480
Reviewed-by: Greg Daniel <egda...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/d72cb4c076b7113b667a706ddecb8f03695ca555/src/gpu/tessellate/GrTessellatePathOp.cpp
[modify] https://crrev.com/d72cb4c076b7113b667a706ddecb8f03695ca555/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/d72cb4c076b7113b667a706ddecb8f03695ca555/src/gpu/tessellate/GrTessellationPathRenderer.h

bugdroid via monorail

unread,
Jul 17, 2020, 5:19:35 PM7/17/20
to bu...@skia.org

Comment #18 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c18


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c

commit bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c
Author: Chris Dalton <csmart...@google.com>
Date: Fri Jul 17 21:18:53 2020

Implement indirect draws with ANGLE's multi draw extension

This also brings indirect draw support to CanvasKit because Emscripten
will expose WEBGL_multi_draw through these extensions.

Bug: skia:10419
Change-Id: Icea3fedb846bb932e7d19f8f4a1e5646e25d4c2d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/303263
Commit-Queue: Chris Dalton <csmart...@google.com>

Reviewed-by: Jim Van Verth <jvan...@google.com>

[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/gl/GrGLCaps.h
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/gl/GrGLOpsRenderPass.cpp
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/gl/GrGLCaps.cpp
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/GrCaps.h
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/gl/GrGLOpsRenderPass.h
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/GrBufferAllocPool.cpp
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/tools/gpu/gl/interface/interface.json5
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/gl/GrGLInterfaceAutogen.cpp
[modify] https://crrev.com/bde4bb7efe85bee6e79974e9a5c5a8f493cc9f0c/src/gpu/GrCaps.cpp

bugdroid via monorail

unread,
Jul 21, 2020, 11:50:26 AM7/21/20
to bu...@skia.org

Comment #19 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c19


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/5bae1b83ffc864a0f70cc0631c291015b5f16714

commit 5bae1b83ffc864a0f70cc0631c291015b5f16714
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jul 21 15:50:04 2020

Always return the full remaining buffer capacity from makeSpaceAtLeast

In the case where the blocks were empty we used to return the
fallbackSize as opposed to the actual size of the block.

Bug: skia:10419
Change-Id: Ie36c81f3b98bf8e95a2881356489ac54a842b787
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/304437
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/5bae1b83ffc864a0f70cc0631c291015b5f16714/src/gpu/GrBufferAllocPool.cpp

bugdroid via monorail

unread,
Jul 24, 2020, 12:40:31 AM7/24/20
to bu...@skia.org

Comment #20 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c20


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/9eea916c05aaf68044e076e4a02082a5498d8aa1

commit 9eea916c05aaf68044e076e4a02082a5498d8aa1
Author: Chris Dalton <csmart...@google.com>
Date: Fri Jul 24 04:38:51 2020

Write GPU buffers directly from GrStrokeGeometry

Removes the intermediate stroke representation that GrStrokeGeometry
used to generate. Uses GrOpFlushState::makeVertexStateAtLeast instead
and writes patches directly to a vertex buffer as we iterate the path.
If the vertex buffer runs out of room we simply allocate a new one and
draw the stroke in chunks.

Bug: skia:10419
Bug: skia:10460
Change-Id: Ic743158366e43d4d3f5a4ff97b039d48c9c9c65b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305380
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

[modify] https://crrev.com/9eea916c05aaf68044e076e4a02082a5498d8aa1/src/gpu/tessellate/GrTessellateStrokeShader.h
[modify] https://crrev.com/9eea916c05aaf68044e076e4a02082a5498d8aa1/src/gpu/tessellate/GrTessellateStrokeOp.h
[modify] https://crrev.com/9eea916c05aaf68044e076e4a02082a5498d8aa1/src/gpu/tessellate/GrStrokeGeometry.cpp
[modify] https://crrev.com/9eea916c05aaf68044e076e4a02082a5498d8aa1/src/gpu/tessellate/GrTessellateStrokeOp.cpp
[modify] https://crrev.com/9eea916c05aaf68044e076e4a02082a5498d8aa1/samplecode/SampleCCPRGeometry.cpp
[modify] https://crrev.com/9eea916c05aaf68044e076e4a02082a5498d8aa1/src/gpu/tessellate/GrStrokeGeometry.h

bugdroid via monorail

unread,
Jul 24, 2020, 12:40:35 AM7/24/20
to bu...@skia.org

Comment #21 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c21


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/f617b4d9c2b8727a62ea40e0024b61515f1a70e9

commit f617b4d9c2b8727a62ea40e0024b61515f1a70e9
Author: Chris Dalton <csmart...@google.com>
Date: Fri Jul 24 04:39:57 2020

Rename GrStrokeGeometry -> GrStrokePatchBuilder

Bug: skia:10419
Change-Id: Iffd139c2d489deb9d57fa860c20158ee398b7c11
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/305561

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

bugdroid via monorail

unread,
Jul 29, 2020, 2:12:35 PM7/29/20
to bu...@skia.org

Comment #22 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c22


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/e5b6eece5c58898dfd28de66d51f64fed22bad59

commit e5b6eece5c58898dfd28de66d51f64fed22bad59
Author: Chris Dalton <csmart...@google.com>
Date: Wed Jul 29 18:11:59 2020

Make tessellation join type values negative

This feels more intuitive and it allows the override number of
segments to be positive.

Bug: skia:10419
Change-Id: I0a57d9b114abb4ec8472e1c405ace4385be23e42
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/306417
Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/e5b6eece5c58898dfd28de66d51f64fed22bad59/src/gpu/tessellate/GrTessellateStrokeShader.h
[modify] https://crrev.com/e5b6eece5c58898dfd28de66d51f64fed22bad59/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/e5b6eece5c58898dfd28de66d51f64fed22bad59/src/gpu/tessellate/GrTessellateStrokeShader.cpp

bugdroid via monorail

unread,
Jul 30, 2020, 9:33:19 PM7/30/20
to bu...@skia.org

Comment #23 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c23


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/128ed7b4dfde1fb2e20b7d1fb2963945f669ba4b

commit 128ed7b4dfde1fb2e20b7d1fb2963945f669ba4b
Author: Chris Dalton <csmart...@google.com>
Date: Fri Jul 31 01:33:01 2020

Add view matrix support to tessellated stroking

To bootstrap tessellated stroking, we started out by converting stroke
paths to device space. This CL removes that conversion and adds two
transformations to the stroking pipeline:

1) A "matrixScale" that scales the control points before
tessellation. This scalar's job is to make sure we tessellate
into the right amount of triangles.

2) A "skewMatrix" that transforms the post-tessellation triangles.
This matrix's job is to apply any skews or translations from the
view matrix, without expanding the geometry in any direction.

Bug: skia:10419
Change-Id: Ib98fc3bd66e1f2bff9fa0e1186294ba8da51e8da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/306419

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

bugdroid via monorail

unread,
Jul 30, 2020, 10:24:22 PM7/30/20
to bu...@skia.org

Comment #24 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c24


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/078f87547753dfd571f6d20069af198ab1bc8738

commit 078f87547753dfd571f6d20069af198ab1bc8738
Author: Chris Dalton <csmart...@google.com>
Date: Fri Jul 31 02:24:05 2020

Rename GrTessellateStroke* -> GrStrokeTessellate* and friends

Almost half the files in src/gpu/tessellate were beginning with
"GrTessellat*". This CL reorders the camel case words for more
efficient tab completion and better grouping of related files.

Bug: skia:10419
Change-Id: I3df0ddbb2367cdbd880807a8aef2dd88ec12f830
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/306659

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

[rename] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStrokeTessellateShader.h
[rename] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrPathTessellateOp.h
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/GrProcessor.h
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStencilPathShader.h
[rename] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStrokeTessellateOp.h
[rename] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/bench/TessellateBench.cpp
[rename] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/samplecode/SampleTessellatedWedge.cpp
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrTessellationPathRenderer.h
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/gn/gpu.gni
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStrokePatchBuilder.h
[rename] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[rename] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrPathTessellateOp.cpp
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/src/gpu/tessellate/GrStencilPathShader.cpp
[modify] https://crrev.com/078f87547753dfd571f6d20069af198ab1bc8738/gn/bench.gni

bugdroid via monorail

unread,
Aug 19, 2020, 5:42:37 PM8/19/20
to bu...@skia.org

Comment #25 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c25


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/26766ad4270477d9b1708ed5ca5142b0855c2e7a

commit 26766ad4270477d9b1708ed5ca5142b0855c2e7a
Author: Chris Dalton <csmart...@google.com>
Date: Wed Aug 19 21:39:44 2020

Add utilities to SkGeometry for quad and cubic rotation angles

Adds methods to measure the rotation angles of quadratics and cubics,
and to chop curves at locations that divide the rotation angle in half.

Bug: skia:10419
Change-Id: I840e12034fc66e1a459de875fefda07a27a78335
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/308880

Reviewed-by: Jim Van Verth <jvan...@google.com>

bugdroid via monorail

unread,
Aug 19, 2020, 7:45:57 PM8/19/20
to bu...@skia.org

Comment #26 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c26


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/6b3c2f653b21062f3be449d2bcb0e5a376855eaa

commit 6b3c2f653b21062f3be449d2bcb0e5a376855eaa
Author: Chris Dalton <csmart...@google.com>
Date: Wed Aug 19 23:45:12 2020

Move GrWangsFormula::nextlog2 to sk_float_nextlog2

Other code outside this namespace will want to use this method soon.

Bug: skia:10419
Change-Id: Ib155f224866fd333b8f9a4b78e6c9e51ac0600df
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/311936
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/6b3c2f653b21062f3be449d2bcb0e5a376855eaa/include/private/SkFloatingPoint.h
[modify] https://crrev.com/6b3c2f653b21062f3be449d2bcb0e5a376855eaa/tests/MathTest.cpp
[modify] https://crrev.com/6b3c2f653b21062f3be449d2bcb0e5a376855eaa/src/gpu/tessellate/GrWangsFormula.h
[modify] https://crrev.com/6b3c2f653b21062f3be449d2bcb0e5a376855eaa/tests/WangsFormulaTest.cpp

bugdroid via monorail

unread,
Aug 19, 2020, 9:47:10 PM8/19/20
to bu...@skia.org

Comment #27 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c27


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/dc594f21c09a28fd045eb4683788dd64ef923d96

commit dc594f21c09a28fd045eb4683788dd64ef923d96
Author: Mike Klein <mtk...@google.com>
Date: Thu Aug 20 01:46:24 2020

Revert "Add utilities to SkGeometry for quad and cubic rotation angles"

This reverts commit 26766ad4270477d9b1708ed5ca5142b0855c2e7a.

Reason for revert: Pixel & Nexus 5 failing with

Failures:
../../../../../../skia/tests/GeometryTest.cpp:424 [Geometry]: SkScalarNearlyEqual(leftRotation, expectedChoppedRotation)
../../../../../../skia/tests/GeometryTest.cpp:424 [Geometry]: SkScalarNearlyEqual(leftRotation, expectedChoppedRotation)


Original change's description:

> Add utilities to SkGeometry for quad and cubic rotation angles
>
> Adds methods to measure the rotation angles of quadratics and cubics,
> and to chop curves at locations that divide the rotation angle in half.
>
> Bug: skia:10419
> Change-Id: I840e12034fc66e1a459de875fefda07a27a78335
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/308880
> Reviewed-by: Jim Van Verth <jvan...@google.com>
> Commit-Queue: Chris Dalton <csmart...@google.com>

TBR=egda...@google.com,jvan...@google.com,csmart...@google.com,re...@google.com

Change-Id: Ic3d5c1ae35b74aa340757e92132bb2c1b8910cc6

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10419

bugdroid via monorail

unread,
Aug 20, 2020, 12:37:00 PM8/20/20
to bu...@skia.org

Comment #28 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c28


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/71e2126a830f8f2b69f442af3ee83884935615eb

commit 71e2126a830f8f2b69f442af3ee83884935615eb
Author: Chris Dalton <csmart...@google.com>
Date: Thu Aug 20 16:36:02 2020

Add new tests to trickycubicstrokes

Adds cusps and flat beziers with 180 degree turns that confuse the
new tessellator.

Bug: skia:10419
Change-Id: I2529780da596fe365c1d2825e29145beedf5cb01
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/312118
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/71e2126a830f8f2b69f442af3ee83884935615eb/gm/trickycubicstrokes.cpp

bugdroid via monorail

unread,
Aug 21, 2020, 1:57:54 PM8/21/20
to bu...@skia.org

Comment #29 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c29


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/c4ec291ec6496ffde8dacf1cd4baad9ca20c86e5

commit c4ec291ec6496ffde8dacf1cd4baad9ca20c86e5
Author: Chris Dalton <csmart...@google.com>
Date: Fri Aug 21 17:57:40 2020

Reland "Add utilities to SkGeometry for quad and cubic rotation angles"

This is a reland of 26766ad4270477d9b1708ed5ca5142b0855c2e7a


Original change's description:
> Add utilities to SkGeometry for quad and cubic rotation angles
>
> Adds methods to measure the rotation angles of quadratics and cubics,
> and to chop curves at locations that divide the rotation angle in half.
>
> Bug: skia:10419
> Change-Id: I840e12034fc66e1a459de875fefda07a27a78335
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/308880
> Reviewed-by: Jim Van Verth <jvan...@google.com>
> Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Aug 25, 2020, 3:14:35 PM8/25/20
to bu...@skia.org

Comment #30 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c30


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/a316aa65fca782f679098a93cc06915dd46bfcfc

commit a316aa65fca782f679098a93cc06915dd46bfcfc
Author: Chris Dalton <csmart...@google.com>
Date: Tue Aug 25 19:11:17 2020

Add "radial edges" to tessellated stroking

Tessellated stroking works by creating stroke-width edges orthogonal
to the curve at set locations and then connecting them with a
quad strip. In the past these edges have been spaced evenly in the
parametric sense, but this does not work for areas of tight curvature
like cusps. To work around this we would do expensive CPU work to chop
curves around points of strong curvature and insert combinations of
lines and round joins.

This CL introduces a second set of orthogonal edges called "radial
edges". While parametric edges are spaced evenly in the parametric
sense, radial edges divide the curve's _rotation_ into even steps. The
tessellation shader evaluates both sets of edges (parametric and
radial) and sorts them into a single quad strip. With this new
combined set of edges we can draw any curve and the CPU never has to
worry about curvature.

Bug: skia:10419
Change-Id: I49291cc2efdf0d26835abbe9a9d21643bce0b4da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/312601
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Jim Van Verth <jvan...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/a316aa65fca782f679098a93cc06915dd46bfcfc/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/a316aa65fca782f679098a93cc06915dd46bfcfc/src/gpu/tessellate/GrStrokePatchBuilder.h
[modify] https://crrev.com/a316aa65fca782f679098a93cc06915dd46bfcfc/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/a316aa65fca782f679098a93cc06915dd46bfcfc/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Aug 27, 2020, 3:23:36 PM8/27/20
to bu...@skia.org

Comment #31 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c31


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/b0ebb5a5990066f9769d8796cf69ad9e43f49db5

commit b0ebb5a5990066f9769d8796cf69ad9e43f49db5
Author: Chris Dalton <csmart...@google.com>
Date: Thu Aug 27 19:22:09 2020

Don't pre-scale tessellated strokes by the matrix scale

In order to expand into the correct amount of triangles, we instead
factor the matrix scale into the tolerances.

Bug: skia:10419
Change-Id: I178b9600a8837ec5fc997199a8bf6be87227ec94
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/313300
Reviewed-by: Greg Daniel <egda...@google.com>
Reviewed-by: Chris Dalton <csmart...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/b0ebb5a5990066f9769d8796cf69ad9e43f49db5/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/b0ebb5a5990066f9769d8796cf69ad9e43f49db5/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/b0ebb5a5990066f9769d8796cf69ad9e43f49db5/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/b0ebb5a5990066f9769d8796cf69ad9e43f49db5/src/gpu/tessellate/GrStrokePatchBuilder.h
[modify] https://crrev.com/b0ebb5a5990066f9769d8796cf69ad9e43f49db5/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/b0ebb5a5990066f9769d8796cf69ad9e43f49db5/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Sep 9, 2020, 3:19:32 PM9/9/20
to bu...@skia.org

Comment #32 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c32


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/c2ae19caa5d8a760ebcbc208614323f0a40488b9

commit c2ae19caa5d8a760ebcbc208614323f0a40488b9
Author: Chris Dalton <csmart...@google.com>
Date: Wed Sep 09 19:18:07 2020

Add more flat line cases to trickycubicstrokes

Bug: skia:10419
Change-Id: Ie3eba0181d59d6ab759bcf8cc4b53dfac135cbd6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/315857
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/c2ae19caa5d8a760ebcbc208614323f0a40488b9/gm/trickycubicstrokes.cpp

bugdroid via monorail

unread,
Sep 10, 2020, 9:15:57 PM9/10/20
to bu...@skia.org

Comment #33 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c33


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/9d6f955f52e961556969ceff8798a79644f4706d

commit 9d6f955f52e961556969ceff8798a79644f4706d
Author: Chris Dalton <csmart...@google.com>
Date: Fri Sep 11 01:15:40 2020

Chop tessellated strokes in the vertex shader

The stroke tessellator can't handle inflections and can't handle
rotations greater than 180 degrees. Before this CL we had to use the CPU
to chop curves at their inflections and midtangents in order to meet
these constraints. This CL adds a vertex shader to the tessellation
pipeline that handles all the chopping logic on the GPU.

Bug: skia:10419
Change-Id: I2d3279076bafa415395e014772a305e616fcff71
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/315797
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/9d6f955f52e961556969ceff8798a79644f4706d/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/9d6f955f52e961556969ceff8798a79644f4706d/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/9d6f955f52e961556969ceff8798a79644f4706d/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/9d6f955f52e961556969ceff8798a79644f4706d/src/gpu/tessellate/GrStrokePatchBuilder.h
[modify] https://crrev.com/9d6f955f52e961556969ceff8798a79644f4706d/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/9d6f955f52e961556969ceff8798a79644f4706d/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Sep 15, 2020, 4:08:48 PM9/15/20
to bu...@skia.org

Comment #34 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c34


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/31bf3d9bb57a156b60dac7874c3b89d952985d83

commit 31bf3d9bb57a156b60dac7874c3b89d952985d83
Author: Chris Dalton <csmart...@google.com>
Date: Tue Sep 15 20:05:40 2020

Relax SkStrokeRec::hasEqualEffect

Ignores the miter limit if the join type is not kMiter.

Bug: skia:10419
Change-Id: Ib05895cf90c7bb0e25e9e8c3e26c13fef32f2e97
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317163
Reviewed-by: Mike Reed <re...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/31bf3d9bb57a156b60dac7874c3b89d952985d83/tests/StrokeTest.cpp
[modify] https://crrev.com/31bf3d9bb57a156b60dac7874c3b89d952985d83/include/core/SkStrokeRec.h

bugdroid via monorail

unread,
Sep 16, 2020, 11:14:13 AM9/16/20
to bu...@skia.org

Comment #35 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c35


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/5c3e1a969e8fa79df78996b4ac79cf32eb4f2caf

commit 5c3e1a969e8fa79df78996b4ac79cf32eb4f2caf
Author: Chris Dalton <csmart...@google.com>
Date: Wed Sep 16 15:12:47 2020

Add a quadratic cusp to trickycubicstrokes

Bug: skia:10419
Change-Id: I37f04f442485c13cc7af60e0573b23dfaa5378bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317267
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/5c3e1a969e8fa79df78996b4ac79cf32eb4f2caf/gm/trickycubicstrokes.cpp

bugdroid via monorail

unread,
Sep 17, 2020, 7:51:54 PM9/17/20
to bu...@skia.org

Comment #36 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c36


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e

commit 31634288fdf3f9dfc9e10e1832e9e2aae17ad69e
Author: Chris Dalton <csmart...@google.com>
Date: Thu Sep 17 23:48:44 2020

Add gms that test limited hw tessellation segments

Adds variations of trickycubicstrokes and widebuttcaps that limit the
max number of hardware tessellation segments to 5. This exercises our
stroking logic for splitting curves and joins when they require more
segments than are supported by the hardware.

Bug: skia:10419
Change-Id: Ie52374b89e30bfa021b2de74e3cd32e02ab734d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317268

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>
Reviewed-by: Robert Phillips <robertp...@google.com>

[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/src/gpu/GrDrawingManager.h
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/gm/widebuttcaps.cpp
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/tools/flags/CommonFlags.h
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/gm/trickycubicstrokes.cpp
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/src/gpu/GrPathRendererChain.cpp
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/src/gpu/GrShaderCaps.cpp
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/tools/flags/CommonFlagsGpu.cpp
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/include/gpu/GrContextOptions.h
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/31634288fdf3f9dfc9e10e1832e9e2aae17ad69e/src/gpu/tessellate/GrTessellationPathRenderer.h

bugdroid via monorail

unread,
Sep 18, 2020, 12:25:35 PM9/18/20
to bu...@skia.org

Comment #37 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c37


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/34c5052657aeb2975f0164118549d877d69c3a35

commit 34c5052657aeb2975f0164118549d877d69c3a35
Author: Chris Dalton <csmart...@google.com>
Date: Fri Sep 18 16:20:59 2020

Don't simplify a stroked shape if it isn't closed

A stroke that starts and ends at the same point is not the same as a
stroke with an explicit close.

Bug: skia:10419
Change-Id: Ibd8b6cd4ba04b2b9acf3dee6d01ad88ba6ba7071
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317650
Reviewed-by: Brian Salomon <bsal...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/34c5052657aeb2975f0164118549d877d69c3a35/tests/PathTest.cpp
[modify] https://crrev.com/34c5052657aeb2975f0164118549d877d69c3a35/tests/GrStyledShapeTest.cpp
[modify] https://crrev.com/34c5052657aeb2975f0164118549d877d69c3a35/src/core/SkPathPriv.h
[modify] https://crrev.com/34c5052657aeb2975f0164118549d877d69c3a35/src/gpu/geometry/GrShape.cpp
[modify] https://crrev.com/34c5052657aeb2975f0164118549d877d69c3a35/src/core/SkPath.cpp

bugdroid via monorail

unread,
Sep 18, 2020, 1:32:02 PM9/18/20
to bu...@skia.org

Comment #38 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c38


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/fd53e6355cab28175c9524240c712d5bd695c032

commit fd53e6355cab28175c9524240c712d5bd695c032
Author: Chris Dalton <csmart...@google.com>
Date: Fri Sep 18 17:29:18 2020

Lift SkMeasureAngleInsideVectors and SkFindBisector to public SkGeometry API

Also improves SkChopCubicAtMidtangent robustness in degenerate cases.

Bug: skia:10419
Change-Id: I54a1187ce4286ee87c2e5230082844a303830bf4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317165
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: John Stiles <johns...@google.com>

[modify] https://crrev.com/fd53e6355cab28175c9524240c712d5bd695c032/tests/GeometryTest.cpp
[modify] https://crrev.com/fd53e6355cab28175c9524240c712d5bd695c032/src/core/SkGeometry.h
[modify] https://crrev.com/fd53e6355cab28175c9524240c712d5bd695c032/src/core/SkGeometry.cpp

bugdroid via monorail

unread,
Sep 22, 2020, 6:31:23 PM9/22/20
to bu...@skia.org

Comment #39 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c39


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/7c76b094457da8b36de3e1bea781af753461e988

commit 7c76b094457da8b36de3e1bea781af753461e988
Author: Chris Dalton <csmart...@google.com>
Date: Tue Sep 22 22:28:10 2020

Extract SkFindCubicMidTangent from SkChopCubicAtMidTangent

Also does the same for the quadratic variants.

Bug: skia:10419
Change-Id: I4a0e46a0d76d16dcf452f39c7e2552975ec46ed6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/318783

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: John Stiles <johns...@google.com>

bugdroid via monorail

unread,
Sep 23, 2020, 1:04:03 PM9/23/20
to bu...@skia.org

Comment #40 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c40


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/6756afabb6870a40477d77c360e56acce38efa72

commit 6756afabb6870a40477d77c360e56acce38efa72
Author: Chris Dalton <csmart...@google.com>
Date: Wed Sep 23 17:03:57 2020

Fail the "tess_segs_5" tests if Skia doesn't actually give us 5 tessellation segments

Bug: skia:10419
Change-Id: I5363ac6ac74131341d010cf2958cc5d7a070689f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/318782
Reviewed-by: Robert Phillips <robertp...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/6756afabb6870a40477d77c360e56acce38efa72/gm/widebuttcaps.cpp
[modify] https://crrev.com/6756afabb6870a40477d77c360e56acce38efa72/gm/trickycubicstrokes.cpp

bugdroid via monorail

unread,
Sep 23, 2020, 3:06:47 PM9/23/20
to bu...@skia.org

Comment #41 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c41


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/d1e6716f6ae65200c638e0d22182b71639277d6e

commit d1e6716f6ae65200c638e0d22182b71639277d6e
Author: Chris Dalton <csmart...@google.com>
Date: Wed Sep 23 19:02:27 2020

Add an "allPathsVolatile" option for testing

Bug: skia:10419
Change-Id: I4bb2dc515448d8c87329ade90d24bf78ca1d7938
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319097
Reviewed-by: Mike Reed <re...@google.com>

Reviewed-by: Robert Phillips <robertp...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Sep 23, 2020, 3:06:50 PM9/23/20
to bu...@skia.org

Comment #42 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c42


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/49814b9fdc61061c59ada9a06299b1e910267cae

commit 49814b9fdc61061c59ada9a06299b1e910267cae
Author: Chris Dalton <csmart...@google.com>
Date: Wed Sep 23 19:05:17 2020

Merge joins into the same tessellation patch as their following stroke

Implements the previous join as a sub-section of the tessellation
patch. This cuts the number of vertex shader invocations in half since
we are no longer treating joins as their own patch. (This therefore
cuts the amount of inflection/midtangent chopping work in half also.)

This required a lot of modifications to GrStrokePatchBuilder.cpp, so
this CL also finishes up the chopping logic in that file for when there
aren't enough tessellation segments to render a curve.

Bug: skia:10419
Change-Id: I3da081fe756c97aeeb65e27f1319a29763b4ad34
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/318876
Reviewed-by: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/49814b9fdc61061c59ada9a06299b1e910267cae/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/49814b9fdc61061c59ada9a06299b1e910267cae/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/49814b9fdc61061c59ada9a06299b1e910267cae/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/49814b9fdc61061c59ada9a06299b1e910267cae/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/49814b9fdc61061c59ada9a06299b1e910267cae/src/gpu/tessellate/GrStrokePatchBuilder.h
[modify] https://crrev.com/49814b9fdc61061c59ada9a06299b1e910267cae/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/49814b9fdc61061c59ada9a06299b1e910267cae/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Sep 23, 2020, 4:36:20 PM9/23/20
to bu...@skia.org

Comment #43 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c43


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/e2067645ef0fa7aa3706071047d40886d25e89f4

commit e2067645ef0fa7aa3706071047d40886d25e89f4
Author: Chris Dalton <csmart...@google.com>
Date: Wed Sep 23 20:35:47 2020

Optimize GrWangsFormula

Adds various optimizations to GrWangsFormula as well as "pow4" variants
of the formula that are quicker than the standard and/or log2 versions.
Uses the pow4 variants in GrStrokePatchBuilder.

Bug: skia:10419
Change-Id: I8478582df5296b088d25808bcaeb93107ff20797
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/318954

Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Sep 24, 2020, 2:08:26 PM9/24/20
to bu...@skia.org

Comment #44 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c44


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/e74cebefdeeb2aeeb162a0ddc912c833247e5789

commit e74cebefdeeb2aeeb162a0ddc912c833247e5789
Author: Chris Dalton <csmart...@google.com>
Date: Thu Sep 24 18:07:24 2020

Begin implementing onPrePrepare for tessellation ops

Records programInfos for the stroke ops and for the stencil portions
of the path ops.

We can't prePrepare programInfos for the fill portions yet because it
would require multiple GrPipelines that all reference the same
GrProcessorSet. And GrProcessorSet is currently designed to be
std::moved into one single GrPipeline.

Bug: skia:10419
Change-Id: I3b8c061da181e20d3ff68746cf4b9c61f6d73a88
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319256
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Robert Phillips <robertp...@google.com>

[modify] https://crrev.com/e74cebefdeeb2aeeb162a0ddc912c833247e5789/src/gpu/tessellate/GrPathTessellateOp.h
[modify] https://crrev.com/e74cebefdeeb2aeeb162a0ddc912c833247e5789/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/e74cebefdeeb2aeeb162a0ddc912c833247e5789/bench/TessellateBench.cpp
[modify] https://crrev.com/e74cebefdeeb2aeeb162a0ddc912c833247e5789/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/e74cebefdeeb2aeeb162a0ddc912c833247e5789/src/gpu/tessellate/GrPathShader.h
[modify] https://crrev.com/e74cebefdeeb2aeeb162a0ddc912c833247e5789/src/gpu/tessellate/GrPathTessellateOp.cpp

bugdroid via monorail

unread,
Sep 24, 2020, 3:51:36 PM9/24/20
to bu...@skia.org

Comment #45 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c45


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/9278f107951c918a1db56258500371bab0c92d74

commit 9278f107951c918a1db56258500371bab0c92d74
Author: Chris Dalton <csmart...@google.com>
Date: Thu Sep 24 19:50:34 2020

Add "AllPathsVolatile" skpbench bots

Also adds GalaxyS20 to the mix, which wasn't running skpbench
previously.

Also removes the skpbench logic to fail if we don't recognize the
hardware or have specific scripts for it. We don't have time to reverse
engineer every new piece of hardware we want to run on and the general
android script is quite helpful already.

Bug: skia:10419
Change-Id: I0e139cdd4bc2e7ca0e2e14c715d319664fa8c949
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319143
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Greg Daniel <egda...@google.com>
Reviewed-by: Kevin Lubick <kjlu...@google.com>

[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_CCPR_Skpbench.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/tasks.json
[add] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-AllPathsVolatile_Skpbench.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/jobs.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/tools/skpbench/_os_path.py
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/README.recipes.md
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/trybot.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_Skpbench.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/Perf-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-Vulkan_Skpbench_DDLTotal_9x9.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/gen_tasks_logic/gen_tasks_logic.go
[add] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_AllPathsVolatile_Skpbench.json
[add] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_Vulkan_AllPathsVolatile_Skpbench.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/tools/skpbench/skpbench.py
[modify] https://crrev.com/9278f107951c918a1db56258500371bab0c92d74/infra/bots/recipes/skpbench.py

bugdroid via monorail

unread,
Sep 25, 2020, 12:56:14 PM9/25/20
to bu...@skia.org

bugdroid via monorail

unread,
Sep 25, 2020, 5:14:12 PM9/25/20
to bu...@skia.org

Comment #47 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c47


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a

commit 1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a
Author: Chris Dalton <csmart...@google.com>
Date: Fri Sep 25 21:12:50 2020

Move user stencil settings from GrPipeline to GrProgramInfo

Bug: skia:10419
Change-Id: If11d28f6d9348ba0011825f719123c09f0103603
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319481
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Robert Phillips <robertp...@google.com>

[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/gl/GrGLGpu.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/mtl/GrMtlPipelineState.mm
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrCCCoverageProcessor.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrCCPathProcessor.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrSimpleMeshDrawOpHelperWithStencil.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrStencilAtlasOp.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrAAHairLinePathRenderer.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrCCFiller.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrDrawPathOp.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/tessellate/GrPathTessellateOp.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrAtlasTextOp.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/dawn/GrDawnOpsRenderPass.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/gm/tessellation.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/GrPipeline.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/GrOpFlushState.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/vk/GrVkPipelineStateCache.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/GrOpsRenderPass.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/tessellate/GrPathShader.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/dawn/GrDawnProgramBuilder.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/GrProgramInfo.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/GrProgramInfo.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/tests/GrMeshTest.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrCCFiller.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrStencilAtlasOp.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrCCCoverageProcessor.h
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/mtl/GrMtlCaps.mm
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ccpr/GrCCStroker.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/ops/GrSmallPathRenderer.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/tests/GrPipelineDynamicStateTest.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/GrPipeline.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/GrOpFlushState.cpp
[modify] https://crrev.com/1b6a43cf20d75b1ab6edb4c5d8de7fea88f78b9a/src/gpu/tessellate/GrDrawAtlasPathOp.cpp

bugdroid via monorail

unread,
Sep 25, 2020, 8:18:56 PM9/25/20
to bu...@skia.org

Comment #48 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c48


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/5e1545fa00c80d61d788ce456862446f7870bdc3

commit 5e1545fa00c80d61d788ce456862446f7870bdc3
Author: Chris Dalton <csmart...@google.com>
Date: Sat Sep 26 00:18:40 2020

Finish recording tessellation pipelines

Bug: skia:10419
Change-Id: I37493f0b99490e43798292cbc9f8df87a102001e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319516

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Robert Phillips <robertp...@google.com>

bugdroid via monorail

unread,
Oct 8, 2020, 12:39:09 PM10/8/20
to bu...@skia.org

Comment #49 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c49


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/9eaca48f463c236be44426803d65200dc48a8835

commit 9eaca48f463c236be44426803d65200dc48a8835
Author: Kevin Lubick <kjlu...@google.com>
Date: Thu Oct 08 16:38:10 2020

[canvaskit] Update emsdk to 2.0.6

Of note, I had to explicitly export _malloc and _free, since
we use those directly in the binding layer.

Code size change:
-20k on JS (-1k compressed)
-21k on WASM (-15k compressed)

Bug: skia:10419, skia:10794
Change-Id: Id7670b6fcbf1524ad3155a863db51eb49aa24811
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/323979
Reviewed-by: Kevin Lubick <kjlu...@google.com>

[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/wasm-common/docker/Makefile
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/modules/canvaskit/CHANGELOG.md
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/canvaskit.py
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/modules/canvaskit/compile.sh
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-EMCC-asmjs-Release-PathKit.json
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-EMCC-wasm-Release-CanvasKit_CPU.json
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/canvaskit/docker/Makefile
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-EMCC-wasm-Release-PathKit.json
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-EMCC-asmjs-Debug-PathKit.json
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/wasm-common/docker/emsdk-base/Dockerfile
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/pathkit.py
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/canvaskit/docker/canvaskit-emsdk/Dockerfile
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-EMCC-wasm-Debug-CanvasKit.json
[modify] https://crrev.com/9eaca48f463c236be44426803d65200dc48a8835/infra/bots/recipe_modules/build/examples/full.expected/Build-Debian10-EMCC-wasm-Debug-PathKit.json

bugdroid via monorail

unread,
Oct 9, 2020, 2:44:55 PM10/9/20
to bu...@skia.org

Comment #50 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c50


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/141d35cdec2d4808ef43c94aef2d859c83d368de

commit 141d35cdec2d4808ef43c94aef2d859c83d368de
Author: Chris Dalton <csmart...@google.com>
Date: Fri Oct 09 18:44:14 2020

Simplify the inflection/rotation finding math for stroke tessellation

Bug: skia:10419
Change-Id: I7754a1f19eea8630db3ede29e1ee7c79a53091bd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/322041
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

Reviewed-by: Jim Van Verth <jvan...@google.com>

bugdroid via monorail

unread,
Oct 9, 2020, 6:12:16 PM10/9/20
to bu...@skia.org

bugdroid via monorail

unread,
Oct 12, 2020, 12:33:53 PM10/12/20
to bu...@skia.org

Comment #52 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c52


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/9213e610ed92422d0b39dc4ff12303ca037131d2

commit 9213e610ed92422d0b39dc4ff12303ca037131d2
Author: Chris Dalton <csmart...@google.com>
Date: Mon Oct 12 16:33:07 2020

Disable the tessellation atlas on non-direct contexts

The atlas is not compatible with DDL. This is a temporary fix that will
allow us to finally enable tessellation. In the near future we plan to
remove the atlas entirely by implementing SkRegion batching and
reordering instead.

Bug: skia:10419
Change-Id: Ie2d1bda31c12cda8ecd4889004483f679f5ba7e9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/324976
Reviewed-by: Robert Phillips <robertp...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/9213e610ed92422d0b39dc4ff12303ca037131d2/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/9213e610ed92422d0b39dc4ff12303ca037131d2/src/gpu/tessellate/GrTessellationPathRenderer.h

bugdroid via monorail

unread,
Oct 12, 2020, 10:24:26 PM10/12/20
to bu...@skia.org

Comment #53 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c53


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/f58db3c94da3a849dda645ab48867cf923ae336e

commit f58db3c94da3a849dda645ab48867cf923ae336e
Author: Chris Dalton <csmart...@google.com>
Date: Tue Oct 13 02:23:03 2020

Various optimizations to stroke tessellation shaders

Bug: skia:10419
Change-Id: I1544113b6ea2327674a48a0430146a859a547723
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/322796
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

[modify] https://crrev.com/f58db3c94da3a849dda645ab48867cf923ae336e/tests/WangsFormulaTest.cpp
[modify] https://crrev.com/f58db3c94da3a849dda645ab48867cf923ae336e/src/gpu/tessellate/GrWangsFormula.h
[modify] https://crrev.com/f58db3c94da3a849dda645ab48867cf923ae336e/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/f58db3c94da3a849dda645ab48867cf923ae336e/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Oct 16, 2020, 1:48:33 PM10/16/20
to bu...@skia.org

Comment #54 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c54


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/418eda2c599ab8fec96c6fed749fc117935e0a88

commit 418eda2c599ab8fec96c6fed749fc117935e0a88
Author: Chris Dalton <csmart...@google.com>
Date: Fri Oct 16 17:44:31 2020

Slightly improve cubic chop precision in stroke tessellation shaders

Also adds GrGLSLVertexGeoBuilder::appendRawFunctionDefinition(). This
allows us to define functions in vertex and geometry shaders whose names
don't get mangled.

Bug: skia:10419
Change-Id: I90319b54bcbbb7000c7809cb6ce8d1969a3bd8c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327456
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/418eda2c599ab8fec96c6fed749fc117935e0a88/src/gpu/glsl/GrGLSLVertexGeoBuilder.h
[modify] https://crrev.com/418eda2c599ab8fec96c6fed749fc117935e0a88/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Oct 19, 2020, 1:36:45 PM10/19/20
to bu...@skia.org

Comment #55 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c55


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/f1cd1553b373e33fd372bc5914c16db0fec17d23

commit f1cd1553b373e33fd372bc5914c16db0fec17d23
Author: Chris Dalton <csmart...@google.com>
Date: Mon Oct 19 17:34:30 2020

Remove a redundant position assignment from stroke tessellation shaders

Bug: skia:10419
Change-Id: I74429ceb1fc03e68872c74eb62f64675e1bd55cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327476
Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/f1cd1553b373e33fd372bc5914c16db0fec17d23/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Oct 23, 2020, 6:11:16 PM10/23/20
to bu...@skia.org

Comment #56 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c56


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/58a26a83628c42bb7de10ae6cd953aa823e9ee30

commit 58a26a83628c42bb7de10ae6cd953aa823e9ee30
Author: Chris Dalton <csmart...@google.com>
Date: Fri Oct 23 22:09:46 2020

Fix the formula for fNumRadialSegmentsPerRadian in GrStrokePatchBuilder

GrStrokePatchBuilder had the wrong formula. This CL moves the formula to
GrStrokeTessellateOp and calculates it in one spot for the builder and
tessellator both. It also fixes a bug that was hiding behind this
formula error and updates some variable names.

Bug: skia:10419
Change-Id: I908d3960b16cac8dca0d40ff4116a3f5c5beed06
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/328416

Reviewed-by: Jim Van Verth <jvan...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/58a26a83628c42bb7de10ae6cd953aa823e9ee30/src/gpu/tessellate/GrStrokePatchBuilder.h
[modify] https://crrev.com/58a26a83628c42bb7de10ae6cd953aa823e9ee30/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/58a26a83628c42bb7de10ae6cd953aa823e9ee30/bench/TessellateBench.cpp
[modify] https://crrev.com/58a26a83628c42bb7de10ae6cd953aa823e9ee30/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/58a26a83628c42bb7de10ae6cd953aa823e9ee30/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/58a26a83628c42bb7de10ae6cd953aa823e9ee30/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/58a26a83628c42bb7de10ae6cd953aa823e9ee30/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Oct 26, 2020, 5:36:32 PM10/26/20
to bu...@skia.org

Comment #57 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c57


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/81b270a659c21a858c940fb3b7da33dbe020bb38

commit 81b270a659c21a858c940fb3b7da33dbe020bb38
Author: Chris Dalton <csmart...@google.com>
Date: Mon Oct 26 21:36:25 2020

Optimize SkChopCubicAt to chop at two points at once

Adds an SkChopCubicAt overload that performs two chops at once in
SIMD. Also updates SkChopCubicAt to accept T values of 0 and 1. This
has been the source of bugs in the past.

Bug: skia:10419
Change-Id: Ic8a482a69192fb1685f3766411cbdceed830f9b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327436
Reviewed-by: Mike Reed <re...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/81b270a659c21a858c940fb3b7da33dbe020bb38/tests/GeometryTest.cpp
[modify] https://crrev.com/81b270a659c21a858c940fb3b7da33dbe020bb38/src/core/SkGeometry.h
[modify] https://crrev.com/81b270a659c21a858c940fb3b7da33dbe020bb38/src/core/SkGeometry.cpp
[modify] https://crrev.com/81b270a659c21a858c940fb3b7da33dbe020bb38/include/private/SkVx.h

bugdroid via monorail

unread,
Nov 2, 2020, 11:38:06 AM11/2/20
to bu...@skia.org

Comment #58 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c58


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/4dd3c8cbefe76af19c40e3c1556624219e530f69

commit 4dd3c8cbefe76af19c40e3c1556624219e530f69
Author: Chris Dalton <csmart...@google.com>
Date: Mon Nov 02 16:36:43 2020

Fix Wang's formula for cubics

We finally have a reference and derivation of Wang's formula, thanks to
tdenniston@. And it turns out that the formula we had been using for
cubics wasn't quite right. It was overly conservative for certain types
of curves.

This CL fixes the incorrect cubic formulas and adds a citation to the
"Pyramid Algorithms" book. We should now be getting by with fewer linear
segments.

Bug: skia:10419
Change-Id: Ib850c7b4d17b8d9f9abed800cc7cb5f074df6e17
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/331156
Reviewed-by: Tyler Denniston <tdenn...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/4dd3c8cbefe76af19c40e3c1556624219e530f69/tests/WangsFormulaTest.cpp
[modify] https://crrev.com/4dd3c8cbefe76af19c40e3c1556624219e530f69/src/gpu/tessellate/GrWangsFormula.h
[modify] https://crrev.com/4dd3c8cbefe76af19c40e3c1556624219e530f69/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/4dd3c8cbefe76af19c40e3c1556624219e530f69/src/gpu/tessellate/GrStencilPathShader.cpp
[modify] https://crrev.com/4dd3c8cbefe76af19c40e3c1556624219e530f69/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Nov 2, 2020, 1:35:20 PM11/2/20
to bu...@skia.org

Comment #59 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c59


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/c3cb099556566caf7d592c50e272aa0b61a7468c

commit c3cb099556566caf7d592c50e272aa0b61a7468c
Author: Chris Dalton <csmart...@google.com>
Date: Mon Nov 02 18:33:54 2020

Add GrVx.h

Adds grvx, Ganesh's addendum to skvx. Here we introduce familiar names
and operations from GPU languages, as well as functions that are
approximate and/or have LSB differences from platform to platform.

The initial implementation has: fast_fma, fast_acos, and
fast_angle_between_vectors. When a function is approximate, its error
range is well documented and tested.

Also establishes GrWangsFormula as the first user of grvx.

Bug: skia:10419
Change-Id: Id0682599cf9c0303eff386095afc3ef9f3a7fa1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/330119
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/src/core/SkGeometry.h
[modify] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/gn/tests.gni
[add] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/tests/GrVxTest.cpp
[modify] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/src/core/SkGeometry.cpp
[add] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/src/gpu/GrVx.h
[modify] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/gn/gpu.gni
[modify] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/src/gpu/tessellate/GrWangsFormula.h
[modify] https://crrev.com/c3cb099556566caf7d592c50e272aa0b61a7468c/src/gpu/tessellate/GrStrokePatchBuilder.cpp

bugdroid via monorail

unread,
Nov 2, 2020, 2:37:25 PM11/2/20
to bu...@skia.org

Comment #60 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c60


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/753c1b336802dad8666f37cd9419289651382ae4

commit 753c1b336802dad8666f37cd9419289651382ae4
Author: Chris Dalton <csmart...@google.com>
Date: Mon Nov 02 19:36:14 2020

Add helpers to GrPathUtils for converting lines and quads to cubics

Bug: skia:10419
Change-Id: I4a747e1a628e636c6e20dddb1a25541500c88683
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/330122
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Greg Daniel <egda...@google.com>

[modify] https://crrev.com/753c1b336802dad8666f37cd9419289651382ae4/src/gpu/tessellate/GrPathTessellateOp.cpp
[modify] https://crrev.com/753c1b336802dad8666f37cd9419289651382ae4/src/gpu/geometry/GrPathUtils.h
[modify] https://crrev.com/753c1b336802dad8666f37cd9419289651382ae4/src/gpu/tessellate/GrStrokePatchBuilder.cpp

bugdroid via monorail

unread,
Nov 2, 2020, 3:35:17 PM11/2/20
to bu...@skia.org

Comment #61 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c61


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/2882e70ef377798b17f1b2d7bd5d8d4c4582d246

commit 2882e70ef377798b17f1b2d7bd5d8d4c4582d246
Author: Chris Dalton <csmart...@google.com>
Date: Mon Nov 02 20:33:54 2020

Add GrPathUtils::findCubicConvex180Chops

This method finds the locations a cubic needs to be chopped at before
it can be passed to the stroke tessellation shader. It's an integral
part of CPU stroke preparation and therefore extremely perf sensitive.

Bug: skia:10419
Change-Id: Ib23c2583b8cfc78814ce52425f7af2c8b2f8b420
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/330314
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

[modify] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/src/gpu/geometry/GrPathUtils.h
[modify] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/gn/tests.gni
[modify] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/bench/TessellateBench.cpp
[add] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/tests/GrPathUtilsTest.cpp
[add] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/bench/GrPathUtilsBench.cpp
[modify] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/src/gpu/geometry/GrPathUtils.cpp
[modify] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/src/gpu/tessellate/GrStrokePatchBuilder.cpp
[modify] https://crrev.com/2882e70ef377798b17f1b2d7bd5d8d4c4582d246/gn/bench.gni

bugdroid via monorail

unread,
Nov 3, 2020, 6:40:50 PM11/3/20
to bu...@skia.org

Comment #62 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c62


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/0e54309477ac038127683da2458bfb0b9b6e6bad

commit 0e54309477ac038127683da2458bfb0b9b6e6bad
Author: Chris Dalton <csmart...@google.com>
Date: Tue Nov 03 23:39:42 2020

Merge GrStrokePatchBuilder into GrStrokeTessellateOp

There's really no reason for these classes to be separate at this
point. Also extracts a "GrStrokeOp" base class that has the
functionality that will be shared with indirect stroking.

Bug: skia:10419
Change-Id: I960d5e6d64f0814ccb4a3852bc627af2b8082a1f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/331860
Reviewed-by: Greg Daniel <egda...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[add] https://crrev.com/0e54309477ac038127683da2458bfb0b9b6e6bad/src/gpu/tessellate/GrStrokeOp.cpp
[delete] https://crrev.com/fbc60b7e9ed2dddab08c5e9ef459bcbce3c2144e/src/gpu/tessellate/GrStrokePatchBuilder.h
[modify] https://crrev.com/0e54309477ac038127683da2458bfb0b9b6e6bad/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/0e54309477ac038127683da2458bfb0b9b6e6bad/bench/TessellateBench.cpp
[modify] https://crrev.com/0e54309477ac038127683da2458bfb0b9b6e6bad/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[add] https://crrev.com/0e54309477ac038127683da2458bfb0b9b6e6bad/src/gpu/tessellate/GrStrokeOp.h
[modify] https://crrev.com/0e54309477ac038127683da2458bfb0b9b6e6bad/gn/gpu.gni
[delete] https://crrev.com/fbc60b7e9ed2dddab08c5e9ef459bcbce3c2144e/src/gpu/tessellate/GrStrokePatchBuilder.cpp

bugdroid via monorail

unread,
Nov 19, 2020, 12:43:54 PM11/19/20
to bu...@skia.org

Comment #63 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c63


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/9458c8d44acbfd6fb63cbbcad821dde305aca29f

commit 9458c8d44acbfd6fb63cbbcad821dde305aca29f
Author: Chris Dalton <csmart...@google.com>
Date: Thu Nov 19 17:43:21 2020

Add an epsilon to GrPathUtils::findCubicConvex180Chops

Cubic tangents become unstable if we chop too close to 0 or 1. This
adds an epsilon to simply not chop them if it's too close.

Bug: skia:10419
Change-Id: I99e98c5d433e2cb59c767ee564e015d7ec4f7765
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/336280

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

bugdroid via monorail

unread,
Nov 23, 2020, 1:05:48 PM11/23/20
to bu...@skia.org

Comment #64 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c64


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/b27f39c92410cae9795cb6a1b0225da36321fee3

commit b27f39c92410cae9795cb6a1b0225da36321fee3
Author: Chris Dalton <csmart...@google.com>
Date: Mon Nov 23 18:05:21 2020

Add conic fill support to the tessellator

This started out as a sandbox to experiment with a Wang's formula
analog for rational quadratics, but it quickly became apparent that
running Wang's formula on the down-projected points was an upper bound
on what the rational version would have been (for both w<1 and w>1).

This CL therefore adds conic support by upgrading the tessellation
shaders to use ratoinal cubics, converting every path verb to a
rational cubic, and then running Wang's formula on the down-projected
points. In the future we can always drop in a better formula if we
work one out.

Bug: skia:10419
Change-Id: I97021ea56afea54fdbe76745bacd3251e350fd97
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337156
Reviewed-by: Tyler Denniston <tdenn...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/src/gpu/tessellate/GrMidpointContourParser.h
[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/samplecode/SampleTessellatedWedge.cpp
[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/src/gpu/tessellate/GrPathShader.h
[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/src/gpu/tessellate/GrResolveLevelCounter.h
[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/src/gpu/tessellate/GrPathTessellateOp.cpp
[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/src/gpu/tessellate/GrStencilPathShader.cpp
[modify] https://crrev.com/b27f39c92410cae9795cb6a1b0225da36321fee3/src/gpu/tessellate/GrFillPathShader.cpp

bugdroid via monorail

unread,
Nov 23, 2020, 5:56:11 PM11/23/20
to bu...@skia.org

Comment #65 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c65


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/d461f6eb221cdc9eaefcb1658d31a5458f4b50c9

commit d461f6eb221cdc9eaefcb1658d31a5458f4b50c9
Author: Chris Dalton <csmart...@google.com>
Date: Mon Nov 23 22:50:33 2020

Add support for strided loads to GrVx

Bug: skia:10419
Change-Id: I050d8ed49e3a2a6d12b889961e8886f671e2d170
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337561

Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Nov 23, 2020, 10:25:05 PM11/23/20
to bu...@skia.org

Comment #66 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c66


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/4c1fb1c27a7cb08825f3df39836e6782e367f176

commit 4c1fb1c27a7cb08825f3df39836e6782e367f176
Author: Chris Dalton <csmart...@google.com>
Date: Tue Nov 24 03:24:43 2020

Return the contour's final point from SkPath::RangeIter in kClose

This point is located at fPoints[-1]. We might as well provide it
since it's free, and the stroke iterators for indirect tessellation
will be able to use it.

Bug: skia:10419
Change-Id: If0161a18a9a5a0f3b118a99d7c090d79d424f9db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337637
Reviewed-by: Mike Reed <re...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/4c1fb1c27a7cb08825f3df39836e6782e367f176/include/core/SkPath.h
[add] https://crrev.com/4c1fb1c27a7cb08825f3df39836e6782e367f176/tests/SkPathRangeIterTest.cpp
[modify] https://crrev.com/4c1fb1c27a7cb08825f3df39836e6782e367f176/gn/tests.gni

bugdroid via monorail

unread,
Nov 24, 2020, 11:58:40 AM11/24/20
to bu...@skia.org

Comment #67 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c67


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/98c3aea806a465b08e2a95451ab026b20dc75909

commit 98c3aea806a465b08e2a95451ab026b20dc75909
Author: Chris Dalton <csmart...@google.com>
Date: Tue Nov 24 16:57:27 2020

Add cusp detection to GrPathUtils::findCubicConvex180Chops

The stroker will need to know the cusps in order to draw circles around
them.

Bug: skia:10419
Change-Id: I05b7e9f4a5ed06bd36450e73edfaf36c4b3f5a6c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337945

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Michael Ludwig <michae...@google.com>

bugdroid via monorail

unread,
Nov 24, 2020, 12:29:22 PM11/24/20
to bu...@skia.org

Comment #68 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c68


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/cb765652410fdbd5b7312a52323a903274d40c73

commit cb765652410fdbd5b7312a52323a903274d40c73
Author: Chris Dalton <csmart...@google.com>
Date: Tue Nov 24 17:29:15 2020

Fix a bug with miters in the stroke tessellation shader

We weren't clamping cosTheta to -1..1 before using it to calculate the
miter extent.

Bug: skia:10419
Change-Id: I4ec742a8b4ed8b3c6917e1d8cd7a57a903bdc4d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/338053
Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/cb765652410fdbd5b7312a52323a903274d40c73/src/gpu/tessellate/GrStrokeTessellateShader.cpp

bugdroid via monorail

unread,
Nov 24, 2020, 12:38:29 PM11/24/20
to bu...@skia.org

Comment #69 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c69


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/a6e0d8389912c6824e2eb21849744e64fee21ac1

commit a6e0d8389912c6824e2eb21849744e64fee21ac1
Author: Chris Dalton <csmart...@google.com>
Date: Tue Nov 24 17:36:57 2020

Remove a slop term from the stroke tessellation shader

This was meant as a workaround for cusps on a flat line, but this
problem has been solved more robustly now.

Bug: skia:10419
Change-Id: I88625b398b8d8517ded8985c164d0e00e0c0fb79
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337948

Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Nov 24, 2020, 12:39:57 PM11/24/20
to bu...@skia.org

Comment #70 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c70


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/75125070501647a0882d8bcb6e0ab2f1c3492ad8

commit 75125070501647a0882d8bcb6e0ab2f1c3492ad8
Author: Chris Dalton <csmart...@google.com>
Date: Tue Nov 24 17:38:41 2020

Add "putBack" analogs to the DrawIndirect buffer pool

Bug: skia:10419
Change-Id: Id5f4fe79c661c3d402411dcb830ffd144d21254a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/338008
Reviewed-by: Adlai Holler <ad...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/75125070501647a0882d8bcb6e0ab2f1c3492ad8/src/gpu/ops/GrMeshDrawOp.h
[modify] https://crrev.com/75125070501647a0882d8bcb6e0ab2f1c3492ad8/src/gpu/GrOpFlushState.h
[modify] https://crrev.com/75125070501647a0882d8bcb6e0ab2f1c3492ad8/src/gpu/mock/GrMockOpTarget.h
[modify] https://crrev.com/75125070501647a0882d8bcb6e0ab2f1c3492ad8/src/gpu/GrBufferAllocPool.h

bugdroid via monorail

unread,
Nov 24, 2020, 4:59:50 PM11/24/20
to bu...@skia.org

Comment #71 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c71


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/0363f057b1b7edad5b7660fd04e693b351781c90

commit 0363f057b1b7edad5b7660fd04e693b351781c90
Author: Chris Dalton <csmart...@google.com>
Date: Tue Nov 24 21:58:26 2020

Add experimental prints for conic max error to Wedge sample

Bug: skia:10419
Change-Id: I0fd1facc2369f01bd4815caae68c6a66b86b342f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/338338
Reviewed-by: Tyler Denniston <tdenn...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/0363f057b1b7edad5b7660fd04e693b351781c90/samplecode/SampleTessellatedWedge.cpp

bugdroid via monorail

unread,
Dec 1, 2020, 11:16:51 AM12/1/20
to bu...@skia.org

Comment #72 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c72


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/356cef301b8194777ce63b477f91c2b339a04730

commit 356cef301b8194777ce63b477f91c2b339a04730
Author: Chris Dalton <csmart...@google.com>
Date: Tue Dec 01 16:16:42 2020

Simplify grvx::approx_angle_between_vectors signature

Rather than taking the x and y values separately (ax, ay, bx, by),
simply take two vec<N*2>'s (a, b), where the x's are in a.lo and the
y's in a.hi.

Bug: skia:10419
Change-Id: I21d659c79247ccb625351c20b93c550d0afffe79
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/339458
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/356cef301b8194777ce63b477f91c2b339a04730/tests/GrVxTest.cpp
[modify] https://crrev.com/356cef301b8194777ce63b477f91c2b339a04730/src/gpu/GrVx.h

bugdroid via monorail

unread,
Dec 1, 2020, 12:34:17 PM12/1/20
to bu...@skia.org

Comment #73 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c73


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/a927771c9ccee252ab95d5d4231d9cc0abc4381f

commit a927771c9ccee252ab95d5d4231d9cc0abc4381f
Author: Chris Dalton <csmart...@google.com>
Date: Tue Dec 01 17:34:02 2020

Extract reusable functions from stroke tessellation shaders

Bug: skia:10419
Change-Id: I6c1e919267b48d862f515c5b95d070c4757f7f74
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/339459

Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Dec 2, 2020, 3:50:43 PM12/2/20
to bu...@skia.org

Comment #74 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c74


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/4be95c541cfc7be96ce683a9886997589823ab3a

commit 4be95c541cfc7be96ce683a9886997589823ab3a
Author: Tyler Denniston <tdenn...@google.com>
Date: Wed Dec 02 20:50:27 2020

Add test for quadratic Wang's formula

Just verify that the max error on any of the intervals after splitting
is less than the specified tolerance. Looks like we're running into
some FP precision issues with large coord values, so I'm limiting the
max multiplier to 2^15 in this test.

Bug: skia:10419
Change-Id: I39e76dca5f77389833ba3c94930e6b67c2b1bc97
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/340116
Reviewed-by: Chris Dalton <csmart...@google.com>
Commit-Queue: Tyler Denniston <tdenn...@google.com>

[modify] https://crrev.com/4be95c541cfc7be96ce683a9886997589823ab3a/tests/WangsFormulaTest.cpp

bugdroid via monorail

unread,
Dec 3, 2020, 11:34:38 AM12/3/20
to bu...@skia.org

Comment #75 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c75


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/2833ec61110a755dc3e964f7757cf80c56bcc7ad

commit 2833ec61110a755dc3e964f7757cf80c56bcc7ad
Author: Chris Dalton <csmart...@google.com>
Date: Thu Dec 03 16:33:21 2020

Plumb mixed samples through GrXPFactory::GetAnalysisProperties

Bug: skia:10419
Change-Id: I43898b0131231e2a4d1d6153e60530ba372b1c19
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/340516
Reviewed-by: Brian Salomon <bsal...@google.com>
Reviewed-by: Greg Daniel <egda...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/effects/GrPorterDuffXferProcessor.cpp
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/tests/GrPorterDuffTest.cpp
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/effects/GrPorterDuffXferProcessor.h
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/effects/GrDisableColorXP.h
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/GrXferProcessor.cpp
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/effects/GrCoverageSetOpXP.h
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/tests/AdvancedBlendTest.cpp
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/effects/GrCustomXfermode.cpp
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/GrXferProcessor.h
[modify] https://crrev.com/2833ec61110a755dc3e964f7757cf80c56bcc7ad/src/gpu/GrProcessorSet.cpp

bugdroid via monorail

unread,
Dec 7, 2020, 3:05:36 PM12/7/20
to bu...@skia.org

Comment #76 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c76


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/011a77357ec4a6b583417a875a337dc3ae34a416

commit 011a77357ec4a6b583417a875a337dc3ae34a416
Author: Chris Dalton <csmart...@google.com>
Date: Mon Dec 07 20:05:10 2020

Use infinity to signal conics instead of NaN

From reading the GLSL ES spec, behavior around NaN handling is not
well defined. Infinity and isinf(), on the other hand, seems to be
well defined.

Bug: skia:10419
Change-Id: Id465a89a0d921707021974b5a64ec88bbcce0c33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/341076
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Ethan Nicholas <ethann...@google.com>

[modify] https://crrev.com/011a77357ec4a6b583417a875a337dc3ae34a416/src/gpu/tessellate/GrPathShader.h
[modify] https://crrev.com/011a77357ec4a6b583417a875a337dc3ae34a416/src/gpu/tessellate/GrStencilPathShader.cpp
[modify] https://crrev.com/011a77357ec4a6b583417a875a337dc3ae34a416/src/gpu/tessellate/GrFillPathShader.cpp

bugdroid via monorail

unread,
Dec 9, 2020, 7:25:34 PM12/9/20
to bu...@skia.org

Comment #77 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c77


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5

commit c2a1746b42d96f6ec6d8af6bec2b86a5439101f5
Author: Chris Dalton <csmart...@google.com>
Date: Thu Dec 10 00:25:17 2020

Implement stroke tessellation with indirect draws

Adds a vertex shader that maps a variable-length triangle strip to a
stroke and its preceding join. Adds a new op that generates stroke
instances from a path, bins them by log2 triangle strip length (using
SIMD for the calculations), and renders them with indirect draws.

Bug: skia:10419
Change-Id: I6d52df02cffe97d14827c6d66136957f1859f53b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/339716
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/mock/GrMockOpTarget.h
[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/gn/tests.gni
[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/bench/TessellateBench.cpp
[add] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/tessellate/GrStrokeIndirectOp.h
[add] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/tests/StrokeIndirectTest.cpp
[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/gn/gpu.gni
[add] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/tessellate/GrStrokeIterator.h
[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[add] https://crrev.com/c2a1746b42d96f6ec6d8af6bec2b86a5439101f5/src/gpu/tessellate/GrStrokeIndirectOp.cpp

bugdroid via monorail

unread,
Dec 10, 2020, 12:13:29 PM12/10/20
to bu...@skia.org

Comment #78 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c78


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/55abaf5893ae015eab7b6013c133578883de7886

commit 55abaf5893ae015eab7b6013c133578883de7886
Author: Chris Dalton <csmart...@google.com>
Date: Thu Dec 10 17:12:38 2020

Add a stencil test for transparent tessellated strokes

Initially we restricted tessellated stroking to opaque solid colors.
This CL adds support for transparency by enabling a stencil test. The
stencil test also allows us to use mixed samples.

Bug: skia:10419
Change-Id: Ie40f3099d2b009f92ed49f7f43e5f269b1a479af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/340798

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/tessellate/GrStrokeOp.cpp
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/include/private/GrTypesPriv.h
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/tessellate/GrStrokeOp.h
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/GrOpsRenderPass.cpp
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/GrPaint.h
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/55abaf5893ae015eab7b6013c133578883de7886/src/gpu/tessellate/GrStrokeIndirectOp.cpp

bugdroid via monorail

unread,
Dec 10, 2020, 12:26:39 PM12/10/20
to bu...@skia.org

Comment #79 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c79


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/573923c30c054142f03d125a2206dc5972d88be0

commit 573923c30c054142f03d125a2206dc5972d88be0
Author: Tyler Denniston <tdenn...@google.com>
Date: Thu Dec 10 17:26:08 2020

Add specialized impl of Wang's formula for cubic rationals

Initial data suggests that the non-rational Wang's formula does not
form an upper bound for the rational case, so additional work is needed
to handle them. Note this new formula is not actually due to Wang,
but is an analogue.

The version added in this CL is for cubic rationals because the current
tessellation code promotes all curve segments to cubic rationals for
ease. If we end up using this approach, it would be likely simpler and
faster to implement the degree-2 version and handle conics separately
during tessellation.

From:
J. Zheng, T. Sederberg. "Estimating Tessellation Parameter Intervals for
Rational Curves and Surfaces." ACM Transactions on Graphics 19(1). 2000.

Bug: skia:10419
Change-Id: Ie02e229c089541ece05c7502217b1ef5d4799b52
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337720
Commit-Queue: Tyler Denniston <tdenn...@google.com>
Reviewed-by: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/573923c30c054142f03d125a2206dc5972d88be0/tests/WangsFormulaTest.cpp

bugdroid via monorail

unread,
Dec 10, 2020, 2:04:47 PM12/10/20
to bu...@skia.org

Comment #80 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c80


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/7b80726d0ec11e9e5c821ec70e2cee60f4d31124

commit 7b80726d0ec11e9e5c821ec70e2cee60f4d31124
Author: Chris Dalton <csmart...@google.com>
Date: Thu Dec 10 19:02:39 2020

Implement indirect stroking for conics

Just like for fills, we use the normal Wang's formula on the conic's
down-projected control points until we can formalize on a better
formula.

Bug: skia:10419
Change-Id: Ifd735534a2e793f79f4f5d5b7e7acf50db81fe5e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/341156

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>
Reviewed-by: Tyler Denniston <tdenn...@google.com>

[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrStrokeOp.cpp
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/core/SkGeometry.h
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/core/SkGeometry.cpp
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/gm/trickycubicstrokes.cpp
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/glsl/GrGLSLVertexGeoBuilder.h
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrStrokeOp.h
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/samplecode/SampleCCPRGeometry.cpp
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrStrokeIterator.h
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/7b80726d0ec11e9e5c821ec70e2cee60f4d31124/src/gpu/tessellate/GrStrokeIndirectOp.cpp

hua… via monorail

unread,
Dec 12, 2020, 1:53:44 AM12/12/20
to bu...@skia.org

Comment #81 on issue 10419 by hua...@google.com: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c81

Adding crbug.com/1158093 to track binary size impact on Clank.

bugdroid via monorail

unread,
Dec 14, 2020, 1:17:40 PM12/14/20
to bu...@skia.org

Comment #82 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c82


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca

commit 39ce12e0d480238dd497dea5a3e48c4b7e82c4ca
Author: Chris Dalton <csmart...@google.com>
Date: Mon Dec 14 18:16:47 2020

Don't store tessellation tolerances on GrStrokeOp

Instead we calculate these values on the fly as needed. This is
necessary for hairlines because the tessellator will operate on them
in post-transform space, which requires different tolerances than the
setup code.

Bug: skia:10419
Change-Id: Ia8ffa8858b45949521c085ccbe5712b3842f785f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/343499
Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeOp.cpp
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeTessellateOp.h
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeIndirectOp.h
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/tests/StrokeIndirectTest.cpp
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeOp.h
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/39ce12e0d480238dd497dea5a3e48c4b7e82c4ca/src/gpu/tessellate/GrStrokeIndirectOp.cpp

bugdroid via monorail

unread,
Dec 15, 2020, 1:12:43 PM12/15/20
to bu...@skia.org

Comment #83 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c83


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/06b52ada19bc01bf82e53d895b2a25f4bbcc382a

commit 06b52ada19bc01bf82e53d895b2a25f4bbcc382a
Author: Chris Dalton <csmart...@google.com>
Date: Tue Dec 15 18:05:32 2020

Add first class hairline support to tessellated stroking

Bug: skia:10419
Change-Id: I63f000e7b3c5623c1e40c3ce6950c8f5565bc11c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/343477

Reviewed-by: Michael Ludwig <michae...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrStrokeOp.cpp
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrStrokeTessellateShader.h
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/gm/dashing.cpp
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrStrokeOp.h
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrStrokeIterator.h
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/06b52ada19bc01bf82e53d895b2a25f4bbcc382a/src/gpu/tessellate/GrStrokeIndirectOp.cpp

bugdroid via monorail

unread,
Dec 15, 2020, 1:46:42 PM12/15/20
to bu...@skia.org

Comment #84 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c84


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/ad8b9fa2d713d9baecc2bafbac3c17fbc2895c42

commit ad8b9fa2d713d9baecc2bafbac3c17fbc2895c42
Author: Chris Dalton <csmart...@google.com>
Date: Tue Dec 15 18:36:44 2020

Disable HW tessellation shaders by default

The GLSL backdoor for tessellation shaders is only experimental at
this point. In order to enable the tessellation path renderer, we need
to turn off HW tessellation and let it use the indirect draw modes.

Bug: skia:10419
Change-Id: Ic979978a331c7ad016907cf42b2562b35caab8ab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344336

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

bugdroid via monorail

unread,
Dec 15, 2020, 3:48:35 PM12/15/20
to bu...@skia.org

Comment #85 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c85


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/1c2584d8cca616d49c53687e09e0cae03623aa26

commit 1c2584d8cca616d49c53687e09e0cae03623aa26
Author: Chris Dalton <csmart...@google.com>
Date: Tue Dec 15 20:45:46 2020

Revert "Disable HW tessellation shaders by default"

This reverts commit ad8b9fa2d713d9baecc2bafbac3c17fbc2895c42.

Reason for revert: Benchmark failure

Original change's description:

> Disable HW tessellation shaders by default
>
> The GLSL backdoor for tessellation shaders is only experimental at
> this point. In order to enable the tessellation path renderer, we need
> to turn off HW tessellation and let it use the indirect draw modes.
>
> Bug: skia:10419
> Change-Id: Ic979978a331c7ad016907cf42b2562b35caab8ab
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344336
> Commit-Queue: Chris Dalton <csmart...@google.com>
> Reviewed-by: Brian Salomon <bsal...@google.com>

TBR=bsal...@google.com,csmart...@google.com

Change-Id: Ia74dbcec582168870bd3ccc5e52b8dce0fb2bdfc
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10419
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344698
Reviewed-by: Chris Dalton <csmart...@google.com>
Commit-Queue: Tyler Denniston <tdenn...@google.com>

[modify] https://crrev.com/1c2584d8cca616d49c53687e09e0cae03623aa26/infra/bots/gen_tasks_logic/dm_flags.go
[modify] https://crrev.com/1c2584d8cca616d49c53687e09e0cae03623aa26/src/gpu/GrShaderCaps.cpp
[modify] https://crrev.com/1c2584d8cca616d49c53687e09e0cae03623aa26/include/gpu/GrContextOptions.h
[modify] https://crrev.com/1c2584d8cca616d49c53687e09e0cae03623aa26/infra/bots/tasks.json
[modify] https://crrev.com/1c2584d8cca616d49c53687e09e0cae03623aa26/tools/flags/CommonFlagsGpu.cpp

bugdroid via monorail

unread,
Dec 15, 2020, 8:54:48 PM12/15/20
to bu...@skia.org

Comment #86 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c86


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/2078cbe3d4d9b7b3e233afb6f1af0863a87ef915

commit 2078cbe3d4d9b7b3e233afb6f1af0863a87ef915
Author: Chris Dalton <csmart...@google.com>
Date: Wed Dec 16 01:54:05 2020

Don't tessellate paths that have user stencil settings

This would require careful handling of the stencil that we have not
yet thought through.

Bug: skia:10419
Change-Id: I78a652309ae3469b64a28d6d96b06384e608695e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344376
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Greg Daniel <egda...@google.com>

[modify] https://crrev.com/2078cbe3d4d9b7b3e233afb6f1af0863a87ef915/src/gpu/tessellate/GrTessellationPathRenderer.cpp

bugdroid via monorail

unread,
Dec 15, 2020, 8:58:58 PM12/15/20
to bu...@skia.org

Comment #87 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c87


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/b064334f82bf3da05115cde7bd91f0fcc38fe23a

commit b064334f82bf3da05115cde7bd91f0fcc38fe23a
Author: Chris Dalton <csmart...@google.com>
Date: Wed Dec 16 01:58:25 2020

Tessellation bug fixes

* Fix visitProxies when using DDL
* Handle when the GrClip is nullptr
* Use the same cropping/hw disable logic for onStencilClip as we do
for onDrawClip.

Bug: skia:10419
Change-Id: I2ebd2b12ac9cc77cece6d3fbf6c16e246bafe544
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344479
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Adlai Holler <ad...@google.com>
Reviewed-by: Robert Phillips <robertp...@google.com>

[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrPathTessellateOp.h
[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrStrokeOp.cpp
[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrStrokeTessellateOp.cpp
[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrStrokeOp.h
[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrPathTessellateOp.cpp
[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrTessellationPathRenderer.h
[modify] https://crrev.com/b064334f82bf3da05115cde7bd91f0fcc38fe23a/src/gpu/tessellate/GrStrokeIndirectOp.cpp

bugdroid via monorail

unread,
Dec 16, 2020, 12:09:12 AM12/16/20
to bu...@skia.org

Comment #88 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c88


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/15f51848df7fe8f938ddb82d3cc72826a3455727

commit 15f51848df7fe8f938ddb82d3cc72826a3455727
Author: Chris Dalton <csmart...@google.com>
Date: Wed Dec 16 05:08:25 2020

Reland "Disable HW tessellation shaders by default"

This is a reland of ad8b9fa2d713d9baecc2bafbac3c17fbc2895c42


Original change's description:
> Disable HW tessellation shaders by default
>
> The GLSL backdoor for tessellation shaders is only experimental at
> this point. In order to enable the tessellation path renderer, we need
> to turn off HW tessellation and let it use the indirect draw modes.
>
> Bug: skia:10419
> Change-Id: Ic979978a331c7ad016907cf42b2562b35caab8ab
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344336
> Commit-Queue: Chris Dalton <csmart...@google.com>
> Reviewed-by: Brian Salomon <bsal...@google.com>

TBR=bsal...@google.com
Bug: skia:10419
Change-Id: I0bdf34da134a3a34a5c78b35cc0eb86d6e989bb4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344796
Reviewed-by: Chris Dalton <csmart...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/15f51848df7fe8f938ddb82d3cc72826a3455727/bench/TessellateBench.cpp
[modify] https://crrev.com/15f51848df7fe8f938ddb82d3cc72826a3455727/infra/bots/tasks.json
[modify] https://crrev.com/15f51848df7fe8f938ddb82d3cc72826a3455727/src/gpu/GrShaderCaps.cpp
[modify] https://crrev.com/15f51848df7fe8f938ddb82d3cc72826a3455727/tools/flags/CommonFlagsGpu.cpp
[modify] https://crrev.com/15f51848df7fe8f938ddb82d3cc72826a3455727/infra/bots/gen_tasks_logic/dm_flags.go
[modify] https://crrev.com/15f51848df7fe8f938ddb82d3cc72826a3455727/include/gpu/GrContextOptions.h

bugdroid via monorail

unread,
Dec 17, 2020, 2:38:46 PM12/17/20
to bu...@skia.org

Comment #89 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c89


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/6ea387e7c751cbfd3b0cc3267b95808550448ded

commit 6ea387e7c751cbfd3b0cc3267b95808550448ded
Author: Chris Dalton <csmart...@google.com>
Date: Thu Dec 17 19:33:56 2020

Enable GrTessellationPathRenderer by default

Moves GrTessellationPathRenderer to the end of the chain and enables
it by default.

Also updates nvpr to not draw volatile paths. The tessellator is much
faster at these.

Bug: skia:10419
Change-Id: I97ca7d4d1dff65fc9d4040c267f9808c8c33b548
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344377

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/GrPathRendererChain.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/include/private/GrTypesPriv.h
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/gl/GrGLCaps.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/gm/addarc.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/tools/flags/CommonFlagsGpu.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/tessellate/GrFillPathShader.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/GrCaps.h
[modify] https://crrev.com/6ea387e7c751cbfd3b0cc3267b95808550448ded/src/gpu/GrCaps.cpp

bugdroid via monorail

unread,
Dec 18, 2020, 10:46:37 AM12/18/20
to bu...@skia.org

Comment #90 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c90


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/7bfdb1044916cbe207d6adca90158e8b854bacd7

commit 7bfdb1044916cbe207d6adca90158e8b854bacd7
Author: Brian Salomon <bsal...@google.com>
Date: Fri Dec 18 15:46:30 2020

Revert "Enable GrTessellationPathRenderer by default"

This reverts commit 6ea387e7c751cbfd3b0cc3267b95808550448ded.

Reason for revert: valgrind failing

Original change's description:

> Enable GrTessellationPathRenderer by default
>
> Moves GrTessellationPathRenderer to the end of the chain and enables
> it by default.
>
> Also updates nvpr to not draw volatile paths. The tessellator is much
> faster at these.
>
> Bug: skia:10419
> Change-Id: I97ca7d4d1dff65fc9d4040c267f9808c8c33b548
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344377
> Commit-Queue: Chris Dalton <csmart...@google.com>
> Reviewed-by: Brian Salomon <bsal...@google.com>

TBR=bsal...@google.com,csmart...@google.com

Change-Id: I3718ae210ebc403959d187160214cf0df895e4f5

No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10419
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/345718
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Brian Salomon <bsal...@google.com>

[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/GrPathRendererChain.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/include/private/GrTypesPriv.h
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/gl/GrGLCaps.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/gm/addarc.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/tools/flags/CommonFlagsGpu.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/tessellate/GrFillPathShader.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/GrCaps.h
[modify] https://crrev.com/7bfdb1044916cbe207d6adca90158e8b854bacd7/src/gpu/GrCaps.cpp

bugdroid via monorail

unread,
Dec 23, 2020, 2:43:07 PM12/23/20
to bu...@skia.org

Comment #91 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c91


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/61f17c10d61d7222ecb23a011a20a325e1a2f7a9

commit 61f17c10d61d7222ecb23a011a20a325e1a2f7a9
Author: Chris Dalton <csmart...@google.com>
Date: Wed Dec 23 19:42:18 2020

Clean up GrStrokeIndirectOp #ifs for using SIMD

Bug: skia:10419
Change-Id: Ifc1507e554405fb6fbebca1bbf9da5e9ba691640
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/347137
Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/61f17c10d61d7222ecb23a011a20a325e1a2f7a9/src/gpu/tessellate/GrStrokeIndirectOp.cpp

bugdroid via monorail

unread,
Dec 28, 2020, 12:02:17 PM12/28/20
to bu...@skia.org

Comment #92 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c92


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/ad48280dd0ccc13ba75288004d68b63b6cc01550

commit ad48280dd0ccc13ba75288004d68b63b6cc01550
Author: Chris Dalton <csmart...@google.com>
Date: Mon Dec 28 17:01:19 2020

Avoid uninitialized values in strokeIndirect SIMD queues

Bug: skia:10419
Change-Id: Ia4bf6fce06e69163a50e80e56f82bfd0f8b00072
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/347138

Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Jan 4, 2021, 2:44:35 PM1/4/21
to bu...@skia.org

Comment #93 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c93


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef

commit eae5c1619083fb9e49dbf4219fea54fcbce4d4ef
Author: Chris Dalton <csmart...@google.com>
Date: Mon Jan 04 19:43:41 2021

Reland "Enable GrTessellationPathRenderer by default"

This is a reland of 6ea387e7c751cbfd3b0cc3267b95808550448ded


Original change's description:
> Enable GrTessellationPathRenderer by default
>
> Moves GrTessellationPathRenderer to the end of the chain and enables
> it by default.
>
> Also updates nvpr to not draw volatile paths. The tessellator is much
> faster at these.
>
> Bug: skia:10419
> Change-Id: I97ca7d4d1dff65fc9d4040c267f9808c8c33b548
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/344377
> Commit-Queue: Chris Dalton <csmart...@google.com>
> Reviewed-by: Brian Salomon <bsal...@google.com>

Bug: skia:10419
Change-Id: I53b50d6aa01ae1bea697e05c3f60d57d132d6aad
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/345759

Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/GrPathRendererChain.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/tessellate/GrTessellationPathRenderer.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/include/private/GrTypesPriv.h
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/gl/GrGLCaps.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/gm/addarc.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/tools/flags/CommonFlagsGpu.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/tessellate/GrFillPathShader.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/tessellate/GrStrokeTessellateShader.cpp
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/GrCaps.h
[modify] https://crrev.com/eae5c1619083fb9e49dbf4219fea54fcbce4d4ef/src/gpu/GrCaps.cpp

drago… via monorail

unread,
Jan 5, 2021, 3:26:21 PM1/5/21
to bu...@skia.org

Comment #94 on issue 10419 by drago...@google.com: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c94

I have bisected a crash in my Flutter application to https://skia-review.googlesource.com/c/skia/+/345759 and confirmed that setting disableTessellationPathRenderer to true causes the crash to go away. The relevant bit of the stack trace is:

WARNING: failed to attach a stencil buffer. Rendering will be skipped.
third_party/skia/HEAD/src/gpu/GrDrawingManager.cpp:361: fatal error: "assert(fTokenTracker.nextDrawToken() == fTokenTracker.nextTokenToFlush())"
@ 0x10428a1c5 GrDrawingManager::executeRenderTasks()::$_9::operator()()
@ 0x104289eac GrDrawingManager::executeRenderTasks()
@ 0x1042892e9 GrDrawingManager::flush()
@ 0x10428a669 GrDrawingManager::flushSurfaces()
@ 0x104276deb GrDirectContext::flush()
@ 0x10382bd2f GrDirectContext::flushAndSubmit()
@ 0x1040b5521 SkCanvas::onFlush()
@ 0x1040b54fa SkCanvas::flush()
@ 0x1038af2b8 flutter::(anonymous namespace)::DrawSnapshot()
@ 0x1038cbb02 flutter::Rasterizer::DoMakeRasterSnapshot()::$_4::operator()()


This is happening on Linux and macOS. There is a target in google3 you can run which crashes at launch time because of this assert failing.

csmar… via monorail

unread,
Jan 5, 2021, 3:47:24 PM1/5/21
to bu...@skia.org

Comment #95 on issue 10419 by csmart...@google.com: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c95

dragonbear@ - thanks for the stack trace. This should be fixed by https://skia-review.googlesource.com/c/skia/+/350336, which will land and roll soon.

bugdroid via monorail

unread,
Jan 5, 2021, 4:52:05 PM1/5/21
to bu...@skia.org

Comment #96 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c96


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/4bf7c215710d4c5d477702d13eef762e6f2d0a39

commit 4bf7c215710d4c5d477702d13eef762e6f2d0a39
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jan 05 21:45:25 2021

Don't use the tessellator if caps.avoidStencilBuffers is set

Bug: skia:10419
Change-Id: Iff07133e2a81b4af4f76f919149dee5f56e5cb7d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/350336

Reviewed-by: Brian Salomon <bsal...@google.com>
Commit-Queue: Chris Dalton <csmart...@google.com>

bugdroid via monorail

unread,
Jan 5, 2021, 5:10:46 PM1/5/21
to bu...@skia.org

Comment #97 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c97


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/57ea1fcb74d602516e2aa9cb5623072f015c76a5

commit 57ea1fcb74d602516e2aa9cb5623072f015c76a5
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jan 05 22:10:11 2021

Convert GrTriangulator to a class

This simplifies the argument lists for functions and will also allow us
to extract the AA logic into its own subclass.

Bug: skia:10419
Change-Id: If51e86a7633da7a3ee9352c0236258a0a21f2ebe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/347976
Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Robert Phillips <robertp...@google.com>
Reviewed-by: Jim Van Verth <jvan...@google.com>

[modify] https://crrev.com/57ea1fcb74d602516e2aa9cb5623072f015c76a5/src/gpu/GrTriangulator.cpp
[modify] https://crrev.com/57ea1fcb74d602516e2aa9cb5623072f015c76a5/src/gpu/GrTriangulator.h
[modify] https://crrev.com/57ea1fcb74d602516e2aa9cb5623072f015c76a5/src/gpu/tessellate/GrPathTessellateOp.cpp

bugdroid via monorail

unread,
Jan 5, 2021, 7:01:56 PM1/5/21
to bu...@skia.org

Comment #98 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c98


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/854ee85736e3ea38f874ac490a9ba24d2d58158a

commit 854ee85736e3ea38f874ac490a9ba24d2d58158a
Author: Chris Dalton <csmart...@google.com>
Date: Tue Jan 05 23:53:01 2021

Delete GrTriangulator::Mode

Bug: skia:10419
Change-Id: Ia81c615538ff1f0fe2372ea2e7bf437ceec08d7e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/349336

Commit-Queue: Chris Dalton <csmart...@google.com>
Reviewed-by: Robert Phillips <robertp...@google.com>

bugdroid via monorail

unread,
Jan 6, 2021, 2:32:35 PM1/6/21
to bu...@skia.org

Comment #99 on issue 10419 by bugdroid: Implement Path rendering and stroking with GPU tessellation shaders
https://bugs.chromium.org/p/skia/issues/detail?id=10419#c99


The following revision refers to this bug:
https://skia.googlesource.com/skia/+/75887a232187065de15b24d04b48028c2d1f9584

commit 75887a232187065de15b24d04b48028c2d1f9584
Author: Chris Dalton <csmart...@google.com>
Date: Wed Jan 06 19:30:32 2021

Move GrTriangulator internal struct definitions to the .h file

This makes them reusable for the edge-AA code when we move it.

Bug: skia:10419
Change-Id: I20042a419617717214535d45fc92a8cae986fb33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/349356

Reviewed-by: Jim Van Verth <jvan...@google.com>
It is loading more messages.
0 new messages