Change-Id: If3010945532e1d6b16e590cf8c4afd4578ae770f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285392
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
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>
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>
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>
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>
I can only think that maybe Clang used to generate vrcp14ps,
we added those numbers, and now they went back to vrcpps and
the old precision? Or maybe we wrote the old numbers against
zmm registers and vrcp14ps, but for ymm we get vrcpps?
Change-Id: I46e8b3ec226902c3337069212228f1709f0cf0b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285449
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
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>
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>
Use the stack size from the first call to jit()
to minimize stack frame for second call to jit().
Change-Id: Icec42760fe13d90f8e3ced270ad94c754e58b385
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285446
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Bug: skia:9935
Change-Id: Iae72935c9835a02996b493ad32a79db7c1237902
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284932
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Implement a VideoAsset wrapper, used for Skottie video layers. This
requires a non-testlib build target for SkVideoDecoder, hence a
dedicated BUILD.gn.
Add software conversion fallback for SkVideoDecoder, using libswscale.
Change-Id: I80dd555a1241081e50ee4834b64ad3518948a0f1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285378
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
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>
Only use a stack slot when spilled being careful to track hoised
slot data between vector and scalar code generation.
TODO:
Come up with a strategy to change the constant on the initial
subtrack from SP to reduce size.
Change-Id: Icf38ad33c7026dac065d51547db827b1516f2504
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285107
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
We don't have a way to erase with a non-sRGB color.
Update the P3 gm to test this, removing the SkBitmap erase case where
there's no option for even an SkColor4f, let alone non-sRGB. I'm not
sure it's really important to have one when we've got this on pixmap.
Updated release notes.
Change-Id: Ie98270d3f83e041593b4c6b2da8e325b36d4ff18
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285341
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
CAMetalLayer is available on iOS versions above 8.0. However, when using the
simulator, this version is bumped up to 13.0. This is done via a separate header
altogether and there is no provision to specify simulator versions in
API_AVAILABLE. SK_API_AVAILABLE_CA_METAL_LAYER must be used to signal correct
API availability in all versions of iOS including simulators.
Change-Id: I628e3062fd9531869400dc8a29d42f96afb11d82
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284988
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Auto-Submit: Chinmay Garde <chinmaygarde@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Splat instructions no longer do anything at runtime;
instead we make sure at compile time the constant will be available.
Then when we want to find a given value we look for registers, splats,
and stack values, creating an x86 Operand or loading it into a Reg as
needed. Constants are already in-memory, they're no-ops to spill.
This lets us simplify and delete lots of code, and we now only call
optimize() once for all backends, so it's a big deal for overhead.
Change-Id: I78a54feaf8b18be26efe73dffda903a7a9e31daa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285153
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
We're getting this wrong today, and likely also these several
other instructions. We need to account for the immediate byte
that follows the ip-relative offset!
Add imm_byte_after_operand() to take care of this.
Change-Id: If0f4359b0a8e9d769bfde0d8456726e82f798123
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285237
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Bodymovin exports video layers similar to image layers, but assigns a
dedicated type id.
Since Skottie's ImageAsset interface already supports multi-frame
images, we can reuse the same mechanism for video.
Also, since we're adding sparse layer type handlers, we can now
fill all known Lottie layer enums and simplify the handling of camera
layers.
Change-Id: Ide6c6b3566d48f90f36f0143eaea7c62bbdedb2c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285106
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Besides better matching Viz's behavior this also reduces a lot of choppiness in the composition RenderTask DAG.
In the previous approach DDL draws and compositing draws would be interleaved resulting in a lot of render target swaps.
This necessitated some reorganization bc I wanted to reuse PromiseImageCallbackContext to manage the tiles' promiseImages.
Change-Id: I513bf060a69ff2bfe0e7b82ae72f149dfede632e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285056
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
913f4f4213..21c5af3151
git log 913f4f421381..21c5af3151fb --date=short --first-parent --format='%ad %ae %s'
2020-04-23 tobine@google.com Vulkan:Migrate events and queries to secondary Cmd Buffer
2020-04-23 b.schade@samsung.com Vulkan: Disable EXT_texture_sRGB_R8
2020-04-23 tobine@google.com Vulkan: Manual Validation Layer Roll
2020-04-23 j.vigil@samsung.com EGL: Implement EGL_ANDROID_native_fence_sync on vulkan
2020-04-23 jmadill@chromium.org Vulkan: Mask out implementation dirty bit in sync.
2020-04-23 jmadill@chromium.org Vulkan: Track allocated sampler counts.
2020-04-23 jmadill@chromium.org Vulkan: Add a sampler cache.
2020-04-23 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/vulkan-tools/src 84463fe2902f..7774c964d3df (1 commits)
2020-04-23 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/SwiftShader ceb6258ae101..5ab1f36a38aa (12 commits)
2020-04-23 angle-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/glslang/src c9b28b9f3388..7d65f09b8311 (2 commits)
2020-04-23 timvp@google.com Fix program interface queries for arrays and built-ins
Created with:
gclient setdep -r third_party/externals/angle2@21c5af3151fb
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 jcgregorio@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: jcgregorio@google.com
Change-Id: I98dc8524df03e311477b05290c9f18d23588037b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285246
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
For now, getting the 4x4 matrix is still opt-in, and the vast majority
of code will continue to use the 3x3 matrix. This does fix marked
matrices when the CTM includes any Z.
Most of these changes ensure that APIs used to save and restore the CTM
operate on the 4x4, so that we don't accidentally discard Z.
Change-Id: Id6a690fc84c7fa1a0d686ec6d1cbeef6532c696e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284930
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
In the scaler code, hoisted stack positions worked by chance. Add asserts,
and properly account for hoisted stack positions.
Change-Id: I8953d9f34dc110c7eadfd8855a02786aa6789043
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285101
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
The localToWorld matrix was still offset, because is was being
tagged while the transform still had things offset from the origin.
I've moved where it's marked to fix that bug, renamed the ID,
and done some other minor cleanup to hopefully clarify how things
fit together.
Change-Id: Idccc419882a2e89dee14128a6096ad7566d57f99
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285103
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Locally on my imac this seems to make GMs produce more deterministic
results.
Pipeline timeouts still occur flakily happen in:
complexclip2_path_aa,
complexclip2_rrect_aa, and
complexclip2_rect_aa.
However, further increasing the pipeline timeout just causes those to
all eventually fail with "Compiler encountered an internal error".
Hoping this reduces the flakes on the bots as well.
Change-Id: If1951036934a1e4985aaca1c6f610ef44b69f30a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285102
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
This reverts commit 832c931d5b.
Reason for revert: To confirm whether it was blocking, and update
Chrome if necessary
Bug: skia:8663
Original change's description:
> Revert "Make SkBitmap/SkPixmap::erase* do so in sRGB"
>
> This reverts commit 6f44647e52.
>
> Reason for revert: checking to see if this is blocking the Chrome roll
>
> Original change's description:
> > Make SkBitmap/SkPixmap::erase* do so in sRGB
> >
> > We generally consider untagged colors to be sRGB, so this makes us more
> > consistent with other parts of the API.
> >
> > Add a test.
> >
> > Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
> > Change-Id: I5468c86ad92164797a65ffd9fbe471e01a97a2ca
> > Reviewed-on: https://skia-review.googlesource.com/c/179245
> > Commit-Queue: Leon Scroggins <scroggo@google.com>
> > Reviewed-by: Mike Reed <reed@google.com>
> > Reviewed-by: Mike Klein <mtklein@google.com>
> > Reviewed-by: Brian Osman <brianosman@google.com>
>
> TBR=djsollen@google.com,mtklein@google.com,scroggo@google.com,brianosman@google.com,reed@google.com
>
> Change-Id: Ia592adf2c790d294da1e32c1e83f9f34e81d79cc
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
> Reviewed-on: https://skia-review.googlesource.com/c/182083
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>
TBR=djsollen@google.com,mtklein@google.com,robertphillips@google.com,scroggo@google.com,brianosman@google.com,reed@google.com
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel;luci.chromium.try:android-kitkat-arm-rel;luci.chromium.try:android-marshmallow-arm64-rel;luci.chromium.try:linux-chromeos-rel;luci.chromium.try:linux_chromium_asan_rel_ng;luci.chromium.try:win7_chromium_rel_ng;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:mac_chromium_rel_ng;luci.chromium.try:linux_chromium_tsan_rel_ng;luci.chromium.try:linux_chromium_rel_ng;
Change-Id: I226fd5b6f298fad648b1d05c8a8e806eac874a46
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/182142
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Change-Id: Ie153902c1bf5cbbc724691ad91688a0b572174d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284877
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
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>
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>
This appears to generate at least as fast code as spilling the register
that dies latest, and has two additional advantages:
- it's _very_ predictable even when reading assembly
- it's a little quicker to score, not requiring another table lookup
I'm still open to smart spill logic, but if we're going to have a simple
baseline for comparison, I suggest we might use this one.
Change-Id: Ic4775dbf0095b60cfa4b91e33ede352813d34934
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285097
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: I7d9d456b2a281ac7060042026eef44ffe2a635f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284808
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Converts the "path" vertex buffer to a triangle buffer, and stores
wedges in the cubic buffer instead. This is the more natural location
to store them, and will allow us to add indirect draw support more
cleanly.
Change-Id: I3c3dafce1952dcdb4a93e60c3491be7395195117
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284987
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
The GPU thread has privileged access to the GPU so its work can't be easily borrowed.
Change-Id: I1eae4c86ff1c36cc1248f74fc48d76b1c243f0b2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284764
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
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>
Now it returns the actual curve count instead of an "isLinear" bool.
Change-Id: Iaf2d5c6d96a59972bc7481c17580f2ac5e4b0a25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284979
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Remove comparison function from SamplerDescriptor, to avoid new
validation error.
Also remove other values which are at default.
Change-Id: I99631187f02d6b26748a34cf07c0bc672e2f0607
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285014
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Clarity refactors: rename alias_reg() to try_alias() and add in_reg().
Let dst() hint what register to try_alias(), and use this anywhere
aliasing is safe and we have an argument that's either already in a
register or is guaranteed to be pulled back into one, e.g r(x).
Cases like vsqrtps(dst(), any(x)) are somewhat interesting, in that if x
is in a register, it is a good thing to alias, but if it's on the stack,
it's better to just vsqrtps directly into the new register.
Change-Id: I05ecb78f660e9e4ea0df44f03e5de03b85a49cc7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/285086
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
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>
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>
It occurs to me that now that we have some values living on the stack,
we might actually want to change our codegen based on what's in
registers or what's not.
E.g.
a->vaddps(dst(), r(x), any(y))
is great if x is in a register, but it'd have been better as
a->vaddps(dst(), r(y), any(x))
if x is on the stack. I've made every symmetric op make this choice.
Change-Id: I1c65940d8e1a53d9dba44dd3a5f3e443517c8e20
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284983
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
This adds alias_reg(Val v), aliasing dst() to r(v) if dies_here(v).
We can use this to execute most FMAs without that first vmovups.
Still thinking about the more general case of aliasing to reduce
register usage and not to cut instructions. I've seen zero perf
impact from this change which _does_ actually remove instructions,
so I'm suspicious whether we'll find value doing more, and this
is a little complicated by having some arguments on the stack.
I guess you're using the metric of counting total spills? That
might be worth minimizing even if I'm not seeing a wall clock diff.
Latest patch set restores all the ARM aliasing cases too.
Change-Id: Icd5241b58f36403a447e575f5edf88c5aca63e60
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284982
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
In certain corner cases the RenderTargetContext can end up injecting a
clear op into the op stream, so we need to handle that.
Bug: skia:10163
Change-Id: I57722d335bbc59bb9f0a767f774a4620dfde3f39
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284878
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Chinmay Garde <chinmaygarde@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>