Change-Id: I93c8754d55b9d462b056a77e95b852fc61f1fd66
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266560
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Fix: update the generator code itself for the vec --> ptr change
This reverts commit 44aa1ab584.
Change-Id: Idfec2b42239429e58501ca2ba108ec852891e237
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266575
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Also removes several unused chunks of code that were declaring unused
variables, etc.
Change-Id: I47458736b189d59c0448c6f58b60a9b4ab046db2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266565
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This can allow for more efficient glReadPixels (e.g. read back of GL_R8
as GL_RED, GL_UNSIGNED_BYTE rather than GL_RGBA, GL_UNSIGNED_BYTE).
skia:8962
Change-Id: Ifa219517f1ce14b79e8af88c799cd5ef35f3a24c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266567
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Declares that Skia is right-handed
Change-Id: Ie98773f0f0d748eadc0d1abcd860f6e8dbb56bcf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266564
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
It is possible that some other thread will change the default FcConfig
out from under one of these methods, which is a terrible race. Prevent
this by taking a reference to the default FcConfig in the method and
keeping it alive while it is being used.
Previously an attempt was made to hold onto the FcConfig for the
lifetime of the SkFontConfigInterface_direct object. Unfortunately, some
users are holing onto SkFontConfigInterface_direct as a global and so it
is not obvious to free all instances before calling FcFini, which will
asert that no instances are still using the cache.
Bug: chromium:1004254
Change-Id: Ia173e90b95c43c40d91b366095eb97c0e466ab86
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246216
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Also simplifies the shaders if we know there's only one atlas texture.
Change-Id: I81063d423fd56cf91caee83ba9eae9d988aa249b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266566
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit 1c3e6cf313.
Fixes ES2 without NPOT support
Change-Id: I489e95f2b566d09e1b974421fb92c643e7da5135
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266563
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This is pulled out of the omnibus parameter reordering CL - which has become too large.
Change-Id: Ia647f4aac9f31600c6f72098233fe401895f23df
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266537
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This reverts commit 3b9c544bf8.
Reason for revert: Probably causing text issues in Chrome
Original change's description:
> Reland "Reland "Add new method for storing DrawOpAtlas texture index.""
>
> This is a reland of dea2f34f09
>
> Original change's description:
> > Reland "Add new method for storing DrawOpAtlas texture index."
> >
> > This is a reland of c8b2e61540
> >
> > Original change's description:
> > > Add new method for storing DrawOpAtlas texture index.
> > >
> > > Storing the texture index in the lower bit of each texture coordinate
> > > seems to have issues on certain iOS devices. Rather than do that, we
> > > use the sign of the texture coordinate to act as our storage bit.
> > > To manage encoding 0 we map [0, N] to [-1, -N-1] to represent a bit.
> > >
> > > Change-Id: Ic588ee92cf858915a1833cf482d4b23bd11c1000
> > > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263561
> > > Commit-Queue: Jim Van Verth <jvanverth@google.com>
> > > Reviewed-by: Brian Osman <brianosman@google.com>
> >
> > Change-Id: I901502c3d83ff9727c51ad4447b0cee733257649
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264566
> > Reviewed-by: Jim Van Verth <jvanverth@google.com>
> > Commit-Queue: Jim Van Verth <jvanverth@google.com>
>
> Change-Id: I000bb74ca57e321084ca2d1d9dc2f0274880c0da
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264689
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
TBR=jvanverth@google.com,brianosman@google.com
Bug: 1045016
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: Ie376c7b3cb359f5378e4dd983a103da81ec92e5d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266557
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: I1788cd621704f580ff0c7d930138d463b724f314
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266556
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I9012a2769eb92d0d393e0eeb684a8bee8519323d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266522
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This reverts commit 988af46dd2.
Reason for revert: <INSERT REASONING HERE>
Original change's description:
> Move GrDomainEffect functionality into GrTextureEffect and delete
> the former.
>
> New factories for GrTextureEffect have two main variants:
> MakeTexelSubset(): adjusts the input integer rectangle to account for
> filtering
>
> MakeSubset(): assumes caller has calculated the exact rectangle needed
> as floats.
>
> Currently this disables filtering for shader-based mirroring or repeat.
> Will fix this later. The old effect also did not support this.
>
> Change-Id: If47d8ecfbb349b0d7b39ab5ba864fe3cc1b139e4
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265518
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
TBR=bsalomon@google.com,michaelludwig@google.com
Change-Id: Ib81a79798668cd7df7d07f72a5113be9fc74180c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266536
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This reverts commit 99c54f0290.
Change-Id: I010ac4fdb6c5b6bfbdf63f4dcac5dbf962b0ad9c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266205
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
the former.
New factories for GrTextureEffect have two main variants:
MakeTexelSubset(): adjusts the input integer rectangle to account for
filtering
MakeSubset(): assumes caller has calculated the exact rectangle needed
as floats.
Currently this disables filtering for shader-based mirroring or repeat.
Will fix this later. The old effect also did not support this.
Change-Id: If47d8ecfbb349b0d7b39ab5ba864fe3cc1b139e4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265518
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Will be used for YUV420 readback on ANGLE ES 2 contexts in Chrome.
Marks the functions as required as Chrome now adds inits these on
GrGLInterface.
Bug: 1040643
Change-Id: I5504d4c9209874991592c9f86aaf7987c316aa40
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265602
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This reverts commit 5195673c7a.
Reason for revert: Just waiting for the test suppression
Original change's description:
> Revert "Increase precision of some quad AA calculations"
>
> This reverts commit 40a1353126.
>
> Reason for revert: layout tests need rebaseline
>
> Original change's description:
> > Increase precision of some quad AA calculations
> >
> > This stops using the low precision rsqrt and instead does a divide + sqrt.
> > It also separates the single kTolerance value used in GrQuadUtils' math
> > into a fairly fuzzy tolerance for edges/distances being close to zero
> > (e.g. a degenerate quad), and a more precise tolerance for linear systems
> > solutions.
> >
> > The smaller tolerance value used for denominators in these solutions prevents
> > the solved-for coordinates from being mis-classified as "bad". The bad coord
> > resolution works on the assumption that its correcting points that are
> > co-located, but if the input coords were sufficiently large the linear
> > equations would have small denominators that were less than the fuzzy tolerance
> > and then the geometry would be improperly collapsed to a line.
> >
> > For the selected zoom level of GM_crbug_10141204, this change is sufficient
> > to prevent the draw from being discarded. However, when animating the zoom
> > level, the input shape is sometimes still considered a fullscreen clear when
> > it shouldn't be. A follow up change will improve precision in CropToRect()
> >
> > Bug: skia:9779, chromium:10141204
> > Change-Id: Id1518a908c03e7813868c4eff014d18388f8f62e
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265976
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
>
> TBR=robertphillips@google.com,michaelludwig@google.com
>
> Change-Id: I44012a2728f75e235678f733c6da8870b84ae3ab
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:9779, chromium:10141204
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266220
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
TBR=robertphillips@google.com,michaelludwig@google.com
Change-Id: Ie7f19c1f7c4b742f34b24157aa7800f2a974e5bf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9779, chromium:10141204
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266221
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
The gradient shader allocates data in the SkArenaAlloc
and points into it via its uniforms (as if it were a
bitmap or image), so we need to keep that alive while
it may be used. The scope of CacheKey() is not long
enough.
When the cache is disabled or we get a cache miss,
everything was fine, since we were working out
of the long-lived fAlloc in Builder().
But when we hit something in the cache, we'd be left
trying to draw from data in this temporary scoped
SkArenaAlloc in CacheKey(), a use-after-free.
Change-Id: Ie873d57339180f4cd320c940a72aeb0563b93325
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266356
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
I think this should catch the use-after-free when it runs
gm/lumafilter. Reassuring to have running... may also want
to add MSAN bots.
Change-Id: Ia8ed9acdb66b2e5fca02d91922d01dddbd7f2207
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266359
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Making it easier to modify the objects that are emitted by the generator
and consumed by the FP (as a pre-cursor to sampling children with
explicit coords).
Change-Id: Id746a23537c97ba7a8ac27a63622503f59c902f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266377
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Moves the interface up to Ganesh level and starts using it from other
locations.
Change-Id: I939d2b357d3ae8551976d0d71b877b72da403712
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266063
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This allows me to find uses of the eviction registratoin
easier in my IDE.
Change-Id: I127911f769d90716f6c8bb69d71b2255786aec21
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265981
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: Ib5318575ab929f1e911c8cb13753fd6d19d48818
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266202
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
gm/lumafilter is drawing wrong for me with SkVMBlitter,
but only when I enable its cache. I thought it must be
a collision between program fingerprints, but on further
inspection that doesn't seem to be the case, even 32-bit.
But now that I've done this, might as well keep it.
Even if p(collision) is small, p^2 is smaller.
Other small cleanups to what we hash and how:
- don't include derived fields in Instruction equality and hashing
- use SkOpts::hash() instead of manual std::hash/xor hack
Small struct layout changes to keep everything dense.
Change-Id: I5ba817296f0bfefa0e18f62d103094d0c63bd50d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266282
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This is pulled out of the parameter reordering CL - which has become too large.
Change-Id: Id36875dd4a670611ab94a08a3a6df41c474e9022
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266217
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Since we just rely on SkBitmap to manage rowbytes, we don't need to
separately track it in the surface.
Bug: 1038304
Change-Id: Iea2d486019bf4c5bf4f2a87eabc5f00ad71949fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266219
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This makes sure that when we are not using repeat mode the colorType of
the producer will match the colorType of the returned proxy.
Bug: chromium:1044862
Change-Id: I9627517c383ff7c3e9801da21ddafdacfb747871
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266218
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
This reverts commit 40a1353126.
Reason for revert: layout tests need rebaseline
Original change's description:
> Increase precision of some quad AA calculations
>
> This stops using the low precision rsqrt and instead does a divide + sqrt.
> It also separates the single kTolerance value used in GrQuadUtils' math
> into a fairly fuzzy tolerance for edges/distances being close to zero
> (e.g. a degenerate quad), and a more precise tolerance for linear systems
> solutions.
>
> The smaller tolerance value used for denominators in these solutions prevents
> the solved-for coordinates from being mis-classified as "bad". The bad coord
> resolution works on the assumption that its correcting points that are
> co-located, but if the input coords were sufficiently large the linear
> equations would have small denominators that were less than the fuzzy tolerance
> and then the geometry would be improperly collapsed to a line.
>
> For the selected zoom level of GM_crbug_10141204, this change is sufficient
> to prevent the draw from being discarded. However, when animating the zoom
> level, the input shape is sometimes still considered a fullscreen clear when
> it shouldn't be. A follow up change will improve precision in CropToRect()
>
> Bug: skia:9779, chromium:10141204
> Change-Id: Id1518a908c03e7813868c4eff014d18388f8f62e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265976
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
TBR=robertphillips@google.com,michaelludwig@google.com
Change-Id: I44012a2728f75e235678f733c6da8870b84ae3ab
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9779, chromium:10141204
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266220
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This is looking pretty good.
Some egregious diffs, some invisible,
and a handful in-between I've investigated.
The egregious diffs look like bad shader caching. I need to fix that,
but its brokenness is simply helpfully exposed here, not made any worse.
To repo, run: lumafilter, srcmode.
These in-between diffs all fall within the existing variance:
crbug_938592 ok
analytic_gradients ok
gradients_dup_color_stops ok
Probably different geometry math, FMAs, reordering, etc.
I will follow up with radial etc,
and shallow gradients also demonstrate we're missing dither.
Change-Id: I5a046ee42accdf1faed50b3b65efb4a6787b5e04
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265821
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Change-Id: I44d6f67dcd3d042127ad20ebdaa332e94f1b0829
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266216
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
This reflects Dawn and Metal functionality.
Implement a FramebufferOnly flag on GrSurface and GrBackendRenderTarget.
Forward the state from GrBackendRenderTarget to GrSurface.
Check the GrSurface flag in GrGpu::readPixels() and GrGpu::writePixels()
and early-return.
Change-Id: I27d3c9c912b366791bfd0e1db49638d8925742f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262802
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
For quads with very large coordinates, the barycentric coordinate
calculations could be very inaccurate in 32 bit. This lead to
erroneously thinking the render target was contained within the
quad's triangles, instead of just intersecting it.
By scaling the coordinates to a more reasonable magnitude before
multiplying and subtracting the coordinate values, reasonable
accuracy is preserved w/o needing to do everything in 64 bit.
Because it produces coordinates relative to the triangle vertices,
the computed values remain the same as if the unscaled coordinates
were used with higher precision math.
This seems to prevent GM_crbug_10141204 from being misclassified as
a fullscreen clear when its large rect geometry just intersects
the device.
Bug: skia:9779, chromium:10141204
Change-Id: Ia97c2c4e288907ddbb7058d3e7ed97112143b7dc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265977
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Wrong edge used for left rect in y-pass.
Change-Id: I3040c5b45fcaaddb321aff3a8bc341b4baa67fd6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266198
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
This stops using the low precision rsqrt and instead does a divide + sqrt.
It also separates the single kTolerance value used in GrQuadUtils' math
into a fairly fuzzy tolerance for edges/distances being close to zero
(e.g. a degenerate quad), and a more precise tolerance for linear systems
solutions.
The smaller tolerance value used for denominators in these solutions prevents
the solved-for coordinates from being mis-classified as "bad". The bad coord
resolution works on the assumption that its correcting points that are
co-located, but if the input coords were sufficiently large the linear
equations would have small denominators that were less than the fuzzy tolerance
and then the geometry would be improperly collapsed to a line.
For the selected zoom level of GM_crbug_10141204, this change is sufficient
to prevent the draw from being discarded. However, when animating the zoom
level, the input shape is sometimes still considered a fullscreen clear when
it shouldn't be. A follow up change will improve precision in CropToRect()
Bug: skia:9779, chromium:10141204
Change-Id: Id1518a908c03e7813868c4eff014d18388f8f62e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265976
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This is a reland of 77e1f84a84
Original change's description:
> Specialize SkRectanzier to SkRectanizerSkyline
>
> It looks like the pow2 rectanizer has never been used. Remove
> the unneeded abstraction for rectanizer everywhere.
>
> Change-Id: Iba33f1c6faf37201d03928ce8409751c212480a0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265983
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: I09729ba2b0e4b8b1a229fef4b95e65195b33fdc7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266180
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This reverts commit 77e1f84a84.
Reason for revert: breaking google3 roll?
Original change's description:
> Specialize SkRectanzier to SkRectanizerSkyline
>
> It looks like the pow2 rectanizer has never been used. Remove
> the unneeded abstraction for rectanizer everywhere.
>
> Change-Id: Iba33f1c6faf37201d03928ce8409751c212480a0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265983
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,herb@google.com
Change-Id: I2573534f3ea95c98d089f9c19b027564e77015db
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/266116
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
It looks like the pow2 rectanizer has never been used. Remove
the unneeded abstraction for rectanizer everywhere.
Change-Id: Iba33f1c6faf37201d03928ce8409751c212480a0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265983
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
This is similar to the earlier change to createProxy but needs to be done
for all the lazy ones as well.
Bug: skia:6718
Change-Id: I3f5721541929e2e3fbfa746b5a2c4221b1af5b49
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265960
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This also requires us to compute a scratch key from backend format instead of config.
Bug: skia:6718
Change-Id: I6bf4c5ba8188e354ddc5307ebf2ca10080df27cd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265768
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This makes creation of a compressed textures better parallel creation of uncompressed textures
This CL is pulled out of the parameter reordering CL - which has become too large.
Change-Id: Iabdaced780af206c2398e55986d3e7698a083342
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265582
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Also avoids loading coordinates into SIMD for the simple 2D case. This
moved the 2d bounds benchmark from 3.2us to 2.2us on my Windows machine,
but there was no movement on my Linux workstation (stayed ~2.2us on it).
This will regress the 3d bounds benchmark because there is a fair bit
more work that happens when any w < 0 (about 1/10 of the executions in
the benchmark). While the math for w > 0 stays the same as the old
code in projectedBounds(), that case still has the overhead of checking.
The regression is necessary since the prior "fast" 3d code was incorrect.
This does not fix the panorama case described in 224618, because that test
still uses anti-aliasing. However, with this change applied and forcing
non-AA, it draws correct albeit not smoothed. Further work will be needed
to safely handle AA inset/outsetting when the coordinates have w < 0.
Bug: skia:9779, chromium:224618
Change-Id: I3b7b052b448850ed098b6c819d3acb578437d2b2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265767
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Existing code in create_descriptor() has hard-coded removal of certain
font traits because of issues in recent operating system versions. [1]
With the arrival of a newer version of macOS there is yet another quirk
to be dealt with. [2]
Modify create_descriptor() to avoid problematic traits based on the
version of CoreText in use.
This is a temporary workaround until typefaces can be serialized instead
of relying upon identical selection in different processes.
[1] https://skia-review.googlesource.com/c/skia/+/158443/
[2] https://crbug.com/1018581
Bug: chromium:1018581
Change-Id: I4c4c675e77f15a092f4b738c932edfb0876efa27
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260346
Commit-Queue: Alan Screen <awscreen@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
This reverts commit f79aacba2b.
Fix: had transposed when converting from colormatrix to m44
Change-Id: I6bc81d0c50bb1bf8d771e4dfa0c25c39de265b1e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265765
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This extensions adds PBOs but not new enum values for <usage>. Only the
ES2 enum values of STREAM_DRAW, STATIC_DRAW, and DYNAMIC_DRAW are valid.
Also change TransferBufferType to enum class.
Bug: skia:1040643
Change-Id: Id36808267a86548a25ac6c92f9b753c11764742e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265577
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This reverts commit 295cdf8775.
Reason for revert: wacky gm colors, must have busted colormatrixfilter
Original change's description:
> use SkM44 internally
>
> Today we use SkM44 in canvas, and SkMatrix44 in sksl (and colormatrix).
> This CL tries to move core to use a single type.
>
> SkMatrix44 has callers in android and chrome, is loaded with double/float
> variants in its API. I am suggesting moving to a private, clean-start,
> API for internal use. SkM44 is much faster, and has a leaner API.
>
> If eventually we can migrate clients to a shared impl/api, great. For now,
> I want to have one we are free to optimize/use as we see fit without
> worrying about changing client results.
>
> Change-Id: Id782ac1cc8b8d7f6621970e44e1f9729964d2a94
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265299
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
TBR=mtklein@google.com,bsalomon@google.com,brianosman@google.com,fmalita@chromium.org,reed@google.com
Change-Id: I35fcd636f1b57001bb65684e78523b6a94cfebee
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265764
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Today we use SkM44 in canvas, and SkMatrix44 in sksl (and colormatrix).
This CL tries to move core to use a single type.
SkMatrix44 has callers in android and chrome, is loaded with double/float
variants in its API. I am suggesting moving to a private, clean-start,
API for internal use. SkM44 is much faster, and has a leaner API.
If eventually we can migrate clients to a shared impl/api, great. For now,
I want to have one we are free to optimize/use as we see fit without
worrying about changing client results.
Change-Id: Id782ac1cc8b8d7f6621970e44e1f9729964d2a94
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265299
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Wedges fanning out from the center work fine for relatively simple
paths, but for paths made up of thousands of verbs, a fan is an
inefficient triangulation to give the rasterizer. This CL adds a
tessellation mode that draws the inner polygon and standalone cubics
separately, and triangulates the inner polygon by recursive
subdivision.
This reduces the stencil time from 7.4ms -> 3.0ms on desk_ynevsvg.skp.
Change-Id: Ie56e760d98e6c69e9a97752fe851726f36a7f574
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265522
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
SkSurface will already reject a rowBytes that does not align on a pixel
boundary. Push that check into SkImageInfo. This will make SkBitmap,
SkPixmap, SkMallocPixelRef, and SkImage_Raster, which already call
validRowBytes, make the same check. If an SkSurface cannot use a
non-pixel-aligned rowBytes, then an SkCanvas wrapping an SkBitmap should
not either.
Update MallocPixelRefTest to use a rowBytes that is still valid.
Change-Id: I848d94dbeab8b58b92877104dd67ea23a9d19ca8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265599
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Add comments, document some shortcomings in convolve_gaussian.
Prefer fillRectToRect over fillRectWithLocalMatrix.
Towards a more consistent param order for helper functions.
Remove an out param from decimate().
Change-Id: If3ca5ac9327c0495c98d41862709187d728790c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265376
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Added this as an option to GrSaturateProcessor (also renamed it to
be more generic and end with FragmentProcessor).
Added a tweak to the unit test to check the new behavior.
(Raster was already doing the clamp).
Change-Id: Ic49fa5cd72b6c63430fb773baf8121546bf2b80d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265580
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Also add macro for ALL_COMPLETED
We plan to use this with ANGLE ES2 contexts.
Change-Id: I6c967fa9b9aefc41c31cd806aece8533f846f940
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265756
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This just does the boring work, keeping the
old type as an empty, now public, base type,
with all the existing methods on _Base.
Bug: skia:9796
Change-Id: I96d93d25955430c0586deca4bb562913d1d7815a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265447
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
- Allow for $floatLiteral and $intLiteral when determining type
categories. These could slip into the IR, leading to asserts.
- We weren't propagating the source text in specialize(), so errors in
the ByteCodeGenerator would actually assert about a missing fSource.
It's held by unique_ptr on Program, so we wastefully clone the
string, but we don't have that many specializations yet, so not too
bad?
Change-Id: I9c79acfb084e6dc8628625dea039c085ec46dba7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265598
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
- Once we add all the missing intrinsics, the locally defined ones
can go away.
- Having the default interpreter vector width match the raster pipeline
is a huge perf win.
Change-Id: I482e409e57791b78a0e6fb15929ae77eb0e76bf3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265600
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I659552466940b76a339caaf124700303806fd082
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265456
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This whole change is basically work that will all get reverted shortly
when GrSurfaceProxy no longer stores swizzle. But for now this helps
get rid of a use of pixel config.
Bug: skia:6718
Change-Id: If911360a8a9d2c52a58b5795386484634885b3f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265579
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
This is split out the parameter reordering CL - which has become too large
Change-Id: I2574985bff3cc6e9825a45a92ac531f00c33e28d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265578
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This reverts commit 42032cb88f.
Reason for revert: Relanding now that pre CLS that fix initial issue landed
Original change's description:
> Revert "Pass in a SkColorType into SkImage_Gpu ctor."
>
> This reverts commit 1d17543133.
>
> Reason for revert: android bots
>
> Original change's description:
> > Pass in a SkColorType into SkImage_Gpu ctor.
> >
> > This allows us to get rid of using the GrPixelConfig on proxy to create
> > the SkColorType
> >
> > Bug: skia:6718
> > Change-Id: I1758b79152fa1e8a1796e55d19f5e8ca0b0e8b7b
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264396
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
>
> TBR=egdaniel@google.com,robertphillips@google.com
>
> Change-Id: I449e6b0750d611346791beb1dd1346106ad01741
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:6718
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264469
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>
TBR=egdaniel@google.com,mtklein@google.com,robertphillips@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: skia:6718
Change-Id: I8088b4e96d1f2c73be03d150fb8f8280a21db5de
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265496
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
I'm not sure I see a compelling reason for BBH factory objects
to exist, as opposed to say, factory functions. I don't see any
major harm in letting people hold onto BBH objects themselves.
This allows the caller to create and hang onto the BBH themselves,
allowing use cases like the slight extension I've made to the unit
test PictureNegativeSpace as a demo. Not super useful yet, as
SkBBoxHierarchy is not a public type...
And add test that mini pictures fill the bbh, which had never been
an interesting question until now we let the user hold onto the BBH.
Bug: skia:9796
Change-Id: I14737f25b31a457a8716669183af0c3bbf01859b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265445
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
More sk_sp, unique_ptr, less ownership convention.
A little bit of warmup for the work in the bug.
Bug: skia:9796
Change-Id: If6ce37883e4175617d377e74c8cc44353ea47e16
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265443
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This is split out of the parameter reordering CL (which has gotten too big)
Change-Id: If78a63474af8c5927bcb4efa96514414e0b36e5e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265521
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This change does a bunch of stuff that all sadly needs to land together.
First this moves the fallback for bitmap upload from proxyprovider to
GrBitmapTextureMaker. This is mostly a code organization cleanup but also
allows us to manager all colorType changes in the GrTextureProducers
directly.
Next this change hides colorType and deletes colorInfo getters from
public. Looking at the colorType of the producer doesn't really make
sense (outside the producer) since we have multiple fallbacks that
could happen in terms of format for the produced textures.
Next this makes sure that after the ctor is called, the internal
colorType stored will always be the used colorType by returned textures.
The only caveat to this is if a texture needs a copy for repeat mode
and we end up needing to render to fallback configs. Modulo repeat issue
the only other thing to change colorType is uploading a CPU bitmap if
we fallback to 8888, but this can be known in the ctor if this will
happen.
Finally, the only users of GrTextureProducer that really need to know
the correct colorType to use with the returned texture are those that
are then creating an Image. However, non of these cases even need to
pass in sampling params so we don't hit the need for repeat copies
and thus colorType changes. So now the refTextureProxy call (the one
without params) returns a pair of the proxy and colorType. The producer
just returns its colorType cause nothing could have changed that.
Bug: skia:6718
Change-Id: Ic5b5810606440ff943910933a3880d62875c9c16
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264836
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
This reverts commit 2cde3a1320.
Reason for revert: breaking the Chrome roll
Original change's description:
> Complete rewrite of the SkSL interpreter
>
> Change-Id: Idf4037b04c22f8ace5c1ef16c7a28d8c3df92e91
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250817
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
TBR=brianosman@google.com,ethannicholas@google.com
Change-Id: If0fbc78118173e0cacbe1e01cabe3331e35aa49e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265516
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
The 'trak' suppression was only applied if the 'opsz' was specified.
Change the 'trak' suppression to always apply.
Incidentally, this fixes issues with system variable fonts only working
at named instances on macOS 10.12 through 10.14. Versions 10.11 and
earlier still have issues with system variable fonts only working at
named instances. In general on macOS different code is run depending on
whether the attributes parameter to CTFontCreateWithGraphicsFont is
nullptr or not. The code which runs when the parameter is nullptr has
the issue until 10.15, but the code run when the parameter is
non-nullptr does not appear to have the issue in 10.12 through 10.14.
Bug: skia:9747,skia:9544
Change-Id: Icbd3a909f544437fb9811fff9bf6a630f1e2b6dc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264694
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Change-Id: Idf4037b04c22f8ace5c1ef16c7a28d8c3df92e91
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250817
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Do offsetting to rects in SkBlurImageFilter. All others were already
passing {0,0}.
Change-Id: I834eab11722c528e157cf071e433c8d014c6a3da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265297
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
It is used for clipping. The clip doesn't seem to affect
correctness. I don't think it matters for performance. I ran
through all GMs, skps, svgs in gl and ddl2-gl configs with
breakpoints set if the clip ever did not contain the drawn
rect. No hits. If I missed something could we just shrink the
rects we draw rather than use a scissor clip?
The values seemed wrong (too big) in the decimate/reexpand case.
Shouldn't they have been scaled?
Change-Id: Icc22eb27d133fc436d891dab70483be5f71df894
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265217
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
- misc fixes to utilities
- hit-testing for 3D scenes (simple version)
Had to manually inform the shader of the local-to-world matrix.
Should try making that automatic in the future.
Note: due to bug in interpreter, point-light sample can't run in raster
(yet).
Change-Id: I7a30b7676ea6cd7eb264373dd2507133c901d85e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264999
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
common function.
I still don't fully understand all rects and offsets and think this must
be over specified. Maybe this makes it easier to make future
simplifications? It at least strips the scale factors out of the code
that got lifted into a function.
Change-Id: I603e62b55ac9096534c36aa71959ba755087b27f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265137
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Bug: chromium:1042693
Change-Id: Iccd321d07d4d7ac42ebf84812936e500cebd4e22
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265143
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
slight simplification: pass nullptr to convolve_gaussian_1d for "unbounded"
filter.
Change-Id: I42038fb8b5d24557b668235553edcb1ed3e48df8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264859
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
These were using 4x4 (SkMatrix44), but only temporarily, and it failed
with an upcoming change that makes SkMatrix44 -> SkMatrix explicit.
Change-Id: I8aa9adb209f10d2c04ca009d6d5f7fdafc264ae9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264998
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
GrVkGpu::createVkImageForBackendSurface() was trying to allocate
protected CPU-accessible buffer. That operation fails because
protected memory is not CPU-accessible. That buffer is used to
initialize image content with vkCmdCopyBufferToImage().
vkCmdCopyBufferToImage() allows source buffer to be non-protected
even when commandBuffer is protected. Updated buffer allocating
logic to always use non-protected buffer.
Bug: b/147809344
Change-Id: Id6b89ceb5391c57eb3076884a0d144dec9c43540
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264937
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Auto-Submit: Sergey Ulanov <sergeyu@chromium.org>
This wasn't even used...
Bug: skia:6718
Change-Id: I6543fd11b1f0d9136088fda8c6962aebc16ae5cb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264858
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This allows us to remove looking at the config to infer a color type when
setting up a Surface/RenderTargetContext for the copy.
Bug: skia:6718
Change-Id: I75b63480a84558c96b5eeb248cc6165f96b2a243
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264563
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
- Can convert raw code to dylib in place.
- Can track one fewer pointer for JIT code: no need
for both in-memory and dylib JITs at the same time.
- Remove disused fOriginalProgram.
- Split Program::eval/interpret to make profiles clearer.
Change-Id: I66d64a68016f1d1d7d19d5002927e9e277970612
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264816
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
I'm isolating this code into a single routine, so I can change it
over to using a bulk API from the strike. The goal is to remove
all uses of bulk metrics and images.
Change-Id: I8c1c9a4e619962c8e35084c026a4c4553fbeb577
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264837
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Use clamp and require a src rect instead.
Precursor to changing over to SkTileMode.
Possible perf regressions until we can incorporate domain optimizations
into effect factories rather than callers.
Make GrRRectBlurRectEffect use approx textures for its input mask
texture.
Change-Id: Id553016133c2fd522b7fa1e9759f176d354aa250
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264838
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This is a reland of dea2f34f09
Original change's description:
> Reland "Add new method for storing DrawOpAtlas texture index."
>
> This is a reland of c8b2e61540
>
> Original change's description:
> > Add new method for storing DrawOpAtlas texture index.
> >
> > Storing the texture index in the lower bit of each texture coordinate
> > seems to have issues on certain iOS devices. Rather than do that, we
> > use the sign of the texture coordinate to act as our storage bit.
> > To manage encoding 0 we map [0, N] to [-1, -N-1] to represent a bit.
> >
> > Change-Id: Ic588ee92cf858915a1833cf482d4b23bd11c1000
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263561
> > Commit-Queue: Jim Van Verth <jvanverth@google.com>
> > Reviewed-by: Brian Osman <brianosman@google.com>
>
> Change-Id: I901502c3d83ff9727c51ad4447b0cee733257649
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264566
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: I000bb74ca57e321084ca2d1d9dc2f0274880c0da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264689
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
This is mainly so we can test the compression code on macOS.
Bug: skia:9680
Change-Id: Ie0a2eacfe9100ee4ce4cc94c878d3032d6985832
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264480
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This enables tiled rendering when the extension is
reported AND the "optional" start and end tiling
gl functions were found.
Hopefully this will correct the hard crashes on the
Pixel 2XL waterfall bots, while still properly disabling
tiled rendering for the devices found in the Flutter bugs:
Bug: flutter:47164, flutter:47804
Change-Id: Ia96a89053305378d434304b7b4fbc0f5e49cd97e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264695
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This keeps an alias so code keeps building.
Bug: skia:9792
Change-Id: If8575468d929d2ca28bc2f9e82de27291fb19aa1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264691
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
The CTM of the path did not include the translate for the
origin. Directly transform outlines from original position instead of positions
relative to the initialOrigin. This allows the CTM to have the drawOrigin
translation, and the glyphMatrix to have the glyph origin translation.
Change-Id: I5b1595b2a8358f054f4cacd3e48fac78712c6980
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264681
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Dump the program code, link it into a dynamic library,
then dlopen() / dlsym() it to get the entry point.
This makes profiling in Instruments work,
and probably also makes gdb work better.
This is quite slow so I've made it opt-in,
opting only nanobench in for now.
$ ninja -C out nanobench
$ instruments -t "Time Profiler" out/nanobench --config 8888 -m bitmap_RGBA_8888_A_scale_bilerp --skvm
~~> https://screenshot.googleplex.com/nw1L83qjqV6
~~> https://screenshot.googleplex.com/49HSo6Xpzcs
Change-Id: I9f91c675149178021a7a05030541a5965afbbcb5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264748
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
I'm thinking of maybe starting fresh, and it'll help to have all this
out of my face. We'll always have Git.
Change-Id: I838f2fc33e793cfb4a73655d74e9e990ca3be1fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264747
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
3 new getters:
- localToWorld
- localToCamera
- localToDevice (same as total-matrix)
The current tracking minimizes overhead, by using a computed inverse to
produce the localToWorld/Camera. This can be change as needed in the
future (more precision, but more memory/overhead), but for now is
sufficient to try out the new APIs.
Change-Id: I85440318f36dca935124b782e110fe9c0152ae7a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264648
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Change-Id: I66a9e1dff1b3d877012b38804cfb9d13f2b65f2b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264579
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This reverts commit 59d529cafa.
Reason for revert: use-after-frees, *SAN bots
Original change's description:
> Simplify VertexRegenerator GrStrikeCache handling
>
> The SubRun has access to the GrStrikeCache pointer, there is
> no need to pass it around the VertexRegenerator.
>
> Change-Id: I867b1b29b29e595f92ad57505dcd27dd0f6b726f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264649
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,herb@google.com
Change-Id: I7de7841fdd1efb5df845613bd0116fbaf12d1c49
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264756
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
The SubRun has access to the GrStrikeCache pointer, there is
no need to pass it around the VertexRegenerator.
Change-Id: I867b1b29b29e595f92ad57505dcd27dd0f6b726f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264649
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Change-Id: Ia06186328bd6fdc12f42355ec8fea9fc82ff51a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264425
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
This reverts commit dea2f34f09.
Reason for revert: Seeing unexplained glitches on Pixel3 and Pixel4 in fontcache-mt.
Original change's description:
> Reland "Add new method for storing DrawOpAtlas texture index."
>
> This is a reland of c8b2e61540
>
> Original change's description:
> > Add new method for storing DrawOpAtlas texture index.
> >
> > Storing the texture index in the lower bit of each texture coordinate
> > seems to have issues on certain iOS devices. Rather than do that, we
> > use the sign of the texture coordinate to act as our storage bit.
> > To manage encoding 0 we map [0, N] to [-1, -N-1] to represent a bit.
> >
> > Change-Id: Ic588ee92cf858915a1833cf482d4b23bd11c1000
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263561
> > Commit-Queue: Jim Van Verth <jvanverth@google.com>
> > Reviewed-by: Brian Osman <brianosman@google.com>
>
> Change-Id: I901502c3d83ff9727c51ad4447b0cee733257649
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264566
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
TBR=jvanverth@google.com,brianosman@google.com
Change-Id: I8e5cbd61ba768e5b4b6df66189239e077b7327c4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264653
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Lift all the invariants for the loop into the onPrepare loops
from regenerate and updateTextureCoordinatesMaybeStrike.
* Simplify looping over geos and subRuns
* remove VertexRegenerator::Result
* remove fCurrGlyph
Change-Id: I75445c6d7113207a3b1544154b605af2c4cfcb31
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263778
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Caveat... I have no idea what this filter does. I just looked at some
code that appeared to be unpremultiplying in a dodgy way and rewrote it
to be simpler. This fixes the GM on Mac.
PS2 unpremultiplies in place, and leaves the bitmap tagged premul.
This feels funny, but I think it's consistent with the old behavior.
I want to see if this is why the layout tests fail.
PS3 reverts an unimportant diff.
Bug: skia:9784
Change-Id: Id5ddbc6424833706d21f279f6adfce71f6d9f9e8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264577
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: Id55d47c97102367face69bfaa32d82e7db4ce2e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264500
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This is a reland of c8b2e61540
Original change's description:
> Add new method for storing DrawOpAtlas texture index.
>
> Storing the texture index in the lower bit of each texture coordinate
> seems to have issues on certain iOS devices. Rather than do that, we
> use the sign of the texture coordinate to act as our storage bit.
> To manage encoding 0 we map [0, N] to [-1, -N-1] to represent a bit.
>
> Change-Id: Ic588ee92cf858915a1833cf482d4b23bd11c1000
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263561
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I901502c3d83ff9727c51ad4447b0cee733257649
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264566
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: Ie3545aae753e5ecb45f17c6fefa778c38f9507fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264419
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This reverts commit 1817e70938.
Reason for revert: a few bad GMs on a few devices.
Original change's description:
> Make SkGpuBlurUtils take SkTileMode
>
> This is to get ready for moving all of our texture domain
> implementation into GrTextureEffect.
>
> This may cause a short term perf regression we might make GrDomainEffect
> with unnecessary shader clamping.
>
> Change-Id: I04d9c4c6999539cfd35bda07b943c3b7eb224df8
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264397
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
TBR=bsalomon@google.com,michaelludwig@google.com
Change-Id: I5ec44a94e6d8ba62f16a43ea1f01e4471c13bf06
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264430
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
As written each sample() call uses its own uniforms,
which amplifies register pressure immensely, especially
for repeat, mirror, and bicubic.
Change-Id: I13043c4cdea530defe79dbf4b66201f2b2f8c3f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264475
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This CL has some extra headroom for upcoming kBC1_RGBA8_UNORM support.
Bug: skia:9680
Change-Id: I866c7fe12657a41575c57dcd001a6a09477fc44a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264096
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This is yet another debug tool there to help me on
machines that I can't profile with perf or vtune.
Reorganize debug hooks in SkVMBlitter a little.
Disabled on Windows... no llvm-mc, popen, or memmem.
Change-Id: I56d01a6df494aae126c66b9558f57b7449124c95
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264478
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
This reverts commit 1d17543133.
Reason for revert: android bots
Original change's description:
> Pass in a SkColorType into SkImage_Gpu ctor.
>
> This allows us to get rid of using the GrPixelConfig on proxy to create
> the SkColorType
>
> Bug: skia:6718
> Change-Id: I1758b79152fa1e8a1796e55d19f5e8ca0b0e8b7b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264396
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=egdaniel@google.com,robertphillips@google.com
Change-Id: I449e6b0750d611346791beb1dd1346106ad01741
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264469
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This is to get ready for moving all of our texture domain
implementation into GrTextureEffect.
This may cause a short term perf regression we might make GrDomainEffect
with unnecessary shader clamping.
Change-Id: I04d9c4c6999539cfd35bda07b943c3b7eb224df8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264397
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
This might be easier than building with SK_USE_SKVM_BLITTER defined.
Change-Id: I72c1f361195bacf5a14e6633dd49e9a5ad721cff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264383
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This allows us to get rid of using the GrPixelConfig on proxy to create
the SkColorType
Bug: skia:6718
Change-Id: I1758b79152fa1e8a1796e55d19f5e8ca0b0e8b7b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264396
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This reverts commit c8b2e61540.
Reason for revert: Seeing multitexture failures on Gold
Original change's description:
> Add new method for storing DrawOpAtlas texture index.
>
> Storing the texture index in the lower bit of each texture coordinate
> seems to have issues on certain iOS devices. Rather than do that, we
> use the sign of the texture coordinate to act as our storage bit.
> To manage encoding 0 we map [0, N] to [-1, -N-1] to represent a bit.
>
> Change-Id: Ic588ee92cf858915a1833cf482d4b23bd11c1000
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263561
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
TBR=jvanverth@google.com,brianosman@google.com
Change-Id: I9ba28eb800e608fb5ee1ce877b5ab8b5b99db261
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264421
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Storing the texture index in the lower bit of each texture coordinate
seems to have issues on certain iOS devices. Rather than do that, we
use the sign of the texture coordinate to act as our storage bit.
To manage encoding 0 we map [0, N] to [-1, -N-1] to represent a bit.
Change-Id: Ic588ee92cf858915a1833cf482d4b23bd11c1000
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263561
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This loads 32 bits instead of gathering 256 in the tail part of loops.
To make it work, add a vmovd with SIB addressing.
I also remembered that the mysterious 0b100 is actually a signal that
the instruction uses SIB addressing, and is usually denoted by `rsp`.
(SIB addressing may be something we'd want to generalize over like we
did recently with YmmOrLabel, but I'll leave that for Future Me.)
Slight rewording where "scratch" is mentioned to keep it focused on
scratch GP registers, not "tmp" ymm registers. Not a hugely important
distinction but helps when I'm grepping through code.
Change-Id: I39a6ab1a76ea0c103ae7d3ebc97a1b7d4b530e73
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264376
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Some TODOs left over to make the scalar
tail case better... as is it issues a
256-bit gather for each 32-bit load!
I added a trimmed down variant of the existing
SkVM_gathers unit test to test just gather32,
covering this new JIT code.
Change-Id: Iabd2e6a61f0213b6d02d222b9f7aec2be000b70b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264217
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Propose a standard way to talk about the camera (etc) in SkCanvas:
- client provides 3 matrices: viewport, projection, camera
- canvas->concat(viewport * projection * camera * invert(viewport)
- camera and projection are taken straight from the textbook for 3D
- "viewport" means a matrix that transforms +-1 square about the origin
to the clients working canvas. A simple way to describe it is:
"specify the area-of-interest with a rectangle and z_scale"
Expose the ctm as a 44 from canvas for now. Likely we will add these
3 new matrices to canvas, and each may have a getter.
Bug: skia:
Change-Id: I6fa79c56956e060c17569848a81e13c13cb0981a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264221
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
This does the equivalent of dst = *(src + off),
which we use to find our gather base pointer in gather32.
Change-Id: I09ca7bfd404d7dce6de454ef1ed4eee78ab29932
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264216
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
A complicated instruction to say the least!
A "fun" wrinkle is that all the ymm registers must be unique!
(And the mask register is cleared by the instruction...)
Still kind of TODO is what that 0b100 r/m in the mod_rm() means. Every
variant of the instruction I've assembled seems to have it set to 0b100
(e.g. 0x0c or 0x04) but I'd feel better if I knew what it meant.
Change-Id: Ia4ff5f8175bff545e2d10bb2d1b14f49073445a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264116
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Log shader compile "cache miss" and "cache hit" tags. Shader
compile tags are logged even if debug.hwui.skia_atrace_enabled is
not enabled. "shader_compile" tag measures the total time to
prepare the shader (regardless of cache miss or hit).
"cache_hit" measures the time to load the binary program from
cache (with glProgramBinary). "cache_miss" measures the time
to compile from SkSL to GLSL, compile GLSL and link the program.
Test: Ran systrace on android
Bug: b/146635333
Change-Id: I984b9681cdcf78fc5f4a2e2ef0ad072ebc851ca1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264097
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Stan Iliev <stani@google.com>
In at least 10.15 CoreText adds the value of 'trak' at the current size to
the advances it produces. This appears to stop it from doing so.
Bug: skia:9544
Change-Id: I7dd56d1517ab502671130853b96acc9361d38361
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260116
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
Chrome layout test suppression has landed.
This reverts commit 67d0f3fd72.
Change-Id: I5b9963b306f29a41cf36e1802e7eebda010f186d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/264016
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This reverts commit 4a46758db8.
Add guard to Flutter
Change-Id: Ief0e5cb36af13c8f00a36a617d0384622012d644
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263937
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
There are devices that advertise this extension but don't actually
provide the GL entrypoints. This is causing live crashes.
Bug: flutter:47164
Bug: flutter:47804
Change-Id: Idded47e8dbd4462463ad91a62b06b0df3245f0c1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263809
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This completes pushing through the new virtual didConcat44() to our
subclasses, and introduces didScale() for future optimizations. We
don't call didScale yet, until external subclasses are also updated.
This was derived from https://skia-review.googlesource.com/c/skia/+/263349
bug: skia: 9768
Change-Id: Ia26b48e76e323037082e8f2ee83673c26b99ebed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263702
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This reverts commit 3723fb7e85.
Fix: don't call the inherited methods on canvas
bug: skia: 9768
Change-Id: Ifb913bd30452ba8389399f709d40c7b58d6157d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263776
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Change-Id: If0eabff73f6de8877d8eb7444bc1f1d75a1b578c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263708
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 is necessary to support the async readback API on Windows Chrome.
Transfer from buffer to texture is still disabled as the unit test
still fails.
Bug: chromium:1040643
Change-Id: I0e16437c066fadfdd8dbbbcaf376c6901a538063
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263528
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
We were never calling specialize() to bake in the values of ins,
so do that. Add uniformSize() to get the size of just the uniform
values. (The interpreter asserts that the size of the uniforms
being passed in matches the expected size from the ByteCode,
so these need to match up).
Added a unit test that uses both 'in' and 'uniform'.
Change-Id: I595822171211d35a17d5977fa790de0d1bbd6c78
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263519
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
1. Feature: Clients need to override didConcat44() (new data)
2. Perf: Clients need to override didTranslate (and now didScale) so our
default impls can be empty.
Need SK_SUPPORT_LEGACY_CANVAS_MATRIX_VIRTUALS flag to stage this in
clients (anyone who subclasses SkCanvas)
Before (with flag)
120.87 canvas_matrix_4x4 8888
108.10 ? canvas_matrix_3x3 8888
108.13 ? canvas_matrix_2x3 8888
141.54 canvas_matrix_scale 8888
128.04 canvas_matrix_trans 8888
After (without the flag)
...
90.79 canvas_matrix_scale 8888
94.51 canvas_matrix_trans 8888
bug: skia:9768
Change-Id: I6f500138dd6b2b24754dc065c650d0bd3c341540
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263349
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
This reverts commit a92320d4e6.
Reason for revert: Blocking Chrome roll.
Original change's description:
> Remove GrPaint::addColorTextureProcessor
>
> Just make the effect and then add it.
>
> Makes it easier to make changes to GrTextureEffect::Make going forward.
>
> Also add default param for matrix (identity).
>
> Change-Id: I52073f11a0a78b971bb512627198ee1724bfdac7
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263518
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com,michaelludwig@google.com
Change-Id: I2618844f5a8f5f1873dd79142caafd8939384e9e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263560
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Apparently Chrome is intentionally setting GrVkYcbcrConversionInfo's fFormat
field to VK_FORMAT_UNDEFINED. If that is correct we should update our tests
to match. For now this will allow the Chrome video tests to be re-enabled.
Bug: 1037949
Change-Id: Ifb985f2bcda48135f312ee7412d2859d9277a1bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263558
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
We used to call GrPathUtils::worstCasePointCount. But this method
spends a lot of time recursing and subdividing curves, which is
irrelevant to counting contours.
Change-Id: Iba47ecc5ae59eb0b17c8441498fc0d47e37efd3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263096
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Change-Id: I1c7444a94a4dea5929eeb7370fae1074cda94c36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263522
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
The values of result are all functions of fCurrGlyph. Make
that calculation once.
Change-Id: I789be0e9384a2d98672bf111279d1f53b8b0ad77
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263336
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Just make the effect and then add it.
Makes it easier to make changes to GrTextureEffect::Make going forward.
Also add default param for matrix (identity).
Change-Id: I52073f11a0a78b971bb512627198ee1724bfdac7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263518
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Calling specialize does bake in the value of 'in' variables, but the
variable declarations are still present. So move the assert to check
for references to those variables instead.
Change-Id: Ia5a310d66b500b2741ddf0c1f68110f08a5ee937
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263517
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
constexprify GrSamplerState
pass/return GrSamplerState by value (it's 3 bytes).
Remove unused function from GrTexturePriv
Change-Id: Iffecd941500acf5653f01cc88b42ff1d45678b54
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263346
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
When a client calls makeRasterImage, they're likely to hold on to that
image, and throw away the source (GPU or Lazy). In that situation, it
makes no sense to leave the buffer in the resource cache.
Change-Id: Ic0be8ceb643ed9196526469516be0d200bea42fd
Bug: b/144232910
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263347
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
I had to remove this yesterday when I realized we had those slightly a>1
colors, but now that we added this alpha clamp to [0,1] today, it's now
sensible to track if the src is in gamut again and use that bit to skip
final clamps. I've assert_true()'d the crap out of this to make sure
I'm thinking straight; those run in debug builds, even when JITted.
PS 2 cuts the assertions down to just where they test subtle invariants,
removing the asserts that merely check the immediate preceding lines of
code were correct. It is overkill to clamp the shader color to gamut
then immediately assert that the shader color is in gamut.
Change-Id: I045663ebf8cf50725ba800d1bccc4cf1fd48e96f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263168
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Chrome (the only user of the flag) is now updated.
Change-Id: I137f471588238f2b1cd4bc6013affb8075d0c561
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263341
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
This doesn't resolve all the problems here but does substantially improve the situation. In particular, if the device-space stroke is greater than 1 in one axis and less than 1 in the other, the smaller side will still appear darker than expected.
Bug: 935303
Change-Id: I3ff9bc73cad5ad5b8e13ef5aa7b46bbf4835753b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263024
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
- allow clients to pass in raw-array at public level
- rewrite m44 concat to take raw-array for 2nd input
Extended canvas_matrix bench to also time 44 concats:
Before
207.51 canvas_matrix_4x4 8888
100.75 ? canvas_matrix_3x3 8888
100.79 canvas_matrix_2x3 8888
140.93 canvas_matrix_scale 8888
133.35 canvas_matrix_trans 8888
After
120.80 canvas_matrix_4x4 8888
...
bug: skia:9768
Change-Id: Iaa361b9897a183d930fd31aa67327caed25cd51d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263209
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
This streamlines the dump() methods a bit,
and makes it easier to see what ops have not
yet been implemented in the JIT.
Change-Id: I22d0a206e847451452be75b586c8b15eb0c1af78
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263456
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Flutter on the web wants to be able to extract arbitrary frames from
an animated image and pass those into functions like:
drawAtlas, drawImage, drawImageRect
This should allow that to happen w/o having to add lots of variants like
drawAnimatedImage. If this sticks, is drawAnimatedImage still useful?
(maybe it saves a copy?)
Change-Id: I99d7045c5dea61d0a1bd6d335c88e7517f2c4fc2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263020
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
- Add YmmOrLabel struct to represent the concept that many
x86 instructions can take a final argument as either a
register or memory address, and that they all handle them
the same way.
- Convert existing overloads like vmulps() to use YmmOrLabel.
- upgrade some other instructions to take YmmOrLabel
- use them to implement today's new _imm ops
This feels like a good spot for implicit constructors, no?
Change-Id: I435028acc3fbfcc16f634cfccc98fe38bbce9d19
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263207
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
After this transformation, I think much of the
code in regenerate is the same.
Change-Id: I6ae3668181c6184b085b2b9862d80db1a23de586
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263203
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
extract() can generate silly instruction patterns like
v0 = ...
v1 = shr v0 24
v2 = bit_and v1 FF
v3 = whatever v2 ...
This CL skips those pointless bit_ands when we see the
mask is an immediate and (0xFFFFFFFF>>shift) == mask.
Change-Id: I2bb3847fbb2efdf24d024870ac37b37bb8f9aa3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263101
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This mostly handles cases where we are wrapping a GrBackend* or an already
made proxy.
Change-Id: Ieb33eb51f7db84611ade0f8243b6d9023ce8e390
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262234
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
- Remove extract... it's not going to have any special impl.
I've left it on skvm::Builder as an inline compound method.
- Add no-op shift short circuits.
- Add immediate ops for bit_{and,or,xor,clear}.
This comes from me noticing that the masks for extract today are always
immediates, and then when I started converting it to be (I32, int shift,
int mask), I realized it might be even better to break it up into its
component pieces. There's no backend that can do extract any better
than shift-then-mask, so might as well leave it that way so we can
dedup, reorder, and specialize those micro ops.
Will follow up soon to get this all JITing again,
and these can-we-JIT test changes will be reverted.
Change-Id: I0835bcd825e417104ccc7efc79e9a0f2f4897841
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263217
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
I'm seeing these come up a lot in skvm image shaders.
It's worth noting that everything is symmetric but sub().
min() and max() are a _little_ subtle because ultimately the
instructions they imply are not entirely symmetric when NaN
is involved, but I think we can probably get away with it.
Change-Id: I7275ebad61845e720cd26cba28db5b8210951e20
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263099
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
GL clamps to the limits of the destination format before blending,
so for consistency I think we ought to also.
I believe it's sufficient to add just this one new clamp for alpha to
[0,1] before the other clamps, only when is-premul && is-normalized:
- our GPU backend only draws premul, so there's nothing
to be inconsistent with when drawing into unpremul;
- since we're already clamping rgb to alpha in these cases,
clamping alpha first to [0,1] clamps rgb to [0,1] also.
Change-Id: If77bb4ea8614e6ed100d37f27427d9b2fe12374f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263098
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Add framework for unit tests that draw (CPU and GPU) with a runtime
shader, as well as couple example tests.
Change-Id: I43b3b39e86634ec55521a2689a4c55c21939dce5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262809
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
- Add lerp(F32,F32,F32) and lerp(Color,Color,F32).
- Rewrite bilerp to use lerp(), simplifying the weights we
calculate and generally making how bilerp works stand out
more clearly.
This trims ~4 registers from an arbitrary program I spot checked.
But I think the clarity is the big win.
Change-Id: I4d735c940ed9f3744aeae1c643bf58d68bf65605
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263199
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: Iad9fadd113d0c97e8ece51df19c7824252d7eb9c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263197
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
The reason for the assert was breaking an assert, that if the CTM was scale/translate, that after
a preTranslate, it should still be that.
This is true... unless the new translate values are non-finite. In that case, we might turn a zero
into a NaN, (0 * non_finite --> nan), so we either have to require finite args (which we don't
at the moment) or we can't make this assert. This re-land removes that assert.
This reverts commit 268ed57d71.
Change-Id: I3c48a0aa17649351a246c1fbab5449f2d59aaf84
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263023
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Reed <reed@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit 98bfcc7ff3.
Reason for revert: Flutter hitting assert:
../../third_party/skia/src/core/SkCanvas.cpp:1432: fatal error: "assert(fIsScaleTranslate == fMCRec->fMatrix.isScaleTranslate())"
Original change's description:
> Extend SkCanvas matrix stack to be 4x4, but with (basically) the same public API.
>
> Devices receive the 4x4, but by default they simply downsample it to SkMatrix.
>
> New SkM44 matrix for the impl. It differs from SkMatrix44 in a few ways
> - no tracking of "type"
> - faster for concat, as it does not use doubles for intermediates
> - much simpler API
>
> There are some low-bit differences in some gms, so adding a flag for clients to
> stage this change. (due to faster but lower-precision in SkM44::concat)
>
> Performance: running canvas_matrix bench
>
> 3x3 version:
>
> 167.93 canvas_matrix_3x3 8888
> 209.97 canvas_matrix_2x3 8888
> 174.87 canvas_matrix_scale 8888
> 135.30 canvas_matrix_trans 8888
>
> 4x4 version:
>
> 116.59 canvas_matrix_3x3 8888
> 105.40 canvas_matrix_2x3 8888
> 159.83 ? canvas_matrix_scale 8888
> 113.47 canvas_matrix_trans 8888
>
> Why faster?
> - not tracking matrix_type helps a lot it seems
> - faster full concat (no doubles)
>
> Before adding the specialized preConcats...
>
> 318.11 ? canvas_matrix_3x3 8888
> 339.38 canvas_matrix_2x3 8888
> 383.28 canvas_matrix_scale 8888
> 251.67 canvas_matrix_trans 8888
>
> Change-Id: I68eac942919fa5418081e789f31710a1e2a752da
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262056
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Mike Reed <reed@google.com>
TBR=mtklein@google.com,bsalomon@google.com,herb@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,michaelludwig@google.com
Change-Id: I28c3d69c19ba44ab65ca7c059221b64c7dffef22
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263021
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit 1c16b43033.
Reason for revert: Red on tree
Original change's description:
> Move makeDeferredRenderTargetContext calls to factory on RTC.
>
> Change-Id: Iaa8f5829d9f8650ff27a60f75fb2216f016ab85e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262058
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
TBR=egdaniel@google.com,bsalomon@google.com
Change-Id: I9e3c9d13c66b5437c87ad7136d283fa4ac81df1f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/263019
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
* Rename doRegen -> updateTextureCoordinatesMaybeStrike
* Collapse all regenTextureCoordinates if statements
Change-Id: I0afba60c657f9b805b07247673d9f24c265b9a0b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262937
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Try to move calculations out of the main atlas update loop.
Simplify expressions involving the result values. Invert the if-statement
and for-loop to do even less work.
Change-Id: Ibef88e65fb5bb8eeeaec13f0ae0ba1acb4d2d87d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262926
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Implements a simple first pass for a path renderer that uses the
classic Red Book "stencil then cover" method, and linearizes curves
with GPU tessellation shaders.
The new path renderer is disabled by default, and can only be enabled
in the viewer UI or by passing the "--pr gtess" flag.
Change-Id: Ic9354952e93c8b108577961760b4f0daa82d35aa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261715
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
It's interesting but perhaps not consequential that bilerp can produce
alpha just greater than 1.0f. I think this setup of what clamps what
where mirrors the GPU backend more closely. No pixel diffs.
The p3 GM would draw a little differently if we only min(rgb, alpha),
and that would make it inconsistent with the GPU backend, so I've kept
it as clamp(rgb, 0, alpha).
Change-Id: I5cfacb9aae56c33b542cbc4e5e740b4d24c6b9e3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262812
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
It's possible for SkSL to get past the initial compile (with generic
Settings), then fail to compile once we install the device's caps.
Change-Id: I082edae13659f3ed6501e87eee67eb3b9cd03303
Bug: chromium:1039366
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262386
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This reverts commit d7436a37ff.
Restores old file order in gpu.gni until Mac/Metal issue can be
debugged.
Change-Id: I6e2ee3bdc3b39270aeaaf28b9613e4ac49d38e1e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262801
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
One option for fixing bilerp asserts is just to commit to clamping its
output. Will write up another option that I think mirrors the GPU
backend more closely as a patch on top of this CL.
Few minor things here too:
- Use clamp() more now that we have it.
- Update assert_true() calls to print out the interesting value
instead of the condition.
- Clamp alpha before rgb for clarity in the case we're clamping rgb
to that clamped alpha. Either order actually works, but this order
is more obviously correct.
Change-Id: I8f05834fd862ba8bb45b961e01563af091232c95
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262811
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
- Add instruction numbers to program dumps.
- Dump the program when an assertion fails,
and print the failing condition or an optional
other value (e.g. if alpha outside [0,1], print alpha).
With all that and the new commented assert enabled, I'm seeing that
sometimes we get a bilerp alpha of 0x3f800001, just a little more than
1.0f. Fix still tbd.
Change-Id: I2c20e41ae370d8cd2963e2dbf0fd91aa0fd50061
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262808
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Devices receive the 4x4, but by default they simply downsample it to SkMatrix.
New SkM44 matrix for the impl. It differs from SkMatrix44 in a few ways
- no tracking of "type"
- faster for concat, as it does not use doubles for intermediates
- much simpler API
There are some low-bit differences in some gms, so adding a flag for clients to
stage this change. (due to faster but lower-precision in SkM44::concat)
Performance: running canvas_matrix bench
3x3 version:
167.93 canvas_matrix_3x3 8888
209.97 canvas_matrix_2x3 8888
174.87 canvas_matrix_scale 8888
135.30 canvas_matrix_trans 8888
4x4 version:
116.59 canvas_matrix_3x3 8888
105.40 canvas_matrix_2x3 8888
159.83 ? canvas_matrix_scale 8888
113.47 canvas_matrix_trans 8888
Why faster?
- not tracking matrix_type helps a lot it seems
- faster full concat (no doubles)
Before adding the specialized preConcats...
318.11 ? canvas_matrix_3x3 8888
339.38 canvas_matrix_2x3 8888
383.28 canvas_matrix_scale 8888
251.67 canvas_matrix_trans 8888
Change-Id: I68eac942919fa5418081e789f31710a1e2a752da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262056
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
Tweaking SkVM.h requires ~550 build steps because SkShaderBase.h
includes it. By switching that to forward declarations of the types
using SkVM_fwd.h, it's down to ~15. Big deal for laptop productivity.
Change-Id: Ide5cc776b8a0c6fa6473cf5f43acabdf566e8808
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262860
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
- Add fract(), clamp().
- Refactor sampling to support bilerp and bicubic,
with bicubic left as an easy follow up.
I _think_ this is failing asserts that we left alpha in [0,1]. For now
I've opted bilerp into the same clamp that bicubic will need eventually.
Will follow up to remove bilerp clamp... we shouldn't need that to my
knowledge. On the other hand, this is the first time we ever check.
Cq-Inlcude-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-SK_USE_SKVM_BLITTER
Change-Id: I74e3e3c5fb5cda200f704f1e84ac1d01653b2f09
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262782
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
This reverts commit 90673ec665.
Reason for revert: Causes metal bot failures
Original change's description:
> Rename GrSimpleTextureEffect->GrTextureEffect
>
> It will become less simple.
>
> Change-Id: I409d0faba386597ae05738273d5ff773501eb358
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262383
> Auto-Submit: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
TBR=bsalomon@google.com,brianosman@google.com
Change-Id: Id25c9cde3c2048149409745f163e42c588de70c1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262514
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
We'll need something like this to extend the lifetime of our
SkBitmapController::State (and the bitmap and mipmaps it holds)
to match the lifetime of the blitter. This is particularly
important particularly for kMedium where we're not sampling off
the original image.
Not sure which other effects will need this sort of thing, if any.
I think gradients would just write the colors directly into uniforms.
Change-Id: Idefe620f88113ed436e04a101195b27aec1230db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262522
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This turns out to be way easier than the SkRP version.
Kinda just does what you'd hope.
Change-Id: I71e404b989f8420a20b0e6c7f11fd29bb7f49f5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262456
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
- Specialize on typical matrix types.
- Expand image formats to match what SkVMBlitter can draw to.
- Add floor() and abs(), and use them for repeat and mirror.
Change-Id: Ieab539681f5f9fddf1617bb72405ed54fa42de4d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262439
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
If doRegen is called and fCurrGlyph > 0, this implies that the previous call
to doRegen exited early on a code == GrDrawOpAtlas::ErrorCode::kTryAgain.
We can calculate brokenRun directly from the fact doRegen is called with
fCurrGlyph > 0.
Change-Id: I1ee7b88e59708ae329c2204c1d7779a295cd9d33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262378
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
It will become less simple.
Change-Id: I409d0faba386597ae05738273d5ff773501eb358
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262383
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Clean up the control flow, to try to see the invariants more clearly.
Change-Id: Ie07090950650166e99dff334e85189fe581a5efe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262235
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Validating that only certain types are allowed as in or uniform.
Change-Id: I941da448bffec06158e67fbf653833846d9fe3db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262222
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Adds workaround for swiftshader bug.
This reverts commit 460b6c1dd8.
Change-Id: I703789c9754fed3ecbf65a08b509cb1fc0013415
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262377
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Basic support for clamp/clamp/nearest/RGBA-8888/premul images.
A couple little changes to make this work:
- add pixel-center offset to shader (x,y)
- change the signature of gather??() calls to work
more naturally with how we let effects build uniforms.
Instead of gathering directly from one of the program
arguments, load the gather base pointer off another
uniforms pointer, just like any other uniform.
- remove the default argument to uniform??() so that
they parallel the new gather??() calls more closely.
There was only one place that was using the default
and I think it's clearer as an explicit 0 offset.
- centralize some more helpers onto skvm::Builder so
we can use the in both SkVMBlitter and SkImageShader.
Some diffs:
- very, very small color diffs probably due to slightly
different math converting between byte and float or blending;
- small sampling coordinate diffs where skvm + SkRP agree,
and the legacy shaders disagree. That's fine by me.
Change-Id: I72634e7fed4f13e6cb41b8067104760f392ea3bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262368
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Change-Id: Icbe887266d201bc6d64555f0e793765bf641e4b6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262230
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Client code has been migrated to SkRuntimeEffect.
Change-Id: Ied7d7bdf2a4e2bc1b9547fa5284a0b0a938c034f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262143
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This saves about 32kb uncompressed, 21kb gzipped from CanvasKit.
This would also save about 11kb from a Flutter build.
Bug: skia:9733
Change-Id: I0a21b7279a73c692ea39aa28ac00d70d24b70373
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262218
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Cap size of draws by vertex buffer size.
Remove size limit in combining since we now enforce a limit
when preparing draws. (This limit wasn't effective in bug
repro scenario as the large number of glyphs are in a single
run).
Fix another bug discovered along the way: We increase the
number of proxies in a FixedDynamicState after having recorded
draws. However, the draws take refs on the proxies in FDS and
unref them when destroyed. By adding the proxies late we cause
the ref count to underflow. (This needs a more systematic fix
outside the scope of this change).
Bug: chromium:1018511
Change-Id: I79fe446d97c573196653a18792462bd46b9ac4c6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262001
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Most interesting thing is that we can use SkColorFilterShader with a
no-op color filter to apply alpha after the shader. We added that
feature to allow us to fold color filters into the shader, but it works
equally well to fold in alpha too.
The rest is basically deleting TODOs as unimportant.
Change-Id: Ib572d2f37b74ef1093c1e99ddee3642d4cfa5a76
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262344
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This clarifies the code instead of keeping fCurrGlyph and
glyphIdx in sync.
Change-Id: I2746eac3c681d14a1cb0eb73b91de920b5e6fbbc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262151
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Remove some unused functions/macros.
Move two functions only used by GrBufferAllocPool there.
We only ever used GrSizeAlignUp with pow 2 alignments. Require that,
rename, move to GrTypesPriv.h (along with GrSizeDivRoundUp).
Change-Id: I1a7248952d1905f16f02de2028d65768b186acee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262061
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Client code has been updated to use SkRuntimeEffect directly.
Change-Id: If471fa413ea60087d6445fce20b8363a07a64049
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262063
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
As they are a significant chunk of code, this reduces the size of the
release executable.
Change-Id: Ib764b3ec6244629e50941b0101a540e49d56c320
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261955
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
While staring at this code snippet for too long,
I realized it's possible to set a crazy color on
a paint and trick the code at head into thinking
that it's normalized, using the fast sRGB curves
erroneously. Might as well fix it.
Change-Id: If16c1476dbfc913adc8ba079bdb48cab374b681d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262029
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
I _think_ I've sorted out everything that went wrong the first time:
- Since we're not always kPremul by the time we clamp, we now
need to clamp to [0,1] when either fClampAsIfUnpremul is set
or... we're actually unpremul! That's the first diff we couldn't
figure out.
- This was not the only use of apply(pipeline, SkColorType),
and removing it made things fall back on apply(pipeline, bool),
which was making us think everything was normalized. I think
that'll get the layout tests.
So I think this is now everything we'd want, uncompromised.
Change-Id: I46f3cd1cc79358e55f5c46a425bacb1de6932c7b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262022
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
fBrokenRun indicates if the atlas became full at any
glyph other than the first glyph of the SubRun.
* Remove getter and setters for fAtlasGeneration.
Change-Id: I603f15e7a2b3b632e184a985f0143d6a711f25e9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/262000
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I0b11d4210c6e663cfb4854fc33e1396fd79fe9a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261780
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This is a reland of 4f275cfe0e
Original change's description:
> pass more information to shaders
>
> If we're going to write an image shader, we're going to need to know the
> matrix and some bits of the paint.
>
> Instead of all possible information, I decided to pass just what the
> image shader needs for now, and will pass along more as I go.
>
> I've added a stub implementation of SkImageFilter as a way to make sure
> I'm threading everything it'll need through.
>
> Change-Id: I98de1724056dbc0902a34fc31da8ec6bdf38dc34
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261801
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
Change-Id: I2541903ad559fe8b584e46b1e9d68ec804b7a15d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261779
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Updated internal usage of SkRuntimeColorFilterFactory to use this
instead. Once this lands, we can update SkiaRenderer in Chrome to
use it, and remove SkRuntimeColorFilterFactory.
This doesn't support a CPU callback function in the runtime color
filter - I don't think we're going to support that in the long term.
Change-Id: I714413bd590cf5cf4416ef62809a6e1d92211688
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261681
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Use the original alpha in the unpremul color.
Bug: chromium:1024935
Change-Id: I6a721431781f0ef42a3f162d39f8bbac924a2c30
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261680
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This reverts commit 4311f19158.
Reason for revert: layout test failures seemingly not having to do with bicubic+clamping+sRGB
Original change's description:
> refresh image shader cs/at logic
>
> Was working on SkVM versions of these when I noticed the existing
> SkRasterPipeline code wasn't terribly tidy. The main gist here is that
> we can let SkColorSpaceXformSteps::apply() handle almost all the
> final transformation on the way out of the shader.
>
> I remain a little puzzled why I got a few significant diffs when I tried
> leaving the A8 color unpremul, letting the steps handle matching the
> alpha types instead of me manually with SkRasterPipeline::premul. For
> now I've left that as-is.
>
> Similarly I think we could transform that A8 color ahead of time rather
> than doing that over and over at runtime. This is something I've left
> as a TODO, largely because I don't care enough about coloring A8 to
> investigate right now.
>
> I've inlined all the logic of explaining src-is-normalized into this
> shader (which is its only user). That makes it clearer that we can
> always set that bit when bicubic sampling, since we're clamping anyway.
> This causes some invisible diffs when switching to the optimized sRGB
> transfer function stages, which we may or may not be able to get away
> with without guarding...
>
> Change-Id: Ie6670c6ca5c69958f41aac88324341a10eb3bee1
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261763
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,brianosman@google.com,reed@google.com
Change-Id: I9c414cb751d9e51219b18dc3d4f54c92d06664ce
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261815
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This reverts commit 60b69ecc8d.
Reason for revert: <INSERT REASONING HERE>
Original change's description:
> clarify that there's no kMedium here
>
> Reword to make it clearer we're only handling kNone, kLow, and kHigh;
> kMedium has been transformed into kLow or kHigh already at this point.
>
> I think it's particularly easy to be confused by the line
>
> if (quality > kLow_SkFilterQuality) { ... }
>
> Change-Id: If78cb6e946e26d08f5acd807d32e0446c69061b1
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261765
> Auto-Submit: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>
TBR=mtklein@google.com,brianosman@google.com
Change-Id: Ifb639ce76ec8e533ed6af7ddcb2d2fe8c66a6558
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261814
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This reverts commit 4f275cfe0e.
Reason for revert: <INSERT REASONING HERE>
Original change's description:
> pass more information to shaders
>
> If we're going to write an image shader, we're going to need to know the
> matrix and some bits of the paint.
>
> Instead of all possible information, I decided to pass just what the
> image shader needs for now, and will pass along more as I go.
>
> I've added a stub implementation of SkImageFilter as a way to make sure
> I'm threading everything it'll need through.
>
> Change-Id: I98de1724056dbc0902a34fc31da8ec6bdf38dc34
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261801
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
TBR=mtklein@google.com,reed@google.com
Change-Id: I660846f55a6fd9d118a6b58ea7d853b91d708aee
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261813
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
There was never a need to distinguish between "all" and "default".
We can just use kDefalut everywhere. And as we add new path renderers,
we can exclude them from kDefault until they are ready to ship.
Change-Id: I378aa1e195d40daef6a2c54f9c8e829208780ebe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261714
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
If we're going to write an image shader, we're going to need to know the
matrix and some bits of the paint.
Instead of all possible information, I decided to pass just what the
image shader needs for now, and will pass along more as I go.
I've added a stub implementation of SkImageFilter as a way to make sure
I'm threading everything it'll need through.
Change-Id: I98de1724056dbc0902a34fc31da8ec6bdf38dc34
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261801
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Bundling the pipeline stage arguments also simplifies the code in
several spots.
Change-Id: I85e81b436a39378f753cc9404b6eeb27fe055525
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261778
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reword to make it clearer we're only handling kNone, kLow, and kHigh;
kMedium has been transformed into kLow or kHigh already at this point.
I think it's particularly easy to be confused by the line
if (quality > kLow_SkFilterQuality) { ... }
Change-Id: If78cb6e946e26d08f5acd807d32e0446c69061b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261765
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Was working on SkVM versions of these when I noticed the existing
SkRasterPipeline code wasn't terribly tidy. The main gist here is that
we can let SkColorSpaceXformSteps::apply() handle almost all the
final transformation on the way out of the shader.
I remain a little puzzled why I got a few significant diffs when I tried
leaving the A8 color unpremul, letting the steps handle matching the
alpha types instead of me manually with SkRasterPipeline::premul. For
now I've left that as-is.
Similarly I think we could transform that A8 color ahead of time rather
than doing that over and over at runtime. This is something I've left
as a TODO, largely because I don't care enough about coloring A8 to
investigate right now.
I've inlined all the logic of explaining src-is-normalized into this
shader (which is its only user). That makes it clearer that we can
always set that bit when bicubic sampling, since we're clamping anyway.
This causes some invisible diffs when switching to the optimized sRGB
transfer function stages, which we may or may not be able to get away
with without guarding...
Change-Id: Ie6670c6ca5c69958f41aac88324341a10eb3bee1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261763
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
- 'in' variables can't be arrays (applies to all SkSL)
- 'in' and 'uniform' variables are restricted to a fixed
list of types.
Change-Id: I957ce1ad33aaf6b5970ca7204c568bb533bc86d6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261436
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Inlining SkPicturePlayback::ReadOpAndSize() simplifies it, as does
removing support for the old op encoding, which was the "old format"
even back in 2014.
Change-Id: I304a777618403667b7b6c11110e3a781a5a29df3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261594
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Bug: oss-fuzz:19583
Change-Id: I656e8ddd5699cfc4998f3f424a1a46380f310c63
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261591
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
This workaround has not stopped long shaders from randomly failing
to compile on TecnoSpark Pro 3. It just stops us from generating some
shaders that fail to compile in unit tests.
Also, it reveals rendering issue when framebuffer fetch is used with
MSAA on this device (instead of adv. blending).
Change-Id: I8026ded6d0d75743dc2c508df5c4ffc207d8b5a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261736
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This reverts commit 4d745d62e3.
Reason for revert: broke Chromium tests
Original change's description:
> Clean up GrSimpleTextureEffect.
>
> Make it look human written instead of machine generated.
>
> Use perspective texturing builtin sample() when coords are three component
> rather than dividing to make them 2d.
>
> Change-Id: I9694857beaf35733077d0472d1eae43b5da933d0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261677
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com,brianosman@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: I8d7a5c5553434528785aa3dd2e5538f893c1cc40
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261679
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
Implements tessellation support at the Ganesh level, and adds back
door methods for supplying raw GLSL strings directly to the OpenGL
driver. Adds a new gm to verify tessellation is works in GL.
Change-Id: Idfc285b955cbe5e8e6bf0475be8b518b0cc6ed2c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261196
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This makes the effect *be* the factory, so we can get rid of
SkRuntimeShaderFactory (and later, SkColorFilterFactory).
Change-Id: I2cd95f1380a0ec1e65fe5a18b1226c042598a8bd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261439
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Make it look human written instead of machine generated.
Use perspective texturing builtin sample() when coords are three component
rather than dividing to make them 2d.
Change-Id: I9694857beaf35733077d0472d1eae43b5da933d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261677
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Change-Id: Ia189fa2bec80093ddd6e2db35054db31c56106d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261676
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I116c14f69066b20eab145e3210af65ea446cfc25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261551
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Close over all the fields for updating the color and translation. Remove unneeded
accessors. Simplify the calculation of the translation.
Change-Id: I144b61af446b48a32786da8618aea4714e4dd62a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261545
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: Ie4aad36164352dcb4ae364b3cfbabfc5f1493447
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261538
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
The atlas calculations and the color adjustment are do not interact, and
this has to happen no matter how many times the atlas is adjusted.
Change-Id: I571ca4bf18b133bea390787e5f58aef6334bdedb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261543
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
In addition, hoist the calculation to run once at the very beginning because
this translation is always done to each vertex regardless of the atlas changes.
Change-Id: I8001d02140c05fd8b2cd530f75ee2f58073374e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261539
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: If0c11ea94f6035442a6f4fcbc3a9bd16ab1e2e70
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261443
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I76f57a11c66c708462e4c91cc5cf8967d60b78c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261442
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: I58e5c192ae81b4464b74e02655a43008da9e36f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261441
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Change-Id: Idcd4f2f45791cdfef81d2894f68fe4119fd42296
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261440
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit af203a677a.
Reason for revert: breaking the flutter roll?
Original change's description:
> make clipIsWideOpen virtual, so device's don't have to rely on regions
>
> Change-Id: I362e641f3cf6ae31fac8ffc5980148f43874f6dd
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261285
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Mike Reed <reed@google.com>
TBR=bsalomon@google.com,fmalita@chromium.org,reed@google.com,michaelludwig@google.com
Change-Id: I13f4dd4419a3b30961c61834faf6198ff7dc3619
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261378
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Causes shader compilation to fail in Programs test on Tecno Spark 3 Pro.
Hopefully this doesn't affect performance as this GPU has framebuffer
fetch support.
Also reduce the effect depth limit in ProgramsTest.
Change-Id: I1fa5b8a670b3a074808cdba09c2ac97492067d33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261192
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This is working in the GL and Vulkan back ends. MacOS only supports the RGBA8 variants.
For mobile devices, probably only nVidia GPUs will support this.
Bug: skia:9680
Change-Id: I9d886b72232a031603e93e46059a97a8aa288b3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261093
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Change-Id: I47ac0b069334cb9702473b1bb923f585712f38ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261087
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Replaces several of the arguments with a single GrMesh object. The
call signatures were a bit unruly, and would have become more so with
extra required arguments for tessellation.
Change-Id: I4834b03d9c107dd233a91019c0a3189030e52bef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260977
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Will follow-up with a change that doesn't use SkRegions!
Note:
The previous code flow gathered a region for all devices (in the canvas method).
However, it only tried to draw into the top device. The new code just focuses on
the top device, which ought to give the same results.
Change-Id: Ic5ed47e7908d646700c09b10faa538415522c645
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261283
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Change-Id: If05370b0970af5daf976d60e1fc97f2fab3c213e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261082
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Bug: skia:9736
Change-Id: If572ddae3c6aa42faa498b2fe3bf2fa25fd00bf1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261276
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
In the previous form there was some duplication between the backend format and the SkImage::CompressionType being passed around.
Bug: skia:9680
Change-Id: I04455b7a4289bec83d87be17b75b4e9d4d6ef2e0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261184
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This is a reland of 4407acb144
Original change's description:
> Generate small path SDFs directly from path.
>
> Change-Id: Ifdda3038eadf3910cb18bdefa8115f5038b1440e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261138
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: I03017386edde55501c76a383e2f0cedfe6dcb199
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261193
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
This CL updates all callers that ending up in GrDrawingManager::makeSurfaceContext
to use the new factory or directly call ctors.
A follow on change will get the rest of the calls which go to
GrDrawingManager::makeRenderTargetContext
Change-Id: I662da654a1ec8b8972c50fe9ce45a9185d4c3dc1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260901
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Change-Id: I9ea41625fd80433f7f6480fe539321d8df7b7930
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/258877
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
There is no change to the code (yet).
Change-Id: I1997d7ac070691a3384441028503f6dc8565bbf8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261182
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
- Change SkRuntimeEffect::Make so *it* can fail, and returns
[Effect, ErrorText].
- Initial tests just test for expected failure conditions.
Next steps are to add tests for effects that should work,
and to validate results on CPU and GPU.
Change-Id: Ibac8c3046104577434034263e9e4a4b177e89129
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261095
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Before we write too many of these, let's get a program() / onProgram()
wrapper in place for SkColorFilter. When a filter claims it doesn't
change alpha, we can skip any work it might do to "calculate" that
unchanged alpha (e.g. 0*r + 0*g + 0*b + 1*a + 0) and instead just
save and restore the orignal alpha.
SkShader already has this same program() / onProgram() setup, and uses
it similarly to force any shader that claims to be opaque to be opaque,
replacing any math (or sometimes even memory loads) that shader may have
done to produce alpha with a simple splat(1.0f).
Change-Id: Ica916926506df3a48b4d718545ea64dd95b457af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261134
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Change-Id: Ifbc80e31a7a56cd40734cb174b77a5860a94a323
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/254682
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This reverts commit 4407acb144.
Reason for revert: Causing issues with colorcomposefilter_wacky
Original change's description:
> Generate small path SDFs directly from path.
>
> Change-Id: Ifdda3038eadf3910cb18bdefa8115f5038b1440e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261138
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
TBR=jvanverth@google.com,bsalomon@google.com
Change-Id: I331e855c3198febcd8ca9ef0c5e6fe1ddc5ad8cf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261177
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: Ifdda3038eadf3910cb18bdefa8115f5038b1440e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261138
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Changes since the last time:
1) Adds workaround for Adreno 6xx devices.
2) Restores ProcessorOptimizationTest threshold to its original values.
This reverts commit 682ba43ba3.
Change-Id: Ic6e65311fc845926fc35c223d6bb13ee2356e16c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261086
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Also fixes segfault with cached shaders.
Change-Id: I32be8c3dd28e93ffabc61437e62be729e4fc2d32
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261085
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
- have to commit to a perspective stage (used to only use affine)
- coordinate between updater and shader/stages
Benches:
verts 608 --> 270
atlas 17.9 --> 5.6
Change-Id: I1d1ce9eb27b49d2ddcc610f6ea5c4720901b9e1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261136
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Bug: skia:9705
Change-Id: I288bd125739cfe3dc38d8a8150a11a1c0115103a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/261079
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
* Disabled use of PathOps Simplify() due to missing segments in final path.
* Added test to GM to catch Simplify() bug.
* Added comments and changed variables to make the code easier to follow.
Change-Id: I25e024e7d568468e29a76badb455355254fe46ee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/259809
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
We're running out of pretty ways to split up the omnibus CL. This just
brute force updates the two working backends (sorry Metal).
Bug: skia:9680
Change-Id: I62ce1229ff40e3d4e194337f2fe0acddb3f934e5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260897
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Only works on GPU backend for now, and still only supports
single-argument sample (at original coords).
Change-Id: I4c36ebd0c370ca65126786802c5ea268c3f32edd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260899
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Explicitly convert unsigned int to uint64_t before converting them to
uint16x4_t or uint8x8_t.
BUG=chromium:1035559
Change-Id: I7d0084c1ab9393063a15972a714d89db4e5e1afe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260981
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
the ctm to the device.
This catches cases where the matrix bottom-row might look like
[ 0, 0, not_one ]
That would get categorized as perspective, but in reality that matrix
behaves like affine. If we can detect that pattern, and scale the entire
matrix by 1/not_one, we don't change its behavior, but it will now be
categorized as affine (seen as simpler/faster).
bug: skia:9698
Change-Id: Ib77b647c1d32f73538b1c0d8e9e49ec533610b3a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260776
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
texture data.
It'd probably be good to provide an opaque texture that has an alpha
channel and widen the range of color types that are present in the
future.
Change-Id: I5587a479f7e2f3991f8ae27a4cd44afc533324e8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260696
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
This makes:
onCreateBackendTexture better match onCreateCompressedBackendTexture to better reflect our mipMapping assumptions.
GrCompressedDataSize better match GrComputeTightCombinedBufferSize to allow the used of generated mipmap data.
createVkImageForBackendSurface and createMtlTextureForBackendSurface take a GrRenderable instead of a raw bool
Change-Id: Ifb7d60bc0e626dfbf1cea0d362bcb04093a71ba7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260780
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Adds a new structure to describe the inputs, including type,
shape, name, etc. This removes any references to the type
variables in the compiler's context, and centralizes the
logic for parsing those type variables.
Also normalizes the rules for what types are supported.
(This was inconsistent among the various functions before).
Now:
- bool and int must be 'in'
- float may be 'in' or 'uniform'
- float[2-4] and matrices must be 'uniform'
Includes a new Slide that allows for interactive editing
of a runtime shader.
Change-Id: Ic2af68a80c8bb645ba96417c430da24de0a9c2d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260497
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Adds the flag to GrPipeline, as well as a 'w' keystroke in viewer for
toggling the alternate global wireframe mode.
Change-Id: I385c31320a5fa2cec79b527a91fa876b19cdff89
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260747
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Also, less importantly, from SkRTShader.h
Change-Id: I0d7a56583cdd681bae6b2a08861daca33cc25fc6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260779
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
more UI for halfplanes in SampleClip
bug: skia:9698
Change-Id: I9463fe9860fa482ef05fc2113114e61524c38fc0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260500
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
This reverts commit 5b9c7ba313.
Reason for revert: Looks to still be breaking chrome
Original change's description:
> Revert "Revert "Remove most of GrConfig.h""
>
> This reverts commit b0047b57b7.
>
> Change-Id: I0c6df9e9d5c3984987398d2b7f675005828ab3de
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260697
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com
Change-Id: Ia9860b39c562368f8a2f84283c52f55593333075
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260642
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
This constructor is causing trouble on x86 GCC Debug builds.
I'm not sure if GCC is wrong or skvx is wrong, but taking the
skvx out of this constructor fixes a bunch of failing tests.
Do we have a perf test to see if this non-skvx version runs slower?
Bug: skia:9664
Change-Id: I27d679c8ad06883f0acc5cb4e7d2f436a50fbed7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260521
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
This is just the API level interface(s) and the backend virtual calls needed to implement them.
Bug: skia:9680
Change-Id: I6c655751e23ce18c6a184c925e8d472902e8a478
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/259976
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This reverts commit 3794db84e1.
Reason for revert: Still breaking Pixel3 processor optimization test
Original change's description:
> Blend functions as SkSL built ins.
>
> GPU-only for right now.
>
> Use in GrGLSLBlend::AppendMode.
>
> Remove unused GrGLSLBlend::AppendRegionOp.
>
> Change-Id: I23affe255a1adafa55f3a07ca6291dc84e18e213
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/254678
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com,brianosman@google.com,ethannicholas@google.com
Change-Id: I0675c0fe00d6540202ca0676fd9b07f3007d0404
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260639
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
GPU-only for right now.
Use in GrGLSLBlend::AppendMode.
Remove unused GrGLSLBlend::AppendRegionOp.
Change-Id: I23affe255a1adafa55f3a07ca6291dc84e18e213
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/254678
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Fixes a memory leak in Flutter.
Change-Id: Ia86ea8d4d78539dc28acb207e834861f274c0a5c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260538
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Will work on clipping in follow-up CL
Change-Id: I1e4cc485555a435c740a4e5b50445f21e9ec20c7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260404
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
* remove internalGetHead/Tail
* make validate private because fLock must be held.
Change-Id: If998cfe8ba0414e4520807034f841e40b94aa206
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260284
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This change mostly just removes GrTextureContext and switches users to
directly creating GrSurfaceContexts. Outside of updating types, the factory
functions for creating Gr*Contexts have not been updated in this but will
be done in a followup.
Change-Id: I55257568d4c096c5fb48c5e38bfa2c01b824e7b5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260289
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This fixes a bug in the computation of a solid colored ETC1 block and adds support for mipmapped ETC1 data.
Bug: skia:9680
Change-Id: I50be60d652bd974e0f11966d72228bea5441696c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/259977
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
The SkDescriptor fuzzer did not call init. This caused
mysterious failures.
Make SkDescriptor's constructor initialize its fields.
Remove init().
Change-Id: Icab79c53b2d2878fceecfec06c886b71613cea6f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260287
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Now we know ahead of time what size approx textures will use when they're
allocated.
Change-Id: I9e15140496d15e7d6933aa03d0215222ac3b5be5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260040
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
When wrapping a backend texture we currently need to derive a GrPixelConfig from the backend format. The normal caps method (i.e., getConfigFromBackendFormat) is inappropriate for the compressed backend texture use case.
Bug: skia:9680
Change-Id: Ic4de7550c9a11f6e6207374c27d0ea23b8ab1575
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260044
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Change-Id: I83bea6e9c94431afba858b0e7b60456e8f9a2176
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260356
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
'key' was already disallowed later in the process, this catches it
earlier. The others are all unnecessary complications (and 'when' and
'tracked' weren't actually doing anything).
Change-Id: I39b4f0da73a7a12793484eb90decadc9c94b5693
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260281
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This will allow us to funnel compressed texture data back to the GPU-specific backend texture creation point(s).
Bug: skia:9680
Change-Id: I83a8ad0279c02aa4044b29fbce1d6ee1fcd9b784
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260039
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Most call sites really only want the Boolean so I also added an isFormatCompressed helper.
Change-Id: I77f16033b69bc99329344201d2c85599d60cb757
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/259168
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Change-Id: Id3222effc21aea673b4d5d82a98e3e60f34512b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260278
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Adds SkRuntimeEffect, a ref-counted object to hold SkSL,
a Compiler, and compiled Program, along with uniform info.
Removes the old SkSLFP factory and factory cache types.
Caching is done by simply holding on to the effect (or
the shader/color filter factories, which own an effect).
The effect class is simply ref'd by the factories, the
shader and color filter types, and the FP.
NOTE: Changes to public headers only affect private functions.
Change-Id: I0c1401505cb234e83943ad4ef2db6680f4c69fb9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/259336
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Change-Id: I2a7510f97dd8bdae4d5fbd2314718c14711a822a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260076
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
I missed the comments on cl/260038; do them in this cl.
Change-Id: If3a842385c935ae7833ae9ead6ba527e4e9f11a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/260096
Auto-Submit: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>