| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
| |
Otherwise, out/Debug/viewer -m complexclip_bw_invert may crash using
the threaded backend because the clip in the initFn may be wider
than the clip in the drawFn.
Bug: skia:
Change-Id: I3b3ddc9a912fcc155bd30a6bc1f87e24739d1ca6
Reviewed-on: https://skia-review.googlesource.com/121327
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 107d53971dab5245e88885f095aef52fd52942d3.
Reason for revert: Ready to rebaseline
Original change's description:
> Revert "Use DAA for small cubics and non-convex paths that fit into a mask"
>
> This reverts commit 1875e053845c4d377a0f64f7233bdb9dc00bdce1.
>
> Reason for revert:
>
> I don't think there's anything wrong with this, but it looks like Yuqian is out today and there is a large number of GM, SKP, and SVG images to triage from this. This is just a triage-by-revert... should be fine to reland when you're ready to triage.
>
> Original change's description:
> > Use DAA for small cubics and non-convex paths that fit into a mask
> >
> > I forgot to benchmark svgs and it turns out that DAA is specifically
> > good for the small cubics and small non-convex paths in svgs. This
> > should make our svg performance fast again:
> >
> > 2.84% faster in svgparse_Florida-StateSeal.svg_1
> > 2.90% faster in svgparse_NewYork-StateSeal.svg_1
> > 2.95% faster in svgparse_Seal_of_Texas.svg_1
> > 3.05% faster in car.svg_1
> > 3.53% faster in svgparse_Vermont_state_seal.svg_1
> > 3.68% faster in svgparse_Wyoming-StateSeal.svg_1
> > 4.88% faster in svgparse_Minnesota-StateSeal.svg_1
> > 5.22% faster in svgparse_NewMexico-StateSeal.svg_1
> > 6.49% faster in svgparse_fsm.svg_1
> >
> >
> > Bug: skia:
> > Change-Id: Ia149944443d72c12c3dda178cb5ebc89d6d0bf18
> > Reviewed-on: https://skia-review.googlesource.com/116185
> > Reviewed-by: Cary Clark <caryclark@google.com>
> > Commit-Queue: Yuqian Li <liyuqian@google.com>
>
> TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,caryclark@skia.org
>
> # Not skipping CQ checks because original CL landed > 1 day ago.
>
> Bug: skia:
> Change-Id: I232f34dcea1cdabef768879a261fe6796f3e4a79
> Reviewed-on: https://skia-review.googlesource.com/116400
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,caryclark@google.com,liyuqian@google.com,reed@google.com,caryclark@skia.org
Change-Id: I6a413e3a2f1ce9182f9e209f6e2654a602170378
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/116620
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 1875e053845c4d377a0f64f7233bdb9dc00bdce1.
Reason for revert:
I don't think there's anything wrong with this, but it looks like Yuqian is out today and there is a large number of GM, SKP, and SVG images to triage from this. This is just a triage-by-revert... should be fine to reland when you're ready to triage.
Original change's description:
> Use DAA for small cubics and non-convex paths that fit into a mask
>
> I forgot to benchmark svgs and it turns out that DAA is specifically
> good for the small cubics and small non-convex paths in svgs. This
> should make our svg performance fast again:
>
> 2.84% faster in svgparse_Florida-StateSeal.svg_1
> 2.90% faster in svgparse_NewYork-StateSeal.svg_1
> 2.95% faster in svgparse_Seal_of_Texas.svg_1
> 3.05% faster in car.svg_1
> 3.53% faster in svgparse_Vermont_state_seal.svg_1
> 3.68% faster in svgparse_Wyoming-StateSeal.svg_1
> 4.88% faster in svgparse_Minnesota-StateSeal.svg_1
> 5.22% faster in svgparse_NewMexico-StateSeal.svg_1
> 6.49% faster in svgparse_fsm.svg_1
>
>
> Bug: skia:
> Change-Id: Ia149944443d72c12c3dda178cb5ebc89d6d0bf18
> Reviewed-on: https://skia-review.googlesource.com/116185
> Reviewed-by: Cary Clark <caryclark@google.com>
> Commit-Queue: Yuqian Li <liyuqian@google.com>
TBR=caryclark@google.com,liyuqian@google.com,reed@google.com,caryclark@skia.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: skia:
Change-Id: I232f34dcea1cdabef768879a261fe6796f3e4a79
Reviewed-on: https://skia-review.googlesource.com/116400
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I forgot to benchmark svgs and it turns out that DAA is specifically
good for the small cubics and small non-convex paths in svgs. This
should make our svg performance fast again:
2.84% faster in svgparse_Florida-StateSeal.svg_1
2.90% faster in svgparse_NewYork-StateSeal.svg_1
2.95% faster in svgparse_Seal_of_Texas.svg_1
3.05% faster in car.svg_1
3.53% faster in svgparse_Vermont_state_seal.svg_1
3.68% faster in svgparse_Wyoming-StateSeal.svg_1
4.88% faster in svgparse_Minnesota-StateSeal.svg_1
5.22% faster in svgparse_NewMexico-StateSeal.svg_1
6.49% faster in svgparse_fsm.svg_1
Bug: skia:
Change-Id: Ia149944443d72c12c3dda178cb5ebc89d6d0bf18
Reviewed-on: https://skia-review.googlesource.com/116185
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the mask is uninitialized (which is probably caught by
MSAN) for the region to the left and right of fAntiRect when
fAntiRect is non-empty. That causes skbug.com/7192
Bug: skia:7192
Change-Id: Ida0551d00f0ac8053a1e0232cfbc4f05c9f35c6c
Reviewed-on: https://skia-review.googlesource.com/65023
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The change here should have been uploaded to
https://skia-review.googlesource.com/c/skia/+/42101
But somehow the uploading phase failed miserably. Hence re-upload it.
TBR: herb@google.com
Bug: skia:
Change-Id: Ie4b19527a15fb2356f33ff02f60655efb151674c
Reviewed-on: https://skia-review.googlesource.com/42481
Reviewed-by: Yuqian Li <liyuqian@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This way, we could have more stack memory on Google3: if each of the
two branche has 12K stack memory, Google3 would believe that it needs 24K
stack memory; but using SkSTArenaAlloc, we could use 12K stack memory to
handle those two branches.
Bug: skia:
Change-Id: Ie9234226cd4ba93b5be2ebeb95ab771031354f97
Reviewed-on: https://skia-review.googlesource.com/42101
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
|
|
|
|
|
|
|
|
| |
Bug: skia:
Change-Id: I5c98220498c71ced4565f492335cef2a372d0765
Reviewed-on: https://skia-review.googlesource.com/41743
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Always inline (Clang previously ignored inline and got 25% slower)
2. SIMD everywhere other than x86 gcc:
non-SIMD is only faster in my desktop with gcc;
with Clang on my desktop, SIMD is 50% faster than non-SIMD.
3. Allocate 4x memory instead of 2x when running out of space:
on old Android devices with Linux kernel 3.10 (e.g., Nexus 6P, 5X),
the alloc/memcpy will triger a major bottleneck in kernel (30% of
the running time). Such bottleneck goes away (the kernel is no
longer doing stupid things during alloc/memcpy) in Linux kernel
3.18 (e.g., Pixel), and that's why DAA is much faster on Pixel than
on Nexus 6P.
I think maybe I should adopt SkRasterPipeline for device-specific
optimizations.
Bug: skia:
Change-Id: I0408aa7671a5f1b39aad3bec25f8fc994ff5a1bb
Reviewed-on: https://skia-review.googlesource.com/30820
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
|
|
DAA is:
1. Much simpler than AAA.
SkScan_AAAPath.cpp is about 1700 lines.
SkScan_DAAPath.cpp is about 300 lines.
The whole DAA CL is only about 800 lines.
2. Much faster than AAA for complicated paths.
The speedup applies to GL backend (including ccpr)!
Here's the frame time of 'SampleApp --slide Chart' on macbook pro:
AAA-raster: 33ms
DAA-raster: 21ms
AAA-gl: 30ms
DAA-gl: 20ms
AAA-ccpr: 18ms
DAA-ccpr: 12ms
My linux desktop doesn't have SSE3 so the speedup is smaller
(~25% for Chart). I believe that DAA is so fast that I can enable
it for any paths (AAA is not enabled by default for complicated
paths because it is slow; hence our older supersampling scan
converter is used for stroking on Chart for AAA-xxx config.)
3. The SkCoverageDelta is suitable for threaded backend with
out-of-order concurrent scan conversion as commented in the source
code. Maybe we can also just send deltas to GPU.
4. Similar to most analytic path renderers, the quality is on the best
ground-truth level, unless there are intersections within a pixel.
The intersections look good to my eyes although theoretically that
could be arbitrary far from the ground truth (see my AAA slides).
5. For simple paths, such as circle, triangle, rrect, etc., DAA is
slower than AAA. But DAA is faster than our older supersampling
scan converter in most cases. As those simple paths usually don't
constitute the bottleneck of a picture (skp or svg), I strongly
recommend use DAA.
6. DAA also heavily favors blitMask so it may work quite well with
SkRasterPipeline and SkRasterPipelineBlitter.
Finally, please check https://skia-review.googlesource.com/c/22420/
which accelerate DAA by specializing blitCoverageDeltas for
SkARGB32_Blitter and SkARGB32_Black_Blitter. It brings a little(<5%)
speedup. But I couldn't figure out how to reduce the duplicate code
so I don't intend to land it.
Bug: skia:
Change-Id: I3b7ed6a727447922e645b1acb737a506e7c09a4c
Reviewed-on: https://skia-review.googlesource.com/19666
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
|