findProxyByUniqueKey merely checks if a proxy exists for a key while
findOrCreateProxyByUniqueKey checks if there is an existing texture
whose proxy was deleted and recreates a new proxy for it.
Change-Id: I352639d03769dbb9659819d52bc6927347b5a452
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/381222
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
These have been replaced by "CanvasPerf" jobs.
Bug: skia:11331
Change-Id: Id7d625eb8ade2d93754e4021171af0ce4a5224a1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/381219
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
These were used by Dawn at some point but are no longer needed since
they are only used by Dawn's tests that aren't discovered by Skia's GN
build.
Bug: dawn:706
Change-Id: Icb75856955c16f659203ebf20462db59f4165873
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/381236
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
This test crashes on the bots. Disabling until we can investigate.
Bug: skia:11152
Change-Id: I1cd8e63661a79520a698a2ba9f039dd932c577fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/352465
Reviewed-by: Greg Daniel <egdaniel@google.com>
This reverts commit 9ef3f2e3da.
Reason for revert: relanding with fix
Original change's description:
> Revert "Have GrVkRenderTarget only use GrVkAttachments and not derive from GrVkImage."
>
> This reverts commit 3dc6c190da.
>
> Reason for revert: hitting assert about RT having input attachment on mali bots
>
> Original change's description:
> > Have GrVkRenderTarget only use GrVkAttachments and not derive from GrVkImage.
> >
> > This change moves the color and resolve attachments used in a
> > GrVkRenderTarget to be a GrVkAttachment. These along with the msaa
> > attachment now mean that GrVkRenderTarget no longer needs to derive from
> > a GrVkImage.
> >
> > There are a couple ugly things in this CL since GrVkTexture still is a
> > GrVkImage since we can't share attachments between GrVkRT and GrVkTex.
> > But when that gets updated in the follow on CL things will look much nicer.
> >
> > Bug: skia:10727
> > Change-Id: I2f12674d7517c6d6dea389e2d1fb7296028bcc85
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379576
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
>
> TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com
>
> Change-Id: Ic46f3947ed9f7b2ca26e8418d643e7f89b6108d2
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:10727
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380459
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
# Not skipping CQ checks because this is a reland.
Bug: skia:10727
Change-Id: I7a995ee9ad35bdac34cfcfd6b0d963c3e0bb90b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380460
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Expressions like `x * 1`, `x *= 1`, `x + 0`, `x * 0`, or `0 / x` don't
actually do anything, and can be simplified to just `x` or `0`. (The
zero case must also check that `x` doesn't have side effects, because
`0 * myFunction()` still needs to call `myFunction`.)
`0 - x` is also detected and rewritten as `-x`.
`0 / 0` is left as-is.
This logic works for scalars and vectors; matrices are left as-is.
A similar optimization also occurs in the constant-propagation pass, so
we see almost no diffs in the tests. If control-flow analysis is turned
off, we do see some improvements. (I didn't reuse the existing code at
all, since it was designed around rewriting the CFG tree, but the
concept was identical.)
Change-Id: Ia99cd81f1d4cd3dafaa43ccac6a2261e3257a185
Bug: skia:11343
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380356
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
This is a reland of cad44bcdd2
Original change's description:
> Use analytic AA in FillRRectOp even if the target has MSAA
>
> Bug: skia:11396
> Change-Id: Ia29fd5c9f00006274bb2aa1db96fbad57d858786
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380016
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
Bug: skia:11396
Change-Id: I6382085ccd037b534a1ed1355c1464aaef799a44
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380477
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This reverts commit 3dc6c190da.
Reason for revert: hitting assert about RT having input attachment on mali bots
Original change's description:
> Have GrVkRenderTarget only use GrVkAttachments and not derive from GrVkImage.
>
> This change moves the color and resolve attachments used in a
> GrVkRenderTarget to be a GrVkAttachment. These along with the msaa
> attachment now mean that GrVkRenderTarget no longer needs to derive from
> a GrVkImage.
>
> There are a couple ugly things in this CL since GrVkTexture still is a
> GrVkImage since we can't share attachments between GrVkRT and GrVkTex.
> But when that gets updated in the follow on CL things will look much nicer.
>
> Bug: skia:10727
> Change-Id: I2f12674d7517c6d6dea389e2d1fb7296028bcc85
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379576
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com
Change-Id: Ic46f3947ed9f7b2ca26e8418d643e7f89b6108d2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:10727
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380459
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Adds proper framework dependencies and moves from using ArenaAlloc
to header only SkAutoSTArray so it can be built in a shared build.
Change-Id: I6467153915e00a28d5569869187aecc3dd1f0112
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380318
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
This gives Viewer a way to dynamically toggle CFA off and on, so we can
immediately see the impact on shader optimization.
Change-Id: I912df70de126a74a1f0d11c511b2acc64f1e9f28
Bug: skia:11319
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380456
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
- Added "Dump Shaders" button; this writes the shaders to disk in the
`/resources/sksl` directory. This will allow us to more easily check
real-world shader code generation, instead of synthetic examples.
- Renamed "Load" and "Save" to "View" and "Apply Changes," to clarify
that they are not about files on disk. (Otherwise they seemed
confusing when placed next to a Dump Shaders button.)
Also, fixed a bug which would prevent a new deferred action from being
registered while running deferred actions.
(This CL implements the "test real-world shaders" portion of
http://go/optimization-in-sksl)
Change-Id: I7626a9e9c4f3ecb31b51f29b8106e4ca55de4dd4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380317
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Declare
This solves several issues caused by the lack of ordering guarantees in
C++; it was possible for the SkSL backend to look for the value of a
variable before its Declare() call gets processed. Moving the initial
value out of Declare should fix this whole class of problems.
Change-Id: I428fe230f1c312a0128c1f00c2a36cb95f4590a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380358
Reviewed-by: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit cad44bcdd2.
Reason for revert: Triggered an Adredo330 bug
Original change's description:
> Use analytic AA in FillRRectOp even if the target has MSAA
>
> Bug: skia:11396
> Change-Id: Ia29fd5c9f00006274bb2aa1db96fbad57d858786
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380016
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=robertphillips@google.com,csmartdalton@google.com
Change-Id: Ic51a279f9fefe03b28182bf1222c2e26625f5bf3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:11396
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380476
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Whenever we need the description (as we're putting something in the
persistent cache), go back and re-compute the key to get the
description. This pattern means that we pay a (very) small overhead for
virtual dispatch in the common case, and only pay for the expensive
string work when we're already doing expensive work (compiling).
Bug: skia:11372
Change-Id: I3d4dc19f2d8883f8117f5f6489fc852cf9503eb3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/380359
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
- Values from constant variables are folded in when it helps, e.g.:
const bool SHINY = true;
const float SHININESS = 2;
if (!SHINY) { // <-- optimizes directly to `false`
param = -SHININESS; // <-- optimizes to `-2`
- Doubled-up logical-not and negation are stripped:
y = -(-x); // <-- optimizes to `y = x;`
b = !!a; // <-- optimizes to `b = a;`
Removal of doubled-up negation and logical-not was actually never
implemented in the constant-propagation phase; I just noticed it while
I was here and thinking about it.
Change-Id: Ie28bb9b5af91376f03d926e26e37f4a131bbf550
Bug: skia:11343
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379298
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This enables the ternary to be optimized away in code like:
const bool SHINY = true;
color = SHINY ? add_shine(x) : x; // to --> `color = add_shine(x);`
Without constant propagation.
Also, I added a unit test for ternary expression simplification; I
wasn't able to find an existing one.
When the optimization flag is disabled, this CL actually removes the
optimization of `true ? x : y` --> `x` entirely; previously, this
substitution would be made regardless of optimization settings.
Change-Id: I93a8b9d4027902d35f8a19cfd6417170b209d056
Bug: skia:11343
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379297
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
This change moves the color and resolve attachments used in a
GrVkRenderTarget to be a GrVkAttachment. These along with the msaa
attachment now mean that GrVkRenderTarget no longer needs to derive from
a GrVkImage.
There are a couple ugly things in this CL since GrVkTexture still is a
GrVkImage since we can't share attachments between GrVkRT and GrVkTex.
But when that gets updated in the follow on CL things will look much nicer.
Bug: skia:10727
Change-Id: I2f12674d7517c6d6dea389e2d1fb7296028bcc85
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379576
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Swizzle optimizations now occur at IR generation time. These
optimizations are redundant with the control-flow optimization phase so
they are mostly not visible in our test output, but they do affect DSL
test results. Interestingly, they do improve our test output slightly
as well, for various reasons (e.g. we do not fully optimize lvalues in
the control-flow pass).
Change-Id: I6ebe6d71a5c22d9823b5fa500e43078915cbfb45
Bug: skia:11343
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/372257
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Makes SkImage_Gpu backed by two proxies, an original and a copy. The
image uses the original until a new render task is bound to it at which
point further uses of the image will use the copy. If the image is ever
used off a GrDirectContext we fall over to the copy. If the copy is
never used and never can be used by the next flush then the render
task that populates it is marked "skipped" and we don't perform the
copy.
Bug: skia:11208
Change-Id: Id255f4a733acc608c8a53c1a5633207aeafc404b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/366282
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
- Only need 4 (not 5) samples
- Document some of the math
- Use round of CTM to better match 'brute-force' version
Change-Id: Ibcc8e8eabc10158da8eecaba303385ed79218126
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379847
Reviewed-by: Mike Klein <mtklein@google.com>
If SkImage::MakeFromTexture() fails, the reelase_ycbcrhelper will
also be called, so ycbcrHelper.release() should be always called.
Change-Id: I104e02155da653bcb465723cbead595f16459fca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379848
Commit-Queue: Peng Huang <penghuang@chromium.org>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This is a reland of 40a9061203
Original change's description:
> rename GrSDFTOptions to GrSDFTControl
>
> Change-Id: Ie03fce7a99a9f71b18d54e3cd35e7675fb7f8912
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379616
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
Change-Id: Iba0816159a8ef99448a0040c487e56700b96be5d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379845
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This performs the same simplifications as the control-flow phase, but at
IR generation time. There's no visible difference in the tests (besides
DSL) because these aren't new optimizations; they're just happening
at a different phase of compilation.
Change-Id: I26d241167b0e690b23f8f4370339714783c8d6fd
Bug: skia:11343
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/371482
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This check is redundant; we now determine this at function finalization
time (http://review.skia.org/379056) and error out before this check
can be reached.
Change-Id: I1706adb90435b430883d7d1ab44cb5dc98fccd8c
Bug: skia:11377
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379836
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This was removed in http://review.skia.org/377842 to allow compilation
without control-flow analysis. We now support const bools in @if
statements (as of http://review.skia.org/379063) and can relax this
restriction a bit.
Change-Id: If3e8018c599d765075568a90af94fb4e4cb25118
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379797
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit 4b1fb7ca90.
Reason for revert: breaking chrome roll (android-pie)?
Original change's description:
> cache the creation of one GrAtlasTextOp
>
> GrAtlasTextOp has a high probability of being merged with the
> previous op. This cache keeps using the same op to merge with
> keeping memory warm.
>
> This show about 5.75% improvement in skpbench on desk_nytimes.
>
> When compiling for ios 9 or earlier, this optimization is
> disabled.
>
> Change-Id: I13ccbef6dcd4b9d82103bf20bba7d94f3e4fb6f4
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376718
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
TBR=bsalomon@google.com,herb@google.com,michaelludwig@google.com
Change-Id: I2def6e1043dcca2fd41c40facd20b4d18971ed17
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379840
Reviewed-by: Mike Reed <reed@google.com>
90db604919..fe2efefac4
2021-03-04 m.maiya@samsung.com Add FramebufferAttachmentPerfTest
2021-03-04 enga@chromium.org Revert "Add support for Linux GPU info with Vulkan backend"
2021-03-04 m.maiya@samsung.com Vulkan: Unmap buffer when adding to mBufferFreeList
2021-03-04 natsu@google.com Vulkan: Enable EGL_ANDROID_recordable for EGL configs on SwiftShader
2021-03-04 jmadill@chromium.org infra/config: Rename console/list views.
2021-03-04 syoussefi@chromium.org Translator: Rename GLSL to SPIR-V in Vulkan and Metal output
2021-03-04 ynovikov@chromium.org Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Ozone
2021-03-04 xiaoxuan.liu@arm.com Add support for Linux GPU info with Vulkan backend
2021-03-04 lexa.knyazev@gmail.com Partially upgrade codegen to Python 3
2021-03-04 ynovikov@chromium.org Replace Win x64 dEQP GPU.FYI bots with chromium.angle bots
2021-03-04 angle-autoroll@skia-public.iam.gserviceaccount.com Roll SwiftShader from 106e01583a3a to 084529f3a9b9 (1 revision)
2021-03-04 angle-autoroll@skia-public.iam.gserviceaccount.com Roll vulkan-deps from 6c3f8d8c39b9 to c0db6ae3d87d (6 revisions)
2021-03-04 syoussefi@chromium.org Vulkan: Fix overlay graph widgets
2021-03-04 syoussefi@chromium.org Vulkan: Fix Overlay for prerotation
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 stani@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: stani@google.com
Test: Test: `cts -m CtsMediaTestCases` on Cuttlefish w/ SwANGLE
Change-Id: Ib5cf22d2c0dfbd5d2eecf53adfdc843df2e646dd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379937
Reviewed-by: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Change-Id: Icb2d8ce9ac75454b89342aa737d563cf45eaba3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379756
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I40844d08af9b027a2d6095d485537dad802a92c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379796
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This check now runs at function finalization time, before constant
propagation has occurred; this affected the "DeadIfStatement" test.
Our detection isn't smart enough to realize that a loop will run zero
times, so it treats `for` and `while` loops as always running at least
once. This isn't strictly correct, but it actually mirrors how the CFG
implementation works anyway. The only downside is that we would not flag
code like `for (i=0; i<0; ++i) { return x; }` as an error.
Change-Id: I5e43a6ee3a3993045559f0fb0646d36112543a94
Bug: skia:11377
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379056
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
In addition to the unsurprising changes to eliminate references to
src/, we also had to tighten up some C++17-isms as they are not
permitted in public headers.
Change-Id: Ie5005a33d7a135e69fb66beca5e7a5f960dbd453
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/378496
Reviewed-by: Brian Osman <brianosman@google.com>
PictureShader = picture + tiling + depth/colorspace + filtering [+ scale]
Today we cache the imageshader that is used to rendering. However, the
key for that cache is the pictureshader's ID itself... which means if
we have several, all using the same picture (but maybe diff tiling) we
would create dup cache entries.
Idea:
1. only cache the image (rastered picture), not an imageShader
2. key the cache on the picture's ID, not the shader's
Several implications of this:
1. Should get more cache reuse, since we don't care about the
shader's ID (which is just wrapping a picture+tiling, etc.)
2. We also eliminate the indirection of creating a PictureImage. Instead
we're creating real (pixel) images, and caching those. This removes one
extra layer of "cache".
Idea: when we cache something for pict
Change-Id: I51cf4e9bff3c91ce1872876597d3d565039d8c7a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377844
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Move all of the processor-specific information into functions, rather
than splitting it between the calling and called code.
Stop putting the size of the key into the key. This was an attempt to
avoid collisions (I assume), but felt odd. Instead, add a few important
bits to more reliably protect against collisions, like # of vertex
attributes, # of child FPs, etc.
Important: Stop calling visitTextureEffects to put fp sampler info in
the key. That function visits the entire fp *tree*, so we were adding
sampler information in large FP trees many times. Instead, just add the
sampler information when the specific fp we're emitting is a texture
effect.
Finally, change addString to appendComment, to make it clear that it
doesn't impact the actual key at all.
Bug: skia:11372
Change-Id: Ibf10db1165b27857e5e5e712db538749b41883a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379736
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Housekeeper-PerCommit-GeneratedFiles has been complaining due to
http://review.skia.org/379656
Change-Id: Id6689261b6e1fbb444730babd52ccfcbd9929e21
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379738
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>
GrAtlasTextOp has a high probability of being merged with the
previous op. This cache keeps using the same op to merge with
keeping memory warm.
This show about 5.75% improvement in skpbench on desk_nytimes.
When compiling for ios 9 or earlier, this optimization is
disabled.
Change-Id: I13ccbef6dcd4b9d82103bf20bba7d94f3e4fb6f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376718
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Herb Derby <herb@google.com>
We don't need to force public API users into using our cache; they can
cache on their own however they like. We also don't need to force
internal users to cache, though I suspect most will want to.
I've kept deserialization using the cache, since that's an API users
can't reasonably cache themselves. Though that's another area to expand
into, hooks for serialization and deserialization, that sort of thing.
Change-Id: I1496b193576b68c88be1dccd30d971cced54b340
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/379599
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>