Commit Graph

24219 Commits

Author SHA1 Message Date
Ethan Nicholas
0be3480546 Revert "Revert "unified Vulkan uniform buffers""
This reverts commit 19754b5470.

Bug: skia:
Change-Id: Ie531a962934ee1909fecda59a5ee48c98e66f898
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234900
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-08-15 19:14:03 +00:00
Hal Canary
bb108480ec SkMallocPixelRef: remove MakeDirect and MakeWithProc from API.
Not currently used by any clients.

Change-Id: I21d554fb95ffef4f317945ab22c4cfb14fbb6b2a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234660
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-08-15 19:01:13 +00:00
Robert Phillips
f0696bd4da Revert "Go back to blacklisting MSAA on all Intel GPUs"
This reverts commit c385da4fc0.

Reason for revert: Vulkan bots needs some love

Original change's description:
> Go back to blacklisting MSAA on all Intel GPUs
> 
> Skia's testing on Gen9 showed decent performance and quality, but Chrome
> has still been seeing driver crashes in the wild.
> 
> Bug: chromium:527565 chromium:983926
> Change-Id: I54f4f4013d313538da9afdab4d48ff232629152b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234909
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

TBR=bsalomon@google.com,brianosman@google.com

Change-Id: Ief86bd5862897b1e7906b74177f2bea47bc84a2e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:527565 chromium:983926
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235019
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-15 18:38:30 +00:00
Herb Derby
1436a13881 Add empty check for mask case. Small cleanups elsewhere.
We were overly cautious with spaces close to a cut. Re-enable
empty glyph removal from the Renderer' diff canvas processing.

* rename prepareForDrawing -> prepareForDrawingRemoveEmpty

Bug: chromium:881505
Change-Id: I9b5d51cd66645bccfc3b1f6fefb317f9eaf621e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233417
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-15 18:12:39 +00:00
Brian Salomon
9c73e3df83 Turn off -Wreturn-std-move-in-c++11
Change-Id: I127c979670c3dc7dac2e35908a795afbdefca8f6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234902
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-15 17:45:58 +00:00
Brian Osman
c385da4fc0 Go back to blacklisting MSAA on all Intel GPUs
Skia's testing on Gen9 showed decent performance and quality, but Chrome
has still been seeing driver crashes in the wild.

Bug: chromium:527565 chromium:983926
Change-Id: I54f4f4013d313538da9afdab4d48ff232629152b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234909
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-15 17:45:29 +00:00
Brian Osman
4c3fd34e00 Remove MakeCrossContextFromEncoded, unused argument from ...FromPixmap
Change-Id: I962e923a4994eb549a9c1002323f33d05b936b84
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234912
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-15 17:10:28 +00:00
Michael Ludwig
5b218519a4 Add helpers for creating new contexts
Also adds more documentation to Context and renames ctm() to layerMatrix()
albeit keeping ctm() around as deprecated.

Bug: skia:9282, skia:9295
Change-Id: Ibc1d5b39ab6bb9c2b65d6f3b0af65e5dcdf3f42c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234580
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-15 16:43:58 +00:00
Ethan Nicholas
e5dc1ebc86 unified Metal uniform buffers
Bug: skia:
Change-Id: I7929b01eb550278343ffc41f80040bc716e2a1a1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234378
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-08-15 15:56:38 +00:00
Dave Tapuska
7139f13f7f Fix duplicate definition of kRect_ClipType.
kRect_ClipType is defined in GrTypesPriv.h and SkDevice.h. To fix this
change SkDevice::ClipType to be an enum class.

Bug: chromium:993871
Change-Id: I14b3f2b129a4e05414c23263a456b91bd2cb4175
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234442
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-08-15 14:11:28 +00:00
Brian Salomon
096b091874 Make GrBlend.h private
Change-Id: I77f3dbc80d85d3a19e8986dae42450ee5b8c07a7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234668
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-15 13:34:57 +00:00
Brian Osman
d514837136 Add SkImage::reinterpretColorSpace
This reinterprets the contents of an image as though they were in a
different color space. Helpful for tools and debug visualization.

Bug: chromium:795132 chromium:985500
Change-Id: Ia8739bbd73d72249b8bee9d51dfa11d560a2a1f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234328
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-15 13:30:41 +00:00
Greg Daniel
30ad4680ad Remove remaining functions in GrGLCaps that use GrPixelConfig.
At this point this just leaves the function that converts a GrBackendFormat
to a GrPixelConfig. This function will probably need to live until we
fully remove GrPixelConfig.

Also removed the bgraIsInternalFormat call since we literally have the format
so we can just straight up check if it is bgra or not.

Bug: skia:6718
Change-Id: I917d9361b590d69baeb0f6a5e1e5dae6908f09ad
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234658
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-15 13:26:41 +00:00
Michael Ludwig
e30a485a68 Move the source image into Context
This folds the source SkSpecialImage, that was previously passed in as
an argument to filterImage(), into the filtering Context. This allows
the Context to provide convenient access to backend properties that
are only accessible through the source image, but makes it clear in
calling code that the actual pixels of the source image are not needed.

IMO this improves readability in implementations that previously had
functions that would take a 'src' and an 'input' image, but would only
really process the input image's pixels.

Bug: skia:9282
Change-Id: I42437dcc6819e3d3882bff7851f9b16277a69f06
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234578
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-15 12:31:11 +00:00
Brian Salomon
201cdbb646 Make GrSamplerState.h and GrRenderTarget.h private
Change-Id: Id7a270f5a528e1a4a6d94474fa092545252753b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234667
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-15 12:22:11 +00:00
Stephen White
e3b1389700 Implement GrDawnGpuTextureCommandBuffer.
Implement copy() of both this and GrDawnGpuRTCommandBuffer as
texture-buffer-texture copies (for now).
Cache GrDawnTextureCommandBuffer in GrDawnGpu, as is done for
the RT flavour.

Change-Id: I22b7af013486ec76f5c50ec69532e96901620bc5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233998
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-14 21:10:13 +00:00
Brian Salomon
9ae0ba0347 Turn calls to glTexImage2D with non-null ptr into glTexImage2D followed
by glTexSubImage2D.

We'd like to separate creation of textures from populating them with
data at the GrGpu level. This change is intended to fish for performance
regressions before committing to this idea.

Change-Id: I97668aed5a9e1a0b09326e6a5c59ee4e6b4469bb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234657
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
2019-08-14 20:16:05 +00:00
Stephen White
9d4219229b First implementation of GrTextureRenderTarget.
Change-Id: I0e6bc516eb43e7f7062f9d19e7ef8093324b551d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233997
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-14 20:11:03 +00:00
Greg Daniel
7bfc9139c6 Remove GrCaps isConfigTexturable.
This also makes the isTexturable that takes a color explicitly called
isFormatTexturableAndUploadable. A lot of the uses of isConfigTexturable
were changed to the Uploadable version of the check, even though this is
not where we want to land in the long run. In the long run the uploadability
will be checked via calls to supportedWritePixelsColorType and all the
isTexturable calls should purely be about texturing. However, until those
changes land we keep it safe and keep the same functionality that
isConfigTexturable had by checking uploadability as well.

Bug: skia:6718
Change-Id: I3563f33f49811923da80e676fa3036ae46c4da70
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234323
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-14 19:30:45 +00:00
Brian Salomon
9136a04218 Handle size_t addition overflow in GrCpuBuffer::Make
Bug: chromium:990570
Change-Id: I444445aafd8b9d495e45b7eb3b0c78d59d78ecc6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234576
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-14 19:18:25 +00:00
Michael Ludwig
03f9ca323a Remove SkImageFilter_Base::OutputProperties
This moves OutputProperties' fields into Context and decouples SkSpecialImage
makeSurface() functions from SkImageFilter_Base.

It adds a utility makeSurface() function to Context that calls the SkSpecialImage
functions. Currently that requires the source image to be provided to it.
In a later CL, Context will hold the source image and this makeSurface() function
will be even simpler to use.

This is split out from https://skia-review.googlesource.com/c/skia/+/232517

Bug: skia:9282
Change-Id: I3d742af323a1440e0dab54a576d45a4a44dc719b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234516
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-14 19:18:05 +00:00
Brian Osman
d566e2eab7 Remove unused dstColorSpace parameter from makeTextureImage
Old version still exists until client code is migrated.

Change-Id: I087b6b977f586d334f9a20954e7ed7b5e4b7ea5e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234579
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-14 19:09:05 +00:00
Stephen White
0850dcdb2e First implementation of GrDawnTexture.
Change-Id: I9c636c939dffbb0b395f3e9ed3d9a55784a6d390
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233981
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-14 19:03:37 +00:00
Brian Osman
3b1e4c268a Add coord transform to GrSKSLFP, support CTM/local matrix in runtime shaders
Change-Id: Ib44f08f4e958782cd5eb8461ef18305c14b1cde7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233983
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-14 18:08:49 +00:00
Mike Klein
010056244d new ideas for bilerp/bicubic?
Maybe long term best way to go is just bilerp and bicubic stages that do
everything internally, even maybe creating source x and y from dx,dy and
a matrix?

We'll end up with two copies of gather code, but that's not a big deal
for anything but code size... it's easy to factor out in C++.  I think
all the branches on uniforms like SkColorType and SkTileMode should be
more than made up for by the fused stages.

The clamp/clamp/8888 stages are still a little faster, though it's maybe
possible to share code with them.

Guard lowp bilinear stage like lowp bilerp_clamp_8888,
for same reason... layout test rebaselines.

Bug: skia:9323
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: I2cd4176e4e1892eb6559064a09fb028f616a91d3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234379
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-08-14 18:03:44 +00:00
Robert Phillips
143987ef8f Update Metal backend's createBackendTexture to initialize to a given color
Change-Id: Ia0cf04a1bc1df2a4dd2670b81f890fa8a2480ca6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218184
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-14 17:33:32 +00:00
Ben Wagner
6cb6a07116 Use COM_DECLSPEC_NOTHROW STDMETHODIMP
Use STDMETHODIMP because it's the right thing to do, use
COM_DECLSPEC_NOTHROW because STDMETHOD uses it but STDMETHODIMP does
not, leading to warnings from clang and maybe also from msvc, see
https://developercommunity.visualstudio.com/content/problem/325764/msvc-1582-generates-warning-c4986-in-atl-header-fi.html

This also removes SkBlockComRef, since even WRL has abandoned the
similar RemoveIUnknown. These classes were helpful in the transition to
using smart pointers, but are incompatible with final implementations.

Change-Id: I53a618ee629af638d9d8625ccd5acb0db6529950
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233988
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-08-14 17:14:03 +00:00
Hal Canary
735f1d2f02 SkMallocPixelRef: hide implementation
Change-Id: Ie0af47ed842769a3f47056bb1d633c84fa4d06d6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234329
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-08-14 16:21:02 +00:00
Leon Scroggins III
6154ac4311 Hook up SkHeifCodec for ImageDecoder animation
bug: 78868457
bug: 120414514

test: local test with OpenGL Rendrerer Tests animation
demo and heifs files

Change-Id: I09a7667a57f545927dbe9ac24c1a6b405ff0006d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232839
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Auto-Submit: Chong Zhang <chz@google.com>
2019-08-14 16:02:32 +00:00
Chris Dalton
3d77027d26 Reland "Initiate regeneration of mipmaps from proxy DAG land"
This is a reland of fe19203eb7

Original change's description:
> Initiate regeneration of mipmaps from proxy DAG land
> 
> This allows us to resolve all the textures before executing a command
> buffer, rather than interrupting execution as is currently done in the
> GL backend.
> 
> Change-Id: I998546b312d24cf47fc2c837e7c94fbf95571af0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230636
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

Change-Id: Ic904d0b1bcb451bcb74cfae2204fb7297eaff108
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234016
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-14 16:01:31 +00:00
Mike Reed
a5acbf940e expose direct methods for decoding to an image
These are meant to contrast MakeFromEncoded(), and emphasize that it is deferred/cached,
while the new methods are not.

Change-Id: I83ac22394cb14cdc84ff8507a514bf708734b84f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234476
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-14 15:49:32 +00:00
Greg Daniel
19754b5470 Revert "unified Vulkan uniform buffers"
This reverts commit 5f5a481ae1.

Reason for revert: Breaking GMs and chrome roll. AA looks to be getting dropped. GM crbug_947055 shows the issue (and is also the image failing on chrome roll).

Original change's description:
> unified Vulkan uniform buffers
> 
> Bug: skia:
> Change-Id: I0edb278546e00bf9aa0427578d1bcf41581cd12d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234277
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

TBR=egdaniel@google.com,ethannicholas@google.com

Change-Id: I4969f474a112e53e7ceeb08554173253eb0577ce
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234577
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-14 15:13:12 +00:00
Brian Salomon
2c59659821 Make GrRectBlurEffect be analytical rather than use a texture LUT.
The math isn't that complex and the existing code has intergralization of
the profile size that makes getting the texture coords correct tricky
(and currently wrong).


Bug: skia:9319
Change-Id: Ic928737ce4c40d28ee0696c3628e914f35ffe371
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233985
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-14 13:35:37 +00:00
Brian Salomon
67529b2543 SkSL GLSL generator writes default precision for sampler2D/samplerExternalOS/sampler2DRect
This is a stop gap. We should probably base the precision decision on the texture format.

Also removes all code used to add sampler precision to program keys. The precision that
was added to the key did not affect the generated GLSL.

Bug: skia:8863
Bug: skia:6718
Change-Id: Ibdb702e1aca5d48d83e2f24cb24010a0b7270871
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234322
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-14 13:29:57 +00:00
Ethan Nicholas
5f5a481ae1 unified Vulkan uniform buffers
Bug: skia:
Change-Id: I0edb278546e00bf9aa0427578d1bcf41581cd12d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234277
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-08-14 12:58:37 +00:00
Chris Dalton
d5d8a64cd5 Add GrCaps::msaaResolvesAutomatically
Bug: skia:
Change-Id: Iecf29be73d66b06f5b5c6dcb51e2f41b7d35ba1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233307
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-08-14 06:12:26 +00:00
Brian Salomon
96b383a78c Remove GrRenderable param from GrProxyProvider::createTextureProxy()
Every caller passes kNo.

Change-Id: I9c21c77f57f6215246794b39fc8ec485d4ae23d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234331
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-13 23:53:25 +00:00
Robert Phillips
f75996469d Make defaultBackendFormat callable from anywhere in the GrContext hierarchy
This is probably overkill but yields an officially thread-safe means of calling defaultBackendFormat.

Change-Id: Ibf344acf11102d938e335e9ea38bfaee575e00c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234324
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-13 20:46:35 +00:00
Hal Canary
8db426d66e SkMallocPixelRef::MakeDirect: doesn't need a release proc
Change-Id: Ic84b52b128b7cd71f0870094c5787d588ed68a9d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234326
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-08-13 20:06:43 +00:00
Chris Dalton
309c6c0929 Return kNearest from GrSkFilterQualityToGrFilterMode for 1x1 images
Bug: skia:
Change-Id: I358e5c74d918b880bea05a6129dbffcae0e8046d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234181
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-13 17:01:37 +00:00
Stephen White
792e23044d SkSL: implement full support for separate textures and samplers.
This extends the support for separate textures and samplers to include 1D, 2D,
3D, ExternalOES, Cube, 2DRect, Buffer and ISampler2D. The new texture types are
now mandatory for a texturesampler which generates SPIR-V, so we can remove the
special case code for 2D previously landed.

Change-Id: Iec4bd6dc456169e6f4914ac416a10cd9720c42e0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230556
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-13 16:07:37 +00:00
Mike Klein
fb83927366 less clever skipMoveTo logic
Replace the old, possibly buggy logic with something that I think is too
simple to be wrong: we need to moveTo(pts[0]) if pts[0] is not where we
currently are.

Either the old comments were wrong, or the old code was wrong, or I'm
missing how the two connect.  In any case, this new version of the logic
for skipping moveTo() makes the GM we added to track this bug draw the same
in debug and release builds, where it was quite wrong in release before.

Bug: skia:9331
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: If7c164f0fc62a371e7009bf12d320cc62cb88ef2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234001
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-13 15:52:17 +00:00
Ethan Nicholas
33c59ed8df added error check for invalid 'in' variables
Bug: skia:
Change-Id: I0e767f322ad10a0ca4c6209c516b538ff36c9279
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233986
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-08-13 15:25:47 +00:00
Mike Klein
0bbb3c1111 rewrite SkDashPath.cpp's cull_path() logic
Invert the control flow a little so that each special case is checked in
turn:

   - null cull rect and a degenerate line?
   - non-null cull and any line?
   - non-null cull and any rect?

This should be a faithful rewrite of the old logic, preserving the bug,
which I think is the bit of code marked with a TODO around skipMoveTo.

Bug: skia:9331
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: I4b4497b97586153be409884f2eb886728b31d6a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234000
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-13 14:33:59 +00:00
Mike Klein
f996311003 extend lifetimes for hoisted used in loop
This makes the register recycling checks a bit more
precise.  At head we never recycle a register that's
holding a hoisted value, which is overly conservative.

We really should never recycle a register that's still
needed.  By extending the lifetime of any hoisted value
that's used in the loop, we prevent that, while still
allowing hoisted values that are only used in hoisted
computation to be reused.

This takes just a small tweak in the JIT code (removing
the !hoisted({x,y,z}) checks), and a somewhat larger
refactoring in the interpreter, making both hoisted and
non-hoisted code go through the same recycling register
assignment flow.

There's one diff in the existing cases where we now
reuse a hoisted register, and I've added a second test
just to make sure it's covered explicitly.

Change-Id: I25b37ab1f1fea3042d7fd167529abc8fed1dddff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233239
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-13 02:08:16 +00:00
Chinmay Garde
5b2f04c419 Only use thread_local on aarch64 iOS build variants.
Versions of iOS < 9.0 do no have thread_local support and simulator build
variants emit an error about this (even though they are x86_64). This patch
flips the logic to only enable thread_local usage on aarch64 build variants.

Change-Id: I63294be4f9a2bdb3bcd6d49b213e9c3326f50a5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234020
Auto-Submit: Chinmay Garde <chinmaygarde@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-13 01:50:16 +00:00
Brian Salomon
2af3e70924 Don't use color type derived from GrPixelConfig to determine proxy texture swizzle.
Change-Id: Ib19e378d7dd8243cbbee68e97bcb3b6159943500
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233898
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-12 20:42:00 +00:00
Mike Klein
e2556a43ad inline helpers in SkDashPath.cpp cull_path()
Following up on a bug report, I'm learning how cull_path() in
SkDashPath.cpp works by refactoring it.  This first CL inlines and
removes its helper functions between() and contains_inclusive().

First thing to notice is that the old between() function is checking
`a <= b <= c || a >= b >= c` in a generic way, ignoring that `a` and `c`
are always rectangle bounds.  Since bounds are sorted, we really only
ever need test lo <= v <= hi, for {left,x,right} or {top,y,bottom}.

So rewrite between() as

   auto between = [](SkScalar lo, SkScalar v, SkScalar hi) {
       return lo <= v && v <= hi;
   };

Then notice that contains_inclusive() is actually now just

   auto contains_inclusive = [](const SkRect& bounds, const SkPoint& pt) {
        return between(bounds.fLeft, pt.fX, bounds.fRight )
            && between(bounds.fTop , pt.fY, bounds.fBottom);
   };

And then notice that we're using the same inputs to both the original
calls to between() and the original call to contains_inclusive()... if
we inline everything it's really just two calls to between() to `&&`
together later to make contains_inclusive().

Finally, once it's all inlined, it's no clearer to keep between() as its
own standalone lambda than to just write out two lines for `inX` and `inY`.

This removes the between() approximation added when between() itself
was added in https://skia-review.googlesource.com/c/skia/+/84862/.  I'm
skeptical that it was ever faster than the comparisons I've got written
here now, but it's not clear what Cary was timing when writing that CL,
nor how much of that speedup comes from this between() approximation or
and how much more generally from the added rectangle specialization.
(I've updated the comment to mention that rectangle specialization too.)

I did run calmbench, which doesn't think this is interesting perf-wise:

    cull_path (compared to master) is likely
        8.31% faster in constXTile_CC
    JSON results available in /var/tmp/bench_cull_path_master.json
    Compared 731 benches. 1 of them seem to be significantly differrent.

Bug: skia:9331
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: I1b6d2c1cd8ee86df6c46b5c6a8c02634b6bb0238
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233996
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-12 19:50:01 +00:00
Greg Daniel
0b002e2866 For non-ccpr draws make sure all inputs to GrGPUCommandBuffer are long lived.
This change makes sure that all inputs to GrGpuRenderTargetCommandBuffer::draw
to live and are valid throughout the entire execution of a given op list. This is
achieved by either having the objects live on the Op itself or allocated on the
flush states arena.

This is needed for a future change to easily allow us to switch between using vulkan
secondary and primary command buffer for executing draws. We will land this change
now to see if there are any significant perf hits for not using the stack for these
objects anymore.

This change does not handle CCPR allocations, but those will need to be handled if
this doesn't cause any problems and we move forward.

Change-Id: I7ae94a8c645f21771342bea5d03850d2a0a1fcf5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233982
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-12 19:06:10 +00:00
Brian Salomon
1c53a9f7d9 Remove some uses of GrSurface::config()
Bug: skia:6718

Change-Id: I71ad95f910b6434e4d9a01c2750f1b2b08b2f6c4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233567
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-12 18:36:01 +00:00
Sergey Ulanov
2739fd2f09 Reland: Enable YCbCr sampler support on platforms other than Android
Previously YCbCr Vulkan samplers were supported only on Android for
external images, while Vulkan requires YCbCr sampler for I420 YUV image
formats such as VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM.
This CL:
 - Adds VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM and
   VK_FORMAT_G8_B8R8_2PLANE_420_UNORM as supported Vulkan formats
 - Updates GrVkYcbcrConversionInfo to add fFormat field and allow
   fExternalFormat=0.
 - Removes assertions format=VK_FORMAT_UNDEFINED for all images that
   have ycbcr info.

Bug: chromium:981022
Change-Id: Id4d81b20d9fda4d9ad0831f77e6025eed3db2bfd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233776
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Auto-Submit: Sergey Ulanov <sergeyu@chromium.org>
2019-08-12 14:21:01 +00:00
Robert Phillips
3e7fa79f2c Revert "Initiate regeneration of mipmaps from proxy DAG land"
This reverts commit fe19203eb7.

Reason for revert: Turned a lot of bots red

Original change's description:
> Initiate regeneration of mipmaps from proxy DAG land
> 
> This allows us to resolve all the textures before executing a command
> buffer, rather than interrupting execution as is currently done in the
> GL backend.
> 
> Change-Id: I998546b312d24cf47fc2c837e7c94fbf95571af0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230636
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

TBR=bsalomon@google.com,robertphillips@google.com,csmartdalton@google.com

Change-Id: Iaa8391b8fbd5a4f851ca41834c1dfeee4be6fedd
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233836
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-10 13:00:33 +00:00
Chris Dalton
fe19203eb7 Initiate regeneration of mipmaps from proxy DAG land
This allows us to resolve all the textures before executing a command
buffer, rather than interrupting execution as is currently done in the
GL backend.

Change-Id: I998546b312d24cf47fc2c837e7c94fbf95571af0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230636
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-10 00:39:50 +00:00
Stephen White
19db24059b Dawn: remove a faulty assert.
Change-Id: I2cecddf98bcc44a7d3970463518bffa079038971
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233568
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-09 21:53:20 +00:00
Stephen White
f813ef7d1b Dawn backend: implement stencil, primitive topology, separate blends.
Remove beginDraw()/endDraw() in favour of applyState().
This allows for varying primitive topology between meshes in a single

draw: call applyState() prior to drawing each mesh in case the
primitive type changed.
Initial support for onClear() and onClearStencil() in GrNXTGpuRTCommandBuffer.
Modify beginRenderPass() to take the LoadOps for color and stencil, so we
can encode render passes for stencil operations.
Add support for reverse-subtract blend equation.
Also apply options overrides in caps initialization.
Change-Id: I8547961c414187dbc763a67d6c7ec4383d6ce6f6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232136
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-09 21:20:10 +00:00
Brian Salomon
74c19de3be Add SkUNREACHABLE to definition of SK_ABORT.
Remove return statements immediately following SK_ABORTs.

Change-Id: I6446b6ba3a6fb272d84ea27f38cf366095cf801d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233565
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-09 20:43:39 +00:00
Greg Daniel
9fc5e8da98 Revert "Enable YCbCr sampler support on platforms other than Android"
This reverts commit cc4573dfed.

Reason for revert: Seems to be crashing in Win Intel vulkan bots

Original change's description:
> Enable YCbCr sampler support on platforms other than Android
> 
> Previously YCbCr Vulkan samplers were supported only on Android for
> external images, while Vulkan requires YCbCr sampler for I420 YUV image
> formats such as VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
> VK_FORMAT_G8_B8R8_2PLANE_420_UNORM.
> This CL:
>  - Adds VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM and
>    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM as supported Vulkan formats
>  - Updates GrVkYcbcrConversionInfo to add fFormat field and allow
>    fExternalFormat=0.
>  - Removes assertions format=VK_FORMAT_UNDEFINED for all images that
>    have ycbcr info.
> 
> Bug: chromium:981022
> Change-Id: I3989f72e918a257a081b81ae20429a6771229ad6
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230918
> Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Auto-Submit: Sergey Ulanov <sergeyu@chromium.org>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,sergeyu@chromium.org

Change-Id: Ia9c229fbec4cd397fb04304753fa49f34336ed3a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:981022
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233563
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-09 19:09:05 +00:00
Sergey Ulanov
cc4573dfed Enable YCbCr sampler support on platforms other than Android
Previously YCbCr Vulkan samplers were supported only on Android for
external images, while Vulkan requires YCbCr sampler for I420 YUV image
formats such as VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM.
This CL:
 - Adds VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM and
   VK_FORMAT_G8_B8R8_2PLANE_420_UNORM as supported Vulkan formats
 - Updates GrVkYcbcrConversionInfo to add fFormat field and allow
   fExternalFormat=0.
 - Removes assertions format=VK_FORMAT_UNDEFINED for all images that
   have ycbcr info.

Bug: chromium:981022
Change-Id: I3989f72e918a257a081b81ae20429a6771229ad6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230918
Commit-Queue: Sergey Ulanov <sergeyu@chromium.org>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-09 18:01:13 +00:00
Brian Salomon
81536f2184 Pass GrBackendFormat to GrGpu::onCreateTexture and use it to determine
texture format in backend API.

Bug: skia:6718
Change-Id: Ib224efdf0c4833618d574bc13f48ec04595df282
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233299
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-09 17:25:44 +00:00
Stephen White
fe55c73947 Dawn backend: update to Skia GrCaps changes.
Change-Id: I1fff1c525e16ca336926568e0b53700f72d6c5a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233560
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-09 16:55:41 +00:00
Stephen White
d67c71fc7b Dawn backend: first triangle.
Nothing is cached in this initial version; all the magic happens in
GrDawnGpuRTCommandBuffer::beginDraw(). It builds the program,
sets the uniform data, converts the vertex attributes, initializes
rasterization state and blend state, creates a pipeline and bind group
and sets them.
send[Indexed]InstancedMeshToGpu() encodes the Dawn draw commands.
GrDawnGpuProgramBuilder::beginRenderPass() then finishes
the command encoder and submits the resulting command buffer.

Change-Id: Ie9c160cd18a2c4ef1bde66f86a52227e3bf1b570
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230457
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-09 15:30:51 +00:00
Robert Phillips
e89768469d Fix exactify for explicit resource allocation (take 2)
TBR=bsalomon@google.com
Bug: b/138674523
Change-Id: I7a88ca2b47c88356a53310a4a01078a02a6e1356
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233556
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-09 14:39:00 +00:00
Ben Wagner
bd59ba2506 Correctly write out variable position.
Due to not updating the index, only coordinate[0] was written.

Bug: chromium:982901
Change-Id: I307d0e976ee649bf5841e59a764fb18dae1772fb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233421
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Ben Wagner <bungeman@google.com>
Reviewed-by: Dominik Röttsches <drott@chromium.org>
2019-08-09 14:15:10 +00:00
Brian Salomon
ec22b1a2bf Expose GrContext::dump() when SK_ENABLE_DUMP_GPU is defined.
Change-Id: I499228454bc387de2c988b8f607320b7e5ea57b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233557
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-09 14:13:01 +00:00
Greg Daniel
26cedb4c60 Fix emplace on GrTRecorder.
Change-Id: I9250f62ce09f36f124cac6d867a09a4a262f5416
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233302
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-09 13:15:01 +00:00
Robert Phillips
4d557e3df4 Revert "Fix exactify for explicit resource allocation"
This reverts commit 32ff145b0f.

Reason for revert: 2 cc unittests

Original change's description:
> Fix exactify for explicit resource allocation
> 
> Bug: b/138674523
> Change-Id: I5ed959d48b31609b0106a19442f9673c52ff3ef1
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233298
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=bsalomon@google.com,robertphillips@google.com

Change-Id: Id3e326d81179f8276d0b32ebd7706d6ad11305cf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/138674523
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233420
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-08 23:20:09 +00:00
Robert Phillips
32ff145b0f Fix exactify for explicit resource allocation
Bug: b/138674523
Change-Id: I5ed959d48b31609b0106a19442f9673c52ff3ef1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233298
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-08 20:47:08 +00:00
Brian Salomon
f04fb448fd fix skip-rectangle-texture-support in GrGLGpu::onWrapBackendTextureAsRenderTarget
Change-Id: I96b2b421f70ec71552d091d2151b4174f90bf8d9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233301
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-08 20:35:40 +00:00
Mike Klein
0458079574 expand thread_local blacklist to all ARMv7 iOS
Change-Id: Ia9c0389aab1aa06ac652c87c6cfa4e8e6a6a23d6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233238
Reviewed-by: Chinmay Garde <chinmaygarde@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-08 19:47:57 +00:00
Herb Derby
10e48d4061 Allow SkMakeSpan to correctly handle the distinction between
const and non-const for container classes such as std::vector
and std::array.

Change-Id: I6ad49de7f2f2c379ba6c964115806d058c72cd7e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233296
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-08 18:44:24 +00:00
Brian Salomon
d4764a15f3 Rework how backend-specific formats are retrieved from GrBackendFormat.
Change-Id: If1047c477ff3f2cc4aaf19d2e2e838f2dbcb0126
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233160
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-08 17:20:34 +00:00
Mike Klein
0b84eab299 Reland "thread-local caches?"
This is a reland of 0c9995dc51

PS2 skips program caching on G3/iOS/ARMv7 builds.

It doesn't seem important to cache programs on this build configuration
yet, maybe ever: we're not yet JITting on ARMv7, ARMv7 iOS is a dying
platform, and non-G3 builds, both local and bot, work fine for me so
maybe it's just an old toolchain?  For now I'm just disabling caching by
returning nullptr.  If the list of platforms grows much bigger or more
important, I may put back a spinlock-based best-effort caching.

Original change's description:
> thread-local caches?
>
> Here's another idea... these SkVMBlitter program caches are probably
> best thread-local.  If there are a bunch of threads doing the same work
> with the same program, we don't need them fighting over that one slot in
> the cache, and if there are a bunch of threads doing _different_ work,
> they'll get the best cache behavior if they don't fight over slots in
> the LRU with different programs.  Either way, seems like a win?
>
> (I've kept the try-acquire/release pattern just to make the focus of
> this change more clear.  We can fold it through more if we like it.)
>
> Change-Id: Ib1ee270069c48446845ce27225652896661c5dfe
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233060
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>

Cq-Include-Trybots: skia.primary:Build-Mac-Clang-arm-Debug-iOS
Change-Id: I8d8ef5ab56b914c9c305bb1729b72c8bca373337
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233237
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-08 14:27:33 +00:00
Mike Klein
4e6f8c192e Revert "thread-local caches?"
This reverts commit 0c9995dc51.

Reason for revert:

Breaks G3 --config=ios_armv7.  Others seem ok?

third_party/skia/HEAD/src/core/SkVMBlitter.cpp:47:9: error: thread-local storage is not supported for the current target
        thread_local static auto* cache = new SkLRUCache<Key, skvm::Program>{8};


Original change's description:
> thread-local caches?
> 
> Here's another idea... these SkVMBlitter program caches are probably
> best thread-local.  If there are a bunch of threads doing the same work
> with the same program, we don't need them fighting over that one slot in
> the cache, and if there are a bunch of threads doing _different_ work,
> they'll get the best cache behavior if they don't fight over slots in
> the LRU with different programs.  Either way, seems like a win?
> 
> (I've kept the try-acquire/release pattern just to make the focus of
> this change more clear.  We can fold it through more if we like it.)
> 
> Change-Id: Ib1ee270069c48446845ce27225652896661c5dfe
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233060
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>

TBR=mtklein@google.com,herb@google.com,reed@google.com

Change-Id: Ie93593490d793645492b6e964632c1e71b3e3ea6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233236
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-08 13:35:20 +00:00
Mike Klein
0c9995dc51 thread-local caches?
Here's another idea... these SkVMBlitter program caches are probably
best thread-local.  If there are a bunch of threads doing the same work
with the same program, we don't need them fighting over that one slot in
the cache, and if there are a bunch of threads doing _different_ work,
they'll get the best cache behavior if they don't fight over slots in
the LRU with different programs.  Either way, seems like a win?

(I've kept the try-acquire/release pattern just to make the focus of
this change more clear.  We can fold it through more if we like it.)

Change-Id: Ib1ee270069c48446845ce27225652896661c5dfe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233060
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-08-08 13:27:38 +00:00
Greg Daniel
6fa62e2ab3 Remove use of GrColorType on GrCaps::getRenderTargetSampleCount.
Additionally this changes removes the version of the call that that takes
a GrPixelConfig.

As part of this change many call sites that were calling getRTSampleCount
to just check renderability have been changed to call
isFormat[AsColorType]Renderable instead. This change has also started to
move us to just checking format renderability (without GrCT) in classes
that are specifically dealing with GrSurface (GrResourceProvider, GrGpu, etc.).

Bug: skia:6718
Change-Id: Icf4a1a21a81a44e6863a7cd2059d21b9833d581f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233039
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-08 13:15:28 +00:00
Leon Scroggins III
19e3cd4c9c SkCodec: don't assume frameRect is valid
Bug: skia:9321

frameRect is the raw data stored in the image file, and it may not
intersect with the image's canvas. Remove that assumption.

Change-Id: I12802c9c20c0cb3506e64e14b129650ef0767f95
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233157
Auto-Submit: Leon Scroggins <scroggo@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Nigel Tao <nigeltao@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2019-08-08 12:26:08 +00:00
Greg Daniel
228518f0f8 Remove AMD workaround for new command buffer on pipeline changes.
Change-Id: Iab4e53513b0d42eed60b2910455eb15ef7e3d359
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233158
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-08 02:09:34 +00:00
Ben Wagner
1dac7bc29f Add Symbol encoding when renaming a font.
GDI will not use a Symbol encoded cmap table if there is no Symbol
encoded name. Always output both Unicode and Symbol names (same data,
different name entries). This fixes test_symbolfont on GDI.

Change-Id: I05dea903b9c3914a852cf31472a19a6a06b274e0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233079
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-08-07 20:35:28 +00:00
Brian Salomon
ea4ad307eb Modify GrGLTexture/RenderTarget and related functions to not take
GrSurfaceDesc.

Change-Id: If853cff7624ec80e0152a28766dda188778913d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232577
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-07 18:43:09 +00:00
Michael Ludwig
94322dcf73 Simplify luminance shader
Fixes TecnoSpark Pro compiler bug failure.

Bug: skia:9313
Change-Id: I54c077a2db71f75d50ba483b6932ffd2e18d2814
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232583
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-08-07 18:23:57 +00:00
Mike Klein
b2c5a94b1c switch program cache to try-acquire
No need to contend if someone else is using the cache.

I switched the attributes back to the front of the declaration;
the line for try_acquire_program_cache() was getting long and
I couldn't find any satisfyingly clear place to break it.

Change-Id: I28c24c342b10c043091c0c46bd27153e44308967
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233058
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-07 17:15:43 +00:00
Mike Klein
4d95befa5c add an SkVMBlitter bot
Switch the guard define to SK_USE_SKVM_BLITTER to match the expectations
of setting up these easy-mode-defines bots (anything starting with SK_).

Change-Id: I7dafdb31a5b2147cac8428e49d4599e50d125ab6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233059
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-07 17:15:13 +00:00
Jim Van Verth
220988189b Add adjustable max size for Metal dynamic allocation ring buffer.
Maximum ring buffer size is based on the maxBufferLength of
the system. Also includes a sample for testing upload pressure.

Bug: skia:8243
Change-Id: I36863b725ba9cbcb02d575b2ab9695d186fcd529
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232759
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-08-07 15:59:42 +00:00
Mike Klein
e7f3850a0a make coverage a Color
Just a little no-op refactor.  Makes more sense to group clusters of
red,green,blue,alpha channel values into Colors.

Change-Id: I83ab628d008d68ca6d22d97f3ddd155d3e36f949
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232821
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-08-07 15:30:32 +00:00
Mike Reed
41974000e2 note that drawAtlas does nothing if atlas is null
Change-Id: I8d2171b1f51a2beccff8a18f9e6324c08e4b864c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233076
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-08-07 15:27:02 +00:00
Mike Klein
5bf028e840 turn on force_opaque for opaque devices
Change-Id: I517be3182745baaff539cfd24dd47df4c17e24d9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232820
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-08-07 15:21:12 +00:00
Mike Klein
46f7ff9692 Reland "begin caching Programs in SkVMBlitter"
This is a reland of d1d4cbf2e4

PS2 delays the cache initialization until acquire_program_cache()
is first called, eliminating the static initializer and destructor
from the original CL.

Original change's description:
> begin caching Programs in SkVMBlitter
>
> My first drafts put caching inside SkVM.cpp, which I rejected for
> feeling a little too magic, and then in SkVMBuilder.cpp using a
> fingerprint of the skvm::Builder to skip Builder::done().
>
> This version makes an explicit Key structure holding all the parameters
> that currently matter to the Blitter, and caches using that.  This is
> nice because it can be done much more cheaply than running the JIT, and
> much more cheaply even than running the Builder.  It also makes the
> parameterization of the Blitter explicit, which I like.
>
> This does sometimes create programs that are equivalent but have
> different keys, but that's not that common, and it's pretty harmless.
> E.g. today if the device colorType() is opaque or premul, we'll think
> those are different programs, but actually end up making the exact
> same calls to Builder.  No big deal, and maybe even gives us a
> suggestion to do something when the destination is opaque to skip work.
> I've left that as a TODO followup.
>
> We really only need a small cache to get a good hit rate.  Running all
> GMs in one process serially, we're now down to 22 calls to done() from
> >100K at head (and >500K yesterday).  (Would be 13 if we treated opaque
> and premul the same.)
>
> There are two places I'd like to have used tryAcquire() on an SkSpinlock
> but the thread safety static analysis is wrong and prevents me.  Left
> some TODOs.
>
> Change-Id: I83a365fc895720c76b56b0e5a78f4c673fcd9d64
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232817
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>

Change-Id: Ib6a8528be1cd89ae32b09d63c14925d9ba2f529a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233056
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-07 15:11:02 +00:00
Mike Reed
63db48c3ce Revert "begin caching Programs in SkVMBlitter"
This reverts commit d1d4cbf2e4.

Reason for revert: static initializers broken checks in Chrome Roll

e.g. gProgramCache{8}

Original change's description:
> begin caching Programs in SkVMBlitter
> 
> My first drafts put caching inside SkVM.cpp, which I rejected for
> feeling a little too magic, and then in SkVMBuilder.cpp using a
> fingerprint of the skvm::Builder to skip Builder::done().
> 
> This version makes an explicit Key structure holding all the parameters
> that currently matter to the Blitter, and caches using that.  This is
> nice because it can be done much more cheaply than running the JIT, and
> much more cheaply even than running the Builder.  It also makes the
> parameterization of the Blitter explicit, which I like.
> 
> This does sometimes create programs that are equivalent but have
> different keys, but that's not that common, and it's pretty harmless.
> E.g. today if the device colorType() is opaque or premul, we'll think
> those are different programs, but actually end up making the exact
> same calls to Builder.  No big deal, and maybe even gives us a
> suggestion to do something when the destination is opaque to skip work.
> I've left that as a TODO followup.
> 
> We really only need a small cache to get a good hit rate.  Running all
> GMs in one process serially, we're now down to 22 calls to done() from
> >100K at head (and >500K yesterday).  (Would be 13 if we treated opaque
> and premul the same.)
> 
> There are two places I'd like to have used tryAcquire() on an SkSpinlock
> but the thread safety static analysis is wrong and prevents me.  Left
> some TODOs.
> 
> Change-Id: I83a365fc895720c76b56b0e5a78f4c673fcd9d64
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232817
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>

TBR=mtklein@google.com,herb@google.com

Change-Id: I9a32f24b79054f7174d82bb8e6aca2a9f65894e8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233037
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-07 12:15:22 +00:00
Konstantin Pozin
c13305320f [fuchsia] Migrate SkFontMgr_fuchsia to approved fuchsia.fonts FIDL API
I18N-34

Bug: skia:9307

Change-Id: I6d6e777e4f60d266aa7bea97def482f398a7dbc1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232122
Auto-Submit: Konstantin Pozin <kpozin@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
2019-08-06 22:48:04 +00:00
Mike Klein
d1d4cbf2e4 begin caching Programs in SkVMBlitter
My first drafts put caching inside SkVM.cpp, which I rejected for
feeling a little too magic, and then in SkVMBuilder.cpp using a
fingerprint of the skvm::Builder to skip Builder::done().

This version makes an explicit Key structure holding all the parameters
that currently matter to the Blitter, and caches using that.  This is
nice because it can be done much more cheaply than running the JIT, and
much more cheaply even than running the Builder.  It also makes the
parameterization of the Blitter explicit, which I like.

This does sometimes create programs that are equivalent but have
different keys, but that's not that common, and it's pretty harmless.
E.g. today if the device colorType() is opaque or premul, we'll think
those are different programs, but actually end up making the exact
same calls to Builder.  No big deal, and maybe even gives us a
suggestion to do something when the destination is opaque to skip work.
I've left that as a TODO followup.

We really only need a small cache to get a good hit rate.  Running all
GMs in one process serially, we're now down to 22 calls to done() from
>100K at head (and >500K yesterday).  (Would be 13 if we treated opaque
and premul the same.)

There are two places I'd like to have used tryAcquire() on an SkSpinlock
but the thread safety static analysis is wrong and prevents me.  Left
some TODOs.

Change-Id: I83a365fc895720c76b56b0e5a78f4c673fcd9d64
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232817
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-08-06 21:05:41 +00:00
Chris Dalton
08755129a1 Add a GrTextureResolveManager class
Adds a GrTextureResolveManager class and plumbs it through calls to
generate the drawing manager's dependency DAG. This new class is
currently unimplemented, but it wraps GrDrawingManager and will
eventually give limited access to functionality for making new tasks
that regenerate mipmaps and/or resolve MSAA. We will use this object
to move mipmap generation up to the DAG/proxy level.

Bug: skia:
Change-Id: Ie1deef21e7ae579a0262f2eeb93d451f0740d823
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232633
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-08-06 20:47:31 +00:00
Mike Klein
5fac8a15c8 really no-op Program default constructor
By funnelling the no-arg Program constructor through the main one, we're
actually JITting a small program that doesn't do anything but loop
today.  Skipping that saves _a whole lot_ of pointless mmap, mprotect,
munmap, Assembler calls, etc.

Change-Id: I88b3589177dfd86978b030644759a28e1783b702
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232818
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-06 19:51:30 +00:00
Chris Dalton
5fe99773c5 Add a 'closeRenderTasksForNewOpList' method to GrDrawingManager
This consolidates some duplicate code across newRTOpList and
newTextureOpList.

Bug: skia:
Change-Id: I3a3c150e20e3db279de476307c5281668c3fdd9a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232836
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-08-06 19:02:32 +00:00
Mike Klein
c853bf2867 build programs lazily in SkVMBlitter
When run over all GMs, this cuts the number of programs
we build and JIT from 531,012 down to 141,930.

Draws the same, of course.

Change-Id: Ia804ded23496a2f534fb94d047547c9b644f3cfc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232776
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-06 17:15:28 +00:00
Greg Daniel
900583a11e Update some gpu caps isFormatRenderable calls.
This adds an isFormatRenderable call that doesn't take a GrColorType
which will be used in future changes. Also renamed the one that
takes a GrColorType to be more explixit what its use is.

Bug: skia:6718
Change-Id: Ib5a11aacccc4d94d21bc39be05f116ec3b23a3e6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232757
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-06 17:09:08 +00:00
Robert Phillips
bdb0919dcc Use GrComputeTightCombinedBufferSize in GrMtlGpu::uploadToTexture
A fragment of a larger CL

Change-Id: I1063186a411da280761187ebe644460afbd67430
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232756
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-06 16:09:58 +00:00
Mike Reed
560e9178bd specialize drawAtlas for raster backend
2x faster than calling drawVertices as the impl.

Lots more to do in future CLs
- much of the time is spent in malloc, as we cons-up private shaders.
  we *could* create a private shader and wack its data for each draw
  (breaking the immutable contract, but that may be ok for a raster-only
  internal-use shader...)
- also spend time building the pipeline for each draw, even though
  all that has changed is a color payload (and the ctm). A custome
  stage(s) that exposed its private data could be reused with new
  data...

Bug: skia:
Change-Id: I0ff15155e37c0af7931abd34c0883701a47a048a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/203168
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-05 21:01:47 +00:00
Greg Daniel
ea6bb447a2 Add supported GrColorTypes to Mtl FormatTable.
Change-Id: I095a69b801123225e1bd49573701e5e1632430eb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232516
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-05 20:13:17 +00:00
Brian Salomon
a9c2257810 Pass size and GrPixelConfig to GrSurface/Texture/RenderTarget constructors
Change-Id: I4421354453a22a0a2853fc3cd64199f76b70c9f2
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232556
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
2019-08-05 19:08:07 +00:00
Brian Salomon
4eb38b7684 Pass GrBackendFormat to GrResourceProvider and GrGpu texture create
functions.

Change-Id: Ie3fe9d56fdbf369ccacd0188a3d3d73ce1d30d48
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232141
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-05 17:33:17 +00:00
Florin Malita
76eef9a21f Add missing GrLumaColorFilterEffect opt flag
GrLumaColorFilterEffect implements constantOutputForConstantInput() but
doesn't opt in for this optimization.

Change-Id: I9ba22a5e6da5974ba75610ad33d37bc467e45689
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232399
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Florin Malita <fmalita@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-05 15:26:15 +00:00
Greg Daniel
9655534306 Put read and output swizzle back on gl format table.
Change-Id: I8d1fa3aefba8f953e261e8a20818c24398468be0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232143
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-05 14:22:26 +00:00
Robert Phillips
00c9f0dc92 Increase specificity of GrColorType computed for YUV planes (take 2)
When a single channel texture is used for a YUV channel we will
interpret it as kGray_8. When a single channel texture is used
as an A channel we will interpret it as kAlpha_8.

Change-Id: I0a02b849d214f63369dedf09b78195a293adc78e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232142
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-05 12:59:40 +00:00
Mike Reed
dc85d3cb67 remove dead SK_SUPPORT_LEGACY_BICUBIC_FILTERING code
All clients that used the flag (google3, chrome) have been updated

Change-Id: I08062301a02a4270cda7e5765e6d21c8ac82b691
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232025
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-05 01:58:59 +00:00
Stephen White
d7325185a2 Dawn backend: update to recent Skia changes.
Change-Id: I0cdeb89c3b1efe4d59c65a14cca40a7c4b562972
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232023
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-02 21:49:40 +00:00
Stan Iliev
8341022d23 Delete unused variant of MakeBackendTexture
Test: built and ran Android
Bug: b/138674291
Change-Id: I7ee7a2489749cde7c4f384002856ca2ea1bd00d7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232018
Commit-Queue: Stan Iliev <stani@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-02 20:55:40 +00:00
Greg Daniel
1ff50215a4 Add table for supported colortypes in GrVkCaps.
Currently Vulkan does not have a second layer table for external IO
GrColorTypes since it doesn't need any extra meta data it for both
read and write it always uses the GrColorType of the surface.

Also removed a few switches in the GrVkCaps to use the new table.

Bug: skia:6718
Change-Id: Ib4df5862051a235df0c7c0acc0540a6b56dee516
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232020
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-02 20:32:33 +00:00
Chris Dalton
f8e5aadbd4 Remove 'dst' argument from GrOpList::copySurface
The dst should always be fTarget. Otherwise we need to rethink our
model of when to mark mipmaps, etc. as dirty.

Bug: skia:
Change-Id: Ie4e98374df40d825801494bf335b0a5a2c6f459f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230916
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-02 19:38:58 +00:00
Michael Ludwig
8ee6cf3691 Move SkImageFilter functionality into private SkImageFilter_Base
Bug: skia:9281
Change-Id: I189dbf652580805641f8c4b9a6587cf15a9049dd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231256
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-02 18:56:39 +00:00
Mike Klein
bc2c71f031 no need to increment uniform pointers by zero
This is basically a no-op, just trimming a tiny bit of silly codegen.

Change-Id: I0c20a22f1c9fb6226f9121eb8232b85f156a7f05
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232061
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-02 18:50:44 +00:00
Robert Phillips
8ba5315073 Revert "Increase specificity of GrColorType computed for YUV planes"
This reverts commit c326aaf134.

Reason for revert: ANGLE D3D es2 bots

Original change's description:
> Increase specificity of GrColorType computed for YUV planes
> 
> When a single channel texture is used for a YUV channel we will
> interpret it as kGray_8. When a single channel texture is used
> as an A channel we will interpret it as kAlpha_8.
> 
> Change-Id: I746f8d761d7779266a4106311a93d651266bb422
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232017
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=bsalomon@google.com,robertphillips@google.com

Change-Id: I57a00d65c6226822a501b231e103016a45943e5e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232138
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-02 18:29:27 +00:00
Mike Klein
b994412823 select, {eq,lt,gt}_i32 on x86
Add vpblendvb, vpcmpeqd, and vpcmpgtd, to implement select and eq/lt/gt.
I want to think just a touch bit more about neq, lte, and gte.

This is enough to JIT everything SkVMBlitter creates today.

There are 24 possible argument orders to vpblendvb,
so I'm sure I've got them wrong somehow, even with the new test.

Change-Id: I357664b866d8258a2b5438d520f47542ad581c50
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232060
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-02 18:28:15 +00:00
Mike Klein
95529e8216 x86 store16
Nothing particularly tricky.  Very much like store8,
but with one fewer shuffle.

This lets some of the 565 blitters JIT!

Change-Id: I853905bda30a0cda89f3fcb5fef1dfe62725063b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232059
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-02 17:47:34 +00:00
Robert Phillips
c326aaf134 Increase specificity of GrColorType computed for YUV planes
When a single channel texture is used for a YUV channel we will
interpret it as kGray_8. When a single channel texture is used
as an A channel we will interpret it as kAlpha_8.

Change-Id: I746f8d761d7779266a4106311a93d651266bb422
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232017
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-02 17:44:04 +00:00
Mike Reed
b2e3c649ef fix bicubic to not be confused by rotated ctms
... a bunch of gm diffs, but all are expected.

Guard flag: SK_SUPPORT_LEGACY_BICUBIC_FILTERING

Bug: skia:9293
Change-Id: I992222ebdee806baa84aff950cd9da270ad3070f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232019
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-02 17:41:16 +00:00
Chris Dalton
6b49810f98 Extract a GrRenderTask base class from GrOpList
This is a more abstract representation of something that can
participate in the DAG by modifying a GrSurfaceProxy's pixels. This
will serve as the direct base class for future DAG participants that
aren't opLists, and help to eventually remove GrTextureOpList.

Bug: skia:
Change-Id: Ia903c0188e0f6a6602781b90ee8da87ba3cc13f8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231277
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-08-02 16:56:09 +00:00
Mike Klein
52010b7dd8 x86, load16
Very similar to load8.

The only interesting thing is how different vpinsrw is from vpinsrb (and
vpinsrd and vpinsrq)... different map of instructions entirely.

Change-Id: Ia413b83604dd2d277d59495c5f693f505c35be9f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232058
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-02 16:52:44 +00:00
Mike Klein
94d054b53c x86 uniform8
Add vbroadcastss(Ymm, Xmm) and expand movzbl() to support an offset.

The sequence

    movzbl          (load a byte, zero-extend to 4 byte)
    vmovd           (move that 4 byte value to an xmm)
    vbroadcastss    (broadcast low 4 bytes of xmm to all lanes of ymm)

implements uniform8.

Change-Id: I1d3125920d19dcb3cad5980495310bc95b9dffee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232057
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-02 16:41:44 +00:00
Mike Klein
788967eb37 add vbroadcastss(Ymm, GP64, int)
vbroadcastss with a register argument and immediate offset implements
uniform32.  And this turns on the JIT for some new SkVMBlitter paths
that pass more arguments that I'd previously wired up, so add a few
more.

Change-Id: I66db1286dcdb2c4a4ba7c43f2dc2cd13564d4d34
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232056
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-02 16:07:37 +00:00
Brian Salomon
01915c0dd0 GrCaps::supportedWritePixelsColorType takes CT/format rather than config.
Bug: skia:6718
Change-Id: I555a1c6962e7abbe0c7a7271f563e2aab714207d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231640
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-02 15:21:30 +00:00
Ben Wagner
22e04c6e10 Tweak css3 weight score, prevent ties.
The old code could produce ties and didn't make much logical sense.
Now the range between 400 and 500 prefers heavier weights up to 500,
then lower weights, then the least weight above 500.

Change-Id: I4e80f43c039d795efc49a7329c5c64f9da0fd9b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231957
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-08-02 14:42:31 +00:00
Stephen White
bb6bed1d07 First implementation of GrDawnProgramBuilder.
Conversion of SkSL to (Dawn-friendly) SPIR-V.
Conversion of GlBlendCoeff -> dawn::BlendFactor.
Conversion of GlBlendEquation -> dawn::BlendOperation.
Creation of dawn::ColorState from color format, write mask, blend state.
Building of basic BindGroupLayouts and BindGroups (the equivalent of
Vulkan's DescriptorSets).
Handling the RTAdjustment uniform, which handles the viewing transform.

Change-Id: If8aef19d71f81bc805defcf5fd7c4ebe3b9547db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231177
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-02 14:25:00 +00:00
Michael Ludwig
06eacf44d5 Add new SkImageFilters factory API
In preparation for moving the filter-specific headers from include/effects and into src/effects/imagefilters, this exposes a more convenient API where all filters provided by Skia are accessible from the same factory.

It also only exposes the factories that take the shared enums (SkColorChannel, SkTileMode), so the per-filter enums can be phased out (SkBlurImageFilter::TileMode, etc.). It also accepts an SkIRect* instead of an SkImageFilter::CropRect* since all uses seem to be for integer rectangles and flags are either always on or always off. This will allow us to later remove the CropRect type.

Bug: skia:9280
Change-Id: I71f77ff44b573f87b837d6523b9eb565521f0f36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230876
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-02 13:33:35 +00:00
Greg Daniel
eadfac9878 Rework maxRenderTargetSampleCount and isFormatRenderable in GrCaps.
With this maxRenderTargetSampleCount only takes a GrBackendFormat and
returns a sample count based on that only. If a caller wants to know if
a given Format and GrColorType pair is renderable they should use
isFormatRenderable which now also takes a desired sample count.

This change also allows the removal of GrPixelConfig version of
maxRenderTargetSampleCount and internalMultisampleCount.

Bug: skia:6718
Change-Id: I563c61f8349e56f6681378170a45f33ac5cddfa9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231558
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-02 13:31:45 +00:00
Nathan Rogers
fdd03910d6 Add a TRACE_EVENT for SkGpuBlurUtils::GaussianBlur
This function has been found to have strong influence over UI
performance for the Fuchsia project (in both the GPU work it goes on to
create, and the execution of the function itself when shader compilation
is required).  Add a trace event for it to increase its visibility in
traces.

Change-Id: Ia29cc26fc047d03fb0a4db48dae5ea2ebcd07099
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230017
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Nathan Rogers <nathanrogers@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-02 12:39:04 +00:00
Florin Malita
4800949bf4 Reland: SkColorfilters::HSLAMatrix
Introduce an SkColorFilter_Matrix flavor operating in HSLA space.

(CPU-only for now)

TBR=mtklein

Change-Id: I3a8686775593ccc9ce0e46159a17bec7f4ab4228
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231736
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-08-01 23:04:22 +00:00
Brian Salomon
85769bf4a2 Renove GrPixelConfig from GrGLGpu::uploadTexData
Bug: skia:6718
Change-Id: Ia1b4773c55dc195a5ae129676d7b095b99ca4057
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231645
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-01 22:59:17 +00:00
Mike Klein
0e00816875 sketch SkVMBlitter
I'm having a hard time implementing SkRasterPipeline with SkVM,
so maybe it makes sense to try stepping over it instead?

Have not done much timing, except that it's noticeably slower
to generate GMs with this blitter turned on than turned off:
use of uniforms is forcing us into the interpreter.

I decided to start off with a perfect div255()... I'm curious to
see if we can live with perfect instead of an approximation.

Change-Id: I752f4a32ebe32ca550c9762aaad9ad86670b79d5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231117
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-08-01 22:22:03 +00:00
Mike Reed
64acf4f7cf remove unneeded bitmapprovider abstraction
Change-Id: Idd413389bb0828a6fc73b7285b4ed7b6fe48af6f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231638
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-01 21:24:02 +00:00
Mike Klein
40f9138361 Revert "let color filters tell us their alpha format"
This reverts commit 0355f05b26.

Reason for revert: roll?

Original change's description:
> let color filters tell us their alpha format
> 
> There are a bunch of native premul->premul color filters, and about an
> equal number of native unpremul->unpremul filters that all have roughly
> the same logic to interoperate with a premul color pipeline.  I haven't
> seen anything that wants premul in and unpremul out or vice versa.
> 
> (It's easy to find by grepping for ::unpremul.)
> 
> This CL flags the natively unpremul color filters and centralizes the
> logic to handle premul interop.  This mostly eliminates the need for
> SkColorFilter subclasses to know shaderIsOpaque, but not quite entirely.
> It's of course used in the centralized SkColorFilter::appendStages(),
> but is still also needed by any subclass that calls that, any subclass
> that composes other color filters. I've commented out any unused
> shaderIsOpaque arguments.
> 
> In the future we could imagine handling this outside in a more
> sophisticated way, like eliding unnecessary alpha format conversions.
> We'd need to move this logic out of SkColorFilter::appendStages() to
> it's callers... the blitter, composing subclasses, and any other misc.
> 
> Should be no diffs and no interesting perf change.
> 
> I couldn't help but correct some misuse of "protected" where I was
> editing anyway.  I'm feeling a mega CL coming...
> 
> Change-Id: If3528820ca639357864b8b99c8fe11ab60c1ae0d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231465
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Mike Reed <reed@google.com>

TBR=mtklein@google.com,fmalita@chromium.org,reed@google.com

Change-Id: Ide8b887fe7ff445f503864ee935908bcb56f637e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231677
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-01 21:11:36 +00:00
Mike Klein
44d095fe18 Revert "SkColorfilters::HSLAMatrix"
This reverts commit f4c5f63ab9.

Reason for revert: trying to revert my earlier CL.  Sorry!  I'll let you reland this one first and I'll rebase next time.

Original change's description:
> SkColorfilters::HSLAMatrix
> 
> Introduce an SkColorFilter_Matrix flavor operating in HSLA space.
> 
> (CPU-only for now)
> 
> Change-Id: If081de062b9e920c3365bd7b281e45bb069c3d1a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231259
> Commit-Queue: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Mike Reed <reed@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com,brianosman@google.com,fmalita@chromium.org,reed@google.com

Change-Id: I6a4e85d3810e2ca30d072937c035c929917d36c9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231678
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-01 21:10:31 +00:00
Brian Salomon
f77c1460f8 Make read/write/transfer pixels functions take surface color type
Bug: skia:6718
Change-Id: I9cac1b9dc8c04969719c79b7b7ce10c18fb428d4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231563
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-01 21:06:30 +00:00
Robert Phillips
bac46728fc Add a means of printing out the GrBackendFormat
Change-Id: I78b145765bc6ad2f0568ff9bee97397844c23728
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231557
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-01 20:42:32 +00:00
Robert Phillips
7854746ead Make GrGLCaps::getYUVAColorTypeFromBackendFormat also map R8 to GrColorType::kGray_8
This change allows Chrome to treat its single channel YUV planes uniformly (as kGray_8_SkColorType).

Change-Id: Icc80ae4e4cbb192318635b443741b216f2008609
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231417
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-01 19:24:20 +00:00
Brian Salomon
77a684f899 Use GrConvertPixels in GrOpFlushState::doUpload
Add special case to GrConvertPixels for non-converting copies.

Change-Id: I8b5a7513e28e966e4269f42dbed387d8800d25fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231559
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-01 19:15:55 +00:00
Stan Iliev
a56b04ad3d Allow to rebind GL texture if AHB content has changed
Add an output function argument updateProc to MakeBackendTexture.
updateProc needs to be invoked, when AHB buffer content has
changed.  OES_EGL_image_external spec requires to bind the
texture, when buffer content has changed.
glEGLImageTargetTexture2DOES is invoked too (spec is not clear,
but MTK devices require it).

Test: Built and ran android
Bug: b/138674291
Change-Id: If7cf3051bc513c037440ab3331e0a0fdfcba5c2b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231482
Commit-Queue: Stan Iliev <stani@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-01 19:04:50 +00:00
Florin Malita
f4c5f63ab9 SkColorfilters::HSLAMatrix
Introduce an SkColorFilter_Matrix flavor operating in HSLA space.

(CPU-only for now)

Change-Id: If081de062b9e920c3365bd7b281e45bb069c3d1a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231259
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-01 19:02:55 +00:00
Mike Reed
d2f4be3dd0 make bicubic decision logic shareable
Follow-on CL will use this new priv method to fix the BitmapState logic.
That change will be complicated, as we will likely have to guard it
to stage layout changes with clients.

Bug: skia:9293
Change-Id: If3bc4356944ee673a3e56897a70c373b47ecaedd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231560
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-01 18:57:52 +00:00
Greg Daniel
0258c90803 Remove use of isConfigRenderable.
Bug: skia:6718
Change-Id: I7eb25601e55042252a4fdcddfa4bb906ce0307dd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231108
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-01 18:57:51 +00:00
Mike Klein
0355f05b26 let color filters tell us their alpha format
There are a bunch of native premul->premul color filters, and about an
equal number of native unpremul->unpremul filters that all have roughly
the same logic to interoperate with a premul color pipeline.  I haven't
seen anything that wants premul in and unpremul out or vice versa.

(It's easy to find by grepping for ::unpremul.)

This CL flags the natively unpremul color filters and centralizes the
logic to handle premul interop.  This mostly eliminates the need for
SkColorFilter subclasses to know shaderIsOpaque, but not quite entirely.
It's of course used in the centralized SkColorFilter::appendStages(),
but is still also needed by any subclass that calls that, any subclass
that composes other color filters. I've commented out any unused
shaderIsOpaque arguments.

In the future we could imagine handling this outside in a more
sophisticated way, like eliding unnecessary alpha format conversions.
We'd need to move this logic out of SkColorFilter::appendStages() to
it's callers... the blitter, composing subclasses, and any other misc.

Should be no diffs and no interesting perf change.

I couldn't help but correct some misuse of "protected" where I was
editing anyway.  I'm feeling a mega CL coming...

Change-Id: If3528820ca639357864b8b99c8fe11ab60c1ae0d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231465
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
2019-08-01 17:28:00 +00:00
Michael Ludwig
c711a86493 Combine erode and dilate implementations
Combine the GPU and Raster morph type and direction enums, and have the
morphology base class accept the type as an argument instead of a virtual.
Adds somewhat complex deserialization code to be backwards compatible with
the old erode and dilate create procs.

Also updates SkXfermodeImageFilter's implementation to be named with the
"Impl" suffix instead of _Base, and updates both filters to have the common
code layout for image filter implementations.

Change-Id: I5082914f9754c2be71becfceb0c7d9a8fd06f569
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231099
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-01 17:24:10 +00:00
Robert Phillips
1c4e8bb85f Disable LUM16F support for all Adreno devices
TBR=egdaniel@google.com
Change-Id: I8b353eba04e7f682af88044434957b9a81653095
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231478
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-01 16:50:57 +00:00
Michael Ludwig
69e1462010 Remove SkDEBUGFAIL in SkDisplacementMapEffector ctor
Bug: chromium:988237
Change-Id: Idf7c77b009f9dc9daa56426c18a85f8441dc319c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231476
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-01 15:02:36 +00:00
Robert Phillips
ffe27290ff Add GrCaps::getTestingCombinations
This will decrease our reliance on GrPixelConfig for testing.

Bug: skia:6718
Change-Id: I951f57cce229792d994391dbba74dd206bbfb923
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230893
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-01 14:46:36 +00:00
Michael Ludwig
a00318f1ad Consistify image filter implementation code layouts
This makes sure image filter implementation classes are in an anon.
namespace, removes the extraneous Impl::Make factory by making their
ctors "public", and reorders the definitions to be (more or less):
 - Impl class in anon namespace
 - Public Make factory definition
 - Flattenable registration
 - CreateProc definition
 - flatten definition
 - Miscellaneous overrides and small functions
 - filterBounds() and filterImage implementations

This doesn't really apply to the lighting image filter, which is its
own beast. A follow up CL applies this same clean up (and a little more)
to SkMergeImageFilter and SkXfermodeImageFilter, but it is separated
because it requires bumping the SkPicture version number.

Change-Id: I1e75d3b9a4e8a4599172af4a28789f7dfe0f010d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231098
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-01 14:23:26 +00:00
Stephen White
1532d22050 Dawn: fix supportedWritePixelsColorType().
Change-Id: Ied143be9c8139b1949a79ff68c857c22b43084b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231258
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-01 11:26:15 +00:00
Mike Reed
78eedba78f WIP: hack to try combining bicubic stage
Before

    367.76 !	bitmap_RGBA_8888_A_scale_bicubic	8888
     43.24  	bitmap_RGBA_8888_A_scale_bilerp	8888

After

    210.53 ?	bitmap_RGBA_8888_A_scale_bicubic	8888
     43.47  	bitmap_RGBA_8888_A_scale_bilerp	8888

Change-Id: I2c10d1d25f25d96363c2093074b45a9d9df5afff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231109
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-01 02:13:11 +00:00
Brian Salomon
8f8354a9a3 Reland "Remove GrCaps::SupportedRead::fSwizzle and supporting code"
This reverts commit a0f864d6ac.

Reason for revert: updated valgrind suppression

EXTRA_TRYBOTS=Test-Ubuntu18-GCC-Golo-GPU-QuadroP400-x86_64-Release-All-Valgrind_SK_CPU_LIMIT_SSE41

Original change's description:
> Revert "Remove GrCaps::SupportedRead::fSwizzle and supporting code"
>
> This reverts commit 1cec69ae5c.
>
> Reason for revert: Causing Valgrind failures
>
> Original change's description:
> > Remove GrCaps::SupportedRead::fSwizzle and supporting code
> >
> > Add weird color types that handle the swizzling.
> >
> > Change-Id: Ie37a00eb877fe5e519f7498bf749e02a2f1dc204
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230135
> > Reviewed-by: Greg Daniel <egdaniel@google.com>
> > Commit-Queue: Brian Salomon <bsalomon@google.com>
>
> TBR=egdaniel@google.com,bsalomon@google.com
>
> Change-Id: I710e1952f2cef1a1e6e7ccf408b8a71ce721c002
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231262
> Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
> Commit-Queue: Ben Wagner aka dogben <benjaminwagner@google.com>

TBR=egdaniel@google.com,bsalomon@google.com,benjaminwagner@google.com

Change-Id: I367f62ba7349b112d0a2eb5340a37be938ad5ef5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231178
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-01 00:17:54 +00:00
Ben Wagner aka dogben
a0f864d6ac Revert "Remove GrCaps::SupportedRead::fSwizzle and supporting code"
This reverts commit 1cec69ae5c.

Reason for revert: Causing Valgrind failures

Original change's description:
> Remove GrCaps::SupportedRead::fSwizzle and supporting code
> 
> Add weird color types that handle the swizzling.
> 
> Change-Id: Ie37a00eb877fe5e519f7498bf749e02a2f1dc204
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230135
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

TBR=egdaniel@google.com,bsalomon@google.com

Change-Id: I710e1952f2cef1a1e6e7ccf408b8a71ce721c002
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231262
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Ben Wagner aka dogben <benjaminwagner@google.com>
2019-07-31 23:55:31 +00:00
Ben Wagner aka dogben
579e86247c Reland "Add LUM8 case to GrGLCaps::getYUVAColorTypeFromBackendFormat"
This reverts commit 6779aefa73.

Reason for revert: Reverted wrong CL 🤦

Original change's description:
> Revert "Add LUM8 case to GrGLCaps::getYUVAColorTypeFromBackendFormat"
> 
> This reverts commit 1a607e7b6e.
> 
> Reason for revert: Causing Valgrind failures
> 
> Original change's description:
> > Add LUM8 case to GrGLCaps::getYUVAColorTypeFromBackendFormat
> > 
> > This omission appears to have been causing YUV problems in Chrome.
> > 
> > Change-Id: I7f13b18ba5c367dcdc242eff3532cacb2e06d1da
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231100
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> > Commit-Queue: Robert Phillips <robertphillips@google.com>
> 
> TBR=bsalomon@google.com,robertphillips@google.com
> 
> Change-Id: I741283ff4681a49eb84a48935ec17eb6aeffd8e3
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231257
> Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
> Commit-Queue: Ben Wagner aka dogben <benjaminwagner@google.com>

TBR=bsalomon@google.com,benjaminwagner@google.com,robertphillips@google.com

Change-Id: I637b626e6707d625bcc17df01234246995b78243
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231261
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Ben Wagner aka dogben <benjaminwagner@google.com>
2019-07-31 23:55:12 +00:00
Ben Wagner aka dogben
6779aefa73 Revert "Add LUM8 case to GrGLCaps::getYUVAColorTypeFromBackendFormat"
This reverts commit 1a607e7b6e.

Reason for revert: Causing Valgrind failures

Original change's description:
> Add LUM8 case to GrGLCaps::getYUVAColorTypeFromBackendFormat
> 
> This omission appears to have been causing YUV problems in Chrome.
> 
> Change-Id: I7f13b18ba5c367dcdc242eff3532cacb2e06d1da
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231100
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=bsalomon@google.com,robertphillips@google.com

Change-Id: I741283ff4681a49eb84a48935ec17eb6aeffd8e3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231257
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Ben Wagner aka dogben <benjaminwagner@google.com>
2019-07-31 21:08:49 +00:00
Stephen White
79b81c9b47 First implementation of GrDawnProgramDataManager.
Also add GrDawnCaps to friends of GrShaderCaps, as the other backends do.

Change-Id: Iae60cae7168ad9194f7808c2f51f41de10e53071
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230747
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-31 20:28:46 +00:00
Stephen White
83d8a949ae First implementation of GrDawnVaryingHandler.
Change-Id: I49a233a28d16622b286ffc4150446b33f899a891
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230557
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-07-31 19:55:57 +00:00
Stephen White
f5b14d8843 Dawn: update to onSupportedReadColorType().
Change-Id: Ic0fd9f3bb807a8377a63a07321e26c4ee5cdeaa7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231176
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-07-31 18:37:06 +00:00
Greg Daniel
8daf3b75a4 Don't have GrVk*CommandBuffer derive from GrVkResource.
The goal here is to help reduce a lot of the refs and unrefs that happen
during each of our draws.

Change-Id: I81b45a2259acf24b73d1a01f8574a48c0adae9fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230741
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-31 17:58:35 +00:00
Ian McKellar
38037fb443 [fuchsia] Update for new FIDL API
See: https://fuchsia-review.googlesource.com/c/fuchsia/+/304389
Change-Id: Ia0738618106597ff250c37a3e8061f13cb777c41
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230957
Reviewed-by: Mike Klein <mtklein@google.com>
Auto-Submit: Ian McKellar <ianloic@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-31 16:49:05 +00:00
Hal Canary
d7cf0be186 SkPDF: SkPDFMakeShader handles pathological inputs better.
Also add a unit test that crashes before this change.

Change-Id: I94e441a57a9c28e7c12bc2b214a65b41446ffab8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230754
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-07-31 16:23:35 +00:00
Brian Salomon
1cec69ae5c Remove GrCaps::SupportedRead::fSwizzle and supporting code
Add weird color types that handle the swizzling.

Change-Id: Ie37a00eb877fe5e519f7498bf749e02a2f1dc204
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230135
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-31 15:48:45 +00:00
Robert Phillips
1a607e7b6e Add LUM8 case to GrGLCaps::getYUVAColorTypeFromBackendFormat
This omission appears to have been causing YUV problems in Chrome.

Change-Id: I7f13b18ba5c367dcdc242eff3532cacb2e06d1da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/231100
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-31 15:36:05 +00:00
Greg Daniel
6980c4e0ae Remove isConfigCopyable from GrCaps.
Bug: skia:6718
Change-Id: I1ad95f838c9d41e5c22811efab5845217880907f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230894
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-30 22:54:59 +00:00
Michael Ludwig
245c002bc0 Remove use of SkDropShadowImageFilter::ShadowMode internally
This is in preparation of exposing new factory functions DropShadow()
and DropShadowOnly(), which do not take the enum at all in their params.

Bug: skia:9280
Change-Id: If6e16f46e94b54ab156d2fd02c59fd6171a30f2e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230742
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-30 21:33:59 +00:00
Ben Wagner
7916eaced7 Fix potential use of uninitialized data in with GDI.
Bug: skia:9285
Change-Id: I8b02b3cc586bea0cf3e541848a69542d864f392a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230890
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
2019-07-30 21:22:59 +00:00
Michael Ludwig
6e86c1b05e Remove bad SK_API tag from internal class
Change-Id: Ibd541b4f4d8a9ab2b86743c86a6cfbc50a56518f
TBR: benjaminwagner@google.com
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230891
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-07-30 20:22:07 +00:00
Mike Reed
72a0c0c94d move all picture version crap into single header
Change-Id: Idc11d86809bc20e870bc546fabb26db607739936
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230885
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-07-30 20:15:07 +00:00
Brian Osman
8c12d05a1a Explicitly fetch "main" in the runtime color filter
Fixes problems when adding user-defined helper functions to the SkSL.

Change-Id: I00c3031f67e70039c09ac375774778b698d8a3c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230889
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-30 20:05:27 +00:00
Mike Klein
9fdadb949f test a (the) zero-arg program
Just because a program doesn't read from or
write to memory doesn't mean it's pointless.

Oh wait, yes it does.  It shouldn't crash though.

Change-Id: I6a9c26c065831f9598afccce6e0a34a178cbd925
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230839
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-30 19:58:37 +00:00
Jim Van Verth
d44c0de0b5 Revert "Use shared mode for Metal texture upload buffers."
This reverts commit 1dfb4d25d1.

Reason for revert: This appears to have poorer performance on integrated GPUs.

Original change's description:
> Use shared mode for Metal texture upload buffers.
> 
> On Mac, originally the temporary upload buffer was stored in managed
> memory, which will generate two copy actions, one from the CPU side to
> the GPU side of the managed buffer, then another from the GPU side of
> the buffer to the GPU texure. Shared mode buffers are in PCI-accessible
> system memory, so by storing the temporary texture data there, we should
> be copying from the CPU buffer directly to the GPU texture. This gives
> us another 10-15% perf improvement over the old upload code.
> 
> Change-Id: Ia675e7130e0ae7d0c5f16c8170eeef60a69bfbbd
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230299
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

TBR=egdaniel@google.com,jvanverth@google.com,brianosman@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: Ib89b014586b7bbd899fed5d8e5807e083368a825
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230882
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-30 19:12:10 +00:00
Brian Salomon
ba3df0681e Always use sized internal formats when creating GL render buffers.
Fixes issue where we pass an invalid format, GL_SRGB_ALPHA, when
allocating render buffers.

Change-Id: Ie4ea9f4a4edb2d525b1c32d6a4f8a94c4b55cdb5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230751
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-30 18:48:42 +00:00
Greg Daniel
b6b43bfbb0 Dump GrGLCaps format table in json dump.
Change-Id: I00276862596343456519bdb506e74c355d1834a8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230877
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-07-30 18:45:05 +00:00
Mike Klein
d4546d6c4c add vmovdqa(ymm,ymm)
Fills in a little TODO.
Also add assembler unit tests for similar float->int and int->float.

Tested by SkVM_mad, SkVM_madder.

Change-Id: I5334029927fdecb0ff7f5a3b081cf2ce7b23995c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230838
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-30 18:43:35 +00:00
Michael Ludwig
d668f7f061 Hide SkImageFilter subclasses in CPP files
Bug: skia:9280
Change-Id: Ice3624467f5e643f9d3d81da72d77911eeac963e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230198
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-30 18:39:22 +00:00
Chris Dalton
95d8ceb955 Add GrMipMapsStatus to GrTextureProxy
Bug: skia:
Change-Id: I5adf10f730b04c2b3b62c3b12aa5899da4db3431
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229922
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-30 18:04:04 +00:00
Robert Phillips
0a15cc62a8 Propagate GrRenderable flag to GrCaps::getBackendFormatFromColorType
This makes calling GrCaps::getBackendFormatFromColorType equivalent to calling GrContext::defaultBackendFormat

Change-Id: Ic402245fa0502920c47c2a29aadc4e559abdc09b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230416
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-30 17:45:45 +00:00
Brian Salomon
4d2d6f4137 Lift GrRenderTarget::transferFrom to GrSurfaceContext.
Added virtual transferFrom to GrOpList and implemented in both
subclasses.

Bug: skia:9269
Change-Id: Ic930e46b172879e592897512c81a0cfe79f20d19
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230129
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-30 17:32:35 +00:00
Brian Salomon
8cbf662b29 Always set GL_[UN]PACK_ALIGNMENT to 1.
Removes an unnecessary use of GrPixelConfig.

Bug: skia:6718
Change-Id: Ib020c42eec58fc53aaf5034fb37bf9d6ec459f95
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230748
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-30 16:42:43 +00:00
Stephen White
c0a837fe4e Dawn backend: add asserts for unimplemented functionality.
Also fix some whitespace issues.

Change-Id: Ifa2bb7c421604c37861ae0726c6b2aabfefdec4f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230558
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-07-30 16:38:33 +00:00
Mike Reed
3899239b67 simplify canvas after looper's demise
Bug: skia:4783
Change-Id: Ib5bf3524033b0064f4248552b5946306dab18572
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230744
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-30 15:46:13 +00:00
Mike Klein
5591fdf930 small refactors
Change-Id: I58b52d3e1d05d0834be30e00d991636e227cbf0b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230836
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-30 15:43:13 +00:00
Stephen White
4da34bf747 First implementation of GrDawnUniformHandler.
Change-Id: I76824eca6e72505004b4dfb03fc35c2849176ecb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230459
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-30 14:40:38 +00:00
Michael Ludwig
7bacbf71f7 Update SkPicture version for simplified image filter enums
Bug: skia:9280
Change-Id: I638c2b3d34be2037648cf27bde933345f8abbd77
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230126
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-30 14:22:08 +00:00
Robert Phillips
d5e80ca8ea Add GrContext::defaultBackendFormat
TBR=bsalomon@google.com
Bug: 987392
Change-Id: I38ff649b25e78c0a02a8fd20f513db4be62abf43
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229919
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-30 14:05:28 +00:00
Florin Malita
4571e49331 Clean up SkBaseDevice::CreateInfo
- drop unused ctor
  - all layers are kPremul_SkAlphaType -> drop preserveLCDText logic

Change-Id: I24b9d3273ac65d9775714272a75222f36e44a453
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227643
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-07-30 13:51:28 +00:00
Robert Phillips
8ff8bccf77 Add GrCaps::isFormatCompressed
This is part of trying to remove uses of GrPixelConfig from the proxy provider

Change-Id: I12d085cfbff86d0e44829ce3ee36744b937b804e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230576
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-30 13:47:58 +00:00
Mike Reed
9dc0b9e2f8 remove code now that loopers are dead (w.r.t. canvas and paint)
We can't remove the loopers themselves, as they are still used
by android and chrome (they just don't ever pass them to skia).

Eventually each of those clients will resolve this, but for now
we just keep the classes (and tests) in skia.

Bug: skia:4783
Change-Id: I5f507e6bb82280f2bc7c0b21eebe59c287aa9265
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230579
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-30 12:49:28 +00:00
Stephen White
5048a6a756 First draft of GrDawnBuffer.
This first implementation calls SetSubData() to upload, and simply
uses malloc'ed buffers for onMap()/onUnmap().

Change-Id: I433b4b094a77fbfe1a21447127795b46fdfb9803
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230458
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-29 21:34:27 +00:00
Mike Klein
8ac9f4e5b2 flesh out SkVM ops a bit more
Add missing comparison and selection ops, bit casts, 16-bit memory
operations, gathers, uniform loads, and fill in math holes where
reasonable.  Update some names to be a bit more regular.

I think all instructions are implemented in the interpreter,
and many tested.  More testing and JITs to follow.

Change-Id: I8cf377e8b72a86ac950e020892ce82b39e9d7277
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229893
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-29 20:43:10 +00:00
Greg Daniel
eecc687376 Remove need for GrVkPipelineLayout class.
Change-Id: Ib37cc549bfd52a5fb3f1f8ef76d0117ed2a1f43d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230419
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-29 19:32:38 +00:00
Michael Ludwig
607c057de9 Use SkTileMode for blur and matrix convolution filters
Bug: skia:9280
Change-Id: I6d40b83093d8a8e9e84bbe44d917d02dfde85877
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230124
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-29 18:27:27 +00:00
Ethan Nicholas
1386366e01 renamed SkSL texture() and process() to sample()
Bug: skia:
Change-Id: I2ae0caf08f8434302cae8151ae1ea0fda8d56928
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230397
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-07-29 17:37:38 +00:00
Jim Van Verth
1dfb4d25d1 Use shared mode for Metal texture upload buffers.
On Mac, originally the temporary upload buffer was stored in managed
memory, which will generate two copy actions, one from the CPU side to
the GPU side of the managed buffer, then another from the GPU side of
the buffer to the GPU texure. Shared mode buffers are in PCI-accessible
system memory, so by storing the temporary texture data there, we should
be copying from the CPU buffer directly to the GPU texture. This gives
us another 10-15% perf improvement over the old upload code.

Change-Id: Ia675e7130e0ae7d0c5f16c8170eeef60a69bfbbd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230299
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-29 17:25:08 +00:00
Brian Osman
886af0dae3 Allow defined functions in the SkSL .inc files
Use that to implement many intrinsics in SkSL for the interpreter.

Change-Id: I3762867781cb1a053429fd37b12ae3cf7739cb3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230134
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-29 17:10:48 +00:00
Stephen White
b05ca08cfa Update Dawn backend to ToT Skia.
Change-Id: Ib442d085bc51b10a11ba575bdcee532931c5a32b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230257
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-29 16:05:29 +00:00
Jim Van Verth
96827b125f Use raw MTLBuffer for texture uploads.
There's a fair bit of overhead to setting up a GrMtlBuffer (adding it
to the resource cache, etc.) that isn't necessary in this case when
using a temporary buffer. Overall it gives about 10% improvement in
uploadToTexture().

Change-Id: I99449c9001098c90743cba8d614007db307156d3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230131
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-29 13:47:16 +00:00
Robert Phillips
b7f95d1c16 Switch BackendAllocationTests from GrPixelConfig to GrColorType
Bug: skia:6718
Change-Id: Ifd78a1b227dc468ce882cf3caf78b4fae80cc006
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229386
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2019-07-29 13:26:06 +00:00
Stephen White
ff5d7a2f90 Implement separate sampler and textures in SkSL.
Dawn doesn't support old-style combined texturesampler uniforms, so
they must be expressed as separate samplers and texture uniforms.

At the SkSL Type level, I've added a Texture2D type, and expressed
the Sampler2D (combined) type in terms of it. This ensures that we
emit only a single OpTypeImage for it in the SPIRV.

Eventually, all of the Texture types (1D, 3D, Rect) could be defined
and SamplerX could simply contain a reference to TextureX. I wanted to
float this idea with a single example for now (and since it's all that
the Dawn backend needs).

This also required adding a new "makeSampler2D" function to combine
them, which maps to OpSampledImage at the SPIR-V level.

Change-Id: Iaf33a6e7d339da415be6ea9a017340cb0ef3c1eb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229417
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-07-26 22:09:50 +00:00
Brian Osman
db3dad2289 Interpreter: Better error message for unknown operators
It's possible to hit this with the comma operator. Not sure if there are
any others.

Change-Id: I10fb68d7a20ce54fccc1597da8e656fa7d61cd97
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230197
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-26 20:37:10 +00:00
Ethan Nicholas
f931e4034b fixed some issues with Metal shader functions
The recent change to output child processors as functions served as a
stress test for Metal functions and uncovered some issues with
requirements tracking. This should get everything back on track.

Bug: skia:
Change-Id: If683c95e6668f1afd7be24195071a26cdb84d660
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230130
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-07-26 20:23:20 +00:00
Michael Ludwig
14963cef70 Use SkColorChannel in SkDisplacementMapEffect
Bug: skia:9280
Change-Id: I1a1df193ce212300b7a84d2247fa9c63601c9446
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230119
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-26 19:44:08 +00:00
Greg Daniel
c561189af9 Don't release VkCommandPools already released secondaryCB's resources.
Change-Id: I0773bb6d91bc14cdb528892a8b28fd9af657153b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230132
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-26 19:28:38 +00:00
Mike Reed
6397fa30ab add gm for tricky arc
Very likely, reimplementing this routine using doubles would also
improve results, given the many divides, subtracts, and trig calls.

Bug: skia:9272
Change-Id: I78a3dd9a11a8de1c0ef7a4406a227a0b7d9aecf7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230123
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-26 18:11:04 +00:00
Brian Salomon
b28cb68bc0 Make GrColorTypeBytesPerPixel return size_t.
Change-Id: I4ce55c3870290cc7053db5eeb3eb4e29337f06a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229977
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-26 17:50:32 +00:00
Brian Salomon
42be09d535 Test GrGpu::transferPixelsTo for more color types.
Change-Id: Ibae377f01c1ed37c5dfac50a085c7eb97e93f24b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229376
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-26 16:48:12 +00:00
Chris Dalton
789f2925e8 Disable msaa ccpr on PowerVR again
Bug: skia:9278
Change-Id: I3196ccabb5c8f685f050d881548592a7c16fbec2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230117
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-26 14:35:09 +00:00
Greg Daniel
ba88ab65b3 Reland "Move ExternalFormat and Type to FormatInfo."
This reverts commit e2c5e8c7ee.

Reason for revert: relanding with fix

Original change's description:
> Revert "Move ExternalFormat and Type to FormatInfo."
>
> This reverts commit 80140518ef.
>
> Reason for revert: probably breaking angle
>
> Original change's description:
> > Move ExternalFormat and Type to FormatInfo.
> >
> > This also deletes the ConfigInfoTable in GrGLCaps as there is no more use
> > of it.
> >
> > Additionally with the rework of storing External Io info on the format table
> > I rewrote the implimination of supportedReadPixels and supportedWritePixels
> > for GL to loop over the supported types looking for a match instead of
> > simply defaulting to a base value.
> >
> > Finally transferFromOffsetAlignment has been rolled into the SupportedRead
> > instead of being its own query.
> >
> > Bug: skia:6718
> > Change-Id: I39f77adf6c0b5b38245e55e8a7e18c0b428862d0
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229381
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
>
> TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com
>
> Change-Id: Ifef2e7308fdb4d91d649f08488b798815e0aa5fa
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:6718
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229896
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com

Change-Id: Ida09be706b461cf89467fc0082744177e71e8985
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229918
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-26 13:17:16 +00:00
Brian Salomon
c79a6c402c Fix build flags in GrMtlCaps::supportedReadPixelsColorType
TBR: egdaniel@google.com
Change-Id: I53618e650ae8ffd891d335a834990a4ec18efc72
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229923
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-25 21:38:33 +00:00
Mike Reed
59f2e46ab4 Return translate info from looper, rather than moding a canvas
Change-Id: Ibb4520030bc0ca455fa079d923fd4f5be86d72a1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229837
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-25 20:39:13 +00:00
Greg Daniel
e2c5e8c7ee Revert "Move ExternalFormat and Type to FormatInfo."
This reverts commit 80140518ef.

Reason for revert: probably breaking angle

Original change's description:
> Move ExternalFormat and Type to FormatInfo.
> 
> This also deletes the ConfigInfoTable in GrGLCaps as there is no more use
> of it.
> 
> Additionally with the rework of storing External Io info on the format table
> I rewrote the implimination of supportedReadPixels and supportedWritePixels
> for GL to loop over the supported types looking for a match instead of
> simply defaulting to a base value.
> 
> Finally transferFromOffsetAlignment has been rolled into the SupportedRead
> instead of being its own query.
> 
> Bug: skia:6718
> Change-Id: I39f77adf6c0b5b38245e55e8a7e18c0b428862d0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229381
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com

Change-Id: Ifef2e7308fdb4d91d649f08488b798815e0aa5fa
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229896
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-25 18:46:44 +00:00
Greg Daniel
80140518ef Move ExternalFormat and Type to FormatInfo.
This also deletes the ConfigInfoTable in GrGLCaps as there is no more use
of it.

Additionally with the rework of storing External Io info on the format table
I rewrote the implimination of supportedReadPixels and supportedWritePixels
for GL to loop over the supported types looking for a match instead of
simply defaulting to a base value.

Finally transferFromOffsetAlignment has been rolled into the SupportedRead
instead of being its own query.

Bug: skia:6718
Change-Id: I39f77adf6c0b5b38245e55e8a7e18c0b428862d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229381
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-25 18:05:38 +00:00
Mike Klein
e16717e784 clean up SK_SUPPORT_LEGACY_A8_MASKBLITTER
Change-Id: Ibb637415a53510027838c23cc2316665ffbd6c82
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/209150
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
2019-07-25 17:40:28 +00:00
Mike Klein
52337de95c re-run tools/rewrite_includes.py
PS2 adds a rewrite for Skia #include <...> to #include "...", letting
them be otherwise rewritten and sorted too.  (We do need one exception
for the Vulkan headers, which will otherwise be rewritten to always
point to our own.)  I don't think it's particularly important to
favor "" or <>, but picking one keeps things consistent.

PS3 adds a missing SkMutex.h include.

PS4 fixes a terrible readability problem.

Change-Id: Id9fe752727ef30e802b1daf755ee2ed15e267577
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229742
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-07-25 15:40:33 +00:00
Robert Phillips
62221e768c Delete GrBackendSurface's GrPixelConfig
This member variable is no longer used

TBR=bsalomon@google.com
Bug: skia:6718
Change-Id: I84680c8c3bc36eefa603f5be7f3c15b496a79948
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229478
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-25 15:18:08 +00:00
Ethan Nicholas
c6dce5ac87 Child fragment processors are now written as separate functions
Bug: skia:
Change-Id: Icbf8f542637a874b3e2d3513d932b39728fa5e77
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229385
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-07-25 14:48:47 +00:00
Brian Osman
b380e71cfe Interpreter: Add radians and normalize builtins
Change-Id: I2c76d8cbcfc3f36448127de5a3e1a22f76eda863
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229489
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-25 14:23:37 +00:00
Jim Van Verth
0c9ac58b37 Return nil on SkSL to program failure in Metal.
Bug: chromium:985129
Change-Id: I7dfea73f7eb48aeba11c110fc8b9fa253770afc1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229493
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-24 20:15:39 +00:00
Mike Reed
6d907faa7d add copytable method to typefaces
This allows some backends to efficiently retrieve a copy of the data.

Inspired by https://skia-review.googlesource.com/c/skia/+/229136

Change-Id: I9b0345333e30376a50a5dc7c9e993b847e2791c4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229384
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-07-24 19:20:46 +00:00
Jim Van Verth
eda9a55baa Fix analytic shadows when rotated 180 degrees.
A 180 degree rotation matrix is functionally like a scale matrix, but
the elements are negative. To compensate for this, we use abs().

Bug: b/137547660
Change-Id: Ib0e7449872523af024e7de9005b9bb70743e04b5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229394
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-24 19:17:45 +00:00
Chris Dalton
bbb3f646f8 Add a workaround for PowerVRRogue to never disable color writes
Instead we leave color writes enabled and use a blend state that
preserves the dst color. This allows us to re-enable msaa ccpr on
PowerVR.

Bug: skia:
Change-Id: I1e902d695ad483ffb13dff6a7920749e307b49c7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229387
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-24 17:30:35 +00:00
Robert Phillips
1cd1ed8976 Stop using GrBackendSurface's pixel config
Note: I'll follow this up with a separate CL that removes the pixel config

Bug: skia:6718
Change-Id: If069afa95bd51d5d6b24089fd3a8526e4d982820
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228257
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-24 11:53:35 +00:00
Mike Klein
15baa953a5 only need to hoist one register per tbl imm
As written it was hoisting one register per tbl instruction use, which
was both correct and fast, but using more registers than necessary.  We
only need one table mask for each unique Op::bytes control value.

Caught this looking at the profile for srcover_i32, which uses each of
two distinct bytes control values twice, once for the src pixel and once
for dst.

Change-Id: I42f8611b23c0258369e8aaadd75fc484d1e9cb35
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229397
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-23 18:13:16 +00:00
Mike Klein
84bcd0c3ae skvmtool upgrades
fix toy square program
  add a new toy plus_one program
  also run stock srcover programs
  time at N=15,255,4095

e.g.
            plus_one	 69 Mpx/s	435 Mpx/s	615 Mpx/s
              square	 73 Mpx/s	393 Mpx/s	527 Mpx/s
         srcover_f32	 19 Mpx/s	 38 Mpx/s	 39 Mpx/s
         srcover_i32	 36 Mpx/s	 89 Mpx/s	103 Mpx/s
   srcover_i32_naive	 34 Mpx/s	 85 Mpx/s	 91 Mpx/s
    srcover_i32_SWAR	 49 Mpx/s	169 Mpx/s	191 Mpx/s

Change-Id: Ie041603bf1b458472dd477c64a91c61162a362e3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229396
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-23 17:46:35 +00:00
Brian Osman
e11dfd3da4 Always include surface origin in keys for program/pipeline state
This was effectively happening before, but only after we (always) failed
to find an entry without the origin. If we ever have a system that can
determine ahead of time that we won't depend on surface origin, we can
update this logic. For now, just simplify the code and remove the
useless cache lookups.

Change-Id: I2b6178a8a83a48f33fdc066e185a2a4c13aa8ddc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229284
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-23 17:26:14 +00:00
Robert Phillips
c80b0e9541 Make rest of GrGpu::wrapBackend* methods take a GrColorType (take 2)
This CL is intended to further wean Ganesh off of using the GrBackendTexture's pixel config

TBR=bsalomon@google.com
Bug: skia:6718
Change-Id: Iedaa7811f9c4aac552f219c702627bc476325317
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228338
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-23 16:13:30 +00:00
Brian Salomon
ad61dd6c28 Add driver workaround to avoid noperspective on QC with ver 3.1 or earlier
Bug: chromium:986581
Change-Id: I7be7e9b0c69e976355a4a77d310f3e32b576ce2b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229276
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-23 14:30:09 +00:00
Brian Salomon
e9ad99884e Lift GrRenderTargetContext::rescale to GrSufaceContext
Bug: skia:9269
Change-Id: I7179c298f7b5ae580889d8fa7e3821fb2408aaad
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229077
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-23 14:14:10 +00:00
Brian Osman
1a22b7ffbc Fix a couple potential bugs when adding sampler info to a program key
Calling add32 can re-allocate the key storage, so it isn't safe to call
add32n and then keep writing into the returned pointer if an extra
sampler key is encountered.

Also fix the GP sampler key code to actually set the last bit, not the
16th bit.

Change-Id: I9c83435a164ab0391e2e6a9e1a9bdf6839490a15
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229278
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-23 14:03:09 +00:00
Brian Salomon
27b4d8d8db Remove sample count from GrSurfaceDesc.
This leaves just width, height, and GrPixelConfig. Once we remove the
latter we can replace GrSurfaceDesc with SkISize.

Also remove unused GrRenderTarget::overrideResolveRect

Also remove GrSurfaceProxy::Renderable and use GrRenderable instead.

Change-Id: I652fe6169a22ca33d199b144ec6385286ac07b5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228570
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-23 13:42:29 +00:00
Julia Lavrova
5207f35f33 The current version...
Adding cache
Caching shaped results
Base+Index for referencing arrays
The very first and naive version of cache
Cache measurement, lines and picture
Added text blob cache for lines
Removed Run* from Cluster
Removed const char* from Cluster and Run
Few minor changes

Change-Id: I444a1defa950aed5999cfa1c3545fd83ccb54ce9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227840
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-07-23 13:31:39 +00:00
Chris Dalton
c76bf2a3b5 Revert "ccpr: Unblacklist Radeon in MSAA mode"
This reverts commit 76da035ae9.

Reason for revert: Incorrect rendering

Original change's description:
> ccpr: Unblacklist Radeon in MSAA mode
> 
> Bug: skia:
> Change-Id: I9e0bf68f9c684e7e7ffa293312f9d79e5bcb2d87
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229014
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

TBR=csmartdalton@google.com,ethannicholas@google.com

Change-Id: I2e204cb3bd00f54440b06bfc8ac7a37d1092e0ca
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229196
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-23 04:13:44 +00:00
Mike Klein
fae63e477c hoist tbl masks
This adds a warmup phase to let each instruction do any setup
it needs, adding lookup entries for splat and bytes, and
on aarch64, hoisting the mask to a register when we can.

Oddly, this measures as a ~3x slowdown on the phone I'm testing, an
international Galaxy S9 with a Samsung Mongoose 3 processor.  I've got
to imagine this somehow makes the processor think there's a carried loop
dependency when there is not?  Anyway, we already know that that's a
pretty crazy CPU (reports FP16 compute but cannot), and this does deliver
a speedup on the Pixel 2's Kryo 280 / Cortex A73, so I think maybe I'll
just swap back to testing with the Pixel 2 and forget about that S9.

Here's a before/after codelisting with a hoisted tbl mask.  In the
before case it's loaded in the loop with `ldr q3, #152`, and becomes
`ldr q0, #168` outside the loop.  llvm-mca says this should cut one
cycle per loop, and with optimal out of order execution the loop cost
would drop from ~8.7 cycles to ~8.3.  In practice, it looks like about a
15% speedup.

before:
	ldr	q0, #188
	ldr	q1, #200
	cmp	x0, #4                  // =4
	b.lt	#76
	ldr	q2, [x1]
	ldr	q3, #152
	tbl	v3.16b, { v2.16b }, v3.16b
	sub	v3.8h, v0.8h, v3.8h
	ldr	q4, [x2]
	and	v5.16b, v4.16b, v1.16b
	ushr	v4.8h, v4.8h, #8
	mul	v5.8h, v5.8h, v3.8h
	ushr	v5.8h, v5.8h, #8
	mul	v3.8h, v4.8h, v3.8h
	bic	v3.16b, v3.16b, v1.16b
	orr	v3.16b, v5.16b, v3.16b
	add	v2.4s, v2.4s, v3.4s
	str	q2, [x2]
	add	x1, x1, #16             // =16
	add	x2, x2, #16             // =16
	sub	x0, x0, #4              // =4
	b.al	#-76
	cmp	x0, #1                  // =1
	b.lt	#76
	ldr	s2, [x1]
	ldr	q3, #72
	tbl	v3.16b, { v2.16b }, v3.16b
	sub	v3.8h, v0.8h, v3.8h
	ldr	s4, [x2]
	and	v5.16b, v4.16b, v1.16b
	ushr	v4.8h, v4.8h, #8
	mul	v5.8h, v5.8h, v3.8h
	ushr	v5.8h, v5.8h, #8
	mul	v3.8h, v4.8h, v3.8h
	bic	v3.16b, v3.16b, v1.16b
	orr	v3.16b, v5.16b, v3.16b
	add	v2.4s, v2.4s, v3.4s
	str	s2, [x2]
	add	x1, x1, #4              // =4
	add	x2, x2, #4              // =4
	sub	x0, x0, #1              // =1
	b.al	#-76
	ret

after: ldr	q0, #168
	ldr	q1, #180
	ldr	q2, #192
	cmp	x0, #4                  // =4
	b.lt	#72
	ldr	q3, [x1]
	tbl	v4.16b, { v3.16b }, v0.16b
	sub	v4.8h, v1.8h, v4.8h
	ldr	q5, [x2]
	and	v6.16b, v5.16b, v2.16b
	ushr	v5.8h, v5.8h, #8
	mul	v6.8h, v6.8h, v4.8h
	ushr	v6.8h, v6.8h, #8
	mul	v4.8h, v5.8h, v4.8h
	bic	v4.16b, v4.16b, v2.16b
	orr	v4.16b, v6.16b, v4.16b
	add	v3.4s, v3.4s, v4.4s
	str	q3, [x2]
	add	x1, x1, #16             // =16
	add	x2, x2, #16             // =16
	sub	x0, x0, #4              // =4
	b.al	#-72
	cmp	x0, #1                  // =1
	b.lt	#72
	ldr	s3, [x1]
	tbl	v4.16b, { v3.16b }, v0.16b
	sub	v4.8h, v1.8h, v4.8h
	ldr	s5, [x2]
	and	v6.16b, v5.16b, v2.16b
	ushr	v5.8h, v5.8h, #8
	mul	v6.8h, v6.8h, v4.8h
	ushr	v6.8h, v6.8h, #8
	mul	v4.8h, v5.8h, v4.8h
	bic	v4.16b, v4.16b, v2.16b
	orr	v4.16b, v6.16b, v4.16b
	add	v3.4s, v3.4s, v4.4s
	str	s3, [x2]
	add	x1, x1, #4              // =4
	add	x2, x2, #4              // =4
	sub	x0, x0, #1              // =1
	b.al	#-72
	ret
Change-Id: I352a98d3ac2ad84c338330ef4cfae0292a0b32da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229064
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-23 00:16:27 +00:00
Mike Klein
f98d0d31c4 let JIT code hoist when possible
This first tries to JIT while hoisting all constants,
and if that fails, tries again hoisting no constants.

I figure this is one of those 80/20 deals for how to
handle constant hoisting and register pressure.  This
probably mostly moots doing anything fancy like using
memory operands with AVX or lane operands with NEON.

This _doesn't_ moot hoisting the NEON tbl arguments,
which is not yet done here, but probably my next CL.

Change-Id: Id09d5cdddcdb45207bdfc914a5a3128a481a26f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229058
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-22 21:06:34 +00:00
Chris Dalton
76da035ae9 ccpr: Unblacklist Radeon in MSAA mode
Bug: skia:
Change-Id: I9e0bf68f9c684e7e7ffa293312f9d79e5bcb2d87
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229014
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-22 21:02:54 +00:00
Mike Reed
b7dad44040 Reland "hide drawlooper from paint"
This reverts commit 6dc14ded91.

Reason for revert: add flag to google3

Original change's description:
> Revert "hide drawlooper from paint"
>
> This reverts commit 766b42b7ba.
>
> Reason for revert: afaict this is changing a lot of image filter GMs for the worse
>
> Original change's description:
> > hide drawlooper from paint
> >
> > Bug: skia: 4783
> >
> > Change-Id: I1d0ad1683a2e8345d8ea13db9b69b568ada827dc
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228573
> > Reviewed-by: Florin Malita <fmalita@chromium.org>
> > Commit-Queue: Mike Reed <reed@google.com>
>
> TBR=fmalita@chromium.org,reed@google.com
>
> Change-Id: I0bfd48ada3f8e48a774527caccf7abdb7a1cc470
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia: 4783
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229005
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=robertphillips@google.com,fmalita@chromium.org,reed@google.com

Change-Id: Ib3cd8941a63cd323b8872dd7fec1c953ab81cbdc
Bug: skia: 4783
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229010
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-07-22 20:03:36 +00:00
Ethan Nicholas
3908059bee fixed SkSL handling of constant arrays
Bug: skia:
Change-Id: Ib01a9a01a0e9e5c27ea5142f8141b769ef093669
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229012
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-07-22 19:37:40 +00:00
Mike Klein
5e533c9e1f move hoist analysis back into Builder
Even if a JIT ultimately doesn't end up hoisting any values, it's going
to want this information while it decides.  Writing it in one place also
ensures we only get it wrong in one place...

I'm no_ extending the lifetime of hoisted instructions here in Builder.
That's something to leave to the backend so they have the flexibility of
which of these values to hoist, if any.  If they don't hoist, they'll
need to know when the value dies.

Moving this information back here lets the test expectation goldens
reflect the hoist bit again too.  Kind of nice.

Change-Id: Ib165ca898a97c1d822cb28fe24f15bae4d570a17
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229024
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-22 19:34:06 +00:00
Robert Phillips
6dc14ded91 Revert "hide drawlooper from paint"
This reverts commit 766b42b7ba.

Reason for revert: afaict this is changing a lot of image filter GMs for the worse

Original change's description:
> hide drawlooper from paint
> 
> Bug: skia: 4783
> 
> Change-Id: I1d0ad1683a2e8345d8ea13db9b69b568ada827dc
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228573
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Mike Reed <reed@google.com>

TBR=fmalita@chromium.org,reed@google.com

Change-Id: I0bfd48ada3f8e48a774527caccf7abdb7a1cc470
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia: 4783
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229005
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-22 17:27:17 +00:00
Mike Reed
766b42b7ba hide drawlooper from paint
Bug: skia: 4783

Change-Id: I1d0ad1683a2e8345d8ea13db9b69b568ada827dc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228573
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-22 16:25:41 +00:00
Chris Dalton
b115d5de65 ccpr: Disable msaa backend on PowerVR
Change-Id: Iabfc1106fce9926547278ec1335f4888ca86511e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229002
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-07-22 16:25:40 +00:00
Stephen White
3e45e128eb Update to Dawn ToT.
Switch to Dawn's version of dawn_generator.gni. This depends on having
a file called build_overrides/dawn.gni. However, this will also enable
us to use the upstream Dawn BUILD.gn files more easily in the future.
This required adding it to compile.isolate, so the bots can pick it up.

Keeping up with Dawn:
Rename TextureFormat enums.
Rename dawn::BufferUsageBit::TransferDst -> CopyDst.
Removal of GLAD dependency.
SPIRV-Tools update.

Change-Id: Idcd5d1035ed106485dd2503b829e3c3b57a5688b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228568
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-07-22 16:20:36 +00:00
Adrienne Walker
1874ccbd5c Add API for glyph cache read failures
This will allow chromium to do a dump without crashing so we can get
more information about what's going wrong on webview in the field.

Bug: chromium:977231
Change-Id: I9022921aded735764d36868bb6606674654439bc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228389
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Adrienne Walker <enne@chromium.org>
2019-07-22 16:20:35 +00:00
Robert Phillips
ebab03ffbf Add Ganesh support for LUM16F (take 2)
When Chrome has a LUM16F texture they tell Skia it is R16F. Although this has been working for them so far it causes trouble with some upcoming changes.

Change-Id: I2473f70e4f725128f143c2dfb08adb79f3c7c166
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228565
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-22 14:13:36 +00:00
Chris Dalton
7c01208e78 Temporarily disable MSAA CCPR on AMD and QC
We need to sort out an internal compiler error and a crash.

TBR=bsalomon@google.com

Bug: skia:
Change-Id: I8ecccc6ab696fd8c49735ba4690c4ec1f873c15e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228936
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-22 05:47:14 +00:00
Chris Dalton
9bc450b2f6 ccpr: Fix debug counters for stencil resolve instances
TBR=robertphillips@google.com

Bug: skia:
Change-Id: I7ddc477b61472549aff047afae51810378534aa4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228838
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-22 02:05:38 +00:00
Mike Reed
efe259bb2a add apply method to drawlooper
Bug: skia: 4783

Change-Id: I3eabe364c9b377d1f0c024131f8cbdabc094fa8e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228574
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-07-20 20:06:01 +00:00
Chris Dalton
a7ad120fb6 Fix an error check re: sample variables
Bug: skia:
Change-Id: I89f2912ba18c27a3b2b99b99c13ec92a2cc3ebff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228572
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-20 15:28:00 +00:00
Mike Klein
6c1e233578 add some ideas as TODOs
Change-Id: I5c89d5760c16097d658c454950a6632bd427c6ab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228637
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-19 20:53:07 +00:00
Chris Dalton
c3318f09cd ccpr: Add an MSAA atlas mode
Adds the option to use a multisampled (or mixed sampled) atlas, and
uses the sample mask and stencil buffer instead of coverage counts.

Bug: skia:
Change-Id: I9fb76d17895ae25208124f6c27e37977ac31b5eb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227428
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-19 20:52:17 +00:00
Mike Klein
4a13119a60 always fma in mad_f32()
We can always move data around so that an FMA is possible using no more
registers than we would otherwise, and on x86, evne using no more
instructions.

The basic idea here is that if we can't reuse one of the inputs to
destructively host the FMA instruction, the next best thing is to copy
one of the arguments into tmp() and accumulate the FMA there.

Once the FMA has happened, we just need to copy that result to dst().
We can of course skip that copy if dst() == tmp().  On x86 we never need
that copy; dst() and tmp() are picked using the same logic except that
dst may alias one of its inputs, and we only fall into this case after
we've already found it doesn't.  So we can just assert dst() == tmp()
rather than check it like we do on ARM.

It's subtle, but I think sound.

I'm using logical-or to copy registers around.  This is a little lazy,
but maybe not as lazy as it looks: on ARM that is _the_ way to copy
registers.  There's a vmovdqa instruction I could use on x86, TBD.

All paths through this new code were being exercised on ARM, but we
didn't have anything hitting the tmp case on x86, so I've added a new
unit test that hits the corner cases of both implementations.

Change-Id: I5422414fc50c64d491b4933b4b580b784596f291
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228630
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-19 20:12:42 +00:00
Stephen White
99b2a33c37 Update Dawn backend to Skia ToT: GrRenderTarget, onCreateTexture.
Change-Id: I82aec74524f33b3b8ea7592a9a4bf904127b87b6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228569
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-07-19 20:10:02 +00:00
Brian Salomon
e8a766b16c Move GrProtected off GrSurfaceDesc and pass separately.
Change-Id: If628c13bb0e5aa885e4249a37432ba572e65d920
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228440
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-19 19:03:19 +00:00
Florin Malita
673e87cda9 [svgcanvas] Consolidate constant-Y text positions
When SkBaseDevice switched to drawGlyphRunList(), we lost the ability to
detect a) constant-Y text and b) default-positioned text.

As a result, the emitted SVG contains lots of redundant/repeating glyph
positions.

This CL enhances SVGTextBuilder to detect and consolidate constant-Y
glyph positions.

Also restore a useful whitespace unit test.

Change-Id: I50568aef1955f75898ebab41441ad5fe418dac43
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228563
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
2019-07-19 18:53:32 +00:00
Mike Klein
1326749832 add sli.4s, use it in pack sometimes
We have pack(x,y,imm) = x | (y<<imm) assuming (x & (y<<imm)) == 0.

If we can destroy x, sli (shift-left-insert) lets us implement that
as x |= y << imm.  This happens quite often, so you'll see sequences
of pack that used to look like this

	shl	v4.4s, v2.4s, #8
	orr	v1.16b, v4.16b, v1.16b
	shl	v2.4s, v0.4s, #8
	orr	v0.16b, v2.16b, v3.16b
	shl	v2.4s, v0.4s, #16
	orr	v0.16b, v2.16b, v1.16b

now look like this

	sli	v1.4s, v2.4s, #8
	sli	v3.4s, v0.4s, #8
	sli	v1.4s, v3.4s, #16

We can do this thanks to the new simultaneous register assignment
and instruction selection I added.  We used to never hit this case.

Change-Id: I75fa3defc1afd38779b3993887ca302a0885c5b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228611
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-19 18:37:12 +00:00
Mike Klein
9e2218a06a restore aarch64 JIT
Trying to keep most of the structural parts shared between x86_64 and
aarch64.  Not sure if this will stay factored like this long-term, but
the last version felt like there was a bit too much redundancy, and I
don't want to write things like register management more often than have
to.

Change-Id: Ieeb21f433715a730c41c85d657c5b33fa4702696
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228608
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-19 18:06:52 +00:00
Brian Osman
7fbb363162 Disable MSAA on older Intel GPUs w/Vulkan
This matches the logic in GrGLCaps. Note that we only run Vulkan on one
such bot (IntelHD405) and already disabled msaa testing on that bot in
test.py due to the problems it was having.

Change-Id: Ic84a1e8e5eb6deddad5c2bfe93640925a8d6ec0a
Bug: skia:9023
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228562
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-19 17:52:41 +00:00
Michael Ludwig
aa861a1907 Change SkMatrix::decomposeScale to use preScale
While most callers of decomposeScale only depend on the scale factors
that are returned, image filter decomposition depends on the remaining
matrix as well. Hence, the following necessary updates to work with
the new behavior of decomposeScale:

* Update imagefilter DAG sample to reflect prescaling
* Correct embedded matrix in SkApplyCTMToFilter
* Add comment to clipRectBounds() clarifying coordinate spaces and image filters

But, we want to have decomposeScale using preScale() because it then
produces a remainder matrix that can be used as the transform for the
image filter draw, instead of wrapping the image filter in an
SkMatrixImageFilter as currently done by SkApplyCTMToFilter.

Bug: skia:7211
Change-Id: If14570afb4189cebc75f3815e8ccdde05cb074e1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228438
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-07-19 15:41:11 +00:00
Mike Klein
237dbb4d87 small cleanups
- get rid of variadic Assembler::byte()... not used very often
  - rename Assembler::byte(ptr,n) to bytes()
  - align with 0 bytes, get rid of nop()

Change-Id: I7564d3bad00e3f0d1c7a80153c445966914fccf0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228601
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-19 15:36:11 +00:00
Robert Phillips
cdb40c9d07 Revert "Add Ganesh support for LUM16F"
This reverts commit 2f6c8af73a.

Reason for revert: Failing on some bots

Original change's description:
> Add Ganesh support for LUM16F
> 
> When Chrome has a LUM16F texture they tell Skia it is R16F. Although this has been working for them so far it causes trouble with some upcoming changes.
> 
> Change-Id: Ic2143ec69f33a17cb1cb64f6ebc39bffd94a5e68
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228557
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=bsalomon@google.com,robertphillips@google.com

Change-Id: Ie52150f4f5255a2db697b9f0e810eff2042eadec
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228560
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-19 14:53:53 +00:00
Robert Phillips
2f6c8af73a Add Ganesh support for LUM16F
When Chrome has a LUM16F texture they tell Skia it is R16F. Although this has been working for them so far it causes trouble with some upcoming changes.

Change-Id: Ic2143ec69f33a17cb1cb64f6ebc39bffd94a5e68
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228557
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-19 14:39:21 +00:00
Ethan Nicholas
0c8582e48a fixed internal error when parsing invalid SkSL code
Bug: skia:
Change-Id: I1c801a26727b72f36d76e1a1c21cd0e571107f8c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228558
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-07-19 14:02:11 +00:00
Florin Malita
abc96536f6 [SkSVGCanvas] Add flag for converting text to paths
Change-Id: I9130518d12acda1a82576a17fa4fa8c34b0618f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228436
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
2019-07-19 13:39:11 +00:00
Mike Klein
f465df2de8 assign tmp and dst only as needed
You can tell how apprehensive I am about this by the number of comments
that I've written, but I think it all makes reasonable sense, and does
mean we can run right up to the line of using all registers, never
wasting a tmp or dst register that would go unused.

I don't think there are any function argument evaluation order issues
here, but it's reassuring that we're testing with GCC and Clang both
when I see things like a->vfoops(dst(), tmp(), r[z]).

Tests pass, and the little big of debug tracing I added temporarily
looked like it made sense.  Have not looked at how the disassembly
changes, mostly because I hacked this up on my Mac.  Will look before
and after on Linux tomorrow if this sticks.

Change-Id: I1e62aaeba12c07787128ed4a2b67fb8bc27039f6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228520
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-19 02:01:54 +00:00
Nigel Tao
5e6e87a183 Remove deprecated Wuffs io_buffer::reader calls
Bug: skia:8235
Change-Id: I5a73089c8c9febd3cedf41d0f2e3a52baebda1c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227956
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-19 01:30:44 +00:00
Mike Klein
37607d4ccd Reland "more JIT refactoring"
This is a reland of 558b639225

PS2... oh, right, not everything supports AVX2.

Original change's description:
> more JIT refactoring
>
> This re-enables AVX2 JIT with simultaneous register assignment and
> instruction selection.  You can see it working in a very basic way in
> how we choose instructions and registers for Op::mad_f32.
>
> Constants are still broadcast, here inside the loop instead of hoisted.
> I think it'll probably end up best to use constants directly from memory
> (as in vpshufb's masks), falling back to these in-loop broadcasts when
> that can't work.
>
> Change-Id: If17d51b9960f08da3612e51ac04424e996bf83d4
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228366
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

Cq-Include-Trybots: skia.primary:Test-Mac10.13-Clang-VMware7.1-CPU-AVX-x86_64-Debug-All-NativeFonts
Change-Id: I6f99d275040abe6210a980fc544f7f22c3b85727
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228476
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-18 23:59:47 +00:00
Mike Klein
d864d1dc19 Revert "more JIT refactoring"
This reverts commit 558b639225.

Reason for revert: broke some perf bots

Original change's description:
> more JIT refactoring
> 
> This re-enables AVX2 JIT with simultaneous register assignment and
> instruction selection.  You can see it working in a very basic way in
> how we choose instructions and registers for Op::mad_f32.
> 
> Constants are still broadcast, here inside the loop instead of hoisted.
> I think it'll probably end up best to use constants directly from memory
> (as in vpshufb's masks), falling back to these in-loop broadcasts when
> that can't work.
> 
> Change-Id: If17d51b9960f08da3612e51ac04424e996bf83d4
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228366
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

TBR=mtklein@google.com

Change-Id: Id6cd5acd873499bb394009489d77e7636ecbc9c6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228462
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-18 23:21:24 +00:00
Mike Klein
558b639225 more JIT refactoring
This re-enables AVX2 JIT with simultaneous register assignment and
instruction selection.  You can see it working in a very basic way in
how we choose instructions and registers for Op::mad_f32.

Constants are still broadcast, here inside the loop instead of hoisted.
I think it'll probably end up best to use constants directly from memory
(as in vpshufb's masks), falling back to these in-loop broadcasts when
that can't work.

Change-Id: If17d51b9960f08da3612e51ac04424e996bf83d4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228366
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-18 22:24:42 +00:00
Brian Osman
869a3e81ea Reland "Interpreter: Bounds check array access, add bool return from run"
This is a reland of f42de9e1e5

Original change's description:
> Interpreter: Bounds check array access, add bool return from run
> 
> Out of bounds access with constant indices is a compile error.
> At runtime, causes the interpreter to fail. Made several other
> conditions trigger the same failure logic, and updated all
> uses of the interpreter to validate success.
> 
> Change-Id: I3720b3c83903220b010ec574121fc64dbe102378
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228256
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>

Change-Id: I8849de815f7efb730ac9c55b6edd296cb9ca7599
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228353
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-07-18 21:38:20 +00:00
Brian Salomon
4456a0d35c Store protectedness on GrVkImageInfo.
Changes the GrBackendSurface to not take it separately.

Change-Id: I5eb9684da1532907e7833e9d7835a74d1e71f5ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228396
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-18 20:03:08 +00:00
Greg Daniel
00fb7243c0 Move read swizzle from GL ConfigInfo to FormatInfo.
With this change I also removed GrPixelConfig as param to supportedReadPixelsColorType().
This meant some updates had to be made to Vulkan and Metal to make sure they return the
right GrColorType.

Bug: skia:6718
Change-Id: I71b6360489cf499692c7b777e5915090fad05c56
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228349
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-18 19:42:10 +00:00
Stephen White
ebad0941cd Dawn: update to latest caps & gpu changes.
Change-Id: Id1a9830bdead5ed7cd52c61c31298d8279c337b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228136
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-18 19:37:09 +00:00
Mike Reed
634c9417bd add inverse() intrinsic function to sksl
Change-Id: Ic30f6e0345e851ea8a942996b9eaf2c894455e3e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228236
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-18 19:07:49 +00:00
Mike Klein
62bccdaf3c move death back into Builder::Instruction
I find myself passing around parallel vectors of Builder::Instructions
and deaths so often that it just makes more sense practically to store
them together.  It's a little awkward that the values are only useful
after calling done(), but I can live with that.

Get a little more careful about mutation, passing Builder::Instructions
by const&.   Instead of extending lifetimes of live hoisted
instructions, just check for them in maybe_recycle_register() instead.

Change-Id: I1cb9e25c1a7c46a250c2271334821be8535353bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228367
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-18 19:01:44 +00:00
Brian Osman
52c1bf12b8 Interpreter: Fix code-gen for postfix ++/-- used only for side effect
Add a test case that previously asserted (due to incorrect code-gen
underflowing the stack).

Change-Id: I9df7a08b9ac5c7b5bc246129f3383dc723173351
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228351
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-18 18:48:04 +00:00
Stephen White
985741a554 First draft of Dawn backend: clears are working.
First draft of (mostly stubbed-out) GrDawnGpu.
Skeletons of GrDawnCaps, GrDawnGpuCommandBuffer, GrDawnRenderTarget.
First draft of DawnTestContext.
First draft of psuedo-fences for Dawn, implemented with MapReadAsync.

Change-Id: I443f3370522639e82f2fa0eebe6b206c372f13a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228137
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-18 18:09:12 +00:00
Brian Osman
3e6aa9f528 Revert "Interpreter: Bounds check array access, add bool return from run"
This reverts commit f42de9e1e5.

Reason for revert: All the SANs

Original change's description:
> Interpreter: Bounds check array access, add bool return from run
> 
> Out of bounds access with constant indices is a compile error.
> At runtime, causes the interpreter to fail. Made several other
> conditions trigger the same failure logic, and updated all
> uses of the interpreter to validate success.
> 
> Change-Id: I3720b3c83903220b010ec574121fc64dbe102378
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228256
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>

TBR=mtklein@google.com,brianosman@google.com,ethannicholas@google.com,reed@google.com

Change-Id: I434601960d54fbd7d00e2af2dc6269a83a768c5b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228352
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-18 17:22:41 +00:00
Mike Reed
9724582271 return self from matrix setters to allow chaining
Change-Id: Ifd4c6bf5f5feb925f06067d50e491fd1a490f896
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228344
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-07-18 17:19:09 +00:00
Brian Salomon
1e03b6b10e simplify GrCaps::initDstCopyDesc and provide default impl for non-GL
subclasses.

Change-Id: I0397d6fc62ca95d3970ec491e198ca547902e691
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228258
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-18 16:49:07 +00:00
Brian Osman
f42de9e1e5 Interpreter: Bounds check array access, add bool return from run
Out of bounds access with constant indices is a compile error.
At runtime, causes the interpreter to fail. Made several other
conditions trigger the same failure logic, and updated all
uses of the interpreter to validate success.

Change-Id: I3720b3c83903220b010ec574121fc64dbe102378
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228256
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-07-18 16:24:57 +00:00
Brian Salomon
c7dced5f68 Revert "Remove simple GrGpu::createTexture helper"
This reverts commit 83cfe4fa24.

Reason for revert:breaking the bots
Original change's description:
> Remove simple GrGpu::createTexture helper
> 
> Change-Id: I8ad3213517594987ac604f4c08086778254b5a7b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228062
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

TBR=egdaniel@google.com,bsalomon@google.com

Change-Id: Ie1f156ecd6264f41372dd13fae987df8fcafa564
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228343
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-18 15:02:16 +00:00
Brian Salomon
83cfe4fa24 Remove simple GrGpu::createTexture helper
Change-Id: I8ad3213517594987ac604f4c08086778254b5a7b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228062
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-18 14:22:35 +00:00
Robert Phillips
dd39980115 Revert "Make rest of GrGpu::wrapBackend* methods take a GrColorType"
This reverts commit 9725638fb1.

Reason for revert: Chrome roll

Original change's description:
> Make rest of GrGpu::wrapBackend* methods take a GrColorType
> 
> This CL is intended to further wean Ganesh off of using the GrBackendTexture's pixel config
> 
> Bug: skia:6718
> Change-Id: I593c0c73922fb76045e379214e20adb1f17ea215
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227780
> Commit-Queue: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com

Change-Id: Id71acf1dec63c288a858fccd7109c84cf3cc6f0a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228337
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-18 12:28:17 +00:00
Adrienne Walker
82bd511527 Use explicit alignment for 8-byte types
See:
https://software.intel.com/en-us/blogs/2011/08/18/understanding-x86-vs-arm-memory-alignment-on-android

alignof(uint64_t) is not consistent across x64 and x86, and so it's not
safe to use this.  This scenario can happen in Chrome for WebView cases.

This will not fully fix issue 977231 as that happens on ARM as well, but
this was just noticed via inspection.

Bug: chromium:781095, chromium:977231
Change-Id: If6dcc0ba776f82e8f20a50e6074822fb21a05aff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228300
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-18 12:27:15 +00:00
Michael Ludwig
43c6da2a15 First pass at ImageFilter DAG visualizer sample
Change-Id: I04493af0a6ce1425c4acf68365135722dd3c218b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227857
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-17 20:59:37 +00:00
Mike Klein
275157f7d2 refactor Program building
Do less in Builder, more in Program::Program().

This temporarily disables JITs until I rewrite
them to also build from these new inputs:

   - vector<Builder::Instruction>
   - vector<Val> deaths
   - vector<int> strides

i.e. to do their own register assignment
and make their own hoisting decisions.

Change-Id: Ie2ce9755f20860a80506e913b7b139d562e291c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228216
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-17 20:42:08 +00:00
Greg Daniel
c6dc5cf16a Move FormatType from ConfigInfo to FormatInfo.
Bug: skia:6718
Change-Id: Ia4cab74983a92a7ff6c9d7d6f683971bacbc10da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228122
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-17 20:35:48 +00:00
Robert Phillips
161ec328fa Revamp pixelformat table for Metal
Bug: skia:6718
Change-Id: I0798d843647b4de0c655f3f01dc2ae76899777fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227638
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-17 20:26:08 +00:00
Robert Phillips
9725638fb1 Make rest of GrGpu::wrapBackend* methods take a GrColorType
This CL is intended to further wean Ganesh off of using the GrBackendTexture's pixel config

Bug: skia:6718
Change-Id: I593c0c73922fb76045e379214e20adb1f17ea215
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227780
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-17 20:00:05 +00:00
Mike Klein
c2fb3b4b72 split deaths() out of other analysis
I'm slowly refactoring my way to where hoisting and register assignment
are done in backend-specific ways, but this liveness analysis is always
going to be useful for each backend.

Use deaths() to restore friendly ☠️  dead code markers in test dumps.

Change-Id: I3ab94665bbbbf0788b0b27e00d644eba927dff47
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228113
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-17 18:11:10 +00:00
Mike Reed
fd98628383 search for 'main' explicitly
Change-Id: Ie88b935a75d8b9c253b29bf0aa4ef39649327bfa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228119
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-17 18:06:21 +00:00
Greg Daniel
fad9fbc3c4 Revert "First draft of Dawn backend: clears are working."
This reverts commit 6cebea42a8.

Reason for revert: breaking google3 roll

Original change's description:
> First draft of Dawn backend: clears are working.
> 
> First draft of (mostly stubbed-out) GrDawnGpu.
> Skeletons of GrDawnCaps, GrDawnGpuCommandBuffer, GrDawnRenderTarget.
> First draft of DawnTestContext.
> First draft of psuedo-fences for Dawn, implemented with MapReadAsync.
> 
> Change-Id: Id009436f4441f26ffbc82d485d7af3a499b3281b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226857
> Commit-Queue: Stephen White <senorblanco@chromium.org>
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com,senorblanco@chromium.org

Change-Id: Ie494b5a403e8537c6539551533ae8b9156e90a61
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228120
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-17 17:23:02 +00:00
Greg Daniel
009ad250fe Remove RG32F color type and pixel config.
Change-Id: I7fd3a8f6c02217d011f353ef602718a537bb87b2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228116
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-17 17:05:36 +00:00
Mike Reed
019458d9ad change colorfilter signature back to just inout color
Change-Id: I8999d14a31d071cb6f5c8966a55523b7dc6e7f57
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228118
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-17 16:50:43 +00:00
Stephen White
6cebea42a8 First draft of Dawn backend: clears are working.
First draft of (mostly stubbed-out) GrDawnGpu.
Skeletons of GrDawnCaps, GrDawnGpuCommandBuffer, GrDawnRenderTarget.
First draft of DawnTestContext.
First draft of psuedo-fences for Dawn, implemented with MapReadAsync.

Change-Id: Id009436f4441f26ffbc82d485d7af3a499b3281b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226857
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-17 16:29:22 +00:00
Mike Reed
8c31f2bf7f use same signature for shader/colorfilters in sksl
'void main(float x, float y, inout half4 color)'

For colorfilters, x,y are uninitialized
For shaders, color is paint-color

Change-Id: I21c2f570702f117d33646bd8fba0ab4def20a118
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227439
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-17 15:47:36 +00:00
Ethan Nicholas
0f78174b39 add support for ctype=SkPMColor4f to GrSkSLFP
Bug: skia:
Change-Id: I222cd0afad2c5226f8ccdec5c5c989c56671c2ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228057
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-07-17 15:43:06 +00:00
Greg Daniel
9bb268be63 Move verified color attachment flag to FormatInfo.
Bug: skia:6718
Change-Id: I7d44177bab44d8d72ded7442e1a17c5f451882a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/228058
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-17 15:40:46 +00:00
Brian Salomon
f2c2ba99f6 Remove kRenderTarget_GrSurfaceFlag, instead pass GrRenderable.
This is the last surface desc flag, so remove flags from GrSurfaceDesc.

Bug: skia:6718

Change-Id: Id3ed66b161289927b62f40bfb1f6482cf544deda
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227858
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-17 15:09:03 +00:00
Greg Daniel
64329094c2 Move renderable flag and valid samplecounts in GrGLCaps to FormatInfo.
Change-Id: Ic94a748c1ebfb53431f623d9b63c0aaf12c6f3ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227836
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-17 13:53:12 +00:00
Greg Daniel
a9ec10ca1b Add comment regarding gl BGRA format and renderability.
Change-Id: Ib940c5a59be9d96e756aa85acac8ead8acdc109f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227782
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-17 13:19:18 +00:00
Hal Canary
e574f1e409 [reland] SkMetaData: move from src/ to tools/
Original: https://skia-review.googlesource.com/c/skia/+/227436
Change-Id: Iec326027319f39b0402e1b5c03b327cb26249159
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227778
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-07-17 13:14:38 +00:00
Mike Klein
08ba113703 test (and fix?) SkVM JIT on arm64 Android bots
This has failed in the past on GPU perf bots,
I think because I've been flushing the cache wrong?

Try switching over to __builtin___clear_cache(), what I used
a few years ago when I last tried to do something like this.

Cq-Include-Trybots: skia.primary:Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android
Change-Id: Ic5e366022eb15f4544fb7b90a75f8c51e36392ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227421
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-07-17 00:31:05 +00:00
Mike Klein
9977efa703 test both JIT and interpreter
Add Program::dropJIT() to allow us to proactively drop
any JIT code forcing fallback on the interpreter,
and use it to test both on JIT-supported platforms.

Other platforms will just test the interpreter twice.

Change-Id: I607d00ef3c648e66a0b3a1374b11aa82dbfff70c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227424
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-07-16 22:31:17 +00:00