Commit Graph

24219 Commits

Author SHA1 Message Date
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
Greg Daniel
7b1bebf1ec Fix creating gpu texture from raster image.
In the new world if the GrColorType cannot creating a support backend format
it returns an invalid GrBackendFormat. So we need to check this in our
fallback when uploading raster image to gpu.

Change-Id: Ie69a06ba1a0badb5b7e78965906f09c0413453e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227859
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-16 21:36:47 +00:00
Mike Klein
56aa3372ca proactive JITting
Move JITting from lazy in eval() to proactive in Program::Program().
There's no need to delay to eval() now that strides are known up front.

There's _still_ one more reason we need to keep the interpreter around
even if we can JIT... can_jit() may return false (too many regs, too
many args).

Change-Id: I0a176b97bcd9e8d0fcf2a9fa4b7f64103fd51e75
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227419
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-07-16 21:34:47 +00:00
Mike Klein
2616efda08 pin down arg() stride (a.k.a. type) info sooner
Arg strides are the reason JIT happens lazily in Program::eval() today
instead of proactively in Builder::done() or Program's constructor.  It
also just really doesn't make sense to delay this information... it's
not like you can change it up sanely between calls to eval().

The argument index now comes implicitly from the order of calling arg().
This may seem logically independent, but it prevents a weird situation
where you could use the same argument index twice with different
strides... not sure what that would mean.

Change-Id: I0f5d46e94a1ca112a72675c5492f17c0dd825ce0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227390
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-16 21:06:45 +00:00
Brian Salomon
9d8cac831d Check for failed proxy creation in SkDeferredDisplayListRecorder::init
Bug: chromium:227776
Change-Id: I4f628b76aa08c4a3cdc858cd4263a4b6afee7332
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227837
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-16 20:50:15 +00:00
Brian Salomon
947efe28de makeDeferredSurfaceContext -> makeDeferredTextureContext and makeDeferredRenderTargetContext.
Removes some usage of GrSurfaceDesc.

Bug: skia:6718
Change-Id: Icc4f93aba0e5c49a801b4c7bbfcba76a6e30c538
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227776
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-16 20:06:04 +00:00
Greg Daniel
2ce4b7e4af Revert "Changes to gl BGRA renderbuffer format support."
This reverts commit 8372e4bb40.

Reason for revert: This doesn't really work while RT has both resolve and msaa in it since chrome cant blit with different formats and we can't check that during a resolve correctly.

Original change's description:
> Changes to gl BGRA renderbuffer format support.
> 
> Change-Id: Ic46057ed1f85e368fd55148beaa3f7e2ae54a042
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227398
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Change-Id: Ia28b8ef1e5f4274240ad207e34619049525bd722
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227781
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-16 19:08:32 +00:00
Brian Osman
ef79fa8983 Generate identical shader keys for X and Y blurs when there is no domain
This mirrors the logic in emitCode, and avoids extra shader compiles.

Change-Id: I2c11e082dfa2b9fc673dc2b8fdf2f0b964407b90
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227777
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-16 18:01:01 +00:00
Greg Daniel
8372e4bb40 Changes to gl BGRA renderbuffer format support.
Change-Id: Ic46057ed1f85e368fd55148beaa3f7e2ae54a042
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227398
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-16 17:08:41 +00:00
Brian Salomon
a3e2996b08 Rework how initial clearing of texture works.
1) It only applies when a texture is created, not when recycled from cache

2) It is all textures or none, not a flag GrSurfaceDesc

3) It is implemented by GrGpu clearing the texture after creation if
such a thing is supported in underlying API. Otherwise, GrResourceProvider
must provide pre-zeroed mip levels.

4) Works for MIP mapped textures (all levels without initial data are cleared)

This could cause performance regressions in WebGL until we re-add the
ability to clear using glCear() in GL. Doing that requires making the "can
clear using GrGpu" caps query be per-format. Deferring doing that until
GrPixelConfig work is farther along.

Bug: skia:6718


Change-Id: I234715b9faaf61e8b44d54464497a17cd553585d

start

Change-Id: Ib84a8c3ece010cc3164b18895107e78484cbf76b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226977
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-16 16:36:41 +00:00
Brian Salomon
e44bfee96e Remove GrGLGpu/GrGLCaps readPixelsSupported.
This code checks the external format/type that will be used with
glReadPixels. It tests for the values inherently allowed by the GL
and for implementation values.

It would need to be refactored to use formats and color types rather
than GrPixelConfig.

However, the code that calls GrGpu::readPixels and
GrGpu::transferPixelsFrom already tests
GrCaps::supportedReadPixelsColorType. The GrGLCaps override only allows
format/type combinations allowed by ES without implementation queries,
which is less permissive than the deleted code.

We may get more permissive again but will probably follow a different
pattern and do this after the format/colortype tables are built out in
GrGLCaps.

Bug: skia:6718
Change-Id: I36d9ab496dfe71045dcbce84200a9de3e93440bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226840
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-16 15:53:21 +00:00
Brian Salomon
6aecd5e62f Rework transfer pixels tests to be more robust.
Make them query caps for supported read/write info and do CPU
conversions before uploading/after reading.

Removes use of GrColor so in theory could be used to test
non-8888 color types.

Bug: skia:6718

Change-Id: Icf9d0b778348a4e960fbfec49e1308b21e45a051
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227497
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-16 14:31:04 +00:00
Brian Osman
c7ec9e2ef1 Fix standalone SkSL build
Change-Id: I54a4913e5ec2e9ed41d754c1f0cd2e6d7bbeb7a8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227640
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-16 13:23:48 +00:00
Robert Phillips
0902c98825 Pass GrColorType to the GrGpu::wrapRenderableBackendTexture chain of calls (take 2)
This is a step towards reducing our reliance-on/use-of the GrPixelConfig stored in the GrBackendTexture.

TBR=egdaniel@google.com
Bug: skia:6718
Change-Id: I316a98416c51f273e6ab578f9cbaea5f7adfe331
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227639
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-16 13:07:06 +00:00
Greg Daniel
fe88bf67c2 Revert "Pass GrColorType to the GrGpu::wrapRenderableBackendTexture chain of calls"
This reverts commit 5572737d95.

Reason for revert: Adreno 4xx bots hitting compatibility assert in InitialTextureClear test

Original change's description:
> Pass GrColorType to the GrGpu::wrapRenderableBackendTexture chain of calls
> 
> This is a step towards reducing our reliance-on/use-of the GrPixelConfig stored in the GrBackendTexture.
> 
> Bug: skia:6718
> Change-Id: I2170032bfbbb57423c4bb0d901ad014c61d38131
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223701
> Commit-Queue: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

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

Change-Id: I24cf6b3aa0dfca2e935a36592860ad91171b21a7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227637
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-16 00:33:13 +00:00
Greg Daniel
12e7585495 Revert "SkMetaData: move from src/ to tools/"
This reverts commit 9d844d8ce5.

Reason for revert: breaking google3

Original change's description:
> SkMetaData: move from src/ to tools/
> 
> Change-Id: If581c8ceeaa76985535cb7b6772742f0011cfe8e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227436
> Commit-Queue: Hal Canary <halcanary@google.com>
> Commit-Queue: Ben Wagner <bungeman@google.com>
> Auto-Submit: Hal Canary <halcanary@google.com>
> Reviewed-by: Ben Wagner <bungeman@google.com>

TBR=halcanary@google.com,bungeman@google.com

Change-Id: Ifadad46f0663b743d3e57bb6317707f2a2fac07d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227636
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-16 00:28:44 +00:00
Greg Daniel
24b6766007 Reland "Move base and various sized formats off of GrGLCaps ConfigInfo."
This reverts commit f355a1ead8.

Reason for revert: Re-landing with fix

Original change's description:
> Revert "Move base and various sized formats off of GrGLCaps ConfigInfo."
>
> This reverts commit 85c375b4e6.
>
> Reason for revert: breaking command buffer bot
>
> Original change's description:
> > Move base and various sized formats off of GrGLCaps ConfigInfo.
> >
> > Change-Id: Id3355d963ba61c19f5dbd85853536fafc2fd5c7f
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227064
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
>
> TBR=egdaniel@google.com,bsalomon@google.com
>
> Change-Id: Ib3d8613cafafcd83ce6a2619817b835fbd0cd1c7
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227399
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Change-Id: I46b0c49dad0c095f795a271bc969381ad9ab2466
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227400
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-15 22:10:38 +00:00
Robert Phillips
5572737d95 Pass GrColorType to the GrGpu::wrapRenderableBackendTexture chain of calls
This is a step towards reducing our reliance-on/use-of the GrPixelConfig stored in the GrBackendTexture.

Bug: skia:6718
Change-Id: I2170032bfbbb57423c4bb0d901ad014c61d38131
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223701
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-15 20:40:09 +00:00
Hal Canary
9d844d8ce5 SkMetaData: move from src/ to tools/
Change-Id: If581c8ceeaa76985535cb7b6772742f0011cfe8e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227436
Commit-Queue: Hal Canary <halcanary@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-07-15 18:45:09 +00:00
Brian Osman
aa2ca3f868 Interpreter: Compute max stack depth needed
Change-Id: I171a680aac554a0015d1854c46b35e9c9785fdf3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227061
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-15 18:16:43 +00:00
Chris Dalton
6a5317a0e5 ccpr: Don't do coverage count transformations on literal coverage atlases
Previously we would just run coverage count transformations on
everything, including cached literal coverage atlases. This was
wasteful since it isn't necessary if the atlas already has literal
coverage. MSAA mode will introduce even more atlases that don't need
coverage count transformations, so it's definitely time to clean this
up.

Bug: skia:
Change-Id: Ifc72eaa7cbd4ab5e4ef4acb5610117ae9f54e4c1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227144
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-15 18:00:33 +00:00
Greg Daniel
f355a1ead8 Revert "Move base and various sized formats off of GrGLCaps ConfigInfo."
This reverts commit 85c375b4e6.

Reason for revert: breaking command buffer bot

Original change's description:
> Move base and various sized formats off of GrGLCaps ConfigInfo.
> 
> Change-Id: Id3355d963ba61c19f5dbd85853536fafc2fd5c7f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227064
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Change-Id: Ib3d8613cafafcd83ce6a2619817b835fbd0cd1c7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227399
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-15 15:34:23 +00:00
Greg Daniel
85c375b4e6 Move base and various sized formats off of GrGLCaps ConfigInfo.
Change-Id: Id3355d963ba61c19f5dbd85853536fafc2fd5c7f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227064
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-15 15:19:05 +00:00
Brian Salomon
a495d6d985 Simplify code in GrResourceProvider now that GrSurfaceContext writePixels takes GrColorType
Change-Id: I3e4cd49d59d38b8c278b7667ad3968b116b58ad6
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227260
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-15 14:52:31 +00:00
Mike Klein
35b97c3130 handle x86 tail in JIT code too
Basically the same deal as aarch64:

    - a bunch of instructions to rewrite control
      flow to be two loops, body and tail

    - a bunch of instructions to support scalar
      loads and stores in the tail

We can now remove the JIT::mask field.

I've removed the SkUNREACHABLE I'd put in for the ARM code...  as
written the interpreter is still reachable by the loser if two threads
race to JIT the program.  Medium term I plan to move JIT compilation to
a more proactive time, eliminating the need for the lock and letting the
interpreter become truly unreachable.

I had a little bit of a false start with what instructions to use for
scalar load8 and store8, first starting with instructions that loaded
via GP registers, then remembering vpinsrb and vpextrb can take a memory
argument, loading into xmm directly.  I've left the first instructions I
used in the file, still implemented but only used from the unit tests.
They're pretty common and will probably be useful some day.

Change-Id: I471b13026af4b1c6e861a53159f9df5f0285447c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227178
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-15 03:13:56 +00:00
Mike Klein
86a645c5d9 fix bug for add/sub with r8-r15
I had been setting the REX R bit to select high registers,
but you actually set the B bit.  Don't know how I got that
wrong before... the leading byte should be 49 not 4c.

    $ cat test.s
    foo:
        addq $7, %r8

    $ clang -c test.s && objdump -d test.o

    0000000000000000 <foo>:
       0:	49 83 c0 07          	add    $0x7,%r8

Change-Id: I039e1c4f4ea20523a1e2cc9bcf5f6d9321a6223b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227177
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-15 02:04:36 +00:00
Florin Malita
ea79574fa4 Revert "Use saveLayer-determined CT in SkGpuDevice::onCreateDevice"
This reverts commit 8c5c54ceaf.

Reason for revert: bad ANGLE diffs, Chrome roll failing

Original change's description:
> Use saveLayer-determined CT in SkGpuDevice::onCreateDevice
> 
> Currently Ganesh always uses the prev render target CT, but saveLayer
> may force a different CT, depending on flags.
> 
> This fixes handling of saveLayer/kF16ColorType (added in
> https://skia-review.googlesource.com/c/skia/+/227066).
> 
> Change-Id: I8e73fdfdf18eb61f97fadd0504a4bd0f4a71977d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227258
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Florin Malita <fmalita@chromium.org>

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

Change-Id: I0c3e74be64d5286b8d95b2aabaa464ad97fcaccf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227262
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
2019-07-14 14:21:37 +00:00
Florin Malita
8c5c54ceaf Use saveLayer-determined CT in SkGpuDevice::onCreateDevice
Currently Ganesh always uses the prev render target CT, but saveLayer
may force a different CT, depending on flags.

This fixes handling of saveLayer/kF16ColorType (added in
https://skia-review.googlesource.com/c/skia/+/227066).

Change-Id: I8e73fdfdf18eb61f97fadd0504a4bd0f4a71977d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227258
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-07-13 15:27:34 +00:00
Mike Reed
1f3548cb05 add savelayer flag to promote the later to half-float
Bug: skia:9256
Change-Id: Ifd7846349f83854e860306bd475cfba0adeddcb5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227066
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-07-12 17:31:33 +00:00
Mike Klein
57b0b09dfd handle any N in aarch64 JIT code
Add a tail loop to handle elements one at a time.

Just like in the interpreter, the only instructions
that need to be changed are the loads and stores,
16 byte -> 4 byte and 4 byte -> 1 byte.

With this we can mark the interpreter as SkUNREACHABLE,
and it even completely compiles away, saving a few KB.

Example profile for the SkVMTool float-squaring program
running N=15 over and over:

    Samples│
           │      skvm-jit-3663518994():
        42 │40:   cmp    x0, #0x4
           │44: ↓ b.lt   60
        51 │48:   ldr    q0, [x1]
       197 │4c:   mul    v0.4s, v0.4s, v0.4s
       135 │50:   str    q0, [x1]
           │54:   add    x1, x1, #0x10
        43 │58:   sub    x0, x0, #0x4
           │5c:   b.al   40
       150 │60: ↓ cbz    x0, 7c
        67 │64:   ldr    s0, [x1]
       130 │68:   mul    v0.4s, v0.4s, v0.4s
       135 │6c:   str    s0, [x1]
        18 │70:   add    x1, x1, #0x4
        17 │74:   sub    x0, x0, #0x1
        20 │78:   b.al   60
       124 │7c: ← ret

Change-Id: I153d7bc247942366a686e30a9cad60c935f754ed
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227138
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-07-12 16:18:26 +00:00
Brian Osman
4a47da7357 Interpreter: Disallow return statements inside loops or conditionals
These didn't work correctly, and they're extremely tricky to get right
in the vectorized execution model (vs. structured control flow). As a
side effect, determine the maximum stack depth used for the execution
masking - the same idea will be used for the primary stack in a later
CL. Add a unit test to verify the new restriction, and fix two places
that were relying on this feature before.

In addition, boolean external values need to be masks. I may implement
this in the code-gen at some point, but this is already a fringe
feature, so just fix the one unit test for now.

Change-Id: I9607ffaf67c7795dbf42e4009180aea8f3e65c44
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226849
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-12 16:07:16 +00:00
Mike Klein
65c10b5018 make all instructions take two-way labels
This turned out to be quite an easy transformation
with yesterday's work already done.  No codegen changes.

Change-Id: Ife19ab7731514c54cfed963a6d2e9b1ec2246997
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227137
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-07-12 15:56:06 +00:00
Mike Reed
bae6169435 Revert "Revert "reimpl parts of arctTo using doubles to handle shallow angles""
This reverts commit bc525d65a1.

Change-Id: I92550317784be4084412d855cf475b77cd36d6da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227059
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-12 15:29:55 +00:00
Brian Salomon
5043f1f2cd More GrGLFormat.
Also rename from GrGLSizedInternalFormat since the compressed formats
aren't really sized internal formats.

Change-Id: I8744f1f4b8156300ab69d89066b44913bce120a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226956
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-12 14:40:26 +00:00
Mike Klein
b99fd5d50c initialize fPhase
Found by a GCC warning that

   fPhase = that.fPhase;   // line 193

was sometimes copying over uninitialized data.

Seems pretty harmless to initialize.

Change-Id: I9011ccf965bea4a702e0cca61f89e0aa644c55a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227122
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-12 14:30:36 +00:00
Greg Kaiser
98ac0f9dbd GrGLGpu: Fix typo in 'if' check
We were checking 'externalType' twice, and never checking
'internalFormat'.  We now check each of them once.

Change-Id: Iae0578a4828fd2a9224e4924245bea0708d8c931
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227028
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-12 13:42:14 +00:00
Leon Scroggins
980d03b2d0 Reland "Update Wuffs version"
This reverts commit aed8009a6d.

Reason for revert: Flutter's version of Wuffs has been updated. See https://github.com/flutter/engine/pull/9466#issuecomment-510639898

Original change's description:
> Revert "Update Wuffs version"
> 
> This reverts commit 42ece2b7c9.
> 
> Reason for revert: Requiring the latest version of wuffs broke the flutter roll.
> 
> Original change's description:
> > Update Wuffs version
> > 
> > The primary purpose of this commit is to track upstream Wuffs more
> > closely.
> > 
> > A side effect is to pull in the Wuffs commit
> > 5bea867f72
> > "Allow an LZW literal width of 1", which eliminates a difference between
> > the old third_party/gif decoder and the new third_party/wuffs decoder.
> > 
> > As the CodecTest.cpp comment says, the GIF spec explicitly says that the
> > LZW literal width should be at least 2, but in practice, GIF encoders
> > violate the spec. After that upstream commit, Wuffs has followed other
> > GIF decoders in being more liberal in what it accepts.
> > 
> > Codec_InvalidAnimated therefore no longer has a separate "#ifdef
> > SK_HAS_WUFFS_LIBRARY" section. The first frame of the test's GIF image
> > data, being the required frame of the third frame, no longer has an
> > invalid LZW literal width according to Wuffs.
> > 
> > Bug: skia:8235
> > Change-Id: Ie94537f5232128ffc1d1547f4c0b84992e54ab02
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226476
> > Commit-Queue: Leon Scroggins <scroggo@google.com>
> > Reviewed-by: Leon Scroggins <scroggo@google.com>
> 
> TBR=scroggo@google.com,nigeltao@google.com
> 
> Change-Id: I9e636e81f57eefd836a53738872ddb9f5c9b13c3
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:8235
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226697
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Commit-Queue: Leon Scroggins <scroggo@google.com>

TBR=scroggo@google.com,nigeltao@google.com

Change-Id: Ibeeea1cf9c2e210b5e49dec65037ec8a494209de
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8235
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226851
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Nigel Tao <nigeltao@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-07-12 13:33:28 +00:00
Mike Klein
ce7b88ce7d bidirectional Labels
Support forward references in Label.

In addition to tracking the current Label offset (used for
backward references essentially just the same as before this CL)
we also store a list of instructions that refer to each Label.
When a Label moves, each instruction gets a new displacement.

To make this a little easier, remove the 8-bit jump form on x86...
this way all x86 displacements are 32-bit and and all ARM 19-bit.

For now only cbz() supports this, just to start somewhere.
More to do but it's worth an early design review.

Change-Id: I23d2bcd7742965ab694ae4828f53409cb9fc807f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226937
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-07-12 12:53:24 +00:00
Florin Malita
bc525d65a1 Revert "reimpl parts of arctTo using doubles to handle shallow angles"
This reverts commit 1ec17042ff.

Reason for revert: *SAN bots + G3 roller breakage

Original change's description:
> reimpl parts of arctTo using doubles to handle shallow angles
> 
> Bug: 982968
> Change-Id: Ieaf70a406265876655447bd0584717063483808f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226847
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: If27d78b5d01815ded5354922ef6e2e4eb92f7a3b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 982968
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/227056
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-07-12 12:21:46 +00:00
Mike Reed
1ec17042ff reimpl parts of arctTo using doubles to handle shallow angles
Bug: 982968
Change-Id: Ieaf70a406265876655447bd0584717063483808f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226847
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-11 20:58:44 +00:00
Jim Van Verth
d361e64326 Enable MSAA for Metal.
Adds a separate resolve texture to GrMtlRenderTarget, which can be used
to do a resolve for the main multisample color texture. The resolve is
handled by setting a special Store action for the RenderCommandEncoder.

Bug: skia:8243
Change-Id: I1ffd756c01a9b363116ffefee2c4c50ba9a3e637
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225536
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-11 20:57:24 +00:00
Brian Salomon
f6da14697e Move compatible stencil tracking from GrGLCaps::fConfigTable to ::fFormatTable.
Also adds the following to the format table:

*base internal format
*sized internal format
*compressed internal format
*the internal format to use with glTexImage
*the external type to use with glTexImage when there is no data to upload
 (i.e., no GrColorType for data)

Bug: skia:6718


Change-Id: Ica51a8d4588bd24078c7d61805f6eef9c02ae14d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226558
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-11 18:49:20 +00:00
Jim Van Verth
658d499afc New approach to fixing Vulkan MSAA.
MakeFromBackendTextureAsRenderTarget is planned to be deprecated, so we
should use MakeFromBackendTexture with a sampleCount parameter instead.
On Vulkan, this ran into issues because we assumed an allocation for the
VkImage and the swapchain doesn't provide us with one. Fixed so we don't
need an allocation for Borrowed textures.

Bug: skia:
Change-Id: Ib26888020e093f4a734a4159eae898539c2273b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226839
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-11 18:34:19 +00:00
Jim Van Verth
d1e9c338a2 Remove deprecated discard method and GrCaps support
Change-Id: I231949c90342a44e9c0b6030818139d3164819da
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226837
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-11 18:15:19 +00:00
Mike Klein
4cfe3ed0f2 instructions for JIT tail support on ARM
This adds a bunch of instructions we'll need to handle the N < 4 tail
within the JIT code on ARM.

   - ldrb/strb are 1-byte load and stores
   - sub subtracts without setting flags
   - cmp just sets flags (actually just subs with an xzr destination)
   - add b and b.lt, just like b.ne
   - cbz and cbnz... we only need cbz but I accidentally did cbnz first

Once I add support for forward jumps, we'll be able to use these
instructions to restructure the loop to

    entry:
        hoisted setup
    loop:
        if N < 4, jump tail      (cmp N,#4; b.lt tail)
        ... handle 4 values ...
        jump loop                (b loop)
    tail:
        if N == 0, jump end      (cbz N, end)
        ... handle 1 value ...
        jump tail                (b tail)
    end:
        ret

Change-Id: I62d2d190f670f758197a25d99dfde13362189993
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226828
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-11 17:49:44 +00:00
Greg Daniel
e877dce203 Add kRGBA_8888_SRGB GrColorType and remove GrSRGBEncoded.
Change-Id: Iad1c72eb81ffd9c006e39c96191fada990d9dbd6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226224
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-11 15:22:23 +00:00
Mike Klein
da69d5929d rename to bt709_luminance_or_luma_to_alpha
We conflate luminance (dot of linear r,g,b) and luma (dot of
gamma-encoded r',g',b') all over the place in Skia.  This one is
possibly the most confusing of any of them, in that the dot-product
coefficients for BT.709 luma were somewhat arbitrarily chosen to be the
same as the coefficients for luminance.

So, big old ridiculously new long name to make it clear it works
for both luma and luminance, but that it's hardcoded to BT.709.

My quick reference when I forget things:
https://en.wikipedia.org/wiki/Luma_(video)

Change-Id: I5a6567de296795f558acc5dd3c39974b8035234e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226762
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-11 14:18:41 +00:00
Robert Phillips
f9fcf7ffa8 Alter approximate scratch texture binning after 1024
As the powers-of-2 get larger the coarse binning can burn a lot of VRAM.

Granted it isn't the best metric but, with this CL, the number of textures created and scratch textures reused remains unchanged when running the GMs.

Change-Id: I84abbbae0ed01aabb387671b5ee0e4fcdb82b671
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226226
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-11 13:29:41 +00:00
Leon Scroggins
aed8009a6d Revert "Update Wuffs version"
This reverts commit 42ece2b7c9.

Reason for revert: Requiring the latest version of wuffs broke the flutter roll.

Original change's description:
> Update Wuffs version
> 
> The primary purpose of this commit is to track upstream Wuffs more
> closely.
> 
> A side effect is to pull in the Wuffs commit
> 5bea867f72
> "Allow an LZW literal width of 1", which eliminates a difference between
> the old third_party/gif decoder and the new third_party/wuffs decoder.
> 
> As the CodecTest.cpp comment says, the GIF spec explicitly says that the
> LZW literal width should be at least 2, but in practice, GIF encoders
> violate the spec. After that upstream commit, Wuffs has followed other
> GIF decoders in being more liberal in what it accepts.
> 
> Codec_InvalidAnimated therefore no longer has a separate "#ifdef
> SK_HAS_WUFFS_LIBRARY" section. The first frame of the test's GIF image
> data, being the required frame of the third frame, no longer has an
> invalid LZW literal width according to Wuffs.
> 
> Bug: skia:8235
> Change-Id: Ie94537f5232128ffc1d1547f4c0b84992e54ab02
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226476
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Leon Scroggins <scroggo@google.com>

TBR=scroggo@google.com,nigeltao@google.com

Change-Id: I9e636e81f57eefd836a53738872ddb9f5c9b13c3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8235
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226697
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-07-11 13:14:33 +00:00
Brian Salomon
c38cfa99a7 Third land of "Restore GL_UNPACK_ROW_LENGTH to 0 between MIP levles"
Fix: Use non-zero rowbytes when uploading zeros for initial texture clear

This reverts commit f16020ba1b.

Bug: chromium:981254
Change-Id: Iafd5893dd1b397ec1d91c64d48d46059e62488a7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226557
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-10 22:58:58 +00:00
Greg Daniel
554b492ace Add missing RGB_888x colorType to GL RGBA format.
Bug: b/137017906
Change-Id: I98bfc9607fa78536e1cf44707636558ed1980b4a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226616
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-07-10 22:38:07 +00:00
Mike Klein
49d32524f4 lifetime analysis readability refactor
This is basically a no-op CL, with two changes designed to make
SkVM lifetime analysis easier to reason about:

  1) rename Analysis.life to Analysis.death,
     since it indicates the instruction when the value dies
  2) use death == 0 to mark dead code instead of an NA sentinel

The life->death change really is just a naming thing, something I
realized makes a little more sense this way around after talking about
how this code works out loud.  'death' holds the time of a Val's death.

The second change also isn't very important, but I realized that there
is a perfectly good in-band value to mark dead code, 0, and there's no
need to use NA as a sentinel.  If we mark an instruction as death == 0,
that indicates the value is needed only until instruction 0 executes,
i.e. never.  They're sort of pre-dead.  This cuts one of the overloads
for what NA means in SkVM.cpp; now it only means "no value".

All the code that tested against the NA sentinel now tests against 0
instead.  We could go a step further and rewrite the tests to be death >
id for live code or death < id for dead code, but that amounts to
roughly the same thing in the end: instructions either live for some
time with a death that is later than their own ID, or are dead with
death == 0.  There is some small ambiguity around whether we should mark
store instruction's deaths as id or id+1 and which of the tests should
be <= or >=, but checking against 0 makes that all moot, and I think the
checks also stand out more clearly with the literal '0' in the code.

This is a little warmup to refamiliarize myself with the code, with an
ultimate goal of moving hoisting and register assignment to the backends
so they can be influenced by instruction selection: platform specific
ways to handle immediates or splats, choosing destination registers and
instructions that play well with the available argument registers, etc.

Change-Id: I6978abf0bd01dcd0e7a142d632826e7692060ade
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226549
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-10 22:00:37 +00:00
Robert Phillips
409d2aa8bf Fix assert
Change-Id: I23a88524d741cecefa16ae7e364d2294db1c6030
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226508
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-10 21:41:27 +00:00
Brian Salomon
9e9ea91092 Try GrGLSizedInternalFormat enum
Change-Id: I970fe3547caf4fa363f20aa8246b293a19c4ba8c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226225
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-10 21:30:38 +00:00
Mike Reed
3a8ff230ab Move test around in cubic_solver to test function, not delta_t.
Add SkOpts variant for avx2 to get FMA
Decrease tolerance now that we're testing the function

Before

  15/15  MB	1	1.13ms	1.17ms	1.18ms	1.26ms	4%	cubicmap_0_1_1_1
  15/15  MB	1	1.08ms	1.13ms	1.12ms	1.17ms	3%	cubicmap_0_1_1_0
  15/15  MB	1	862µs	904µs	900µs	937µs	3%	cubicmap_0_1_0_1
  15/15  MB	1	861µs	878µs	882µs	934µs	3%	cubicmap_0_1_0_0
  15/15  MB	1	1.44ms	1.47ms	1.49ms	1.55ms	3%	cubicmap_1_0_1_1
  15/15  MB	1	1.44ms	1.48ms	1.48ms	1.55ms	3%	cubicmap_1_0_1_0
  15/15  MB	1	1.42ms	1.42ms	1.46ms	1.53ms	3%	cubicmap_1_0_0_1
  15/15  MB	1	1.42ms	1.42ms	1.44ms	1.51ms	2%	cubicmap_1_0_0_0

After moving the check to the function, not delta_t

  15/15  MB	1	900µs	900µs	915µs	971µs	3%	cubicmap_0_1_1_1
  15/15  MB	1	899µs	900µs	914µs	988µs	3%	cubicmap_0_1_1_0
  15/15  MB	1	865µs	896µs	890µs	946µs	3%	cubicmap_0_1_0_1
  15/15  MB	1	866µs	910µs	914µs	959µs	3%	cubicmap_0_1_0_0
  15/15  MB	1	1.29ms	1.29ms	1.33ms	1.44ms	4%	cubicmap_1_0_1_1
  15/15  MB	1	1.28ms	1.29ms	1.34ms	1.54ms	6%	cubicmap_1_0_1_0
  15/15  MB	1	1.26ms	1.26ms	1.27ms	1.34ms	3%	cubicmap_1_0_0_1
  15/15  MB	1	1.26ms	1.26ms	1.27ms	1.3ms	2%	cubicmap_1_0_0_0

After SkOpts (on an avx2 machine)

  15/15  MB	1	613µs	613µs	616µs	646µs	2%	cubicmap_0_1_1_1
  15/15  MB	1	613µs	613µs	624µs	654µs	3%	cubicmap_0_1_1_0
  15/15  MB	1	862µs	865µs	867µs	887µs	1%	cubicmap_0_1_0_1
  15/15  MB	1	865µs	901µs	896µs	949µs	3%	cubicmap_0_1_0_0
  15/15  MB	1	849µs	850µs	868µs	929µs	4%	cubicmap_1_0_1_1
  15/15  MB	1	849µs	850µs	873µs	940µs	4%	cubicmap_1_0_1_0
  15/15  MB	1	831µs	831µs	856µs	950µs	5%	cubicmap_1_0_0_1
  15/15  MB	1	831µs	831µs	848µs	911µs	3%	cubicmap_1_0_0_0

(not checked in) if we also enable the pragma in cubic_solver

  15/15  MB	1	593µs	594µs	597µs	623µs	2%	cubicmap_0_1_1_1
  15/15  MB	1	593µs	595µs	605µs	629µs	2%	cubicmap_0_1_1_0
  15/15  MB	1	864µs	867µs	869µs	890µs	1%	cubicmap_0_1_0_1
  15/15  MB	1	864µs	866µs	886µs	950µs	4%	cubicmap_0_1_0_0
  15/15  MB	1	809µs	831µs	841µs	891µs	4%	cubicmap_1_0_1_1
  15/15  MB	1	809µs	810µs	855µs	1.11ms	11%	cubicmap_1_0_1_0
  15/15  MB	1	794µs	861µs	856µs	914µs	4%	cubicmap_1_0_0_1
  15/15  MB	1	794µs	821µs	818µs	853µs	3%	cubicmap_1_0_0_0

Change-Id: I260391be956d31a5cf3d0367d1285e56af7568f8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226499
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-07-10 20:28:28 +00:00
Brian Salomon
f16020ba1b Reland "Revert "Restore GL_UNPACK_ROW_LENGTH to 0 between MIP levles""
This reverts commit 4b40a1d5bf.

Reason for revert: Breaking iOS/GL

Original change's description:
> Revert "Revert "Restore GL_UNPACK_ROW_LENGTH to 0 between MIP levles""
> 
> This reverts commit abb5a315af.
> 
> Two fixes:
>   1) GMs pass valid rowBytes when calling directly to GrGpu.
>   2) Check for non-null data before trying to set UNPACK_ROW_LENGTH
> 
> Bug: chromium:981254
> 
> Change-Id: I24e46b0d2b14562d6b84a29fefe3410ce5c06c94
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226498
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I7f22151aad7fefd6896a57d4448d03fd3bdec0e2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:981254
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226556
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-10 19:22:20 +00:00
Nigel Tao
42ece2b7c9 Update Wuffs version
The primary purpose of this commit is to track upstream Wuffs more
closely.

A side effect is to pull in the Wuffs commit
5bea867f72
"Allow an LZW literal width of 1", which eliminates a difference between
the old third_party/gif decoder and the new third_party/wuffs decoder.

As the CodecTest.cpp comment says, the GIF spec explicitly says that the
LZW literal width should be at least 2, but in practice, GIF encoders
violate the spec. After that upstream commit, Wuffs has followed other
GIF decoders in being more liberal in what it accepts.

Codec_InvalidAnimated therefore no longer has a separate "#ifdef
SK_HAS_WUFFS_LIBRARY" section. The first frame of the test's GIF image
data, being the required frame of the third frame, no longer has an
invalid LZW literal width according to Wuffs.

Bug: skia:8235
Change-Id: Ie94537f5232128ffc1d1547f4c0b84992e54ab02
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226476
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2019-07-10 17:45:43 +00:00
Robert Phillips
3cd5432331 Add protected status to SkSurfaceCharacterization
Change-Id: I27bd051c1fce0239faff7fc073eaf82976fb63ae
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225940
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-10 16:30:35 +00:00
Brian Salomon
4b40a1d5bf Revert "Revert "Restore GL_UNPACK_ROW_LENGTH to 0 between MIP levles""
This reverts commit abb5a315af.

Two fixes:
  1) GMs pass valid rowBytes when calling directly to GrGpu.
  2) Check for non-null data before trying to set UNPACK_ROW_LENGTH

Bug: chromium:981254

Change-Id: I24e46b0d2b14562d6b84a29fefe3410ce5c06c94
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226498
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-10 16:13:44 +00:00
Brian Osman
6f5358f505 Interpreter: Disallow recursion
I think this is the minimum rule that's easy to understand when writing
SkSL for the interpreter that ensures we'll be able to statically
determine total stack usage of a particular function.

While writing the new test, I also noticed that we still return
(invalid) byte code, even when there are errors. Fixed that.

Change-Id: I625a8592c9ba1656074e5f0d4227d41968af7b37
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226218
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-10 16:08:39 +00:00
Brian Salomon
abb5a315af Revert "Restore GL_UNPACK_ROW_LENGTH to 0 between MIP levles"
This reverts commit 65eb084e78.

Reason for revert:blocking chrome roll and asserting in GMs

Original change's description:
> Restore GL_UNPACK_ROW_LENGTH to 0 between MIP levles
> 
> Bug: chromium:98125
> Change-Id: I7a5184872e92b9e0994a5175461b4f46191ccc9d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226223
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I71799990a128ade8e769bffd69841dafdf47a871
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:98125
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226496
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-10 12:42:34 +00:00
Brian Salomon
65eb084e78 Restore GL_UNPACK_ROW_LENGTH to 0 between MIP levles
Bug: chromium:98125
Change-Id: I7a5184872e92b9e0994a5175461b4f46191ccc9d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226223
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-09 20:40:41 +00:00
Greg Daniel
5c96db8821 Move last few uses of SkColorType out of GrCaps.
Change-Id: Ie13e511f42afa7a06fad674ead3e1d5d8e051e77
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226216
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-09 20:03:44 +00:00
Brian Salomon
a3ffaabcc4 Fix up row bytes for single level texture in GrResourceProvider.
Change-Id: I5419a79255f9e9cdb3322238bd0d3b14e88ef6e6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226156
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-09 19:39:54 +00:00
Florin Malita
ef914f6444 Remove onMakeBurstPipelineContext
No longer used?

Change-Id: Ib944e5a18feb70444b34f5aba5f5c4019df1abdb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226217
Commit-Queue: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-09 18:26:44 +00:00
Florin Malita
9ab449ab69 Optional local matrix for SkShaders factories
Change-Id: Id913f89c699097ce53c9f8ef6deea264811a4179
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226082
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
2019-07-09 18:09:14 +00:00
Robert Phillips
a5e78be278 Make Mock GrBackendFormat use GrColorType (instead of GrPixelConfig)
The switch to GrColorType does mean that we can no longer represent compressed backend formats in the Mock backend surfaces.

This will require a Chrome CL before it can land in Skia.

TBR=bsalomon@google.com
Change-Id: Ie4e2d4826f960664a21d3de79933eb1cb5d06896
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225538
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-09 17:43:14 +00:00
Michael Ludwig
0a7cab0f67 Reland "More optimizations for CropToRect, for axis-aligned quads that have not been inverted"
This reverts commit 0437f0f5d8.

Reason for revert: layout tests have been suppressed

Original change's description:
> Revert "More optimizations for CropToRect, for axis-aligned quads that have not been inverted"
> 
> This reverts commit 88a64b4696.
> 
> Reason for revert: Chrome layout tests
> 
> Original change's description:
> > More optimizations for CropToRect, for axis-aligned quads that have not been inverted
> > 
> > Prior to CropToRect(), GrRTC::crop_filled_rect only operated on SkRects. The
> > quad cropping code generalized the optimization to any axis-aligned quad, but
> > a consequence of this is the code had to be robust to flips and 90 degree
> > rotations. While it can handle more cases, it has lead to a 1-10% performance
> > regression on cropped-rectangle-heavy perf tests in chromium.
> > 
> > This change brings back the simplest cropping solution when the axis-aligned
> > quads have not been flipped/rotated, but the general version still exists for
> > the other class of quads as well.
> > 
> > Bug: chromium:980608
> > Change-Id: I83d71075cacc3d849fd9aac6436ea3244a0ae4b9
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225724
> > Commit-Queue: Brian Salomon <bsalomon@google.com>
> > Auto-Submit: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> 
> TBR=bsalomon@google.com,robertphillips@google.com,michaelludwig@google.com
> 
> Change-Id: I428cbefa5985c6160df0460d38b0698b43d289de
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: chromium:980608
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225733
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

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

Change-Id: Ibef8e521f45111b3307731966e19ef66824567e2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:980608
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226177
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-07-09 17:20:15 +00:00
Brian Salomon
b42af2f2cc vk_format_to_pixel_config behind GR_TEST_UTILS
Change-Id: I2aae762cb63fc940536959b3f0f73df472bcac7e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226083
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-09 16:27:41 +00:00
Brian Osman
489cf8888c Reland "Make the SkSL interpreter opt-in"
This reverts commit b6b966aa43.

Change-Id: I58c34fc8520384157c5adb0056f3568b8ef1d844
Bug: skia:9230
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225939
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-09 15:45:24 +00:00
Jim Van Verth
778ba8a450 Re-enable Vulkan MSAA support in Viewer
Bug: skia:
Change-Id: I2e7fc5463ea73baa82e6f1a3340e9c88d1b8be32
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226081
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-09 15:35:44 +00:00
Brian Salomon
b450f3be4f Use vkCmdClearColorImage to clear backend textures
Also don't use GrPixelConfig to create the VkImage.


Bug: skia:7959
Bug: skia:6718

Change-Id: Ia13c5ed2fbe0542c060b725694eff9d566c491f0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226078
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-09 15:00:43 +00:00
Greg Daniel
627d053913 Move uses of functions taking SkColorType to GrColorType versions in GrCaps.
Change-Id: I4feda6277cf14be0d32a8ce22257902483d7ae1a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225734
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-09 13:29:07 +00:00
Brian Osman
8c4ee90b6c Revert "Enable MSAA on Gen8 Intel GPUs"
This reverts commit 0bda1cc640.

Reason for revert: Performance gap is fairly large.

Original change's description:
> Enable MSAA on Gen8 Intel GPUs
> 
> Bug: skia:9225 chromium:527565
> 
> Change-Id: I7c543bce011c247cd93cad90aca15c9754678202
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225731
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

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

Change-Id: I0e7f0bd53fbdcad0276462852021b9f3adc8ff6e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9225 chromium:527565
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/226076
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-09 12:58:40 +00:00
Leon Scroggins III
112ac7f19a Check for uninitialized memory during jpeg encode
Bug: chromium:951893

This will help determine which piece of code left memory uninitialized.
Add a test that exercises all the different ways we might pass memory
to jpeg_write_scanlines.

Change-Id: I6392a414795da9b0471e8cd6b373a7fff8f0a1b1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225098
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-07-09 12:48:17 +00:00
Brian Osman
b6b966aa43 Revert "Make the SkSL interpreter opt-in"
This reverts commit 5cfbee286d.

Reason for revert: Breaking DM in Google3

Original change's description:
> Make the SkSL interpreter opt-in
> 
> Bug: skia:9230
> 
> Change-Id: I50b707a7dd372882a983a4570810dae05c2a3638
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225723
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

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

Change-Id: I5ba231ab75dd44cc1d22d497f9d7e4b732e3aa14
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9230
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225938
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-08 20:47:03 +00:00
Brian Osman
0bda1cc640 Enable MSAA on Gen8 Intel GPUs
Bug: skia:9225 chromium:527565

Change-Id: I7c543bce011c247cd93cad90aca15c9754678202
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225731
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-08 20:40:40 +00:00
Greg Daniel
2f2caeaa9b Make isFormatTexturable take a GrColorType.
Change-Id: I02db9025c49d9ee2d805dd6b48916bcc4136f9a8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225729
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-08 20:12:43 +00:00
Michael Ludwig
0437f0f5d8 Revert "More optimizations for CropToRect, for axis-aligned quads that have not been inverted"
This reverts commit 88a64b4696.

Reason for revert: Chrome layout tests

Original change's description:
> More optimizations for CropToRect, for axis-aligned quads that have not been inverted
> 
> Prior to CropToRect(), GrRTC::crop_filled_rect only operated on SkRects. The
> quad cropping code generalized the optimization to any axis-aligned quad, but
> a consequence of this is the code had to be robust to flips and 90 degree
> rotations. While it can handle more cases, it has lead to a 1-10% performance
> regression on cropped-rectangle-heavy perf tests in chromium.
> 
> This change brings back the simplest cropping solution when the axis-aligned
> quads have not been flipped/rotated, but the general version still exists for
> the other class of quads as well.
> 
> Bug: chromium:980608
> Change-Id: I83d71075cacc3d849fd9aac6436ea3244a0ae4b9
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225724
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Auto-Submit: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Change-Id: I428cbefa5985c6160df0460d38b0698b43d289de
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:980608
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225733
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-07-08 20:03:07 +00:00
Brian Osman
5cfbee286d Make the SkSL interpreter opt-in
Bug: skia:9230

Change-Id: I50b707a7dd372882a983a4570810dae05c2a3638
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225723
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-08 19:44:22 +00:00
Michael Ludwig
88a64b4696 More optimizations for CropToRect, for axis-aligned quads that have not been inverted
Prior to CropToRect(), GrRTC::crop_filled_rect only operated on SkRects. The
quad cropping code generalized the optimization to any axis-aligned quad, but
a consequence of this is the code had to be robust to flips and 90 degree
rotations. While it can handle more cases, it has lead to a 1-10% performance
regression on cropped-rectangle-heavy perf tests in chromium.

This change brings back the simplest cropping solution when the axis-aligned
quads have not been flipped/rotated, but the general version still exists for
the other class of quads as well.

Bug: chromium:980608
Change-Id: I83d71075cacc3d849fd9aac6436ea3244a0ae4b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225724
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-08 18:02:15 +00:00
Michael Ludwig
aee26ea14e Reland "Switch drawTexture calls to use attemptQuadOptimization"
This reverts commit dcb832ac63.

Reason for revert: chrome layout tests have been suppressed.

Original change's description:
> Revert "Switch drawTexture calls to use attemptQuadOptimization"
>
> This reverts commit 9b2defc3d5.
>
> Reason for revert: Likely broke chrome layout tests
>
> Original change's description:
> > Switch drawTexture calls to use attemptQuadOptimization
> >
> > Before the quad-rendering op refactor, regular filled rectangles and
> > textured rectangles used an internal crop_filled_rect function to crop
> > to the bounding box of the clip. As the quad op refactor progressed,
> > regular filled rectangle drawing went through the new attemptQuadOptimization
> > function that supported more cropping to the exact clip when axis-aligned,
> > and could be better handle complex paints.
> >
> > Following the generalized factories added to GrTextureOp in earlier CLs,
> > it is now possible to route all textured rectangle draws through the same
> > optimizations. While there are a number of public interfaces for drawing
> > rectangles and textures on GrRTC, internally there is now just drawFilledQuad
> > (for complex paints) and drawTexturedQuad(for textures, avoids GrPaint use).
> > Both of these are very similar, and share attemptQuadOptimization(), which
> > makes all rectangle-drawing code, regardless of shader/paint/etc., handled
> > in a consistent manner.
> >
> > This doesn't entirely resolve the complexities of non-AA clipping and non-AA
> > axis-aligned rectangle drawing. That needs additional logic added to the
> > GrQuadUtils::CropToRect function, but this CL is the last structural change
> > to how the ops are created, and to GrRTC to get Ganesh to that stage.
> >
> > Change-Id: Icfbd223eef6e3da0054699334725b5084aaee58a
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223934
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
>
> TBR=bsalomon@google.com,michaelludwig@google.com
>
> # Not skipping CQ checks because original CL landed > 1 day ago.
>
> Change-Id: Ide21002c336dbc3831a2b042acfec92a509ebacf
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224639
> Reviewed-by: Michael Ludwig <michaelludwig@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

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

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

Bug: 981879
Change-Id: I32ed19d521bd7aed93da787b3de0ca830415f42f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225725
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-07-08 17:18:03 +00:00
Herb Derby
2eb0febea3 Use bulk calls in GlyhRun
+ Remove unused getAdvances

Change-Id: Id23104834edb2845f4331b9450317f70c62f480a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225429
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-07-08 15:37:06 +00:00
Aaron O'Mullan
829b6a0ff4 Fix Metal includes breaking macOS local builds
Before this fix, skia (and thus Chrome) would fail to compile on macOS when the user (developer) had a case-sensitive file-system.

So I've replaced the incorrect includes of <metal/metal.h> by <Metal/Metal.h>

Change-Id: I6ebcc0f46608f6d840d80d18e5f5baf0744a7f16
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225776
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-08 14:02:47 +00:00
Herb Derby
02e9150bf6 Switch PDF over to using bulk calls
All the iterations with SkStrike are moving to
bulk glyph calls. Switch over PDF.

Change-Id: I6aa0a98595d1d111254ccee333fbc162cc4eb6c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225427
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
2019-07-03 19:52:44 +00:00
Herb Derby
55a85fc1a6 Bulkify SkGlyphCacheBench
+ fix bug in SkBulkGlyphMetricsAndImages where the underlying SkAutoSTArray
  was not reset.

Change-Id: I94882da30e858d012aa02f79c5fdfe4bc7d2e8aa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225541
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-07-03 19:45:54 +00:00
Jim Van Verth
09d5c4da4a Revert "Assert that lazy proxies are never borrowed or wrapped"
This reverts commit 64860e1807.

Reason for revert: Breaking Chrome roll

Original change's description:
> Assert that lazy proxies are never borrowed or wrapped
> 
> Bug: skia:
> Change-Id: Ie59550e29d5212bb0af626cd7b5bee430137289a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225190
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

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

Change-Id: If1ea208cb2f338bc3b9e38bcecb860c81a6c4fc2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225542
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-03 19:25:02 +00:00
Chris Dalton
64860e1807 Assert that lazy proxies are never borrowed or wrapped
Bug: skia:
Change-Id: Ie59550e29d5212bb0af626cd7b5bee430137289a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225190
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-03 17:46:35 +00:00
Brian Salomon
27ae52c6f4 Make deferred render target context without config or format
config is completely redundant. No caller really cares what the backend
format is.

Change-Id: I93f1feb3ee61db6c21b7915bab3ee3fba5656f92
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225194
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-03 16:53:48 +00:00
Herb Derby
246c3eaa72 Add bulk calls for metrics, paths and images.
Add encapsulations for buffers, and strike handling. Change all the
calls in SkFont over to the new system as an example.

Change-Id: Ib3c751d4f5bb6b04c6a92bbf907f47152f48d6b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225426
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-07-03 16:46:16 +00:00
Robert Phillips
0e0113dcbd Fix initialization of DDLRecorder
Also remove dead GrCaps method (getSampleCount)

Change-Id: I6641f688472fb5ce1b2c3872dd5cdc70b32c4700
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225422
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-03 15:40:13 +00:00
Brian Salomon
8e8ac568ec fix logic bug when deciding to use temp space for mip levels
TBR: egdaniel@google.com

Change-Id: I7c8953b96500dcc320c551a60c8087fdb034939f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225420
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-03 14:35:16 +00:00
Hal Canary
30e4bdf6bf add header guards
Change-Id: I3680ea31bf279cc6bde58c15a3dfa6b49815cf7e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225138
Auto-Submit: Hal Canary <halcanary@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-07-03 14:07:12 +00:00
Greg Daniel
8466547da3 Move tex storage flag to FormatInfo in GrGLCaps.
Change-Id: Ieeb881c2b96ecd482576cb587c05dda892675e5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225191
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-03 13:46:42 +00:00
Robert Phillips
02dc0307ad Add bridge between GrContext::createBackendTexture and SkSurface::MakeFromBackendTexture
In order to effectively use the explicit backend texture allocation API Chrome needs a way to use them with surface characterizations

Change-Id: Ic61eff9f3b6b0e8280481149d7c08d37a2fe7ec0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222781
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-03 12:31:12 +00:00
Brian Salomon
c9d81f768f Fix issue where SkAutoSTMalloc doesn't default initialize std::unique_ptr.
TBR=jvanverth@google.com

Change-Id: Ifd29f55956f640dfc972490244d5d356bac89759
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225418
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-03 12:19:22 +00:00
Mike Klein
7e65076ae3 move Builder/Program dump()
This is test-only code only used by SkVMTest.cpp,
so it can live there.  This cuts the dependency
of SkVM on SkStream and co.

Change-Id: I7695e527b2d16e4485f8c5f4cd39bb8300e9221d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225321
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-02 23:10:23 +00:00
Herb Derby
9ee1edda15 Add SkMakeSpan and helpful conversion
SkMakeSpan uses function type inference to remove boilerplate
code. The converting casts simplifies dealing with T* to const T*
uses.

Change-Id: I1851e144c4e530c275710514ce30ad75a7eb94c6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225192
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-07-02 21:49:09 +00:00
Yuqian Li
40aa85f589 Add tracing to GrContext resource cleanup
For https://github.com/flutter/flutter/issues/35296

The change is suggested by bsalomon@google.com

Change-Id: I70a2f5298b49d7a64e51cb1f364834e62dcaf4a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225119
Commit-Queue: Yuqian Li <liyuqian@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Auto-Submit: Yuqian Li <liyuqian@google.com>
2019-07-02 21:32:19 +00:00
Robert Phillips
b2adbef6f6 Remove GrPixelConfig from SkSurfaceCharacterization
TBR=bsalomon@google.com
Change-Id: I3127e672512a398867f39029c97eb807ea77e217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225136
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-02 21:20:39 +00:00
Robert Phillips
1e2cb444e0 Switch GrCaps::areColorTypeAndFormatCompatible over to using GrColorType
This necessitated some Gr*Caps refactoring

Change-Id: I8d72e9645b51bcf72d58b2c2c4fbd9ee7e83ddf1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225184
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-02 21:04:19 +00:00
Brian Salomon
4d03689edb Make GrRenderTargetContext async read functions use GrRTC's alpha type.
This shouldn't have any practical effect since GrRTC can't be unpremul
but removes assumptions in these functions. This code will eventually
be lifted up to GrSurfaceContext which can be unpremul.

Change-Id: If8b2fb8b19d1160bc6561f6536518563f57c4351
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225185
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-02 20:18:49 +00:00
Mike Klein
b5f95cd1f8 tool support for SkVM JIT on aarch64
- Add quick-building skvmtool
    - Remove SkString dependency
    - Add aarch64 support for perf dumps

Here's what I see on now for the tiny skvmtool program:

x86-64 (Xeon Gold 6154)
           │      skvm-jit-1707131987():
     24.93 │   0:   vmovups (%rsi),%ymm0
     50.13 │        vpmulld %ymm0,%ymm0,%ymm0
     24.93 │        vmovups %ymm0,(%rsi)
           │        add    $0x20,%rsi
           │        sub    $0x8,%rdi
           │      ↑ jne    0
           │        vzeroupper
           │      ← retq

aarch64 (Cortex A53)
           │      skvm-jit-485593645():
     11.55 │   0:   ldr    q0, [x1]
     47.65 │        mul    v0.4s, v0.4s, v0.4s
     31.77 │        str    q0, [x1]
           │        add    x1, x1, #0x10
      8.66 │        subs   x0, x0, #0x4
           │      ↑ b.ne   0
      0.36 │      ← ret

Change-Id: Ia83ebdc6d96c8bd367bce0e8f2792b5e5c79f750
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225186
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-02 20:11:19 +00:00
Mike Klein
7aacb0b30a fix GCC arm64 builds
These two guards are checking if we're building for aarch64 and thus
have F16 conversion instructions, but weren't checking if we want to use
them (if we have them _and_ we're being compiled by Clang).  At head
we're trying to pass a 2-byte uint16_t to a function expecting an 8-byte
uint16x4_t, etc.

Change-Id: I21f6cd2100ec81ccdd47c4ec0575107624cd7c5a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225257
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-02 20:02:18 +00:00
Greg Daniel
346c892a26 Add format workaround struct in GrGLCaps.
This will allow us to fill out all the workarounds in applyDriverCorrectnessWorkarounds
instead of having additional ones in initFormatTable.

Change-Id: I2fe2d6c831d0102e7cd8188033fee14b4e709ce4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225176
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-07-02 19:31:51 +00:00
Brian Salomon
624f9063c1 Be more stringent about API failure cases in AsyncReadPixels test
Bug: skia:8962
Change-Id: I636d8d5c53a653c7b02bfe315e927c1e2fbc0ddf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222791
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-02 19:06:47 +00:00
Brian Salomon
5f39427b28 Fix trace event categories in src/gpu ("skia"->"skia.gpu")
Change-Id: I74b041d3f820d423601bd06805edec001a0d980e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225256
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
2019-07-02 18:39:07 +00:00
Brian Salomon
1047a49d82 GrGpu requires row bytes to be non-zero before read/writePixels and createTexture
Make GrGpu base class validate GrMipLevel arrays and row bytes parameters.

GrCaps states whether row bytes passed to GrGpu must be tight or not and callers
are responsible for temporary buffers if needed to make tight.

Change-Id: I2c522f7bd67c86044a36b3f70e13d7dcb38b0a6b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224961
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-02 18:33:51 +00:00
Hal Canary
5823f6b90c SkPDF: fix typo s/ProcSets/ProcSet/ (again)
Bug: skia:9081
Change-Id: I713efff5ce7c9a79d873d527331c18490b897830
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223978
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-07-02 18:30:31 +00:00
Herb Derby
c9fce9c962 Centralize calculating SkPackedGlyphIDs
Currently the different strikes caclulate SkPackedGlyphIDs from positions and
SkGlyphIDs. This means that there are two implementations one for SkStrike
and one for SkRemoteGlyphCache. This moves all SkPackedGlyphID calculations to
the painter thereby centralizing it.

Change-Id: If9467aca01d46aa3a2d62e7acbc97a5b6a97f13b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224544
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-07-02 18:28:41 +00:00
Chris Dalton
215ff33252 Don't attempt mixed samples on "borrowed" render targets
Bug: skia:9231
Change-Id: I55809299c34bb835c2d3437b31dab318572a948d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225165
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-07-02 17:22:07 +00:00
Greg Daniel
e783ba4238 Add ColorTypeInfo struct to FormatInfo in GrGLCaps.
This CL starts the support for properties that are dependent on both the
format and color type. For now this adds a can upload data flag which is
currenly used in combination with the format texturable flag to determine
high level "textureability" for ganesh. The only format where these two
flags diverage from eachother currently is RGBA8 format with BGRA colortype.

Change-Id: I08b419af355d698ca4e9001949be6b7fd2e1c33d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224959
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-02 15:05:04 +00:00
Brian Osman
22e47f985c Reland "Test MSAA on Gen9 Intel GPUs"
Updated caps to allow MSAA on newer Intel GPUs.

This reverts commit 41f937f042.

Bug: skia:9225
Change-Id: I15bdc4d4a754945fafcc4bc7d1afaa701d6f0426
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224958
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-02 14:22:03 +00:00
Lei Zhang
22f34b11f9 Make SkFloatToDecimal() param name match declaration.
In SkFloatToDecimal.cpp, the |output| parameter for SkFloatToDecimal()
is named |result|. Change it to |output| and change the local variable
|output| to |output_ptr|. Fix some typos along the way.

Change-Id: Id34848f4823e69fcbd5203618ea90083fc157b6c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225014
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
2019-07-02 13:54:21 +00:00
Brian Salomon
bd3d8d39b3 Remove GrPixelConfig from GrColorSpaceInfo.
Replace GrColorInfo with GrColorSpaceInfo.

Change-Id: I7abe28203dd7f22162d68c4eee41293f483bb1aa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225036
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-07-02 13:43:41 +00:00
Chris Dalton
effee20657 Use mixed samples internally for default coverage AA
Lays the infrastructure to use mixed samples internally, and begins
using nvpr with mixed samples on the default "gl" and "gles" configs.

In this rendition, we take the simplest approach possible re: stencil
attachments. We initially create a render target without stencil
(i.e., 0 samples). Then, any time a proxy needs a stencil buffer with
more samples than its target currently has, we create and attach a new
stencil buffer. However, we never "downgrade" a render target's
stencil attachment to one with fewer samples. So if the proxy only
needs one sample and the target has many, we leave it.

Bug: skia:
Change-Id: I8558ba799ac3dee457f349f77d4517c11413c9a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224456
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-07-02 06:04:09 +00:00
Brian Osman
9fb7fa537d Fix asserts in EllipticalRRectOp::Make to match logic of make_rrect_op
Comments and earlier code verify that the radii are not less than 1/2.
Asserting that they are therefore greater than 1/2 fails (rarely).

Change-Id: I294eb2304c087332698dd624567a8e1d286d0144
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225037
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-01 21:39:11 +00:00
Jim Van Verth
5e8f389797 Re-enable Metal buffer suballocation with extra mutex guard.
Bug: skia:9213
Change-Id: Ia29489b00bcaaf17d4c7b6613ed4f22e87a87ffc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224545
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-07-01 21:34:41 +00:00
Herb Derby
9c9af8ebc7 Use bulk metrics call in SkFont
Unify the handling of glyph metrics data in SkFont.

Change-Id: Ie1ad2a96ba205c0ee4570d70461b9db0cd874918
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224577
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-07-01 20:10:12 +00:00
Robert Phillips
da2e67a357 Add GrProtected parameter to all createBackendTexture variants
Change-Id: I667bc730e321b579bef98f3d6003f7a7b29c9890
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224957
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-07-01 19:46:18 +00:00
Brian Salomon
dc0710f2a2 Make GrCaps::surfaceSupportsReadPixels return distinct values rather than flags.
Change-Id: I2744ca6cb0e9f1f2fd7d20e293400c788e7d4083
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224960
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-01 19:30:18 +00:00
Ethan Nicholas
cab767f219 SkSL now respects layout(key) on all variables
Change-Id: I33332967bba0f16a73633f13ffa851e38eba100d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224737
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-07-01 18:04:45 +00:00
Brian Osman
41f937f042 Revert "Test MSAA on Gen9 Intel GPUs"
This reverts commit e0b2dafeb6.

Reason for revert: Need to blacklist more unit tests

Original change's description:
> Test MSAA on Gen9 Intel GPUs
> 
> Change-Id: Ie5441350fc150356ffb7d6acffe1089ca1de4364
> Bug: skia:9225
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224539
> Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

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

Change-Id: I49c7a2f1132baeef80fa5296c2f2313f2bef0830
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9225
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224956
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-01 18:04:44 +00:00
Mike Klein
1e87a5410e move SkVM interpreter back to SkVM.cpp
No real pressing reason to have an AVX2-specialized interpreter now that
we've got an AVX2 JIT.  Keeping things centralized makes it easier to
keep track of and helps reduce dependendcies on the rest of Skia, which
in turn makes it easier to develop SkVM on wimpy machines like an RPi.

Change-Id: Ic4729603ec6c9141929b3e2a56ba380240ea5e0d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224822
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-01 17:55:17 +00:00
Brian Salomon
1d43530aa2 Pass alpha type to GrSurfaceContext::read/writePixels and remove flags.
We deduce whether to premul or unpremul based on the the input/output
alpha types. This means we also now support unpremuling on write and
premuling on read.

Class-ify former struct GrPixelInfo. Remove origin and instead pass a
flip bool to GrConvertPixels.

Unifies read/write methods on GrSurfaceContext via automatic conversion
of SkImageInfo to GrPixelInfo and making GrDirectContext an optional
parameter.

Bug: skia:7580

Change-Id: I42f6997852b4b902fb81264c6de68ca9537606aa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224281
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-07-01 17:30:40 +00:00
Mike Klein
1fa149a713 finish up arm64 ops
Some small refactoring to common up redundant opcode building.

Oddly, I think I've got better codegen than what Clang would do here.
Clang doesn't generate uxtl-based code to unpack 8-bit to 32-bit,
instead preferring to load each byte one at a time and insert them one
at a time.

Me:
    ldr  s0, [x0]
    uxtl v0.8h, v0.8b
    uxtl v0.4s, v0.8h

Clang:
    ldrb  w8,  [x0]
    ldrb  w9,  [x0, #1]
    ldrb  w10, [x0, #2]
    ldrb  w11, [x0, #3]
    fmov  s0,      w8
    mov   v0.s[1], w9
    mov   v0.s[2], w10
    mov   v0.s[3], w11

Change-Id: I0fdf5c6cdcde6a4eb9290936284fd3ffcb2159f6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224821
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-07-01 17:26:03 +00:00
Brian Osman
e0b2dafeb6 Test MSAA on Gen9 Intel GPUs
Change-Id: Ie5441350fc150356ffb7d6acffe1089ca1de4364
Bug: skia:9225
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224539
Reviewed-by: Ben Wagner aka dogben <benjaminwagner@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-07-01 16:56:45 +00:00
Robert Phillips
c046ff0b10 Add SkSurfaceCharacterization::isCompatible
Although the main change in this CL is the addition of GrCaps::areColorTypeAndFormatCompatible.

This is split out of:

https://skia-review.googlesource.com/c/skia/+/222781 (Add bridge between GrContext::createBackendTexture and SkSurface::MakeFromBackendTexture)

Change-Id: I2e50fff91eb07fb1358840e1a4a76dc138a2f195
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223932
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-07-01 15:15:12 +00:00
Michael Ludwig
dcb832ac63 Revert "Switch drawTexture calls to use attemptQuadOptimization"
This reverts commit 9b2defc3d5.

Reason for revert: Likely broke chrome layout tests

Original change's description:
> Switch drawTexture calls to use attemptQuadOptimization
> 
> Before the quad-rendering op refactor, regular filled rectangles and
> textured rectangles used an internal crop_filled_rect function to crop
> to the bounding box of the clip. As the quad op refactor progressed,
> regular filled rectangle drawing went through the new attemptQuadOptimization
> function that supported more cropping to the exact clip when axis-aligned,
> and could be better handle complex paints.
> 
> Following the generalized factories added to GrTextureOp in earlier CLs,
> it is now possible to route all textured rectangle draws through the same
> optimizations. While there are a number of public interfaces for drawing
> rectangles and textures on GrRTC, internally there is now just drawFilledQuad
> (for complex paints) and drawTexturedQuad(for textures, avoids GrPaint use).
> Both of these are very similar, and share attemptQuadOptimization(), which
> makes all rectangle-drawing code, regardless of shader/paint/etc., handled
> in a consistent manner.
> 
> This doesn't entirely resolve the complexities of non-AA clipping and non-AA
> axis-aligned rectangle drawing. That needs additional logic added to the
> GrQuadUtils::CropToRect function, but this CL is the last structural change
> to how the ops are created, and to GrRTC to get Ganesh to that stage.
> 
> Change-Id: Icfbd223eef6e3da0054699334725b5084aaee58a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223934
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

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

Change-Id: Ide21002c336dbc3831a2b042acfec92a509ebacf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224639
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-07-01 01:19:10 +00:00
Herb Derby
1ddee02522 Remove preparePath from the SkStrikeInterface
This call is only used by the bitmap drawing. Just use SkStrike
for bitmap drawing.

Change-Id: Ib9313b21bb2f9c7de2b8ac084d905538ba45f51b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224576
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-28 21:57:47 +00:00
Greg Daniel
ab013ebe9c Move GL caps textureable and fbocolorattachment flags to FormatInfo.
Change-Id: I68d623151a64dd68a5ea7a396023c7909c6e48a0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223798
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-06-28 19:43:37 +00:00
Michael Ludwig
9b2defc3d5 Switch drawTexture calls to use attemptQuadOptimization
Before the quad-rendering op refactor, regular filled rectangles and
textured rectangles used an internal crop_filled_rect function to crop
to the bounding box of the clip. As the quad op refactor progressed,
regular filled rectangle drawing went through the new attemptQuadOptimization
function that supported more cropping to the exact clip when axis-aligned,
and could be better handle complex paints.

Following the generalized factories added to GrTextureOp in earlier CLs,
it is now possible to route all textured rectangle draws through the same
optimizations. While there are a number of public interfaces for drawing
rectangles and textures on GrRTC, internally there is now just drawFilledQuad
(for complex paints) and drawTexturedQuad(for textures, avoids GrPaint use).
Both of these are very similar, and share attemptQuadOptimization(), which
makes all rectangle-drawing code, regardless of shader/paint/etc., handled
in a consistent manner.

This doesn't entirely resolve the complexities of non-AA clipping and non-AA
axis-aligned rectangle drawing. That needs additional logic added to the
GrQuadUtils::CropToRect function, but this CL is the last structural change
to how the ops are created, and to GrRTC to get Ganesh to that stage.

Change-Id: Icfbd223eef6e3da0054699334725b5084aaee58a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223934
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-28 19:14:47 +00:00
Jim Van Verth
ccd895e16d Disable some code to handle Metal TSAN errors.
This is a temporary fix until I can figure out where these errors are
coming from.

Bug: skia:9213
Change-Id: Iac21415bf26f39f5237e12ec146769252e833d36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223981
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-28 18:36:42 +00:00
Michael Ludwig
205224fbd5 Remove old texture op factories
Change-Id: I526cd01be501bf356307f00deb2c3067ab16de8f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223927
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-28 17:33:52 +00:00
Brian Osman
e4c88bb1f8 Prevent caching path-rendering programs
As described in the comments, this is a workaround for a rare situation
when trying to use cached program binaries in conjunction with ANGLE and
path rendering.

Change-Id: Ief5bb0042f5ec13cbea2242ff9c4f0b9f9e65641
Bug: angle:3619
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224258
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-28 16:25:54 +00:00
Mike Klein
842e92e292 implement Op::bytes with NEON tbl
Starting to look good:

    1.57ns	SkVM_4096_I32_SWAR
    3.89ns	SkVM_4096_I32
    4.08ns	SkVM_4096_I32_Naive
    7.84ns	SkVM_4096_F32
    2.7ns	SkVM_4096_RP
    1.26ns	SkVM_4096_Opts

Change-Id: I24f44ed5fc693a04afef8d7a6ce13f3733277fb3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224280
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-27 22:03:23 +00:00
Mike Klein
97bc9a61c0 simplify nibble_to_vpshufb
Just realized the mapping from our bytes() control nibble
to vpshufb's control byte is even easier than we thought.

Change-Id: I86fec8d3ca091ecc3fbbd59fe51ac128f0cef2fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224316
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-27 20:53:58 +00:00
Greg Daniel
a3f44e230f Reland "Refactor of GrGLCaps to move some code around."
This reverts commit 838c8f65ca.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Revert "Refactor of GrGLCaps to move some code around."
> 
> This reverts commit ed03e5f34b.
> 
> Reason for revert: breaking win10 angle srgb
> 
> Original change's description:
> > Refactor of GrGLCaps to move some code around.
> > 
> > The big changes here are that in initConfigTable we were setting a few
> > member variables (srgb support and compression related) whereas all other
> > member variables were set elsewhere. So this change moves the logic out
> > of initConfigTable and places it with other similar code.
> > 
> > Next setting of fSRGBWriteControl was affected by a driver workaround. We
> > need to apply this workaround before calling the initConfigTable. Thus I
> > moved the call to applyDriverWorkarounds above the initConfigTable. The
> > end result is that by the time initConfigTable is called we've now made all
> > decisions about what we will enable and disable (in terms of member variables),
> > and the only values writted in the function is setting values of the ConfigTable
> > itself.
> > 
> > Change-Id: I65b1bb4e9fc49d6020e1eb58d838f47057e6d1c8
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224191
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> 
> TBR=egdaniel@google.com,bsalomon@google.com
> 
> Change-Id: Ib9ea36b8cba28df3fdf5fcdd828315cccfcc6ce3
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224256
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Change-Id: I04d3399e021a9eed98940061f9cb4c720580dee8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224259
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-27 20:42:03 +00:00
Chris Dalton
6b98280469 Track if we need stencil on GrRenderTargetContext
There are a few places that have been checking whether the *proxy*
needs stencil, in order to determine if the current render target
context needs stencil. This is problematic since a render target
context can not require stencil itself, but wrap an existing proxy
that already has stencil.

Bug: skia:
Change-Id: I2719dd3a9df15fef3d64f991cda4fadea23266bb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223970
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-06-27 20:29:03 +00:00
Michael Ludwig
22429f96bd Add generic texture op factory.
This adds a new factory for GrTextureOp that generalizes the current
Make() and MakeQuad(). A following CL will remove those calls.

This also moves the texture-op emulation with GrFillRectOp into this
factory call. I found this to make more sense, both because it makes
op creation callsites simpler (drawTexturedQuad, drawTexture, and
drawTextureSet don't have to check the blend mode anymore). Additionally
the logic for matching the texture op shading behavior to a GrPaint
now lives inside GrTextureOp.

To allow for this, the to-be-removed existing factories have had the
blend mode added to their arguments as well.

Change-Id: Icda346cd203ae8caa7f5ed762ed4e0a214084dda
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223924
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-27 20:19:19 +00:00
Mike Klein
0ef3f53c8e aarch64 JIT first pass
- this is enough to run some of the test programs
  - a couple instructions TODO: load8, store8, bytes,
    so I32_SWAR and I32 are not yet JIT'd, but F32
    and I32_Naive are

Change-Id: I1d97cff24aa7307726c722cce45896ed319877e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224194
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-27 20:15:29 +00:00
Greg Daniel
838c8f65ca Revert "Refactor of GrGLCaps to move some code around."
This reverts commit ed03e5f34b.

Reason for revert: breaking win10 angle srgb

Original change's description:
> Refactor of GrGLCaps to move some code around.
> 
> The big changes here are that in initConfigTable we were setting a few
> member variables (srgb support and compression related) whereas all other
> member variables were set elsewhere. So this change moves the logic out
> of initConfigTable and places it with other similar code.
> 
> Next setting of fSRGBWriteControl was affected by a driver workaround. We
> need to apply this workaround before calling the initConfigTable. Thus I
> moved the call to applyDriverWorkarounds above the initConfigTable. The
> end result is that by the time initConfigTable is called we've now made all
> decisions about what we will enable and disable (in terms of member variables),
> and the only values writted in the function is setting values of the ConfigTable
> itself.
> 
> Change-Id: I65b1bb4e9fc49d6020e1eb58d838f47057e6d1c8
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224191
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Change-Id: Ib9ea36b8cba28df3fdf5fcdd828315cccfcc6ce3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224256
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-27 18:43:52 +00:00
Mike Klein
f5443bb16f steady clock is probably best
Change-Id: I37eadc5800665af5ee862c4f108fa7c1f5000fa3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224195
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-27 18:31:24 +00:00
Greg Daniel
ed03e5f34b Refactor of GrGLCaps to move some code around.
The big changes here are that in initConfigTable we were setting a few
member variables (srgb support and compression related) whereas all other
member variables were set elsewhere. So this change moves the logic out
of initConfigTable and places it with other similar code.

Next setting of fSRGBWriteControl was affected by a driver workaround. We
need to apply this workaround before calling the initConfigTable. Thus I
moved the call to applyDriverWorkarounds above the initConfigTable. The
end result is that by the time initConfigTable is called we've now made all
decisions about what we will enable and disable (in terms of member variables),
and the only values writted in the function is setting values of the ConfigTable
itself.

Change-Id: I65b1bb4e9fc49d6020e1eb58d838f47057e6d1c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224191
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-27 18:14:44 +00:00
Jim Van Verth
d7871cc505 Check for too-small ovals when deciding on using GrCircleOp
Bug: chromium:979178
Change-Id: I2cacba922c1efb0bc9fce6dfc13bd1119fc4676c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224193
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-27 18:11:24 +00:00
Michael Ludwig
f339dfea31 Separate src coordinates from domain rect in texture op.
Previously, the metadata for an op entry stored the src rect and a bool.
When true, the src rect represented both the source texture coordinates
and the domain rectangle. In addition, if the real source coordinates
were actually a quadrilateral, they were stored as an optional local quad
in the buffer.

This changes it so that the metadata rect represents only the domain and
the source texture coordinates are always stored in the quad buffer.
This is slightly more storage overhead for the simple case but did not
lead to performance issues locally. It also lets us (in a later CL), fix
a bug where the src rect gets clipped in GrRTC and that clipped rect is
used as both the domain and src (when it should be used just as the src
and the original, unclipped rect is the domain).

Change-Id: Id1bcdf7c3045c330a51973a006411a9169777a91
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223922
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-27 17:44:28 +00:00
Ben Wagner
7b4aef0f46 Fix argument order dependency when creating HBBlob.
In the code prior to this change, if the compiler evaluated the arguments
from left to right everything would work. If the compiler evaluated the
arguments from right to left the the data was released before the calls
to get the location and size of the data. Since the compiler saw that
the release could happen before the other fields were read, it emitted
instructions like 'mov edx,dword ptr [20h]', directly inlining the
nullptr dereference.

BUG: chromium:979161
Change-Id: I0c45d9f6b8c8cd7b6c751f2b03f10aa5ea9d685c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224192
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-06-27 17:26:18 +00:00
Brian Salomon
bb8dde8f7c Reland "Reland "Separate compressed and uncompressed texture functions""
This is a reland of c0519233cd

Original change's description:
> Reland "Separate compressed and uncompressed texture functions"
> 
> This is a reland of 9acfb33ad8
> 
> Original change's description:
> > Separate compressed and uncompressed texture functions
> > 
> > Change-Id: Iccf31e1e4dbebde8aab4bb9b57cfb0341bb05912
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223802
> > Reviewed-by: Greg Daniel <egdaniel@google.com>
> > Commit-Queue: Brian Salomon <bsalomon@google.com>
> 
> Change-Id: I9f212b7d34cf43216f7d2ec63b959b75fd6a71b3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223992
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

Change-Id: I0654a49dadfb56ad276051c8632b91da05bf24cd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224181
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-27 17:09:24 +00:00
Greg Daniel
c29e6dc358 Disable texturing and rendering to F32 pixel configs.
Change-Id: Iefd29ceb5431a9e2e12a9fcdfcc548131b29032c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224187
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-27 16:48:48 +00:00
Mike Klein
fc64a1bee9 slight speedup for hsw::blit_row_s32a_opaque
This backports a little bit of the work we've done in SkVM
to the pre-compiled blit_row_s32a_opaque routine for AVX2.

Mostly I've just rewritten the function with new comments for clarity.
The key improvement is to use _mm256_shuffle_epi8 to create two copies
of the src alpha.  The old version mimicked the idiom from the SSE2 code
where a byte-shuffle was not possible, instead using a shift-shift-or
pattern to construct it in three instructions.  Despite being a slower
instruction, using one vpshufb does seem to beat the compound operation
by a little bit, both in practice (nanobench) and theory (llvm-mca).

This is pretty small stuff, about 0.01ns per pixel saved of ~0.15ns.

Change-Id: Ic7206e391844becab2a79a7ba6ddf4be2f82a06e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224185
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Auto-Submit: Mike Klein <mtklein@google.com>
2019-06-27 16:13:28 +00:00
Michael Ludwig
425eb45435 Reland "Replace GrQuadList with variable-length quad buffer"
This reverts commit 19628ec144.

Reason for revert: fixed struct size on 32-bit iOS

Original change's description:
> Revert "Replace GrQuadList with variable-length quad buffer"
> 
> This reverts commit f281604429.
> 
> Reason for revert: Breaking G3 and iOS Build
> 
> Original change's description:
> > Replace GrQuadList with variable-length quad buffer
> > 
> > Change-Id: I5cc391e8d143032893511695961f5251f40e8291
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223803
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> 
> TBR=bsalomon@google.com,michaelludwig@google.com
> 
> Change-Id: I55947c068c6472c301952e33cbc36d04505f9800
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223993
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I7522270d467faf0f4e777831e9186bad010409ab
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224184
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-06-27 14:58:09 +00:00
Mike Klein
2e1e50435a Reland "add operator "" _mask() to make Assembler clearer"
This is a reland of 076e5d3a4c

Original change's description:
> add operator "" _mask() to make Assembler clearer
> 
> Change-Id: I145f0f60288eef368fc7648b25661356cb6e9f12
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223980
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>

Change-Id: I10f8301888d83ba186a32c251b25a3fbe297a6a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224183
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-27 14:36:19 +00:00
Mike Klein
a8720d0c94 make Label offsets int
It's a bit too easy to trip up the MSRTC bots with size_t.

(The only reason I used size_t in the first place is that
these really are byte offsets... kind of the one place we
use size_t.)

Cq-Include-Trybots: skia.primary:Test-Win2016-MSVC-GCE-CPU-AVX2-x86_64-Debug-All-MSRTC
Change-Id: I3426cec68af298a18139118b866b70b33ee34d9b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224182
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-06-27 14:02:21 +00:00
Greg Daniel
6188af3c3d Revert "add operator "" _mask() to make Assembler clearer"
This reverts commit 076e5d3a4c.

Reason for revert: breaking google3. "literal operators are an unapproved C++11 feature"

Original change's description:
> add operator "" _mask() to make Assembler clearer
> 
> Change-Id: I145f0f60288eef368fc7648b25661356cb6e9f12
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223980
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Herb Derby <herb@google.com>

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

Change-Id: Ib41aa871c2e8b9b27fb75b73e538729c9ab24112
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/224076
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-27 03:07:05 +00:00
Greg Daniel
15500644c7 Revert "Reland "Separate compressed and uncompressed texture functions""
This reverts commit c0519233cd.

Reason for revert: breaking google3 cause of abort in constexpr

Original change's description:
> Reland "Separate compressed and uncompressed texture functions"
> 
> This is a reland of 9acfb33ad8
> 
> Original change's description:
> > Separate compressed and uncompressed texture functions
> > 
> > Change-Id: Iccf31e1e4dbebde8aab4bb9b57cfb0341bb05912
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223802
> > Reviewed-by: Greg Daniel <egdaniel@google.com>
> > Commit-Queue: Brian Salomon <bsalomon@google.com>
> 
> Change-Id: I9f212b7d34cf43216f7d2ec63b959b75fd6a71b3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223992
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I9cee240b438a3682911a3c6cddadfe2062447b8c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223995
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-27 03:06:05 +00:00
Mike Klein
076e5d3a4c add operator "" _mask() to make Assembler clearer
Change-Id: I145f0f60288eef368fc7648b25661356cb6e9f12
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223980
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-27 01:58:23 +00:00
Greg Daniel
e706735433 Reland "Removed made-up kSBGRA pixel config."
This reverts commit 70aae53d57.

Reason for revert: Relanding with fix

Original change's description:
> Revert "Removed made-up kSBGRA pixel config."
>
> This reverts commit ff95f6ca9d.
>
> Reason for revert: Broke command buffer GLBackendAllocationTest??
>
> Original change's description:
> > Removed made-up kSBGRA pixel config.
> >
> > We made up this pixel config and don't actually use it ourselves so lets
> > kill it for simplicity.
> >
> > Change-Id: I6ae1c78fe7ada336a2411d295e8836dfeecb2d5c
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223979
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
>
> TBR=egdaniel@google.com,robertphillips@google.com,brianosman@google.com
>
> Change-Id: I62e954495a702c7ad050719d8a1d6c4abcea3f60
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223990
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: If8781567f065031c46bcea74098d32ed1bc72607
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223994
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-27 01:57:13 +00:00
Brian Salomon
c0519233cd Reland "Separate compressed and uncompressed texture functions"
This is a reland of 9acfb33ad8

Original change's description:
> Separate compressed and uncompressed texture functions
> 
> Change-Id: Iccf31e1e4dbebde8aab4bb9b57cfb0341bb05912
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223802
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

Change-Id: I9f212b7d34cf43216f7d2ec63b959b75fd6a71b3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223992
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-27 01:26:23 +00:00
Brian Salomon
19628ec144 Revert "Replace GrQuadList with variable-length quad buffer"
This reverts commit f281604429.

Reason for revert: Breaking G3 and iOS Build

Original change's description:
> Replace GrQuadList with variable-length quad buffer
> 
> Change-Id: I5cc391e8d143032893511695961f5251f40e8291
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223803
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>

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

Change-Id: I55947c068c6472c301952e33cbc36d04505f9800
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223993
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-27 01:02:03 +00:00
Brian Salomon
70aae53d57 Revert "Removed made-up kSBGRA pixel config."
This reverts commit ff95f6ca9d.

Reason for revert: Broke command buffer GLBackendAllocationTest??

Original change's description:
> Removed made-up kSBGRA pixel config.
> 
> We made up this pixel config and don't actually use it ourselves so lets
> kill it for simplicity.
> 
> Change-Id: I6ae1c78fe7ada336a2411d295e8836dfeecb2d5c
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223979
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Change-Id: I62e954495a702c7ad050719d8a1d6c4abcea3f60
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223990
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-26 23:52:13 +00:00
Mike Klein
e51632e8c5 128-bit load / store
Change-Id: I665f43279ac7bfd3dffbf38a10a571b959a3425c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223977
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-26 22:56:51 +00:00
Brian Salomon
24fc4eb079 SkUNREACHABLE
Change-Id: Ic5ce56a98cfc21261ee9f5987f59db7d7c9fe38f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223931
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-26 21:39:36 +00:00
Mike Klein
15a368d519 some scalar ops
Change-Id: I1603f89603755914ed91645a2e5eeb9c87f63bbe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223929
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-26 21:33:29 +00:00
Greg Daniel
ff95f6ca9d Removed made-up kSBGRA pixel config.
We made up this pixel config and don't actually use it ourselves so lets
kill it for simplicity.

Change-Id: I6ae1c78fe7ada336a2411d295e8836dfeecb2d5c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223979
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-26 21:25:41 +00:00
Brian Osman
2c60a38952 When using cached program binaries, always get uniform locations
If we have the BindUniformLocation extension, we normally use that to
tell GL what location to use for each uniform, before linking. But with
cached binaries, the result is already linked, and we still need to ask
for locations.

Change-Id: Ia29f1faef9d3c9354b92cfb34332854d6c6be1b7
Bug: chromium:977938
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223982
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-26 21:12:21 +00:00
Brian Salomon
31539a8a92 Revert "Separate compressed and uncompressed texture functions"
This reverts commit 9acfb33ad8.

Reason for revert: vulkan bots failing

Original change's description:
> Separate compressed and uncompressed texture functions
> 
> Change-Id: Iccf31e1e4dbebde8aab4bb9b57cfb0341bb05912
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223802
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: Ic5cf829e2de0ef0f577072bd571fdee54a0a03a3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223987
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-26 20:37:40 +00:00
Michael Ludwig
f281604429 Replace GrQuadList with variable-length quad buffer
Change-Id: I5cc391e8d143032893511695961f5251f40e8291
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223803
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-06-26 19:53:42 +00:00
Brian Salomon
9acfb33ad8 Separate compressed and uncompressed texture functions
Change-Id: Iccf31e1e4dbebde8aab4bb9b57cfb0341bb05912
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223802
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-26 19:37:32 +00:00
Hal Canary
02eefbeca9 header self-sufficiency and idempotency
Change-Id: I4ec74a358e11d85c6eaf1658efd6f1391ee5e387
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223930
Commit-Queue: Hal Canary <halcanary@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-06-26 19:12:43 +00:00
Herb Derby
793818b235 Make all SkGlyph fields private
All the scalers are friends, and can still access the fields, but
clients of SkGlyph can no longer access them.

Change-Id: Idbc26de74ceebeac37fa8fec9277ecf8b870e5e9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223801
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-26 17:44:21 +00:00
Chris Dalton
b3c9745911 Remove "nvpr" configs
The majority of our gm testing has been disabling nvpr, which doesn't
match our real-world behavior where we use nvpr whenever available.
This CL fixes the issue by completely removing the explicit nvpr
configs. Now if we have nvpr, you get it.

This CL also lowers the nvpr priority in the path renderer chain and
adds a "NonNVPR" job on Quadro where we can continue to test our
non-nvpr codepaths on NVIDIA.

Bug: skia:
Change-Id: I6a36f1101c8218adcaaf10cab25d2c28e70371f0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223828
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-06-26 16:53:50 +00:00
Brian Osman
d6b53d54cb Fix and update the Intel GPU string parsing
Correctly distinguishes some cases that were previously intertwined.
Changes all the renderer tags to correspond to Intel's GPU families
(this is the same breakdown used by ANGLE, Chromium, etc.)

Extended the parsing to handle several newer families.

Change-Id: I3cd354f434aa90f79c01de4dbe98c60e86055b4b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223777
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-26 14:52:56 +00:00
Mike Klein
d94fddda8f disable SkVM perf dumps
Confusing to get them when not working on SkVM.

Change-Id: Ib4ee35d3adcb50292f7cb5de020ddac35fb8281c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223918
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-26 14:11:30 +00:00
Herb Derby
5a7d1d28f3 Remove getGlyphMetrics from the interface
The shared Renderer/GPU code only uses the bulk API now.

Change-Id: I04f4f75c94e599a961e10c48a72248bc2624c902
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223800
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-26 13:45:20 +00:00
Robert Phillips
f209e882fe Update SkSurface_Gpu::Valid to take a backend format
This is pulled out of:

https://skia-review.googlesource.com/c/skia/+/222781 (Add bridge between GrContext::createBackendTexture and SkSurface::MakeFromBackendTexture)

Change-Id: I0c26bba2592a6e6fe759b49de83f994b05d862a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223698
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-26 12:11:10 +00:00
Herb Derby
4e2033e843 Use rect calls in SkFont
Change-Id: Ib51519180136f8907f418808c96a01d403dcf7a5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223799
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-26 04:03:47 +00:00
Robert Phillips
9907e6e476 Expose SkSurface::isCompatible
This is part of bridging the explicit backend surface API and making SkSurfaces

This is pulled out of:

https://skia-review.googlesource.com/c/skia/+/222781/ (Add bridge between GrContext::createBackendTexture and SkSurface::MakeFromBackendTexture)

Change-Id: Ib55bcd8a0d1a049f230314a8f8ba7a3951b06d5c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223707
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-25 19:52:23 +00:00
Herb Derby
a4eecd8041 findImage(const SkGlyph&) -> prepareImage(SkGlyph*)
Because it mutates the glyph.

Change-Id: Ic7ce320350764454d7a76335828d398f19b149d6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223797
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-25 19:36:53 +00:00
Mike Klein
65809146b2 more aarch64 instructions
Change-Id: Iabb9a2357b9279ab6e5a3ee899c5d029d35499e5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223697
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-25 19:33:53 +00:00
Brian Salomon
d628747dfb Make GrColorSpaceInfo store GrColorType.
This is largely redundant with GrPixelConfig. However, we intend to
remove GrPixelConfig.

Bug: skia:7580

Change-Id: I03d92303be832711f7821f8a97d36387c9b04a9f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222883
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-25 14:29:09 +00:00
Jim Van Verth
a885b89831 Use asynchronous routines to build Metal shaders and pipelines for MacOS.
On Mac, Metal will trigger an xpc to a process to compile shaders and
link pipeline programs. Sometimes that process can crash or hang. By using
an asynchronous call with a timeout we can at least recover in this case.

Bug: chromium:974219
Change-Id: I179daa86979b1217458e7be210fccd5edcbffdd0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222884
Reviewed-by: Christopher Cameron <ccameron@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-25 13:48:49 +00:00
Mike Klein
9f4df80fda baby steps for aarch64 support
So far this is just as easy as I had hoped.

Change-Id: I5f69a900b32d9bf70156b55e334233d7376b820f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223340
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-25 13:40:49 +00:00
Herb Derby
7019060abd Introduce mergeGlyphAndImage to SkStrike
This call maintains image invariants while merging in
an image. It replaces much dubious code.

Change-Id: Id57fa1169f8944b2d10063fde983cd9d8256b598
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223303
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-25 13:40:19 +00:00
Brian Salomon
c42eb66451 Trace events in backend texture APIs and GrDataUtils
Bug: chromium:919885
Change-Id: I517afb5817d29ff8082cee63b8cce18f34a8ceac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223339
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-06-25 12:17:53 +00:00
Mike Klein
88c0a90ee5 assemble directly into mmap'd memory
Instead of allocating into a std::vector, we do one quick first pass to
measure how much memory we need to allocate, mmap enough pages for that,
then another real writing pass.

This cuts a microsecond or so off the profile.  There's another
microsecond left to cut if we could eliminate that first measuring pass,
but I'm no longer sure it's easy to come up with a good upper limit on
the program size now that I'm thinking about the data part of the
program as well.

vpshufb is our current max instruction at 9 bytes of code, but that also
implies another 32 bytes of control data.  I'm not sure I feel very
clever allocating 41 * |instructions| bytes to be conservatively safe...
it seems like ridiculous overkill.

Ultimately I found it easier to just measure twice, cut once.

Change-Id: I16ccdafbc789711837b41b3d5a557808798eb1b4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223305
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-25 03:02:28 +00:00
Brian Osman
1a79f0be15 ByteCode: Improved ExternalValue interface
Use float* to match the ByteCode run API (and make the sizing of data
clearer). Add a lane index to all external value calls. My upcoming
overhaul of the particle code needs this, but I wanted to break that
(large) CL up.

Change-Id: I0588cd7769a1dced9f088de5756947bb744c146b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223178
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-25 02:57:24 +00:00
Brian Salomon
e39526b9d9 Trace events in Gr[Vk]Gpu, GrVkCommandBuffer, GrVkCommandPool, and GrVkResoureProvider.
Make existing trace events in GrGpu go direct to TRACE_EVENT0.

Bug: chromium:919885
Change-Id: Ica270125eb614a31860fd3ad4b78178e7bd24296
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223336
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-25 02:57:23 +00:00
Brian Salomon
3a0e8ab85a Trace events in GrVkAMDMemoryAllocator
Bug: chromium:919885
Change-Id: I5a682c69d2467c5f175ee68bfc715d631cbe4d74
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223338
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-25 02:52:18 +00:00
Nigel Tao
1f1cd1f449 Pause Wuffs' getFrameCount in incremental decode
Bug: skia:8235
Bug: skia:8750
Change-Id: I7b8a6a1aba38ba2f16bd184253fbef2a37000cef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223016
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-06-24 20:10:02 +00:00
Jim Van Verth
64b858986b Reland "Prefer using GrOvalOpFactory over GrFillRRect for circles and axis-aligned circular roundrects."
This is a reland of 731454a085

Original change's description:
> Prefer using GrOvalOpFactory over GrFillRRect for circles and
> axis-aligned circular roundrects.
> 
> Bug: chromium:971936
> Change-Id: I4cd0cd9047b9b06d657826820ba5a937547f87c3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221000
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>

Bug: chromium:971936
Change-Id: I8a61cff3e065177a5b2320072b45c1a619970ff6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222794
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-24 20:06:32 +00:00
Brian Salomon
e14cfbec68 Fix GrColorType name for half float RG.
Change-Id: I5428be31367fc85fb1fe4f98f4e7536f17c93f10
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223301
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-06-24 19:49:43 +00:00
Chris Dalton
a1638a527e Rename "preferredInternalSampleCount" to "internalMultisampleCount"
Bug: skia:
Change-Id: If6e0287b3d631f4f3856875d94c84d1ddea44f22
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223279
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-06-24 19:40:12 +00:00
Herb Derby
511dcfc339 Remove getGlyphIDMatrics type calls.
Converting to glyph() style calls that return SkGlyph*. This is mainly preparation
for removing converting findImage(const SkGlyph&) to prepareImage(SkGlyph*).

+ Misc cleanups mainly fWidth -> width() type things.

Change-Id: Id5c9b0ba5856b3ea54353ece4d05fa495cc5a640
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223187
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-24 19:35:01 +00:00
Robert Phillips
d8f79a27b0 Reduce GrCaps' reliance on GrPixelConfig
By itself this CL isn't all that compelling but I believe we need some intermediate path to wean ourselves off of GrPixelConfig. In particular, I believe isFormatTexturable will not need an SkColorType parameter in the future.

This is pulled out of:

https://skia-review.googlesource.com/c/skia/+/222781/ (Add bridge between GrContext::createBackendTexture and SkSurface::MakeFromBackendTexture)

which adds SkSurface::isCompatible - so the SkSurface_Gpu::isCompatible calls have been removed from this CL.

Change-Id: I6c2b8a2c4af98c1437b92c58513f34014e551b2e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223188
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-24 18:29:15 +00:00
Brian Salomon
e7499c7e8a GrColorSpaceInfo stores SkAlphaType.
This means GrSurfaceContext's know their alpha type.
All GrRenderTargetSurfaceContexts are kPremul.

Make GrTextureProducer store GrColorSpaceInfo.

Bug: skia:7580
Change-Id: I5ff321ef52c0edd32e5fac99dff95d44aa66f592
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223184
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-24 17:48:01 +00:00
Mike Klein
2b7b2a2331 add bit_clear
I was just reading the ARM docs and realized that their BIC ("BIt
Clear") is the same as SSE's ANDN ("AND Not") instruction.  It's kind of
a neat little tool to have laying around... comes up more than you'd
think, and it's sometimes the clearest way to express what you're doing,
as in the changed program here where the comment is "mask away the low
bits".  That's a bit_clear with a mask for what you want to clear away!

And the real reason to write this up is that I want to have a CL to
point to that shows how to add an instruction top to bottom.

Change-Id: I99690ed9c1009427b3986955e7ae6264de4d215c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223120
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-06-24 16:31:15 +00:00
Emircan Uysaler
23ca4e7dc5 Enable creating protected vulkan backend
This CL allows user to indicate that they have a protected content in
GrVkBackendContext creation which results in protected CommandPool and Queue
usage.

Bug: skia:9016
Change-Id: I6a478d688b6988c2c5e5e98f18f58fb21f9d26ae
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/210067
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Emircan Uysaler <emircan@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-24 16:04:00 +00:00
Mike Klein
a1167abcae split out Analysis struct from Instruction
Instruction is the fundamental data, and Analysis derived from it.

The fields in Analysis are only* needed in Builder::done(), and this
split seems to help clarify what done() can tweak (Analysis) and what
it cannot (fProgram, Instructions).  done() is now const.

No speed change as far as I can tell.

* As you may notice looking at the test expectations, making analysis
ephemeral means that dump() can no longer print the skull for dead code
or the arrow for hoisted.  The register program that's also in the
expectation file still reflects both of these optimizations, so we're
not really losing any information.  Just maybe less demo-friendly.

Change-Id: I79feb57558525591baf3faadeb59c418c12793f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223119
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-24 16:00:41 +00:00
Mike Klein
1368da07ce embed val_to_reg in Builder::Instruction
Each one of these Instructions has its own register assignment,
so instead of allocating them in a little temporary side vector,
allocate them along with the main Program entries, just like
the other metadata, hoist and life.

No noticeable change in perf.

Change-Id: I3db8c1520d52f5787111b227e6becfef49e5a892
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223118
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-24 15:49:40 +00:00
Mike Klein
0c3346643a refactor to remove the need for death schedule
This cuts the overhead bench from about 19µs to about 15µs.

The key insight here is that the only registers that might become
available after any given instruction are the ones that hold that
instruction's inputs.  We can check when they become available
directly from the original Builder::Program, without needing a
side death schedule data structure.

Marking hoisted instructions as having life == program size
helps make this logic a little simpler to reason through.

Change-Id: Ifb9957f2d0e323e0e5d07996a2cc988f7c8b4c3f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223117
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-24 15:44:10 +00:00
Mike Klein
9c9863f835 split ID -> Reg,Val
This splits the ID namespace into Reg and Val types, hopefully making it
a little easier to follow what's going on, and if we want, allowing us
to size them differently (e.g. val at i32 or i16, reg at i16 or u8).  I
didn't notice any speed change when shrinking either, so I've left them
both at i32 for maximum flexibility.

I played with making these strong typedefs with both structs and enum
classes, but both felt a little awkward.  I'm still open to the idea.

Change-Id: Ie0adf6944ed6254eb21dfdfb59894c4e30476443
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223077
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-24 15:22:30 +00:00
Mike Klein
031a2f52fa simplify instructions back to one immediate
This cuts a field from Builder::Instruction, and also makes the code
easier to follow, I think.  Now d, x, and y are always registers, and
only the final field may be a register z or an immediate.

Change-Id: I33bbe0c6fb8cb96b85f0b0e8c30df3fa4d233c1b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/223076
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-24 15:18:40 +00:00
Derek Sollenberger
91032f8cd7 Fix typo to track sdk level not release property.
Change-Id: I1a0b80d7ed5c0df046ae08aa37f8aacc433e2621
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222818
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
2019-06-24 14:59:18 +00:00
Chris Dalton
6ce447a4ec Eliminate mixed samples as an FBO type or AA type
From now on, sample counts always refer to the number of actual color
samples, and render targets don't have separate color and stencil
sample counts.

If mixed samples support is available when making a
"GrAAType::kCoverage" draw, then an op may attach and use a mixed
sampled stencil buffer internally. But this will all be invisible to
the client.

After this CL, we temporarily won't have a mode to use nvpr with mixed
samples. That will soon be fixed by a follow-on CL that enables nvpr
with mixed samples in the normal "gl" and "gles" configs.

Bug: skia:
Change-Id: I1cb8277f0d2d0d371f24bb9f39cd473ed5c5c83b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221878
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-24 04:08:45 +00:00
Mike Klein
8b5cf82dca add SkVM_Overhead bench, simple improvements
This new bench lets us measure the overhead of program building,
optimization, and JITting.  Surprisingly, at head the optimization in
Builder::done() takes longer than the JIT.

The new bench clocks in around 40µs on my laptop at head,
  then 32µs after switching val_to_reg to be an std::vector,
  then 27µs after switching deaths to be an std::vector too,
  then 22µs after switching fIndex to be an SkTHashMap,
  then 20µs after calling program.reserve(fProgram.size()),
  then 19µs after switching JIT data maps to SkTHashMap too.

I tried swapping some std::vector for SkTDArray to no benefit, actually
a little detriment.  So I think this is roughly all the low-hanging
fruit, with time split now roughly equally between Builder::Done(),
JITting in Program::eval(), and the original calls to Builder
themselves.

Also disable perf dumps on Mac.  No real value there until I can dump a
dylib, and it's just one more thing I have to remember to disable before
running this sort of benchmark.

Change-Id: I1c6e58ed00ac94ad622c7d740712634f60787102
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222984
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-22 18:36:49 +00:00
Mike Klein
6bbeb4ab72 remove xbyak
For now, disable the vpmovusdb AVX-512 instruction, using the compound
AVX2 fallback instead.  I need to learn how to encode EVEX prefixes
before we can use that, and it's not very important.

That's everything!  We're fully in control now, and should be able to
run this on any x86-64 Linux or Mac.  And we can relax some of the
defined(SKVM_JIT) guards so that, e.g., we can unit test Assembler even
on all platforms.

Stifle some warnings about ~bool by ~(int)bool.

Would like to enable when is_mac too but can't seem to get past
(bogus?) thread annotation on the bots.  My local Mac is fine. :/

Change-Id: If00bdd97ebd9684ed109933e2fa70c5e6f6ea339
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222631
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-22 00:16:38 +00:00
Mike Klein
f3881b278e vmovq
Change-Id: Id83573bb7e66c0a6316917ae17abe7f56a172941
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222629
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-21 22:01:14 +00:00
Mike Klein
ae51aa3adf vpmovzxbd
Change-Id: I3ae8b3a6a109f6286dfc28a1c2b8e9aea913bcae
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222626
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-21 21:52:54 +00:00
Mike Klein
120d9e8e18 vmovups, both ways
Change-Id: I6790b59df1e4b4ee9b36b24819586411eff6324d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222623
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-21 21:47:44 +00:00
Mike Klein
060eaaaaef jne
Change-Id: Ie6b033367e24ae92f6e246963f1f014c4d7cf013
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222859
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-21 21:05:27 +00:00
Michael Ludwig
b4580351c7 Fix subset behavior in makeWithFilter.
Most image filters were fixed with just the changes to SkImage::makeWithFilter
and the changes to SkSpecialImage's subset handling (particularly the
raster backend that could read from a bitmap view, or ganesh impls that relied
SkSpecialImage::draw).

The gpu implementation for alpha threshold, blurs, matrix convolutions,
and displacement maps have been updated to account for the special image's
offset when it reads from the backing texture.

Change-Id: I8778aa373e60e9268961305057b2bf6da2bdb3af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221121
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-06-21 21:00:17 +00:00
Herb Derby
9b06f2168d Add API for glyph image data
Move the invariants for glyph image data into SkGlyph.

Change-Id: I1958612bb73cfffe42df19a11c8899048559013b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222876
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-21 19:56:17 +00:00
Mike Klein
04db9c265a vpshufb
Change-Id: If23681e7a34a091cb78e5bd469d71c56b9cf5dc8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222858
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-21 19:52:48 +00:00
Michael Ludwig
ed71b7e779 Handle non-finite quads in attemptQuadOptimization
Bug: chromium:977315
Change-Id: Ia5b734f5c0f0806af0f096de5add880a777c5c25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222793
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-06-21 19:37:48 +00:00
Mike Klein
e505341a24 vbroadcastss
This shows off a little how easy backwards-only labels are.

The rip == rbp + Mod::Indirect convention isn't something
you'd be able to guess without just looking at the docs.

I'm not actually sure if you can only use rbp or also r13,
but LLVM seems to always do the equivalent of rbp... might
just be that high bit in VEX is ignored: they're registers
5 and 13, 8 apart, only distinguished by that bit.

Convenienly RIP addressing is always 32-bit, so there's
no benefit to spending time checking whether the offset
fits in a byte, though most of our offsets would.

Change-Id: I01b7fb1500667e1bf98490d5144459f92e1b375d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222857
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-21 19:28:37 +00:00
Mike Klein
893403fb38 clarify can-we-call-JIT logic
I think this makes the relatioship between mask and entry clearer?
Can't have JIT code handle >0 elements unless that JIT code itself
exists.

Change-Id: I238d54a5084c7f90bd32c83db5423840cf415b17
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222856
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-21 18:53:17 +00:00
Mike Klein
244ba5550b rearrange who mprotects
This moves the responsibility for allocating executable code out of
Assembler.  The pages Xbyak uses are obviously executable, so this is
redundant right now, but it'll let us switch to something simple like
std::vector<uint8_t> as we continue to cut out Xbyak.

Make how Program holds its cached JIT program slightly less of a mess.

Change-Id: I38d6f01006da1da60f4aed675e9ddf97de9aec52
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222575
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-21 18:40:47 +00:00
Herb Derby
3e8e34e944 Start using new APIs for bounds and glyph lookup
Change-Id: I2fa8048b95a48e61c33223257880c2ce8414a5e5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222507
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-21 15:58:41 +00:00
Nathaniel Nifong
0426c38daa Reland "Deserialize MultiPictureDocument based SKP files (with image sharing proc) in wasm debugger."
This is a reland of 7635013ad1

Original change's description:
> Deserialize MultiPictureDocument based SKP files (with image sharing proc) in wasm debugger.
> 
> Change-Id: I73affae3cd05a2aa6ac1c75c8e049d352bbf3a85
> Bug: 9176
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/217135
> Commit-Queue: Nathaniel Nifong <nifong@google.com>
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Reviewed-by: Kevin Lubick <kjlubick@google.com>

Bug: 9176
Change-Id: Ifef1ff45ac0013ba3015f88c7ecd75527b28b604
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222505
Commit-Queue: Nathaniel Nifong <nifong@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2019-06-21 15:49:21 +00:00
Brian Osman
8676929c0a ByteCode: Faster eval in getLocation, add safety for double side-effects
Change-Id: I4d1a102264d8c97bf9120c3891d569ef96a92922
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222782
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-21 15:39:21 +00:00
Mike Klein
62392726b7 rearrange code,data -> data,code
By putting data first in descending alignment then code, we never need
any alignment padding.

This also makes all jumps and ip-relative data loads backward, so
they're really easy to assemble.  No need for any sort of deferred
where-does-this-label-mean logic; the label can just be a simple byte
offset established before you need to use it.

Nothing new switched off of Xbyak in this CL, but the rearrangement
makes the rest a lot easier.

The one downside I've found so far is that the disassembly of the
first instruction can get confused into data or other instructions,
e.g.

  63:   01 ff                           add    %edi,%edi
  65:   00 ff                           add    %bh,%bh
  67:   00 00                           add    %al,(%rax)
  69:   ff 00                           incl   (%rax)
  6b:   ff c4                           inc    %esp
  6d:   e2 7d                           loop   ec <skvm-jit-884702985+0xac>
  6f:   18 05 eb ff ff ff               sbb    %al,-0x15(%rip)        # 60 <skvm-jit-884702985+0x20>
  75:   c4 e2 7d 18 0d e6 ff ff ff      vbroadcastss -0x1a(%rip),%ymm1        # 64 <skvm-jit-884702985+0x24>
  7e:   c4 e2 7d 18 15 e1 ff ff ff      vbroadcastss -0x1f(%rip),%ymm2        # 68 <skvm-jit-884702985+0x28>

There are 3 vbroadcastss instructions here, each starting with c4 e2 7d
18, but the first has been disassembled as if its c4 were part of the
last data entry (0xff00ff00) as inc %esp.

Probably not a big deal for now, particularly since those vbroadcastss
are all outside the loop and never show up on a profile.  If it gets too
confusing I think we can dump the programs starting from the beginning
of the code instead of from the data; we won't be able to inspect the
data, but everything should disassemble perfectly.

Change-Id: I0cc864359fd0740fc026070eaf2b6cb130783a57
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222574
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-21 15:38:41 +00:00
Brian Osman
4b202a3ba9 ByteCode: Better signature for innerRun, avoid memory stomping
This centralizes the initial-lane-mask logic, and makes the return value
copying much more straightforward by just passing in the width. Lets us
shrink the arrays in the interpreter pipeline stage to the correct size.

Also normalize some formatting and structure.

Change-Id: I446598dcdd550d88ff1db1afe7507f31fa96d1d7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222510
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-21 14:19:35 +00:00
Herb Derby
7924d9a4ae Simplify intercepts
Introduce textBlobToGlyphRunListWithoutRSX to convert text blob into
glyph runs. Convert the core of the code from working over text blobs
to working over glyph runs.

+ Misc cleanups

Change-Id: I33c1fc5e948dd7270031496325a96409f2cfeeb6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222277
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-21 14:12:15 +00:00
Brian Osman
d3494ede8d ByteCode: Support out params in local function calls
Change-Id: I1d133259264adfdc872b0f4aeaa9390363c46341
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222040
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-21 13:55:15 +00:00
Robert Phillips
82774f8bad Cleanup some legacy instantiate calls
Since explicit resource allocation has stuck these instantiate calls are no longer required.

Change-Id: I5a8a7fa714eb1e9550f4f645ce8fced2d5f7aa4e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222457
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-21 12:31:24 +00:00
Mike Klein
5549cb00a2 semaphore_wait() until KERN_SUCCESS
Like the Posix code below it, the Mac semaphore wait code
can wake spuriously.  Keep trying if we get KERN_ABORTED.

Pattern aped from V8.  I noticed they like us don't do
anything to test if the Windows WaitForSingleObject()
call fails.  Can it fail?

Bug: chromium:977341
Change-Id: I34f407fc4d6717deb6edcf7aa7bed1f8fb8b1baa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222583
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-20 23:30:06 +00:00
Mike Klein
0c64a54517 two register ops
This wraps up everything that doesn't touch memory or a label.

Small cleanups and refactoring as I start to understand some
things better...

Change-Id: I788fa877cfcab8f87c961df28fe561b51a5c62ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222571
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-20 21:30:46 +00:00
Mike Klein
ff0ae81e74 two register + immediate ops
The encoding kind of all goes through the same paths,
as the three argument instructions, but like the nursery
rhyme when there are only two they kind of all roll over
and the op-extension hops into the bed.

vpermq is the first place we need to set the W bit
to indicate a 64-bit lane operation, so a little
minimal plumbing for that.  It takes its arguments
a little differently too, passing dst where you'd
expect, the source where we'd pass y, and requiring
us to pass literal 0000 for the vvvv bits in VEX
(inverted as normal to literal 1111).

Change-Id: I91a4cd1b316eb908992631ce8b2cb3c62078e8c6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222565
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-20 21:25:16 +00:00
Mike Klein
74ad844086 remaining 3-reg ops
Somewhat arbitrarily switched from vandps et al. float bitwise
ops to vpand et al. int bitwise ops.  We tend to use them more
int-y generally so the disassembly maybe reads more clearly?
They're identical in behavior AFAIK.

Shuffle tmp around from being an Xbyak::Ymm to its index.

I don't think there's anything tricky here.  Spookily things
all seem to work first try, as long as I don't make a typo.

Change-Id: I2b5d4ded7800915824cbd7c917edfd36e229d306
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222528
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-20 21:14:39 +00:00
Stephen White
1e5c05e99f Revert "GPU: always use TopLeft origin for saveLayer render targets."
This reverts commit 6f24faa623.

Reason for revert: larger impact on GMs than expected

Original change's description:
> GPU: always use TopLeft origin for saveLayer render targets.
> 
> Should have no user-visible result.
> 
> Change-Id: Iae444888557347bfdf75e6353966cde907ee0a1e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222506
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Stephen White <senorblanco@chromium.org>

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

Change-Id: Ic8217206adfbd7d506a70c3d9ca828f0dde58c66
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222509
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-06-20 20:28:57 +00:00
Jim Van Verth
bcfd0535d0 Fix ASAN issue.
The bufferAllocator was being unref'ed before the SkSpinlock went out
of scope, so the spinlock was then using deleted memory.

Bug: skia:8243
Change-Id: I69f090acccaaa3ba7fe2e4190103019a6f4e9359
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222503
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-06-20 20:17:12 +00:00
Brian Osman
ecb3bb53ac ByteCode: Fixes for TRACE
Change-Id: I6b709a2b5e8014cedb152e763ea4470c6f79de4b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222504
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-06-20 19:41:19 +00:00
Stephen White
6f24faa623 GPU: always use TopLeft origin for saveLayer render targets.
Should have no user-visible result.

Change-Id: Iae444888557347bfdf75e6353966cde907ee0a1e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222506
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-06-20 19:40:10 +00:00
Brian Osman
fba386b940 ByteCode: Allow calls to functions that return void
Change-Id: Ia2e21bc984c509cd2405499f93ee5e19941cc492
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222499
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-20 19:29:40 +00:00
Jim Van Verth
d1b2c85dca Revert "Prefer using GrOvalOpFactory over GrFillRRect for circles and"
This reverts commit 731454a085.

Reason for revert: Seeing a lot of performance regressions.

Original change's description:
> Prefer using GrOvalOpFactory over GrFillRRect for circles and
> axis-aligned circular roundrects.
> 
> Bug: chromium:971936
> Change-Id: I4cd0cd9047b9b06d657826820ba5a937547f87c3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221000
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>

TBR=jvanverth@google.com,csmartdalton@google.com,khushalsagar@chromium.org

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

Bug: chromium:971936
Change-Id: Iab803b1777ef5e3d754d8ac1f404b01f57d9c1a8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222501
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-20 19:11:50 +00:00
Greg Daniel
52ee5f6753 Add FormatInfo struct to GrGLCaps.
Just landing the initial struct before adding specific flags to the struct
and filling out the formats.

Bug: skia:6718
Change-Id: I1013845cb61482184915d181a7fc7f85800b72c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222498
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-20 18:37:39 +00:00
Mike Klein
397fc88fc0 first VEX ymm vector ops
- 32x8 i32 add,sub,mul
   - add I32_Naive bench/test builder to get better i32 mul coverage
   - minor refactoring all over

Change-Id: I13cc19ff37a2da0bcff289ba51baac08f456d6c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222485
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-20 18:20:00 +00:00
Mike Reed
3fd3cc94c3 runtime shaders
This extends the runStriped to all for return data.
GPU impl not done yet, will be done in a follow-on CL.

Change-Id: Ib107d2945f6fdb34ce1b5405a6c88a5ae7e9f7ac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221539
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-06-20 17:11:05 +00:00
Jim Van Verth
bbf85f951c Switch Metal dynamic buffer allocations to use a ring buffer.
Buffer creation is a big hit on Metal. This allows us to recycle more
of the buffer.

Bug: skia:8243
Change-Id: If2e3b13d8175dfe370bd61771af0a59cce277340
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221120
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-06-20 17:09:44 +00:00
Brian Salomon
f30b1c1bd5 Revert "Revert "Make SkASSERT not break build in constexpr GrSwizzle method on GCC""
This reverts commit 27239e456a.

Revert "Revert "Add function to GrDataUtils to handle color conversions.""

This reverts commit c34d993b62.

Change-Id: Iac1bdaa6f8380e63bbb87394e7fca96808572131
Bug: skia:8962
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222039
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-20 16:56:15 +00:00
Mike Klein
df465e206e forward-declare Program::Instruction
I'm getting tired of having changes to SkVM.h trigger
383 build targets, now 13.  No other reason.

Change-Id: I12b637e68db409ede9c0c5be74fcca66cca32505
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222479
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-06-20 16:14:41 +00:00
Robert Phillips
6b973876ba Fix up wacky_yuv_formats GM and GL caps
This CL:
  enables the Y416 row (i.e., uses RGBA_16161616)
  spruces up the GL caps configuration of R16, RG16, RGBA16 and RG16F

Change-Id: I405c5acaf3f31b7ab0e9797e6f5df1d4c41d70d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220535
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-20 15:58:34 +00:00
Greg Daniel
2c3398dc26 Switch from querying swizzle on caps to using swizzles stored on proxies.
Change-Id: I03f4a3affd6dda7a83bee8eec768dcaa93a6b801
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220534
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-20 13:38:05 +00:00
Robert Phillips
b520476ee6 Swap GrSurfaceProxy over to being held via sk_sp
This CL:
   replaces GrProxyRef with sk_sp
   streamlines GrIORefProxy to be more like SkRefCntBase (i.e., move the fTarget pointer to GrSurfaceProxy)

Change-Id: I17d515100bb2d9104eed64269bd3bf75c1ebbbb8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221997
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-20 11:43:45 +00:00
Michael Ludwig
e08b443f9b Make rt bounds dependent on stencil settings for quad optimizations
Before the the consolidation to the internal drawFilledQuad(),
regular draws would use the logical rt bounds to decide if it can be
a fullscreen clear. Stencil rect draws would use the worst case bounds
(needed to pass GrDefaultPathRendererTest).

Initially, the new drawFilledQuad() switched to always using the worst
case bounds to determine fullscreen clears. Since stencil rect draws
used drawFilledQuad(), this was necessary for the path renderer tests to
pass. But this had the side effect of making render targets with approx.
backing storage no longer perform fullscreen clears when a draw would
otherwise cover the logical bounds of the render target.

Normally, this would only be a performance issue, but it also seems to
have exposed a driver bug in the Nexus 5x on Vulkan where the draws
didn't properly fill the backing store. Having attemptQuadOptimization()
choose its rt bounds based on the presence of stencil settings keeps
both tests happy and increases the likelihood of using fullscreen clears.

Change-Id: I6df2c789211f32a4c94bee394d27b7fb4f7293e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222278
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-19 23:05:34 +00:00
Greg Daniel
46e61805c3 Revert "Remove gpu config fallback in onMakeColorTypeAndColorSpace."
This reverts commit 1fb0874af5.

Reason for revert: maybe breaking chrome roll.

Original change's description:
> Remove gpu config fallback in onMakeColorTypeAndColorSpace.
> 
> If the client is asking for a specific colorType for a GPU image it seems
> wrong to give them one they didn't ask for.
> 
> Change-Id: I65bcdfcb0f744458e2162fe266c08bd3c8fb5a85
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222176
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Change-Id: If3469e45d03471af126605072f4d6debec7101b6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222038
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-19 20:46:42 +00:00
Herb Derby
71f2eb7d10 Add bounds accessors to SkGlyph
Change-Id: I9132b98a9c5ef14a6679de381aec5d9807f84e14
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222037
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-19 20:38:50 +00:00
Brian Osman
2b1a544fa0 Reland "Reland "Reland "Interpreter: Support striped inputs for less overhead"""
This reverts commit 01c9b89a85.

Change-Id: Ibe2184043f5aee1a252e9a693eb88dab3ed6ca65
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222100
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-19 20:24:50 +00:00
Greg Daniel
1fb0874af5 Remove gpu config fallback in onMakeColorTypeAndColorSpace.
If the client is asking for a specific colorType for a GPU image it seems
wrong to give them one they didn't ask for.

Change-Id: I65bcdfcb0f744458e2162fe266c08bd3c8fb5a85
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222176
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-19 19:24:49 +00:00
Stephen White
d523a06516 Change samplerVariable() to return a const char *.
This allows backends to use an expression rather than a variable for
sampler access.

Change-Id: I2346ac418c8d6277416a4430e2eaf6ab3ffee0a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222036
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-06-19 18:56:09 +00:00
Michael Ludwig
613282042d Reland "Consolidate quad optimizations into single internal function."
This reverts commit 7694b90eb0.

Reason for revert: suppression: https://chromium-review.googlesource.com/c/chromium/src/+/1666472
Original change's description:
> Revert "Consolidate quad optimizations into single internal function."
>
> This reverts commit 646616a78f.
>
> Reason for revert: Suspected as cause of layout test changes.
>
> Original change's description:
> > Consolidate quad optimizations into single internal function.
> >
> > Routes all non-textured quad draws through single internal function
> >
> > Change-Id: Ief66864a0ad2d598982c5bf500c8a84ecbf84387
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/215455
> > Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
>
> TBR=robertphillips@google.com,michaelludwig@google.com
>
> Change-Id: I0dc6a0d948c0f5e9221ff6c9fbbbbbb9bc3d9bc0
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221737
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I4e5d39d603d32b18c48db291fb1650fe33e9ba11
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222096
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-06-19 18:26:10 +00:00
Herb Derby
d2a188701c Update getAdvances for using a mutex
I'm hoping to have a few pinch points that will actually hold a mutex.
The call getAdvances uses to get glyphs, called metrics(), is one of them.

+ Update some call sites to use the new glyph() call.

Change-Id: I04158e200db43758fe6d33337e5d1137f197a5b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221777
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-19 17:41:45 +00:00
Brian Osman
01c9b89a85 Revert "Reland "Reland "Interpreter: Support striped inputs for less overhead"""
This reverts commit 59b22f9297.

Reason for revert: ios

Original change's description:
> Reland "Reland "Interpreter: Support striped inputs for less overhead""
> 
> This reverts commit 2c59b4e9ea.
> 
> Change-Id: I2b06936994430722b8fc3890ff9b4a6f4710db04
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221998
> Reviewed-by: Brian Osman <brianosman@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

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

Change-Id: I321d257e400f5df3c6115dfe9aa18a2794a95910
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222099
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-19 15:37:17 +00:00
Brian Osman
8d56457f77 ByteCode: Fix subtle bug with nested loops and lanes re-activating
When starting a nested loop, we can't rely on the condition mask to keep
dead lanes dead, because of conditional breaks/continues that may have
happened earlier. So always narrow the loop mask by inheriting the
previous one.

Change-Id: I5bb076e6467fe1b6a2f682a590e8ae972a440b03
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/222098
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-19 15:28:05 +00:00
Mike Klein
d3e75a7a1c add(GP64 dst, int imm)
Change-Id: I6aaa1dc3ff3a9529f87ff58a2ae1fc5f59bc626b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221653
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-19 15:10:35 +00:00
Mike Klein
948045d1a5 make registers a little less verbose to work with
Change-Id: I92c6027e16af19112a5497854f1085715cc38e3d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221652
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-19 14:36:12 +00:00
Mike Klein
61703a643d first interesting instruction, sub(GP64,imm)
Change-Id: I89618ec826f54a24fce8ac5fa61ab27e8ec7d5c2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221651
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-19 14:19:12 +00:00
Mike Klein
056420428d Reland "extract Assembler so it can be tested"
This is a reland of a224fc1105

Changes since original:

  - switch fJIT_K to less error prone fJITMask
  - guard fJIT Assembler Program member with SKVM_JIT

Not really sure why the mips64el-Debug bot's compiler is crashing;
it does at least make sense to crash where it does... the file
includes SkOpts.h which includes SkVM.h.

If no reasonable code transformation can get it working again
I'll remove the bot.  The -Release version is fine, and mips64el
is one of those things I'd happily flush if it blocks progress.

In this end I think all this SKVM_JIT and Xbyak stuff should
go away and make things simple again, hopefully too simple to
crash GCC.  :|

Original change's description:
> extract Assembler so it can be tested
>
> And start documenting some structs we'll need
> to replace xbyak.
>
> Change-Id: I21c91642799a54e10af85afc8edbe12a9b4aa062
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221644
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SK_CPU_LIMIT_SSE2,Build-Debian9-GCC-mips64el-Debug
Change-Id: I6d7c27bc758b23c164ee67067cdfacc291e289fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221983
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-19 13:57:22 +00:00
Brian Osman
59b22f9297 Reland "Reland "Interpreter: Support striped inputs for less overhead""
This reverts commit 2c59b4e9ea.

Change-Id: I2b06936994430722b8fc3890ff9b4a6f4710db04
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221998
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-19 13:47:12 +00:00
Greg Daniel
48fec763d4 Rename GrColorType::kRGB_565 to kBGR_565
All our other color types put the low bits as the first component in the
name. For 565 B is the low bits and R is the high bits so the name is being
updated to reflect that.

Bug: skia:9170
Change-Id: I67be32440d6c6fa8a345532fe144720d23cf340a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221337
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-06-19 00:52:05 +00:00
Brian Osman
2c59b4e9ea Reland "Revert "Interpreter: Support striped inputs for less overhead""
This reverts commit edc42b9971.

Reason for revert: Sigh

Original change's description:
> Revert "Revert "Interpreter: Support striped inputs for less overhead""
> 
> This reverts commit 645fe10313.
> 
> Change-Id: If74a15479f89f49ac33c0b6241bb0db92bc11083
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221721
> Reviewed-by: Mike Klein <mtklein@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

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

Change-Id: I651d56821bbde8b91887aa885bcf2cb202707388
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221897
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-19 00:19:37 +00:00
Robert Phillips
e5f73281f9 No longer forward refs and unrefs from the GrSurfaceProxy to the backing GrSurface
This is setting up for GrIORefProxy to just become SkRefCnt and GrProxyRef to just become sk_sp.

Change-Id: Ica66565a353de980a7070e0788f1f2b17565baee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220297
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-19 00:01:51 +00:00
Brian Osman
064729e439 Implement program binary caching in ES2 (with GL_OES_get_program_binary)
Change-Id: I6f9ee51f7c063ca03bf48fccd413dae244edd191
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221778
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-18 23:49:11 +00:00
Herb Derby
d42692d329 Cleanup findOrCreateScopedStrike
This does not need to repeat the code of the version that returns a Node*.

Change-Id: I3c67e3848ba4772cc63b71b78ad29f93fd479956
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221722
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-18 22:31:41 +00:00
Brian Osman
edc42b9971 Revert "Revert "Interpreter: Support striped inputs for less overhead""
This reverts commit 645fe10313.

Change-Id: If74a15479f89f49ac33c0b6241bb0db92bc11083
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221721
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-18 22:30:11 +00:00
Daniel Hosseinian
a3b86124a8 Remove use of hb_subset_input_set_drop_layout() from SkPDFSubsetFont.cpp
Remove the calling of a deprecated HarfBuzz function. The current use of
HarfBuzz's subsetter calls a deprecated symbol:
hb_subset_input_set_drop_layout(). The change with the deprecation can
be found at [1]. Instead, HarfBuzz disables layout by default, as
indicated by the comment found at [2], rendering the calling of the
function unnecessary in Skia.

[1] 0ff3618c2d (diff-e34a949604c500d3a2aeaafa06cf7d96L142)

[2] https://github.com/harfbuzz/harfbuzz/blob/master/src/hb-subset-input.cc#L55

Bug: chromium:931719
Change-Id: I530e2257d49a6aeb2164bdc2a0358a998d62591f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221411
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
2019-06-18 21:33:10 +00:00
Mike Klein
6b7c9d95f5 Revert "extract Assembler so it can be tested"
This reverts commit a224fc1105.

Reason for revert: breaking x86-64 bots without AVX2, e.g. Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Release-All-SK_CPU_LIMIT_SSE2

Original change's description:
> extract Assembler so it can be tested
> 
> And start documenting some structs we'll need
> to replace xbyak.
> 
> Change-Id: I21c91642799a54e10af85afc8edbe12a9b4aa062
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221644
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

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

Change-Id: Ie90d57f66e4d45f94db4ab4f485155533faddae1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221655
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-18 21:24:41 +00:00
Brian Salomon
7694b90eb0 Revert "Consolidate quad optimizations into single internal function."
This reverts commit 646616a78f.

Reason for revert: Suspected as cause of layout test changes.

Original change's description:
> Consolidate quad optimizations into single internal function.
> 
> Routes all non-textured quad draws through single internal function
> 
> Change-Id: Ief66864a0ad2d598982c5bf500c8a84ecbf84387
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/215455
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: I0dc6a0d948c0f5e9221ff6c9fbbbbbb9bc3d9bc0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221737
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-18 21:00:32 +00:00
Robert Phillips
66a46033a6 Add Ganesh support for RGBA_16161616 and RG_half (take 2)
TBR=egdaniel@google.com
Bug: skia:9171
Change-Id: I862c87ba4bd55381b347333cf9ca23cf5389dff6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220816
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-18 19:05:04 +00:00
Mike Klein
a224fc1105 extract Assembler so it can be tested
And start documenting some structs we'll need
to replace xbyak.

Change-Id: I21c91642799a54e10af85afc8edbe12a9b4aa062
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221644
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-18 19:04:44 +00:00
Brian Osman
645fe10313 Revert "Interpreter: Support striped inputs for less overhead"
This reverts commit 5d89b66ff6.

Reason for revert: Chrome roll

Original change's description:
> Interpreter: Support striped inputs for less overhead
> 
> Change-Id: I8c7bd5ed3fb6aebbfb1c5c224acfd73862252621
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220778
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Reed <reed@google.com>

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

Change-Id: I2275e7ed12031e58e59b6618d0ea59bec2ee2815
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221716
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-18 18:43:47 +00:00
Michael Ludwig
646616a78f Consolidate quad optimizations into single internal function.
Routes all non-textured quad draws through single internal function

Change-Id: Ief66864a0ad2d598982c5bf500c8a84ecbf84387
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/215455
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-06-18 18:20:09 +00:00
Jim Van Verth
6b6008a7d1 Minimize renderstate changes and vertex buffer rebinding.
We were resetting the vertex buffer state after every draw, even if
the vertex buffer hasn't changed. This addresses that. It also sets
certain renderstate at renderencoder creation -- again, rather than
at every draw.

Bug: skia:8243
Change-Id: I053e150c289c14b60385f555a8b4b771a131ea06
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221336
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-06-18 18:17:07 +00:00
Greg Daniel
2c19e7f100 Reland "Store GrSwizzle on proxies for texturing and swizzling."
This reverts commit 3ec1f54750.

Reason for revert: Relanding with GrSwizzle now back in src

Original change's description:
> Revert "Store GrSwizzle on proxies for texturing and swizzling."
>
> This reverts commit 23093135d1.
>
> Reason for revert: Breaking Google3 :(
>
> Original change's description:
> > Store GrSwizzle on proxies for texturing and swizzling.
> >
> > Bug: skia: 6718
> > Change-Id: I023d7507da9334e984ac8209a32323d616b3d79d
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/214305
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
>
> TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com
>
> Change-Id: Ie2303ad090f58de07db7b0ac2d42e06e5e5bbcc1
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia: 6718
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221338
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I42ad83892382b123b8dc4dc5e2cf375ad3c5eaeb
Bug: skia: 6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221349
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-18 18:15:04 +00:00
Mike Klein
c6438c0b7f start excising xbyak
I'm hoping to remove xbyak bit by bit, like the ship of Theseus
or some petrified wood, leaving a functioning homegrown JIT.

This starts with some of the easier instructions, still using
xbyak to accumulate the code buffer, just with db() directly.

  - ret
  - vzeroupper
  - align with noops

Change-Id: I9443bc5191cb1d75b8871d174ccf15ac7e96e9a5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221613
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-18 17:31:45 +00:00
Ben Wagner
8755b74841 Remove SK_IGNORE_MAC_BLENDING_MATCH_FIX.
This flag is no longer set by any users, so remove it now that baselines
have been updated.

Change-Id: Ib952a93c16a6ca65d89a2009e9732c6339d83f9f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221542
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-06-18 15:54:45 +00:00
Brian Osman
5d89b66ff6 Interpreter: Support striped inputs for less overhead
Change-Id: I8c7bd5ed3fb6aebbfb1c5c224acfd73862252621
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220778
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-06-18 15:53:05 +00:00
Brian Osman
fb32ddf622 Revert "Revert "Shuffle SkSL sources around so compiler and bytecode can be used w/o GPU""
This reverts commit 37a59ef1af.

Change-Id: If38da265ebbb196e72c7d035ba51028438787e2e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221541
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-18 14:47:12 +00:00
Greg Daniel
f91aeb259e Move a bunch of gpu files out of include/private and into src/gpu.
In GrRecordingContext I moved the auditTrail onto the heap and only there
when compiling for tests. This allowed us to move a lot of files out of
include private.

Change-Id: Ib76ac211c0c6fd10bacaccf0c5f93f21a59f35d5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221344
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
2019-06-18 14:24:42 +00:00
Robert Phillips
c34d993b62 Revert "Add function to GrDataUtils to handle color conversions."
This reverts commit 5509102043.

Reason for revert: valgrind issues

Original change's description:
> Add function to GrDataUtils to handle color conversions.
> 
> Like SkConvertPixels but knows about all GrColorTypes, origin, and can
> apply an arbitrary GrSwizzle.
> 
> Use in GrSurfaceContext read/write pixels methods.
> 
> Add support for '0' to GrSwizzle.
> 
> 
> Change-Id: Ib9dd215fcb0ee8b33c4020893c22b4ab7ce1f40b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220761
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

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

Change-Id: If50f3e26875787d9309009e9c701774fbad0afda
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221538
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-18 11:57:28 +00:00
Robert Phillips
27239e456a Revert "Make SkASSERT not break build in constexpr GrSwizzle method on GCC"
This reverts commit 2935638a1b.

Reason for revert: valgrind errors

Original change's description:
> Make SkASSERT not break build in constexpr GrSwizzle method on GCC
> 
> Change-Id: I042b90e7c405505447662e6d187ca1519efd4743
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221342
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I6bc0f8f84212e3ce53f4d2198c4369db7f08ea3f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221537
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-18 11:54:57 +00:00
Robert Phillips
37a59ef1af Revert "Shuffle SkSL sources around so compiler and bytecode can be used w/o GPU"
This reverts commit 90507286cc.

Reason for revert: Seems to be breaking some builds

Original change's description:
> Shuffle SkSL sources around so compiler and bytecode can be used w/o GPU
> 
> Change-Id: I7236a30040ab532086e68d6e9de2898dd7acaa32
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221098
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>

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

Change-Id: Ie230315a72ebcfae32bc9ce7bafec1f87106cff2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221536
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-06-18 11:35:18 +00:00
Ben Wagner
c6628127dc Correctly call SkFontMgr_DirectWrite constructor.
The passed localeName and defaultFamilyName and associated lengths are
expected to include the terminating NULL (mostly due to the way LOGFONT
and GetUserDefaultLocaleName are defined). This implies that in the case
where these values cannot be retrieved the empty string should be
passed.

Bug: chromium:973361
Change-Id: I0ac98f5250e1cb2d7fa426b255c5e2c2619dc51c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221417
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-18 07:23:56 +00:00
Herb Derby
9c71e7be10 Remove all global mutexes
Remove the SkBaseMutex (and SkBaseSemaphore). This allows all the thread
annotation machinery to work.

Change-Id: I2da420ec3165ccbcd90c474c0b62bfef42df2a53
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221340
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-18 00:39:15 +00:00
Mike Klein
7a177b4d21 centralize and force-inline unaligned_{load,store}
We've got slightly different implementations of unaligned_load(), and
that's causing a x86 Chromium Debug builds to go a bit haywire.  A
single best implementation with an SK_ALWAYS_INLINE and explanation
should help things.

Might as well move its companion unaligned_store() too.

Bug: chromium:974542
Change-Id: If9f3eb4d33bfb8390c661f9e196122da0b9b84ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221409
Reviewed-by: Nico Weber <thakis@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-18 00:03:45 +00:00
Chris Dalton
1e6c5b8dee Add a "preferredInternalSampleCount" cap
This new cap tells Ganesh how many samples to use when performing
internal draws with MSAA or mixed samples. The default is always 4x,
but the client can change that with
GrContextOptions::fPreferredInternalMSAASampleCount.

Also adds a command line flag to viewer to control
fPreferredInternalMSAASampleCount.

Bug: skia:
Change-Id: Iba369273e802aa1bee796b576b3c18af347b0494
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221156
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-06-17 23:47:59 +00:00
Mike Reed
4b203ad7ac add motion blur params to skottie2movie
--motion_angle ... [default is 180]
--motion_samples ... [default is 1, for no motion blur]

Change-Id: Iec0f31655b3369f51e0b398efb2d5b156dcbaf2e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221416
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-06-17 23:13:16 +00:00
Brian Osman
90507286cc Shuffle SkSL sources around so compiler and bytecode can be used w/o GPU
Change-Id: I7236a30040ab532086e68d6e9de2898dd7acaa32
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221098
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-17 21:16:18 +00:00
Brian Salomon
2935638a1b Make SkASSERT not break build in constexpr GrSwizzle method on GCC
Change-Id: I042b90e7c405505447662e6d187ca1519efd4743
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221342
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-17 20:43:13 +00:00
Brian Salomon
5509102043 Add function to GrDataUtils to handle color conversions.
Like SkConvertPixels but knows about all GrColorTypes, origin, and can
apply an arbitrary GrSwizzle.

Use in GrSurfaceContext read/write pixels methods.

Add support for '0' to GrSwizzle.


Change-Id: Ib9dd215fcb0ee8b33c4020893c22b4ab7ce1f40b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220761
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-17 19:31:57 +00:00
Brian Salomon
3ec1f54750 Revert "Store GrSwizzle on proxies for texturing and swizzling."
This reverts commit 23093135d1.

Reason for revert: Breaking Google3 :(

Original change's description:
> Store GrSwizzle on proxies for texturing and swizzling.
> 
> Bug: skia: 6718
> Change-Id: I023d7507da9334e984ac8209a32323d616b3d79d
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/214305
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Change-Id: Ie2303ad090f58de07db7b0ac2d42e06e5e5bbcc1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia: 6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221338
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-17 17:55:16 +00:00
Greg Daniel
23093135d1 Store GrSwizzle on proxies for texturing and swizzling.
Bug: skia: 6718
Change-Id: I023d7507da9334e984ac8209a32323d616b3d79d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/214305
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-06-17 17:04:48 +00:00
Jim Van Verth
731454a085 Prefer using GrOvalOpFactory over GrFillRRect for circles and
axis-aligned circular roundrects.

Bug: chromium:971936
Change-Id: I4cd0cd9047b9b06d657826820ba5a937547f87c3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221000
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>
2019-06-17 16:32:47 +00:00
Mike Klein
71c24f31b8 slightly better handrails
Make sure we're using five or fewer arguments.

Today all programs use one or two arguments, so this doesn't
really have any immediate effect, but it should be there.

Change-Id: Ia85e56ef63ceb442702546c402cd11a13daa2c25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221270
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-06-17 15:43:28 +00:00
Mike Klein
342b1b2753 proposed: add bytes() op
I'm staring at this assembly,

	vmovups	(%rsi), %ymm3
	vpsrld	$24, %ymm3, %ymm4
	vpslld	$16, %ymm4, %ymm15
	vorps	%ymm4, %ymm15, %ymm4
	vpsubw	%ymm4, %ymm0, %ymm4

Just knowing that could be

	vmovups	(%rsi), %ymm3
	vpshufb	 0x??(%rip), %ymm3, %ymm4
	vpsubw	%ymm4, %ymm0, %ymm4

That is, instead of shifting, shifting, and bit-oring
to create the 0a0a scale factor from ymm3, we could just
byte shuffle directly using some pre-baked control pattern
(stored at the end of the program like other constants)

pshufb lets you arbitrarily remix bytes from its argument and
zero bytes, and NEON has a similar family of vtbl instructions,
even including that same feature of injecting zeroes.

I think I've got this working, and the speedup is great,
from 0.19 to 0.16 ns/px for I32_SWAR, and
from 0.43 to 0.38 ns/px for I32.

Change-Id: Iab850275e826b4187f0efc9495a4b9eab4402c38
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220871
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-06-17 15:29:34 +00:00
Mike Reed
51cae01fd7 cache sksl in runtime colorfilter
With the modified gm, the time (on imac pro) goes from 2.4 to 1.6

Change-Id: I9f940220c129f74771f3b17126657bcf3739044f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221176
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-06-17 14:41:08 +00:00
Derek Sollenberger
11b34d967b Restrict workaround for Adreno 3xx series to pre-Android O.
This is based on an external upload request on AOSP
https://android-review.googlesource.com/c/platform/external/skia/+/979577

Change-Id: Ib5635da591115d587af9fa2c72c3b4f54e852cfc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221002
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-06-17 13:44:56 +00:00
Herb Derby
3721688f64 Make fMaskFormate private
Change-Id: I20e652f2b6f9bf606b03c6dd4e346c3439ea8a0b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220876
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-06-15 00:56:48 +00:00
Brian Osman
d30e039d07 Fix SkSL standalone build
Change-Id: I66713976f08b1dbf0966d9a901f666b9f834b659
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/221096
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-06-14 18:33:35 +00:00
Brian Salomon
6c1205a900 Avoid using GrGpu::readPixels in GrTestingBackendTextureUploadTest.
Change-Id: Ic7ba918177f6f5cc35da713cf063c467bd7a7908
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220999
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-06-14 17:15:11 +00:00
Brian Osman
08a8496135 Interpreter: Simplify interface quite a bit.
Slightly sharper, but far easier to hold:

- Remove Value union from interface, everything is a 32-bit
  value type, or a collection thereof.
- Collapse to one version of Run (that takes count), and make
  it a member on ByteCode.
- Similarly, move disassemble to ByteCodeFunction.

Change-Id: I07c85e65991178b3f52e20e815c25f36bc9c4257
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/220753
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-06-14 16:04:58 +00:00