aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ccpr
Commit message (Collapse)AuthorAge
* Remove sRGB config checks based on color spaceGravatar Brian Osman2018-07-02
| | | | | | | | | | | | | | | | All of the restrictions/assumptions that led to this code are gone, so we can always use appropriate color space. For the YUV provider, if/when we re-introduce 8888 sRGB, the color space will have a linear transfer function, so the color space xform will automatically do what was happening here. That removes the last usage of framebuffer sRGB control, so we can remove all kinds of GrPaint and GrPipeline plumbing for that feature. Change-Id: I24af1d498dbc75210f92f8c61b10aa31eec022f6 Reviewed-on: https://skia-review.googlesource.com/138986 Reviewed-by: Mike Klein <mtklein@chromium.org> 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>
* ccpr: Recycle cache entries when possible to avoid mallocGravatar Chris Dalton2018-06-29
| | | | | | | | Bug: skia: Change-Id: Id06098f66ad6399c11707f8380597e7eeb392eec Reviewed-on: https://skia-review.googlesource.com/138441 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Robert Phillips <robertphillips@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>
* Put GrPrimitiveProcessor/GrGeometryProcessor before GrPipeline in param lists.Gravatar Brian Salomon2018-06-25
| | | | | | | | | | | We were inconsistent about which order these were in. Having the processor first will make the parameter order more logical for an upcoming change. Also, the primitive processor comes logically before the pipeline. Change-Id: I3968c5e4e6dff01f9c4ad311eb1795b3c7580ff5 Reviewed-on: https://skia-review.googlesource.com/137228 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* ccpr: Enable ccpr by defaultGravatar Chris Dalton2018-06-25
| | | | | | | | | | | | | | | | | | | Now that the path cache is implemented, we can use ccpr everywhere. Modifies ccpr to not cache unless the "fAllowPathMaskCaching" context option is enabled. Adds a small condition to skip complicated paths with more vertices than pixels, simply so we don't regress a couple testcases. Updates skpbench to do three draws before starting the timer, in order to prime the cache. Bug: skia: Change-Id: Ic3a0a2bdad8a22ff6431e77fa4da2b54d6bb9aba Reviewed-on: https://skia-review.googlesource.com/137207 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* ccpr: Cache paths with >=50% visibilityGravatar Chris Dalton2018-06-22
| | | | | | | | | | | | | Adds a hit count to cache entries. Paths now don't get stashed until their second hit (and cached on their third). Mostly-visible, cachable paths render their entire mask on the second hit, in hopes that we will be able to cache them alongside the fully visible ones. Bug: skia: Change-Id: Idd18f5dc3090f13531f630d229f4808198695fea Reviewed-on: https://skia-review.googlesource.com/136541 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* ccpr: Recycle the stashed atlas's texture explicitlyGravatar Chris Dalton2018-06-22
| | | | | | | | | | This solution is more future-proof. Bug: skia: Change-Id: Ifa437a511336282d73befddea2656f3fcdb3f2ef Reviewed-on: https://skia-review.googlesource.com/136964 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* ccpr: Don't consider sub-pixel translation for caching on AndroidGravatar Chris Dalton2018-06-19
| | | | | | | | Bug: skia: Change-Id: I453400bd1ca1f122d9af526f55102e8712119d2b Reviewed-on: https://skia-review.googlesource.com/135540 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "Revert "Change how vertex/instance attributes are handled in ↵Gravatar Brian Salomon2018-06-19
| | | | | | | | | | | | | geometry processors."" This reverts commit 5045e501d2aec23e5f1e4b46346033ac3202c6b0. TBR=csmartdalton@google.com Change-Id: Ifbf5f1d8f8ef340fdc69653e931b6d68d4bf0854 Reviewed-on: https://skia-review.googlesource.com/135862 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Move op memory storage to GrContext (take 2)Gravatar Robert Phillips2018-06-19
| | | | | | | | | | TBR=bsalomon@google.com Change-Id: I4a448694d4114d83cd3a720cfc8bd37de51733d1 Reviewed-on: https://skia-review.googlesource.com/135707 Reviewed-by: Greg Daniel <egdaniel@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Revert "Change how vertex/instance attributes are handled in geometry ↵Gravatar Mike Klein2018-06-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | processors." This reverts commit 19c1233c447f625c2522e7ecd0a0adecc629bb2f. Reason for revert: want to make sure Google3 can roll Original change's description: > Change how vertex/instance attributes are handled in geometry processors. > > * No longer register vertex/instance attributes on base class, just counts > > * Separate instance and vertex attributes and remove InputRate and offset > > * Make attributes constexpr where possible > > Change-Id: I1f1d5e772fa177a96d2aeb805aab7b69f35bfae6 > Reviewed-on: https://skia-review.googlesource.com/132405 > Commit-Queue: Brian Salomon <bsalomon@google.com> > Reviewed-by: Chris Dalton <csmartdalton@google.com> TBR=egdaniel@google.com,bsalomon@google.com,csmartdalton@google.com Change-Id: I4800632515e14fbf54af52826928ac915657b59f No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/135661 Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
* Change how vertex/instance attributes are handled in geometry processors.Gravatar Brian Salomon2018-06-18
| | | | | | | | | | | | | * No longer register vertex/instance attributes on base class, just counts * Separate instance and vertex attributes and remove InputRate and offset * Make attributes constexpr where possible Change-Id: I1f1d5e772fa177a96d2aeb805aab7b69f35bfae6 Reviewed-on: https://skia-review.googlesource.com/132405 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Chris Dalton <csmartdalton@google.com>
* ccpr: Implement path mask cachingGravatar Chris Dalton2018-06-18
| | | | | | | | | | | | | | | | | | | | Implement caching as follows: 1) Instead of deleting the mainline ccpr atlas when finished, stash it away from flush to flush. 2) On subsequent flushes, check the stashed atlas to see if we can reuse any of its cachable paths. Copy reusable paths into 8-bit literal coverage atlases and store them in the resource cache. 3) Recycle the stashed atlas texture for the remaining paths in the flush. Bug: skia: Change-Id: I9b20fbea708646df1df3a5f9c044e2299706b989 Reviewed-on: https://skia-review.googlesource.com/134703 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* ccpr: Use lazy proxies with GrCCAtlasGravatar Chris Dalton2018-06-18
| | | | | | | | Bug: skia: Change-Id: I576d9303d451352778de0425e3ecbc561331cd09 Reviewed-on: https://skia-review.googlesource.com/135362 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Revert "Move op memory storage to GrContext"Gravatar Robert Phillips2018-06-15
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit c8cee446bf9c07da8848bbd032abf26e79966ac1. Reason for revert: TSAN issues Original change's description: > Move op memory storage to GrContext > > TBR=bsalomon@google.com > Change-Id: Ifa95bf0073b9d948f2c937d10088b7734b971f90 > Reviewed-on: https://skia-review.googlesource.com/131500 > Reviewed-by: Brian Salomon <bsalomon@google.com> > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Robert Phillips <robertphillips@google.com> TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com Change-Id: Ia0d2b7408314d9b67d57388315376bbea23d3780 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/135181 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Move op memory storage to GrContextGravatar Robert Phillips2018-06-15
| | | | | | | | | TBR=bsalomon@google.com Change-Id: Ifa95bf0073b9d948f2c937d10088b7734b971f90 Reviewed-on: https://skia-review.googlesource.com/131500 Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* ccpr: Generalize GrCCAtlas to work for cached atlases as wellGravatar Chris Dalton2018-06-14
| | | | | | | | | | | Converts atlas offsets to SkIVector, adds a GrCCAtlasStack class, moves the Op that renders the atlases into GrCCPerFlushResources, etc. Bug: skia: Change-Id: I5110be8e74da709f3ce84bb6798ead572142d0fa Reviewed-on: https://skia-review.googlesource.com/134701 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* ccpr: Initialize the atlas size more intelligentlyGravatar Chris Dalton2018-06-13
| | | | | | | | | | | | | Rather than always starting the atlas at 1024 x 1024, begin with the first pow2 dimensions whose area is theoretically large enough to contain the pending paths. Bug: skia: Change-Id: I263e77ff6a697e865f6b3b62b9df7002225f9544 Reviewed-on: https://skia-review.googlesource.com/133660 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* Plumb GrContext everywhereGravatar Robert Phillips2018-06-12
| | | | | | | | | | There is no good way to split the monster CL up. This breaks out the GrContext plumbing but doesn't use it. Change-Id: I90856d428d372bcec3f8821e6364667b367927d4 Reviewed-on: https://skia-review.googlesource.com/133382 Commit-Queue: Robert Phillips <robertphillips@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* trim #include <new> from SkPostConfig.hGravatar Mike Klein2018-06-11
| | | | | | | Change-Id: I693ddcd4ade101ba4eb4102e03adce183aa1d672 Reviewed-on: https://skia-review.googlesource.com/133829 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Stop passing GrPrimitiveProcessor to GrMesh::sendToGpu.Gravatar Brian Salomon2018-06-08
| | | | | | | | | | | | | It is currently used in GrGLGpu::setupGeometry. Instead: 1) Make GrMesh track whether primitive restart should be enabled. 2) Make GrGLProgram track program attributes. Change-Id: Ice411a495961fcbc3cedc81e8ae0583537f42153 Reviewed-on: https://skia-review.googlesource.com/132267 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Chris Dalton <csmartdalton@google.com>
* Add a factory to any GrOp-derived class that lacked oneGravatar Robert Phillips2018-06-08
| | | | | | | | | All GrOp-derived classes are going to have allocate their memory in a GrMemoryPool. Change-Id: Ifa410b05eecd9b68c39dcc15dd4298d617204c13 Reviewed-on: https://skia-review.googlesource.com/132828 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Allow CCPR in DDL mode (take 2)Gravatar Robert Phillips2018-05-31
| | | | | | | | | | | | A lot of the changes to get this compiling on the win_chromium_compile_dbg_ng bot (i.e., moving a lot of header files to private) should be undone if that bot is ever "fixed". Bug: skia:7988 Change-Id: I704ff793d80b18e7312048538874498824803580 Reviewed-on: https://skia-review.googlesource.com/130920 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Make sk_sp operator bool explicit.Gravatar Ben Wagner2018-05-30
| | | | | | | | | | | | | The sk_sp class has been using the operator pointer to field as a c++98 version of explicit operator bool. This change updates this class to use explicit operator bool. The one visible change is that the pointer to field version isn't quite as explcit, requiring code changes for some users. Change-Id: Iddf8fb347b1d3ec33db1af08489c9fd885c9bf08 Reviewed-on: https://skia-review.googlesource.com/130380 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
* Make GrPrimitiveProcessor::Attribute a class, hide data members.Gravatar Brian Salomon2018-05-30
| | | | | | | Change-Id: I008881d79c82fdde6bb68fe2218e62ccc9c538dd Reviewed-on: https://skia-review.googlesource.com/130600 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
* Revert "Allow CCPR in DDL mode"Gravatar Robert Phillips2018-05-30
| | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 93540dd15715057e00b4f136977f441720317b60. Reason for revert: Chrome! > Allow CCPR in DDL mode > > Bug: skia:7988 > Change-Id: If757f29e0156c0ef7045b437b04e17aebe4de851 > Reviewed-on: https://skia-review.googlesource.com/130509 > Commit-Queue: Robert Phillips <robertphillips@google.com> > Reviewed-by: Chris Dalton <csmartdalton@google.com> > Reviewed-by: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,robertphillips@google.com,csmartdalton@google.com Change-Id: Ibb5017d1bf307545969069b94987e0a51a22e333 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia:7988 Reviewed-on: https://skia-review.googlesource.com/130880 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Allow CCPR in DDL modeGravatar Robert Phillips2018-05-30
| | | | | | | | | Bug: skia:7988 Change-Id: If757f29e0156c0ef7045b437b04e17aebe4de851 Reviewed-on: https://skia-review.googlesource.com/130509 Commit-Queue: Robert Phillips <robertphillips@google.com> Reviewed-by: Chris Dalton <csmartdalton@google.com> Reviewed-by: Greg Daniel <egdaniel@google.com>
* Drop unneeded .get() in GrCoverageCountingPathRenderer.cppGravatar tzik2018-05-29
| | | | | | | | | | | MSVC's std::unique_ptr<>::get() is marked as NODISCARD, and the .get() call here causes a warning. Bug: chromium:752720 Change-Id: Iadc217247533b6148285f7a81c982527d98c86f9 Reviewed-on: https://skia-review.googlesource.com/130360 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* ccpr: Handle winding and even-odd in the same shaderGravatar Chris Dalton2018-05-24
| | | | | | | | | | | | | | | We are already waiting for an entire texture lookup anyway. A couple extra flops should still complete before the texture fetch. This also gives us better batching. TBR=bsalomon@google.com Bug: skia: Change-Id: I7b8e3021c8baad200af99600c9592df5ed0e46bd Reviewed-on: https://skia-review.googlesource.com/129881 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com> Auto-Submit: Chris Dalton <csmartdalton@google.com>
* Revert "ccpr: Handle winding and even-odd in the same shader"Gravatar Chris Dalton2018-05-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5dd3fccb3c7d9fce2663803a1284734237d8546d. Reason for revert: fma() not supported pre-3.1 Original change's description: > ccpr: Handle winding and even-odd in the same shader > > We are already waiting for an entire texture lookup anyway. A couple > extra flops should still complete before the texture fetch. This also > gives us better batching. > > Bug: skia: > Change-Id: I83a7a8ba6c05cd1ad6b1756a987429233e69ed6c > Reviewed-on: https://skia-review.googlesource.com/129422 > Commit-Queue: Chris Dalton <csmartdalton@google.com> > Reviewed-by: Brian Salomon <bsalomon@google.com> TBR=bsalomon@google.com,csmartdalton@google.com Change-Id: Iaa6b72686fdf89b58a0ea8418296985c2a3dc27e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/129900 Reviewed-by: Chris Dalton <csmartdalton@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Handle winding and even-odd in the same shaderGravatar Chris Dalton2018-05-23
| | | | | | | | | | | | We are already waiting for an entire texture lookup anyway. A couple extra flops should still complete before the texture fetch. This also gives us better batching. Bug: skia: Change-Id: I83a7a8ba6c05cd1ad6b1756a987429233e69ed6c Reviewed-on: https://skia-review.googlesource.com/129422 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* ccpr: Add a mechanism to detach and merge pending pathsGravatar Chris Dalton2018-05-23
| | | | | | | | Bug: skia:7988 Change-Id: Ie3fd7c5d57abdf70db40d309b7a83333045ad972 Reviewed-on: https://skia-review.googlesource.com/129622 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* ccpr: Remove GrCCDrawPathsOp's back-pointer into CCPRGravatar Chris Dalton2018-05-23
| | | | | | | | Bug: skia:7988 Change-Id: Ia05173e90fa2cda28de6ae2a9aaee577eaf4bc65 Reviewed-on: https://skia-review.googlesource.com/129621 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
* Delete GrDrawOp::wasRecordedGravatar Chris Dalton2018-05-23
| | | | | | | | Bug: skia:7988 Change-Id: I8d12beec835767f22302a1e167fcef46ee5e5ffc Reviewed-on: https://skia-review.googlesource.com/129555 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Remove local matrix data from path instancesGravatar Chris Dalton2018-05-22
| | | | | | | | | | | | | | | Uses the built-in local matrix code instead trying to bake it into the path instance data. If we find a case that can benefit from this type of optimization in the future, we can use something like a texel buffer and send in all of the coord transform data -- not just the local matrix. Bug: skia: Change-Id: I194bc9e4f83e588f8aa93a1a4d40097475d84977 Reviewed-on: https://skia-review.googlesource.com/129332 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* ccpr: Abstract the draws list in a separate classGravatar Chris Dalton2018-05-21
| | | | | | | | Bug: skia: Change-Id: I583c1bdc470e5830d041955d14b164fc00d5d014 Reviewed-on: https://skia-review.googlesource.com/129227 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Bugfix for cropped pathsGravatar Chris Dalton2018-05-11
| | | | | | | | | | | TBR=bsalomon@google.com Bug: skia:7948 Change-Id: I606bbad95260995dd3ea43c858591ae2d5c9cea1 Reviewed-on: https://skia-review.googlesource.com/127354 Reviewed-by: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Support C++11 range-for loops in SkTInternalLListGravatar Chris Dalton2018-05-09
| | | | | | | | Bug: skia: Change-Id: Iad5e06fac95c5b805f3735c106103e5a07975b5d Reviewed-on: https://skia-review.googlesource.com/127106 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Clean up GrCoverageCountingPathRendererGravatar Chris Dalton2018-05-09
| | | | | | | | | | | | Extracts all the nested classes to their own files and detangles their interactions. Encapsulates the per-flush resources in their in their own separate class. Bug: skia: Change-Id: Ic134b627f6b66cb2ce1e5d6f896ac6b2f75f6fa2 Reviewed-on: https://skia-review.googlesource.com/126845 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
* ccpr: Cleanup on-flush path statsGravatar Chris Dalton2018-05-09
| | | | | | | | | | | | Adds a wrapper struct to limit the number of free variables. Fixes a bug where we preallocated draw instances for clip paths. Counts conic weights and preallocates their buffer as well. Bug: skia: Change-Id: I72779c9017322a0dc64461c8cb927f975406b9af Reviewed-on: https://skia-review.googlesource.com/126844 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* Add a drawPaths method to GrCCPathProcessorGravatar Chris Dalton2018-05-08
| | | | | | | | Bug: skia: Change-Id: I5d3762203cbe1d823ea3f3967240bcab76651f2c Reviewed-on: https://skia-review.googlesource.com/126662 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Avoid inline array definitionsGravatar Chris Dalton2018-04-30
| | | | | | | | | | | | MoltenVK currently has an issue translating these to MSL: https://github.com/KhronosGroup/SPIRV-Cross/issues/558 Bug: skia: Change-Id: Id210780672f8ec3920f8087bd60a9108e8fb0256 Reviewed-on: https://skia-review.googlesource.com/124525 Commit-Queue: Chris Dalton <csmartdalton@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
* ccpr: Remove canMakeClipProcessorGravatar Chris Dalton2018-04-27
| | | | | | | | | | | | Now that conics are supported we can make a ccpr clip FP out of any path. No need to ask. And the 'fDrawCachablePaths' check was redundant since clip paths are always volatile anyway (for now). Bug: skia: Change-Id: I670474a3b91f1c252ed323eb627bbb109788e6b8 Reviewed-on: https://skia-review.googlesource.com/124362 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Don't use varying matricesGravatar Chris Dalton2018-04-26
| | | | | | | | Bug: skia:7869 Change-Id: Ie6071fd49d0eb32b2f5dfdf6413f99a9a8d41637 Reviewed-on: https://skia-review.googlesource.com/123908 Reviewed-by: Ethan Nicholas <ethannicholas@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Cull extremely thin trianglesGravatar Chris Dalton2018-04-24
| | | | | | | | | | | | | When triangles get too thin it's possible for FP round-off error to actually give us the wrong winding direction, causing rendering artifacts. This change also allows us to unblacklist ANGLE. Bug: skia:7805 Bug: skia:7820 Change-Id: Ibaa0f033eba625d720e3a594c4515d8264cc413d Reviewed-on: https://skia-review.googlesource.com/123262 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Don't call calcCubicInverseTransposePowerBasisMatrixGravatar Chris Dalton2018-04-23
| | | | | | | | | | | We only need a few values from this Matrix, so it doesn't make sense to spend time solving the entire thing. Bug: skia: Change-Id: Id56d6f593a9a5afe1455bf2c93f6a51b1b9f1642 Reviewed-on: https://skia-review.googlesource.com/122130 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Don't solve for cubic roots that are out of rangeGravatar Chris Dalton2018-04-20
| | | | | | | | | | | | | Most real-world cubics don't have both KLM roots inside T=0..1, and a large amount don't have any. This CL gives a nice speedup by not wasting time finding padding around KLM roots that we aren't going to chop at anyway. Bug: skia: Change-Id: Icb7217142e29fc3f8e8ff657e9dc739caf6d6714 Reviewed-on: https://skia-review.googlesource.com/122129 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>
* ccpr: Fix flatness and triangle-ness detection for conicsGravatar Chris Dalton2018-04-20
| | | | | | | | | | | We should detect these cases by examining the curve at max height; not midtangent. Bug: skia:7821 Change-Id: I3d9e3a10798f0d825916840cb99d054b2a6284c3 Reviewed-on: https://skia-review.googlesource.com/122620 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Chris Dalton <csmartdalton@google.com>