The only SkAtomic<T> left are the ones overriding the default memory
order in SkPath. I think I'd like to try switching them to std::atomic
too, but in another CL.
Trim unused APIs in SkAtomics.h.
Change-Id: Ia1c283355902ccb8fcdad70cdf27bb577e8ca407
Reviewed-on: https://skia-review.googlesource.com/146529
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This was just acting like a pair of SkPaint, GrColor. But,
had an additional pointer to a color space. I changed
everything to just pass the pair around.
BUG=chromium:864564
Change-Id: I9858556b8bca0d5359d4d6e9784d63ff8c4f467b
Reviewed-on: https://skia-review.googlesource.com/146381
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Current impl can underflow int due to unchecked arithmetic.
Add a Parse<size_t> specialization and convert call sites which use
inline arithmetic. Underflowing unsigned types should be well defined
and caught in later tests.
Bug: oss-fuzz:9798
Change-Id: Iaebe8aad4009e2511fe1d8733d336f5f119bb384
Reviewed-on: https://skia-review.googlesource.com/146648
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Change-Id: Ibfead1121f22277297e16196b37e6e86dc2d2166
Reviewed-on: https://skia-review.googlesource.com/146649
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This sanitizer checks for overaligned reads and writes,
or put another way, use of underaligned pointers.
This usually happens when you cast, e.g. char* to int*
without checking that the char* is 4-byte aligned. Each
of the changes under src/ fixes something just like that.
The unusual setup for tools/xsan.blacklist is there to
force a rebuild whenever tools/xsan.blacklist changes.
I spent a good few minutes debugging rebuilds not happening
this morning, perhaps from some strange ccache interaction.
Align SkTextBlobs as void* (today they're just 4-byte) so the
SkTextBlob::RunRecords we put after them in SkTextBlobBuilder
buffers are properly aligned (for the SkTypeface* inside).
There's no obvious error in void SkRRect::computeType(),
but one bot seems to have seen some sort of issue with
SK_AT_SCOPE_EXIT(SkASSERT(this->isValid()));
I can't reproduce it locally, so I'm just going to unroll it.
Change-Id: I904d94f65f695e1b626b684c32216a4930b72b0c
Reviewed-on: https://skia-review.googlesource.com/146104
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Change-Id: Icb6d56f8e88396b5d2c82d61afd7fd633b39e00c
Reviewed-on: https://skia-review.googlesource.com/146528
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Use the deferred paint override mechanism, similar to opacity.
Change-Id: I78fa7f5d73ef333480ec72b0cb663819b1de2404
Reviewed-on: https://skia-review.googlesource.com/146527
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
This adds onResize to sk_app::Window::Layer and uses it to resize
samples in Viewer.
Change-Id: Ia5ec5cf6dc74fbdf712291b9ba8707b076cb625d
Reviewed-on: https://skia-review.googlesource.com/146642
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Change-Id: I3742cbf3b636f10bb2006e0c86390661deb9f9b8
Reviewed-on: https://skia-review.googlesource.com/146164
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
c43cdad258..4684842015
git log c43cdad25851..468484201532 --date=short --no-merges --format='%ad %ae %s'
2018-08-09 jmadill@chromium.org Vulkan: Fix perftests null driver.
Created with:
gclient setdep -r third_party/externals/angle2@468484201532
The AutoRoll server is located here: https://angle-skia-roll.skia.org
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.
CQ_INCLUDE_TRYBOTS=skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia.primary:Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE
TBR=djsollen@google.com
Change-Id: I6e8935e869677db178add0256953b58163b725f3
Reviewed-on: https://skia-review.googlesource.com/146660
Reviewed-by: <angle-skia-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: <angle-skia-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Because of https://skia-review.googlesource.com/c/skia/+/146165 and
https://skia-review.googlesource.com/c/skia/+/146100 we have a way
to turn PathOps tests into JSON, which has input paths (as Cmd arrays),
combination verb and expected output.
In this CL, we make tests from the JSON, compare them to the expected
output and, optionally, create SVGs to visualize the difference if any.
API changes (nothing breaking on release builds):
- Exposes SkRect as a JS Object. No need to call delete() on this.
- expose path.getBounds() and path.computeTightBounds()
- Remove SkRegion exposure (debug/test only), which was going to be
used for this purpose, but the approach in this CL works fine.
- Add loadCmdsTypedArray(cmd) helper function to JS [see helper.js].
This was previously known as `floatTypedArrayFrom2D` in the
old shell.html, and is now exposed to avoid clients having to
implement this boilerplate by themselves.
- Add set/getFillType - mostly for testing the difference between
a Winding and an EvenOdd path.
Bug: skia:8216
Change-Id: I2cd25ce2e1e7f285c79c596678678e62135963f0
Reviewed-on: https://skia-review.googlesource.com/146524
Reviewed-by: Cary Clark <caryclark@google.com>
Bug: skia:
Change-Id: Ie88c16ddb2b072d8bdd7efc3acabc1d9ad89012f
Reviewed-on: https://skia-review.googlesource.com/146526
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
What is left of the SkView system is used only by samples or viewer.
As a result, move it out of the Skia source tree and re-organize so it
is a bit easier to understand and use more shared code.
Move samplecode/ClockFaceView.cpp to samplecode/SampleTextEffects.cpp,
sice that's what's actually in it.
Move SkAnimTimer.h to tools/timer, since it's actually shared between gm
and samples.
Change-Id: I55dafd94c64e4f930ddbd19168e0f812af86c455
Reviewed-on: https://skia-review.googlesource.com/146161
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Bug: skia:
Change-Id: I023dfbabf691b498363fb227b1d4580dca51bc89
Reviewed-on: https://skia-review.googlesource.com/146525
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Move SkTextBlobBuilder::allocRunText* to private: for the time
being, to reduce the documented interface footprint.
No code is deleted; the functions may be restored when a
client is ready to call them.
Also, add SkTextBlob::MakeFromString to complement
SkTextBlob::MakeFromText.
R=halcanary@google.com,fmalita@google.com
TBR=reed@google.com
Bug: skia:6818
Change-Id: If09d4da4ce38b680d73f25d187e3d06eeb0ec652
Reviewed-on: https://skia-review.googlesource.com/146521
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
- plumb a RenderContext RenderNode::render() argument to track pending
opacity
- defer opacity application until we can determine whether a layer is
required (group with multiple children) or the opacity can be pushed
onto the draw paint (for single/atomic draws)
Bug: skia:
Change-Id: I962ba08bad780395d5d738307bde986e9efa502b
Reviewed-on: https://skia-review.googlesource.com/146445
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Change uses of RunPaint and Paint to uses of SkPaint and a GrColor.
Change-Id: I44d4c41a53e570f316e10dee26754c21d9593de0
Reviewed-on: https://skia-review.googlesource.com/145962
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: Ie4e1f9141847705afd1a11e57bc41a9b2019517a
Reviewed-on: https://skia-review.googlesource.com/146520
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Portions of this API will be updated again to support decode-to-dst, but
I want to clean up the old API first. I left a bunch of TODO breadcrumbs
for that work.
Change-Id: I25a29ccc14aa568e5ea84747d74244874afab9d9
Reviewed-on: https://skia-review.googlesource.com/146380
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This adds a few JS tests (see *.spec.test) and runs them
using Karma and a Docker image containing Karma, node, and
Chrome (currently at 68).
We only add a Debug Test here because the Release version
has some test helpers (e.g. Region) compiled out. If those
end up not mattering for tests, we can add in a Release version.
Bug: skia:8216
Change-Id: Ica6ab3a4f21688cfa175a90d42c2254d38e8fcf1
Reviewed-on: https://skia-review.googlesource.com/145723
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
More pointless hoop-jumping
Change-Id: I0123e0a1e27140a82ffe08ad88e0d115c060436d
Reviewed-on: https://skia-review.googlesource.com/146449
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
This started with a search for gammaCloseToSRGB and turned into me
removing a bunch of really crazy bitmap code here. Like DM, just use
SkPngEncoder to encode PNGs. With that change, we don't need the custom
raster pipeline step, and we can remove that (along with several other
unused functions) from picture_utils. (The one remaining function should
just move to tool_utils, but I'll save that for another rainy day).
In getPixel, we can skip ALL of the processing work, and also only read
the one pixel we need. That makes break-on-change feel much faster from
my anecdotal testing.
Change-Id: I3d18f1e7a15dd12ac4661da1b724e9d8e1cdee96
Reviewed-on: https://skia-review.googlesource.com/146442
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Spotted the VisualBench hooks the other day, then found some more dead
code when I went to remove them.
Change-Id: Ia07f0556faf33cc69e3ec590f7a8f47f2c1f298a
Reviewed-on: https://skia-review.googlesource.com/146360
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
TSAN is failing because
multiple threads are incrementing the
same global
TBR=mtklein@google.com
Bug: skia:
Change-Id: I9c3bc6bb4aa7cbe7ced5b3080790d3c4ad1ff798
Reviewed-on: https://skia-review.googlesource.com/146446
Commit-Queue: Cary Clark <caryclark@skia.org>
Reviewed-by: Cary Clark <caryclark@skia.org>
Auto-Submit: Cary Clark <caryclark@skia.org>
c86c8b0cec..c43cdad258
git log c86c8b0cecf0..c43cdad25851 --date=short --no-merges --format='%ad %ae %s'
2018-08-08 jmadill@chromium.org StateCache: Make external API easier to understand.
2018-08-08 jmadill@chromium.org Validate transform feedback conflicts on zero draw.
2018-08-08 jmadill@chromium.org Refactor ValidateDrawBase.
2018-08-08 jmadill@chromium.org Add a perf test for draw calls with texture changes.
2018-08-08 jmadill@chromium.org Fix vertex array element limit condition.
2018-08-08 jmadill@chromium.org Don't use ErrorOrResult in VertexBuffer.h.
Created with:
gclient setdep -r third_party/externals/angle2@c43cdad25851
The AutoRoll server is located here: https://angle-skia-roll.skia.org
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.
CQ_INCLUDE_TRYBOTS=skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia.primary:Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE
TBR=djsollen@google.com
Change-Id: I7a5ff1b943af311072f4198423fc117142e5fa8d
Reviewed-on: https://skia-review.googlesource.com/146502
Reviewed-by: <angle-skia-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: <angle-skia-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Move the GPU glyph drawing code into the glyph run drawing translation
unit. Inline the per glyph/path functions. This results in about 15%
speedup.
There was a compile error where a static function was used
in a template. This caused some compilers to freak.
Change-Id: I9619e538875edd989f129450dc9fc12ba7be9560
Reviewed-on: https://skia-review.googlesource.com/146340
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
This wasn't doing anything any longer. Is there more to be deleted?
Change-Id: Ib317a3760b874503a2deac3385625ea2fbc48ef7
Reviewed-on: https://skia-review.googlesource.com/146384
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
* reserve SkPath storage to avoid incremental allocations
* refactor eval() to avoid copying data when interpolation is not
triggered
Change-Id: I467affbbfd652e8fa2a486acab7d6c7b9165d49f
Reviewed-on: https://skia-review.googlesource.com/146166
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
also fixed the fact that we were actually creating managed buffers at times.
Bug: skia:
Change-Id: I7ffe12b5decc8bceee30d671e1ab3cc30f7fad99
Reviewed-on: https://skia-review.googlesource.com/146170
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Dump as hex instead of SVG to more accurately
capture pathops tests.
Use SkBits2Float to reconstruct SkScalar data.
Exclude tests with conics since, for the moment,
pathkit maps conics to quads.
R=kjlubick@google.com
Bug: skia:
Change-Id: Iba2836bde8f737f42c8da31cc26e83ce55de924a
Reviewed-on: https://skia-review.googlesource.com/146165
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Auto-Submit: Cary Clark <caryclark@skia.org>
c93eeaab15..c86c8b0cec
git log c93eeaab1526..c86c8b0cecf0 --date=short --no-merges --format='%ad %ae %s'
2018-08-08 jmadill@chromium.org D3D9: Use angle::Result error pattern.
Created with:
gclient setdep -r third_party/externals/angle2@c86c8b0cecf0
The AutoRoll server is located here: https://angle-skia-roll.skia.org
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.
CQ_INCLUDE_TRYBOTS=skia.primary:Build-Debian9-Clang-x86_64-Release-ANGLE;skia.primary:Perf-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Perf-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE;skia.primary:Test-Win10-Clang-ShuttleC-GPU-GTX960-x86_64-Debug-All-ANGLE
TBR=djsollen@google.com
Change-Id: Ice348b63cc6cb0b1f09d94abab38ccde101e6c6b
Reviewed-on: https://skia-review.googlesource.com/146260
Reviewed-by: <angle-skia-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: <angle-skia-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Also updates SkConvertQuadToCubic to do the same.
Bug: skia:
Change-Id: Id1da5182b0696492ca9c8e99243cb86fbdbfcd2f
Reviewed-on: https://skia-review.googlesource.com/146212
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This reverts commit c7ef517875.
Reason for revert: GCC clang differences
Original change's description:
> Performance: Move GPU code to GlyphRun and inline - v2
>
> Move the GPU glyph drawing code into the glyph run drawing translation
> unit. Inline the per glyph/path functions. This results in about 15%
> speedup.i
>
> There was a compile error where a static function was used
> in a template. This caused some compilers to freak.
>
> Change-Id: I4dbcea5d4a7ef97f38c95772076736d6ec92c535
> Reviewed-on: https://skia-review.googlesource.com/146169
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
TBR=mtklein@google.com,herb@google.com
Change-Id: I785759e86ffaad76937c9aaa60b19abbbce226c2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/146241
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Uses GrPipeline::DynamicStateArrays to allow per-mesh GP textures when
drawing an array of GrMeshes.
Uses this along with op-chaining to make drawing multiple TextureOps
with different textures faster.
Change-Id: Iec4da1b72a13d0e0c94c8a8568fe4221c539dfcf
Reviewed-on: https://skia-review.googlesource.com/145960
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Move the GPU glyph drawing code into the glyph run drawing translation
unit. Inline the per glyph/path functions. This results in about 15%
speedup.i
There was a compile error where a static function was used
in a template. This caused some compilers to freak.
Change-Id: I4dbcea5d4a7ef97f38c95772076736d6ec92c535
Reviewed-on: https://skia-review.googlesource.com/146169
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I8953036d61b4ea4989c8722f536db9cd520a1e24
Reviewed-on: https://skia-review.googlesource.com/146167
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This allows GrOp subclasses to chain themselves together in linked
lists. The GrOp head instance is able to iterate over the ops in
the chain. The head op of the list draws the contents of all the
chained ops. GrRenderTargetOpList is updated to use this chaining
and to skip non-head ops when preparing/executing ops.
With this change no op uses the new chaining facility. That will come
in subsequent changes.
Change-Id: I7fe99252ad7e23a9ea80c9ed1fc4d060700da2e0
Reviewed-on: https://skia-review.googlesource.com/145899
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>