Commit Graph

2106 Commits

Author SHA1 Message Date
Jim Van Verth
2ba8ba26f9 Add GrD3DDescriptorHeap.
Adds a wrapper around ID3D12DescriptorHeap, which manages allocations
of descriptors from the heap.

Change-Id: Idc3bdb43640639114de5d0520c339f9e0173e26f
Bug: skia:9935
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286338
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2020-04-30 21:34:56 +00:00
Ben Wagner
666622968c Add Preview to list of possible MSVC versions.
Needed to test a Preview version of MSVC and adding it to the list here
makes it a bit easier and the list more complete.

Change-Id: I419636722303816f0cd961408229fcef0773e8e0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286496
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-04-30 19:54:33 +00:00
Michael Ludwig
f38b711222 Reland "Refactor geometry union capabilities out of GrStyledShape"
This reverts commit af312c9d40.

Reason for revert: improved performance, updated empty point cap behavior
to make chrome happy.

Because of the performance regression in the original CL, this is a bit
more to it than just updating cap behavior. Summary of changes for perf:
1. In asPath(), only call reset() if the type isn't a path or arc.
   Otherwise it was just a wasted realloc of an empty path ref.
2. Rewrote the GrShape::simplify() to not progress through every shape
   type in order, it just jumps to the appropriate type.
3. Have simplify() return whether or not the shape started out closed,
   so we don't have to call GrShape::closed(), which is costly when the
   shape is a path.
4. Expose the GrShape's type enum so GrStyledShape's key writing can use
   switches instead of a giant block of ifs (where path happened to be
   last)

The regressions showed up most heavily on desk_mapsvg and desk_chalkboard
SKPs on the Android skpbench marks. On my system, I was able to
reproduce a similar %-regression from ToT and the original CL on the
chalkboard (but not mapsvg).

Master ranged between 5.1 and 5.3ms, original CL ranged from 5.6-5.8
and after the changes listed above, I got it down to 5.3-5.5. It's not
ideal but I haven't been able to figure out anything more substantial
that it could be. At this point it may just be code layout and/or the
fact that it's now split into two types.


Original change's description:
> Revert "Refactor geometry union capabilities out of GrStyledShape"
>
> This reverts commit 2becdde074.
>
> Reason for revert: likely breaking cc unit test due to empty shape cap change.
>
> Original change's description:
> > Refactor geometry union capabilities out of GrStyledShape
> >
> > The geometry union part of GrStyledShape is now held in GrShape. For the
> > most part, GrShape is entirely style agnostic and focuses on storing
> > the various types of geometry, and destructing them gracefully. It also
> > provides a public API that unifies functionality across all shape types,
> > such as contains() and bounds().
> >
> > GrStyledShape now just owns a GrShape and a GrStyle, and handles the
> > additional simplification logic that relies on knowing the effects of
> > the style on the draw. This is where GrShape makes some allowances for
> > style. Its simplify() function accepts flags that enable/disable various
> > simplification optimizations. Currently these are designed around
> > what is needed to respect path effects and stroking behaviors in
> > GrStyledShape. The main other user of GrShape (the new clip stack) will
> > always provide all flags since it treats every shape as if it were
> > simply filled.
> >
> > Several other related refactorings were taken at the same time:
> > 1. The implementations for asNestedRects, asRRect, etc. were moved out
> >    of the header and into the cpp file for GrStyledShape.
> > 2. GrRenderTargetContext relies on GrStyledShape for its stroke rect
> >    fallbacks.
> > 3. GrShape can hold points, lines, and rects explicitly. This let me
> >    simplify the stroke reasoning.
> >
> > Change-Id: I9fe75613fee51c30b4049b2b5a422daf80a1a86e
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284803
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> > Reviewed-by: Chris Dalton <csmartdalton@google.com>
>
> TBR=bsalomon@google.com,csmartdalton@google.com,michaelludwig@google.com
>
> Change-Id: I2af5782e072e0ccb4a87f903bb88cbe335b9613f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286039
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

Change-Id: I8c614573582084f2e9ee0d73f93812e0a7c13983
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286396
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2020-04-30 19:36:43 +00:00
Mike Klein
5cf6b31fc8 Revert "retry absl"
This reverts commit 1d256d66ec.

Reason for revert: Build-Debian10-Clang-arm64-Debug-Android_ASAN can't find <cxxabi.h>.

Original change's description:
> retry absl
> 
> This time around, cut the absl deps down to just what's
> needed to compile, link, and run AbseilTest.cpp.
> 
> Add basic absl::btree_map test.
> 
> Bug: skia:10165
> Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-arm-Debug-Chromebook_GLES;skia/skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All-TSAN
> Change-Id: I53d632a04cba8dadd484b2c4d0ceefb314676486
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286070
> Reviewed-by: John Stiles <johnstiles@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,johnstiles@google.com

Change-Id: I2465ed155f7311c6ca35259ea1bf1b610020a66d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10165
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-arm-Debug-Chromebook_GLES;skia/skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All-TSAN
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286477
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-30 16:11:14 +00:00
Mike Klein
1d256d66ec retry absl
This time around, cut the absl deps down to just what's
needed to compile, link, and run AbseilTest.cpp.

Add basic absl::btree_map test.

Bug: skia:10165
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-arm-Debug-Chromebook_GLES;skia/skia.primary:Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All-TSAN
Change-Id: I53d632a04cba8dadd484b2c4d0ceefb314676486
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286070
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-30 16:01:41 +00:00
Mike Klein
dc976a96ea update skstd
- Lots of skstd::foo is now std::foo since C++14.
- Get rid of SK_WHEN(cond,T); std::enable_if_t<cond,T> is pithy enough.
- Move SkBitmaskEnum.h contents into sknonstd.

Change-Id: Ie5dc459405b1ff55e5b3ac57e70df7edd7cf38c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286315
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-30 15:05:43 +00:00
Mike Klein
77083c7d74 Revert "replace SkSharedMutex"
This reverts commit cfdc07aa0e.

Reason for revert: nope, flutter windows bots don't have it.  we got caught.

Original change's description:
> replace SkSharedMutex
> 
> I am debugging an issue with SkSharedMutex and noticed
> how sparsely it is used.  That got me curious to see if
> we can replace it with a std::shared_mutex (from C++17).
> 
> Bug: skia:10177
> Change-Id: I1ce4d2a5897af198d6ae5fb850548ff917a58f50
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285691
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,bungeman@google.com,herb@google.com

Change-Id: Iab4e55d749e386233ff0e2ba2c1cd10d5e6f1615
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10177
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286124
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-29 18:50:39 +00:00
Brian Salomon
702c5a3f42 Start on GM to directly test SkGpuBlurUtils
Bug: skia:10188

Change-Id: I29a8efe448532fecc2f7424622cd33afeee3287b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285876
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2020-04-29 16:50:56 +00:00
Mike Klein
cfdc07aa0e replace SkSharedMutex
I am debugging an issue with SkSharedMutex and noticed
how sparsely it is used.  That got me curious to see if
we can replace it with a std::shared_mutex (from C++17).

Bug: skia:10177
Change-Id: I1ce4d2a5897af198d6ae5fb850548ff917a58f50
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285691
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-29 14:15:42 +00:00
Michael Ludwig
af312c9d40 Revert "Refactor geometry union capabilities out of GrStyledShape"
This reverts commit 2becdde074.

Reason for revert: likely breaking cc unit test due to empty shape cap change.

Original change's description:
> Refactor geometry union capabilities out of GrStyledShape
> 
> The geometry union part of GrStyledShape is now held in GrShape. For the
> most part, GrShape is entirely style agnostic and focuses on storing
> the various types of geometry, and destructing them gracefully. It also
> provides a public API that unifies functionality across all shape types,
> such as contains() and bounds().
> 
> GrStyledShape now just owns a GrShape and a GrStyle, and handles the
> additional simplification logic that relies on knowing the effects of
> the style on the draw. This is where GrShape makes some allowances for
> style. Its simplify() function accepts flags that enable/disable various
> simplification optimizations. Currently these are designed around
> what is needed to respect path effects and stroking behaviors in
> GrStyledShape. The main other user of GrShape (the new clip stack) will
> always provide all flags since it treats every shape as if it were
> simply filled.
> 
> Several other related refactorings were taken at the same time:
> 1. The implementations for asNestedRects, asRRect, etc. were moved out
>    of the header and into the cpp file for GrStyledShape.
> 2. GrRenderTargetContext relies on GrStyledShape for its stroke rect
>    fallbacks.
> 3. GrShape can hold points, lines, and rects explicitly. This let me
>    simplify the stroke reasoning.
> 
> Change-Id: I9fe75613fee51c30b4049b2b5a422daf80a1a86e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284803
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Chris Dalton <csmartdalton@google.com>

TBR=bsalomon@google.com,csmartdalton@google.com,michaelludwig@google.com

Change-Id: I2af5782e072e0ccb4a87f903bb88cbe335b9613f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286039
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2020-04-29 13:32:34 +00:00
Michael Ludwig
2becdde074 Refactor geometry union capabilities out of GrStyledShape
The geometry union part of GrStyledShape is now held in GrShape. For the
most part, GrShape is entirely style agnostic and focuses on storing
the various types of geometry, and destructing them gracefully. It also
provides a public API that unifies functionality across all shape types,
such as contains() and bounds().

GrStyledShape now just owns a GrShape and a GrStyle, and handles the
additional simplification logic that relies on knowing the effects of
the style on the draw. This is where GrShape makes some allowances for
style. Its simplify() function accepts flags that enable/disable various
simplification optimizations. Currently these are designed around
what is needed to respect path effects and stroking behaviors in
GrStyledShape. The main other user of GrShape (the new clip stack) will
always provide all flags since it treats every shape as if it were
simply filled.

Several other related refactorings were taken at the same time:
1. The implementations for asNestedRects, asRRect, etc. were moved out
   of the header and into the cpp file for GrStyledShape.
2. GrRenderTargetContext relies on GrStyledShape for its stroke rect
   fallbacks.
3. GrShape can hold points, lines, and rects explicitly. This let me
   simplify the stroke reasoning.

Change-Id: I9fe75613fee51c30b4049b2b5a422daf80a1a86e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284803
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
2020-04-28 19:17:08 +00:00
Chris Dalton
f5132a05c8 Reland "Optimize GrTessellatePathOp's code to emit inner triangles"
This is a reland of 0f9ebd100e

Original change's description:
> Optimize GrTessellatePathOp's code to emit inner triangles
>
> Previously we used a naive algorithm to generate "middle-out" topologies
> for inner polygons, including copying all endpoints to a new array.
>
> This CL adds a "GrMiddleOutPolygonTriangulator" class that
> accomplishes the same thing in 1/5th the time using a small O(log N)
> stack.
>
> Change-Id: I3a7059e5d133a730b7084a17d8fbaaa3aaa81336
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285531
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>

TBR=ethannicholas@google.com

Change-Id: I8402e5455e14aef9c5e92ee21100fcd7ace222ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285740
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-04-28 06:09:59 +00:00
Ethan Nicholas
5f56cb1d3b Revert "Optimize GrTessellatePathOp's code to emit inner triangles"
This reverts commit 0f9ebd100e.

Reason for revert: breaking a couple of bots (e.g. https://chromium-swarm.appspot.com/task?id=4bd6ccc785fa3110)

Original change's description:
> Optimize GrTessellatePathOp's code to emit inner triangles
> 
> Previously we used a naive algorithm to generate "middle-out" topologies
> for inner polygons, including copying all endpoints to a new array.
> 
> This CL adds a "GrMiddleOutPolygonTriangulator" class that
> accomplishes the same thing in 1/5th the time using a small O(log N)
> stack.
> 
> Change-Id: I3a7059e5d133a730b7084a17d8fbaaa3aaa81336
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285531
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>

TBR=csmartdalton@google.com,michaelludwig@google.com

Change-Id: I8ebca7078f2b9c12246447759efa9ce0cbb7e46b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285719
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2020-04-27 23:38:10 +00:00
Chris Dalton
0f9ebd100e Optimize GrTessellatePathOp's code to emit inner triangles
Previously we used a naive algorithm to generate "middle-out" topologies
for inner polygons, including copying all endpoints to a new array.

This CL adds a "GrMiddleOutPolygonTriangulator" class that
accomplishes the same thing in 1/5th the time using a small O(log N)
stack.

Change-Id: I3a7059e5d133a730b7084a17d8fbaaa3aaa81336
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285531
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2020-04-27 20:33:09 +00:00
Mike Klein
5763b37ffb Revert "Reland "Add Abseil to third_party.""
This reverts commit 78debd6f6d.

Reason for revert: unexpectedly, Test-Mac10.13-Clang-MacBookPro11.5-CPU-AVX2-x86_64-Release-All-TSAN

Original change's description:
> Reland "Add Abseil to third_party."
>
> This is a reland of 816226e822
>
> Original change's description:
> > Add Abseil to third_party.
> >
> > At present, this is a proof-of-concept which only supports a small
> > subset of absl modules:
> > - Base
> > - Hash
> > - Numeric
> > - String
> >
> > This is only used by one unit test, which builds a string and then
> > hashes it.
> >
> > Bug: skia:10165
> > Bug: b/154848688
> >
> > Change-Id: I016250bf700b522c7a6bc78cf1844abff2260c35
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284805
> > Reviewed-by: Derek Sollenberger <djsollen@google.com>
> > Commit-Queue: John Stiles <johnstiles@google.com>
> > Auto-Submit: John Stiles <johnstiles@google.com>
>
> Bug: skia:10165, b/154848688
> Change-Id: I618bb4411445fe5b45a91741934ca888a09adf05
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285537
> Commit-Queue: John Stiles <johnstiles@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

TBR=djsollen@google.com,mtklein@google.com,johnstiles@google.com

Change-Id: I434da738bcc7fa76b46d0fa0fcbdd58c85b70fe7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10165, skia:10177, b/154848688
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285685
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
2020-04-27 18:46:29 +00:00
Greg Daniel
b16beb94a3 Reland "Make compiling the amd vulkan memory allocator optional."
This reverts commit 6a5a91e164.

Reason for revert: chrome gn updated, so this should roll fine now

Original change's description:
> Revert "Make compiling the amd vulkan memory allocator optional."
> 
> This reverts commit 23da19863e.
> 
> Reason for revert: break chrome roll, need to land chrome change first
> 
> Original change's description:
> > Make compiling the amd vulkan memory allocator optional.
> > 
> > Change-Id: I79b9f78b52f215076a371cbd0ff057d61dd855f0
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285380
> > Reviewed-by: Brian Osman <brianosman@google.com>
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> 
> TBR=egdaniel@google.com,brianosman@google.com,penghuang@chromium.org
> 
> Change-Id: Ifc17a07f5cdfcf7b38272e5c44e5b894019cf44a
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285538
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,brianosman@google.com,penghuang@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I4767039236137d3eaece2e16abef57278ce199ed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285662
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-04-27 15:51:44 +00:00
John Stiles
78debd6f6d Reland "Add Abseil to third_party."
This is a reland of 816226e822

Original change's description:
> Add Abseil to third_party.
>
> At present, this is a proof-of-concept which only supports a small
> subset of absl modules:
> - Base
> - Hash
> - Numeric
> - String
>
> This is only used by one unit test, which builds a string and then
> hashes it.
>
> Bug: skia:10165
> Bug: b/154848688
>
> Change-Id: I016250bf700b522c7a6bc78cf1844abff2260c35
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284805
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Commit-Queue: John Stiles <johnstiles@google.com>
> Auto-Submit: John Stiles <johnstiles@google.com>

Bug: skia:10165, b/154848688
Change-Id: I618bb4411445fe5b45a91741934ca888a09adf05
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285537
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-04-27 06:07:43 +00:00
Greg Daniel
6a5a91e164 Revert "Make compiling the amd vulkan memory allocator optional."
This reverts commit 23da19863e.

Reason for revert: break chrome roll, need to land chrome change first

Original change's description:
> Make compiling the amd vulkan memory allocator optional.
> 
> Change-Id: I79b9f78b52f215076a371cbd0ff057d61dd855f0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285380
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,brianosman@google.com,penghuang@chromium.org

Change-Id: Ifc17a07f5cdfcf7b38272e5c44e5b894019cf44a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285538
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-04-25 01:59:12 +00:00
Herb Derby
438775b19e Reland "fix crbug 1073670"
This is a reland of 553deb66e4

Original change's description:
> fix crbug 1073670
>
> When drawing a path with effects, the deviceMatrix must not be modified.
>
> * added GM for regression checking
>
> Bug: chromium:1073670
>
> Change-Id: Id75d6f00aa50d891ec807f10be72c0068ec80356
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285387
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

Bug: chromium:1073670
Change-Id: I518497997f09e37d13fc05499b68135ebd4e0a96
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285497
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2020-04-24 20:52:21 +00:00
Mike Klein
6d54e84dc5 Revert "Add Abseil to third_party."
This reverts commit 816226e822.

Reason for revert: 

https://chromium-swarm.appspot.com/task?id=4bc69ffc0a889110

/mnt/pd0/s/w/ir/clang_linux/bin/clang++ -rdynamic -Wl,-rpath,\$ORIGIN --target=armv7a-linux-gnueabihf --sysroot=/mnt/pd0/s/w/ir/armhf_sysroot -static-libstdc++ -static-libgcc -B/mnt/pd0/s/w/ir/armhf_sysroot/bin -B/mnt/pd0/s/w/ir/armhf_sysroot/gcc-cross -L/mnt/pd0/s/w/ir/armhf_sysroot/gcc-cross -L/mnt/pd0/s/w/ir/armhf_sysroot/lib -L/mnt/pd0/s/w/ir/chromebook_arm_gles/lib -Wl,--start-group @./dm.rsp  -Wl,--end-group -lpthread -ldl -lGLESv2 -lEGL -o ./dm
libabsl.a(libabsl.numbers.o): In function `absl::string_view::substr(unsigned int, unsigned int) const':
/mnt/pd0/s/w/ir/skia/third_party/externals/abseil-cpp/absl/strings/string_view.h:387: undefined reference to `absl::base_internal::ThrowStdOutOfRange(char const*)'
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)


Original change's description:
> Add Abseil to third_party.
> 
> At present, this is a proof-of-concept which only supports a small
> subset of absl modules:
> - Base
> - Hash
> - Numeric
> - String
> 
> This is only used by one unit test, which builds a string and then
> hashes it.
> 
> Bug: skia:10165
> Bug: b/154848688
> 
> Change-Id: I016250bf700b522c7a6bc78cf1844abff2260c35
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284805
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Commit-Queue: John Stiles <johnstiles@google.com>
> Auto-Submit: John Stiles <johnstiles@google.com>

TBR=djsollen@google.com,johnstiles@google.com

Change-Id: If9936f1beaf6ac9c85718ce445e823bf2f57a6fa
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10165, b/154848688
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285491
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-24 20:15:42 +00:00
Joe Gregorio
ade3f4c3ea Revert "fix crbug 1073670"
This reverts commit 553deb66e4.

Reason for revert: Breaking ChromeBook builds, such as Build-Debian9-Clang-x86_64-Release-Chromebook_GLES_Docker


Original change's description:
> fix crbug 1073670
> 
> When drawing a path with effects, the deviceMatrix must not be modified.
> 
> * added GM for regression checking
> 
> Bug: chromium:1073670
> 
> Change-Id: Id75d6f00aa50d891ec807f10be72c0068ec80356
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285387
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

TBR=herb@google.com,robertphillips@google.com,brianosman@google.com

Change-Id: Ibe2243e435fd5b49b49bb55d909d7eb9cf4ca255
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1073670
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285496
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
2020-04-24 19:56:03 +00:00
John Stiles
816226e822 Add Abseil to third_party.
At present, this is a proof-of-concept which only supports a small
subset of absl modules:
- Base
- Hash
- Numeric
- String

This is only used by one unit test, which builds a string and then
hashes it.

Bug: skia:10165
Bug: b/154848688

Change-Id: I016250bf700b522c7a6bc78cf1844abff2260c35
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284805
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2020-04-24 19:53:21 +00:00
Greg Daniel
d59a91df4d Rename GrSpirv* files to GrSPIRV.
Change-Id: I4a4fc5dbdf6bba78e6ba5d60478b3e109b685a67
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285098
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-04-24 19:24:10 +00:00
Herb Derby
553deb66e4 fix crbug 1073670
When drawing a path with effects, the deviceMatrix must not be modified.

* added GM for regression checking

Bug: chromium:1073670

Change-Id: Id75d6f00aa50d891ec807f10be72c0068ec80356
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285387
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-04-24 18:59:20 +00:00
Leon Scroggins III
63cfb3638c Reland "Move SkFrontBufferedStream into Android-only dir"
This reverts commit b25f30348b.

Bug: skia:10154

Original message:
> Add client_utils for code that is specifically for a single client.
> Move SkFrontBufferedStream into its android/ subdir. Rename the class
> to android::skia::FrontBufferedStream. Temporarily leave in
> SkFrontBufferedStream until Android updates to the new API.
>
> Add a new optional target for client_utils/android. It is built in dev
> builds for testing, and when building for the Android framework.

Deliberately do not include client_utils in Google3, since the whole
point is to only include where necessary.

Change-Id: I48938c56aabb98e1ed820240d43ffcd0fdce7956
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285104
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2020-04-24 17:36:30 +00:00
Greg Daniel
23da19863e Make compiling the amd vulkan memory allocator optional.
Change-Id: I79b9f78b52f215076a371cbd0ff057d61dd855f0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285380
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-04-24 17:21:30 +00:00
Mike Klein
51d35ed972 add SKX opts
Add an SkOpts slice for SKX, a.k.a. Skylake Xeon, a.k.a. skylake-avx512,
a.k.a. AVX-512 F+CD+BW+DQ+VL.

I've tried to do this a little differently than usual to see if we can
avoid special compiler flags, instead enabling the features we want from
inside the SkOpts_skx.cpp source file.  This is the approach we take in
skcms and that seems to be working fine.

Where we previously checked for AVX-512F before, now check more
carefully for the full SKX feature set, and rename things "SKX" to match.

To start, build raster pipeline stages and SkVM interpreter.

With interesting workarounds for,
   - clang-cl immintrin.h
   - build error with clamp() in ix_and_ptr() I don't understand

Change-Id: Ifb10da2c6b472567310d42b03893100577164df5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285343
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-04-24 15:35:50 +00:00
Chris Dalton
7f0b8973e9 Add CPU benchmarks for individual methods on GrTessellatePathOp
Change-Id: Ica5d3229fc602d17cf568a25742612c94b87ae9e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285215
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2020-04-24 15:23:41 +00:00
Joe Gregorio
b25f30348b Revert "Move SkFrontBufferedStream into Android-only dir"
This reverts commit 513720f28e.

Reason for revert: Breaking the google3 roll:
   https://sponge.corp.google.com/invocation?tab=Build+Log&id=5f96970b-8171-4c2f-abf3-006e11b8fff9

Original change's description:
> Move SkFrontBufferedStream into Android-only dir
> 
> Bug: skia:10154
> 
> Add client_utils for code that is specifically for a single client.
> Move SkFrontBufferedStream into its android/ subdir. Rename the class
> to android::skia::FrontBufferedStream. Temporarily leave in
> SkFrontBufferedStream until Android updates to the new API.
> 
> Add a new optional target for client_utils/android. It is built in dev
> builds for testing, and when building for the Android framework.
> 
> Change-Id: Ie0f425051ea370aab7861d61150a3d6007214a93
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284721
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Reviewed-by: Derek Sollenberger <djsollen@google.com>

TBR=djsollen@google.com,scroggo@google.com,reed@google.com

Change-Id: Iaeedaed184cc35f507d5441631ae709e1c5cb1ac
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10154
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285100
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
2020-04-23 18:23:30 +00:00
Leon Scroggins III
513720f28e Move SkFrontBufferedStream into Android-only dir
Bug: skia:10154

Add client_utils for code that is specifically for a single client.
Move SkFrontBufferedStream into its android/ subdir. Rename the class
to android::skia::FrontBufferedStream. Temporarily leave in
SkFrontBufferedStream until Android updates to the new API.

Add a new optional target for client_utils/android. It is built in dev
builds for testing, and when building for the Android framework.

Change-Id: Ie0f425051ea370aab7861d61150a3d6007214a93
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284721
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-04-23 17:02:18 +00:00
Chris Dalton
42915c2cee Remove tessellate/GrPathParser
Moves this logic to happen directly ion GrTessellatePathOp instead.

Change-Id: Ia972b8c686bdf8efb8e414fbddc856401fe44920
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284999
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2020-04-23 16:05:29 +00:00
Greg Daniel
c31edc0b38 Add GrD3DRootSignature class and support.
This is the last thing needed for creating the pipeline state so this
change also starts creating the pipeline state and fixes errors involving
it.

Change-Id: Ifd1b63016d692d98cfa2a931957e857a5c53bec5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284527
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2020-04-23 15:34:58 +00:00
Greg Daniel
5fc5c8128c Add GrD3DPipelineStateBuilder class.
This allows us to create the binary shaders for d3d. We generate spirv
from sksl, then use spirv-cross to turn it into hlsl. Then that gets
compiled into binary to be used in the pipeline.

Adds hooks GrD3DOpsRenderPass to start creating the pipeline.

Change-Id: Ie731dd945cdd9a00cebd78c1371a3d9784e4e1a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284526
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-04-23 15:01:58 +00:00
Brian Salomon
2eb7b57d14 Remove unused GrTextureDomain
Bug: skia:10139

Change-Id: I20cd95fcf5f11832366c32e48ed4d442c82b0719
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284082
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2020-04-21 18:51:24 +00:00
Greg Daniel
690a450cdc Create a shared spirv uniform and varying handling class.
This moves the dawn spirv implementation of these classes into a shared
class that will be used by d3d backend. We can look into further extending
the class to see if it can be shared with vulkan as well.

Change-Id: I138d403dd55053f534d0c97a55c0fa5d2c5171f0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284525
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2020-04-21 15:25:14 +00:00
Mike Reed
6a59affb2a flutter is ready for m44
Change-Id: I4531aa35cb4282a88bece97690bc55ea81d3a531
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284322
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-04-18 16:07:00 +00:00
John Stiles
0ebc69c9ef Fix modulo-by-zero crash during SPIR-V conversion.
Array-stride calculation did not check for zero-sized objects before
performing a modulo. This would lead to undefined behavior (crash)
while attempting to build the AST.

Change-Id: I84b4662978955d49a3ca28f6bb577d15c87cccb6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284354
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2020-04-18 13:41:40 +00:00
Michael Ludwig
2686d69bf0 Reland "Rename GrShape to GrStyledShape"
This reverts commit 73b86c1ade.

Reason for revert: wasn't the problem, relanding

Original change's description:
> Revert "Rename GrShape to GrStyledShape"
> 
> This reverts commit f3f08af010.
> 
> Reason for revert: maybe this is breaking the ios perf bot; it is the first CL that caused the bot to fail, but I can't really say why this would break them.
> 
> Original change's description:
> > Rename GrShape to GrStyledShape
> > 
> > Change-Id: Ic457e634b4b95356f5615cff3fce1ca7d7677c26
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284036
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> 
> TBR=bsalomon@google.com,robertphillips@google.com,michaelludwig@google.com
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Change-Id: I2e5adbfc820811fbbde9cb57af28f86a7ba40bd9
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284231
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

TBR=bsalomon@google.com,robertphillips@google.com,michaelludwig@google.com

Change-Id: Ifdd52f8bacb5d66a7bf58efd328675c4c443ac8a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284376
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2020-04-17 20:24:53 +00:00
Michael Ludwig
73b86c1ade Revert "Rename GrShape to GrStyledShape"
This reverts commit f3f08af010.

Reason for revert: maybe this is breaking the ios perf bot; it is the first CL that caused the bot to fail, but I can't really say why this would break them.

Original change's description:
> Rename GrShape to GrStyledShape
> 
> Change-Id: Ic457e634b4b95356f5615cff3fce1ca7d7677c26
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284036
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

TBR=bsalomon@google.com,robertphillips@google.com,michaelludwig@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I2e5adbfc820811fbbde9cb57af28f86a7ba40bd9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284231
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2020-04-17 19:38:34 +00:00
Stephen White
b353c9bdd3 Reland "Refactor GL and Metal FinishCallback into a helper object."
This is a reland of b641ddbba0

Original change's description:
> Refactor GL and Metal FinishCallback into a helper object.
> 
> Change-Id: I52ede0363016459976e453ef71cafbcc6775f22e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283496
> Commit-Queue: Stephen White <senorblanco@chromium.org>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

Change-Id: Ia77c05c0358b6ccab1e8c0f0c06212786f415cb1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284042
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2020-04-16 19:20:06 +00:00
Michael Ludwig
f3f08af010 Rename GrShape to GrStyledShape
Change-Id: Ic457e634b4b95356f5615cff3fce1ca7d7677c26
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284036
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2020-04-16 18:05:51 +00:00
Mike Reed
56aa710832 separate m44 tests
Change-Id: I33db5286538cd5721ad0cf6095eef82c42ff1e35
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283916
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-04-16 10:53:37 +00:00
Mike Reed
938b4532b4 Revert "transition matrix44 to opt-in only"
This reverts commit 0f1f87d7bd.

Reason for revert: google3 and flutter also need the guard

Original change's description:
> transition matrix44 to opt-in only
> 
> In service of https://chromium-review.googlesource.com/c/chromium/src/+/2067862/
> 
> Change-Id: Ib6fd24c16c295fb4211dc295268af1e6f7f3fc45
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283661
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Mike Reed <reed@google.com>

TBR=fmalita@chromium.org,reed@google.com

Change-Id: I7c8cf2bc67aa267d442d0ca663e8378aa8feb409
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283896
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-04-16 10:01:29 +00:00
Michael Ludwig
b15cc56858 Revert "Refactor GL and Metal FinishCallback into a helper object."
This reverts commit b641ddbba0.

Reason for revert: likely breaking command buffer bots

Original change's description:
> Refactor GL and Metal FinishCallback into a helper object.
> 
> Change-Id: I52ede0363016459976e453ef71cafbcc6775f22e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283496
> Commit-Queue: Stephen White <senorblanco@chromium.org>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,senorblanco@chromium.org

Change-Id: Ifc766e065b6a19cb263c4a3d94f4bbe88c4bce16
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283782
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2020-04-15 21:54:58 +00:00
Stephen White
b641ddbba0 Refactor GL and Metal FinishCallback into a helper object.
Change-Id: I52ede0363016459976e453ef71cafbcc6775f22e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283496
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2020-04-15 19:59:48 +00:00
Mike Reed
0f1f87d7bd transition matrix44 to opt-in only
In service of https://chromium-review.googlesource.com/c/chromium/src/+/2067862/

Change-Id: Ib6fd24c16c295fb4211dc295268af1e6f7f3fc45
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283661
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2020-04-15 18:34:26 +00:00
Ethan Nicholas
5843012837 Add sample(child, matrix) to SkSL.
This allows fragment processors to sample their children with their
local coordinate system transformed by a matrix.

Change-Id: Ifa848bbd85b939bbc5751fec5cf8f89ee904bf39
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282590
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2020-04-14 16:07:34 +00:00
Mike Reed
eb1d5a2e23 Move markerstack into its own object:
- owned by canvas
- pointed to by devices

Change-Id: Ia5abc60434cd34810ceea09ecab63c6b25eb972e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/283436
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2020-04-14 13:43:34 +00:00
Jim Van Verth
4f51f47d14 Add GrD3DStencilAttachment
Bug: skia:9935
Change-Id: I249b819d3cc1387aecde200907657ffcd67d1833
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/282591
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2020-04-13 17:20:48 +00:00
Stephen White
f3d5d44ec9 Dawn: staging manager rewrite.
Using many small staging buffers is quite costly for performance, for
example when there are many small texture uploads (such as MotionMark's
"canvas bouncing clipped rects" test).

Instead, the new manager uses buffers of 32K minimum, and returns
suballocations of those.

For now, allocation is simply iterates through the list of staging
buffers and returns the first one with enough remaining space.
This is O(N) in the number of staging buffers, which should be
ok since there are fewer of them. (If it becomes a hot path, we
can optimize it later.)

This also subsumes the UBO-specific staging buffer, since that one
did much the same thing but did not reuse staging buffers.

Change-Id: I4fddee8bb0fc602c49fe552acc327a640bf6917b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/279921
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2020-04-08 16:11:48 +00:00