aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleCCPRGeometry.cpp
Commit message (Collapse)AuthorAge
* Remove clamping of kPlus with F16 configsGravatar Brian Osman2018-07-11
| | | | | | | | | | | | | | | | | The most common use-case for F16 is to draw things that are explicitly outside of [0,1]. We can't prevent out-of-range values in general, users could just draw out-of-range content in src mode. We've decided that it's best to avoid surprising behavior, and trust the user in these situations. This effectively reverts https://skia-review.googlesource.com/c/skia/+/48183 Bug: skia: Change-Id: I71c2dd925c567e2862d96ab70c752f19245a69c4 Reviewed-on: https://skia-review.googlesource.com/140500 Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Revert "Some scissor state cleanup."Gravatar Brian Salomon2018-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit a219419c9d76432dca74494b611ff1f59086d139. Reason for revert: breaking things Original change's description: > Some scissor state cleanup. > > Separate flushing the enablement of scissor from the rect in GrGLGpu. > > Move GrPipeline::ScissorState to a global enum and use more broadly. > Rename to GrScissorTest to avoid name conflict with existing > GrScissorState. > > Change-Id: Ib32160b3300bc12de2d2e1761d152fd1bba8b683 > Reviewed-on: https://skia-review.googlesource.com/137395 > Commit-Queue: Brian Salomon <bsalomon@google.com> > Reviewed-by: Chris Dalton <csmartdalton@google.com> TBR=bsalomon@google.com,csmartdalton@google.com Change-Id: If71a5c5efc86d4239b40675bad2a6cb1f77460f8 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/138900 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Some scissor state cleanup.Gravatar Brian Salomon2018-07-02
| | | | | | | | | | | | | Separate flushing the enablement of scissor from the rect in GrGLGpu. Move GrPipeline::ScissorState to a global enum and use more broadly. Rename to GrScissorTest to avoid name conflict with existing GrScissorState. Change-Id: Ib32160b3300bc12de2d2e1761d152fd1bba8b683 Reviewed-on: https://skia-review.googlesource.com/137395 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Chris Dalton <csmartdalton@google.com>
* Refactor GrPipeline dynamic state.Gravatar Brian Salomon2018-06-26
| | | | | | | | | | | | | | | | | Remove scissor rect from GrPipeline. Draws can specify "fixed dynamic state" which doesn't use the dynamism at all or can specify dynamic state arrays with an entry per GrMesh. When we state other than scissor rects this will allow the caller to use a mix of truly dynamic and fixed dynamic state. So a caller that only has dynamic scissor rects doesn't need to store its remaining unvarying state in an array. Change-Id: I8fcc07eb600c72a26cc712b185755c2116021a8a Reviewed-on: https://skia-review.googlesource.com/137223 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Remove include of GrGLProgramBuilder.h from GrGLProgram.h and ↵Gravatar Brian Salomon2018-06-08
| | | | | | | | | | | | | | | | | | | | | GrVkPipelineState.h Make GrGLProgram and GrCkPipelineState cons. public and remove builder friendship. Neither GrGLProgram nor GrVkPipelineState need to know their Desc so remove it. Move the VK desc subclass defn. to GrVkPipelineStateBuilder since it needs it while GrVkPipelineState does not. Some IWYU improvements. Move declaration of the built-in uniform struct to GrGLSLUniformHandler.h from GrGLSLProgramBuilder.h. Change-Id: Ib46817408a83a79a0f718ba2bc19411410d9065a Reviewed-on: https://skia-review.googlesource.com/133060 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* ccpr: Implement conicsGravatar Chris Dalton2018-04-18
| | | | | | | | | | TBR=egdaniel@google.com Bug: skia: Change-Id: Idf7811dc285961db52db41c9ff145afda40c274d Reviewed-on: https://skia-review.googlesource.com/122127 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "ccpr: Implement conics"Gravatar Chris Dalton2018-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 98b241573e6083c4c7f0ce9e30cc214c4da1a8ba. Reason for revert: TSAN not happy Original change's description: > ccpr: Implement conics > > Bug: skia: > Change-Id: I4bae8b059072af987abb7b2d9c57fe08f783d680 > Reviewed-on: https://skia-review.googlesource.com/120040 > Commit-Queue: Chris Dalton <csmartdalton@google.com> > Reviewed-by: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,bsalomon@google.com,csmartdalton@google.com Change-Id: Ic29bf660f042c20b7e4492b03400412e378dbb8a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/121717 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Implement conicsGravatar Chris Dalton2018-04-16
| | | | | | | | Bug: skia: Change-Id: I4bae8b059072af987abb7b2d9c57fe08f783d680 Reviewed-on: https://skia-review.googlesource.com/120040 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* ccpr: Remove fCurrAnchorPoint from GrCCGeometryGravatar Chris Dalton2018-04-10
| | | | | | | | | | | | Removes fCurrAnchorPoint, and various other cleanups. fCurrAnchorPoint was originally added because points were expected to be written directly to mapped GPU buffers, which is not going to happen anymore. Bug: skia: Change-Id: Icaf8d09dae218f58c19a2f368f3cd281e285e2dd Reviewed-on: https://skia-review.googlesource.com/119984 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Remove WindMethod from GrCCCoverageProcessorGravatar Chris Dalton2018-04-09
| | | | | | | | | | | Handles weighted triangles from the tessellator instead with a "kWeightedTriangles" PrimitiveType. Bug: skia: Change-Id: I8a6f7b4205e1b3d6f340a30f3e90079ec44b8b6d Reviewed-on: https://skia-review.googlesource.com/119202 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Various cleanupsGravatar Chris Dalton2018-03-27
| | | | | | | | | | | | | Renames GrCCCoverageProcessor::RenderPass to PrimitiveType and handles corners as subpasses instead. Various touchups to coverage processors now that the overhaul is complete. This change should be strictly a refactor. Bug: skia: Change-Id: I52852463330d5ec71fae7e19fadccd9ede8b2c16 Reviewed-on: https://skia-review.googlesource.com/116169 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Use a more stable formula to find quadratic coordinatesGravatar Chris Dalton2018-03-21
| | | | | | | | | | | | | | | The 3x3 inverse grew unstable on small curves with large coordinates, not to mention being inefficient. This fixes many bad pixels on the chalkboard. Also begins scaling curve gradients by the AA bloat, in order to match triangle edges more closely and visualize curve AA in the ccpr sample. Bug: skia: Change-Id: I0f7da2e7599d4d5c458b3dd307185679dc78bb50 Reviewed-on: https://skia-review.googlesource.com/115527 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* ccpr: Update the sample to use proper coverage count buffersGravatar Chris Dalton2018-03-20
| | | | | | | | Bug: skia: Change-Id: I6ce3ec567e671fa2ab3f05403015b48251518227 Reviewed-on: https://skia-review.googlesource.com/115072 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Simplify triangle cornersGravatar Chris Dalton2018-03-09
| | | | | | | | | | | | | | | | | | | | | Modifies triangle corner shaders to just approximate their coverage with linear values that ramp to zero at bloat vertices outside the triangle. For the vertex backend, since corners now have the same fragment shader as the rest of the triangle, we fold them in with the other steps and draw triangles in a single pass. The geometry backend still draws triangles in two passes, as there is not an apparent performance advantage in combining them. Updates SampleCCPRGeometry to better visualize this new geometry by clearing to black and drawing with SkBlendMode::kPlus. Bug: skia: Change-Id: Idf8df8ff715dfab7ac91a07b914f65c08e46010b Reviewed-on: https://skia-review.googlesource.com/113287 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Revert "ccpr: Draw curves in a single pass"Gravatar Chris Dalton2018-03-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit df04ce29490a24f9d5b4f5caafd8f6a3368a19e0. Reason for revert: Going to revisit AAA quality Original change's description: > ccpr: Draw curves in a single pass > > Throws out the complicated MSAA curve corner shaders, and instead just > ramps coverage to zero at bloat vertices that fall outside the curve. > > Updates SampleCCPRGeometry to better visualize this new geometry by > clearing to black and drawing with SkBlendMode::kPlus. > > Bug: skia: > Change-Id: Ibe86cbc741d8b015127b10dd43e3b52e7cb35732 > Reviewed-on: https://skia-review.googlesource.com/112626 > Commit-Queue: Chris Dalton <csmartdalton@google.com> > Reviewed-by: Brian Salomon <bsalomon@google.com> TBR=bsalomon@google.com,csmartdalton@google.com Change-Id: I014baa60b248d870717f5ee8794e0bed66da86e6 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/113181 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "ccpr: Simplify triangle corners"Gravatar Chris Dalton2018-03-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 622650a1949f9a68793ac895d9fbadee7177d860. Reason for revert: Going to try to improve AAA quality on curve corners Original change's description: > ccpr: Simplify triangle corners > > Modifies triangle corner shaders to just approximate their coverage with > linear values that ramp to zero at bloat vertices outside the triangle. > > For the vertex backend, since corners now have the same fragment shader > as the rest of the triangle, we fold them in with the other steps and > draw triangles in a single pass. > > The geometry backend still draws triangles in two passes, as there is > not an apparent performance advantage in combining them. > > Bug: skia: > Change-Id: Ib4a89d793a3c706f734d0271875c8a3e5c87c49b > Reviewed-on: https://skia-review.googlesource.com/112632 > Commit-Queue: Chris Dalton <csmartdalton@google.com> > Reviewed-by: Brian Salomon <bsalomon@google.com> TBR=bsalomon@google.com,csmartdalton@google.com Change-Id: I45e7b9d7d7f8452b28bd54ca1e90a1f046cb2462 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/113180 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Simplify triangle cornersGravatar Chris Dalton2018-03-08
| | | | | | | | | | | | | | | | | | Modifies triangle corner shaders to just approximate their coverage with linear values that ramp to zero at bloat vertices outside the triangle. For the vertex backend, since corners now have the same fragment shader as the rest of the triangle, we fold them in with the other steps and draw triangles in a single pass. The geometry backend still draws triangles in two passes, as there is not an apparent performance advantage in combining them. Bug: skia: Change-Id: Ib4a89d793a3c706f734d0271875c8a3e5c87c49b Reviewed-on: https://skia-review.googlesource.com/112632 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* ccpr: Draw curves in a single passGravatar Chris Dalton2018-03-08
| | | | | | | | | | | | | | Throws out the complicated MSAA curve corner shaders, and instead just ramps coverage to zero at bloat vertices that fall outside the curve. Updates SampleCCPRGeometry to better visualize this new geometry by clearing to black and drawing with SkBlendMode::kPlus. Bug: skia: Change-Id: Ibe86cbc741d8b015127b10dd43e3b52e7cb35732 Reviewed-on: https://skia-review.googlesource.com/112626 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* ccpr: Combine GS triangle hulls and edges into a single drawGravatar Chris Dalton2018-03-07
| | | | | | | | | | | | | | | | Updates the geometry shader backend to match the vertex backend and draw triangle rasters together with their their edges in a single draw call. This gives a performance boost as well as cleaning up some API awkwardness. This is one step toward the final goal of drawing ccpr primitives in a single pass. Bug: skia: Change-Id: I2723692d02b9e39ca5dc5d9e022b528a051988ab Reviewed-on: https://skia-review.googlesource.com/112104 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* ccpr: Tessellate fans for very large and/or simple pathsGravatar Chris Dalton2018-02-14
| | | | | | | | | | | | This increases CPU work, but reduces overdraw on the GPU as compared to Redbook fanning. TBR=bsalomon@google.com Change-Id: I396b887075d4422531908c2361ee1e26f076d5c3 Reviewed-on: https://skia-review.googlesource.com/107141 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "ccpr: Tessellate fans for very large and/or simple paths"Gravatar Cary Clark2018-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 4138c972effe4eb0227fbb96571df290f3d1979b. Reason for revert: broke android flutter build Original change's description: > ccpr: Tessellate fans for very large and/or simple paths > > This increases CPU work, but reduces overdraw on the GPU as compared to > Redbook fanning. > > Bug: skia: > Change-Id: I47239c964261e0014a94266a71223eab0597bfb8 > Reviewed-on: https://skia-review.googlesource.com/105203 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Chris Dalton <csmartdalton@google.com> TBR=bsalomon@google.com,csmartdalton@google.com Change-Id: I98b5c10b97c3fa603de5122d9bb47ca07659242c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/106620 Reviewed-by: Cary Clark <caryclark@skia.org> Commit-Queue: Cary Clark <caryclark@skia.org>
* ccpr: Tessellate fans for very large and/or simple pathsGravatar Chris Dalton2018-02-12
| | | | | | | | | | | This increases CPU work, but reduces overdraw on the GPU as compared to Redbook fanning. Bug: skia: Change-Id: I47239c964261e0014a94266a71223eab0597bfb8 Reviewed-on: https://skia-review.googlesource.com/105203 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Use primitive restart feature on ARMGravatar Chris Dalton2018-01-23
| | | | | | | | Bug: skia: Change-Id: Ia7ab55f8b6ecdd674762f5197d35e8db58f07c01 Reviewed-on: https://skia-review.googlesource.com/98180 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* CCPR: Rename GrCCPR* -> GrCC*Gravatar Chris Dalton2018-01-08
| | | | | | | | | | | Also runs clang-format on the files that don't have special shader builder styling. Bug: skia: Change-Id: I4a67569a7c8472acfb9200644c913844a92e3b2d Reviewed-on: https://skia-review.googlesource.com/92083 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* move largest apis into privateGravatar Mike Reed2018-01-08
| | | | | | | | | Related to https://skia-review.googlesource.com/c/skia/+/91860 Bug: skia: Change-Id: Ia8fd981b422bbab75541b078277d2e09e1fc9d41 Reviewed-on: https://skia-review.googlesource.com/91940 Reviewed-by: Brian Salomon <bsalomon@google.com>
* Reland "CCPR: Initial semi-optimized vertex shader Impl"Gravatar Chris Dalton2018-01-04
| | | | | | | | | | | | | | | | | | | | This is a reland of e3877ce5ceb7842b61d54bebcc51864e5787a2bc Original change's description: > CCPR: Initial semi-optimized vertex shader Impl > > TBR=bsalomon@google.com > > Bug: skia: > Change-Id: I24173e146d8c95cec5f29e8cb4fa5e2c28f9a33c > Reviewed-on: https://skia-review.googlesource.com/89120 > Reviewed-by: Chris Dalton <csmartdalton@google.com> > Commit-Queue: Chris Dalton <csmartdalton@google.com> Bug: skia: Change-Id: I1d194853540e64df9c7b55ceb388a5d2f32bc258 Reviewed-on: https://skia-review.googlesource.com/90963 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "CCPR: Initial semi-optimized vertex shader Impl"Gravatar Chris Dalton2017-12-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit e3877ce5ceb7842b61d54bebcc51864e5787a2bc. Reason for revert: Intel crashing again Original change's description: > CCPR: Initial semi-optimized vertex shader Impl > > TBR=bsalomon@google.com > > Bug: skia: > Change-Id: I24173e146d8c95cec5f29e8cb4fa5e2c28f9a33c > Reviewed-on: https://skia-review.googlesource.com/89120 > Reviewed-by: Chris Dalton <csmartdalton@google.com> > Commit-Queue: Chris Dalton <csmartdalton@google.com> TBR=bsalomon@google.com,brianosman@google.com,csmartdalton@google.com Change-Id: I2485db30397958722a07c5992c748ab69365ebb6 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/89300 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* CCPR: Initial semi-optimized vertex shader ImplGravatar Chris Dalton2017-12-22
| | | | | | | | | | TBR=bsalomon@google.com Bug: skia: Change-Id: I24173e146d8c95cec5f29e8cb4fa5e2c28f9a33c Reviewed-on: https://skia-review.googlesource.com/89120 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "CCPR: Initial semi-optimized vertex shader Impl"Gravatar Brian Osman2017-12-20
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit a8f6aef13d0592305e05baf19ee724f31a53b466. Reason for revert: Looks to failing on ANGLE bots Original change's description: > CCPR: Initial semi-optimized vertex shader Impl > > Bug: skia: > Change-Id: If22f47a3b945ce7336f8e609c2e0c911f09e1d18 > Reviewed-on: https://skia-review.googlesource.com/86820 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Commit-Queue: Chris Dalton <csmartdalton@google.com> TBR=egdaniel@google.com,bsalomon@google.com,csmartdalton@google.com Change-Id: Ic5a73434cba4246a72790db2c27d06e7a50f389a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/88220 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* CCPR: Initial semi-optimized vertex shader ImplGravatar Chris Dalton2017-12-20
| | | | | | | | Bug: skia: Change-Id: If22f47a3b945ce7336f8e609c2e0c911f09e1d18 Reviewed-on: https://skia-review.googlesource.com/86820 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* CCPR: Don't use instanced draw calls with geometry shadersGravatar Chris Dalton2017-12-11
| | | | | | | | | | | | It isn't necessary for the vertex shader to know all the points because everything happens in the geometry shader. It's simpler to use regular vertex arrays instead. Bug: skia: Change-Id: I7bf83180476fbe0ab01492611cd72e72b3f7d4f2 Reviewed-on: https://skia-review.googlesource.com/82881 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* CCPR: Combine loops and serpentines back into a single shaderGravatar Chris Dalton2017-12-08
| | | | | | | | Bug: skia: Change-Id: I945471ccd2580a2d39afd9c80acb8d9e5e196435 Reviewed-on: https://skia-review.googlesource.com/82460 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* CCPR: Eliminate texel buffersGravatar Chris Dalton2017-12-05
| | | | | | | | | | | | | | | | | | Points cost 8 bytes and indices cost 4. If a point is accessed twice, it's a wash whether we duplicate it or index. This change eliminates texel buffers by duplicating points across instance arrays. This reduces our dependence on extensions as well as getting rid of our indirect memory access pattern in vertex shaders. As a result of this change, memory usage by GPU buffers will only be a fraction larger at worst, and slightly better at best. Bug: skia: Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SKNX_NO_SIMD Change-Id: I3c7f03772edd4f850d5fdd7b55552647335c1b52 Reviewed-on: https://skia-review.googlesource.com/79185 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Delete even more unused views codeGravatar Brian Osman2017-11-29
| | | | | | | | Bug: skia: Change-Id: I41480aa89dfcd8cb7e016e477cbabe354f35ce8a Reviewed-on: https://skia-review.googlesource.com/75480 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Convert geometry shaders to operate in Skia device spaceGravatar Chris Dalton2017-10-25
| | | | | | | | | | | | | Defers the transformation to normalized window coordinates until after the geometry shader. Merges vertex and a geometry shader builders into a single compilation unit with a common base class. Updates CCPR geometry shaders accordingly. Bug: skia: Change-Id: If93c90e978b1fdc7120febd05cfb05810fd496b5 Reviewed-on: https://skia-review.googlesource.com/62980 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Refactor CCPR coverage shaders for a vertex implGravatar Chris Dalton2017-10-16
| | | | | | | | | | | | | Decouples geometry generation and analytic coverage. This paves the way for a vertex shader implementation. TBR=egdaniel@google.com Bug: skia: Change-Id: I2a183401bfe70b9f14b9b1cf035de6020a2135fa Reviewed-on: https://skia-review.googlesource.com/60103 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "Refactor CCPR coverage shaders for a vertex impl"Gravatar Eric Boren2017-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit e501033bbdc9143848edde3c3e3b7282169bc11e. Reason for revert: Broke several bots Original change's description: > Refactor CCPR coverage shaders for a vertex impl > > Decouples geometry generation and analytic coverage. This paves the > way for a vertex shader implementation. > > Bug: skia: > Change-Id: I23b79d4397db22bd8fc063b8dfca58ab00037292 > Reviewed-on: https://skia-review.googlesource.com/59200 > Commit-Queue: Chris Dalton <csmartdalton@google.com> > Reviewed-by: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,csmartdalton@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: skia: Change-Id: I314bf03fa6cbeceb1c527d4d9464147b2e8464c6 Reviewed-on: https://skia-review.googlesource.com/59821 Reviewed-by: Eric Boren <borenet@google.com> Commit-Queue: Eric Boren <borenet@google.com>
* Refactor CCPR coverage shaders for a vertex implGravatar Chris Dalton2017-10-15
| | | | | | | | | | | Decouples geometry generation and analytic coverage. This paves the way for a vertex shader implementation. Bug: skia: Change-Id: I23b79d4397db22bd8fc063b8dfca58ab00037292 Reviewed-on: https://skia-review.googlesource.com/59200 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* CCPR: Remove kCombinedTriangleHullsAndEdgesGravatar Chris Dalton2017-09-26
| | | | | | | | | | | | | | Removes the mode that generates edge and hull geometry simultaneously from the geometry shader. Perf was hit and miss and it's not compatible with vertex shaders. We can revisit if geometry shaders still show promise on some platforms after a vertex shader impl is finished. Bug: skia: Change-Id: I984231e9a5bb60fe31d3ba280c7390a74aa5bc27 Reviewed-on: https://skia-review.googlesource.com/51300 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Use shader based blending to clamp kPlus mode w/F16Gravatar Brian Osman2017-09-20
| | | | | | | | Bug: skia:6173 Change-Id: I21042d484d9a7b3eee04aa3301d9793d00ad6908 Reviewed-on: https://skia-review.googlesource.com/48183 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Minor cleanups for CCPRGravatar Chris Dalton2017-09-12
| | | | | | | | Bug: skia: Change-Id: Ic4838f0e242ded0c3d0cb5c86715ed67d8152f5c Reviewed-on: https://skia-review.googlesource.com/44520 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* CCPR: Remove cubic insets and MSAA bordersGravatar Chris Dalton2017-09-05
| | | | | | | | | | | | | | | Avoids the need for MSAA cubic borders by chopping up the cubic geometry and crossing the inflections points and loop intersections with lines and quadratic(s) instead. This allows us to render the remaining cubic segments with simple hulls and analytic AA, giving better image quality and performance. Bug: skia: Change-Id: If371229f575ee0286c325c230a116d602a9d38ce Reviewed-on: https://skia-review.googlesource.com/41883 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* CCPR: Rewrite path parsingGravatar Chris Dalton2017-09-05
| | | | | | | | | | | | Creates a GrCCPRGeometry class that chops contours up into simple segments that ccpr can render, and rewrites the GPU buffer creation to be able to handle arbitrary lengths of ccpr geometry. Bug: skia: Change-Id: Iaa173a02729e177b0ed7ef7fbb9195d349be689d Reviewed-on: https://skia-review.googlesource.com/41963 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Add a GrCCPRGeometry fileGravatar Chris Dalton2017-08-28
| | | | | | | | | | | Enough ccpr-specific geometry code is in flight that it feels like it should have its own file. Bug: skia: Change-Id: I99ef620a7dc35178cf774b3a4ec6159d46f401c7 Reviewed-on: https://skia-review.googlesource.com/39162 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* Make Copy Ops to go through GpuCommandBuffer instead of straigt to GPU.Gravatar Greg Daniel2017-08-24
| | | | | | | | Bug: skia: Change-Id: I4eae4507e07278997e26419e94586eef0780c423 Reviewed-on: https://skia-review.googlesource.com/38361 Commit-Queue: Greg Daniel <egdaniel@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* CCPR: Process quadratic flat edges without soft msaaGravatar Chris Dalton2017-08-07
| | | | | | | | | | | | | | | | | | | | | | The artifacts previously thought to require msaa can be handled by (1) converting near-linear quadratics into lines, and (2) ensuring all quadratic segments are monotonic with respect to the vector of their closing edge [P2 -> P0]. No. 1 was already in effect. No. 2 is implemented by this change. Now we only fall back on soft msaa for the two corner pixels. This change also does some generic housekeeping in the quadratic processor. Bug: skia: Change-Id: Ib3309c2ed86d3d8bec5f451125a69326e82eeb1c Reviewed-on: https://skia-review.googlesource.com/29721 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Make GrPipeline hold a GrRenderTargetProxy (instead of a GrRenderTarget)Gravatar Robert Phillips2017-07-26
| | | | | | | | | | | In a future world where GrSurface no longer has an origin it will be useful for the GrPipeline to be holding the GrRenderTargetProxy (which will still have an origin). Change-Id: I743a8cc07b6b92f8116227fb77b7c37da43cde8a Reviewed-on: https://skia-review.googlesource.com/26804 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Coverage counting path rendererGravatar Chris Dalton2017-07-14
Initial implementation of a GPU path renderer that draws antialiased paths by counting coverage in an offscreen buffer. Initially disabled until it has had time to soak. Bug: skia: Change-Id: I003d8cfdf8dc62641581b5ea2dc4f0aa00108df6 Reviewed-on: https://skia-review.googlesource.com/21541 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>