Commit Graph

24753 Commits

Author SHA1 Message Date
Herb Derby
c7a8df8b1c Swap SkPackedGlyphID bitfields around
Change-Id: Ic286357dc637edf0c8df003422a43252590250f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251768
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-30 19:20:28 +00:00
Mike Klein
65e6ee7f7e quick switch to disable SkVM JIT
Change-Id: I4d4a8409163c2b2d1773e395a73857626c45d406
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251752
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-30 19:01:18 +00:00
Mike Klein
c746cdffa9 assume no color filters in SkVMBlitter
We'll lean on them being folded away before choosing blitters.
That happens everywhere but in Google3 now, and there's no use
of SkVMBlitter outside our own testing, certainly not Google3.

Change-Id: Ic9725ffbad5f2226d5f030e82bd72500a624b1ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251740
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-30 18:32:28 +00:00
Mike Klein
e1e1971862 clean up unorm8 helpers
- add scale for mul->div255
   - rename mix lerp
   - remove inv
   - add _unorm8 suffix

Just refactoring, nothing interesting.

Change-Id: I8f6e35cbd5cb9458a8149ca89cf5213d9233d950
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251751
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-30 18:31:28 +00:00
Herb Derby
77c99946e0 Faster remote glyph cache
Change RemoteStrikes to hold a very small summary of what has been
sent for each glyph, and only maintain full glyph information
until the next serialization. This greatly reduces memory used,
and improves average performance by 10% as measured by traces from
the top 10 websites.

BUG=chromium:881505

Change-Id: Id5c5d974e3c35a63d232bb62fc605e8472d926fc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251237
Reviewed-by: Khushal Sagar <khushalsagar@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-30 18:05:08 +00:00
Brian Osman
7df14d0557 YUV Cleanup: Trim comments, derive Cr/Cb from Kr/Kb
The conversion math for a given space can be fully derived
from the Kr and Kb terms (plus the headroom/footroom), so
avoid redundant values that can be wrong.

And, no need to list every possible value of an enum param,
especially when the generated doxygen links to the type's
documentation, which has all the values listed.

Change-Id: I64ce8cfd5ec7ff74dc3b878202b13d0d483e1db6
Bug: skia:9543
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251764
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-10-30 17:19:16 +00:00
Herb Derby
7820da3db5 Use shifts for all fields in SkPackedGlyphID
This should allow the bit field positions to be moved
around in the SkPackedGlyphID.

Change-Id: I85390f594a017b9df779f0a12e1f24c4d9e077dd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251761
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-30 16:26:16 +00:00
Chris Dalton
8a64a44244 Rename sampleVariablesSupport() to sampleMaskSupport()
We have only implemented support for the sample mask. This CL renames
the cap to reflect that.

It also replaces sampleVariablesStencilSupport() with the more aptly
named canOnlyUseSampleMaskWithStencil(), to make it more clear that
this is a driver workaround.

Change-Id: Ibf54092c63181232fb3b94cad7ddb16e3a15e3d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251580
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-30 16:20:47 +00:00
Herb Derby
a9ac8a51fd Change uses of code to glyphID
Change-Id: I596bf0be9bf479a26f7bd00bea3c431b534164ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251758
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-30 15:19:16 +00:00
Stephen White
3cc8d4fb7f Dawn: s/dawn::/wgpu::/g.
The new webgpu_cpp.h hotness for native apps brings with it a new
namespace: wgpu. This is a straight substitution.

Note: no Skia API changes.
Change-Id: I12b26417e76838cd8fa2b39b8161cbaa2cd8fa78
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251660
Commit-Queue: Stephen White <senorblanco@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-30 14:29:46 +00:00
Robert Phillips
bbd459d82c Allocate all vertex data in one go w/in GrTextureOp
This will hopefully reduce the overhead of prePreparing the vertex data (i.e., only one memcpy to use the precomputed data) and set us up for using the full extent of the index buffers.

Note this CL also contains a refactoring to share more code between onPrePrepareDraws and onPrepareDraws (i.e., the FillInData method).

Change-Id: Ia0e482332c8108e24b82743b82fdf53840c9b009
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250800
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-30 14:18:16 +00:00
Jim Van Verth
7da048b5e8 Use texture for shadow falloff
Bug: b/142333639
Change-Id: I5c5bf4da0e2bb5f1b4233681dee305cf381c3e2a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250096
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-30 13:40:16 +00:00
Chris Dalton
1ae54bc22f Add sampleVariablesStencilSupport to sksl standalone caps
TBR=ethannicholas@google.com

Change-Id: I53c2896470fd202f01f51c5aaddf3087b2cbb5ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251556
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-29 23:12:13 +00:00
Mike Klein
07c6c6668c work around x11/X.h #define pollution
Some nerve those folks have to #define None 0L.

Cq-Include-Trybots: skia.primary:Build-Debian9-Clang-x86_64-Debug-SwiftShader
Change-Id: I0c84f78ec72672648d1c0bde69b6e05433b80d56
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251516
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-29 22:52:23 +00:00
Nigel Tao
2777cd37bf Have SkWuffsCodec use two Wuffs decoders
This allows onGetFrameCount to advance the stream (and return a higher
frame count), even when in the middle of a onIncrementalDecode sequence.

Such behavior is expected by Chromium's
TestResumePartialDecodeAfterClearFrameBufferCache:

https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/image-decoders/image_decoder_test_helpers.cc?l=365&rcl=23787ba147959ebf4ad168c595d5ec87919fdbd2

Bug: skia:8235
Change-Id: Iba7267468b02ce73455b362e50d8878f53b0ff88
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250937
Commit-Queue: Nigel Tao <nigeltao@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2019-10-29 22:17:43 +00:00
Mike Klein
f6a89fde46 hold a ref on Key effects
This ensures we never confuse a dead effect pointer in our cache for a
different live effect that happens to be allocated at the same address
as the old one.  Never seen it happen yet, but it's possible.

Change-Id: If8aff141fb6d0a4e10f13a153b154bb14f5a8c1a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251442
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-10-29 21:59:33 +00:00
Mike Klein
e4522dcf9a rough sketch of shaders in SkVMBlitter
Change-Id: I5f96475a6dec26dde0bdf883153a1fd7c7e3b148
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251409
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-10-29 21:41:53 +00:00
Mike Klein
bfdab5f027 support 3D masks in SkVMBlitter
Nothing too tricky, all spun off the other CL.

Diffs on the new emboss GM look good.

Change-Id: Ia46f106491e92c0cee4020200474ea5de2ca270d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251440
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-29 21:17:52 +00:00
Chris Dalton
b0fd4b12a1 Reland "Revert "Revert "Rename gl_SampleMask to sk_SampleMask"""
This is a reland of 4ac37632a8

Original change's description:
> Revert "Revert "Rename gl_SampleMask to sk_SampleMask""
> 
> This reverts commit 40b815db97.
> 
> Bug: skia:
> Change-Id: I454d3e86219276996d0b4f9e7fcf177bb6dc45e7
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251004
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

Bug: skia:
Change-Id: Ia343e9e1008ca2354e1d300030e763f3c578d71c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251441
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-29 21:01:52 +00:00
Jim Van Verth
352f4f7800 If drawing an image as tiled fails, fallback to other methods.
When rendering cross-context images, we can end up with a situation
where the image thinks it should be tiled because it won't fit in the
cache, but we can't tile it because getROPixels fails. In this case,
the image should be backed by the client, so we should be able to
render it through a TextureProducer.

Bug: skia:9562
Change-Id: I172e1008ca423f46b0c7b445bdf3eb573215adfb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251458
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-29 20:15:35 +00:00
Greg Daniel
baf8d992e6 Remove outputSwizzle from GrRenderTargetProxy.
Bug: skia:9556
Change-Id: Icbcc56c0eb0d0de0886874e0ed8c3f03c7318d02
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249883
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-29 18:51:20 +00:00
Brian Osman
650f40d39b SkMorphologyImageFilter: Avoid integer overflow with large radii
We later compute the "width" of the filter as (2*radius)+1, so fail
early if that will overflow.

Bug: chromium:1018190
Change-Id: I6554693067be4b52b1304d9f6fd0376ce4b3be19
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251364
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-10-29 18:38:45 +00:00
Robert Phillips
b69001f36f Make GrFillRectOp and GrTextureOp consistent re AA-upgrading and size checks
I believe GrFillRectOp wasn't handling AA-upgrading correctly. Both ops now also check that they aren't exceeding the index buffer limits for both AA and non-AA draws.

Change-Id: Iae586b92e1f27a908a54ae881f2b1db21ec1afc8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251360
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-10-29 17:25:45 +00:00
Greg Daniel
793c9e8c98 Cache simple descriptor sets on GrVkTexture.
We add a small cache of descriptor sets on each texture which only contain
one descriptor which a a texture/sampler using the given texture.

This helps to reduce the overhead of finding a new descriptor and re-writing
data to it every frame we want to use it.

Seeing about 25% gpu main thread performance win on linux vulkan
css_opacity_plus_n_layers.html?layer_count=1000&visible_layers=1000 test

Bug: skia:9574
Change-Id: I9979d7d874350e12caae0e5e70113c9347228e8a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251243
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-29 17:04:10 +00:00
Greg Daniel
16f5c65a0a Use GrSurfaceProxyView in RenderTasks.
Bug: skia:9556
Change-Id: Ibe0ae6981e87909848e5af73fc716aac7c8a591f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249232
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-29 15:53:59 +00:00
Greg Daniel
c10bb6aa30 Some cleanup of unneeded code/objects in GrVkPipelineState.
I wanted to cleanup this file as much as possible before starting to add
caching logic to make the changes simpler.

Bug: skia:9574
Change-Id: I8280a81f17372680a488f7f7d28d78d68121b235
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251201
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-29 14:35:55 +00:00
Brian Salomon
998937c035 Reland "Make GrFillInData use SkRasterPipeline"
This is a reland of 620154a7dc

Now handles kGray_8.

Original change's description:
> Make GrFillInData use SkRasterPipeline
>
> Makes it easier to add new color types.
>
> Bug: skia:6718
> Change-Id: Id0e6974ec87fd06587b2ccd7a9b99ceb1b6284f1
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251236
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

Bug: skia:6718
Change-Id: Id8b632242b87957f5b1e1a130eb26dafdf82a1cc
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251359
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-29 14:29:32 +00:00
Robert Phillips
ee08d523f6 Move creation of AAQuadIndexBuffer to GrResourceProvider
This CL also increases the AAQuadIndexBuffer's size and centralizes the handling of index buffer constants.

Change-Id: I4fb679a1c5e4076cf249b612f798e9bf5a38cd0b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251244
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-29 13:51:22 +00:00
Robert Phillips
d4b95d213d Revert "Implement refPinnedTextureProxy for SkImage_Lazy."
This reverts commit 1e0f2f389f.

Reason for revert: I suspect this is blocking the Chrome roll

Original change's description:
> Implement refPinnedTextureProxy for SkImage_Lazy.
> 
> Creating a cross-context texture exposed a hole in our lazyproxy
> texture generation. Despite having a wrapped texture we were falling
> back to drawing in tiled mode, which is incorrect. Filling in these
> methods allows us to draw with the wrapped texture.
> 
> Bug: skia:9562
> Change-Id: Ia26c5d75b202aefdf720e6d1f7a201af23e40676
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251214
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

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

Change-Id: I2dd6f2cbe13dd3ac1f65890da366171572fb84e2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9562
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251356
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-29 12:40:06 +00:00
Joe Gregorio
7a6986b7b3 Revert "Make GrFillInData use SkRasterPipeline"
This reverts commit 620154a7dc.

Reason for revert: Breaks Win10. 

Original change's description:
> Make GrFillInData use SkRasterPipeline
> 
> Makes it easier to add new color types.
> 
> Bug: skia:6718
> Change-Id: Id0e6974ec87fd06587b2ccd7a9b99ceb1b6284f1
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251236
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I77b400fcb9a74b56f5b480c88e3d2340f26a6cf2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251349
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
2019-10-29 11:04:06 +00:00
Herb Derby
d898cc3f26 Small cleanups
Change-Id: Id5fbfa48868d4aa48901835f8618c4297d5cdc88
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251240
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-28 22:29:25 +00:00
Herb Derby
9e1909f03d Inline fallback code
Change-Id: I49adc018dc4b486edb7be8aa55f86f248bb39c83
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251212
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-28 22:25:05 +00:00
Herb Derby
aacbd44cad Only send needed glyph images
Only send the glyph images that will be used by the GPU process. If the image
is too big to fit in that atlas, it will never be placed in the strike cache.
So, don't send it.

Change-Id: I8b3c3138555cf73b370784b37360b0a283bb3e41
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251239
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-28 22:10:25 +00:00
Jim Van Verth
1e0f2f389f Implement refPinnedTextureProxy for SkImage_Lazy.
Creating a cross-context texture exposed a hole in our lazyproxy
texture generation. Despite having a wrapped texture we were falling
back to drawing in tiled mode, which is incorrect. Filling in these
methods allows us to draw with the wrapped texture.

Bug: skia:9562
Change-Id: Ia26c5d75b202aefdf720e6d1f7a201af23e40676
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251214
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-28 20:28:33 +00:00
Brian Osman
9ead6c7400 Guard against integer overflow when classifying transfer functions
Bug: chromium:1016183
Change-Id: I2fa470db3690f79d83fd17b01e421e7457f7c725
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251246
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-28 20:18:23 +00:00
Brian Salomon
620154a7dc Make GrFillInData use SkRasterPipeline
Makes it easier to add new color types.

Bug: skia:6718
Change-Id: Id0e6974ec87fd06587b2ccd7a9b99ceb1b6284f1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251236
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-28 20:03:53 +00:00
Greg Daniel
1e058a5380 Reland "Revert "Rename gl_SampleMask to sk_SampleMask""
This reverts commit 4ac37632a8.

Reason for revert: Failing assert, "assert(fProgram.fSettings.fCaps->sampleVariablesSupport())" on some bots

Original change's description:
> Revert "Revert "Rename gl_SampleMask to sk_SampleMask""
> 
> This reverts commit 40b815db97.
> 
> Bug: skia:
> Change-Id: I454d3e86219276996d0b4f9e7fcf177bb6dc45e7
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251004
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

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

Change-Id: I1fe9e2bb0d9f921f7d66e4a4707c21dd5c923586
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251248
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-28 19:28:25 +00:00
Ethan Nicholas
4ac37632a8 Revert "Revert "Rename gl_SampleMask to sk_SampleMask""
This reverts commit 40b815db97.

Bug: skia:
Change-Id: I454d3e86219276996d0b4f9e7fcf177bb6dc45e7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251004
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-10-28 18:47:52 +00:00
Brian Salomon
3683a4f5ae Remove legacy async read pixels APIs.
Chrome is now using the newer version.

Bug: skia:8962
Change-Id: I8c38bde63e1e032281d19b0cc7cb8cf301061a9e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251198
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-28 17:28:53 +00:00
Mike Klein
a1991f5e3b experimental support for go/fibers
When run on cooperative threads, we need to notify the threading system
when we're going to block (in any way, sleep or spin) so that it doesn't
wake that thread up expecting it to make forward progress.

This should cover SkOnce, SkSpinlock, SkSemaphore, and by extension
SkMutex.  Not sure if there are others to hit, but really the only way
to find out is by deadlocked stack traces.  This CL (obviously?) does
nothing to mark synchronization primitives used by Skia's dependencies,
and in general I don't think we can do anything about them.

See cr/275261423 for more background and discussion.  It's not clear to
me that marking these symbols as weak is necessary, so I figured I'd
just try not doing that and seeing what breaks.  I can always follow up
with weak symbols if proven necessary.

Bug: skia:9577

Change-Id: I2c03fe92c58ad506dd8a68bdc90a09b28f965149
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251221
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-28 16:48:55 +00:00
Robert Phillips
c554dcf4b5 Add helper to determine the index buffer that will be used
This CL doesn't use the new VertexSpec member variable but should clarify the path forward (i.e., we will determine the index buffer option at characterize time and enforce that decision at onPrepare time for all the meshes).

This also refactors the GrTextureOp::characterize call.

Change-Id: I7010385abf5a462c12fd47e314aad893bca85fb9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251002
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-10-28 16:36:02 +00:00
Herb Derby
ff82e15d01 Add GL Caps for Radeon Pro Vega
The Pro Vega is used in the iMac Pro, and has the following
string:
"AMD Radeon Pro Vega 56 OpenGL Engine"

Make it behave like kAMDRadeonHD7xxx_GrGLRenderer.

Change-Id: I3eb60a56e0d10df6d5deab18302514d0ae3b2a56
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251116
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-25 20:37:01 +00:00
Emircan Uysaler
7697476ad2 Disable async readback from protected memory
Reading back pixel values from protected memory into cpu memory is
not allowed. This CL adds early returns so they are not attempted.

Bug: skia:9016, fuchsia:38648
Change-Id: Icc0b51a62e87b7aebd0e7cb2a061fea084e7f754
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251000
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-25 20:02:01 +00:00
Herb Derby
f5e9b42ef0 Change from single prepareForDrawing to prepare[Mask|SDFT|Path]ForDrawing
This produces much simpler logic, and sets up for a massive simplification
of the diff canvas. You can see the ultimate changes in:

https://skia-review.googlesource.com/c/skia/+/238196

Change-Id: I92100bdccb80d0b6f7864435213c29a159e0caaf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250039
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-25 19:35:09 +00:00
Herb Derby
d0a404e84d Introduce FitsInAtlas
Change-Id: I043c593f748da196abb0310bc0bc8302ca33e5af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250798
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-25 15:31:00 +00:00
Herb Derby
a7f3157ac0 Only scale fallback font if it is too big
If the drawing is rotate, then it won't be handled by the
device fallback case. So, the source glyphs can fit in
the atlas with out scaling, so don't scale. Previously,
the system would put the largest possible glyph in the
cache, and scale it down.

Change-Id: If4261854100d4736702d192e4f0847014c55f1c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250796
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-25 12:54:29 +00:00
Ethan Nicholas
b653813d58 Vulkan SkSL code now works in locales which use ',' as the decimal separator.
Bug: skia:9550
Change-Id: Ib844971bd1daebdf7a0f93388ad40e4977822233
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250076
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-10-24 21:11:57 +00:00
Brian Salomon
d2c67f44f8 Reland "Allow direct readback for formats in non-ES OpenGL"
This is a reland of 162d16891f

Original change's description:
> Allow direct readback for formats in non-ES OpenGL
> 
> Bug: skia:8962
> Change-Id: I85a2e228892a54cc2a0abd607d034515a9af12af
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250258
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

Bug: skia:8962
Change-Id: Id878df9747653f2b34e551073a4562277e789e9d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250657
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-24 20:16:33 +00:00
Mike Klein
af01816bc3 remove NEON matrix procs
These appear to autovectorize fine.

There are a ton of tiny diffs here, which sounds to me like the NEON
code is doing something slightly different than the portable path.
That's kind of reason enough for me to want to drop this code... it's
write-once code that never gets updated or bug fixes.

I'm going to try replacing these next with some skvx-based code to see
if there's any speed up to be gotten from readable code.

nanobench -m bitmap_ [-before-]{+after+} is uninteresting:

! -> high variance, ? -> moderate variance
    micros      bench
   [-6086.72-]{+5996.35+}       shadermaskfilter_bitmap_80      8888
   [-5629.37-]{+5603.07+}       shadermaskfilter_bitmap_ff      8888
    [-348.31-]{+348.62+}        draw_bitmap_aa_rotate   8888
    [-215.12-]{+221.48+}        draw_bitmap_aa_translate        8888
    [-294.87-]{+315.18+}        draw_bitmap_aa_scale    8888
     [-11.89 !-]{+11.95+}       draw_bitmap_aa_ident    8888
    [-307.47-]{+304.01+}        draw_bitmap_noaa_rotate 8888
     [-14.56 !-]{+16.18+}       draw_bitmap_noaa_translate      8888
    [-294.56-]{+312.53+}        draw_bitmap_noaa_scale  8888
     [-12.05-]{+12.44+}         draw_bitmap_noaa_ident  8888
     [-38.14-]{+37.84+} ?       bitmap_RGBA_8888_A_source_stripes_three 8888
     [-35.98-]{+37.81 ?+}       bitmap_RGBA_8888_A_source_stripes_two   8888
     [-23.58-]{+23.89+}         bitmap_RGBA_8888_A_source_transparent   8888
     [-25.02-]{+24.96+}         bitmap_RGBA_8888_A_source_opaque        8888
    [-882.88-]{+777.45+}        bitmap_RGBA_8888_A_scale_rotate_bicubic 8888
    [-865.57-]{+451.20+}        bitmap_RGBA_8888_A_scale_bicubic        8888
    [-132.63-]{+145.47+}        bitmap_RGBA_8888_update_scale_rotate_bilerp     8888
    [-139.90-]{+147.01+}        bitmap_RGBA_8888_update_volatile_scale_rotate_bilerp    8888
    [-144.19-]{+132.19+}        bitmap_RGBA_8888_scale_rotate_bilerp    8888
    [-150.94-]{+158.66+}        bitmap_RGBA_8888_A_scale_rotate_bilerp  8888
     [-86.07-]{+85.63+}         bitmap_RGB_565_scale    8888
    [-455.76-]{+455.36+}        bitmap_RGB_565_scale_bilerp     8888
     [-91.71-]{+94.45+}         bitmap_RGBA_8888_update_scale_bilerp    8888
     [-93.79-]{+99.09+}         bitmap_RGBA_8888_update_volatile_scale_bilerp   8888
     [-95.02-]{+94.31+}         bitmap_RGBA_8888_scale_bilerp   8888
    [-100.45-]{+105.19+}        bitmap_RGBA_8888_A_scale_bilerp 8888
     [-20.89-]{+21.15+}         bitmap_RGBA_8888_update 8888
     [-21.16-]{+20.98+}         bitmap_RGBA_8888_update_volatile        8888
     [-81.12-]{+80.12+}         bitmap_RGB_565  8888
     [-21.05-]{+21.35+}         bitmap_RGBA_8888_scale  8888
     [-21.04-]{+20.99+}         bitmap_RGBA_8888        8888
     [-27.91-]{+27.78+}         bitmap_RGBA_8888_A      8888

Change-Id: Ia2746ac342e2a29653846da5252c09467a85a077
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250688
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-24 20:05:32 +00:00
Herb Derby
95ea4c4c9e Change code() to glyphID() on SkGlyph.
Change-Id: Id13cd5039df7ff3042858c8c89a2dc629b589d3c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244998
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-24 20:00:29 +00:00
Chris Dalton
8a666d42c6 Reland "ccpr: Unblacklist Qualcomm with msaa"
This is a reland of 3f55695a04

Original change's description:
> ccpr: Unblacklist Qualcomm with msaa
> 
> Bug: skia:
> Change-Id: I1ab69fe87136955b01a329675f1d0affec3700ec
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245530
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

Bug: skia:
Change-Id: I22ee033652c9c9357698c4adf5c7dbe6a7a0a155
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249808
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-24 20:00:25 +00:00
Brian Salomon
557e812779 Make GrSurfaceProxy ref counts thread safe.
Bug: chromium:1008312

Change-Id: I90525db25ee61aeb8f03abc7569d8e4224df1497
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250576
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-24 19:55:23 +00:00
Mike Klein
da5581f860 did you mean to leave this in?
Change-Id: I95e7eca71ee5d9ec1cf0d0136b560cd45cee910d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250685
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-24 19:55:22 +00:00
Jim Van Verth
5a8f3e4aac Reland "Enable Programs (formerly GLPrograms) test for other APIs"
This is a reland of 598741667a

Original change's description:
> Enable Programs (formerly GLPrograms) test for other APIs
> 
> Bug: skia:9365
> Change-Id: I2eeac4e628425411b0a8f9ffa94ad61d58254b77
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249806
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Eric Boren <borenet@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

Bug: skia:9365
Change-Id: I94db6cb2b1465edbb2e6d32708b835a76e12cbc6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250016
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-24 19:53:25 +00:00
Brian Salomon
322301a4c5 GrResourceProvider::MakeApprox() fix after SkISizification
Bug: chromium:1017229
Bug: chromium:1017242
Change-Id: Ibef5b7c176076d5e9256a31e08ce647f3235dc8b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250658
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
2019-10-24 19:52:34 +00:00
Robert Phillips
c5a2c759fb Pull tessellation forward into GrTextureOp::onPrePrepareDraws
This trades memory and DDL-record time for GPU-flush time. That is, by tessellating in onPrePrepareDraws we will consume more memory (for the verts) and time at DDL-record time but, hopefully, less time when drawing the DDL.

Change-Id: I97dd1a00486c7a1da53add2ea203bf3f90c20162
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250178
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-10-24 19:41:44 +00:00
Hal Canary
e107faa062 SkRemoteGlyphCache Add tracing to diff canvas
Use `extra_cflags=["-DSK_CAPTURE_DRAW_TEXT_BLOB"]` to enable.

Change-Id: I1d6db478ee91696cdce090647b889c17a83a2718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250259
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-24 17:09:31 +00:00
Mike Klein
96bce8f919 Reland "hide color filters from blitters"
This is a reland of cba64462d2

... with a fix to SkColorFilterShader::onAppendStages() to
copy out the alpha.  The blitters sometimes outlive the shader.

Original change's description:
> hide color filters from blitters
>
> This is all guarded by the old define we never rebaselined.
>
> Had to make some upgrades to SkColorFilterShader to support
> replacing an SkPaint's shader and color filter with a single
> merged SkColorFilterShader.  Our pipeline's order of operations
> is
>
>    1) shader
>    2) scale by paint alpha
>    3) color filter
>
> but SkColorFilterShader had no way to get that paint alpha in
> the middle there, so I added one.
>
> Change-Id: Ibc1448c1b421747086030337c1a30b8f0af4aa5e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250296
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Reed <reed@google.com>

Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN
Change-Id: Ia98dbeaba6220a60d195c0ef967772c9dce882a2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250596
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-24 16:57:02 +00:00
Brian Salomon
1a217eb410 Type usage improvements in GrTextureProducer classes
Make better use of SkISize and GrImageInfo.

Change-Id: Ie3c9f16d7db05e6527baf1aae4607d74d020ee49
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250577
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-24 16:38:57 +00:00
Herb Derby
4a1af26f1a Fix fuzzer bug in SkDescriptor::isValid
This is following up chrome bug:
https://bugs.chromium.org/p/chromium/issues/detail?id=996211

BUG=skia:18491

Change-Id: I4c85bc916903aaa2fdf7eb226bdf3e57f8b1c66c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250578
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-24 16:33:52 +00:00
Florin Malita
a8392b79fb Slightly faster hsl_to_rgb stage
Reduce the number of branches, similar to GrHSLToRGBFilterEffect.fp.

colorfilter_matrix_hsla   500.92 -> 482.47

Change-Id: I7d11a226f7db314dd284be538eee37fbe59f60b4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250339
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-10-24 16:26:02 +00:00
Robert Phillips
df4601b484 Revert "Allow direct readback for formats in non-ES OpenGL"
This reverts commit 162d16891f.

Reason for revert: red on bots

Original change's description:
> Allow direct readback for formats in non-ES OpenGL
> 
> Bug: skia:8962
> Change-Id: I85a2e228892a54cc2a0abd607d034515a9af12af
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250258
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I9509665678e3f4984143ff4f2d91565c4339a006
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8962
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250656
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-24 16:23:53 +00:00
Chris Dalton
2e1381ec86 Don't keep "outResultsFile" open in nanobench
There is a bug on Pixel and Pixel2 devices where the program
eventually terminates with a non-zero exit code. Closing the
outResultsFile between JSON flushes seems to fix it (for whatever
reason).

Bug: b/143074513
Change-Id: I935e982e88758fda19292129c8031f8501cca615
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249821
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-24 16:09:02 +00:00
Mike Klein
37bc8f9652 restore _DXDY image shader on ARM
This is mostly the patch we've been looking at, rebased,
with some of my comments from the review folded in.

The perf speedup is qualitatively the same as I saw on the other patch.
On that same Snapdragon 835, with draw_bitmap_aa_rotate runs about 30%
faster (543.39 vs 712.71us) and draw_bitmap_noaa_rotate about 15% faster
(481.93 vs.  572.13us).

The main thing I have omitted is the NEON specialization of matrix
procs.  It looks like both nofilter_affine() and filter_affine() are
autovectorized well, and we seem to perform fine enough without manual
specialization here.  I'm even tempted to remove [no]filter_scale_neon()
as a follow up.

Image diffs look mostly fine.  This unexpectedly fixes rotated lighting
shaders in GMs.  Clearly that lighting shader must get a lot of use...

Change-Id: I67ee0b3ab92d6e56584ece05feb6e66d6fb7c660
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249860
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-10-24 15:51:12 +00:00
Brian Salomon
162d16891f Allow direct readback for formats in non-ES OpenGL
Bug: skia:8962
Change-Id: I85a2e228892a54cc2a0abd607d034515a9af12af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250258
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-24 15:31:56 +00:00
Brian Salomon
4ab4e641f1 Narrow fix for creating BGRA backend texture from pixmaps on desktop GL.
GrTestingBackendTextureUploadTest creates backend textures from BGRA
pixmaps. There is a bug on desktop GL. We choose a RGBA format for the
texture. We then infer the color type of the data from the format (via
a hop through GrPixelConfig) as RGBA and upload it as such.

Currently we don't fail the test because the test fails to read the data
back (because we don't support direct reading of BGRA data from textures
in GL).

Fixing the read back causes the test to fail.

This change removes the inference of color type from the format and
instead uses the pixmaps' color type.

This doesn't fix several larger issues, including:

1) The intended color type is not specified when creating a texture of a
solid color so we still infer it from the format in that case.

2) We may not support direct uploading of data in the pixmaps' color type
to the chosen texture format but must first convert it to some other
color type on the CPU.


Change-Id: I3b1022c40201fc107cb39bbb5cca775795c828e8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250336
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-24 13:29:04 +00:00
Herb Derby
1213041957 Use common path drawing code
Currently, there are two methods for drawing paths. The device metrics
version that uses the glyphs from the mask paths directly, and the common
path (font size 64) version that uses scaling to generate the paths.

This change removes the device metrics version. This is a very rare execution
path because, the font size needs to be < 132, but still generate a glyph with
dimensions > 256. I have only seen this in the wild once.

This change simplifies the code, and does not change the behavior very much.
There are only two GMs show big numerical changes. One has visible differences
(textblobmixedsizes), and the other is very slight visible difference(mixedtextblobs),
 but it is not wrong.

Change-Id: Ieb10cd73c81196c66be5f791d591471e15175917
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249888
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-23 22:43:58 +00:00
Chris Dalton
6e38ce7c08 Disable msaa on Pixel3a
Bug: b/143074513
Change-Id: I1110ee542483b07b12e808bcd2decd6ce24f0a15
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249920
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-23 20:25:17 +00:00
Hal Canary
a255358d98 [minor] SkRemoteGlyphCache impl: add explicit
Change-Id: I3a1d97b867a66ed86e4c97bee72150b74d9dc112
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249877
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-10-23 19:45:55 +00:00
Jim Van Verth
6863bb0930 Set Metal rendertargetproxy via drawableSize
Bug: skia:
Change-Id: Idfe709836a9c0be5ce9b6fd200956ff8e284596d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249981
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-23 19:32:25 +00:00
Stephen White
dd78efd0f5 Dawn: implement unified UBOs.
This fixes the fpcoordinateoverride GM, and others.

Change-Id: I715e39201a4c77aa49395a3b9259caaf3ca0328e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249893
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-23 19:26:35 +00:00
Michael Ludwig
11eeb94bfe Revert "hide color filters from blitters"
This reverts commit cba64462d2.

Reason for revert: ASAN failures: https://logs.chromium.org/logs/skia/4812b6e5916f3d11/+/steps/symbolized_dm/0/stdout

Original change's description:
> hide color filters from blitters
> 
> This is all guarded by the old define we never rebaselined.
> 
> Had to make some upgrades to SkColorFilterShader to support
> replacing an SkPaint's shader and color filter with a single
> merged SkColorFilterShader.  Our pipeline's order of operations
> is
> 
>    1) shader
>    2) scale by paint alpha
>    3) color filter
> 
> but SkColorFilterShader had no way to get that paint alpha in
> the middle there, so I added one.
> 
> Change-Id: Ibc1448c1b421747086030337c1a30b8f0af4aa5e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250296
> Commit-Queue: Mike Klein <mtklein@google.com>
> Reviewed-by: Mike Reed <reed@google.com>

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

Change-Id: Icc3a3916ca763de979c01d65746d74c49e14544c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250261
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-10-23 19:15:06 +00:00
Mike Klein
cba64462d2 hide color filters from blitters
This is all guarded by the old define we never rebaselined.

Had to make some upgrades to SkColorFilterShader to support
replacing an SkPaint's shader and color filter with a single
merged SkColorFilterShader.  Our pipeline's order of operations
is

   1) shader
   2) scale by paint alpha
   3) color filter

but SkColorFilterShader had no way to get that paint alpha in
the middle there, so I added one.

Change-Id: Ibc1448c1b421747086030337c1a30b8f0af4aa5e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250296
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-10-23 18:14:03 +00:00
Brian Salomon
5918e8313b Rewrite ReadPixels_Gpu test to be more exhaustive and share code.
Implementation is shared with with AsyncReadPixels.

Change-Id: If40705e96cc7fb073ab6024ab59819784c8be0ca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244717
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-23 18:06:03 +00:00
Robert Phillips
e9462dd2da Rename *worstCase* to backingStore* in GrSurfaceProxy
These names are more appropriate after:

https://skia-review.googlesource.com/c/skia/+/241356 (Always create an approx-size texture for approx-fit proxies))

Note that this CL does have one substantive change in GrCoordTransform::hasSameEffectAs where we use our knowledge of the size at which the backing stores will be allocated to remove a sly usage of GrSurfaceProxy::underlyingUniqueID.

Change-Id: Ibbb8cb23c4503f267abbdf4794610f3262a6f515
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250257
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-10-23 17:15:01 +00:00
Florin Malita
36031207dc GPU support for SkColorFilters::HSLAMatrix
Change-Id: I5b762811b44861fcedd2fa5c0e48a82718458605
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/232398
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-10-23 16:10:27 +00:00
Robert Phillips
32803ff744 Add PrePreparedDesc to GrTextureOp
This centralizes the information we are preparing and reduces duplicate computation (e.g., of the VertexSpec).

Change-Id: Iac2c4d0890389e641ee9a7453dace31c0a4ca965
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249983
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-10-23 13:37:07 +00:00
Robert Phillips
40b815db97 Revert "Rename gl_SampleMask to sk_SampleMask"
This reverts commit 23716d42f7.

Reason for revert: red bots and GMs

Original change's description:
> Rename gl_SampleMask to sk_SampleMask
> 
> Change-Id: I3924c6f76edf310a984e4fd89478b00eeec69722
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249931
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

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

Change-Id: I74848e95972cf2c41cc28887e26214136ce79e08
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250180
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-23 12:28:48 +00:00
Robert Phillips
d9ddd07554 Revert "Rename sampleVariablesSupport() to sampleMaskSupport()"
This reverts commit 766b4c9c21.

Reason for revert: GMs and bots

Original change's description:
> Rename sampleVariablesSupport() to sampleMaskSupport()
> 
> We have only implemented support for the sample mask. Renaming the cap
> to reflect that.
> 
> Change-Id: I10b5923c7464093187336016963a8ac51ebd54f5
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249932
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>

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

Change-Id: I712169e86ee479bffd71d6665710f731d6c0e042
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250179
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-23 12:27:08 +00:00
Stephen White
8e3e431dad Dawn: fix compile.
Change-Id: Ibbba2824224f5c4b9ed0a68cafe58e0e91c22a31
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/250097
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-23 12:22:27 +00:00
Mike Klein
d48488b5ea reorder to minimize register pressure
Rewrite program instructions so that each value becomes available as
late as possible, just before it's used by another instruction.  This
reorders blocks of instructions to reduce them number of temporary
registers in flight.

Take this example of the sort of program that we naturally write,
noting the registers needed as we progress down the right:

    src = load32 ...          (1)
    sr = extract src ...      (2)
    sg = extract src ...      (3)
    sb = extract src ...      (4)
    sa = extract src ...      (4, src dies)

    dst = load32 ...          (5)
    dr = extract dst ...      (6)
    dg = extract dst ...      (7)
    db = extract dst ...      (8)
    da = extract dst ...      (8, dst dies)

    r = add sr dr             (7, sr and dr die)
    g = add sg dg             (6, sg and dg die)
    b = add sb db             (5, sb and db die)
    a = add sa da             (4, sa and da die)

    rg   = pack r g ...       (3, r and g die)
    ba   = pack b a ...       (2, b and a die)
    rgba = pack rg ba ...     (1, rg and ba die)
    store32 rgba ...          (0, rgba dies)

That original ordering of the code needs 8 registers (perhaps with a
temporary 9th, but we'll ignore that here).  This CL will rewrite the
program to something more like this by recursively issuing inputs only
once needed:

    src = load32 ...       (1)
    sr  = extract src ...  (2)
    dst = load32 ...       (3)
    dr  = extract dst ...  (4)
     r  = add sr dr        (3, sr and dr die)

    sg  = extract src ...  (4)
    dg  = extract dst ...  (5)
     g  = add sg dg        (4, sg and dg die)

    rg  = pack r g         (3, r and g die)

    sb  = extract src ...  (4)
    db  = extract dst ...  (5)
     b  = add sb db        (4, sb and db die)

    sa  = extract src ...  (4, src dies)
    da  = extract dst ...  (4, dst dies)
     a  = add sa da        (3, sa and da die)

    ba  = pack b a         (2, b and a die)

    rgba = pack rg ba ...  (1, rg and ba die)
    store32 rgba  ...      (0)

That trims 3 registers off the example, just by reordering!
I've added the real version of this example to SkVMTest.cpp.
(Its 6th register comes from holding the 0xff byte mask used
by extract, in case you're curious).

I'll admit it's not exactly easy to work out how this reordering works
without a pen and paper or trial and error.  I've tried to make the
implementation preserve the original program's order as much as makes
sense (i.e. when order is an otherwise arbitrary choice) to keep it
somewhat sane to follow.

This reordering naturally skips dead code, so pour one out for ☠️ .
We lose our cute dead code emoji marker, but on the other hand all code
downstream of Builder::done() can assume every instruction is live.

Change-Id: Iceffcd10fd7465eae51a39ef8eec7a7189766ba2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249999
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-22 21:49:05 +00:00
Chris Dalton
766b4c9c21 Rename sampleVariablesSupport() to sampleMaskSupport()
We have only implemented support for the sample mask. Renaming the cap
to reflect that.

Change-Id: I10b5923c7464093187336016963a8ac51ebd54f5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249932
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-10-22 21:08:55 +00:00
Chris Dalton
23716d42f7 Rename gl_SampleMask to sk_SampleMask
Change-Id: I3924c6f76edf310a984e4fd89478b00eeec69722
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249931
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-22 20:36:00 +00:00
Herb Derby
266598ae71 Reland "Use common fallback code for drawing an SkGlyphRun"
This is a reland of b09131f476

Original change's description:
> Use common fallback code for drawing an SkGlyphRun
> 
> This reorganizes the code so that Mask, SDFT and Paths
> share calling the fallback code. It also orders the
> different drawing methods from most frequent to least.
> 
> Change-Id: I1bbfc92765682c6a20d59da34734f127a6d017cb
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249558
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Herb Derby <herb@google.com>

Change-Id: I6977a4d03831329a85c2a8563c15382d7b9dd387
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249979
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-22 20:30:57 +00:00
Michael Ludwig
915b779f9c Revert "Track device coordinate space as matrix"
This reverts commit b74d5548a4.

Reason for revert: see if this fixes the android roll

Original change's description:
> Track device coordinate space as matrix
> 
> This is a required step to be able to cleanly draw image filtered
> device layers with arbitrary matrices, instead of relying on
> SkMatrixImageFilter to apply the transformation.
> 
> Bug: skia:9545
> Change-Id: I8d84679a281538875cf4a1b73565294fb7f89c86
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249076
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Mike Reed <reed@google.com>

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

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

Bug: skia:9545
Change-Id: Ie374a7500cfbff35cb0782beb863086e118a005a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249986
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-10-22 18:09:36 +00:00
Brian Salomon
2638f3d44b rename atlassize->atlasdimensions
Change-Id: I0262ed26f0b3523302bbb4e94dfca94d120fc70c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249980
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-22 16:57:01 +00:00
Robert Phillips
61fc799759 Add creation-time POD memory pool for GrOps
This CL begins pulling some of the work forward into onPrePrepare.

Change-Id: If049e0662db51b465b8b82aafebeef2323bddfd4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249802
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-22 16:35:41 +00:00
Michael Ludwig
6387dc19f6 Revert "Enable Programs (formerly GLPrograms) test for other APIs"
This reverts commit 598741667a.

Reason for revert: segfaults on Pixel bots

Original change's description:
> Enable Programs (formerly GLPrograms) test for other APIs
> 
> Bug: skia:9365
> Change-Id: I2eeac4e628425411b0a8f9ffa94ad61d58254b77
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249806
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Eric Boren <borenet@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

TBR=borenet@google.com,jvanverth@google.com,robertphillips@google.com

Change-Id: I286c637490bb8a21c0020a8935ce4c850b98f6b0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9365
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249978
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-10-22 15:39:49 +00:00
Brian Salomon
9f2b86c54d More SkISizification in GPU code.
Uses SkISize instead of separate width/height variables in many places.

No functional change.

Change-Id: If87b2c57e43d810f0820c4e3c9ef8e6b8ebd10ba
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249886
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-22 15:04:07 +00:00
Herb Derby
3c5b68efb7 Revert "Use common fallback code for drawing an SkGlyphRun"
This reverts commit b09131f476.

Reason for revert: May break android

Original change's description:
> Use common fallback code for drawing an SkGlyphRun
> 
> This reorganizes the code so that Mask, SDFT and Paths
> share calling the fallback code. It also orders the
> different drawing methods from most frequent to least.
> 
> Change-Id: I1bbfc92765682c6a20d59da34734f127a6d017cb
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249558
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Herb Derby <herb@google.com>

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

Change-Id: Id56187503b0eb8a9bc666fbd5c8e0f07e1510c46
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249977
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-22 14:56:09 +00:00
Greg Daniel
901b98ec55 Add SurfaceProxyView support to Surface/TextureContext.
Bug: skia:9556
Change-Id: I8dfe0a053690acdfdc487cf478e20ea9595d0121
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249880
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-22 14:54:07 +00:00
Jim Van Verth
598741667a Enable Programs (formerly GLPrograms) test for other APIs
Bug: skia:9365
Change-Id: I2eeac4e628425411b0a8f9ffa94ad61d58254b77
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249806
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-22 14:36:09 +00:00
Greg Daniel
a83de58450 Add GrSurfaceProxyView and add support for it on GrRenderTargetContext.
Bug: skia:9556
Change-Id: I681c364cef6867feb0ae06a53cd7d264d7163e35
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249879
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-22 13:58:17 +00:00
Kevin Lubick
2be14d3215 [fuzzing] Add two fuzzers for SkDescriptor
One is an API fuzzer, the other is for deserializing.

Bug: skia:9548
Change-Id: I5923b8fb76f36ec09fca74d5ba82245a8ddb5938
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249776
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2019-10-21 20:48:15 +00:00
Hal Canary
c056e169ea SkPDF: simplify Producer metadata logic
Bug: skia:9552
Change-Id: Ifa199048e6d38ccb28f055b77128971411203188
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249800
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-10-21 20:01:47 +00:00
Mike Klein
ff011900e3 remove SkBitmapProcState::fInvKy
It's only used in asserts, and it's completely redundant with other
asserts based on fInvMatrix.

Change-Id: I150dc5b948e5703fff75bf857cabb173428b081f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249818
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-21 18:32:29 +00:00
Stephen White
c797483a90 Dawn: fix rendering to mipmapped textures.
Use a texture view with a mipLevelCount of 1 when using a texture
as an attachment.
Dawn validation will fail if the view has more than one mip.

Change-Id: I6a3594dade9f65fa8e713d433797414c6ba8ecec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249423
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-10-21 18:22:08 +00:00
Mike Klein
d4db6dad1d remove SkBitmapProcState::fInvType
It's totally redundant with fInvMatrix.getType(),
and mostly used in asserts, where the SkMatrix
methods are way easier to read than type masks.

Change-Id: I970f4ebbc1aa87a287ce965add827cdc6a3be5ff
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249816
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-10-21 18:11:38 +00:00
Mike Klein
7333ed23d3 remove unused SkBitmapProcState fields
None of these are used.

Change-Id: Ia8c0eb88db747da55fd03ff1632820a521ed1842
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249817
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-21 17:59:59 +00:00
Jim Van Verth
549666c1b5 Metal: adjust framebuffer size by contentsScale.
If the layer has a scale factor we need to allocate a larger framebuffer.
Otherwise we'll end up drawing to a fraction of the window.

Bug: skia:9554
Change-Id: I93d1e0dc7172ed10bb99ce45524561ad841f0101
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249803
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-21 16:41:03 +00:00
Herb Derby
b09131f476 Use common fallback code for drawing an SkGlyphRun
This reorganizes the code so that Mask, SDFT and Paths
share calling the fallback code. It also orders the
different drawing methods from most frequent to least.

Change-Id: I1bbfc92765682c6a20d59da34734f127a6d017cb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249558
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-21 16:06:53 +00:00
Stephen White
f0c92a0408 Dawn: don't pretend to support 565, 4444 or Gray_8 pixel configs.
Mark them as untexturable, and they'll be converted at a higher level.
Use SkRectMemcpy() for GrDawnTexture::upload().
This also fixes an issue with large texture uploads.

Change-Id: I5b7041cde324f204074193398ca9f8b5a5dbd744
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249417
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-10-21 14:42:31 +00:00
Michael Ludwig
b74d5548a4 Track device coordinate space as matrix
This is a required step to be able to cleanly draw image filtered
device layers with arbitrary matrices, instead of relying on
SkMatrixImageFilter to apply the transformation.

Bug: skia:9545
Change-Id: I8d84679a281538875cf4a1b73565294fb7f89c86
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249076
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-10-21 14:34:11 +00:00
Michael Ludwig
c89d1b56e5 Rename SkDevice::ctm() to localToDevice()
This helps differentiate the SkCanvas' total CTM
(canvas transform matrix), from the device-specific transform matrix
that maps draws from local to device space.

Bug: 9545
Change-Id: I67f40d9b1bc92377bf0520fbc9245f1058e179e6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249424
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-10-18 18:04:31 +00:00
Jim Van Verth
cbf59e0e39 Use LazyProxy to set up Metal swapchain.
The purpose of this is to delay acquiring the next drawable in the
swapchain to avoid stalling and gain better parallel execution between
the CPU and GPU.

Change-Id: I40ef7672394fd00616de43685530d2feaf7cab2d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249005
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-18 14:04:41 +00:00
Stephen White
f4b3d6b9f3 Dawn: fix single-sided stencil.
GrStencilSettings requires that single-sided stencil be accessed via
frontAndBack(), not via front() or back().

Change-Id: Ib35e6187bda05e21c164685f7b726ce4849979fe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249416
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-10-18 13:00:00 +00:00
Herb Derby
20eafffd2d Convert prepareForDrawing to glyph buffers
* Have prepareForDrawing leave empty glyphs in.
  This allows the SkSourceGlyphBuffer to track indexes properly.
  Rename prepareForDrawingRemoving empty to prepareForDrawing.
  This is only temporary until the new unified drawing CL is submitted.
* Make the device fallback case properly support subpixel positioning.
* Add calls to SkDrawableGlyphBuffer to handle the glyph flow of the
  prepareForDrawing system.
* Remove most of the old buffering system except for path handling.

Change-Id: I3e51c96ec041896e07dd4a8f580c207e857911f7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249221
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-18 03:05:59 +00:00
Mike Klein
ad82b40708 Revert "impl. _clamp_8888 shaders using general mechanism"
This reverts commit dfa1de9180.

Reason for revert: 1 Google3 Scuba diff.  :/

Original change's description:
> impl. _clamp_8888 shaders using general mechanism
> 
> This should result in roughly the same binary at
> the same speed but with less duplication of code.
> 
> The idea is that we take all the runtime configurable
> fields and make it clear to the compiler that they're
> actually constants, and it propagates them through.
> 
> Order of operations does change slightly up in the float
> code and some operations become FMAs so there are tiny
> invisible diffs when we don't hit lowp.
> 
> Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
> Change-Id: Ic9d44207bcad39d0cf96c0b55bd65fb61997194f
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249054
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

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

Change-Id: Ic549e8c6488dc6db1d71e34f5e06fcdf9410c8b6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249279
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-17 20:13:21 +00:00
Hal Canary
c99a4df86e WebGL2: Add BlitFramebuffer, ShaderDerivativeSupport
fix from paraboul@

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Debian9-EMCC-GCE-GPU-AVX2-wasm-Release-All-CanvasKit,Test-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-CanvasKit

Bug: skia:9052
Change-Id: If0c408f33f4bb6cd47513a2c1f3a1e3ac3da3320
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249228
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2019-10-17 20:05:39 +00:00
Mike Klein
dfa1de9180 impl. _clamp_8888 shaders using general mechanism
This should result in roughly the same binary at
the same speed but with less duplication of code.

The idea is that we take all the runtime configurable
fields and make it clear to the compiler that they're
actually constants, and it propagates them through.

Order of operations does change slightly up in the float
code and some operations become FMAs so there are tiny
invisible diffs when we don't hit lowp.

Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: Ic9d44207bcad39d0cf96c0b55bd65fb61997194f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249054
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-17 19:08:39 +00:00
Robert Phillips
6c2aa7af0b Revert "Reduce inputs to GrProgramDesc::Build method(s)"
This reverts commit 63a3873957.

Reason for revert: fail

Original change's description:
> Reduce inputs to GrProgramDesc::Build method(s)
> 
> This moves the computation of the GrStencilSettings into GrProgramDesc::Build for the Vulkan backend
> 
> This makes it clear that the stencilSettings are determined by the GrProgramInfo.
> 
> Note that this does change some behavior in that the number of stencil bits is now determined (and set up for) the number requested not the number actually available on the attached stencil buffer at flush time.
> 
> Bug: skia:9455
> Change-Id: Ia5fa4e30e34952c1a492b8d571094abf2291b2a4
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248696
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

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

Change-Id: Ib0b337c19acea8000b5592f3dfeda181fd6ef157
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9455
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249222
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-17 19:06:52 +00:00
Robert Phillips
63a3873957 Reduce inputs to GrProgramDesc::Build method(s)
This moves the computation of the GrStencilSettings into GrProgramDesc::Build for the Vulkan backend

This makes it clear that the stencilSettings are determined by the GrProgramInfo.

Note that this does change some behavior in that the number of stencil bits is now determined (and set up for) the number requested not the number actually available on the attached stencil buffer at flush time.

Bug: skia:9455
Change-Id: Ia5fa4e30e34952c1a492b8d571094abf2291b2a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248696
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-17 18:32:40 +00:00
Robert Phillips
f272bea9a6 Plumb GrBackendFormat into the GrPrimitiveProcessor::TextureSampler
This is not a substantive CL. It is just setting up for removing the
usage of the GrGpu in the creation of the GrProgramDesc.

Change-Id: Ic24204de256862e5e780626bde3a44f4d735c6e9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249121
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-17 18:07:59 +00:00
Dominik Röttsches
8c1cb1c3f2 Remove unused transform parameter of ctfont_create_exact_copy
All instances were using this function with a nullptr transform
parameter. Remove the parameter and pass nullptr to CoreText call
instead.

Change-Id: Ic3b4d97a800758a45f1d771cbf9230e255775821
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248936
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-10-17 17:48:19 +00:00
Herbert Derby
d7689d434c Reland "Introduce SkGlyphSourceBuffer"
This is a reland of 77c53087c1

Original change's description:
> Introduce SkGlyphSourceBuffer
>
> SkGlyphSourceBuffer provides a system for taking rejected glyphs from
> one glyph drawing stage, and turns them into the source for the next stage.
> It is rarely used, so it tries to conserve memory.
>
> Change-Id: I5275ffa3e804fc494eb2f5803e0cf2d148a755f7
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248260
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Herb Derby <herb@google.com>

Change-Id: Ib90508a21993b12c71ee86cbdeb51c4d4c2ec913
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249128
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-17 17:26:37 +00:00
Greg Daniel
c3a927fc45 Remove GrPixelConfigIsCompressed call.
Bug: skia:6718
Change-Id: Ia6363d74f016b076fa5e19a57d223f7c47b723c0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248999
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-17 17:10:17 +00:00
Mike Klein
97afd2e21c add bsl.16b, cmeq.4s, cmgt.4s
These implement select, eq_i32, lt_i32, and gt_i32 on ARMv8.

Change-Id: Ic36dda1cc425ca91700f9b120594e420ea0f560a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248970
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-17 01:54:33 +00:00
Herb Derby
f29cb70281 Revert "Introduce SkGlyphSourceBuffer"
This reverts commit 77c53087c1.

Reason for revert: Breaks some windows builds

Original change's description:
> Introduce SkGlyphSourceBuffer
> 
> SkGlyphSourceBuffer provides a system for taking rejected glyphs from
> one glyph drawing stage, and turns them into the source for the next stage.
> It is rarely used, so it tries to conserve memory.
> 
> Change-Id: I5275ffa3e804fc494eb2f5803e0cf2d148a755f7
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248260
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Herb Derby <herb@google.com>

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

Change-Id: I4270d092f8daba3dddcadd6abbed10f14bf57490
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249077
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-16 21:28:35 +00:00
Robert Phillips
1dfc77cc08 Add unit test to exercise GrTextureFreed message handling after a context abandon
Bug: 1011368, 1014993
Change-Id: Ie9f7be15b321daa05fcac8109a24e42810f10737
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249008
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-16 21:11:12 +00:00
Herbert Derby
77c53087c1 Introduce SkGlyphSourceBuffer
SkGlyphSourceBuffer provides a system for taking rejected glyphs from
one glyph drawing stage, and turns them into the source for the next stage.
It is rarely used, so it tries to conserve memory.

Change-Id: I5275ffa3e804fc494eb2f5803e0cf2d148a755f7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248260
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-16 20:55:32 +00:00
Robert Phillips
ddc21485cb Work around un-safe downcast in PromiseLazyInstantiateCallback destructor after a context abandon
90% of this CL is just renaming. The only two substantive changes are:
   holding a GrTexture* (rather than a GrGpuResource*) in the GrTextureFreedMessage (this avoids the downcast)
   adding the abandoned() checks to the two GrContext::purgeUnlockedResources methods (this prevents accesses of the message queue)

Bug: 1011368, 1014993
Change-Id: Ifff3842f7802add6b7cd34595578369543698ba1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249001
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-16 19:24:03 +00:00
Mike Klein
5d835d0e98 remove ternary min/max
It's just syntax sugar, and it's
too easy to typo max() -> mad().

Change-Id: Idd0088292c68547d45c274e80ee8735f698d0c36
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248963
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-10-16 19:00:16 +00:00
Hal Canary
e054d3cf3d CanvasKit: Switch to WebGL 2.0
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Debian9-EMCC-GCE-GPU-AVX2-wasm-Release-All-CanvasKit,Test-Debian9-EMCC-GCE-CPU-AVX2-wasm-Release-All-CanvasKit

Bug: skia:9052
Change-Id: I444031276aea90d82f289b16ba6cd36de5192abd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248927
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2019-10-16 18:45:46 +00:00
Brian Osman
11e6aa823d Starting to hack up HDR transfer function support
Brings over skcms' encoding scheme, etc.

Change-Id: Ib8abec911acd1c50df3b201b4a9bde01b1cb123b
Bug: chromium:960620
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/249000
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-16 18:40:16 +00:00
Mike Klein
0f61c12737 add used_in_loop bit to skvm::Builder::Instruction
Most hoisted values are used in the loop body (and that's really the
whole point of hoisting) but some are just temporaries to help produce
other hoisted values.  This used_in_loop bit helps us distinguish the
two, and lets us recycle registers holding temporary hoisted values not
used in the loop.

The can-we-recycle logic now becomes:
   - is this a real value?
   - is it time for it to die?
   - is it either not hoisted or a hoisted temporary?

The set-death-to-infinity approach for hoisted values is now gone.  That
worked great for hoisted values used inside the loop, but was too
conservative for hoisted temporaries.  This lifetime extension was
preventing us from recycling those registers, pinning enough registers
that we run out and fail to JIT.

Small amounts of refactoring to make this clearer:
   - move the Instruction hash function definition near its operator==
   - rename the two "hoist" variables to "can_hoist" for Instructions
     and "try_hoisting" for the JIT approach
   - add ↟ to mark hoisted temporaries, _really_ hoisted values.

There's some redundancy here between tracking the can_hoist bit, the
used_in_loop bit, and lifetime tracking.  I think it should be true, for
instance, that !can_hoist && !used_in_loop implies an instruction is
dead code.  I plan to continue refactoring lifetime analysis (in
particular reordering instructions to decrease register pressure) so
hopefully by the time I'm done that metadata will shake out a little
crisper.

Change-Id: I6460ca96d1cbec0315bed3c9a0774cd88ab5be26
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248986
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-16 18:29:06 +00:00
Hal Canary
04b06774be [minor] SkGlyphRunList public before private
Change-Id: I7e82ff246ebab3e28c7400f5e09a0213dfffdbb0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248998
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-10-16 17:44:06 +00:00
Greg Daniel
2fca87d9b1 Switch GrFillInData to use GrColorType instead of GrPixelConfig.
Bug: skia:6718
Change-Id: Ic705a102bf1d84a800a856c9b1cfd614cf461500
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248997
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-16 15:45:36 +00:00
Mike Klein
91c1a231d4 add a TODO about lifetimes and hoisting
The logic for extending the lifetimes of hoisted values is yet again not
quite right.  We do need to track the proper lifetime of these values,
and only extend them to infinity if we actually hoist them.  The JIT
has a no-hoist fallback plan for JITting when under register pressure,
but we're actually undermining that by treating these values as eternal
today, burning those registers where they should be recycled.

So I think the answer to this is either,
   1) add a used_in_loop bit, and treat as eternal only if hoist && used_in_loop
   2) track two death points, one when hoisted, one when not

I think the first is cleaner, and maybe easier too.

Change-Id: I09704ecaf12896d242850c2e827b19e31fb1dd70
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/242591
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
2019-10-16 15:37:38 +00:00
Brian Osman
5b43113e75 Interpreter: Reflect all uniform variables in ByteCode
Gives enough information to locate variables by name (using the same
scheme as glGetUniformLocation), and provide hints about type and size.

Bug: skia:9513
Change-Id: I9444f1042471967a79c9f05167dcdb78eca41bad
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244502
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-10-16 15:35:48 +00:00
Robert Phillips
29f3854d4e Start disentangling tessellation from pipeline creation in GrTextureOp
The idea/dream here is to be able to (optionally) tessellate in onPrePrepareDraws and then just copy the prePrepared data into the vertex buffer.

Change -Id: I899eebce36dc9516bfc4b0fce5e657458167c772

Change-Id: I899eebce36dc9516bfc4b0fce5e657458167c772
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248804
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-16 14:13:14 +00:00
Chris Dalton
083a75d676 Revert "Reland "ccpr: Unblacklist Qualcomm with msaa""
This reverts commit 7efe9e82a5.

Reason for revert: Pixel crash repro identified

Original change's description:
> Reland "ccpr: Unblacklist Qualcomm with msaa"
> 
> This is a reland of 3f55695a04
> 
> Original change's description:
> > ccpr: Unblacklist Qualcomm with msaa
> > 
> > Bug: skia:
> > Change-Id: I1ab69fe87136955b01a329675f1d0affec3700ec
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245530
> > Commit-Queue: Chris Dalton <csmartdalton@google.com>
> > Reviewed-by: Brian Salomon <bsalomon@google.com>
> 
> Bug: skia:
> Change-Id: Icbd0ad7546bc089c538afafed515b22b05130e47
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248702
> Reviewed-by: Ravi Mistry <rmistry@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

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

Change-Id: I0e8df5691a787aa8dade7c6386078c5ead746f6d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248911
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-16 08:19:34 +00:00
Lee Salzman
634d15032d fix SkTextBlob::getIntercepts regression no longer considering glyph vertical offset
As of revision 7924d9a4ae (https://skia-review.googlesource.com/c/skia/+/222277), SkTextBlob::getIntercepts no longer considers each glyph's vertical offset. So getIntercepts will only work properly if each glyph has a vertical offset of 0. This patch restores the original behavior of offsetting the bounds from each glyph's position.

Without this fix, Firefox has no way to implement proper intercepts for underlining decorations when glyphs are offset...

Change-Id: I06fc4b63bd57c9d70e3b07a95ead69f3caa8b33a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248724
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Lee Salzman <lsalzman@mozilla.com>
2019-10-16 00:02:08 +00:00
Stephen White
20c626aa23 Update Dawn backend to ToT. This is about 3 months of changes.
Remove optional param to SetIndexBuffer().
Update SetVertexBuffers -> SetVertexBuffer.
PipelineStageDescriptor -> ProgrammableStageDescriptor.
Update past generator changes, ring buffer changes, etc.
Add ErrorScopeTracker.cpp/.h to the build.
Add Vulkan MemoryResourceAllocator files.
Fix vertexShader ShaderStageDescriptor.
Fix spirv-cross include path.
TextureUsageBit -> TextureUsage, etc.
DawnErrorCallback fixes.
Removal of texture.CreateDefaultView.
Fix GL supported_extesions mumbo jumbo.
Update past ChromeOS change.
Add PassResourceUsageTracker.cpp/.h to build.
Add GLFormat.cpp/.h to build.
Add Extensions and Toggles to the build.
Add EncodingContext, AttachmentState to build.
Add RenderEncoderBase to Dawn build.
gn format dawn BUILD.gn, spirv-cross BUILD.gn.

Change-Id: I26538d63c93668647048814aad6ad456ae323679
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248261
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-10-15 22:26:38 +00:00
Greg Daniel
ba8752f37d Remove use of GrColorType as in param in SimpleTextureEffect.fp to just constructor param.
This should also fix a bug in the check generated file housekeeper bot.

Change-Id: I70eeb1f8783c760fcba1e81ea79b2734cae54b25
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248856
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-15 21:28:53 +00:00
Chris Dalton
7efe9e82a5 Reland "ccpr: Unblacklist Qualcomm with msaa"
This is a reland of 3f55695a04

Original change's description:
> ccpr: Unblacklist Qualcomm with msaa
> 
> Bug: skia:
> Change-Id: I1ab69fe87136955b01a329675f1d0affec3700ec
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245530
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

Bug: skia:
Change-Id: Icbd0ad7546bc089c538afafed515b22b05130e47
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248702
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-15 20:15:37 +00:00
Greg Daniel
836080f43f Remove some unneeded colortype format validation checks in ProxyProvider.
These checks are no longer needed as we have enough checks in other parts
of the code now. Additionally we want to remove any GrColorType and format
compatibility checks in proxy provider since proxies will not have knowledge
of color types in the future.

This also lets us get ride of some used of GrPixelConfig.

Change-Id: Ice835cba69ff783fd7e7d9b57321882b1e50093a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248803
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-10-15 19:29:17 +00:00
Chris Dalton
b50cc81a3c Reland "Use GL_QCOM_TILED_RENDERING to explicitly discard stencil"
This is a reland of 7e6d3b00ad

Original change's description:
> Use GL_QCOM_TILED_RENDERING to explicitly discard stencil
> 
> Bug: skia:
> Change-Id: I7a6234f6a9955dbda83ab2d8fc6930fe680e102b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245529
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

Bug: skia:
Change-Id: Ifb2ac1a595be0ca55d75d53d85bf76f7d98e1c15
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246282
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-15 19:23:48 +00:00
Greg Daniel
c594e62698 Plumb GrColorType through all ops/processors that sample textures.
This change also allows for the remove of GrPixelConfigIsOpaque function.

Bug: skia:6718
Change-Id: I7e7b70f02d911eda67640d648fb6348091e0f55d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248698
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-15 18:34:37 +00:00
Mike Klein
fb6a1abe45 try un-teaching TSAN about Mac semaphores
Now using dispatch_semaphore_t, maybe it already knows?

Change-Id: I65499ceaee195293541a37704ae424bbee7c8740
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248456
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-10-15 16:35:04 +00:00
Robert Phillips
f22c57ddcc Centralize GrSamplerState key creation
This also changes how the Metal backend computes its key (removing the # of mipMap levels) and removes the use of the # of mipMap levels when setting up the MTLSamplerDescriptor

Change-Id: I29fedc7c7a12773f3efeea824bca98cbcde98be8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248565
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-15 12:54:40 +00:00
Chris Dalton
858cf233ef Call setNeedsStencil() when clearing stencil
Bug: chromium:1008312
Change-Id: I6e1d160515c6689ac6d62c40e712df287d47f955
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248723
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-14 23:51:51 +00:00
Robert Phillips
7d7aaf46ae Slim down GrFragmentProcessor::TextureSampler and GrPrimitiveProcessor::TextureSampler
I'm gearing up to add a GrBackendFormat to GrPrimitiveProcessor::TextureSampler so this CL just reduces the API surface area I'll need to alter.

The GrFragmentProcess::TextureSampler changes just keep it aligned with its "twin".

Change-Id: Ia9ece03ca76b4f6c8ebdaf0e0ba0061ecde6c5f4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248558
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-14 19:48:19 +00:00
Mike Klein
33c36e05c3 insist SkPngEncoder's input is initialized
I'd rather catch uninitialized input here than
somewhere deep down in zlib or libpng.

Bug: chromium:1013368
Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN
Change-Id: I37f5a66a8fc12c7e0ce6d3100de94021bb5343ef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248551
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-14 18:13:37 +00:00
Stephen White
729c78d617 Dawn backend: update to Skia API changes.
Update to GrProgramInfo change.
Implement GrCaps::bytesPerPixel().

Change-Id: Ic695fe85f2cd1389918724d17368df60f88ee2db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247796
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-14 17:28:04 +00:00
Chris Dalton
2c8891b6ac Allow fullscreen clears when generating blurs
If we don't care about any of the existing content in the framebuffer
(which we don't in the case of blurs) then fullscreen clears are
always a big win on tilers.

Bug: chromium:1008192
Change-Id: I538ce295ab91c56e88b6cb44773a35644980a162
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247798
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-14 16:29:48 +00:00
Jim Van Verth
5f72b494fe Remove fake SDK #defines for Metal backend.
Our base supported SDK is the one available in Xcode 10, so we don't
need these any more.

Bug: skia:9408
Change-Id: I71f4b6ee77a1f9b0a3b2dfa902c1bf23f2d66696
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247365
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-14 15:33:28 +00:00
Robert Phillips
d5c1f342b3 Reduce usage of GrProgramDesc::KeyHeader
Ideally the GrProgramDesc would be a simple program key. We currently can't remove usage of the KeyHeader for "hasPointSize" but this, at least, removes the other uses.

Bug: skia:9455
Change-Id: Ie9e15997ee79c6ffe62b5cd2c96885ca06204383
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247597
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-14 14:18:23 +00:00
Greg Daniel
a4828a13c2 Remove GrPixelConfigIsAlphaOnly call and transition calls to it.
Bug: skia:6718
Change-Id: I4d9c31bc0ca42a80e652de29462531587efef031
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248257
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-14 13:49:14 +00:00
Robert Phillips
4face8300e Plumb GrPrimitiveType down to GrProgramDesc::Build
This defers the decision about whether pointSize is emitted until down in GrProgramDesc::Build. Although a bit wonky in GL's case, this anticipates the world where each cluster of meshes always has the same GrPrimitiveType.

Ultimately, we would like the GrPrimitiveType to be part of the GrProgramInfo and known far earlier.

Change-Id: I65566b2d77eab6a69f7af5aa60a069299b58db65
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246018
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-14 12:48:44 +00:00
Herbert Derby
3838fe3c82 Use SkDrawableGlyphBuffer for bitmap rendering
Change-Id: I0e7c995123c55b63b2d4c9ddee033d7098cdc358
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247416
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-11 22:09:16 +00:00
Robert Sesek
caf025e8f5 Switch SkSemaphore to use dispatch_semaphore_t on Mac.
The dispatch_semaphore_t is a higher-level, more-efficient semaphore
primitive if the cross-process capabilities of semaphore_t are not
needed.

Bug: chromium:1012386
Change-Id: I7c39fa6b8c015bdf7b4b2275da8165165253c2d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248259
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-11 22:08:46 +00:00
Greg Daniel
a00bcad94b Remove GrPixelConfig version of CompressedDataSize.
Bug: skia:6718
Change-Id: I0f9c7d89e732c59bdbe76ab45d42934029106efb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247684
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-10-11 17:51:05 +00:00
Herbert Derby
0be4c2cb86 Introduce SkGlyphDrawableBuffer
Used for efficient glyph id to glyph lookup.

This is part of a larger change:
https://skia-review.googlesource.com/c/skia/+/238196

Change-Id: Ifce43879685bf0d760a7e12dceb32f7a650be687
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247340
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-10-11 15:40:24 +00:00
Greg Daniel
6bc4fd1370 Fix GL RGB format bytes per pixel.
Change-Id: I57c64d1d36a9080c09f2cac83c0c8ebc308210e2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247960
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-11 14:15:01 +00:00
Greg Daniel
7fd7a8aef0 Remove uses of GrPixelConfig version of GrBytesPerPixel.
Bug: skia:6718
Change-Id: I8421f38644567973f0b8de29b745ca9a471583bf
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247598
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-10 20:39:05 +00:00
Robert Phillips
66ae304f50 Plumb GrTextureProxies down into emitSampler/addSampler
This is still pretty far away from this goal but, the goal here is to be able to create a program w/o requiring instantiated proxies.

Bug: skia:9455
Change-Id: I9526a3a737438c5331fef4a621be4786ef43c080
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247397
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-10 19:32:05 +00:00
Robert Phillips
2d8a95ee71 Add "meshCount" to GrProgramInfo
This improves the encapsulation of the GrProgramInfo class.

Bug: skia:9455
Change-Id: Ic241ba4a2c2edea3e774522065371e5ed8cc2da3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247438
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-10 17:18:15 +00:00
Robert Phillips
835cbdaf70 Pass GrProgramInfo further down Vulkan call chain
This just resolves some lingering TODOs from:

https://skia-review.googlesource.com/c/skia/+/244118 (Add GrProgramInfo to centralize management of program information)

Bug: skia:9455
Change-Id: I58e8a4e039ba8369b381725be196dacf3bcd07c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247436
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-10 15:45:31 +00:00
Jim Van Verth
ce3cf804f1 Draw perspective text as paths.
Perspective glyphs can vary in screen size so it's unclear which SDF
level is best, and even if we choose one for an entire subrun it's
possible that a given glyph will have artifacts if it's too big.
Instead we fall back to paths unless specifically requested to
support perspective SDF.

Bug: skia:9515
Change-Id: I75ac1d60f2eaa0e63de201b5db36fe0485fff463
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247398
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-10 15:35:51 +00:00
Robert Phillips
7de1333df7 Add computation of requestedFeatures to GrProgramInfo and use it
This is a deferred TODO/code review request. In general, this improves the encapsulation of program information w/in GrProgramInfo. Additionally, it is desirable to stop using the Desc/Key to access this information.

Bug: skia:9455
Change-Id: I854ff3225a49657d3a523e88e4bfa549128ee486
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247336
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-10 15:20:22 +00:00
Nigel Tao
477f221d98 Update Wuffs version to 0.2.0-rc.1
Bug: skia:8235
Change-Id: Ia53348d620e1b9b6651ce5035dc4def02da67df6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247156
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2019-10-10 15:12:21 +00:00
Herb Derby
d543fbbd6f Revert "Draw perspective text as paths."
This reverts commit 76826fc91c.

Reason for revert: Missing some characters

Original change's description:
> Draw perspective text as paths.
> 
> Perspective glyphs can vary in screen size so it's unclear which SDF
> level is best, and even if we choose one for an entire subrun it's
> possible that a given glyph will have artifacts if it's too big.
> Instead we fall back to paths.
> 
> Bug: skia:9515
> Change-Id: I88f03b25651df0222459f5dbd03eee9465b97487
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247437
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Jim Van Verth <jvanverth@google.com>

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

Change-Id: I5e39566c35b49323913eb72ff89ecbc91faac8ce
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9515
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247462
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-09 23:46:28 +00:00
Jim Van Verth
76826fc91c Draw perspective text as paths.
Perspective glyphs can vary in screen size so it's unclear which SDF
level is best, and even if we choose one for an entire subrun it's
possible that a given glyph will have artifacts if it's too big.
Instead we fall back to paths.

Bug: skia:9515
Change-Id: I88f03b25651df0222459f5dbd03eee9465b97487
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247437
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2019-10-09 20:53:20 +00:00
Herbert Derby
7951a0da32 Introduce SkGlyphPositionRoundingSpec.
SkGlyphPositionRoundingSpec encapsulates the information needed for rounding
positions correctly. This allows test to avoid using an SkStrike in future
unit tests.

This is part of a major rewrite:
https://skia-review.googlesource.com/c/skia/+/238196

Change-Id: I18dd6fe394df0fcbda492cefe2484c9bf9bb40d1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247338
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-09 19:53:01 +00:00
Robert Phillips
865d8d682c Centralize error checking w/in the GrProgramInfo class
Although not necessary I would like to centralize/encapsulate the error checking so there is just one place to go to update/extend this code. It does have the nice property that, since we validate in the ctor and this object is immutable, we only have to do it once (and can delete some code spread throughout the code base).

Bug: skia:9455
Change-Id: Iaa26c7a896a9bd053358a6f8424d7f5944b0117e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247339
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-09 19:09:01 +00:00
Greg Daniel
8b6661757a Add new public api on GrContext for computing image size.
This api will replace ComputeTextureSize.

Change-Id: I9befd8706f44250805315bdb13a559cf81c7142d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247337
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-09 18:57:20 +00:00
Robert Phillips
2579de4567 Tighten up creation of the GrProgramDesc and remove some unnecessary checks
This takes care of some of the deferred work from:

https://skia-review.googlesource.com/c/skia/+/244118 (Add GrProgramInfo to centralize management of program information)

Bug: skia:9455
Change-Id: If1cdfc0a0614babd18f7f4bccd445e03a6dbb9ae
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247301
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-09 16:50:32 +00:00
Ben Wagner
d687f741b6 Retain hints when subsetting for PDF.
There exist 'tricky' fonts which use bytecode hints to move all parts of
a glyph for legibility, not just to slightly tweak the outlines. Until
it is possible to detect these 'tricky' fonts, retain all font's
bytecode hints.

Bug: chromium:1010396
Change-Id: I4eaca967da1a853c8061a4997ce8b872a53fd2f1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247298
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-10-09 14:58:02 +00:00
Robert Phillips
7327c9ddfc Add GrRenderTask and GrOp prePrepare framework
We want to be able to pull more work forward when creating DDLs. The prePrepare entry points will allow us to perform this CPU-side preprocessing.

Change-Id: I2c0c7978dbf7d7c335425ea81ab2323cb9dcdbc3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247048
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-08 22:43:22 +00:00
Robert Phillips
901aff018b Add GrProgramInfo to centralize management of program information
This is the first step in moving the marshaling of program information earlier in renderTask processing (i.e., to onPrePrepare).

Change-Id: I91e3baed9a128e845bd32f9dbbacd9b21d852a3d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244118
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-08 20:35:51 +00:00
Greg Daniel
8803c2d8f3 Add bytes per pixel to metal format table.
Bug: skia:6718
Change-Id: I86108f9096d10b216eb08effb1d1274b383a3048
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247104
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-08 19:33:36 +00:00
Herbert Derby
1942d69227 Use SkZip in SkGlyphRun
* cleanup unused functions and fields.

Change-Id: I3a7902d04a150b4cca870c65cd9e5a655ca84d9a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247100
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-08 19:27:46 +00:00
Greg Daniel
e4bf3d162e Track gl format bytes per pixel on format table.
Bug: skia:6718
Change-Id: Id611e0f5c317908cb63f1afdafff28ebf6cf8158
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/247049
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-10-08 18:10:53 +00:00
Fredrik Söderquist
d1ed56e4be Fix mapping the morphology filter's radius when the CTM is a mirror op
When the CTM contained a "mirroring" operation - for example
scale(-1, 1) or scale(1, -1) - the radius of the morphology filter would
end up negative, essentially disabling the filter.
When mapping the radii, use the magnitude of a vector built from each
component of the radii instead of considering the radii as a plain
vector.

Bug: chromium:595244
Change-Id: Ia249f8962648f0a4e69b6d0becf87ee1ba6be9a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246996
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-10-08 14:34:57 +00:00
Greg Daniel
7efb1a6dbc Move vulkan BytesPerPixel to format table.
Bug: skia:6718
Change-Id: I1d540042d8b69393d1676d0f0cedca7f37ac88d7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246852
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-10-08 14:03:27 +00:00
Emircan Uysaler
cdab9dfdf5 Fix dedicated allocations for protected images
Although shouldAlwaysUseDedicatedImageMemory() returns true for
protected images, this does not take effect because of the error
in if-else logic.

Bug: skia:9016
Change-Id: Iffdfdf5d045b38d846d438969747ded617d96739
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246916
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-10-07 23:40:56 +00:00
Herbert Derby
fb5e64d7c2 Add quailty of life calls to SkZip
Add first, a ctor that will make an SkZip with more constness,
a safe default ctor, and allow SkSpan to be used as r-values.

Change-Id: Iaa89eee3a8994c3a0bd1def1a41e0f066dc872b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246822
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-10-07 23:25:16 +00:00
Greg Daniel
a718a61003 Enable preferring using primary CB over secondary CB.
Bug: skia:9512
Change-Id: Ie099d37191ca62918b88ac12bb0b93e252e3aa79
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243424
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-07 20:51:33 +00:00
Jim Van Verth
598903fe6d Guard some more Metal code to support older versions.
With these changes we can build across all versions of Metal, and for
the most part run on older OSes (further testing is necessary).

Bug: skia:9408
Change-Id: I00ee03b9a3a0e49483af4a610544b20d482a0cdd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245957
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-07 20:37:33 +00:00
Chris Dalton
38f0a4972a Add GL_QCOM_TILED_RENDERING as an optional interface
Change-Id: I29b53e674cd788ac188295060028bbb7805858a4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246281
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2019-10-07 18:42:01 +00:00
Robert Phillips
571177f015 Remove kLinesAdjacency and add kPath from/to GrPrimitiveType
kLinesAdjacency is no longer used while kPath has historically been left out.

Change-Id: I84be64a2e8ec79ff299a2bced73ded0be04df38e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246307
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-04 19:29:23 +00:00
Robert Phillips
405413fcec Clarify that the OpArgs' outputSwizzle comes from its GrRenderTargetProxy
Since we want to collect shader information early, this attempts to make clear that numSamples, origin and outputSwizzle can all be obtained from the target renderTargetProxy.


Change-Id: I42e0fd79e2163f17673ccdd344a31fbaadac5f53
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246298
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-04 18:03:32 +00:00
Michael Ludwig
05a777d442 Define coord space tagged geometry for image filters v2.
This is an alternative approach to https://skia-review.googlesource.com/c/skia/+/234896

It inverts the templates and coordinate spaces, so that each coordinate space is
defined by a struct that accepts the SkIRect/etc. type as an argument. For parameter
space and device space, the only exposed functionality is holding on to the coordinates
and moving into and out of the layer space (using the Mapping type, which now encapsulates
the definition of parameter, layer, and device space for a given CTM).

The LayerSpace struct has specialized definitions for each of the 6 key geometric types,
exposes accessors/mutators and operations like join/intersect that work on appropriate
layer-space geometry.

FilterResult and Context have been updated to use these new types, although they no
longer take a Usage enum. If this strategy works, FilterResult will be updated to have
more utilities to operate and read from its image in layer-space so there won't be a need
to have the image space (and the usage enum to differentiate between different image
spaces).

To further reinforce the differences between getInputBounds() and getOutputBounds() (which
previously used Usage to do this), they now accept/return values in device and parameter
space. This is no different than what SkCanvas would have done before calling the old
functions, but now that work is owned by SkImageFilter (seems like a good thing), and
achieves the same reinforcement.

Change-Id: I8bebb9fadf6c8f2bd51fa863b2d6f2e4a33dd08b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244515
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-10-04 16:40:00 +00:00
Mike Reed
a32654c13a Simple iterator for textblobs
bug: skia:9503

Change-Id: I5b4e2434c6085d048d6d0fc42b2b928439b1066b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246296
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-10-04 14:44:19 +00:00
Jim Van Verth
4187e0a416 Reland "Add less granular version of GrFence for older Metal versions."
This is a reland of 1e946aa24b

Original change's description:
> Add less granular version of GrFence for older Metal versions.
> 
> Rather than use MTLSharedEvent, we create a semaphore and
> signal it within the current command buffer's completion handler.
> The pointer to the semaphore is cast as GrFence and returned.
> The waitFence method recasts it and waits on the semaphore.
> 
> Bug: skia:8243
> Change-Id: I2c854c65a62786fe8031794008eb6844974ebefd
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245583
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

Bug: skia:8243
Change-Id: I63872c26b8f5c29cba6e618f418b291cf5ffac54
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246016
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-03 19:36:12 +00:00
Brian Salomon
9bd947ddb1 SkIRect::makeOffset(SkVector)
Change-Id: I0e236bf14acf1a8b7df3433be05a192633096df0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246098
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-03 19:32:42 +00:00
Brian Salomon
9241a6d394 Reland "Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime""
This is a reland of 6fc04f88a8

Original change's description:
> Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime"
> 
> This is a reland of ce240cc6fd
> 
> Original change's description:
> > SkSurface asynchronous read APIs allow client to extend pixel lifetime
> > 
> > Previously the pixel data passed to the client was only valid during
> > the client's callback. This meant if the client wanted to defer
> > processing of the data a copy was necessary.
> > 
> > Now we pass an object to the callback and the pixel lifetime is tied
> > to the lifetime of that object.
> > 
> > The object may be holding a GPU transfer buffer mapped. We don't assume
> > that the object will be released on the direct GrContext thread. So
> > when the object is destroyed it posts a message to a new type,
> > GrClientMappedBufferManager, hanging off the direct context. The direct
> > context will periodically check for messages and unmap and then unref
> > buffers so that they can be reused. Currently this is done in
> > GrContext::performDeferredCleanup() and GrDrawingManager::flush().
> > 
> > The old API is kept around for backwards compatibility but it is
> > reimplemented as a bridge on top of the new mechanism.
> > 
> > Also a utility function to SkImageInfo is added to directly make a new
> > info with a specified dimensions rather than passing the width and
> > height separately to makeWH().
> > 
> > Bug: chromium:973403
> > Bug: skia:8962
> > 
> > Change-Id: Id5cf04235376170142a48e90d3ecd13fd021a2a6
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245457
> > Reviewed-by: Brian Osman <brianosman@google.com>
> > Commit-Queue: Brian Salomon <bsalomon@google.com>
> 
> Bug: chromium:973403, skia:8962
> Change-Id: I5cecd36276c8b6dc942cf549c7095db2df88530c
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245678
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

Bug: chromium:973403, skia:8962
Change-Id: Ie584c1c3ef8021c976f71b708e53871c693cc450
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246057
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-03 19:14:22 +00:00
Brian Osman
8acfa4db53 Remove some unused functions (and an enum) from GrTypesPriv
Change-Id: I9b27c073122e615cf2db289de5607d6636658803
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246077
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-10-03 19:02:42 +00:00
Brian Osman
c95c4a69e1 Remove old SkSL JIT and cleanup include files a bit
- The raster pipeline JIT was an experiment that never really panned
  out (except for also introducing the interpreter, which survives).
  The removal should be pretty thorough, including undoing some changes
  to SkRasterPipeline itself. For reference, I basically undid most of
  https://skia-review.googlesource.com/c/skia/+/112204/

- With runtime shaders, always convert to Program using kPipelineStage
  This makes the first-pass compile consistent with runtime color filter,
  and with GrSkSLFP.

- Remove sksl_mixer.inc, which hasn't been used in a while.

- In sksl_pipeline.inc, all of the math symbols are already declared
  in sksl_gpu.inc, which forms the base symbol table when this include
  is parsed.

  sk_x and sk_y appear to never be used? Those builtin IDs are the IDs
  of the x and y params to main, but that logic still works without
  these declarations.

  sk_OutColor only makes sense in FP files (it's still declared in
  sksl_fp.inc).

Change-Id: Ie8dd68d2c4687745d46f96804a76695bce8c1ba2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246017
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-10-03 18:00:40 +00:00
Ben Wagner
3b5e8ab20b Revert "Hold onto FcConfig in SkFontConfigInterface_direct."
This reverts commit 35e0a58278.

Reason for revert: Breaking g3 roll
Unfortunately, the g3 tests call FcFini at the end, but FcFini asserts
that everything is really no longer in use (it doesn't just unref the
current FcConfig). This means that all local FcConfig references must
be destroyed before calling FcFini. However, one of these will be
rooted with a global, leading to destructor ordering issues.

Will need to see how to handle this.

Original change's description:
> Hold onto FcConfig in SkFontConfigInterface_direct.
> 
> It is possible that some other thread will change the default FcConfig
> out from under one of this classes own calls, which is a terrible race.
> Prevent this by taking a reference to the default FcConfig at creation
> time and keeping it alive.
> 
> Bug: chromium:1004254
> Change-Id: I23338c72e0b93859beae465cb6d48e87b3928ed3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245720
> Reviewed-by: Etienne Bergeron <etienneb@chromium.org>
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Ben Wagner <bungeman@google.com>

TBR=bungeman@google.com,herb@google.com,etienneb@chromium.org

Change-Id: If0f90c9060ff5c7a486f6d7ffe2b7b52a7ae31a4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1004254
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246078
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-10-03 17:58:21 +00:00
Robert Phillips
a975ef3b2f Add SkSurfaceCharacterization::createColorSpace
Change-Id: Ie4653fce34e4d6f38613f63bc68ecc1b7bae361b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/246019
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-03 17:06:13 +00:00
Ben Wagner
35e0a58278 Hold onto FcConfig in SkFontConfigInterface_direct.
It is possible that some other thread will change the default FcConfig
out from under one of this classes own calls, which is a terrible race.
Prevent this by taking a reference to the default FcConfig at creation
time and keeping it alive.

Bug: chromium:1004254
Change-Id: I23338c72e0b93859beae465cb6d48e87b3928ed3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245720
Reviewed-by: Etienne Bergeron <etienneb@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-10-03 15:19:43 +00:00
Robert Phillips
65a77757a2 Only use GrRenderTarget for sample locations in GrGLSLProgramBuilder
The idea here is to separate information we can have at opList time:
   numSamples, origin, primProc, primProcProxies and pipeline
and what we can only have at flush time:
   sample locations

The opList-available parameters will then be moved into a descriptor (GrProgramInfo).

Change-Id: Iae044a98a0cfc8685569c923d154a6f9dabfeb75
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245621
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-10-03 15:01:43 +00:00
Ravi Mistry
cb55010652 Revert "Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime""
This reverts commit 6fc04f88a8.

Reason for revert: Chrome roll failure suspect because of:
* https://chromium-review.googlesource.com/c/chromium/src/+/1837131 (22 commits)
* https://chromium-review.googlesource.com/c/chromium/src/+/1837214 (24 commits)

Original change's description:
> Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime"
>
> This is a reland of ce240cc6fd
>
> Original change's description:
> > SkSurface asynchronous read APIs allow client to extend pixel lifetime
> >
> > Previously the pixel data passed to the client was only valid during
> > the client's callback. This meant if the client wanted to defer
> > processing of the data a copy was necessary.
> >
> > Now we pass an object to the callback and the pixel lifetime is tied
> > to the lifetime of that object.
> >
> > The object may be holding a GPU transfer buffer mapped. We don't assume
> > that the object will be released on the direct GrContext thread. So
> > when the object is destroyed it posts a message to a new type,
> > GrClientMappedBufferManager, hanging off the direct context. The direct
> > context will periodically check for messages and unmap and then unref
> > buffers so that they can be reused. Currently this is done in
> > GrContext::performDeferredCleanup() and GrDrawingManager::flush().
> >
> > The old API is kept around for backwards compatibility but it is
> > reimplemented as a bridge on top of the new mechanism.
> >
> > Also a utility function to SkImageInfo is added to directly make a new
> > info with a specified dimensions rather than passing the width and
> > height separately to makeWH().
> >
> > Bug: chromium:973403
> > Bug: skia:8962
> >
> > Change-Id: Id5cf04235376170142a48e90d3ecd13fd021a2a6
> > Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245457
> > Reviewed-by: Brian Osman <brianosman@google.com>
> > Commit-Queue: Brian Salomon <bsalomon@google.com>
>
> Bug: chromium:973403, skia:8962
> Change-Id: I5cecd36276c8b6dc942cf549c7095db2df88530c
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245678
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: I9e01d1b82fb399b94292441d91da51176bb161d9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:973403, skia:8962
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245956
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2019-10-03 09:19:24 +00:00
Chris Dalton
f070cbec07 Revert "ccpr: Unblacklist Qualcomm with msaa"
This reverts commit 3f55695a04.

Reason for revert: Pixel 2 still crashing

Original change's description:
> ccpr: Unblacklist Qualcomm with msaa
> 
> Bug: skia:
> Change-Id: I1ab69fe87136955b01a329675f1d0affec3700ec
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245530
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Change-Id: I120cc9e55ae205281992a5fe102f15a4b917e73e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245921
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-03 04:52:45 +00:00
Brian Salomon
6fc04f88a8 Reland "SkSurface asynchronous read APIs allow client to extend pixel lifetime"
This is a reland of ce240cc6fd

Original change's description:
> SkSurface asynchronous read APIs allow client to extend pixel lifetime
> 
> Previously the pixel data passed to the client was only valid during
> the client's callback. This meant if the client wanted to defer
> processing of the data a copy was necessary.
> 
> Now we pass an object to the callback and the pixel lifetime is tied
> to the lifetime of that object.
> 
> The object may be holding a GPU transfer buffer mapped. We don't assume
> that the object will be released on the direct GrContext thread. So
> when the object is destroyed it posts a message to a new type,
> GrClientMappedBufferManager, hanging off the direct context. The direct
> context will periodically check for messages and unmap and then unref
> buffers so that they can be reused. Currently this is done in
> GrContext::performDeferredCleanup() and GrDrawingManager::flush().
> 
> The old API is kept around for backwards compatibility but it is
> reimplemented as a bridge on top of the new mechanism.
> 
> Also a utility function to SkImageInfo is added to directly make a new
> info with a specified dimensions rather than passing the width and
> height separately to makeWH().
> 
> Bug: chromium:973403
> Bug: skia:8962
> 
> Change-Id: Id5cf04235376170142a48e90d3ecd13fd021a2a6
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245457
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

Bug: chromium:973403, skia:8962
Change-Id: I5cecd36276c8b6dc942cf549c7095db2df88530c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245678
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-03 01:41:35 +00:00
Brian Salomon
768f900a88 Revert "Use GL_QCOM_TILED_RENDERING to explicitly discard stencil"
This reverts commit 7e6d3b00ad.

Reason for revert: Breaks chrome, need to stage new GL function requirment. Example failure:

https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8900671758208001488/+/steps/vr_pixeltests_on_Android_device_Nexus_5__with_patch_/0/stdout


Original change's description:
> Use GL_QCOM_TILED_RENDERING to explicitly discard stencil
> 
> Bug: skia:
> Change-Id: I7a6234f6a9955dbda83ab2d8fc6930fe680e102b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245529
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Change-Id: I3f059d4232ef664cf2eb2c5122e55c2c291e45b0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245876
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-03 01:32:28 +00:00
Brian Salomon
9c219785a8 Revert "SkSurface asynchronous read APIs allow client to extend pixel lifetime"
This reverts commit ce240cc6fd.

Reason for revert: crashing in chrome unit test, abandoned context related?

Original change's description:
> SkSurface asynchronous read APIs allow client to extend pixel lifetime
> 
> Previously the pixel data passed to the client was only valid during
> the client's callback. This meant if the client wanted to defer
> processing of the data a copy was necessary.
> 
> Now we pass an object to the callback and the pixel lifetime is tied
> to the lifetime of that object.
> 
> The object may be holding a GPU transfer buffer mapped. We don't assume
> that the object will be released on the direct GrContext thread. So
> when the object is destroyed it posts a message to a new type,
> GrClientMappedBufferManager, hanging off the direct context. The direct
> context will periodically check for messages and unmap and then unref
> buffers so that they can be reused. Currently this is done in
> GrContext::performDeferredCleanup() and GrDrawingManager::flush().
> 
> The old API is kept around for backwards compatibility but it is
> reimplemented as a bridge on top of the new mechanism.
> 
> Also a utility function to SkImageInfo is added to directly make a new
> info with a specified dimensions rather than passing the width and
> height separately to makeWH().
> 
> Bug: chromium:973403
> Bug: skia:8962
> 
> Change-Id: Id5cf04235376170142a48e90d3ecd13fd021a2a6
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245457
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: Ic14cf07a7629b167c9f34a651aa87a0326e74207
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:973403, skia:8962
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245721
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-02 22:51:15 +00:00
Stephen White
40d1246d0c Dawn: update to Skia getOpsRenderPass() API change.
Change-Id: I86ca748b470ff13487499d4b9a77416d6bf38576
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245361
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-10-02 21:33:38 +00:00
Chinmay Garde
aad4b67848 Guard [MTLDevice maxBufferLength] behind an API availability check.
Bug: skia:9408
Change-Id: Iae3941ce9bb66051314fb0b6130bff32ac7b4fd6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245439
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Chinmay Garde <chinmaygarde@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2019-10-02 20:41:08 +00:00
Jim Van Verth
b9d0cbc3e3 Revert "Add less granular version of GrFence for older Metal versions."
This reverts commit 1e946aa24b.

Reason for revert: Failing TSAN.

Original change's description:
> Add less granular version of GrFence for older Metal versions.
> 
> Rather than use MTLSharedEvent, we create a semaphore and
> signal it within the current command buffer's completion handler.
> The pointer to the semaphore is cast as GrFence and returned.
> The waitFence method recasts it and waits on the semaphore.
> 
> Bug: skia:8243
> Change-Id: I2c854c65a62786fe8031794008eb6844974ebefd
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245583
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Jim Van Verth <jvanverth@google.com>

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

Change-Id: I1b8ccb5944db2d28ceb92361d4d43d7058d0753c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8243
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245717
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-02 19:53:00 +00:00
Brian Salomon
ce240cc6fd SkSurface asynchronous read APIs allow client to extend pixel lifetime
Previously the pixel data passed to the client was only valid during
the client's callback. This meant if the client wanted to defer
processing of the data a copy was necessary.

Now we pass an object to the callback and the pixel lifetime is tied
to the lifetime of that object.

The object may be holding a GPU transfer buffer mapped. We don't assume
that the object will be released on the direct GrContext thread. So
when the object is destroyed it posts a message to a new type,
GrClientMappedBufferManager, hanging off the direct context. The direct
context will periodically check for messages and unmap and then unref
buffers so that they can be reused. Currently this is done in
GrContext::performDeferredCleanup() and GrDrawingManager::flush().

The old API is kept around for backwards compatibility but it is
reimplemented as a bridge on top of the new mechanism.

Also a utility function to SkImageInfo is added to directly make a new
info with a specified dimensions rather than passing the width and
height separately to makeWH().

Bug: chromium:973403
Bug: skia:8962

Change-Id: Id5cf04235376170142a48e90d3ecd13fd021a2a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245457
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-02 19:20:08 +00:00
Mike Klein
edf2d727f9 picture nesting bounds bug
- add a unit test reproducing the bug
  - fix SkRecorder::reset() to call resetCanvas(bounds) instead of
    calling resetCanvas(w,h).  (It was actually calling
    resetCanvas(right,top), even worse...)

In short, because we were calling this old resetCanvas(), SkRecorder,
the SkCanvas* we record into, was presenting bad device bounds,
affecting code like where we query the clip to search an R-tree for ops
to draw.  It was trimmed to only the positive/positive portion of the
actual bounds, so content like in the unit test that's all in negative
space was erroneously clipped out.

I'd like to get rid of these w/h methods altogether but they're still
used by some of our test tools and by Android.

Change-Id: Ie46f611250de4d655c4357823895ff885b4f3d59
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245599
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-02 18:59:17 +00:00
Brian Osman
1bab7e4e63 Fix CheckGeneratedFiles bot by tweaking SkSLDefines some more
Change-Id: Iac3f65b7e85cb34febf30b7939080290a0738635
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245620
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
2019-10-02 18:44:07 +00:00
Brian Osman
7481a39076 Enable asserts about 'in' and 'uniform' in GrSkSLFP and ByteCode
Change-Id: I2bbef8af07f9a65c7a6577a00b1eb7a47c252f57
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245617
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-10-02 18:28:42 +00:00
Chris Dalton
3f55695a04 ccpr: Unblacklist Qualcomm with msaa
Bug: skia:
Change-Id: I1ab69fe87136955b01a329675f1d0affec3700ec
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245530
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-02 17:53:46 +00:00
Jim Van Verth
1e946aa24b Add less granular version of GrFence for older Metal versions.
Rather than use MTLSharedEvent, we create a semaphore and
signal it within the current command buffer's completion handler.
The pointer to the semaphore is cast as GrFence and returned.
The waitFence method recasts it and waits on the semaphore.

Bug: skia:8243
Change-Id: I2c854c65a62786fe8031794008eb6844974ebefd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245583
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-10-02 17:38:46 +00:00
Brian Osman
1c110a09d7 ByteCode: Separate uniforms and globals
This requires new instructions, but means that uniforms don't need
to be copied/expanded into the globals array. It also removes any
limit on the number of uniforms (other than instruction encoding),
and simplifies the memory layout (no need for slot tracking).

To help with this, added a Location struct that encapsulates the
information returned by the two variants of getLocation.

Change-Id: I961be74ea5fdf933da6c7ad284be9fc345cfd909
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245358
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-10-02 16:58:47 +00:00
Mike Klein
125a44c9c4 tidy up SkRecord bounding code
- remove unused fNumRecords field
  - remove unused getter methods
  - cleanUp() -> dtor

Change-Id: I1ade20e56cced40d511598a964ca362d7afc269c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245600
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-10-02 16:41:20 +00:00
Brian Osman
9f313b6608 Remove redundant check when encountering fragCoord in IR generator
Change-Id: Ifa364ee754fed40160bd161aea60ead2e9fb8414
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245616
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-10-02 16:37:37 +00:00
Chris Dalton
7e6d3b00ad Use GL_QCOM_TILED_RENDERING to explicitly discard stencil
Bug: skia:
Change-Id: I7a6234f6a9955dbda83ab2d8fc6930fe680e102b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245529
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-02 16:36:08 +00:00
Chris Dalton
dec74f3ff6 Remove an assumption that fOpsTask != nullptr
TBR=rmistry@google.com

Bug: skia:
Change-Id: Ic66a63af10b56b1c322309f0e5945b9b4ec1a9f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245531
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-02 09:04:03 +00:00
Chris Dalton
674f77a24b Clear and discard stencil buffers on tilers, take 2
Bug: skia:
Change-Id: I6a3bc7e50f8d4f211ed4afb2a614581b2778b27a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245300
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-10-01 20:45:45 +00:00
Greg Daniel
5faf474fab More bounds fixes for StrokeRect and DefaultPath when using MSAA for non-aa.
Change-Id: Ia9c2a47675eac8f3ac1220c0e1089766aa141fc1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245364
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-10-01 19:49:15 +00:00
Mike Klein
ac353cbbfc add alternate x-lerp using vpmaddubsw
This looks like a _very_ minor perf and code size win.

Change-Id: Ieb9d07eb056f66fc90b0e3c36835cc05329ff7b6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244920
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
2019-10-01 17:18:02 +00:00
Jim Van Verth
f2f0e1b8cc Add TransferBuffer and AsyncRead support to Metal.
* Implements onTransferPixelsFrom, onTransferPixelsTo, onFinishFlush and
checkFinishProcs.
* Adds a bind() method for allocating dynamic buffer memory that can
be used by the GPU prior to mapping on the CPU

Bug: skia:8243
Change-Id: I366ec47bf1155797d9a9b0c9f33870e50c95e914
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244301
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-10-01 14:37:51 +00:00
Brian Salomon
65f533af95 SkColorInfo: It's SkImageInfo minus the dimensions.
Change-Id: Idea9530028428c1a9d42e08a655457938b284b84
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245261
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-10-01 14:26:30 +00:00
Herb Derby
cb6de9f661 Add maxGlyphCount to SkGlyphRunList
Change-Id: I2121c4c68f4124b6a65ca9c1883f3ee0e6d89695
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244997
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-10-01 02:24:24 +00:00
Stephen White
2533afa3f8 Dawn: implement GrDawnCaps::getYUVAColorTypeFromBackendFormat().
Remove an assert (Metal backend has the same limitation).

Change-Id: Ic3b65781431e1280376aabb704cbf83e4557a7b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245256
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2019-09-30 21:58:28 +00:00
Mike Reed
5020d73a15 restore old (dumb) behavior for filterColor
Better to just remove it (from all callers) and point them at filterColor4f()
than to try to make it more meaningful.

Change-Id: I6389650733e81ca2ff6968d6c0d30cf9947c0110
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245000
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-09-30 21:53:25 +00:00
Brian Salomon
4bc0c1fc4b Rename GrColorSpaceInfo -> GrColorInfo
Add version SkImageInfo::Make() that takes SkISize instead of separate
width and height.

Change-Id: I42aa79d23b19e22f5405631728c245b04bce0559
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245172
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-09-30 21:53:24 +00:00
Greg Daniel
d5a9422f32 Fix stroke outset for NonAAStrokeRectOp.
Change-Id: Idf9a84c0e05d233b9bef1e675f75d645a10c710c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244999
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-09-30 21:03:43 +00:00
Greg Daniel
4a0d36d5bc Use tighter bounds for renderArea of vkCmdBeginRenderPass.
Change-Id: Ic31351184ecf4f8e3c192241d47e7b10d7f84063
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245165
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-09-30 18:12:44 +00:00
Robert Phillips
66944404ce Make SkPixmap-variant of createBackendTexture public
Change-Id: I51d916d2410428113e29d2fc374e5f1f7f4010b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244676
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-09-30 18:06:14 +00:00
Brian Osman
9b8b4558d2 Change ByteCode and ByteCodeFunction to classes
The lack of encapsulation was finally starting to bother me. Had to
change the Interpreter namespace to a struct so that it could be
friended, but otherwise this was a nice and simple cleanup.

Also updated the comments on the two run functions, and renamed
fInputSlots to fUniformSlots, to reflect recent clarification
around in vs. uniform.

Change-Id: I24bbc59778b3ab6448bffcf98133d5c149a060a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244883
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-30 18:02:24 +00:00
Stephen White
04b9964167 Dawn: update to new GrGpu::onCreateBackendTexture() semantics.
Also remove GrDawnRenderTarget::getResolveType() override (was removed
from base class).

Change-Id: Ie71e41d1542b9124464278aa0f266ce476915d51
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245159
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-09-30 17:18:19 +00:00
Greg Daniel
55e5be3fc3 Fix reported op bounds on a few ops.
Change-Id: I00bed7dc891d0153e1ea62e6c650ab54bf234800
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245164
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-09-30 17:13:58 +00:00
Brian Salomon
f2ebdd91bf Rename GrPixelInfo to GrImageInfo.
Give it its own header file.

Make it store SkISize rather than separate int w/h.

Change-Id: I732f2774c561decac743a950959a70cbc162b67b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245163
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-09-30 17:10:18 +00:00
Hal Canary
5c41f3676e SkPDF: rasterize bitmap glyphs at 64pt, not em-size
Motivation: em-size is often results in huge bitmaps for each glyph
(e.g. 2556x2406 rgba pixels).

Define SK_PDF_BITMAP_GLYPH_RASTER_SIZE to 0 to get previous behaviour.

Define SK_PDF_BITMAP_GLYPH_RASTER_SIZE to a positive value to rasterize
at that font size rather than 64pt.

Bug: b/141094460
Bug: chromium:921585
Change-Id: I4523e512ec149cf02c985eb83f2e640a2c680d3a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245160
Commit-Queue: Hal Canary <halcanary@skia.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-09-30 16:56:48 +00:00
Brian Salomon
729fc0cb65 Revert "Construct GPU SkImages with SkColorType, don't infer from GrPixelConfig"
This reverts commit 384f6e35b1.

Reason for revert: bot breakage

Original change's description:
> Construct GPU SkImages with SkColorType, don't infer from GrPixelConfig
> 
> Bug: skia:6718
> 
> Change-Id: I8828939427481ea7780a66fc0fed8e9909baba9b
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245156
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: Ib52b457bfc4b323ce06ee5359d9e9ab580aff6ea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245166
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-09-30 16:33:19 +00:00
Mike Klein
0f55db5390 fix buffer overflow
The other side of this branch also reads too many bytes,
8 when only 4 are allowed.

Bug: oss-fuzz:17829
Change-Id: I3fe4a9e39acf77abacbae9ab892f1d0794a411a8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245184
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-09-30 15:44:42 +00:00
Brian Salomon
384f6e35b1 Construct GPU SkImages with SkColorType, don't infer from GrPixelConfig
Bug: skia:6718

Change-Id: I8828939427481ea7780a66fc0fed8e9909baba9b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/245156
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-09-30 15:28:30 +00:00
Ben Wagner
89e1f600ec Improve implementations of copyTable.
The CoreText version relies on undefined behavior and the DirectWrite
version makes an extra copy of the data. This fixes several issues
introduced in https://skia-review.googlesource.com/c/skia/+/229384 .

Change-Id: I29a2170465bafcf6fe7ae5ad107e85a9e882bd33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244721
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-09-30 14:55:44 +00:00
Mike Reed
bd84330ba2 Revert "Revert "add explicit src and dst colorspaces to filterColor4f""
This reverts commit 355111bf7c.

Change-Id: I0aa45bf92f437a0d680aa788ef4dc5c0299c6fe0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244882
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-09-28 01:44:36 +00:00
Brian Salomon
dcbc359a00 Remove vestiges of 32 float texture format support
Change-Id: I186b2ea83a0c41f0ff1ecfe4163704c71ed121fb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244881
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-09-27 19:40:54 +00:00
Jim Van Verth
052761f1ae Add gpu programmatic frame capture routines
Bug: skia:8243
Change-Id: I5fe1aa0c19ac043d582f3b552a5bba99047ad917
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244886
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-09-27 19:39:34 +00:00
Mike Reed
355111bf7c Revert "add explicit src and dst colorspaces to filterColor4f"
This reverts commit 2281be3117.

Reason for revert: need to guard this since it changes some test results

Original change's description:
> add explicit src and dst colorspaces to filterColor4f
> 
> bug: skia:9472
> 
> Change-Id: Ibf4a3ab7eddc455a3c51b16bb68678ee722fc752
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244876
> Reviewed-by: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Mike Reed <reed@google.com>

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

Change-Id: I6d10a5f2c9b2616bb0548ab2d370d93fd66af17f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244880
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-09-27 18:35:21 +00:00
Greg Daniel
94ed83f3ab Don't execute OpsTask which will have no effect on their target.
Change-Id: Ia58555e7387ef0f80893a58150b3f76d77c26d6e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244896
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-09-27 17:34:45 +00:00
Mike Klein
666e4dae00 add alternate gather() impl.
Didn't really find anything interesting.  The two perform essentially
identically, with the portable version using a lot more code size to
do so.

Change-Id: Iaa4e05d15dd0773a47f20df89a11730b3f27199e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244867
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-09-27 17:07:55 +00:00
Mike Reed
2281be3117 add explicit src and dst colorspaces to filterColor4f
bug: skia:9472

Change-Id: Ibf4a3ab7eddc455a3c51b16bb68678ee722fc752
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244876
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-09-27 16:16:08 +00:00
Herb Derby
cbd235c746 Introduce SkIota a wrapper that adds an index
SkIota adds an index to some collection you already use:

std::vector<int> v;
for (auto t : SkMakeIota(v)) {
   size_t i; int v;
   std::tie(i, v) = t;
   ...
}

Change-Id: I18390fc084eb8509cfaeb50d9720541759a2986d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225546
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-09-27 15:17:06 +00:00
Brian Salomon
5dd7746e35 Use SW backend as ref for AsyncReadPixels unit test.
As regular GPU and async read pixels share more it doesn't make sense
to test the async path using the regular path as the reference.

Bug: skia:9269

Change-Id: I8c32289947a7ae8b0f6e4e25ce8a588dfa5413f3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244512
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-09-27 15:10:06 +00:00
Brian Osman
b23d66e10a Interpreter: Lots of minor cleanup/refactoring
- Update the parameter lists to both run and runStriped so
  that they're in the same (sane) order, named consistently,
  and always take counts with pointer arguments.
- Add the same count-based safety checks to run that were
  already in runStriped.
- Remove the N parameter to run, it was only used to run
  things one-at-a-time (other than one spot in unit tests),
  and it simplifies the code quite a bit. If you want to run
  multiple times, use the striped version. I also moved that
  functions 'N' earlier in the parameter list, to make the
  pattern of the remaining parameters clearer.
- Remove an interpreter benchmark class that was never used.

Change-Id: Ibff0a47bdb2d29d095a0addd27e65ab13cb80fce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244716
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-27 15:02:16 +00:00
Mike Klein
b83cc76a5e Reland "hsw::S32_alpha_D32_filter_DX"
This is a reland of be47871249

Original change's description:
> hsw::S32_alpha_D32_filter_DX
>
> This is kind of a first draft, writing bilerp naively
> using mostly skvx and some AVX2 intrinsics.
>
> Looks correct, and speed looks fine, better than SSSE3
> but nothing mind blowing.
>
> Change-Id: I260467e577ea9b30a6aba8b5d7b3a3a3b6383ff3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243814
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

Cq-Include-Trybots: skia.primary:Test-Debian9-Clang-GCE-CPU-AVX2-x86_64-Debug-All-MSAN
Change-Id: I8fe2b51d7a19b7f5743fa3e8d3368162a77cee8b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244698
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-09-26 22:11:52 +00:00
Chris Dalton
c139d08f4f Reland "Remove the resolve rect and resolve types from GrRenderTarget"
This is a reland of ec85f407bf

Original change's description:
> Remove the resolve rect and resolve types from GrRenderTarget
> 
> Change-Id: Id0c1155130c23e835490714fe1314f4ec4a83015
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/240002
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

Change-Id: I501b1e1f506cda284876522b0294215030744888
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244673
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-09-26 21:17:22 +00:00
Mike Klein
479f9fed97 Revert "hsw::S32_alpha_D32_filter_DX"
This reverts commit be47871249.

Reason for revert: MSAN bots?  I kinda think this is a known MSAN issue but can't remember how.

Original change's description:
> hsw::S32_alpha_D32_filter_DX
> 
> This is kind of a first draft, writing bilerp naively
> using mostly skvx and some AVX2 intrinsics.
> 
> Looks correct, and speed looks fine, better than SSSE3
> but nothing mind blowing.
> 
> Change-Id: I260467e577ea9b30a6aba8b5d7b3a3a3b6383ff3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243814
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

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

Change-Id: I359380e38155a174a7ff38350c0bd4efcc244519
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244696
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-09-26 20:21:28 +00:00
Greg Daniel
a7b7fe030e Fix vulkan caps checks for external formats.
Change-Id: I586e823efefdfbdf0397e3c1940e787930daaa00
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243738
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-09-26 19:46:06 +00:00
Robert Phillips
7f367983b5 Add mipmap support to SkPixmap flavor of createBackendTexture
Change-Id: I7a2dea9b0b8e6b985f2d56e587939266022c19e1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/234664
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-09-26 19:42:27 +00:00
Chris Dalton
798a31dd8a Revert "Remove the resolve rect and resolve types from GrRenderTarget"
This reverts commit ec85f407bf.

Reason for revert: Vulkan crashes

Original change's description:
> Remove the resolve rect and resolve types from GrRenderTarget
> 
> Change-Id: Id0c1155130c23e835490714fe1314f4ec4a83015
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/240002
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

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

Change-Id: Ie138488086a1a91599ad0f5ede4272ac286895c9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244660
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-09-26 19:28:47 +00:00
Kevin Lubick
61887c7b88 [canvaskit] Create SkFontMgr from passed in data
This repurposes much of our embedded SkFontMgr code
to take in data directly instead of from compiled-in
variables.

Also makes no_font and no_embedded_font work better.

Bug: skia:9469
Change-Id: Ibde49c9a448cfca79c5712aa9abbe15997a163d0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244510
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-09-26 19:27:12 +00:00
Mike Klein
be47871249 hsw::S32_alpha_D32_filter_DX
This is kind of a first draft, writing bilerp naively
using mostly skvx and some AVX2 intrinsics.

Looks correct, and speed looks fine, better than SSSE3
but nothing mind blowing.

Change-Id: I260467e577ea9b30a6aba8b5d7b3a3a3b6383ff3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243814
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-09-26 19:11:47 +00:00
Chris Dalton
ec85f407bf Remove the resolve rect and resolve types from GrRenderTarget
Change-Id: Id0c1155130c23e835490714fe1314f4ec4a83015
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/240002
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-09-26 18:14:25 +00:00
Ethan Nicholas
31cff27607 Revert "Revert "remove 'in uniform' support from GrSkSLFP, make rules more clear""
This reverts commit 85705c1b3b.

Change-Id: If189dafce53491728296a4292c76af55b05835ac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244509
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-09-26 18:11:45 +00:00
Brian Salomon
14c514d9f8 srgb texture format cleanup.
We now think of them as regular formats that happen to have a different
data encoding, orthogonal to color space, but we still have some
unnecessary special handling.

Remove sRGB support from GrCaps.

Move sRGB write control to GrGLCaps.

Detect texture and render support separately.

Support in WebGL.

Remove workaround in Vulkan for x86 PowerVR.

Remove SkSurface_Gpu::Valid().

Change-Id: I2aaf4bdd4cd1caeeee04bfe8ab539924cdb35bd1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244506
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-09-26 17:19:38 +00:00
Michael Ludwig
a76620658b Improve subpixel coverage calculation for thin quads
In the linked bug, the 1px stroked rectangles would either be treated as
a regular AA rectangle with full coverage interior, or as a subpixel
rectangle that would have to calculate reduced coverage for the interior.
The translations of the coordinates meant that floating point precision
caused the <1px test to go one way or the other since these rectangles
were exactly on the boundary.

However, the subpixel coverage calculator, as-originally-implemented,
suffered from being discontinuous right at 1px if the rectangle was
rotated, so there'd be a noticeable pop in intensity of the shape when
animating across the 1px boundary.

This CL changes the subpixel coverage calculation to no longer be
dependent on the orientation of the quadrilateral w/ respect to the pixel
grid, and still be accurate when the shape is a rectangle. When it is
an arbitrary quad, the approximation isn't geometrically correct but
exhibits qualitatively good behavior. It also has the benefit of being
much simpler code.

Bug: chromium:1007154
Change-Id: I1e001e5d5d4e4f7a5e566e10855fd03eac613d07
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244504
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-09-26 16:42:36 +00:00
Brian Salomon
614cdab25d Check support for each GL format independently.
Previous code tried to aggregate some checks, but therefore had several
subtle bugs. Make each format check independent. It's easier to check
whether it's correct by looking up the specs/extensions referenced and
tweak it if not.

Also removes some "workarounds" that were just working around our own
bugs in extension/version detection.

Also adds some more WebGL format functionality.

Also uses glTexStorage2D for formats that previously did not check for
support.

Use glTexStorage2D on Android/NVIDIA to work around N9 and Shield TV
issues with glTexImage2D.

Bug: chromium:1003481

Change-Id: Ie3295b1ca76a6068f1426e77783d9dc07698c56a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243816
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-09-26 16:30:46 +00:00
Herb Derby
53eb1ec5d5 Restrict SkStrikeInterface to GPU and rename to SkStrikeForGPU
SkStrikeInterface has become more and more focused on support of the GPU
stack. Finishing this focus clears up some of the confusing parts of the
Bitmap code.

Remove use of SkStrikeInterface from the BitmapCode.

Change-Id: I18a50d3ec17d81fcbe55030a3a3ec7eeeba23497
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244297
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-09-26 16:06:48 +00:00
Ethan Nicholas
85705c1b3b Revert "remove 'in uniform' support from GrSkSLFP, make rules more clear"
This reverts commit ac18a5ca60.

Reason for revert: breaking Chrome roll

Original change's description:
> remove 'in uniform' support from GrSkSLFP, make rules more clear
> 
> Bug: skia:
> Change-Id: Iaa4d33c1bfb295d87343411ba6aacc8fae68ef9c
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244300
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

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

Change-Id: I6e53f5197c751d961abfa21861b940d4168de213
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244508
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-09-26 16:04:26 +00:00
Ethan Nicholas
ac18a5ca60 remove 'in uniform' support from GrSkSLFP, make rules more clear
Bug: skia:
Change-Id: Iaa4d33c1bfb295d87343411ba6aacc8fae68ef9c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244300
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-09-26 14:05:10 +00:00
Herb Derby
6bc3c09eec Move SkScalerContextEffects to SkScalerContext.h
Change-Id: Ibcbcc93d310e115bf5d8c683ac493100e3030988
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244304
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-09-25 21:24:55 +00:00
Chris Dalton
16a33c6244 Move the msaa dirty rect to GrRenderTargetProxy
Bug: skia:
Change-Id: I01d7932bce23dffafb86e4eb124c27420acefdd3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/239192
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-09-25 20:53:31 +00:00
Mike Klein
c3f6314e70 clean up for SSSE3 bilerp
This is mostly refactoring, moving functions to lambdas,
recommenting, that sort of thing.  Just how I relearn code...

I did pull the same trick as with SSE2 to turn one multiply
into a shift in interpolate_in_x_and_y().  Nothing interesting
beyond that.

Change-Id: I6645fa03264ec374950a5a936af05b480a69ff06
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244321
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-09-25 20:42:55 +00:00
Nathaniel Nifong
7ee3f93196 Add a test that draws subpictures within an MSKP and make it pass.
It would have been passing, note that he changes to SkRecorder are needed only to obtain the
SkRecord used in asseting the correct commands were recorded.

Bug: skia: 9462
Change-Id: Ic43ab400b5954cc4f6eb465168179c0204a66040
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243818
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Nathaniel Nifong <nifong@google.com>
2019-09-25 20:12:35 +00:00
Herb Derby
0965cddf42 Use constexpr version of min/max
Build-Debian9-Clang-arm-Debug-Chromebook_GLES is using c++11
version of the c++ standard libaray where min is not constexpr.

Change-Id: I631b80d373109ca845129f8f9cfd64ee0b9feff5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244299
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
2019-09-25 19:08:35 +00:00
Brian Osman
2caecd2a43 In AAConvexPathRenderer, don't assume that path direction can be computed
With a perspective view matrix, we transform the path, which can
collapse it down and cause CheapComputeFirstDirection to fail. In that
case, just skip drawing the path, rather than asserting.

Change-Id: I59ee3c74d02d41913136626a653c64f825a9d56a
Bug: https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=37330
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244298
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-25 18:36:45 +00:00
Nigel Tao
96c10a0a8f Fix calls to deprecated Wuffs API
In the latest Wuffs' terminology, "null_foo" refers to an unusable foo
and "empty_foo" refers to a usable but zero-sized foo.

Bug: skia:8235
Change-Id: I7ac7128a0b370b2d32b5d35f13643d49c519eaca
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243597
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2019-09-25 18:18:05 +00:00
Mike Klein
1cb574390e cut another multiply in SSE2 bilerp
I think that's as good as it gets now,
but it's still not as fast as the SSSE3 path.

Change-Id: I3bcfefeddfc2940eca66dfdeb8a0876d768e7d3d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244242
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-09-25 18:15:31 +00:00
Mike Klein
19ae4aa4da cut a multiply in SSE2 bilerp
The left two pixels and right two pixels are both multiplied
by allY weights today, then added together:

    (L * (16-wX) * allY) + (R * (wx) * allY)

We can trivially refactor that, delaying the allY multiply
until it only needs to be done once:

    allY * ( L*(16-wx) + R*(wx) )

This cuts a multiply off the per-pixel cost.

As I write this CL description, I think the obvious next thing to try is

    allY * ( (R-L)*wx + L*16 )

as that L*16 can become a super cheap shift.

Change-Id: Id683801105834468a04d05854d7d494867168ef2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244236
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-09-25 18:10:30 +00:00
Chris Dalton
e89ee6cfc3 Don't submit msaa resovle command buffers except for external IO
Bug: skia:9406
Change-Id: Ieed8d64fd001606f46eb8180e40900b6d3a82b79
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243976
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-09-25 17:52:38 +00:00
Herb Derby
986ab2cf3d Add helper SkMakeZip
SkMakeZip uses function parameter deduction to build SkZips
the same way std::make_tuple does. It figures out the size
from one of the inputs that has a size. In debug, it makes
sure that all the size()s match if the input has a size.

Change-Id: I8f80d1137866ff595fff10cafa861e867441bedd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/242817
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-09-25 17:52:09 +00:00
Mike Klein
0ec56fc018 comment and TODO bilerp code
I'm starting my way towards AVX2 code here, first starting with the
relatively simple SSE2 code to make sure I understand what's going on.

Renames, updated comments, and one performance-related TODO.

Change-Id: I366ee67cf89c8c8d2ccc610d6d753531a131e7b9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243815
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-09-25 17:43:48 +00:00
Mike Klein
1585d7e108 opt skottie_tool into thread-local strike caches
I think this is largely free win if done once at process startup:

    $ time out/skottie_tool -i ~/Downloads/mb/data.json -w before
    166.59user 29.42system 0:06.13elapsed 3195%CPU (0avgtext+0avgdata 1994888maxresident)k

    $ time out/skottie_tool -i ~/Downloads/mb/data.json -w after
    93.36user 34.96system 0:04.76elapsed 2690%CPU (0avgtext+0avgdata 1968568maxresident)k

    $ idiff before after
    1333 files are identical.

Change-Id: I5454aed5e64bf78d61dfdc22ea1ce629714bd70c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244120
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-09-25 16:57:56 +00:00
Mike Klein
c712e962b6 poor man's contention profiler
When enabled this dumps a stack when an SkSpinlock is contended:

    out/skottie_tool(_ZN10SkSpinlock16contendedAcquireEv+0x1d)[0xa14d81]
    out/skottie_tool(_ZN13SkStrikeCache10attachNodeEPNS_4NodeE+0x21)[0x7274d3]
    out/skottie_tool(_ZN21SkGlyphRunListPainter19drawForBitmapDeviceERK14SkGlyphRunListRK8SkMatrixPKNS_19BitmapDevicePainterE+0x570)[0x9f83c2]
    out/skottie_tool(_ZN14SkBitmapDevice16drawGlyphRunListERK14SkGlyphRunList+0x47)[0x9d8f0d]
    out/skottie_tool(_ZN17SkGlyphRunBuilder12drawTextBlobERK7SkPaintRK10SkTextBlob7SkPointP12SkBaseDevice+0x1eb)[0x6d9c59]
    out/skottie_tool(_ZN8SkCanvas14onDrawTextBlobEPK10SkTextBlobffRK7SkPaint+0xf9)[0x6c9cff]
    out/skottie_tool(_ZN8SkCanvas12drawTextBlobEPK10SkTextBlobffRK7SkPaint+0xff)[0x6c9f3d]
    out/skottie_tool(_ZNK4sksg4Draw8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x74)[0xcdba5c]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg15TransformEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x82)[0xce5e2e]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg5Group8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0xf0)[0xcdd11c]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg15TransformEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x82)[0xce5e2e]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg10ClipEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x5d)[0xcda27f]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg11ColorFilter8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x86)[0xcda4b6]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg15TransformEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x82)[0xce5e2e]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK7skottie8internal16MotionBlurEffect29renderToRaster8888Pow2SamplesEP8SkCanvasPKN4sksg10RenderNode13RenderContextE+0x18e)[0x6ab7d8]
    out/skottie_tool(_ZNK7skottie8internal16MotionBlurEffect8onRenderEP8SkCanvasPKN4sksg10RenderNode13RenderContextE+0xfe)[0x6abbba]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg5Group8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0xf0)[0xcdd11c]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK7skottie9Animation6renderEP8SkCanvasPK6SkRectj+0x166)[0x691a78]
    out/skottie_tool[0x688aca]
    out/skottie_tool[0x6886fb]
    out/skottie_tool[0x72bc3e]
    out/skottie_tool(_ZN12SkThreadPoolI8SkTArrayISt8functionIFvvEELb0EEE7do_workEv+0xe5)[0x6d4d63]
    out/skottie_tool(_ZN12SkThreadPoolI8SkTArrayISt8functionIFvvEELb0EEE4LoopEPv+0x28)[0x6d4a94]
    /lib/x86_64-linux-gnu/libstdc++.so.6(+0xbbb2f)[0x7fbec2880b2f]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x7c73)[0x7fbec2547c73]
    /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7fbec1568def]

Change-Id: I32ce3b0d47a07b8b03a64539962a31a2bab89af9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244117
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-09-25 15:35:32 +00:00
Brian Osman
73fb39c9b0 SkSL: Support bitwise negation on unsigned integers
Change-Id: I5558891882923b4e554a8b97a87da6bc4386b645
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243817
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-09-24 20:50:43 +00:00
Brian Osman
4524e84a74 When precompiling SkSL, avoid the need to re-link
Adds metadata to the SkSL blobs about attributes (and other resources)
so that we can do all necessary work during precompile.

Change-Id: I1846c6c96946d5a43a48112d062853717a6571a0
Bug: skia:9402
Bug: b/140174804
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243739
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-09-24 20:32:32 +00:00
Brian Osman
f792445a4b GrGLProgramBuilder cleanup
Only call addInputVars and computeCountsAndStrides in one place
(we were calling the latter twice when getting GLSL from the
cache, for some reason).

Add/edit some better comments.

Change-Id: I860fa241fc89a33cd5da243d0b549a5a5b5b88cf
Bug: skia:9402
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243658
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-24 18:13:09 +00:00
Robert Phillips
d34691b513 Remove compressed format support from the GrGpu::createBackendTexture code path
The intent is to add a createCompressedBackendTexture code path. This will decouple the GPU's ability to create compressed textures from raster's support for compressed SkColorTypes.

Change-Id: I5fa5dded6d5013b524fe7f99f2ebe0bdee76b3c4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243657
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-09-24 18:10:57 +00:00
Brian Salomon
061ac3d1cb Remove workarounds for osmesa
Skia and Chrome no longer test against OSMesa.

Change-Id: I37e69fc0684443f22247cf941c3d1101e63f2a9f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243737
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-09-24 18:08:08 +00:00
Ethan Nicholas
6f62412c92 Fixed integer divide / remainder in sksl interpreter
Our integer tests were broken: constant folding was optimizing away
the actual operations, so nothing was actually being tested. This
allowed us to not realize that integer divide / remainder didn't
work: vector division signals if any of divisor's lanes are zero,
and zeroes are common in masked-off lanes.

This replaces naive vector operations with loops and mask checks
for integer divide and remainder, and corrects the various broken
integer tests so they are actually doing stuff.

Change-Id: I6ffcad9e7b38a0bfd1604097f86d0faa24e1dbc7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243698
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-09-24 17:35:42 +00:00
Robert Phillips
f73ef0b841 Fix accessing off end of pixmap for R16G16_float in SSE2/SSE4.1 mode
Bug: 1005615, oss-fuzz:17491
Change-Id: Ice8686890efad4693ba436ec74a99d9e73f25d8f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243097
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-09-24 17:28:33 +00:00
Leon Scroggins III
ba45830975 Move is_orientation_marker into its own file
Bug: skia:8046

This is used both by SkJpegCodec and SkWebpCodec, so make it possible
to use it when SK_HAS_JPEG_LIBRARY is not set.

Change-Id: I34aa3587500cca3d2d74c4eb33945451592bf72b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/175428
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-09-24 17:08:03 +00:00
Robert Phillips
8a48057b2b Clean up cruft left over from addition GrGpu::createBackendTexture chokepoint
The choke point now checks all the deleted conditions.

Change-Id: I064b107a09fdfeccf1cdf04b1b58a3c617c9ac96
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243697
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-09-24 17:00:33 +00:00
Brian Osman
4c2146f2ca Interpreter: Add bitwise shift operators
These only support fixed shift amounts (for now) ... because that's what
skvx supports ... because that's what various SIMD instructions support.

(We could loop over lanes, but the only need for this at the moment
is fine with constant shift).

Change-Id: I0e2c17084d019ff9b9a21476633adb59b3ce4bd6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243656
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-24 14:56:36 +00:00
Herb Derby
f07a363413 Limit sigma for software blurs
The value (window + 1)^3 * 255 < 2^32.
window = floor(sigma * 3 * sqrt(2 * kPi) / 4)
So, max sigma = 135.

Bug: skia:9454
Change-Id: I1df5137013da3e80d1e8af9ed6ac2b688ef95e7d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243430
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-09-24 14:00:36 +00:00
Chris Dalton
c096654fa7 ccpr: Don't assign inverse fill types to fan tessellations
Bug: skia:9453
Change-Id: Iabbd1089975efff4e89687e990128c075bf0ab9d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243432
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-09-24 02:44:17 +00:00
Chris Dalton
b795ab7372 Abolish absClear
Change-Id: Iec1eba6a3e54b06685ca637e9950b3e8f95a4ae6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243176
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-09-23 21:13:36 +00:00
Jim Van Verth
4dd7c01ca8 Use safe computation for adding up YUVASizeInfo total bytes
Bug: skia:8757
Change-Id: Idc521302d0a2b677f6b5cd2e5ef9cf20a51607b2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243427
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-09-23 20:55:28 +00:00
Leon Scroggins III
b3542d95da Rename SkOrientationMarker.cpp
Bug: skia:8046

The only method it has in it is SkParseEncodedOrigin, so rename to
match. As with the original file, this is here so we can update
Chromium's build file, then land the CL which makes it do something.

Change-Id: Idc8bf44ea3d3f251bd122858e10313c31d0eeec6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243426
Commit-Queue: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-09-23 19:08:13 +00:00
Brian Osman
801dd1bb0d Minor SkSL cleanup
- Fix a tiny documentation bug in the README: layout(key) needs to be on
  an 'in' variable (not just a 'uniform').
- Remove an unused list of key variables from GrSkSLFP. Guessing that
  this was planned to be used, but the key calculation requires a running
  offset through all input variables, so doesn't refer to this.

Bug: skia:9451
Change-Id: I0f32a742c14c0ba70a2c3373b92438093cd62216
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243423
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-23 18:55:43 +00:00
Nigel Tao
26499bdbd1 Update Wuffs version
The primary purpose of this commit is to track upstream Wuffs more
closely.

A side effect is to pull in the Wuffs commit
ca9015bd2d
"Have std/gif replicate interlaced rows", which lessens a difference
between the old third_party/gif decoder and the new third_party/wuffs
decoder.

Bug: skia:8235
Change-Id: I8f42423e0e931ce32c49b791b325d50f83dd7eac
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243336
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2019-09-23 18:17:02 +00:00
Brian Osman
e5bbce209c Interpreter: Add bitwise operators
Also, negation is unary, not binary.

Change-Id: Ic7c5a6f2ee0b2bbda89eef62999e4ebbc97dca12
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243161
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-23 17:10:01 +00:00
Ethan Nicholas
d166d2e62f SkSL interpreter now properly short-circuits boolean operators
Bug: skia:
Change-Id: If7acf4107498cabc049ad130814a3814383bd14b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243418
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-09-23 16:21:04 +00:00
Robert Phillips
57ef680775 Create a GrGpu::createBackendTexture choke point
This also makes createBackendTexture take SkPixmaps (instead of a raw pixels pointer)

Change-Id: I5d8a5a58fa7b15862fbf46a3c232cb6ea7f58976
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243158
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-09-23 16:01:25 +00:00
Brian Salomon
e4bce01613 Remove a few GrSurfaceProxy::config() usages
Change-Id: I9da9e1dadea71701c97994f8df1e7b5912989672
Bug: skia:6718
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243159
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-09-23 15:43:34 +00:00
Brian Salomon
8660eb0df1 Check for scratch textures in GrResourceProvider.
Restores scratch pool checks that were accidentally removed here:
https://skia.googlesource.com/skia/+/a90382fcf6759d4e13c20cf542ab5440ffd4f02d

Also enables checking scratch pool for mip-mapped textures, which was not
previously done.

Consolidates level prep and write-pixels code.

Bug: chromium:1005237
Change-Id: I6f23ce15299290ca5b666f910dc5fc85541ec316
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243038
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-09-20 19:55:27 +00:00
Brian Osman
c248659c19 Use makeRenderTargetContextWithFallback when creating devices for layers
Fixes the case where someone uses the kF16ColorType flag to saveLayer
but the GPU doesn't support F16 render targets.

Follow-up to https://skia-review.googlesource.com/c/skia/+/243041,
which improved the quality of the savelayer_f16 GM on most GPUs, but
removed the final draw on the GPUs that can't respect the flag.

Change-Id: I03dac6b2370bc9117c082f6c5c9b14e84b631339
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243156
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-09-20 18:02:57 +00:00
Brian Osman
2e29ab5b03 added support for user-defined functions to GrSKSLFP
Bug: skia:
Change-Id: I1483cdf7229b7234be41d21407e2b4abf99fff76
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/239925
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-09-20 17:13:57 +00:00
Robert Phillips
40b05c390c Remove a usage of GrPixelConfig in SkGpuBlurUtils::GaussianBlur (take 2)
Bug: skia:6718
Change-Id: I6a0be1cab5543c3d76a041fcdc9ae9be4a3b179b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/242822
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-09-20 17:11:27 +00:00
Ethan Nicholas
5a9a9b8d5b Revert "added support for SkSL unpremul function"
This reverts commit ffdc3e6680.

Reason for revert: breaking Chrome roll

Original change's description:
> added support for SkSL unpremul function
> 
> Change-Id: I970f1ad0dd0859448c874498fe02342f8abc3aa3
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/242897
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

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

Change-Id: I72dacea82b1f4ea2aa6cd600122a4810657aa32e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243117
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-09-20 16:59:58 +00:00
Vasiliy Telezhnikov
6934d75b55 Added missed ETC2 case to GrVkFormatColorTypePairIsValid
Bug: skia: none
Change-Id: Ie4613a018db42040cc2450b25f14007e3199cff6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/243098
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Vasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-09-20 16:54:07 +00:00