This is enough to let the next runtimecolorfilter filter draw.
Mostly this just apes the cond/mask stacks from SkSLByteCode.cpp.
The point of most interest is that we can skip forward kBranchIfAllFalse
if we make our side effects (stores) conditional.
My reasoning here is that a forward branch-if-all-false instruction must
always be a performance optimization only; it's always got to be safe to
not take the branch, as one of your lanes could very well not be false.
Change-Id: I90dda02489b0de4ee91477a4eb7fe14aeb5c555e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327276
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
There should be no functional changes.
I also address some forgotten changes to canvaskit-wasm-tests.ts
from CLs last week.
Bug: skia:10717
Change-Id: If02f60813af0aa42acd637639e40f4d6d0b38bd7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327157
Reviewed-by: Nathaniel Nifong <nifong@google.com>
Fixes crashes when running vkbert config where we tear down a Vulkan
GrDirectContext before deleting the backing store of a SkSurface
created via MakeBackendRenderTargetSurface.
Bug: skia:10843
Change-Id: I99ea2266ba14325d3aaac5ee59aa712688fb9329
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327196
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Move the SVG rendering code to modules/svg, and componentize.
Also split into include/src/utils.
As external clients still reference the old header locations,
introduce temporary forwarding headers to facilitate the migration.
Change-Id: Ib289dbdcd80c16a01c47805e7242f2e08bebc165
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326948
Reviewed-by: Tyler Denniston <tdenniston@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
bd0d3f9c4f..a2ef814426
2020-10-14 lexa.knyazev@gmail.com Vulkan: fix undefined right shift in GetMask
2020-10-14 timvp@google.com Revert "Vulkan: Disable UNASSIGNED-CoreValidation-DevLimit-MissingQueryCount"
2020-10-14 kbr@chromium.org Populate LevelInfoGL's format/internalFormat in eglBindTexImage.
2020-10-14 timvp@google.com Vulkan: Support dumping VMA stats string
2020-10-14 jmadill@chromium.org Skip slow GLES 1 Win/Intel/Vulkan test.
2020-10-14 b.schade@samsung.com Add GL_EXT_copy_image extension entry points
2020-10-14 bsheedy@chromium.org Disable more ARM-based Mac tests
2020-10-14 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SPIRV-Tools from c2553a315f5c to 5c64374dd6cb (5 revisions)
2020-10-14 timvp@google.com Revert "Vulkan: Disable vkCreateDevice-physical-device-features-not-retrieved"
2020-10-14 courtneygo@google.com Vulkan: refactor error info
2020-10-14 jmadill@chromium.org Skip slow EGL Vulkan Linux tests.
2020-10-14 jmadill@chromium.org Fail 3 tests on Android GLES N5X.
2020-10-14 ianelliott@google.com Reimplement WindowSurfaceVk::checkForOutOfDateSwapchain
2020-10-14 syoussefi@chromium.org Vulkan: loadOp=DONT_CARE + unused D/S => invalidate D/S
2020-10-14 jmadill@chromium.org Skip two more FBO max samples tests on Win/NV/GL.
2020-10-14 hckim.kim@samsung.com Vulkan: Support OES_texture_cube_map_array extension
2020-10-14 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Vulkan-ValidationLayers from 9d4b40ae645e to f121d1252b2a (1 revision)
2020-10-14 jonahr@google.com GLX: Workaround to disable GLX_OML_sync_control support.
2020-10-14 ianelliott@google.com Reimplement WindowSurfaceVkAndroid::getCurrentWindowSize()
2020-10-14 jmadill@chromium.org Tests: Use script type in isolate map.
2020-10-14 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from a6b7134c40b1 to 20d60a8527d7 (447 revisions)
2020-10-14 syoussefi@chromium.org Vulkan: Fix vector size issue with clearWithCommand
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 robertphillips@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/+doc/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
Tbr: robertphillips@google.com
Test: Test: Manual verificationTest: Test: dEQP-GLES31.functional.fbo.color.texcubearray.*
Change-Id: I5581d3453a8ecaba9247d7a30f3bcb64242d8919
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327029
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Looks best to tackle the early return and if statements separately.
Change-Id: I4ad0d4c8e7707277d678e1219534d20e0e54ba1c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/327017
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
The semantics of `vector::reserve` and `SkTArray::reserve` were not the
same. SkTArray::reserve takes a delta over the current array size,
whereas vector takes a total array size. This could lead to subtle
errors with over- or under-reservation, hurting performance.
This CL renames `SkTArray::reserve` to `SkTArray::reserve_back` to give
the SkTArray behavior a distinct (hopefully easily understandable) name,
leaving its functionality as-is.
Change-Id: Icbd3114bb317fd5f307f393c02ae6fb6f83764e9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326956
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
For clarity, this renames skif::Mapping::Make to skif::Mapping::DecomposeCTM
to really emphasize when it should be used over just a constructor.
Renames SampleBackdropBounds to SampleFilterBounds since the operations and
coordinate spaces that it visualizes are the same for regular or backdrop
filtering (we just swap the notion of src and dst devices, really).
Technically, this is not quite true yet since regular filtering modifies the
DAG with a matrix transform right now, but that's going away soon (tm).
The "new" SampleFilterBounds example is updated to use the new bounds APIs
that use the coord-space safe types in the skif namespace. It also visualizes
a filter, and simplifies some of the bounds being drawn and reported to
only those most interesting.
The SampleImageFilterDAG has been updated to match the soon-to-be state
of how SkCanvas processes regular image filters for a saveLayer. All
implicit matrix-transform node code is removed. The bounds calculation
code is similarly updated to use the new 'skif' types and functions. To
simplify the visualization of each node, the 'isolated' versions of the
bounds were dropped.
Bug: skia:9282, skia:9283
Change-Id: If2ad2c302e5165ae009bba93cea52bf0566a543a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326718
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
When we shrink a path, we might relocate its underlying arrays.
Doing so would invalidate any outstanding Iterators. The caller must
handle this for its path object, but there may be copies elsewhere,
which have just ref'd the underlying arrays. To keep these copys'
iterators alive, we defensively "copy-on-write", so as to not relocate
their buffers.
Incidentally, update SkContourMeasureIter's constructor to clarify that
it is iterating through its copy of the path, and not the original.
Change-Id: I5c9331ab36ac8e156218532478f6d7105fd97cdc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326438
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
This adds a runtime color filter with about the same control flow
complexity as Android's tone mapping. As expected failing on 8888:
error: 11: return not allowed inside conditional or loop
Incidentally, is there no `const` in sksl? I made color and luma const
out of habit but got GL/Metal compilation errors (but not sksl ones as
far as I can tell).
Change-Id: Ic4370c068a27349a7f5ab64ecf5ddbb34e91d8f6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326909
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: Ibd26204033aa3f6a8ea13be23926b1541a41c621
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/324737
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
We will need to be a bit more flexible wrt making this key if the
triangulated path is to be stored in the thread-safe cache.
Bug: 1108408
Change-Id: I5aeae60fb8e542152cc75ea5244b324f05c4fb04
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326836
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Change-Id: I03bdef43c79bc3c997f9a9a6aa8fbb1a7194943a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326437
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
By storing the cached atlas proxies in GrCCDrawPathsOp. This is
important because GrCCPathCache may evict an entry that is being used
in current flush, causing the op to lose the proxy it intended to draw
from.
Co-authored with Chris Dalton <csmartdalton@google.com>
Bug: chromium:1102117
Change-Id: I2e4b9360a84732269b6ce98f4d8adfc7e7b9735c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326576
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This will allow local debug DDL dm runs to complete.
Change-Id: I47aa978c5e52fd1dcdba45c59318844bae871115
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326796
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Instead of looking at point/verb/weight counts, add an
SkPathRef::approximateBytesUsed() using their reserve counts.
This shows SkPathBuilder::snapshot() can return more memory-efficient
SkPaths than SkPathBuilder::detach(), at the cost of a copy.
Change-Id: I4e208c41643480d7682daba6ac674ffa63c74de2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326608
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
Now that we have skvx::map(), anyone can write this sort of
scalar-to-vector code. There are no vector instructions for these, so
they'll never going to be particularly interesting for SkVx to provide.
We did work out _approximate_ versions of each of these for SkVM, and
that's what we use to evaluate these programs there. So if this stuff
really matters we could port that logic back over to SkVx.h.
But in terms of pure refactoring, I think this is where we want to sit
until we decide to use those approximations. I don't really want to
invest much time in the SkSLByteCode interpreter any more.
Change-Id: I4e595dee5fd9e608905305e46b2aebcab986c561
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326277
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
df6b7298bb..bd0d3f9c4f
2020-10-14 syoussefi@chromium.org Vulkan: Regression test for content defined of AHB images
2020-10-14 syoussefi@chromium.org Vulkan: Don't break the render pass on scissored clears
2020-10-14 syoussefi@chromium.org Vulkan: Regression test for content defined of external images
2020-10-14 jmadill@chromium.org Test Runner: Accept GTEST shard environment vars.
2020-10-14 ianelliott@google.com Vulkan: Remove Arm from perFrameWindowSizeQuery
2020-10-14 jmadill@chromium.org trigger.py: Remove GTest shard env when running one shard.
2020-10-13 jmadill@chromium.org Suppress multisample "max samples" tests on Win/NV/GL.
2020-10-13 jmadill@chromium.org Test Runner: List tests explicitly without GTest.
2020-10-13 syoussefi@chromium.org Vulkan: Fix command reordering on release to external
2020-10-13 Kyle.Griffiths@imgtec.com Add PowerVR Vendor ID & Vulkan GL Line Emulation Exclusion
2020-10-13 bsheedy@chromium.org Update IsARM64
2020-10-13 jmadill@chromium.org Broaden Clear test failure to all OSX.
2020-10-13 jmadill@chromium.org Capture/Replay: Embed ANGLE version in replay.
2020-10-13 angle-autoroll@skia-public.iam.gserviceaccount.com Roll glslang from 2067d1a93e6e to f4f1d8a352ca (2 revisions)
2020-10-13 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from efbcef254191 to a6b7134c40b1 (408 revisions)
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 robertphillips@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/+doc/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
Tbr: robertphillips@google.com
Change-Id: I4b2829d5a55a7f35290be25a2fe71e2f6258003d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326662
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Cq-Include-Trybots: luci.chromium.try:linux_chromium_cfi_rel_ng
Bug: chromium:1137652, chromium:1137958
Change-Id: I8575b588f9a1ba89740b95382b2462338e34bec5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326478
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Instead of creating internal msaa VkImages for vulkan render targets we
now get a GrMSAAAttachment from the resource provider to use instead.
As of now only one GrVkRenderTarget can hold a ref to an msaa attachment
at a time.
Bug: skia:10830
Change-Id: I361a1687f10e047a5b61228f861326f2b1418f06
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/320272
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Cut & paste with some reorganization of includes & forward-decls.
Next up is GrContextPriv.
Change-Id: I72d2d95c62692e3b37608517b796c0041ffedea3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326157
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Adlai Holler <adlai@google.com>
This allows us to clamp the X and Y axis at the same time.
This is a partial reland of http://review.skia.org/318436.
Change-Id: I711076e434d10d4d83593922ec31f0a75a300f9f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/324126
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Was more of a demo than a test. Complicates coming refactor to move
SkImage creation for this test into LazyYUVImage.
Bug: skia:10632
Change-Id: I6e2303acdd38724417bb51d11aca29c100a6f3ed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326356
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This reverts commit 7563a48787.
Reason for revert: safe to reland once cc_unittest is suppressed: https://chromium-review.googlesource.com/c/chromium/src/+/2464093
Original change's description:
> Revert "SkDevice::drawSpecial accepts arbitrary matrix v2"
>
> This reverts commit 7c4aca04cc.
>
> Reason for revert: cc unit tests need to be rebased
>
> Original change's description:
> > SkDevice::drawSpecial accepts arbitrary matrix v2
> >
> > This opens up the door to render image filter results with an arbitrary
> > matrix, so we can skip the matrix filter DAG hack. It should also let
> > me simplify the handling of backdrop image filters and correctly apply
> > perspective to image filters.
> >
> > This is essentially the same as
> > https://skia-review.googlesource.com/c/skia/+/317862
> > but not parented to the CL that experimented with SkImagePaint.
> >
> > Some of the function declaration re-org that was done in its prior CL
> > has been directly integrated into this CL.
> >
> > Bug: skia:9545
> > Change-Id: Iad882bd306f3a4064fe60cfc0526226287ea7e29
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/323597
> > Commit-Queue: Mike Klein <mtklein@google.com>
> > Reviewed-by: Mike Klein <mtklein@google.com>
>
> TBR=mtklein@google.com,robertphillips@google.com,reed@google.com,michaelludwig@google.com
>
> Change-Id: I6a248fe9e02d71fa340ed3227e77fff097b7b08e
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:9545
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/324704
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
TBR=mtklein@google.com,robertphillips@google.com,reed@google.com,michaelludwig@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: skia:9545
Change-Id: I5784b3b49f9e3a32a52782fe683b8f85aaa6b88a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/325856
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This fixes up a handful of places which weren't caught in the initial
work (at http://review.skia.org/325861) because they haven't been
converted to the new IRNode structure yet.
Change-Id: I86b61fe3c601711b5802fe35218ca2e6378634da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326357
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This is a reland of b3c42efd25
with a few more signed/unsigned mismatches fixed up.
Original change's description:
> pack SkTArray
>
> Same idea as http://review.skia.org/325857; I just wanted to feel out
> the options myself. A couple key ideas:
>
> Prefer SkTo32() to separate range assertions and casts.
>
> Keep using int indices, counting to this->count() where
> fCount would have warned about signed/unsigned mismatch.
>
> I've kept new comments and assertions to minimum. In the end we won't
> change the max size of SkTArray, and I don't see much need to call out
> how much it hasn't changed. Reading back over the accumulated changes,
> I don't really see much that's newly error-prone.
>
> Change-Id: I86a8a161b9ae44f24fc25093741945b75fbfa770
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326106
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: John Stiles <johnstiles@google.com>
Change-Id: I04d928ecc185fb5c7b9d32f60e94df9f8d137898
Cq-Include-Trybots: luci.skia.skia.primary:Build-Win-MSVC-x86_64-Debug-Vulkan,Build-Win-MSVC-x86-Debug
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/326297
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Change-Id: I40ceb5cab0473c08c92fbb6aa9afad6173c0fb37
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/325624
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This will help us avoid allocations for arrays of statements.
Currently, this is a wash in Nanobench (~0% change). In the near
future, we expect to collapse the expression array and statement array
into a single hybrid array, and this helps bring us closer to that end
goal.
Change-Id: Id146907352799c41b568090ab65e454247b294c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/325625
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>