Currently matrix convolution falls back to CPU execution for large kernels, due to the argument limit for fragment shaders.
Now for large kernels, we store them in a texture and sample them in a shader to sidestep the limit.
Change-Id: Icc069a701ea8e9cd0adf75f4bfd149fd22e31afd
Bug: skia:8449
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263495
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Adlai Holler <adlai@google.com>
This can be done more simply with SkPathRef::Editor::writablePoints.
Change-Id: Icef31bf3a6cc2c8c4ef6da36167c574c73a0d944
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287497
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Change-Id: I0a41c640f1eb423eb3ce53a36055226463991fcd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287004
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
These are flaky on the Quadro bots, leading to errors in the cache
configs (that expect pixel-perfect replays).
Bug: skia:8534
Change-Id: I1ac06f5abbb13955951be9c9a8aad18fe1f00aa6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287382
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: Ic9d9200a7c1346d0e6bd70029331f9213db5e374
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287380
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
While disposing DWriteFontTypeface the base class must be disposed, but
if the resource releases fail before that then they currently return
instead of continuing. This means the DWriteFontTypeface is never
deleted.
Change-Id: I842a74a2ea5141210fae0cbd038f62266156c1c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286816
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
... and a comment to try and prevent any more of these.
Change-Id: I58ddd0523710c66600020e9d4e2b93614a5f9d01
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287379
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: Iab9d4288a54d0743dfbf94f078b206e5df3b5f87
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287378
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Includes all of the vectorized comparisons, as well as the selecting
and lerping variants of mix. The previous implementations of lerping mix
were available based on the compiler front-end, this moves them to the
byte code generator, so they're available in runtime effects (not just
generic interpreter programs).
Change-Id: I88d10c8a18a7e63e49acac8181b687e2b40ad66b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287008
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: Ifccabb59f7cd9faa4bcbfc89785e9ee739a0e076
Bug: skia:9935
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286042
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Bug: oss-fuzz:20029
Change-Id: I8fcd6ab6a76dd003f90be6751bb9abaf21b2a0b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286937
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Some new intrinsics were recently implemented in ByteCodeGenerator.
Those are visible to runtime effects via sksl_gpu.inc, but not to
generic interpreter prorgrams - added them to sksl_interp.inc to fix
that. (atan, fract).
length() is similar, but it still had a pure SkSL implementation. Remove
that, so that generic interpreter programs get the builtin version.
All of the others were missing half-precision overloads of existing
intrinsics. These don't matter much, but (I think) prevent confusing
type errors when calling these intrinsics with half-precision arguments
and getting float-precision results.
Change-Id: I87270efc2f0520d1ac2f18eee890147b5b1c93d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287376
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>
Bug: oss-fuzz:21976
Change-Id: I635b9092bc4a30bb6a23ddcf1430a3ec06b9d598
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287377
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
The previous settings used the ddl-via - which doesn't use threads as effectively.
Change-Id: I82a0632d99c772421afc645f53bb749420275460
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285812
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
df31624eaf..040e4f6fcf
git log df31624eaf3d..040e4f6fcf54 --date=short --first-parent --format='%ad %ae %s'
2020-05-01 tobine@google.com Vulkan: Minor command buffer refactor
2020-05-01 ianelliott@google.com Vulkan: Improve viewport and scissor for pre-rotation
2020-05-01 jmadill@chromium.org Work around strange git cl format issue.
2020-05-01 geofflang@google.com Handle 3D texture entire-mip initialization for FBO attachments
2020-05-01 cnorthrop@google.com Capture/Replay: Refactor default uniform handling for arrays
2020-05-01 tobine@google.com Vulkan: Migrate trace events and occlusion queries
2020-05-01 ynovikov@chromium.org doc: fix link to pre-commit try waterfall
2020-05-01 jmadill@chromium.org Capture/Replay: Use BindAttribLocation to force MEC compat.
2020-05-01 jmadill@chromium.org Validation: Fix some function types.
2020-05-01 jmadill@chromium.org Revert "Add type for attribute locations."
2020-05-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/glslang/src 39281fb710c3..2c53baedbb64 (2 commits)
2020-05-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/spirv-tools/src 49ca250b44c6..2e1d208ed9de (3 commits)
2020-05-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/vulkan-validation-layers/src 70eeffc7ca3d..b179a50e9c9c (8 commits)
2020-05-01 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/SwiftShader 98d2cab108ce..694e21400ee5 (5 commits)
Created with:
gclient setdep -r third_party/externals/angle2@040e4f6fcf54
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC bsalomon@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Bug: None
Tbr: bsalomon@google.com
Change-Id: Idb9e07df50cd93543c2c61ffa1b715e36aeecde5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287198
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
In XPS if a glyph is out of range, ignore it. Also resolve the default
font in the new way, removing the last user of SkTypefacePriv.
In PDF handle fonts with zero glyphs correctly.
Rewrite SkBitSet to keep track of its size, move properly, and make it
more obvious when certain checks are actually made instead of relying on
undefined behavior.
Add a test in a GM to ensure we don't draw anything when a glyph is
out of range on all backends.
Fix the DirectWrite SkScalerContext to pass this new test for
consistency.
Bug: chromium:1071311
Change-Id: I2583970bf1425f59d0d64e3dd7d28109991f9ea9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286776
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
The default Task Driver logging gets in the way on the console, so I've
sent it to /dev/null for local runs. We control the horizontal and the
vertical.
Instead, print out each isolated failure and how to reproduce it:
out/fm -i resources -b cpu -s ducky_yuv_blend #failed:
Resource "resources/images/ducky.jpg" not found.
../tools/fm/fm.cpp:573: fatal error: "Image(s) failed to load."
Signal 5:
_sigtramp (+0x1d)
sk_abort_no_print() (+0x5)
std::__1::__function::__func<...
_GLOBAL__sub_I_fm.cpp (+0x0)
main (+0x12d5)
out/fm -i resources -b cpu --skvm true -s ducky_yuv_blend #failed:
Resource "resources/images/ducky.jpg" not found.
../tools/fm/fm.cpp:573: fatal error: "Image(s) failed to load."
Signal 5:
_sigtramp (+0x1d)
sk_abort_no_print() (+0x5)
std::__1::__function::__func<...
_GLOBAL__sub_I_fm.cpp (+0x0)
main (+0x12d5)
2 runs of out/fm failed after retries.
exit status 1
Bot runs still look ok,
https://task-driver.skia.org/td/TEaSLB6jtmRq5XDBUIwS?ifNotFound=https%3A%2F%2Fchromium-swarm.appspot.com%2Ftask%3Fid%3D4bea6af25506c010
Change-Id: I56adacdaeed5545785a3096a4e495eb524db442f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287017
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This was meant as a "stop" verb for the old iterators. With the new
iterator, it simply leads to more SkUNREACHABLEs and SkASSERTs.
Change-Id: I9edd0cefaf4aff782f753560aebd528ed7f4ec04
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/287043
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Rename apply() to unary(), then add binary().
Fix unary to calculate N=base-inst+1.
Convert to simpler `auto&& fn` mode by renaming
approx_atan(y,x) to approx_atan2. Now we can pass
functions, lambdas, non-lambda functors, whatever.
Change-Id: I17a6aa137f224edc0accd0509c5023a30980fe39
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286900
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
9574174380..df31624eaf
git log 957417438089..df31624eaf3d --date=short --first-parent --format='%ad %ae %s'
2020-05-01 cclao@google.com Vulkan: Reduce the onBufferRead/onBufferWrite API verbosity a bit
2020-05-01 tobine@google.com Vulkan: Fix dbg util label bug
2020-05-01 jmadill@chromium.org Tweaks to presubmit script.
2020-05-01 jiajia.qin@intel.com GL: Implement EGL_EXT_image_dma_buf_import
2020-05-01 jiajia.qin@intel.com Enable GL_BGRA_EXT for es backend
2020-04-30 jmadill@chromium.org Capture/Replay: Fix tool after parameter change.
2020-04-30 timvp@google.com Detect non-ascii characters during presubmit
2020-04-30 jmadill@chromium.org Add type for attribute locations.
2020-04-30 cnorthrop@google.com Capture/Replay: Disable default uniform updates for arrays
2020-04-30 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/SwiftShader 941293d512fe..98d2cab108ce (2 commits)
2020-04-30 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/glslang/src f03cb290ac10..39281fb710c3 (1 commits)
2020-04-30 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/vulkan-validation-layers/src f0f3d8b75af9..70eeffc7ca3d (10 commits)
2020-04-30 cclao@google.com Vulkan: use fine grain stage for buffer barriers
Created with:
gclient setdep -r third_party/externals/angle2@df31624eaf3d
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC ethannicholas@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Bug: None
Tbr: ethannicholas@google.com
Change-Id: I3139eab741ec61d5527ced1750c97bb8b17847cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286859
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
This was a potential issue before but DDLs greatly exacerbate
the situation. If the same path is rasterized multiple times
w/ a slightly different offset or w/ slightly different floating
point math, the actual size of the mask can change slightly.
This causes problems when the mask is cached since, if a prior
differently sized version is found in the cache, the fulfillment
code will assert.
Since our DDL test harness renders using tiles, this problem
arises more often in that configuration especially when
CCPR is unavailable.
Change-Id: Ie344b031cb49fedd9527f66b17ff610afa4a2f12
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286902
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Will use this in Chrome to support LCDText in saveLayer/restore with
opacity.
This partly reverts https://skia-review.googlesource.com/c/skia/+/181841.
Bug: 1076019
Change-Id: Id870fb1dcc95c9b319797e936725b4447a97d1d5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285956
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Auto-Submit: Xianzhu Wang <wangxianzhu@chromium.org>
This desc will allow us to add a pipeline state cache for d3d.
Change-Id: I0cdf4166e7253df1c184f81a883878e707b77f36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286956
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
This reverts commit 4e7ee6e0af.
Bug: chromium: 1073106
Change-Id: Ifb02fef97560d2eaf3070b6d0daf130c8bff11a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285105
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Metal layer was using linear filter which was introducing blur.
Changed to nearest filter.
Bug: skia:10172
Change-Id: Ia69d6c9a56f9a2f69b5e98fd9941be52ec01b7d3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286616
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: I352cc4db7fc1353992b4c127d8e2104a46d88ded
Bug: skia:9935
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286936
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Moving some code down from paragraph to line.
Change-Id: I9408951fe8d05a5956e4bbe4b50c9ef3f3dc1f9c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285838
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
For 3 and 4 channel float uniforms, this states that the data supplied
is unpremul sRGB, and transforms that data to the destination color
space (still unpremul) automatically.
Change-Id: I1b420d2fd10640963fa8e6736af3747cfc6e7d5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286656
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
- add length() as a special intrinsic
- style refactoring I wrote to help debug the CL
- impl dup2,3,4 in program_fn
- (better) fix dup2,3,4 in byte code interpreter
Change-Id: I7cd94a4bc03efc6af2053e9e6ae18b4da94363ed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286896
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Utility class for getting named access to uniforms and children of an
SkRuntimeEffect (also functions as an example of using the
SkRuntimeEffect public API).
Moved several internal SkRuntimeEffect functions to private, and added
findInput/findChild helpers.
Change-Id: I8c2e7745ea81670a49b7ab2f51ce44a8d8169278
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286516
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
IMPORTANT LESSON: when bringing in node (and possibly other
executables) via CIPD, add them to the path in gen_tasks_logic
so the parent executable (the task driver itself) has the right
PATH set. Otherwise, the subprocesses it spawns might grab the
wrong version because of how golang handles environments of
subprocesses.
This is starting as a fork of Skottie WASM. I hope to have a more unified
system for creating and running benchmarks.
Overall overview:
gen_tasks_logic.go creates a task in task.json that compiles
CanvasKit and the task drivers and then executes our task
(i.e. perf_puppeteer.go)
perf_puppeteer runs a node program (perf-with-puppeteer.js)
that uses puppeteer to execute benchmarking code on an
html page (canvaskit-skottie-frames-load.html).
I needed to update the node package so npm could be updated from
3.x to 6.14.4 so it knew about `npm ci`. This may not have been
entirely necessary, given the problems of executing the correct
npm (see important lesson above), but it hasn't broken things
further, so more up-to-date is probably a good thing.
Suggested Review Order:
- canvaskit-skottie-frames-load.html (note it is similar to
skottie-wasm-perf.html, but it waits for a button click
to start animating and records times from the main JS thread
itself)
- perf-with-puppeteer.js (similar to skottie-wasm-perf.js, but
has some things made optional [e.g. tracing])
- perf_puppeteer_test.go (shows the inputs/outputs of various steps)
- perf_puppeteer.go
- Everything else.
Change-Id: I380e81b825f36682c257664d488267edaf36369e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285783
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
We only call CreateInfo() from internalSaveLayer(), and always pass
kNever_TileUsage. Move the related pixel geo override to
internalSaveLayer, and remove CreateInfo::AdjustPixelGeometry().
(also swap the args order to "prove" we're covering all callers)
NOTREECHECKS=true
Change-Id: Ie11c3f501d262f070cf97797cb549d3afa87d679
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/286876
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>