Change-Id: I2df94791af133fcfb3fa491163394369f324bbc3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/256096
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Add a common way to make rect op for testing that uses a GP with a local
matrix.
Change-Id: I958d1230bd5067b2e4b60fcd374e2f7718681e43
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255782
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Chrome is seeing unexplained segfaults when trying to access the n-1th
textureSampler while creating textOp GeoProcs -- it's possible that's
because n is 0. Also add checks to make sure n is not > kMaxTextures.
Bug: chromium:1027314
Change-Id: I65a5472980bab37d580b3f237a132a8b23794abe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255985
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Change-Id: Ib29f41f6e71b176fec1ead26259ad1945a41e634
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/254677
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Change-Id: I3c8bf48dda061aa9d318b9f81f22608fdd68fcbd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255786
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
(also renames CreateTextureSetOps to AddTextureSetOps, to match naming of
GrFillRectOp::AddFillRectOps).
Now that GrTextureOp can add more than one op to the GrRTC, it can take
over ownership of its fallback code for the texture set. It already had
taken over the code for non src-over blends when drawing a single texture.
Besides consolidating where the logic of converting TextureSetEntries into
op data lives, this makes the fallback case more consistent in terms of
performance. Previously, it would go through GrRTC::drawTexturedQuad,
which attempts to merge the clip with the draw for correctness reasons.
A batch never attempted these optimizations, so now even when one op per
quad is required, there won't be the overhead of comparing clips.
Change-Id: I30883e3bd45ed4386f81584e3d68229c46b17e47
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255781
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This provides a way to indicate that a Metal RenderTarget, and in
particular a RenderTargetProxy, is framebufferOnly, so it can be
restricted to certain operations.
Bug: skia:9573
TBR: bsalomon@google.com
Change-Id: I733fae2fce402c375534889346255afe28a57944
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255783
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
The *previous* SkWuffsCodec.cpp commit, 39da10b5 "Optimize SkWuffsCodec
pixbuf zero-initialization", removed the need to *explicitly*
zero-initialize the fPixelBuffer on the first frame decode. Subsequent
frames, including the first frame of the animation again if the
animation is looped, still need to call sk_bzero.
Prior to *this* commit, each row of the pixel buffer was zeroed
separately. When it is necessary to memset to zero, it can be faster to
issue one big call instead of many small calls.
For example, the single-frame droids.gif file mentioned in the previous
commit (39da10b5) now skips the explicit sk_bzero calls, due to the
optimization in exactly that previous commit. But if it was a looped
animation, decoding subsequent (repeated) frames would need to memset
the re-used buffer to zero. The time taken for those sk_bzero calls
would be affected by this commit: from 2.900ms to 2.454ms (out of a
total decode time of 33.342ms as per 39da10b5's commit message).
Bug: skia:8235
Change-Id: I72ec3dc4230f06f358b5e8fee1b2799607d86615
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255358
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
This reverts commit 1792b19485.
Reason for revert: need to update legacy_convexity, still used by google3
Original change's description:
> Revert "Revert "Use flat version of path-direction enum""
>
> This reverts commit 0dacc6b7d3.
>
> Change-Id: Ie103e9f36b07e4ee256a3688a4decf3a6dd74314
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255832
> Auto-Submit: Mike Reed <reed@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
TBR=reed@google.com
Change-Id: I0ecea0eb8a237298c6b908cc4bfd1cacdfc5b900
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255976
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This reverts commit 0dacc6b7d3.
Change-Id: Ie103e9f36b07e4ee256a3688a4decf3a6dd74314
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255832
Auto-Submit: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This reverts commit e0fbe94351.
Reason for revert: need to add guard flag to flutter
Original change's description:
> Use flat version of path-direction enum
>
> Bug: skia:9663
> Change-Id: I00077d9f2b14b3e983e6a46ef6f560cabdb1678d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/242557
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>
TBR=fmalita@chromium.org,reed@google.com
Change-Id: If47173d9b203b2d3a175af290a15d986accb4703
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9663
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255831
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This adds a bunch of tests for ops that can all be evaluated directly in
skvm::Builder. You can see the sort of effect this has by looking at
the diffs for SkVMTest.expected... lots of `v3 = sub_f32 v2 v2`
transformed to `v3 = splat 0 (0)` and that sort of thing.
My favorite part is handling many assert_true() calls at compile time!
While the old inter-Op code parallels aren't as clear now, these new
early-out tests kind of work like comments explaining each op. I find
that nice. I found it hard to parse so many uses of the word "splat" so
I did go back to isImm() from isSplat(), and added allImm() to test for
and read several immediates all at once.
Some of this is less C++17 than I'd like. :/
Change-Id: Ie8187d5d184195e3c0c92d613508fb708c28302f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255814
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
OK this one is cool.
GrGLCaps::onSurfaceSupportsWritePixels() starts off like
bool GrGLCaps::onSurfaceSupportsWritePixels(const GrSurface* surface) const {
if (fDisallowTexSubImageForUnormConfigTexturesEverBoundToFBO) {
...
Clang compiles this into
53e5: cmpl $0x0,0x94(%rdi)
53ec: js 5435 <GrGLCaps::onSurfaceSupportsWritePixels(GrSurface const*) const+0x5d>
I think what's going on is that
fDisallowTexSubImageForUnormConfigTexturesEverBoundToFBO is the 32nd of
a bunch of neighboring bitfields, and that makes it the top bit of the 4
bytes at a 0x94 byte offset from GrGLCaps (rdi == this). The cmpl/js
combo is reading that whole 4-byte chunk of bitfields and asking "is
this negative", a fun and I'm sure efficient way to test that bit.
Now I bet Valgrind thinks all those bits need to be initialized to
answer that question, and I also bet GCC just slapped a big 4-byte 0
down onto all these bitfields, incidentally initializing the fields we
leave uninitialized. In any case I think it's healthy to initialize
these fields. Shame there aren't any bitfield initializers until C++20.
Think it's too early to upgrade?
Change-Id: I767515190cf1ed08cf1d6981e550a65ccaffdec5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255419
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This is a reland of 190157bff2
Original change's description:
> Fixed some GrSkSLFP limitations.
>
> This makes it possible to pass more types as uniforms / inputs and fixes an
> issue with non-main functions calling other non-main functions.
>
> Change-Id: I6b5623b3c967d8219b992a455cc68bb0a29706b8
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255300
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Change-Id: Icc06cd54abb7acc83415915e16ca64c3eb6b943b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255779
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Change-Id: Ibdbd9b56e8848c4efd842fa658c6d76be4523043
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255580
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
As the first real op to be updated this required the plumbing of the DstProxyView and the de-constification of the GrAppliedClip.
Bug: skia:9455
Change-Id: Ieaa16adfa1d114021b2ad60d0ef8ecbe31d9cc82
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255136
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
The index API are no longer needed now that the Geometries
hold pointers instead of indexes.
Change-Id: I940520816ca58959f2c7c415a8f356ea5bf3d293
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255816
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Still reasoning through that bitfield one, but this is unrelated, and
exactly like the other version. Clang may decide to branch on `0 ==
strcmp(kChromium, suffix)` before it branches on the result of `3 ==
sscanf(..., suffix)` that only has initialized suffix when it is true.
Change-Id: If76e7b9087b59ddae4249d9f2828c881fa649c8c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255418
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
- BUILD.gn `gif` optional source_set: use new skia_libgifcodec_path
code, not third_party/gif code.
- SkCodec.cpp: use third_party version of SkGifCodec.h.
- rm src/codec/SkGifCodec.* third_party/gif/*
Original CL: https://review.skia.org/254582
Cq-Include-Trybots: luci.skia.skia.primary:Build-Debian9-Clang-x86-devrel-Android_SKQP
Bug: skia:9654
Change-Id: Ia0379af70a5ec5656a7d123b8b6816b9fa24eaee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255780
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
I started adding more _imm Ops like mul_f32_imm and noticed that there
was some low hanging peephole fruit here that we can harvest first.
Each of these peepholes I've added is sound in the way that I've
documented, and the div_f32 and mul_f32 peepholes are actively being
hit. I think it's inevitable that the add_f32 and sub_f32 ones will be
hit eventually too as we expand how skvm is used.
The easiest place to see this in action is
when SkColorFilter_Matrix::program() is passed an opaque color:
skvm::F32 invA = p->div(p->splat(1.0f), *a)
now leaves invA as splat(1.0f) directly, skipping the premul divide.
We still do the next part checking to see if invA is infinity; more
on that at the end of the CL description.
In this way I think we ought to never need to thread through a
shader_is_opaque parameter to color filters, instead letting the program
builder simply look and see if it is, among any number of other similar
optimizations.
Interestingly, though we may know sometimes the input to
SkColorFilter_Matrix::program() is opaque, as written today we'll never
know if the output is. Since we don't specialize the code based on the
0/1 values of the matrix, we lose the knowledge that alpha is 1.0f as it
goes through the matrix. There are two good ways to fix this:
1) do specialize on 0/1 values of the matrix so that the program
sees alpha is not changed when alpha is not changed;
2) wrap today's virtual program() with a base-class non-virtual
that queries getFlags() & kAlphaUnchanged_Flag to save and restore
the input alpha, essentially marking any code that changes alpha
as dead code.
2) is kind of the brute force, trusting version of 1), but does have
the advantage that the generated code need not change. Still, in this
case of a matrix, I think we'll want to look at 0/1 values anyway...
they'll come up more often than just for the alpha channel.
You can see a mul_f32 peephole happen when the blitter goes to store any
known-opaque color to memory. We go through some logic like
alpha_as_byte = round(mul(alpha, splat(255.0f)))
and if alpha is known to be splat(1.0f), we'll now skip that mul(),
alpha_as_byte = round(splat(255.0f))
I think this is all the strictly viable float peepholes where one
argument is a constant. Obviously there are lots of peepholes we can
write for int32, int16, and bitwise instructions, and then there's a
whole untapped world of peepholes to explore when _all_ arguments are
constant. These all-constant peepholes let our program notice that,
e.g., 1.0f < infinity and we can skip that part of the unpremul too, or
that round(splat(255.0f)) == 0xff and we can skip that work.
These all-constant peepholes may not be super important, as anywhere
they can trigger, the instruction must be hoistable: since all arguments
are constant, none depend on loop variables. But still, nicer to run
once ever at compile time than once per invocation at runtime. And it's
less code to analzye, less code to JIT, fewer instructions to interpret,
etc.
Change-Id: Ia2dc5af2cfff71a12693a2903f579a57c9302d12
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255616
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Something is breaking client code in unexpected ways. Let's try this
piecemeal.
- skia_libgifcodec_path gn var. Default is
third_party/externals/libgifcodec. Anfroid framework uses
third_party/libgifcodec.
- skia_use_libgifcodec gn var; defaults to !skia_use_wuffs. Allow
disabling both codecs.
- GN template("optional"): add public_include_dirs, similar to
public_defines.
- SK_USE_LIBGIFCODEC, ifdef for skia_use_libgifcodec.
- SkCodec.cpp: use SK_USE_LIBGIFCODEC
Original CL: https://review.skia.org/254582
Cq-Include-Trybots: luci.skia.skia.primary:Build-Debian9-Clang-x86-devrel-Android_SKQP
Bug: skia:9654
Change-Id: I70561f5f945656065e4b318d5fff505961fb0b6b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255578
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
This reverts commit 190157bff2.
Reason for revert: regression in arithmode
Original change's description:
> Fixed some GrSkSLFP limitations.
>
> This makes it possible to pass more types as uniforms / inputs and fixes an
> issue with non-main functions calling other non-main functions.
>
> Change-Id: I6b5623b3c967d8219b992a455cc68bb0a29706b8
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255300
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
TBR=bsalomon@google.com,brianosman@google.com,ethannicholas@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: I85d1a10fab072b82f35c9caf2c27b07d380a7bf4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255776
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Bug: skia:9603
Change-Id: I8571150bb7efe2f127c00d1a06e77ec8fa905d8f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255526
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
The ability to have device paths was removed a while ago.
Remove the code for device paths.
Change-Id: I09418eaa464b040c7bb13eac2e167997363e49d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255530
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
We support ops with up three arguments today, all three of which can be
registers, or one can be an immediate. Extend this to allow up to two
immediates, fitting the uniform?? ops much better than my old 16-bit
hack.
(The next thing on my mind is adding Op::extract_imm where both the
shift and now too the mask are known to be immediates.)
This refactor lets me straighten out the kinks of some ops, mainly the
uniform?? ops and extract. Things should generally now use x,y,z in
that order: most of the old immediates are now immy, and we use immz
only where we've already used the y register or immy immediate.
Small renaming isImm() -> isSplat(). I think this helps mutually
distinguish splat instructions, constants held by skvm instructions
(immy,immz), and constants as used by the JIT or assembler (still
generally `imm`).
Change-Id: I540a22a01459a39a499801362023ced7f2d6f49c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255538
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
I broke this adding VTune support.
Change-Id: I53399a8717c86cce9864a0fe96decec828c75737
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255617
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This CL is 100% plumbing. We ultimately want all GrPrimitiveProcessor-derived objects to not be refCounted. This will make several helper objects POD and, by putting them into an arena, will make managing their lifetime easier (e.g., for DDL prePreparing).
Note: the CCPR GrGeometryProcessor-derived classes only ever appear on the stack so aren't forced into arenas.
Bug: skia:9455
Change-Id: Ib9be503d2fbf8c2578642df93fc301156629829d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255304
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Change-Id: I204f04596809e1e33f20b67b454cdd0e1f269630
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255303
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Bug: skia:9603
Change-Id: I971852cc913382ee17fdc9c8b3dfc04f7fe8c14b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255518
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
- skia_libgifcodec_path gn var. Default is
third_party/externals/libgifcodec. Anfroid framework uses
third_party/libgifcodec.
- skia_use_libgifcodec gn var; defaults to !skia_use_wuffs. Allow
disabling both codecs.
- BUILD.gn `gif` optional source_set: use new skia_libgifcodec_path
code, not third_party/gif code.
- GN template("optional"): add public_include_dirs, similar to
public_defines.
- SK_USE_LIBGIFCODEC, ifdef for skia_use_libgifcodec.
- SkCodec.cpp: use third_party version of SkGifCodec.h.
- src/codec/SkGifCodec.*, third_party/gif/*: remove files.
Cq-Include-Trybots: luci.skia.skia.primary:Build-Debian9-Clang-x86-devrel-Android_SKQP
Bug: skia:9654
Change-Id: Ie22d2bb7e52322fd3eedb97015f3aec2ce5e3402
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/254582
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
Also deleted GrVkBufferView which isn't used anywhere.
Bug: skia:9603
Change-Id: Ia5a2cefe06a1e27a7d126990ea20a9d663d89c0c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255308
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
We can't create a GrMtlTextureRenderTarget in any situation where
framebufferOnly is true as we can't sample or copy from it. Creating
it as a plain GrMtlRenderTarget still allows the resolve while
restricting any other read.
Bug: skia:9573
Change-Id: I3316cb7402ddf12ddc7a7dab0efb16c1e5b3d804
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255527
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
This reverts commit c6a278aa71.
Reason for revert: Trying to get Chrome to roll
Original change's description:
> Block MSAA CCPR on NVIDIA without mixed samples
>
> We are still seeing problems on the GTX660. It's not crashing, but
> still is producing incorrect renderings. For now let's just block MSAA
> CCPR completely on non-mixed-sampled NVIDIA.
>
> Change-Id: I505281cc0731f3c106cbb4c685d41f801955d648
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255416
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
TBR=egdaniel@google.com,robertphillips@google.com,csmartdalton@google.com
Change-Id: Ice3995e8a87be084bc5847dd4b3ada1de1a1aaf1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255522
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This makes it possible to pass more types as uniforms / inputs and fixes an
issue with non-main functions calling other non-main functions.
Change-Id: I6b5623b3c967d8219b992a455cc68bb0a29706b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255300
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
These are really designed around x86, so forcing them
on ARM where our existing non-immediate ops work better
is kind of silly.
Change-Id: I6b66ed0b0a71b335becdcb1d67dec471620542b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/254440
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
We are still seeing problems on the GTX660. It's not crashing, but
still is producing incorrect renderings. For now let's just block MSAA
CCPR completely on non-mixed-sampled NVIDIA.
Change-Id: I505281cc0731f3c106cbb4c685d41f801955d648
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255416
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
CCPR clip masks are never cached, and the clip FP proxies need to
ignore any unique keys that atlas textures use for path mask caching.
Change-Id: I40d0f40c8b1cebbae6798ff95c88cb32616c84a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255143
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
I don't think it makes things any slower, less clear, or less safe to
initialize this `isClosed` variable. I'd be inclined to leave it this
way even if hypothetically we roll to a newer Valgrind that can analyze
this correctly.
For background see
https://internals.rust-lang.org/t/valgrind-memcheck-false-positive-fixes-for-rust/11166
Change-Id: Ifef9417733824b857d4407c45c92c017d189a8fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255354
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Bug: skia:9603
Change-Id: I04bacda40383667b0655c14fba0181fe7d0a51da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255147
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Currently GrFence is used only to determine if the current command
buffer is completed, so we don't need the granularity of MTLSharedEvent.
This makes the implementation of GrFence the same across all versions.
Bug: skia:9589
Change-Id: I2556304362a99a67d12e38144e08e8066a6850a7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255302
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: I14c005db9ef693eed0bcd07d4effbadc65e2004c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255355
Commit-Queue: Sean Gilhuly <sgilhuly@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Stephen White <senorblanco@chromium.org>