Commit Graph

24219 Commits

Author SHA1 Message Date
Leon Scroggins III
2b39cbe861 Remove SK_LEGACY_HEIF_API
Bug: b/78868457
Bug: b/120414514

No longer needed, now that Android has switched over to the new API.

Change-Id: Idd2f2e843311aee11fb8d053e0ad3ccf98e429e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/236340
Auto-Submit: Leon Scroggins <scroggo@google.com>
Reviewed-by: Chong Zhang <chz@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-08-22 16:28:29 +00:00
Brian Osman
068af9e416 Revert "Temporary Lua hook to measure impact of conservative convexity"
This reverts commit e67133b8e5.

Removing testing code that's no longer needed.

Change-Id: I27bc5c77d1bc1b928d5cdb89daf82ab5fd3878c8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/236338
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-22 15:07:20 +00:00
Herb Derby
31316e1655 Only send font metrics if not already sent.
Add a field to the SkGlyphCacheState to track if the FontMetrics have
been sent.

BUG=chromium:881505

Change-Id: I8223249d95d68677cf23a1da37d7c04ce5cc8263
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/236216
Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-22 03:38:58 +00:00
Brian Salomon
57f211b56a SK_API in src/gpu cleanup
Change-Id: I14d6f7ef06c3cfcefd0813dd5013e4185b12d8cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235804
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-22 02:00:07 +00:00
Florin Malita
49d140dbad [svgcanvas] Add flag to suppress newlines and tabs in XML
Bug: skia:9343
Change-Id: Id82f998ac57fc787aeb4435a6907047ea680d2fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/236157
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-08-21 20:17:37 +00:00
Herb Derby
9e081d164c Don't send strike with no pending glyphs
This changes tracks the strikes to send as a set of pointers
to SkGlyphCacheState instead of as descriptors. This removes a descriptor
lookup allowing rapid calculation of the actual number of strikes to send.
Knowing the number of strikes with changes allows us to remove sending a boolean
if strike has no pending glyphs.

Change-Id: Id173336e238daebc19564248a818eb9dbdbe6db6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235827
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-21 19:22:29 +00:00
Brian Osman
7e16b58b5a SkRuntimeShaderMaker -> SkRuntimeShaderFactory
This refactor makes it work like the runtime color filter, where inputs
can be updated without generating a new shader key every time.

Change-Id: Ic1762aebae96fd8b7a8a74fb200bc02ec08cc029
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235798
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-21 18:22:33 +00:00
Greg Daniel
e227fe4e53 Move CopyOps to CopyRenderTask.
This also means copies are no longer part of OpList or GpuCommandBuffer.

Change-Id: I234de2c93ca13e069d7e4423a3c8b292be2eb500
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235831
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-21 18:22:23 +00:00
Chris Dalton
aa3cbb81b7 Mark mipmaps dirty from makeClosed() rather than opList constructors
Bug: skia:
Change-Id: Ia90877399777134e735ac6328fff629748ef49d3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235158
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-21 17:43:33 +00:00
Robert Phillips
e1efd38cf0 Remove GrPendingIOResource
AFAICT these three remaining uses of GrPendingIOResource were just real-ref placeholders (i.e., they just added 1 pending read and then held on to the GrPendingIOResource until object destruction).

Change-Id: Iba6bb199477d846d079999f09794422e240c675a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235458
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-21 17:29:43 +00:00
Chris Dalton
30eea6c87c Convert GrManyDependentsMipMappedTest to a mock gpu test
This allows us to test with fReduceOpListSplitting both enabled and
disabled.

This CL also requires adding basic mipmap support to GrMockGpu.

Bug: skia:
Change-Id: I97ba912a9e5f3b90756c027ac19c003c99c15902
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235996
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-21 16:55:23 +00:00
Florin Malita
05bab9a29d [svgcanvas] Don't emit default fill and stroke attributes
Default fill: "black".

Default stroke: "none".

Change-Id: I8069f8c4a852cf43e281b6fdcdc58062637c984b
Bug: skia:9344
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235829
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-08-21 16:43:03 +00:00
Brian Salomon
af696501c6 Fix sk_sp<> for incomplete type build issue
Change-Id: I211b7bc1e6d9dcdb1c74f6b6d28cd67674c059b0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235830
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-21 16:21:23 +00:00
Ben Wagner
cd111cdcc5 Simplify gdi handle use with gdi fonts.
More than anything else, this gets rid of a few 'goto's.

Change-Id: Ica28d5653f2ad8fb77d11141e2ae1831787efdfa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235099
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-08-21 16:06:25 +00:00
Brian Salomon
bf6b9795f6 GrSurfaceContext not ref counted.
Also don't specify redundant width/height to SkGpuDevice.

Change-Id: I389df5c4b073c2c05632ba6b7c95b02a22dfaf98
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235824
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-21 15:31:23 +00:00
Brian Osman
4be31e2605 Conservatively consider any path with tiny edges to be concave
These are numerically unstable. We've had various complex solutions in
the past (fall back to doubles, additional checks like this one), but
this solution is safer and simpler.

Change-Id: Ibe57a155a2aa604e20960f415b9dc3546ae859a9
Bug: chromium:993330
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235861
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-21 14:47:37 +00:00
Robert Phillips
80bff5b3a2 Remove GrProxyPendingIO
Change-Id: I9cf40f0518673206c6304e3f386dd75c9a44f269
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235865
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-21 12:09:54 +00:00
Herb Derby
362a1e0fab Move SK_API from the class to the methods
Change-Id: Ifd49e6cc8c9900b98125e59cf2e69aa4e28c25e8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235864
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-21 10:20:09 +00:00
Ben Wagner
0b9801eadc Use void(void*) instead of decltype with sk_free.
Unfortunately, boringssl also declares a function named sk_free making
decltype give an error since the function is overloaded if both Skia and
BoringSSL headers are included in the same TU (as happens in ChromeOS
builds). In theory one can use decltype and specify which overload to
use, but this is far more verbose than just specifying the type.

Change-Id: I7dfefbce0a75c7ff6791b58287f26f2cc47c8eca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235828
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-08-20 22:28:42 +00:00
Stephen White
7a2930a108 Dawn: moar textures.
Implement onWrapRenderableBackendTexture(). This required render target
support in GrDawnTexture::Wrap().
Implement onWrapBackendRenderTarget().
Implement [create|delete]TestingOnlyBackendRenderTarget().
Implement deleteTestingOnlyBackendTexture(), isTestingOnlyBackendTexture().
Implement render target support in createTestingOnlyBackendRenderTarget().
Fix GrDawnGpu::onReadPixels() for the render target case.

Change-Id: I0f987d6dc08acc791cacc592d3ccf2568ca0f976
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235098
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-20 21:40:27 +00:00
Herb Derby
aa3820a912 Remove using Settings for SkTextBlobCacheDiffCanvas
This is change 2/2. Remove the unused Settings structure.

Chrome change:
https://chromium-review.googlesource.com/c/chromium/src/+/1758438

Part 1:
https://skia-review.googlesource.com/c/skia/+/235102

Change-Id: Ib5d2ed1a18ae904c7d1eeffc18b5c69ab04c5f92
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235858
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-20 21:03:26 +00:00
Christopher Cameron
450ba0a2b2 Increase GrMtlPipelineState caches size by 8x
Users with the Finch trial enabled are seeing slow tab switches due
to MTLRenderPipelineStates being rebuilt.

Bug: chromium:974219 chromium: 988964
Change-Id: I83adf06b7174e9f11a38da421f66a3921d17dbcf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235878
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Christopher Cameron <ccameron@chromium.org>
2019-08-20 20:58:35 +00:00
Ben Wagner
723a877d0c Make SkFunctionWrapper a better wrapper.
SkFunctionWrapper was made to be a simple abstraction over existing
resource release functions which generally follow a specific pattern of
returning void and taking a pointer to the underlying type. However,
this has been observed to be an unnecessary limit. This makes it more
generic while also making the call sites a little less brittle.

This change also uncovered an issue in msvc v19.20 to v19.22, see
https://developercommunity.visualstudio.com/content/problem/698192/in-templateusing-decltype-is-void.html
To work around this, several otherwise redundant '&' are used.

There was an attempt to take references to functions instead of pointers
to functions which greatly simplifies the intermediate wrappers.
However, that uncovered another issue in msvc, see
https://developercommunity.visualstudio.com/content/problem/699878/function-to-pointer.html

Change-Id: I54ab945ed9d9cfd0204d4d6650c2fde47cc9e175
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235105
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-08-20 20:31:36 +00:00
Florin Malita
6f1ff9fca1 Faster SkPathEdgeIter
nanobench -m pathiter_edge -q --samples 1000

Before:

    micros   	bench
      7.32 !	pathiter_edge	nonrendering
After:

    micros   	bench
      2.94 !	pathiter_edge	nonrendering


Change-Id: Ic548ad270589ecced855ba101ad241109c0f16ef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235800
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-20 20:23:25 +00:00
Herb Derby
7ea9bd0a8e Increase the on stack array to reduce memory allocation
Chrome perf is showing a regression in memory. This will
make fewer memory allocations.

BUG=chromium:995743

Change-Id: I8dcc0c4bbee26464df008ec723bf1977e699e790
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235859
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-20 19:01:35 +00:00
Greg Daniel
bbfec9db84 Move transferFrom commands from GrOp and into GrRenderTask.
These Ops don't need to go through the GrGpuCommandBuffer.

Change-Id: Ifa9c7d801c97c225989d2542709c89f36ddfdc5e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235799
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-20 15:23:03 +00:00
Hal Canary
f8586bdba7 SkBitmap: simplify setPixels()
Change-Id: Ie0b1f3efd4739acce9da96a20352e5aec73697de
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235020
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-08-20 14:43:19 +00:00
Brian Salomon
5331e2a3f8 GrRectBlurEffect: approximate piecewise cubic with quintic.
Mali 400 and Quadro P1000 both have ~48% reduction.



Change-Id: Ib61a51355fa3202029dd87d483acb1027f17a7df
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235679
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-08-20 13:24:38 +00:00
Mike Reed
5f152f0745 add path-edger; lightweight Iter for edges
4.07  	pathiter_edge	nonrendering
      6.74  	pathiter_raw	nonrendering
      9.16  	pathiter_iter	nonrendering

Change-Id: Id711b342fbac6b4efd62ce918cf440b04973545c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235476
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-19 21:58:37 +00:00
Herb Derby
154340ba14 Use bulk API for bitmap glyph drawing
Using prepareForDrawing was overkill for this bitmap drawing, and it
can use the simpler bulk api. Additionally, simplify  prepareForDrawing
by removing the handle of the bitmap special case.

Change-Id: I09b2d71de28a1a50590265594aaf94593f001336
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235597
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-19 21:20:06 +00:00
Chris Dalton
0d6f77537a Add GrvkGpuRTCommandBuffer::appendSampledTexture
This separates the non-msaa-non-mipmap stuff out of
prepareSampledImage. It will be followed immediately by a CL that
finishes moving msaa resolve into a GrRenderTask and then deletes
prepareSampledImage.

Also, we no long call sk_ref_sp when adding the dstTexture. It appears
than many things have changed at this point, and this extra ref no
longer has any effect.

Bug: skia:
Change-Id: I0e390c57ab31f3aeaaa2aa99396b42fd7b1b000d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235652
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-08-19 20:19:07 +00:00
Brian Osman
e67133b8e5 Temporary Lua hook to measure impact of conservative convexity
Change-Id: I3be1a4d402a3a7adc6a28d716302d3c9f9316b14
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235676
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-19 19:45:37 +00:00
Robert Phillips
eb3eb98eb6 Add textureReleaseProc and releaseContext to SkImage factory functions
Specifically:
 MakeFromYUVATexturesCopyWithExternalBackend
 MakeFromNV12TexturesCopyWithExternalBackend

Change-Id: I41c16eb87e1a8fe9ec1fb4b7e6995e07374bb62c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235600
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-08-19 19:08:07 +00:00
Chris Dalton
3f7932e733 Add kRequiresManualMSAAResolve to GrInternalSurfaceFlags
We will use this flag to check whether a proxy needs manual msaa
resolve, and if so, install a render task to do just that when it is
dirty and about to be read from.

For the time being, we are leaving GrRenderTarget::getResovleType in
place. This will allow us to assert that requiresManualMSAAResolve
works as expected. Long term, we plan to delete the former in favor of
the latter.

Bug: skia:
Change-Id: I155fa2a6d876edd339232c7c8208015d5da2c8ee
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234436
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-08-19 15:04:30 +00:00
Greg Daniel
f8221786d0 Remove incorrect metal assert.
Change-Id: I89d5ba22c4f07c88efe7c79c9a51352f3393fb57
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235596
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-08-19 13:50:59 +00:00
Mike Reed
9318a6cfbc build custom blitter for drawAtlas
- add uniform_color_dst stage
- add stageupdate option for shaders

More cases we could try to handle in the future:
- perspective (not hard)
- mipmaps (plumbing is there, need to re-call bitmapstate helper)

Before

  10025.60  	drawAtlas_3	8888
   6636.06  	drawAtlas_2	8888

After

   3566.18  	drawAtlas_3	8888
   2585.83 ?	drawAtlas_2	8888

Change-Id: I656231324c0390029f6d08941c4f9d11ccdb8e87
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233061
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-17 01:48:28 +00:00
Brian Salomon
5a5f3e8f31 Workaround for Android Emulator default precision issue
Bug: https://github.com/flutter/flutter/issues/38700
Change-Id: I29f824284375369588196284904acb10f3ff6dc4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235279
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-08-16 20:47:35 +00:00
Mike Reed
ba7e9a6365 never check for degenerates in path::iter
This does not appear to be used externally, and only internally in 3
sites in GPU, which we can handle explicitly.

For now you can still pass bools to Iter::next() but they are ignored.
After this lands, I will update the callers to remove those.

FWIW: none of our other tests or gms seem to notice this change...

Bug: skia:9339
Change-Id: If40077b1ebb3d47cfce0ec43996ff272318e4a62
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235104
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-08-16 20:39:05 +00:00
Greg Daniel
457da50801 Remove uses of GrPixelConfig in GrMtlCaps.
Bug: skia:6718
Change-Id: I493b97b8d9c7d4c19992b0f981f897b88aea90d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235316
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-16 20:26:25 +00:00
Stephen White
170d9905cc Dawn: implement textures & samplers.
Add samplers to Dawn binding group layout.
Convert filter modes from Gr to Dawn.
Rename fUniformBindGroup to fBindGroup (since it does more than uniforms now).
Split combined samplers into separate textures and samplers bindings;
recombine in the shader with makeSampler().
Create complete bind group layout before creating UBOs.
Implement scissor rect.
Set blend color in command buffer.
Pass shader caps to SkSL.
Enable flat interpolation, integer support, derivative support in Dawn Caps.
Reduce the Dawn caps to 6 fragment/sampler combos.
Add support for Int (1) vertex format.

Change-Id: Id5e9060855f0dfc8c071f84ea6c456aba2a72b35
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233977
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-16 19:32:35 +00:00
Brian Osman
bb651c4902 Remove old version of SkImage::makeTextureImage
Client code has been updated to call new version

Change-Id: Id7e18154fe273590f04435c936121b3a3e3665df
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235317
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-16 19:01:55 +00:00
Greg Daniel
0fac86944d Remove uses of GrPixelConfig in GrVkCaps and other vk files.
Bug: skia:6718
Change-Id: I2f0d38b2b7a68a424732ced56e8b6c7e5965a722
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235023
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-08-16 18:57:05 +00:00
Stephen White
6db3b7b03e Dawn: update to GrCaps changes.
Change-Id: I96486606c6392cb35f8fcd63fe37866b7ac07a00
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234380
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-08-16 18:54:25 +00:00
herb
7022b773ee Part 1/2 to remove SkTextBlobCacheDiffCanvas::Settings
fMaxTextureSize and were never used by Skia, and
f{Min|Max}DistanceFieldFontSize are never set by Chrome.

Make a new constructor that only takes a bool to indicate DFT
capability. Move Chrome to use that ctor.

Change-Id: I1889dd39ffdaa2134b0892b8275f8223c6c8aad0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235102
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-16 15:27:35 +00:00
Mike Klein
df54f37a5d remove SkPicture_none.cpp
I happened to notice that SkPicture_none.cpp no longer compiles.

    ...
    src/core/SkPicture_none.cpp:101:44: error: out-of-line definition of
    'CreateProc' does not match any declaration in 'SkPictureImageFilter'
    sk_sp<SkFlattenable> SkPictureImageFilter::CreateProc(SkReadBuffer& buffer) {
    ...

This leads me to conclude that it cannot be in active use.

Change-Id: I92a4daa3c7d5d7889c4f841b578c9c691525c1cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235216
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-08-16 14:52:25 +00:00
Brian Salomon
77a9a6cc78 Remove std::move()s from returns of std::unique_ptrs
Change-Id: I50f9c56f05514c6cb3e013ef8f8b2ae3873f2645

Cq-Include-Trybots: skia.primary:Test-Chromecast-Clang-Chorizo-CPU-Cortex_A7-arm-Debug-All
Change-Id: I50f9c56f05514c6cb3e013ef8f8b2ae3873f2645
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235100
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-08-15 23:48:59 +00:00
Herb Derby
82963a3c97 Remove SkRemoteGlyphCacheImpl.h
Move everything to SkRemoteGlyphCache.cpp. Add a call
to SkStrikeServer (AddGlyphForTest), to make tests work.
* Misc cleanups

Change-Id: I22bea686838f60cf96d097e1ea025cb5399903e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235096
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-08-15 21:20:09 +00:00
Michael Ludwig
d18c98cd86 Move Context into separate header/namespace
The new namespace 'skif' will contain many more types down the road
to help with image filter implementations. Too many to make inner
classes like Context was, but once the namespace exists, it doesn't
make sense for Context to be the only inner class.

Bug: skia:9282
Change-Id: I4ed76bd5f6c8f0b8ca2f2e1c5d76006c7cccf91e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234581
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-08-15 20:08:29 +00:00
Brian Osman
b5391bfa0b Revert "Revert "Go back to blacklisting MSAA on all Intel GPUs""
This reverts commit f0696bd4da.

Bug: chromium:527565, chromium:983926
Change-Id: I549c9f384c9c2ca81052a86df68501d5a7057c98
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235021
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-08-15 19:27:34 +00:00
Ben Wagner
4008519f84 Remove paint from simplifyTextBlobIgnoringRSXForm.
It isn't used, so remove it.

Change-Id: Ic10d54e5cb54e458c94f2e544c3a022be2068f0d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235016
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-08-15 19:26:33 +00:00
Ethan Nicholas
0be3480546 Revert "Revert "unified Vulkan uniform buffers""
This reverts commit 19754b5470.

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

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

Reason for revert: Vulkan bots needs some love

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

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

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

* rename prepareForDrawing -> prepareForDrawingRemoveEmpty

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

So rewrite between() as

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

Then notice that contains_inclusive() is actually now just

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

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

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

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

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

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

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

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

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

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

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

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

Reason for revert: Turned a lot of bots red

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Reason for revert: 2 cc unittests

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

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

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

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

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

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

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

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

Reason for revert:

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Reason for revert: static initializers broken checks in Chrome Roll

e.g. gProgramCache{8}

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

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

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

Bug: skia:9307

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

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

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

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

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

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

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

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

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

Draws the same, of course.

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

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

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

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

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

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

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

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

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

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

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

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

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

Reason for revert: ANGLE D3D es2 bots

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

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

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

This is enough to JIT everything SkVMBlitter creates today.

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

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

This lets some of the 565 blitters JIT!

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

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

Guard flag: SK_SUPPORT_LEGACY_BICUBIC_FILTERING

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

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

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

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

The sequence

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

implements uniform8.

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

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

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

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

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

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

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

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

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

(CPU-only for now)

TBR=mtklein

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

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

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

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

Reason for revert: roll?

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

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

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

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

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

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

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

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

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

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

(CPU-only for now)

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

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

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

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

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

Should be no diffs and no interesting perf change.

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

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

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

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

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

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

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

    367.76 !	bitmap_RGBA_8888_A_scale_bicubic	8888
     43.24  	bitmap_RGBA_8888_A_scale_bilerp	8888

After

    210.53 ?	bitmap_RGBA_8888_A_scale_bicubic	8888
     43.47  	bitmap_RGBA_8888_A_scale_bilerp	8888

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

Reason for revert: updated valgrind suppression

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

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

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

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

Reason for revert: Causing Valgrind failures

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

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

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

Reason for revert: Reverted wrong CL 🤦

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

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

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

Reason for revert: Causing Valgrind failures

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Tested by SkVM_mad, SkVM_madder.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Bug: skia:9272
Change-Id: I78a3dd9a11a8de1c0ef7a4406a227a0b7d9aecf7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230123
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-07-26 18:11:04 +00:00