Commit Graph

22520 Commits

Author SHA1 Message Date
Robert Phillips
a9162dfb9c Plumb abandonment throughout GrContext hierarchy
When the GrImageContext & GrRecordingContext are actually GrDirectContexts it is useful for them to report the abandonment state of the GrDirectContext.

When the GrImageContext & GrRecordingContext are actually GrImageCreationContext or GrDDLContexts then they will just never be abandoned.

This CL also strips the GrProxyProvider and GrDrawingManager of their tracking on abandonment and centralizes it in the GrImageContext.

ImageContext
  can't abandon
  can only check abandonment privately

RecordingContext
  can't abandon
  can only check abandonment privately

DirectContext (aka GrContext)
  can abandon publicly
  can check abandonment publicly

Note that abandoning the DirectContext won't alter the abandonment status of any of
the other contexts in its group (e.g., DDL contexts that may be being used to record).

Change-Id: Ib790f74d90ab18da58a127fed2aad20e2477bd21
Reviewed-on: https://skia-review.googlesource.com/c/190669
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-11 20:26:22 +00:00
Herb Derby
9685057889 Plumb strike through the common code.
Plump the strike calculated in the calling code through
drawGlyphRunAsBMPWithPathFallback. This is in anticipation
of calculating the cache in drawGlyphRunAsBMPWithPathFallback.

* Add getDescriptor to SkStrikeInterface.

Change-Id: I904cdb51f60443cabc9dc41ac246b1fe0c725c85
Reviewed-on: https://skia-review.googlesource.com/c/191285
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-02-11 19:01:54 +00:00
Mike Klein
740e5db7ab remove pointer tagging hack in SkRecord
This interferes with other uses of pointer tagging,
like ARM pointer authentication or HSWASAN.

Bug: b/124135723
Change-Id: I1a78dd4e1b9b18dd02738bb1dfbbb968f29675bc
Reviewed-on: https://skia-review.googlesource.com/c/191286
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2019-02-11 18:52:37 +00:00
Greg Kaiser
73bfb896a4 GrGLGpu: Avoid potential nullptr dereference
We were checking if 'mipMapsStatus' was nullptr, and if it was,
our 'else' clause would have us always dereference this nullptr.
We change the logic to avoid a dereference in this case.

Change-Id: I2bc091c4de0c9b62ae733026cea3be37442820eb
Reviewed-on: https://skia-review.googlesource.com/c/191323
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 18:47:36 +00:00
Nigel Tao
91f96f8005 Update Wuffs version
Bug: oss-fuzz:11823

This pulls in the Wuffs bug fix:
0842bc7115
"Make the GIF dirty_rect be in the frame_rect".

Change-Id: Ib4928eb3cbf4bc862c3ae709fdfe6f179412f95f
Reviewed-on: https://skia-review.googlesource.com/c/190940
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-02-11 18:39:32 +00:00
Greg Kaiser
27f830257b sksl: Use va_end() after va_copy()
We invoke va_end() as required when we're done with our va_copy().

Change-Id: Ibc55279c3bc01a63da2ef5f1942d46367eac8a67
Reviewed-on: https://skia-review.googlesource.com/c/191322
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 18:34:22 +00:00
Greg Kaiser
837178206e skc: Avoid undefined variable modification
Our code had two modifications of 'from' without a sequence point
between them.  This leaves the behavior undefined.  We change
the code to only modify 'from' once, and have this behavior
well defined.

Change-Id: Ifa4fb191ecc071fdb4793901eaef777294709467
Reviewed-on: https://skia-review.googlesource.com/c/191320
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 17:53:02 +00:00
Herb Derby
30595ea7c7 Use descriptor instead of cache for GrStrikeCache lookup
Change-Id: Ia8e82344d3d8b394a6d9cc14d56dcf0addeff96c
Reviewed-on: https://skia-review.googlesource.com/c/191220
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-02-11 17:06:19 +00:00
Michael Ludwig
b7d64b989e Implement drawImage in terms of drawImageRect
This will cause the raster backend to draw shadermask_image incorrectly since
drawImageRect implementation has the wrong semantics. bitmapshader's expected
behavior has changed: GPU will draw the new version correctly, but raster's
will not change from the old, incorrect behavior.

Bug: skia:8752
Change-Id: Iee89082e2fdf95c2ee42ca3b052e65556f327eff
Reviewed-on: https://skia-review.googlesource.com/c/190675
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-11 17:02:00 +00:00
Mike Klein
0e83da8646 turn on -Wextra-semi-stmt on Windows
Just a few strays.

Change-Id: Ib209bc8dd228850b837b850dce14967a2112593e
Reviewed-on: https://skia-review.googlesource.com/c/191161
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-11 16:50:09 +00:00
Nico Weber
5257816bd3 Remove a few semicolons.
Bug: chromium:926235
Change-Id: I338323847c34dabdbd963efe631f7dc1351ed8cc
Reviewed-on: https://skia-review.googlesource.com/c/191143
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 14:40:37 +00:00
Greg Kaiser
d336ebdea8 SkDeque: Move asserts prior to pointer dereference
If we popped too far, we want the assert mechanism to catch this
bug prior to us dereferencing a nullptr.

Change-Id: I681e530e8bcc15897bc52b3688d83f85a59d7449
Reviewed-on: https://skia-review.googlesource.com/c/191065
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 10:01:27 +00:00
Greg Kaiser
9be246ed74 GrGLGpu: Remove unused 'return'
We remove the last 'return' statement, which is never reached.
This makes it more clear at a glance what value is being
returned from the function.

Change-Id: Iedeb3f6783a45cb60cd4d1413e294fa025fd9651
Reviewed-on: https://skia-review.googlesource.com/c/191063
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 09:55:27 +00:00
Greg Kaiser
b77b1ae65c SkPath: Cleanup code to make array size match
This has no functional change.

We change the declaration of our function argument to have an array
size which matches the incoming argument.  Since C++ treats this
argument as just a function pointer regardless of the declared size,
there's no functional change.  But it makes the code clearer and
prevents static analysis tools from flagging a possible out-of-bound
access.

Change-Id: I896a74d90e56d993887ef38e389b6e9535b47925
Reviewed-on: https://skia-review.googlesource.com/c/191062
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 09:48:27 +00:00
Greg Kaiser
9a2169e84f SkImage_GpuYUVA: Also sanity check height
We were sanity checking the width twice; we switch to checking
the width and height.

Change-Id: I0841eaeeb9c42af2e309e0dafa5ec0b1843a71a8
Reviewed-on: https://skia-review.googlesource.com/c/191061
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-11 09:35:22 +00:00
Greg Kaiser
fe046de36b SkPathOpsTSect: Avoid null dereference in asserts
We just move the asserts to after our null checks.

Change-Id: I96c02ff9cb60ca3a052198b30f205dc78899acc6
Reviewed-on: https://skia-review.googlesource.com/c/190564
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-09 12:39:57 +00:00
Greg Kaiser
0c85e78ddf SkLiteDL: Don't use move()d object
With 'image' being both a function parameter and a class member,
a reference to 'image' resolves to the function parameter.
However, we've already called std::move() on the function
parameter, so we want to use the class member here.  Thus, we
switch to 'this->image'.

Change-Id: Ie244b87b54b1c1ec3dc59bcd1f637ddd301c38a9
Reviewed-on: https://skia-review.googlesource.com/c/190562
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-09 12:24:17 +00:00
Herb Derby
706a7cd1e8 Clearify code around hasImage and hasPath
* hasImage is not needed. I determined that a nullptr is never possible.
* hasPath is renamed to decideShouldDrawFromPath. Comment the code to
  explain the symmetry of calls between Renderer and GPU.

Change-Id: I4bc74fa49cf388d43aeb3ff201053332145fee59
Reviewed-on: https://skia-review.googlesource.com/c/190678
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Khushal Sagar <khushalsagar@google.com>
2019-02-08 23:56:02 +00:00
Brian Salomon
1f05d459e2 Add GrContext::resetGLTextureBindings().
This function binds texture ID 0 to any texture unit/target combo that
Skia has modified.

Bug: chromium:926017
Change-Id: I3ac8f8050c863232886102886e60d3b91a5380c9
Reviewed-on: https://skia-review.googlesource.com/c/190663
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-02-08 21:26:51 +00:00
Herb Derby
e59d40e0bc Simplify mask handling in SkRemoteGlyphCache
I'm only handling the processGlyphRunForMask in this CL, and I
am leaving processGlyphRunForPaths and maybeProcessGlyphRunForDFT
alone. I don't want to have to think about the Fallback code path
right now.

This should not be much of a problem because addGlyph exits early
if the glyph is already processed.

Change-Id: I78886ef87e2fbc3b9bfcb98101401138873bee37
Reviewed-on: https://skia-review.googlesource.com/c/190421
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>
2019-02-08 19:14:00 +00:00
Herb Derby
c6dde3bc69 Split getOrCreateCache into a SkFont and descriptor based calles
Change-Id: Ie4724137baf3d355b94bd9966cc381a688c465fb
Reviewed-on: https://skia-review.googlesource.com/c/190671
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-02-08 18:49:30 +00:00
Brian Osman
37064c1739 Remove support for GPU bone transformations
This code has been disabled - there were no reasonable scenarios where
it was faster than CPU transformation of the vertex data.

Bug: skia:
Change-Id: Ide2ba24ebbd4543393e4e8997f089a8ca788e787
Reviewed-on: https://skia-review.googlesource.com/c/190665
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-02-08 18:07:30 +00:00
Robert Phillips
d6841487eb Move auditTrail and opMemoryPool from GrContext to GrRecordingContext
Any context that records ops (i.e., direct and/or DDL) will need these two objects.

Change-Id: Ifd3527c23a4015f7d469ad2222563508cccbd339
Reviewed-on: https://skia-review.googlesource.com/c/190307
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-08 16:07:56 +00:00
Mike Klein
9707e907ae move some methods out of line
This started because I noticed some repeated symbols while disassembling
object files.  I decided to fix up one or two to kill time while waiting
for Blink layout tests, but then I got a little quixotic.  In the end, I
ran:

    ninja -C out && git add -u && nm -U -j out/obj/gm/gm.*.o | sort | uniq -c | sort -g | c++filt | less

And then outlined things that stuck out as funny, either because they
were big, because they were virtual, because there were many copies of
them, or some combination of those factors.

I'm on the fence about moving a few of SkRefCnt's virtuals out of line,
so I've left SkRefCnt.h unchanged for now.

I'm not sure that this is important.

Change-Id: I425d05aa4beabbae40dd8df465155bfb909ef43a
Reviewed-on: https://skia-review.googlesource.com/c/190422
Auto-Submit: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-08 15:41:36 +00:00
Herb Derby
f412d8bb94 Simplify typeface and effects handling
Through many changes, SkRemoteGlyphCache's handling of
typefaces became confused.

* The SkGlyphCacheState doesn't need the font, only
  the SkTypeface from that font.

* effects don't need to be recalculated all the time.

Change-Id: I0158d68501bf5b544d79111543fc6bff1173548c
Reviewed-on: https://skia-review.googlesource.com/c/190423
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-02-08 15:24:06 +00:00
Robert Phillips
a41c6858da Move proxyProvider and singleOwner to GrImageContext
This starts to beef up the capabilities of the GrImageContext in preparation for its future responsibilities (i.e., creating promise images w/o a recordingContext).

Note that the proxyProvider still has different behavior if it has a full context vs. a reduced context. I intend to just let this behavior remain as is.

Change-Id: Idb9d99a548ef928fc1b9dc1e5a34f74343bb0b4b
Reviewed-on: https://skia-review.googlesource.com/c/189490
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-08 15:20:06 +00:00
Kevin Lubick
6f509dbb60 Remove abandoned fSubdivisionsMax
Was removed in https://skia-review.googlesource.com/c/skia/+/187922
There's probably a better high level solution.

Bug: oss-fuzz:12991
Change-Id: Ie64e46f17b91a8b6aa9f0be1b7d060d4033aba6e
Reviewed-on: https://skia-review.googlesource.com/c/190439
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-02-08 14:56:36 +00:00
Eric Karl
a8878a1df9 Fix issue where command buffer was skipped if drawing a single drawable
When drawing a drawable in Vulkan, we didn't dirty the |fIsEmpty| flag
on the command buffer. This means that if the drawable was the only
output to the CB, it would not be submitted.

Change-Id: Id01a04d6423b64f1fe7a24065d5139184b132e77
Reviewed-on: https://skia-review.googlesource.com/c/190560
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Eric Karl <ericrk@chromium.org>
2019-02-08 03:16:59 +00:00
Brian Salomon
d978b90d20 Track separate texure binding states for each OpenGL texture target.
This means tracking the binding for e.g. GL_TEXTURE_2D separately from
GL_TEXTURE_RECTANGLE.

This is to enable resetting any bindings Skia changes back to 0 at
client request (future work).

Bug: chromium:926017
Change-Id: Ic82796479fb0f7e18f5c32bb4230a1c71712d36d
Reviewed-on: https://skia-review.googlesource.com/c/190308
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-02-07 22:38:36 +00:00
Brian Osman
412674f8a8 Check for single owner and abandoned context in createMipMapProxyFromBitmap
Bug: skia:
Change-Id: I64d4844300be3e49673f919f4e85dbff7cd4bb92
Reviewed-on: https://skia-review.googlesource.com/c/190440
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-07 21:13:16 +00:00
Jim Van Verth
6bc650e9d7 Fix Metal bots.
Disables some invalid tests and re-enables others.
Fixes up a shader issue.

Bug: skia:8243
Change-Id: I03c3685c1f0bc55c435121d659e52115f114ca7f
Reviewed-on: https://skia-review.googlesource.com/c/190300
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-02-07 21:00:20 +00:00
Brian Salomon
601ac80b48 Cache CPU memory buffers used for client side arrays.
Use same cache for CPU-side copy of data when using GPU buffers.

Change-Id: I09f2837211a30aabc50e9897c090f5fbc6d90492
Reviewed-on: https://skia-review.googlesource.com/c/189484
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-02-07 20:25:55 +00:00
Derek Sollenberger
1be431f60f Remove colorspace restrictions for 565/FP16 configs in Android Codec.
Bug: b/123377741
Change-Id: I82ae1ba1eddade35fe2d7f8c2c160db1ae20ced6
Reviewed-on: https://skia-review.googlesource.com/c/188026
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-02-07 20:13:46 +00:00
Robert Phillips
fe0963c350 Move "matches" from GrContextThreadSafeProxy to GrContext_Base
This makes the "matches" functionality available to all the context flavors and uses it for SkImages

Change-Id: I1e3d55f19a7752a9da8789e93a848b7a7a64d180
Reviewed-on: https://skia-review.googlesource.com/c/190227
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-07 19:26:50 +00:00
Robert Phillips
e8345793c6 Make room for shifting GrContext to GrDirectContext
Change-Id: I6291b0c513c641c3bb49260031b501da42b11ede
Reviewed-on: https://skia-review.googlesource.com/c/190002
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-07 19:24:07 +00:00
Brian Osman
0471a93057 Support building mips when creating cross context images
The API existed, but triggered asserts if you tried to use it
(because we weren't passing scaleAdjust). Also guard against
devices not supporting mips, and update the GM to test all of
these cases (including mipping a cross-context image that was
originally created without mips).

Bug: https://github.com/flutter/flutter/issues/24517
Change-Id: Ia180f4e6fd7f3790d0f7068f9f3aa39eb5657378
Reviewed-on: https://skia-review.googlesource.com/c/190224
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-02-07 19:17:55 +00:00
Brian Salomon
a29dd9d0cb Pin the quad index buffer in GrResourceProvider.
This can get purged under memory pressure, but it is highly unlikely that
it will not be quickly recreated. It is only 32K.

Change-Id: Ia1fd404d8a57968aa26ff24f5a407e79fb78cc74
Reviewed-on: https://skia-review.googlesource.com/c/190260
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-02-07 19:04:25 +00:00
Mike Reed
8619a34bb8 Revert "Hide setDrawLooper -- deprecate loopers"
This reverts commit c877ea2657.

Reason for revert: wow, this is going to be really hard to update callers

Original change's description:
> Hide setDrawLooper -- deprecate loopers
> 
> Guarded with SK_SUPPORT_LEGACY_DRAWLOOPER
> 
> Bug: skia:4783
> Change-Id: I4a47513624bc5c09816f44e107917dc8028adb94
> Reviewed-on: https://skia-review.googlesource.com/c/189871
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
> Auto-Submit: Mike Reed <reed@google.com>

TBR=reed@google.com

Change-Id: Ia49f421c8a96a8091ab87533361fde4bf570d6e4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:4783
Reviewed-on: https://skia-review.googlesource.com/c/190303
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-02-07 19:00:36 +00:00
Brian Salomon
dbf7072a59 Use different classes for client side arrays and GPU buffer objects.
GrBuffer is a base class for GrGpuBuffer and GrCpuBuffer. GrGpuBuffer is a
GrGpuResource and the others are not. This allows GrCpuBuffers to exist
outside of the GrGpuResourceCache.

Also removes flags from GrResourceProvider buffer factory function. The
only flag still in use was kRequireGpuMemory. Now CPU buffers are made
without using GrResourceProvider.

Change-Id: I82670d1316e28fd6331ca36b26c8c4ead33846f9
Reviewed-on: https://skia-review.googlesource.com/c/188823
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-02-07 18:04:15 +00:00
Robert Phillips
c1bee13e13 Add support for Mtl backend to DeferredDisplayListTest
Change-Id: Ie576bc8442e5a646c33191100be1be5f89d72290
Reviewed-on: https://skia-review.googlesource.com/c/189483
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-07 16:34:50 +00:00
Jim Van Verth
3d482995e5 Set correct uniform size for Metal.
There are two fixes here. The first pads out the uniform buffer to
match the alignment of the largest element in the buffer, as required
by Metal. The second ensures that the RTHeight uniform is only added
to the shader if required by the program inputs, as otherwise it wasn't
being included in the uniform data.

Bug: skia:8737
Change-Id: Icbe57456f3ec79faada231278c58137ca9865dd2
Reviewed-on: https://skia-review.googlesource.com/c/189875
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-02-07 16:17:24 +00:00
Greg Daniel
173464da34 Add support for importing AHardwareBuffers into SkSurfaces.
Bug: skia:
Change-Id: I0a3b3d607e1b74787480b03520a07839c87486dc
Reviewed-on: https://skia-review.googlesource.com/c/189980
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-02-07 15:03:50 +00:00
Leon Scroggins III
699d41e4bd SkWuffsCodec: Initialize memory when incomplete
Bug: oss-fuzz:11800

We already had code that initialized the output memory, but it assumed
that we would later copy from wuffs' work buffer. If the dirty rect is
empty, we don't do that. Rearrange the wuffs decode so we can know that
the dirty rect is empty when we decide whether to initialize.

Change-Id: I45fdd4270906b4c240ec087d20c24fb107a1dc07
Reviewed-on: https://skia-review.googlesource.com/c/189866
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Nigel Tao <nigeltao@google.com>
2019-02-07 14:48:31 +00:00
Mike Reed
c877ea2657 Hide setDrawLooper -- deprecate loopers
Guarded with SK_SUPPORT_LEGACY_DRAWLOOPER

Bug: skia:4783
Change-Id: I4a47513624bc5c09816f44e107917dc8028adb94
Reviewed-on: https://skia-review.googlesource.com/c/189871
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-02-07 13:33:30 +00:00
Mike Reed
88f5671f71 move SkMetaData into src
Bug: skia:
Change-Id: I3ef8c3ec0d6f33bd9a167b99313d6d313a748494
Reviewed-on: https://skia-review.googlesource.com/c/189284
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-02-07 00:26:49 +00:00
Herb Derby
f7ea4f5d5d Remove the distinction between key and device descriptors
Change-Id: I12ac0f77124caae0be7b3a178683e5a3213f9beb
Reviewed-on: https://skia-review.googlesource.com/c/189869
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Khushal Sagar <khushalsagar@chromium.org>
2019-02-06 21:50:19 +00:00
Hal Canary
6102192b96 SkLoadICU: simplify
Change-Id: I98cd1f36ca96a92b72974ae228465199638e4bea
Reviewed-on: https://skia-review.googlesource.com/c/189864
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-02-06 21:20:49 +00:00
Robert Phillips
dbaf317cd4 Move GrContextPriv methods to their own .cpp file
Centralize these for my sanity. Most will also be parceled out to other contexts.

Change-Id: If0e7e98bcf66c4d8a3391f9b04e643ccc91af4ad
Reviewed-on: https://skia-review.googlesource.com/c/189488
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-06 21:15:58 +00:00
Herb Derby
f272b8ff23 Remove filterRec bypass on MakeRecAndEffects
Change-Id: I1845f2a06edcfee97b9ca7aa3205328c87c4b7ae
Reviewed-on: https://skia-review.googlesource.com/c/189900
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-02-06 19:20:22 +00:00
Herb Derby
62a9d31375 Reorganize MakeRecAndEffects and SkScalerContext ctor
* This will allow the key descriptor and the device descriptor
  to be the same in SkRemoteGlyphCache.

* Simplifying SkRemoteGlyphCache descriptors will allow the
  rendering code in SkRemoteGlyphCache and the code in the GPU to
  be the same.

Change-Id: I1225c7e9017c05518ccadee1522751b94b1d97af
Reviewed-on: https://skia-review.googlesource.com/c/189582
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-02-06 18:30:02 +00:00
Mike Reed
cc88f3a72d per-contour variant of SkPathMeasure
Bug: skia:8721
Change-Id: I1e79a49dee25ccc9138baf6fb2df3dc80d1ff66b
Reviewed-on: https://skia-review.googlesource.com/c/187922
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2019-02-06 18:21:22 +00:00
Ben Wagner
6c30e74dd0 Add DDL jobs for Intel
To work around skia:8709, I'm moving the DDL tests to IntelIris640. The
ASAN jobs still show memory leaks in the driver, but at least I can
identify which calls are leaking and suppress the LSAN warnings.

Adds an SK_ENABLE_SCOPED_LSAN_SUPPRESSIONS define that indicates that
the LSAN header files are available, which is set in recipes for the
Linux ASAN builds. Adds __lsan::ScopedDisabler in four locations for
two Vulkan API calls:
 - CreateGraphicsPipelines in GrVkPipeline::Create and
   GrVkCopyPipeline::Create
 - CreateDescriptorSetLayout in
   GrVkDescriptorSetManager::DescriptorPoolManager::DescriptorPoolManager
   constructor (2 calls)

Also adds a regular suppression for libxcb.so.

See bugs listed below for more details on the leaks.

Bug: skia:8710, skia:8712, skia:8713
Change-Id: I55c6e5d483b4aeed5cd44c64219539ca7214187f
Reviewed-on: https://skia-review.googlesource.com/c/184071
Commit-Queue: Ben Wagner <benjaminwagner@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Auto-Submit: Ben Wagner <benjaminwagner@google.com>
2019-02-06 15:53:32 +00:00
Ethan Nicholas
7193586dab fixed SRGB effect color accuracy
Bug: skia:
Change-Id: I8715357f053fbfab73e9cbe674dd082aabe77329
Reviewed-on: https://skia-review.googlesource.com/c/189841
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-02-06 15:32:52 +00:00
Brian Osman
e956049450 Fix makeColorSpace on YUV images
This is a second attempt at https://skia-review.googlesource.com/c/skia/+/182816
This version ensures that SkImage::colorSpace() returns the target after
makeColorSpace has been called (to match user expectations, and match
behavior with lazy images). Given that, the xform is baked into the FP
within the maker, rather than externally (again, this matches the lazy
image behavior).

Additionally, the target color space needs to be taken into account when
flattening into the RGB proxy, and some base-class methods need to use
this->colorSpace() rather than fColorSpace to tag the output.

Added a GM that tests quite a few different scenarios. All images have
makeColorSpace() applied:

- Raster image (for reference)
- yuvImage
- yuvImage->makeSubset()
- yuvImage->makeNonTextureImage()
- readPixels(yuvImage)

All images should look the same as the top row. Verified that they do
match, in both untagged (gl) and tagged (glsrgb) configs.

I think there may still be some cases where we transform too many or too
few times, or incorrectly tag the result of an image operation, but this
is much more correct than before, and should (I hope) address Chrome's
immediate needs.

Bug: skia:8740
Change-Id: I5d501879866861a5ba91240f688d3f95711f7595
Reviewed-on: https://skia-review.googlesource.com/c/189494
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-02-06 13:45:20 +00:00
Ethan Nicholas
e1f5502969 Reland "SkSL is now pickier about type conversions"
This is a reland of 91c1d08bc3

Original change's description:
> SkSL is now pickier about type conversions
> 
> Bug: skia:
> Change-Id: I4e8b8f229f4e4344f160b0dbb41832764d0b75bd
> Reviewed-on: https://skia-review.googlesource.com/c/188311
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

Bug: skia:
Change-Id: I727cad061afc0a5ee6f4d2df789330d809dd110a
Reviewed-on: https://skia-review.googlesource.com/c/189643
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-02-06 02:40:59 +00:00
Herb Derby
0c12f92a4b Remove fPreBlendForFilter
Change-Id: Ibed3ba5fdc87ce5760099d78b9ff8b99128086bc
Reviewed-on: https://skia-review.googlesource.com/c/189440
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-02-05 22:36:59 +00:00
Ethan Nicholas
c83da98d50 Revert "SkSL is now pickier about type conversions"
This reverts commit 91c1d08bc3.

Reason for revert: breaking everything

Original change's description:
> SkSL is now pickier about type conversions
> 
> Bug: skia:
> Change-Id: I4e8b8f229f4e4344f160b0dbb41832764d0b75bd
> Reviewed-on: https://skia-review.googlesource.com/c/188311
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Change-Id: I670fa9215d3ca0ce738edc24e832b6d968599cb1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/189642
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-02-05 21:54:51 +00:00
Ethan Nicholas
91c1d08bc3 SkSL is now pickier about type conversions
Bug: skia:
Change-Id: I4e8b8f229f4e4344f160b0dbb41832764d0b75bd
Reviewed-on: https://skia-review.googlesource.com/c/188311
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-05 21:36:33 +00:00
Herb Derby
5e1819f912 Move luminace calculation to the SkScalerContext ctor.
N.B. The cananonical color calculation is still there to
avoid Chrome layout changes.

Change-Id: Ie7a48a48be7ab0a6cc90b2469e48d85990cf3c1d
Reviewed-on: https://skia-review.googlesource.com/c/187460
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-02-05 21:33:28 +00:00
Brian Salomon
95548f6625 Remove fIntendedType from GrMtlBuffer. Add accessor to base class
Fixes unused member warning-as-error.

Change-Id: I9468a1b1cb106eeb7818afe87f5cda7eb75910de
Reviewed-on: https://skia-review.googlesource.com/c/189497
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-02-05 21:31:29 +00:00
Greg Daniel
d742b6be45 Fill in missing GrMtlCaps functions and fix for 0 buffer alloc.
Bug: skia:
Change-Id: I4981e49dc45d607f3f6493da67844b6dfa74a551
Reviewed-on: https://skia-review.googlesource.com/c/189493
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2019-02-05 21:03:05 +00:00
Hal Canary
32498f0846 GN/ICU cleanup
For targets that depend on ICU, only define if `skia_use_icu` is set.

Move declare_args/skia_use_icu into skia.gni.  Other variables that need
to work like that can move there later.

icu/BUILD.gn defines SK_USING_THIRD_PARTY_ICU if needed.
SkShaper_harfbuzz.cpp SkPDFSubsetFont.cpp respects
SK_USING_THIRD_PARTY_ICU when calling SkLoadICU().

sfntly/BUILD.gn, harfbuzz/BUILD.gn, icu/icu.gni uses $_src variable to
reduce verbosity.   icu/icu.gni adds more headersto sources.

Change-Id: I9e000b9b19902d9f5c0c64e989bf42466aa8a299
Reviewed-on: https://skia-review.googlesource.com/c/189304
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
2019-02-05 17:27:55 +00:00
Mike Klein
830ab79b26 disable DAA by default
This turns DAA off by default in Skia and in our tools,
while leaving it able to be turned back on if we want.

(There's at least one bot that does already.)

This setup keeps our default builds matching the behavior
of Chromium, Flutter, Android, Google3, and should prevent
anyone from accidentally falling into it.

Change-Id: Ia85f3dbe69c46cec0dac6b07fb5feb6e8b65d237
Reviewed-on: https://skia-review.googlesource.com/c/189580
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-02-05 17:15:14 +00:00
Greg Daniel
8ce7991242 Add release proc apis to SkSurface::MakeFromBackend* calls.
Bug: skia:
Change-Id: I0e6cd8895c328a89cd0fa50260fe4e8adbff5990
Reviewed-on: https://skia-review.googlesource.com/c/188634
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-05 15:36:14 +00:00
Brian Osman
09a66aca2e Fix RTCc issue (truncating 64 bit value) in GrVkRenderPass
Bug: skia:
Change-Id: I31b3024808c3d85f6daa07670b91b5f3bebdfd4b
Reviewed-on: https://skia-review.googlesource.com/c/189487
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-02-05 15:27:44 +00:00
Brian Salomon
ae64c194fe Convert GrBufferType to enum class, rename, and remove dead values
Renamed to GrGpuBufferType in anticipation of splitting GrBuffer
into GrGpuBuffer and GrCpuBuffer types.

There were two unused values in the enum that are removed, DrawIndirect
and Texel.

Change-Id: Icb6b3da689adbd8e10495c10fd0470a6ee0120b5
Reviewed-on: https://skia-review.googlesource.com/c/189280
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-02-05 15:04:48 +00:00
Greg Daniel
c91162d20b Have GrMtlTexture and GrMtlRenderTarget call parents onRelease/Abandon.
Bug: skia:
Change-Id: Ib7c19f4a1951f7463912b78c18ed7f2839833193
Reviewed-on: https://skia-review.googlesource.com/c/189485
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-02-05 15:01:14 +00:00
Robert Phillips
f7c6dfabef Fix generated files
https://skia-review.googlesource.com/c/skia/+/189164 (Rename GrContext::contextPriv to priv) altered a header
TBR=fmalita@chromium.org

Change-Id: I165ad7c06490789d9f4c605e17c36ab2fac7f9f4
Reviewed-on: https://skia-review.googlesource.com/c/189482
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-05 13:32:14 +00:00
Robert Phillips
bb60677d52 Move caps and FP factory cache to GrContext_Base
Both GrContext and GrContextThreadSafeProxy had their own copies. This centralizes ownership and standardizes how all the contexts get initialized.

Change-Id: Ib2e418fbb53fcd6b0054789ef30a5fc4a3d80b20
Reviewed-on: https://skia-review.googlesource.com/c/189305
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-05 01:31:05 +00:00
Greg Daniel
2d35a1c875 Move texture release proc to GrSurface so that render targets can also have releases.
Bug: skia:
Change-Id: I65e7872057110295376ad76e0656a47bca3f712d
Reviewed-on: https://skia-review.googlesource.com/c/188633
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-05 00:37:54 +00:00
Ben Wagner
79ac5081d5 Extend GetAlphaTextureBounds workaround.
On large glyphs GetAlphaTextureBounds returns empty bounds but no error
when the glyph does, in fact, have non empty bounds. An existing work
around exists to fall back to aliased bounds which are more likely to
give correct results. This workaround was added specifically for falling
back to aliased bounds in the case cleartype bounds were not available,
but this is now also possible with the new grayscale bounds. Extend the
workaround to grayscale bounds as well.

Bug: chromium:926885
Change-Id: Ib7b2028b48a3cb0268f2af8eebbe7b0889391dae
Reviewed-on: https://skia-review.googlesource.com/c/189300
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-02-04 23:23:54 +00:00
Ben Wagner
0b46a39820 Make HR* macros statements.
Currently HR* macros expand to block expressions which neither need nor
require a closing semicolon. Since at the use site these macros look
like statements which should use a closing semicolon, change the macro
definition to be a statement. This should also fix many warnings around
unneeded semicolons.

Change-Id: I288fdfefa083c6e04a1e7b0a055c8972b7e8b367
Reviewed-on: https://skia-review.googlesource.com/c/189301
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2019-02-04 22:51:04 +00:00
Robert Phillips
9da87e0e98 Rename GrContext::contextPriv to priv
Mechanical. This makes the priv() accessor the same for all the context types.

Change-Id: I40850eb05a33b8d7cc3eabdd42226d24b2ba58aa
Reviewed-on: https://skia-review.googlesource.com/c/189164
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-02-04 22:13:14 +00:00
Brian Osman
50ea3c06b8 Add support for MSVC run-time checks (and control flow guard)
This enables four different options in the compiler, described
below. I also added enough masks to satisfy RTCc when running
all GMs in both 8888 and gl configs.

---

/RTCc - Detects when a value is assigned to a smaller data
type and results in data loss. This happens even when casting.
Masking is required to suppress this.

/RTCs - Various stack-related checks, including uninitialized
data (by initializing locals to a non-zero value), array bounds
checking, and stack pointer corruption that can occur with a
calling convention mismatch.

/RTCu - Reports when a variable is used without having been
initialized. Mostly redundant with compile-time checks.

/guard:cf - This is more of a security option, that computes
all possible targets for indirect calls at compile time, and
verifies that those are the only targets reached at compile
time. Also generates similar logic around switch statements
that turn into jump tables.

Bug: skia:
Change-Id: I7b527af8fd67dec0b6556f38bcd0efc3fd505856
Reviewed-on: https://skia-review.googlesource.com/c/188625
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-02-04 20:55:24 +00:00
Hal Canary
92170de803 SkPDF to use aliased em bounds.
This restores previous behavior and works around a chromium issue.
The underlying issue in DirectWrite will need to be worked around
as well.

Bug: chromium:926885

Change-Id: I6a6cbd04db66066ad258df62d3c9fc8056c33c7f
Reviewed-on: https://skia-review.googlesource.com/c/189167
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-02-04 18:47:22 +00:00
Greg Daniel
950dfd7cc2 Minor clean ups to vulkan hardware buffer test.
Bug: skia:
Change-Id: I280556d4691a762402d2a94959bd6fda614bc39c
Reviewed-on: https://skia-review.googlesource.com/c/189168
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-02-04 18:14:22 +00:00
Robert Phillips
c1541ae25f Move GrContextOptions to GrContext_Base and make GrContextThreadSafeProxy be derived from GrContext_Base
The main thrust of this CL is to bring the GrContextThreadSafeProxy into the fold.

Change-Id: I8f457d5b75c69f89beac3a0035b1c05ba5d3b931
Reviewed-on: https://skia-review.googlesource.com/c/188622
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-04 18:08:57 +00:00
Mike Reed
69da42f188 remove metadata from canvas
Bug: skia:
Change-Id: Id8eefff4f65317d749f4b96620a5e469425b4c4a
Reviewed-on: https://skia-review.googlesource.com/c/189169
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-02-04 18:06:42 +00:00
Mike Reed
8c14038e56 hide getMetaData()
Bug: skia:
Change-Id: I2b513d4c5868bc0d4cdcdf0c95cc35e90c98f9a1
Reviewed-on: https://skia-review.googlesource.com/c/188824
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-02-04 14:21:02 +00:00
Robert Phillips
b45f47dc3e Add isTextureable parameter to GrContextThreadSafeProxy::createCharacterization (take 2)
TBR=bsalomon@google.com
Change-Id: Iee9d64dd39d5f3269428822582b754c4981812d7
Reviewed-on: https://skia-review.googlesource.com/c/188825
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-03 23:06:13 +00:00
Brian Salomon
9c7a006a8e Remove NoPendingIO flags from buffer creations.
Now that we're keeping refs on GrBuffers during flush, we shouldn't
need to specify this flag.

Change-Id: Idbe08e84d23690d6c9e94f23f2c4507a2e965aff
Reviewed-on: https://skia-review.googlesource.com/c/188635
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-02-03 16:59:43 +00:00
Mike Reed
0d84e805c3 move experimental header out of public includes
Bug: skia:
Change-Id: I81ea9e039f23e22b4955ad6088f5cb76ec2ba1a5
Reviewed-on: https://skia-review.googlesource.com/c/186864
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-02-02 18:18:21 +00:00
Robert Phillips
5b1813ab81 Revert "Add isTextureable parameter to GrContextThreadSafeProxy::createCharacterization"
This reverts commit 87685ba492.

Reason for revert: Macs

Original change's description:
> Add isTextureable parameter to GrContextThreadSafeProxy::createCharacterization
> 
> Change-Id: I08d263490982a7d5c1e48a5b31acca25405ab09a
> Reviewed-on: https://skia-review.googlesource.com/c/188628
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

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

Change-Id: I6f912f587e823b44c3747937619251d05b610fea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/188860
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-01 23:12:12 +00:00
Michael Ludwig
8f5aeebdd8 Revert "Narrow clear-as-draw workaround on D3D11 ANGLE"
This reverts commit 3dc93896b3.

Reason for revert: Intel and ANGLE still don't play well together

Original change's description:
> Narrow clear-as-draw workaround on D3D11 ANGLE
> 
> Bug: skia:
> Change-Id: Ib2714b448b078a09d43a28fd5bd7329706b516b8
> Reviewed-on: https://skia-review.googlesource.com/c/188310
> Commit-Queue: Robert Phillips <robertphillips@google.com>
> Auto-Submit: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: I0ce3cecd97b0e696a3805166394ec7f55fbebe20
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/188639
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-02-01 21:53:22 +00:00
Robert Phillips
87685ba492 Add isTextureable parameter to GrContextThreadSafeProxy::createCharacterization
Change-Id: I08d263490982a7d5c1e48a5b31acca25405ab09a
Reviewed-on: https://skia-review.googlesource.com/c/188628
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-01 21:42:11 +00:00
Brian Osman
a69c50127b Remove SkColorSpaceTransferFn
This has been replaced by skcms_TransferFunction

Bug: skia:
Change-Id: Ie9eb1eb0c6a301b1ed7807559c34a87d14b14f0a
Reviewed-on: https://skia-review.googlesource.com/c/188637
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-02-01 21:32:50 +00:00
Brian Osman
26ccfcc96f Remove SkICC::WriteToICC
All clients are using SkWriteICCProfile, which uses types that are more
consistent with the rest of Skia's colorspace API.

Bug: skia:
Change-Id: I1a416027839be95f51a8cabf5dd5d4395cbd2ec6
Reviewed-on: https://skia-review.googlesource.com/c/188636
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-02-01 21:00:10 +00:00
Brian Salomon
924a10e207 Make GrMesh hold regular ref on GrBuffers.
We don't use GrBuffers prior to flush time.

Currently at flush time we request buffers that have no pending reads. We
hold the pending reads until after flush finishes. This means once we
acquire a buffer from the cache it cannot be used again until the
next flush.

Using regular refs should be equivalanet.

Change-Id: Ic7653f0f0a66099c0ac77604f77ed0539c882160
Reviewed-on: https://skia-review.googlesource.com/c/188629
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-02-01 20:06:10 +00:00
Mike Reed
ec7278e703 remove unneeded friends/includes in SkPaint.h
Bug: skia:
Change-Id: Ica9f10cdb67322eb43ec38b6549146350fa5dcd9
Reviewed-on: https://skia-review.googlesource.com/c/188630
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-02-01 19:29:46 +00:00
Robert Phillips
fd0d97092b Rename GrContext::uniqueID to contextID and hide it
The GrContext's ID isn't really unique any more (since it can be shared among a family of contexts). Change its name to reflect the new reality.

Additionally, no client seems to be using it so make it private.


Change-Id: Ibb9004d699fe6ca7876b3be94142e612b5b9efbd
Reviewed-on: https://skia-review.googlesource.com/c/188308
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-01 16:18:23 +00:00
Mike Reed
fdb876d4ee remove breakText, and all utf cache accessors
Bug: skia:
Change-Id: Ib7219e0844a4401f12f89d91eab60dbb7dda0121
Reviewed-on: https://skia-review.googlesource.com/c/188580
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-02-01 15:20:23 +00:00
Robert Phillips
d0fe875455 Remove destination GrRenderTargetProxy from GrPipeline
Change-Id: Ie2ee3d51220163fde8a959255dd5f6cce4e27ad8
Reviewed-on: https://skia-review.googlesource.com/c/188038
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-02-01 13:36:53 +00:00
Michael Ludwig
3dc93896b3 Narrow clear-as-draw workaround on D3D11 ANGLE
Bug: skia:
Change-Id: Ib2714b448b078a09d43a28fd5bd7329706b516b8
Reviewed-on: https://skia-review.googlesource.com/c/188310
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-02-01 13:01:23 +00:00
Mike Reed
569dda7216 hide SkFont::containsText
Bug: skia:
Change-Id: I197addb0ea1da57083283b30e19e290cdaf8dac6
Reviewed-on: https://skia-review.googlesource.com/c/188581
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-02-01 10:54:53 +00:00
Mike Reed
88c6eb5c54 remove (dead) legacy measuretext
Bug: skia:
Change-Id: I3deed21a9e4a019f87557f751fafdcc36c95fa57
Reviewed-on: https://skia-review.googlesource.com/c/188312
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-31 22:18:12 +00:00
Mike Reed
1c2052363e fix tiler to handle large float rects
The issue is around needing to go from a float rect to a clipped (intersected
with the clip bounds) irect.

The old code promoted the clip bounds to rect,
intersected with the rect, and then rounded to ints. This is problematic
since convert float --> int can produce float values that are larger than
their int counter-parts. (e.g. int:67108863 becomes float:67108864).
This error goes on to confuse subsequent logic.

The fix is to round the rect to int first (knowing that very large floats
will saturate to maxint), and then intersect.

Bug: 927075
Change-Id: If6c7d72ff15184700b87532e1922e576d1348ee8
Reviewed-on: https://skia-review.googlesource.com/c/188307
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-01-31 19:34:42 +00:00
Mike Reed
5b257abb87 change measureText impl to first convert to glyphs
Bug: skia:
Change-Id: Icbc53688fb4e575695abf062dfe89e3b4b3bbb53
Reviewed-on: https://skia-review.googlesource.com/c/188021
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-31 18:11:52 +00:00
Brian Salomon
f55e8d5232 Add option to skip intermediate release/fulfill calls for promise images.
SkiaRenderer does not delete promise image textures when they are released
but not done. Refulfilling promise image textures takes a significant amount
of CPU time. This allows us to fulfill each promise image once.

Bug: skia:8736
Change-Id: I7ad7fa9678ed0ec4bb714b71fbf920ab4a845409
Reviewed-on: https://skia-review.googlesource.com/c/188039
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-31 16:24:52 +00:00
Leon Scroggins III
95d0c8d21c Fix bug in sampling rotated decodes
Bug: b/122338652
Bug: b/77339676

getSampledDimensions is supposed to report dimensions that
SkAndroidCodec can decode to. But if SkAndroidCodec is respecting an
orientation that requires swapping the width and the height,
getSampledDimensions needs to do so, too.

Change-Id: I0cacefc2b02eb9832b8c029c88bcaaedcb2ba82b
Reviewed-on: https://skia-review.googlesource.com/c/188035
Auto-Submit: Leon Scroggins <scroggo@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2019-01-30 21:10:28 +00:00
Mike Klein
541cbd4672 remove shadeSpan4f()
This shouldn't cause any diffs, provided I've implemented the no-stages
shadeSpan() fallback correctly.  (I'm not sure which shaders don't have
stages at this point.)

Bug: skia:8730
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: Ia0d777b526e05b7262ff77daec5ef4d8b0afdb9b
Reviewed-on: https://skia-review.googlesource.com/c/188031
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-01-30 19:14:51 +00:00
Mike Klein
ac262a0368 remove Sk4x4f.h -- dead code
Change-Id: I03d15a563eeb7ea187c7d48deffe00357dc55177
Reviewed-on: https://skia-review.googlesource.com/c/188032
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-01-30 19:00:21 +00:00
Robert Phillips
4217ea7ee5 Add outline of new GrContext hierarchy
This begins the process of splitting GrContext into:

GrContext_Base, GrImageContext, GrRecordingContext and GrDirectContext.

Change-Id: I3c43045f2a5549b049e95791d65f74d4e16de36f
Reviewed-on: https://skia-review.googlesource.com/c/186878
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-30 18:36:11 +00:00
Mike Klein
85b856f865 remove burst mode in SkRPBlitter
This shader burst mode is only implemented by linear gradient,
and it doesn't seem to handle color management the way we expect.

This CL should be enough alone to fix the attached bug.  As a follow up
we can now remove shadeSpan4f(), which has one or two more incidental
call sites.

Bug: skia:8730
Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: I8fe5fab5e003702106846dcad92505bf1c70fba3
Reviewed-on: https://skia-review.googlesource.com/c/188030
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-01-30 18:22:51 +00:00
Brian Salomon
59ef8c36c1 Remove legacy texture-backed promise image interface.
No longer used by Chrome.

Change-Id: I842482490f132bb3aa3e85f847d8d4167f5595df
Reviewed-on: https://skia-review.googlesource.com/c/188029
Commit-Queue: Robert Phillips <robertphillips@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-30 18:09:21 +00:00
Mike Reed
673a048b20 hide deprecated breaktext
Bug: skia:
Change-Id: I5a2f4d96f8e0ad299cf1b4f6e87f0e0d98afde5a
Reviewed-on: https://skia-review.googlesource.com/c/188020
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-01-30 13:58:41 +00:00
Mike Reed
d76a0f49c2 remove unused paintpriv methods
Bug: skia:
Change-Id: I7f8a8c86ac3af2edf66f1693439bd43b53c2dafb
Reviewed-on: https://skia-review.googlesource.com/c/187930
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-30 02:31:40 +00:00
Brian Salomon
12d2264c26 Convert GrBuffer owners to sk_sp
Change-Id: Id49d775c30f01f4de05f385227c5ed5d90d6839e
Reviewed-on: https://skia-review.googlesource.com/c/187920
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-01-29 21:11:27 +00:00
Brian Salomon
8bbdfda4f5 Limit PowerVR Rougue clear texture support disable to x86
Change-Id: I13405e9ce13e052804c5c0c1d8cf7cbd652f5c40
Reviewed-on: https://skia-review.googlesource.com/c/187785
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-29 20:07:17 +00:00
Robert Phillips
a0bc39dce3 Split GrContextThreadSafeProxy into its own files (take 2)
This just shuffles stuff around.

Change-Id: I90e24a73bf44dd3e88fc121a0528bf94e4fdead4
Reviewed-on: https://skia-review.googlesource.com/c/187786
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-01-29 19:26:47 +00:00
Mike Reed
d3bde0b798 remove legacy SkPaint getTextBlobIntercepts
Bug: skia:
Change-Id: I59407c5ae9cdbfa6e674ec92f35b0ca7d6a8425f
Reviewed-on: https://skia-review.googlesource.com/c/187787
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-29 19:24:48 +00:00
Brian Salomon
a66be38441 Limit Analytic Clip FP workaround to powervr rogue on x86
Bug: b/123092993
Change-Id: I0be3559c0e90cf16d736f03c7c0a3044cb9d4b70
Reviewed-on: https://skia-review.googlesource.com/c/187784
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-29 15:29:57 +00:00
Robert Phillips
ea8b4fc950 Revert "Split GrContextThreadSafeProxy into its own files"
This reverts commit f8397f2b3f.

Reason for revert: Breaking Flutter build!

Original change's description:
> Split GrContextThreadSafeProxy into its own files
> 
> This just shuffles stuff around.
> 
> Change-Id: Ieab35f50945efe87512d7077cb994132f0e0b6ef
> Reviewed-on: https://skia-review.googlesource.com/c/186874
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

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

Change-Id: I236add95d8a0066037854b5532a7db131d93d603
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/187783
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-01-29 14:39:19 +00:00
Robert Phillips
f8397f2b3f Split GrContextThreadSafeProxy into its own files
This just shuffles stuff around.

Change-Id: Ieab35f50945efe87512d7077cb994132f0e0b6ef
Reviewed-on: https://skia-review.googlesource.com/c/186874
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-01-29 14:03:47 +00:00
Brian Osman
d8a90f9be1 Converting more debug code to SkJSONWriter
All of SkDrawCommand / SkDebugCanvas now uses SkJSONWriter.
Also removed the bespoke json generator and pretty-printer
in GrAuditTrail. This was the largest volume of code still
using JsonCPP. (There are other stragglers).

Bug: skia:
Change-Id: I3aee554764689ce50c8e707caf26c76093b9bb8f
Reviewed-on: https://skia-review.googlesource.com/c/187040
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-01-28 19:06:06 +00:00
Greg Daniel
41f0e28fd5 Add MaxAPIVersion to GrVkBackendContext.
This moves us to the correct way of handling the correct version of
Vulkan that the client wants us to use.

Bug: skia:
Change-Id: I6c7962b5d2d48ae142c6a701c30f5af3801ac99b
Reviewed-on: https://skia-review.googlesource.com/c/187382
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-01-28 19:01:46 +00:00
Mike Reed
5f528e5fd8 Revert "Reland "Revert "remove legacy code for text attributes on paint"""
This reverts commit 3c03c851ad.

Modification was to copy/assign fBitfieldsUInt rather than fBitfields,
since fBitfields might be smaller, and therefore ignore some bits that
we do use in hashing, etc.

Bug: skia:
Change-Id: I5965d5d64bd22bd60f0da797fdfeeffb730588ea
Reviewed-on: https://skia-review.googlesource.com/c/187307
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-28 18:27:26 +00:00
Brian Salomon
eceb19f37e Remove GrBuffer::mapPtr()
Only used in an assert.

Change-Id: Iecfd853a71d7dd1c22096886465843c7a0122c74
Reviewed-on: https://skia-review.googlesource.com/c/187380
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2019-01-28 17:41:56 +00:00
Brian Salomon
ede88ab2b4 Remove some unused GrGLGpu member fields and functions.
-Members related to already removed stencil clear program.
-hasExtension() inline memeber function
-declaration for unimplemented setTextureSwizze() member function.

Change-Id: Ibe6054fcb7f7c8c69cfcbbbb12df95f9dcebf9fe
Reviewed-on: https://skia-review.googlesource.com/c/187305
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-01-28 15:29:56 +00:00
Brian Salomon
805cc7a2f8 Avoid setting the GL color mask and clear color redundantly before glClear.
Change-Id: I0830e62fc65fd4a85c27db01aab8e16697c840f7
Reviewed-on: https://skia-review.googlesource.com/c/187304
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-28 15:18:26 +00:00
Mike Reed
3c03c851ad Reland "Revert "remove legacy code for text attributes on paint""
This reverts commit fd0bba81c0.

Reason for revert: PaintTest.cpp:150 failing

Original change's description:
> Revert "Revert "remove legacy code for text attributes on paint""
> 
> This reverts commit fb0e2aa8fd.
> 
> Bug: skia:
> Change-Id: I16bf3c999233f7498a4d76dfbcfb26be725e88f5
> Reviewed-on: https://skia-review.googlesource.com/c/187261
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
> Auto-Submit: Mike Reed <reed@google.com>

TBR=reed@google.com

Change-Id: Ic52282f36841b7402a3a5466b93ef56ecdb6f51b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/187306
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-28 15:02:08 +00:00
Nigel Tao
22e862430e Let SkWuffsCodec allow workbuf_len == 0
Some Wuffs actions don't require extra 'scratch space'.

Bug: skia:8235
Change-Id: Idcd2e1a8676b3b9f98dcff94ad1450d1e18a0401
Reviewed-on: https://skia-review.googlesource.com/c/187160
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-01-28 14:49:43 +00:00
Brian Salomon
31a60dbd7b Remove GrGLGpu member vars related to already removed clear-as-draw program.
Change-Id: Id193e4ccee77323dd172b83e7d90f94a2691466f
Reviewed-on: https://skia-review.googlesource.com/c/187301
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-01-28 14:46:53 +00:00
Brian Salomon
8bc352c305 Revert "Revert "Avoid checking extension string in GrGLGpu::onResetContext.""
This reverts commit 04c1cccaa4.

Reland that preserves GL_NV_shader_framebuffer_fetch support.

Change-Id: I8d51321a552d0abfd0a8fa36c4d00b9b0e0d8663
Reviewed-on: https://skia-review.googlesource.com/c/187300
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-28 14:39:43 +00:00
Mike Reed
fd0bba81c0 Revert "Revert "remove legacy code for text attributes on paint""
This reverts commit fb0e2aa8fd.

Bug: skia:
Change-Id: I16bf3c999233f7498a4d76dfbcfb26be725e88f5
Reviewed-on: https://skia-review.googlesource.com/c/187261
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-28 13:56:24 +00:00
Kevin Lubick
04c1cccaa4 Revert "Avoid checking extension string in GrGLGpu::onResetContext."
This reverts commit a5bc81285a.

Reason for revert: Potentially breaking some Android bots

Original change's description:
> Avoid checking extension string in GrGLGpu::onResetContext.
> 
> Also, remove support for NV_shader_framebuffer_fetch (no longer listed in
> extension registry).
> 
> Change-Id: Icad4ecf057a7e598ce41dd6ee4029cfe0d9488f8
> Reviewed-on: https://skia-review.googlesource.com/c/186873
> 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>

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

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

Change-Id: I18a744d62af2edce1bdfdc09e68a86535f62b093
Reviewed-on: https://skia-review.googlesource.com/c/187263
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2019-01-28 13:03:23 +00:00
Mike Reed
fb0e2aa8fd Revert "remove legacy code for text attributes on paint"
This reverts commit 80f4adf98f.

Reason for revert: breaking PaintTest

Original change's description:
> remove legacy code for text attributes on paint
> 
> Bug: skia:2664
> Change-Id: I09f9d1401410d7ca338d7acde5a9660921c74da9
> Reviewed-on: https://skia-review.googlesource.com/c/185460
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>

TBR=bungeman@google.com,rmistry@google.com,herb@google.com,fmalita@chromium.org,reed@google.com

Change-Id: If9bbb92d6eb064aba30cfa9069051ff60585a269
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:2664
Reviewed-on: https://skia-review.googlesource.com/c/187260
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-28 00:18:09 +00:00
Mike Reed
80f4adf98f remove legacy code for text attributes on paint
Bug: skia:2664
Change-Id: I09f9d1401410d7ca338d7acde5a9660921c74da9
Reviewed-on: https://skia-review.googlesource.com/c/185460
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-01-27 23:54:45 +00:00
Mike Reed
f6a2348535 remove tricky asint
Bug: skia:
Change-Id: I8d5f9b29b48273a3648dfe925ff3e9e8d0ee71f3
Reviewed-on: https://skia-review.googlesource.com/c/187060
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-25 22:32:45 +00:00
Brian Salomon
a5bc81285a Avoid checking extension string in GrGLGpu::onResetContext.
Also, remove support for NV_shader_framebuffer_fetch (no longer listed in
extension registry).

Change-Id: Icad4ecf057a7e598ce41dd6ee4029cfe0d9488f8
Reviewed-on: https://skia-review.googlesource.com/c/186873
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-01-25 20:15:54 +00:00
Ethan Nicholas
842d31b141 fixed Metal matrix constructors
Bug: skia:8544
Change-Id: Ie1e96ab1ef6e8c032fa510be36c035f91a1f6851
Reviewed-on: https://skia-review.googlesource.com/c/185687
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-25 18:37:34 +00:00
Brian Salomon
0d60676556 Actually reuse GrTexture if SkPromiseImageTexture used with multiple
images.

Change-Id: Id68d2f2a4c0012b2219a505f1259a9c9bd014c65
Reviewed-on: https://skia-review.googlesource.com/c/186700
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-25 16:04:49 +00:00
Brian Salomon
35ba614dc5 Remove GrGpuResource::abandon from the public API.
Bug: skia:7966
Change-Id: I222db4f4bc765fad3e5f1461f3a8f3c663bb9429
Reviewed-on: https://skia-review.googlesource.com/c/186545
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-25 15:37:20 +00:00
Brian Salomon
9bc76d96f9 Change the meaning of GrBudgetedType::kUnbudgetedUncacheable.
kUnbudgetedCacheable now means that the resource is never purged
until its unique key is removed.

This fixes an issue where a cached texture for a promise image
might get purged by cache pressure. This in turn could cause
Skia to call the promise image's Fulfill proc multiple times with
no intervening Release calls. The balancing Release calls would
occur, but the policy is that each Fulfill should be balanced by
Release *before* another Fulfill.

Update/add unit tests.

Bug: chromium:922851
Change-Id: I6411e413b3104721ca4bb6e7f07b3b73d14cbcf9
Reviewed-on: https://skia-review.googlesource.com/c/186361
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-25 14:13:00 +00:00
Brian Salomon
aa6ca0a8bf Require explicit GrWrapCacheable specification in more places.
Make all wrapped resources be kUnbudgetedUncacheable except those
created by AHardwareBuffer image generators and as backings for promise
images.

Make all non-wrapped unbudgeted resources be kUnbudgetedUncacheable.

Update unit tests to mostly use GrWrapCacheable::kNo except where they
are testing the distinction.

Update unit tests for new expectations.
Bug: chromium:922851
Change-Id: I4d3bdaa161ffc76390f26334bcb7e2b47dd9319d
Reviewed-on: https://skia-review.googlesource.com/c/185004
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-25 00:29:27 +00:00
Eric Karl
c0b2ba2235 Invalidate Vulkan CB state after vending it out via drawable
When we vend out a Vulkan Secondary Command Buffer via GpuDrawHandler,
we need to invalidate our local Skia state for this Command Buffer, as
the external code is free to make changes to the state.

Bug: 900965
Change-Id: Iddeebff4b93c10b78bd45191fd16acde0567bc68
Reviewed-on: https://skia-review.googlesource.com/c/186000
Auto-Submit: Eric Karl <ericrk@chromium.org>
Commit-Queue: Stan Iliev <stani@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2019-01-24 23:13:48 +00:00
Brian Salomon
fa2ebeaf33 Replace bool purgeImmediately with enum GrWrapCacheable.
Store budgeted status as a tri-state enum on GrGpuResource:
kBudgeted
kUnbudgetedCacheable
kUnbudgetedUncacheable

Uncacheable vs. Cacheable captures the current distinction between
wrapped resources created with purgeImmediately or !purgeImmediately.

Non-wrapped and unbudgeted resources are all kUnbudgetedCacheable to
match current behavior.

This change just introduces the new types. No behavior is changed.

Bug: chromium:922851

Change-Id: Ic2387bf321cf9b56b4c9ffd9dbef8ade60f9cb98
Reviewed-on: https://skia-review.googlesource.com/c/185003
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-24 21:26:24 +00:00
Brian Osman
5deadca8fe Remove nearly all use of SkColorSpaceTransferFn
Most interfaces had migrated to skcms_TransferFunction. Having both was
awkward in several places, so this (almost) finishes the migration. Some
clients are calling SkICC::WriteToICC, so that's left intact. After this
CL, those clients can switch to using SkWriteICCProfile directly, and
WriteToICC can be deleted.

Bug: skia:
Change-Id: I46ebaeb1f5b20bf0c620e8a620e73ee323a1de31
Reviewed-on: https://skia-review.googlesource.com/c/186541
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-24 17:45:19 +00:00
Derek Sollenberger
08c06297bf Revert "Implement XP factory dumping"
This reverts commit 8d8224fcc1.

Reason for revert: Adds public API without documentation breaking bookmaker bot

Original change's description:
> Implement XP factory dumping
> 
> Bug: skia:
> Change-Id: If2e6a20b072d895ca9770268db5006a9400f2e70
> Reviewed-on: https://skia-review.googlesource.com/c/186180
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

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

Change-Id: I66e8508d8760b5a95e7f98597b4907d134122013
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/186542
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
2019-01-24 16:30:44 +00:00
Chris Dalton
8d8224fcc1 Implement XP factory dumping
Bug: skia:
Change-Id: If2e6a20b072d895ca9770268db5006a9400f2e70
Reviewed-on: https://skia-review.googlesource.com/c/186180
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-23 22:19:11 +00:00
Michael Ludwig
94633de528 Increase tolerance in rectilinear quad detection
Bug: chromium:923946
Change-Id: Idabe4dde28aa37e42e573c36fba9cdb8c0135689
Reviewed-on: https://skia-review.googlesource.com/c/185685
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-01-23 18:57:42 +00:00
Herb Derby
087fad7900 Add getTypefaceOrDefault and refTypefaceOrDefault
* Remove GetTypefaceOrDefault from SkPaint and SkFont
* Remove RefTypefaceOrDefault from SkPaint and SkFont

Change-Id: I04ae777142c2bdec849508b611b844418bbaedff
Reviewed-on: https://skia-review.googlesource.com/c/185781
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-23 18:52:09 +00:00
Chris Dalton
945ee652d7 Enforce non-overlap constraint from GrRenderTargetOpList
Enforces this constraint from one central location, rather than
relying on each Op to remember to check if overlap is allowed from its
onCombineIfPossible method.

Fixes an issue where we need to check the total bounds of both chains
for overlap (not the bounds of individual Ops).

Bug: skia:8671
Change-Id: I163651c868847884459acfc00d13ffdfca3a27c3
Reviewed-on: https://skia-review.googlesource.com/c/185815
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-23 16:48:15 +00:00
Michael Ludwig
7545190e32 Add new experimental API for rectangles with per-edge AA control
Also updates GM_draw_quad_set to use this API instead of the
bulk API on GrRenderTargetContext.

Bug: skia:8506
Change-Id: Ia342d83c509f9db69f06f01599c7041c98aabdb6
Reviewed-on: https://skia-review.googlesource.com/c/184488
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-23 16:45:01 +00:00
Chris Dalton
302d5be746 Rename GrCaps::canUseAdvancedBlendEquation
Looks like it's had a misleading name for almost 4 years now.

Bug: skia:
Change-Id: Ifb6dece8910c8d93de2a8ff5cadab1845b4ce4e6
Reviewed-on: https://skia-review.googlesource.com/c/186060
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-23 16:13:31 +00:00
Mike Reed
4f81bb7331 remove all support for drawText
Bug: skia:2664
Change-Id: Iee5fee505b5be50b22ddcbdb17abf7e66b7b4d6f
Reviewed-on: https://skia-review.googlesource.com/c/185001
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-01-23 14:50:35 +00:00
Chris Dalton
ee21e6b745 Move Op chain bounds calculations into tryConcat
Bug: skia:8671
Change-Id: I253a753db1aa225bd4e0a7e9bd869dbd52f2f063
Reviewed-on: https://skia-review.googlesource.com/c/185811
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-22 23:30:38 +00:00
Mike Reed
77f94ea72b Move more utils into SkFontPriv, IWYU
Fissioned from https://skia-review.googlesource.com/c/skia/+/185460

Bug: skia:
Change-Id: Iaf980e931c17196f917602fc58fc39ab51e3d248
Reviewed-on: https://skia-review.googlesource.com/c/185840
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-22 22:24:03 +00:00
Ethan Nicholas
6ac8d36116 Revert "Reland "fixed VK geometry shaders""
This reverts commit 347d36586c.

Reason for revert: ok, it wasn't a fluke

Original change's description:
> Reland "fixed VK geometry shaders"
> 
> This is a reland of eef1ed0b1f
> 
> Original change's description:
> > fixed VK geometry shaders
> > 
> > Bug: skia:
> > Change-Id: Ia26a99a6b85dba97e259525c4af0f4bdc464d804
> > Reviewed-on: https://skia-review.googlesource.com/c/184561
> > Reviewed-by: Chris Dalton <csmartdalton@google.com>
> > Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
> 
> Bug: skia:
> Change-Id: I611e624c6ee58648d75a832fd065a636eb0de413
> Reviewed-on: https://skia-review.googlesource.com/c/185699
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

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

Change-Id: Id8ce7bc536621b4d92da7d0cb47ecbdfdb798151
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/185883
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-22 21:44:01 +00:00
Ethan Nicholas
347d36586c Reland "fixed VK geometry shaders"
This is a reland of eef1ed0b1f

Original change's description:
> fixed VK geometry shaders
> 
> Bug: skia:
> Change-Id: Ia26a99a6b85dba97e259525c4af0f4bdc464d804
> Reviewed-on: https://skia-review.googlesource.com/c/184561
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

Bug: skia:
Change-Id: I611e624c6ee58648d75a832fd065a636eb0de413
Reviewed-on: https://skia-review.googlesource.com/c/185699
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-22 20:53:20 +00:00
Brian Osman
02518801df Remove SkGammaNamed / gammaNamed() from SkColorSpace
Note: This removes from the public API. The two most commonly
checked values from gammaNamed can still be tested with
gammaCloseToSRGB and gammaIsLinear.

Others can be tested for (exact or approximate) equality by
calling isNumericalTransferFn, and testing the resulting
skcms_TransferFunction in any method the client wants.

Bug: skia:
Change-Id: I9b63ffea81bba461795cad946050c7083b02eec8
Reviewed-on: https://skia-review.googlesource.com/c/185684
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-22 20:52:35 +00:00
Michael Ludwig
a3c45c75b8 Add non-srcover fallback for drawImageSet
Bug: skia:
Change-Id: Ie0b950f0b8bf0986e8419c49594a7b85c42e0295
Reviewed-on: https://skia-review.googlesource.com/c/184921
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-22 19:50:44 +00:00
Ethan Nicholas
483909c919 Revert "fixed VK geometry shaders"
This reverts commit eef1ed0b1f.

Reason for revert: breaking tree

Original change's description:
> fixed VK geometry shaders
> 
> Bug: skia:
> Change-Id: Ia26a99a6b85dba97e259525c4af0f4bdc464d804
> Reviewed-on: https://skia-review.googlesource.com/c/184561
> Reviewed-by: Chris Dalton <csmartdalton@google.com>
> Commit-Queue: Ethan Nicholas <ethannicholas@google.com>

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

Change-Id: I6d88cc56a582b4bb58e06621bfb8a892389ef46e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/185694
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-22 19:03:01 +00:00
Ethan Nicholas
eef1ed0b1f fixed VK geometry shaders
Bug: skia:
Change-Id: Ia26a99a6b85dba97e259525c4af0f4bdc464d804
Reviewed-on: https://skia-review.googlesource.com/c/184561
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-22 18:46:10 +00:00
Nigel Tao
6af1edccbf Update Wuffs version
The new version contains C++ convenience methods: you can write
"bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".

Bug: skia:8235
Change-Id: I029be2e6fc37ec115497d342d0fcfc07730fbfc6
Reviewed-on: https://skia-review.googlesource.com/c/185480
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-01-22 17:27:36 +00:00
Chris Dalton
7423195746 ccpr: Add explicit fmas to vertex placement code
It appears that some SPIR-V compilers are rearranging flops and fmas,
resulting in LSB differences on vertices that should be identical.
This rewrites the code with explicit fmas, and in a way that
discourages rearranging until we can find a better solution.

Bug: skia:7733
Bug: skia:8693
Change-Id: Ic4464ab3fa5fc2d2bc13b0b84671d8fa5f3c10a0
Reviewed-on: https://skia-review.googlesource.com/c/185420
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-22 16:55:04 +00:00
Hal Canary
02738a86e5 Revert "hide hinting and flag enums with PAINT_FLAGS"
This reverts commit 5d052dac3a.

Reason for revert: BREAKS CHROMIUM ROLL.

https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc?l=49
|   FAILED: obj/third_party/blink/renderer/platform/platform/font_platform_data_win.obj
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(49,29):
|     error: no member named 'kLCDRenderText_Flag' in 'SkPaint'
|     if (text_flags & SkPaint::kLCDRenderText_Flag) {
|                      ~~~~~~~~~^
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(51,36):
|     error: no member named 'kAntiAlias_Flag' in 'SkPaint'
|     } else if (text_flags & SkPaint::kAntiAlias_Flag) {
|                             ~~~~~~~~~^
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(56,52):
|     error: no member named 'kSubpixelText_Flag' in 'SkPaint'
|     font->setSubpixel(SkToBool(text_flags & SkPaint::kSubpixelText_Flag));
|                                             ~~~~~~~~~^
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(64,29):
|     error: no member named 'kAntiAlias_Flag' in 'SkPaint'
|     if (text_flags & SkPaint::kAntiAlias_Flag)
|                      ~~~~~~~~~^
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(85,27):
|     error: no member named 'kAntiAlias_Flag' in 'SkPaint'
|                  ? SkPaint::kAntiAlias_Flag
|                    ~~~~~~~~~^
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(91,35):
|     error: no member named 'kLCDRenderText_Flag' in 'SkPaint'
|                          ? SkPaint::kLCDRenderText_Flag
|                            ~~~~~~~~~^
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(93,27):
|     error: no member named 'kAntiAlias_Flag' in 'SkPaint'
|       text_flags = SkPaint::kAntiAlias_Flag | lcd_flag;
|                    ~~~~~~~~~^
|   ../../third_party/blink/renderer/platform/fonts/win/font_platform_data_win.cc(101,28):
|     error: no member named 'kAntiAlias_Flag' in 'SkPaint'
|       text_flags |= SkPaint::kAntiAlias_Flag;
|                     ~~~~~~~~~^
|   8 errors generated.

Original change's description:
> hide hinting and flag enums with PAINT_FLAGS
> 
> A preflight for https://skia-review.googlesource.com/c/skia/+/185460
> 
> Bug: skia:2664
> Change-Id: I83f7f9cd500e8507b559462835477ba8ae7c11ab
> Reviewed-on: https://skia-review.googlesource.com/c/185540
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
> Auto-Submit: Mike Reed <reed@google.com>

TBR=reed@google.com

Change-Id: I4d1581a7e29267ad459ed31d4885b823fa00066f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:2664
Reviewed-on: https://skia-review.googlesource.com/c/185680
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-01-21 18:51:39 +00:00
Brian Osman
9c6ee015c3 SkColorSpace API cleanup
Previously:
- Gamut could be a 4x4 matrix (overspecified), or an enum.
- Transfer function could be a struct with 7 floats, or one of two
  different enums.
- We had 5 of the 6 possible factories covering those [3 x 2] options.

Recently we added a single new factory that takes the skcms 7-float
struct, and the skcms 3x3 matrix. This is the exact, minimal set of
information needed to specify an SkColorSpace.

Major clients have been moved to that factory, so the other five are
being removed. The enums are also being removed, as they are no longer
part of the API. All transfer functions and gamuts covered by the old
enums are available as constexpr values (of the skcms types) in the
header (SkNamedTransferFn and SkNamedGamut).

Bug: skia:
Change-Id: I1fbbacec6997b966dd92000ab67513e7f1a9d023
Reviewed-on: https://skia-review.googlesource.com/c/184067
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-21 18:12:28 +00:00
Mike Reed
5d052dac3a hide hinting and flag enums with PAINT_FLAGS
A preflight for https://skia-review.googlesource.com/c/skia/+/185460

Bug: skia:2664
Change-Id: I83f7f9cd500e8507b559462835477ba8ae7c11ab
Reviewed-on: https://skia-review.googlesource.com/c/185540
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-21 15:45:37 +00:00
Mike Reed
463c0737a8 oops, forgot to set hinting on font
Bug: skia:
Change-Id: I825ecd929a60a450eb179600c4b0b81bda3aaec6
Reviewed-on: https://skia-review.googlesource.com/c/185541
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-21 15:39:17 +00:00
Chris Dalton
6f6ae6a59f Convert GrRenderTargetOpList::tryConcat to an OOP-style method
This method is going to become more complicated once we account for
non-overlap constraints. This change helps keep the argument list size
and complexity under wraps.

Bug: skia:8671
Change-Id: I34ef858e196040f194f080540f5fc190964fb6f0
Reviewed-on: https://skia-review.googlesource.com/c/185360
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-18 19:49:10 +00:00
Jim Van Verth
ee06b33570 Reland "Add compressed data support for SkImage."
This is a reland of 57263c2e0c

Original change's description:
> Add compressed data support for SkImage.
> 
> Adds a new SkImage::MakeFromCompressed method which takes raw data,
> a size, and a compression method, and returns a GPU-backed
> image.
> 
> Bug: skia:8684
> Change-Id: I570c9dafce283bcd64dfbef4fbe1c4bfeac6ce2a
> Reviewed-on: https://skia-review.googlesource.com/c/184484
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

Bug: skia:8684
Change-Id: I25fb320e8cc05e1c5afa6faa81e1a55ffd83a7a3
Reviewed-on: https://skia-review.googlesource.com/c/185200
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-01-18 16:32:08 +00:00
Hal Canary
14235d1ec0 Revert "Add compressed data support for SkImage."
This reverts commit 57263c2e0c.

Reason for revert: assert failures in test bots.

Original change's description:
> Add compressed data support for SkImage.
> 
> Adds a new SkImage::MakeFromCompressed method which takes raw data,
> a size, and a compression method, and returns a GPU-backed
> image.
> 
> Bug: skia:8684
> Change-Id: I570c9dafce283bcd64dfbef4fbe1c4bfeac6ce2a
> Reviewed-on: https://skia-review.googlesource.com/c/184484
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: If5705507f4aa34c6495fa72ff1a927cb18eca6ba
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8684
Reviewed-on: https://skia-review.googlesource.com/c/185002
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-01-17 22:13:23 +00:00
Jim Van Verth
57263c2e0c Add compressed data support for SkImage.
Adds a new SkImage::MakeFromCompressed method which takes raw data,
a size, and a compression method, and returns a GPU-backed
image.

Bug: skia:8684
Change-Id: I570c9dafce283bcd64dfbef4fbe1c4bfeac6ce2a
Reviewed-on: https://skia-review.googlesource.com/c/184484
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-17 21:18:52 +00:00
Hal Canary
3026d4b1b8 SkDocument: use auto for MakeDocument().
A later CL will make this return a unique_ptr<SkDocument>.

Bug: skia:5972
Change-Id: Ie10d6c07d5f2524ecb71d906db0d37427827225d
Reviewed-on: https://skia-review.googlesource.com/c/181660
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-01-17 19:16:28 +00:00
Mike Reed
f738d4211c hide SkPaint::getFlags/setFlags, use bool acessors instead
Bug: skia:
Change-Id: Ib44859bf69a9dfaae7fbbd220b41af0c198797c6
Reviewed-on: https://skia-review.googlesource.com/c/184388
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-01-16 22:45:29 +00:00
Herb Derby
d7861d35bd Remove findOrCreateGlyphCache
Change-Id: I3fa17b17df26d95649e9c4344ae4c501b7b715b3
Reviewed-on: https://skia-review.googlesource.com/c/184501
Auto-Submit: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2019-01-16 22:24:29 +00:00
Brian Salomon
1bf0ed8584 Make GrTexture caching for SkPromiseImageTexture work when same texture
fulfills a different SkImage.

Bug: skia:8613
Change-Id: I7ee14112c69f8aaef223a37dda455259b501a2bf
Reviewed-on: https://skia-review.googlesource.com/c/184440
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-16 22:06:53 +00:00
Chris Dalton
4b62aed973 Return GrProcessorSet::Analysis from GrDrawOp::finalize
Bug: skia:8671
Change-Id: Ib35d1642659021419f408bf19b1b0dc0066e8df2
Reviewed-on: https://skia-review.googlesource.com/c/184160
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-16 21:22:38 +00:00
Michael Ludwig
61a16515cf Implement optimization to convert filled rects to scissored clears
Bug: chromium:423834
Change-Id: I6399a2aa118488cfc598df7123de763ec39286a0
Reviewed-on: https://skia-review.googlesource.com/c/182972
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-16 21:22:36 +00:00
Herb Derby
081e6f3754 Rename GrGlyphCache -> GrStrikeCache
Change-Id: Ie6fdcc6ce1f2265783ebb4dcd1b1ce087a296ddf
Reviewed-on: https://skia-review.googlesource.com/c/184500
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-16 20:15:04 +00:00
Herb Derby
5fd955e36d Rename SkGlyphCache -> SkStrike
Change-Id: I51ca9f61feb0d4f7352ed634b7070327f31ccf05
Reviewed-on: https://skia-review.googlesource.com/c/184400
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-16 18:28:28 +00:00
Michael Ludwig
c39d0c850f Implement generic draw-as-clear fallback for color and stencil
This will likely have a perf hit for GL devices that trigger the clear-as-draw fallback since
the fillrectop cannot be as optimized as the direct GLSL shader. However, since the Metal
backend now needs to perform something very similar for scissored clears, I think this
improves code maintainability and is worth it.

Bug: skia:
Change-Id: Id87513784e5892c7ff3dc988115da1d39a46d8e0
Reviewed-on: https://skia-review.googlesource.com/c/182971
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-01-16 17:27:44 +00:00
Mike Reed
47b7cd9a6b remove paint::glyphsToUnichars
Bug: skia:
Change-Id: I3f97a74f6d0a9da2711a50740d83d2181858bda8
Reviewed-on: https://skia-review.googlesource.com/c/184301
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-16 02:56:55 +00:00
Herb Derby
9cfbf9511c Switch to bulk api for GPU mask (BMP) drawing.
* Switch from processing a single glyph at a time to processing
  all with the same drawing type.

Change-Id: Id67b713f2f5a486be63fdcfee5012e73f3592cdf
Reviewed-on: https://skia-review.googlesource.com/c/182000
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-01-15 22:26:50 +00:00
Jim Van Verth
1676cb9282 Restore ETC1 compressed texture support.
Brings back GL ETC1 support and adds Vulkan support as well.

Bug: skia:8684
Change-Id: Ie65da0a3172793081f0e4072f161bfb9b14678bc
Reviewed-on: https://skia-review.googlesource.com/c/179724
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-15 19:56:28 +00:00
Brian Salomon
553610d792 Change how PromiseLazyInstantiationCallback calls Done proc.
Previously we used the texture's "release proc" mechanism to call
the client's Done proc for promise texture-backed images. There was also
an attempt to call the Done proc more aggresively when the callback is
destroyed and release was already called. Otherwise, Done won't get
called until the resource cache processes the cache key invalidation
message for the texture and releases the texture.

The new approach is to have the done proc be reffed by the lazy
instantiation callback and the idle callback that is used to call the
client's release callback. This is a bit simpler and means Done gets
called ASAP.


Bug: skia:
Change-Id: Id3928bafee68ee5e047917b34e3d39ba9d8d603b
Reviewed-on: https://skia-review.googlesource.com/c/183981
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-15 18:13:57 +00:00
Chris Dalton
330b08511d Remove "canCombineOverlappedStencilAndCover"
This looks like a relic from nvpr text.

Bug: skia:8671
Change-Id: I417c7b4565208e3bf91a3891fa59ba50308a8139
Reviewed-on: https://skia-review.googlesource.com/c/183884
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-15 02:15:25 +00:00
Mike Reed
31ba6feaf6 unflatten directly to font for legacy skps
All of this extra code/parameter-passing for fonts to the paint unflattener
can go away when we can drop support for older skps

Bug: skia:
Change-Id: I4d626f0925a54564b7c386ed80953a0291c8bc1a
Reviewed-on: https://skia-review.googlesource.com/c/183863
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-15 01:25:55 +00:00
Herb Derby
f69f370706 Add buffers for Mask drawing in preparation for bulk API
The next CL will introduce a bulk API between the Painter and
its client code. That CL will uses these buffers to communicate.

Change-Id: I90f78c212db1a3595754e48ab68a41d003ba7003
Reviewed-on: https://skia-review.googlesource.com/c/183920
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-14 22:48:31 +00:00
Hal Canary
2111d5fdfe SkPDF: elimate old IMAGE_STATS, de-dupe image code.
- remove SkPDFDict::emitAll()
  - all stream serialization moved into SkPDFDocument.
  - SkPDFDocument::endObject() and ::beginOject() now private.

Change-Id: I4d8a5643027f859e1c0307a379c74859faae0d06
Reviewed-on: https://skia-review.googlesource.com/c/180370
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-01-14 18:55:05 +00:00
Ben Wagner
1c0cacf640 Remove empty statement.
Fixes new clang warning about empty statements.
../../src/gpu/vk/GrVkResourceProvider.cpp:351:6: error: empty expression statement has no effect; remove unnecessary ';' to silence this warning [-Werror,-Wextra-semi-stmt]

Change-Id: I39e04e888e6c6975d99d90f8029b51c9d1ec69f2
Reviewed-on: https://skia-review.googlesource.com/c/183804
Commit-Queue: Ben Wagner <bungeman@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Auto-Submit: Ben Wagner <bungeman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-01-14 18:41:23 +00:00
Brian Osman
f48c9965ec Revert "Revert "Add SkImage::makeColorTypeAndColorSpace""
This reverts commit 9a97c96c9c.

This works like makeColorSpace, but allows changing color type as well.
Added a GM to test, although the GM demonstrates several ways this can
fail (especially when using this on lazy images).

For simple use-cases (8888 <-> F16), everything should be fine.

For the reland, add logic to the GM to guard against context abandon
failures, and to ensure that lazy images can be decoded (by calling
makeRasterImage) before trying to draw them. That prevents the DDL
recorder from seeing them.

Bug: skia:
Change-Id: Ibc7b07c3399979b1a44d85a38424e5487e606607
Reviewed-on: https://skia-review.googlesource.com/c/183800
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-01-14 18:01:15 +00:00
Hal Canary
4ca9fa30ba SkPDF: unify Canon and Document
motivation:  The Document has become intrusive enough that we almost
always have a pointer to the Document on hand anyways.

Also: update document.

Also: forward declare more things in headers.

Also, don't try to clean up resources when abort() or close() is called.
It is easy enough for the client to delete the Document when done.

Change-Id: I21aeed37f26ba16d68af041d9317adf00e9a61f2
Reviewed-on: https://skia-review.googlesource.com/c/180646
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-01-14 17:56:14 +00:00
Brian Salomon
3f4cd774e6 Make SkPromiseImageTexture ref counted.
This makes the API easier to use in Chrome.

It is no longer required to pass the SkPromiseImageTexture to the
release proc.

Bug: skia:
Change-Id: I6636401f6a7915d3ad15e890718638bc91a58cc4
Reviewed-on: https://skia-review.googlesource.com/c/183383
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-14 16:19:01 +00:00
Michael Ludwig
a21d196602 Move clear-as-draw caps into GrCaps
Bug: skia:
Change-Id: Ib029f337f5e61366e2550e77dc99310b44d03f84
Reviewed-on: https://skia-review.googlesource.com/c/182970
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
2019-01-14 15:27:44 +00:00
Hal Canary
a6854de5d8 SkCanvas: hide drawText behind SK_SUPPORT_LEGACY_CANVAS_DRAW_TEXT
Change-Id: I8c324c4eecdf90838ace625dc16cf0f1b17e5038
Reviewed-on: https://skia-review.googlesource.com/c/182664
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-01-14 15:22:39 +00:00
Nigel Tao
9f810c2da4 Have SkWuffsCodec get workbuf_len from decoder
Getting it from the image_config is deprecated. There may be more than
one implementation of decoding any given compressed image format.

Bug: skia:8235
Change-Id: I17cb746467635c073c5bc55946b2bad4f067b1bf
Reviewed-on: https://skia-review.googlesource.com/c/183540
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-01-14 14:12:33 +00:00
Brian Osman
9a97c96c9c Revert "Add SkImage::makeColorTypeAndColorSpace"
This reverts commit f855c3c785.

Reason for revert: DDL and Abandon failures.

Original change's description:
> Add SkImage::makeColorTypeAndColorSpace
> 
> This works like makeColorSpace, but allows changing color type as well.
> Added a GM to test, although the GM demonstrates several ways this can
> fail (especially when using this on lazy images).
> 
> For simple use-cases (8888 <-> F16), everything should be fine.
> 
> Bug: skia:8618
> Change-Id: If4c173c0dd4abaf4f8e63b7ae0ffcf8a08c7e9ef
> Reviewed-on: https://skia-review.googlesource.com/c/183382
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Mike Klein <mtklein@google.com>

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

Change-Id: I5d7a72e2b674224351e4b0c982408f89780708f8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8618
Reviewed-on: https://skia-review.googlesource.com/c/183392
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-12 17:38:21 +00:00
Ethan Nicholas
2ee498c674 fixed uninitialized value in Perlin noise shader
Bug: skia:
Change-Id: Ie1670dd574b19faa396c8db1a58cfe922925ae5a
Reviewed-on: https://skia-review.googlesource.com/c/183386
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-01-12 14:30:06 +00:00
Brian Osman
f855c3c785 Add SkImage::makeColorTypeAndColorSpace
This works like makeColorSpace, but allows changing color type as well.
Added a GM to test, although the GM demonstrates several ways this can
fail (especially when using this on lazy images).

For simple use-cases (8888 <-> F16), everything should be fine.

Bug: skia:8618
Change-Id: If4c173c0dd4abaf4f8e63b7ae0ffcf8a08c7e9ef
Reviewed-on: https://skia-review.googlesource.com/c/183382
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2019-01-12 14:30:05 +00:00
Leon Scroggins III
e548161aba Add SkBlurDrawLooper::Make(SkColor4f, SkColorSpace)
Bug: b/120904891

This will allow adding android.graphics.Paint#setShadowLayer(
    float radius, float dx, float dy, @ColorLong long shadowColor).

Change-Id: Ic9256b10c82b56847802f209cf82b4e5c07a9069
Reviewed-on: https://skia-review.googlesource.com/c/182762
Auto-Submit: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-12 08:46:04 +00:00
Jim Van Verth
3e4c2f32c6 Reland "Add target SkColorSpace to SkImage_GpuYUVA."
This is a reland of 2232b9ed39

Original change's description:
> Add target SkColorSpace to SkImage_GpuYUVA.
>
> Bug: skia:8868
> Change-Id: I91f58bf88aec14c17ea904adca792e20099c36eb
> Reviewed-on: https://skia-review.googlesource.com/c/182816
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

Bug: skia:8668
Change-Id: If41ba39e63b348422afaf6910b03405ef1c2be12
Reviewed-on: https://skia-review.googlesource.com/c/183380
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-01-11 19:07:54 +00:00
Ethan Nicholas
a7ceb50f50 added PLS support to SkSL
Bug: skia:
Change-Id: I77fb0861c8cba0f86e3d0521d2ad77e204487d21
Reviewed-on: https://skia-review.googlesource.com/c/99921
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-11 18:14:50 +00:00
Florin Malita
950243df0e Hack up SkShaper to pass additional callback info
- rename LineHandler -> RunHandler (since it gets called per run)
- pass additionl run info:

  * line index
  * cumulative advance
  * ascent/descent/leading

Bug: skia:
Change-Id: Ie848e5a35243088b99989c73fdec44c6a1bdd051
Reviewed-on: https://skia-review.googlesource.com/c/183300
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-01-11 17:04:26 +00:00
Ethan Nicholas
d8661685d4 fixed SPIR-V decoration
Bug: skia:
Change-Id: I27361982aad550058263612526f0bfcb3a03b6d6
Reviewed-on: https://skia-review.googlesource.com/c/159161
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-11 16:24:26 +00:00
Jim Van Verth
4938323bbc Revert "Add target SkColorSpace to SkImage_GpuYUVA."
This reverts commit 2232b9ed39.

Reason for revert: Causing crashes on some ES devices and ANGLE.

Original change's description:
> Add target SkColorSpace to SkImage_GpuYUVA.
> 
> Bug: skia:8868
> Change-Id: I91f58bf88aec14c17ea904adca792e20099c36eb
> Reviewed-on: https://skia-review.googlesource.com/c/182816
> Commit-Queue: Jim Van Verth <jvanverth@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

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

Change-Id: I61752dbd244c0b4c25578bae08f8da40db6bb514
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8668
Reviewed-on: https://skia-review.googlesource.com/c/183301
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2019-01-11 16:10:27 +00:00
Robert Phillips
27467658dd Reduce reliance on the SkImage_Gpu's GrContext pointer
The SkImages aren't guaranteed to have a full fledged GrContext (e.g., if they are promise images created outside of a DDL recorder). This CL starts the process if lessening Skia's reliance on what ever the SkImage has cached.

Change-Id: I0181d09417e1ea2ced7706a722e2815f3ceee870
Reviewed-on: https://skia-review.googlesource.com/c/182974
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-01-11 16:07:56 +00:00
Jim Van Verth
2232b9ed39 Add target SkColorSpace to SkImage_GpuYUVA.
Bug: skia:8868
Change-Id: I91f58bf88aec14c17ea904adca792e20099c36eb
Reviewed-on: https://skia-review.googlesource.com/c/182816
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-01-11 14:44:56 +00:00
Ethan Nicholas
8294015fc8 Fixed GPU perlin noise shaders under rotation.
Note that this does not fix perspective rendering, which it
turns out is broken under CPU also... so at least the behavior
is consistent between the two now.

Bug: skia:8250
Change-Id: I35187c9a9bcf403f61348a33ef1623afeec2e73e
Reviewed-on: https://skia-review.googlesource.com/c/182966
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-11 14:23:06 +00:00
Herb Derby
811a67270d Make single ctor for SkGlyph and remove reset
* Spruce up SkTLazy

Change-Id: Ice2b66009004a8d1894edd25790eca03ee451da2
Reviewed-on: https://skia-review.googlesource.com/c/183103
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-01-10 23:18:27 +00:00
Herb Derby
14e9177492 Remove unneeded SkGlyph::reset
Change-Id: I3e4e8bf41beda5fdca204640bc51b64c0a40a213
Reviewed-on: https://skia-review.googlesource.com/c/183102
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2019-01-10 21:19:03 +00:00
Mike Reed
e5f9cfad7b expand flag to include all text-related paint fields
Bug: skia:
Change-Id: I8453a6d607df4902cd05c5c9bc6162feda04ef9c
Reviewed-on: https://skia-review.googlesource.com/c/182969
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-10 20:06:07 +00:00
Herb Derby
4627523444 Stable pointers for SkRemoteGlyphCache
Change-Id: I123fcf7da32f0e5e5a14aec95bea684c9190d096
Reviewed-on: https://skia-review.googlesource.com/c/183100
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-10 19:54:59 +00:00
Derek Sollenberger
e6fb76bbd2 Add additional information (e.g. colorspace) to the GpuDrawHandler
Bug: b/115613038
Change-Id: I375fc5f1bac13557b35e39658d678c61f70024c8
Reviewed-on: https://skia-review.googlesource.com/c/182900
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Auto-Submit: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-10 18:49:52 +00:00
Herb Derby
f6fca2668d Make a ctor for SkGlyph
Change-Id: I21a5ed81d3e161ddf8a838ea9ac0414265b00ae6
Reviewed-on: https://skia-review.googlesource.com/c/182701
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-10 18:38:11 +00:00
Brian Salomon
cdd8a0a0e8 Revert "Revert "Reuse GrTexture instances when the same GrBackendTexture is used to""
This reverts commit 426ba463d5.

Bug: skia:8613
Change-Id: Iacaf40549369110aa95015e8d4579ec41db22d13
Reviewed-on: https://skia-review.googlesource.com/c/182963
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-10 17:51:21 +00:00
Brian Salomon
426ba463d5 Revert "Reuse GrTexture instances when the same GrBackendTexture is used to"
This reverts commit 559c617137.

Reason for revert: breaking things

Original change's description:
> Reuse GrTexture instances when the same GrBackendTexture is used to
> repeatedly fulfill a promise SkImage.
> 
> Bug: skia:8613
> 
> Change-Id: I35c76435d630d2daa034e0c3efb59666bfd6882a
> Reviewed-on: https://skia-review.googlesource.com/c/175820
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: I7548809945d0a875fdb9387398bbc45e733c0846
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8613
Reviewed-on: https://skia-review.googlesource.com/c/182960
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2019-01-10 16:33:11 +00:00
Brian Salomon
559c617137 Reuse GrTexture instances when the same GrBackendTexture is used to
repeatedly fulfill a promise SkImage.

Bug: skia:8613

Change-Id: I35c76435d630d2daa034e0c3efb59666bfd6882a
Reviewed-on: https://skia-review.googlesource.com/c/175820
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-10 16:10:59 +00:00
Brian Osman
c6444d2f26 Enable wide color support in CCPR
Unlike other ops, always use half-float colors. The logic around the
Instance struct makes dynamically switching color size tricky.
CCPR stores color in a per-instance attribute though, so the cost of
always using FP16 is much lower.

Bug: skia:
Change-Id: I9c0c64940f74f915a18417a5830030558e065d28
Reviewed-on: https://skia-review.googlesource.com/c/182760
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-10 13:53:31 +00:00
Florin Malita
919e209d1a [sksg] 4x4 matrix support
Refactor the scene graph transform hierarchy to support 4x4 matrices:

  * rename current Transform to TransformEffect (operates as a render tree effect)
  * introduce a new Transform abstract base class, to replace current Matrix
  * refactor existing Matrix as a Transform specialization
  * introduce a new Matrix44 Transform specialization
  * refactor the existing composition helper (ComposedMatrix) as Concat,
    a Transform specialization (using composition instead of Matrix inheritance)

Change-Id: Ic3c1b499e10a0a229a7a76d4bef3dbc6a8b49194
Reviewed-on: https://skia-review.googlesource.com/c/182666
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-01-10 02:06:54 +00:00
Herb Derby
e46ccf89da Make pointers to glyphs in the SkGlyphCache stable
Move the SkGlyph data from the hash map into the fAlloc, and
replace it with a SkGlyph*. This simplifies implementing bulk
operation on the SkGlyphCache because already processed glyphs ptrs
will not change location when new glyphs are added to the map.

There is a very small regression, which is more than made up for in the
next CLs.

Master:
min     median  mean    max     stddev
343µs   358µs   359µs   370µs   2%

This CL:
min     median  mean    max     stddev
348µs   364µs   362µs   373µs   2%

Change-Id: I71733285ed32fa5947b588fb6dfaa0a757707646
Reviewed-on: https://skia-review.googlesource.com/c/182560
Reviewed-by: Mike Klein <mtklein@google.com>
2019-01-09 21:52:52 +00:00
Robert Phillips
9548c3b42f No longer round the non-AA clip bounds
By no longer rounding the non-AA clip bounds we increase the probability that a non-AA clip will be dropped when applied to a non-AA rect draw (particularly at half pixel translations).

To make this work in practice we must also make the clip stack check if the non-AA clip is relevant before we preemptively employ a scissor clip.

Note that I have verified that this removes the gross clipping errors from the Chrome repo case but the rounding to scissor clip behavior could still happen in other cases.

Bug: 906496
Change-Id: Iba51b9061fb434144e3a9b3fd91479109fcf67f4
Reviewed-on: https://skia-review.googlesource.com/c/182141
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-01-09 21:35:30 +00:00
Hal Canary
292ece8024 SkCanvas::drawText: remove calls
Change-Id: Id5a870d9b94ce5510fd6e0fd75f52550e598139b
Reviewed-on: https://skia-review.googlesource.com/c/182449
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2019-01-09 19:26:53 +00:00
Hal Canary
ac907bde51 SkPDF: Fix Hal's bad spelling
No-Try: true
Change-Id: I7812fd7be60b50e512ec785343bc79533155c037
Reviewed-on: https://skia-review.googlesource.com/c/182457
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2019-01-09 19:20:53 +00:00
Mike Reed
33535cb642 remove legacy drawstring
Bug: skia:
Change-Id: Id3491dbc6cee3e5d06981284535a04639182e9dd
Reviewed-on: https://skia-review.googlesource.com/c/182450
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2019-01-09 17:38:04 +00:00
Brian Osman
0995fd5cb7 Remove SK_LEGACY_TESSELLATOR_CPU_COVERAGE
Bug: skia:
Change-Id: I1122518e00967cd809badd75e20d210c317c50e8
Reviewed-on: https://skia-review.googlesource.com/c/182445
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-09 16:01:08 +00:00
Hal Canary
8cb7376b2d SkPDF: rasterize for color-filter+layer
Bug: chromium:918512
Change-Id: I2a487cb1145c63daec7cb50610efa1e9fa00f5ef
Reviewed-on: https://skia-review.googlesource.com/c/182444
Commit-Queue: Hal Canary <halcanary@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Auto-Submit: Hal Canary <halcanary@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-01-09 15:13:27 +00:00
Michael Ludwig
dcd48212a8 Don't store local coordinates for solid color quad ops
If the paint for the op list is trivial, we can (even
before processor analysis has been performed) discard the local quad entirely.
In the case of a 2D solid color quad, the op storage is reduced to 52 bytes
per quad. If necessary, this same strategy could be applied to the quad color
and/or edge aa flags but it would require no longer interleaving the per-quad
metadata with the quad coordinates.

Bug: chromium:915025
Bug: chromium:917242
Change-Id: Ic10c4bf8c32f1238ed45eb613b0bb37f466ca6d0
Reviewed-on: https://skia-review.googlesource.com/c/180645
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
2019-01-09 14:49:37 +00:00
Michael Ludwig
c96fc37f23 Reland "Use specialized quad lists in rectangle ops"
This is a reland of 5820b0c3f3
It is updated in patchset 2 to clean up pointers passed into memcpy, and to
optimize the bounds calculation in GrPerspQuad. This should fix a performance
regression caused by the move away from caching 1/w. The Sk4f::invert() does not
always preserve 1/1 == 1, which led to bounds slightly outside of clips and
thus forced Skia to keep the scissor test enabled. The fix also restores the
optimization of skipping the 1/w division when the quad is known to be 2D.

Original change's description:
> Use specialized quad lists in rectangle ops
>
> Hopefully reduces memory footprint of GrFillRectOp and GrTextureOp
>
> The original rect code (GrAAFillRectOp) stored 2 SkMatrices (18 floats), 2
> SkRects (8 floats) an SkPMColor4f (4 floats) and a flag (1 int) for a total
> of 124 bytes per quad that was stored in the op.
>
> The first pass at the rectangle consolidation switched to storing device and
> local quads as GrPerspQuads (32 floats), an SkPMColor4f (4 floats) and a flag
> (1 int) for a total of 148 bytes per quad. After landing, several memory
> regressions appeared in Chrome and our perf monitor.
>
> Several intertwined approaches are taken here. First, GrPerspQuad no longer
> caches 1/w, which makes a quad 12 floats instead of 16. Second, a specialized
> list type is defined that allows storing the x, y, and extra metadata together
> for quads, but keeps the w components separate. When the quad type isn't
> perspective, w is not stored at all since it is implicitly 1 and can be
> reconstituted at tessellation time. This brings the total per quad to either
> 84 or 116 bytes, depending on if the op list needs perspective information.
>
> Bug: chromium:915025
> Bug: chromium:917242
> Change-Id: If37ee122847b0c32604bb45dc2a1326b544f9cf6
> Reviewed-on: https://skia-review.googlesource.com/c/180644
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

Bug: chromium:915025, chromium:917242
Change-Id: I98a1bf83fd7d393604823d567c57d7e06fad5e55
Reviewed-on: https://skia-review.googlesource.com/c/182203
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
2019-01-08 21:36:31 +00:00
Greg Daniel
a870b46c79 Add ability to write out VkPipelineCache to gpu PersistentCache.
Bug: skia:
Change-Id: Id13d680401f69a074ae0c85f9ceaf3308fccb129
Reviewed-on: https://skia-review.googlesource.com/c/181403
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2019-01-08 21:18:51 +00:00
Brian Osman
5d6be8f755 Remove templates from GrTextBlobVertexRegenerator
This was originally done for performance, but I'd like to see if
there's a measurable regression here.

I think the new code is much simpler, and easier to maintain. It's also
going to be easier to retrofit with wide color.

This appears to save about 3.5 KB of code size.

Bug: skia:
Change-Id: I71297c356c34a13b239d4247b722a59b7c61fbb2
Reviewed-on: https://skia-review.googlesource.com/c/182146
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-08 19:47:39 +00:00
Chris Dalton
aaa77c169f Reland "ccpr: Support caching of paths that span multiple tiles"
This is a reland of 6a3dc8be46

Original change's description:
> ccpr: Support caching of paths that span multiple tiles
> 
> Adds an accumulative "hit rect" for each cache entry that tracks the
> region of the path that has been drawn during its lifetime. Now, a
> path mask can be cached once the "hit rect" covers 50% of the path.
> This allows us to cache a path that spans multiple tiles.
> 
> To guard against unnecessarily caching gigantic path masks, we also
> require that 10% of the path be visible during the draw when it is
> cached.
> 
> Bug: skia:8462
> Change-Id: Iab2c277102b7a774eaa909c9663211694554c5a5
> Reviewed-on: https://skia-review.googlesource.com/c/180700
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

Bug: skia:8462
Change-Id: Ia2b10430acd2dffac78b5abd432763ead79bc902
Reviewed-on: https://skia-review.googlesource.com/c/181983
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-08 16:58:58 +00:00
Ethan Nicholas
56b4e3db60 disallow varying matrices in shaders
Bug: skia:7869
Change-Id: I7440194ae9cbc3c9f2277172f718646b7214bc01
Reviewed-on: https://skia-review.googlesource.com/c/181903
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-08 16:09:56 +00:00
Ethan Nicholas
a9a06907f3 fixed SPIR-V indexing a swizzle
Bug: skia:8543
Change-Id: I5d22de1b84fca9839215fff102dcac4b3a8063f1
Reviewed-on: https://skia-review.googlesource.com/c/181842
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-08 15:29:26 +00:00
Florin Malita
07e4adf69e Remove SkCanvas::kPreserveLCDText_SaveLayerFlag
No longer used in Chromium.

Change-Id: I974fc345c78212fa0378bb3e5a57348c32319adc
Reviewed-on: https://skia-review.googlesource.com/c/181841
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-01-08 14:21:34 +00:00
Greg Daniel
2d2c09f829 Don't store the length and checksom on the GrProgramDesc key itself.
Bug: skia:
Change-Id: I9f75733962e3c4ed20e5818820f94eda2964f38a
Reviewed-on: https://skia-review.googlesource.com/c/181900
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2019-01-08 14:12:34 +00:00
Robert Phillips
55ff5d3ba8 Fix truncation of sigma parameter in blur-mask-filtered mask key
This would allow blur-masks alias one another.

Bug: 912595
Bug: 878195
Change-Id: I44e86e893a505cf8abd991975a025cda52011db6
Reviewed-on: https://skia-review.googlesource.com/c/181902
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
2019-01-08 13:05:30 +00:00
Robert Phillips
832c931d5b Revert "Make SkBitmap/SkPixmap::erase* do so in sRGB"
This reverts commit 6f44647e52.

Reason for revert: checking to see if this is blocking the Chrome roll

Original change's description:
> Make SkBitmap/SkPixmap::erase* do so in sRGB
> 
> We generally consider untagged colors to be sRGB, so this makes us more
> consistent with other parts of the API.
> 
> Add a test.
> 
> Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
> Change-Id: I5468c86ad92164797a65ffd9fbe471e01a97a2ca
> Reviewed-on: https://skia-review.googlesource.com/c/179245
> Commit-Queue: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Reviewed-by: Mike Klein <mtklein@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

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

Change-Id: Ia592adf2c790d294da1e32c1e83f9f34e81d79cc
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/182083
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2019-01-08 13:04:24 +00:00
Brian Osman
80879d4a39 Revert "Revert "Support combining per-vertex coverage with color in default GP vertex shader""
This reverts commit ded032c4c9.

Bug: skia:
Change-Id: I89a0ef492c1930c9ba248fc0a92bc054f2f17205
Reviewed-on: https://skia-review.googlesource.com/c/181840
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-07 23:42:50 +00:00
Chris Dalton
7337dbea1a Revert "ccpr: Support caching of paths that span multiple tiles"
This reverts commit 6a3dc8be46.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> ccpr: Support caching of paths that span multiple tiles
> 
> Adds an accumulative "hit rect" for each cache entry that tracks the
> region of the path that has been drawn during its lifetime. Now, a
> path mask can be cached once the "hit rect" covers 50% of the path.
> This allows us to cache a path that spans multiple tiles.
> 
> To guard against unnecessarily caching gigantic path masks, we also
> require that 10% of the path be visible during the draw when it is
> cached.
> 
> Bug: skia:8462
> Change-Id: Iab2c277102b7a774eaa909c9663211694554c5a5
> Reviewed-on: https://skia-review.googlesource.com/c/180700
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: Ibae9d46333e3178856fd623f26317366102dd344
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8462
Reviewed-on: https://skia-review.googlesource.com/c/181982
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-07 22:41:19 +00:00
Leon Scroggins III
6f44647e52 Make SkBitmap/SkPixmap::erase* do so in sRGB
We generally consider untagged colors to be sRGB, so this makes us more
consistent with other parts of the API.

Add a test.

Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
Change-Id: I5468c86ad92164797a65ffd9fbe471e01a97a2ca
Reviewed-on: https://skia-review.googlesource.com/c/179245
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2019-01-07 22:13:39 +00:00
Chris Dalton
6a3dc8be46 ccpr: Support caching of paths that span multiple tiles
Adds an accumulative "hit rect" for each cache entry that tracks the
region of the path that has been drawn during its lifetime. Now, a
path mask can be cached once the "hit rect" covers 50% of the path.
This allows us to cache a path that spans multiple tiles.

To guard against unnecessarily caching gigantic path masks, we also
require that 10% of the path be visible during the draw when it is
cached.

Bug: skia:8462
Change-Id: Iab2c277102b7a774eaa909c9663211694554c5a5
Reviewed-on: https://skia-review.googlesource.com/c/180700
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-07 21:58:28 +00:00
Joe Gregorio
a3efc72e28 Fix extra semicolon.
Bug: skia:
Change-Id: I4e7612515dbbd9a623f29e0d1f97684a5ea93536
Reviewed-on: https://skia-review.googlesource.com/c/181843
Auto-Submit: Joe Gregorio <jcgregorio@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
2019-01-07 21:00:38 +00:00
Brian Osman
ded032c4c9 Revert "Support combining per-vertex coverage with color in default GP vertex shader"
This reverts commit 8e13f69262.

Reason for revert: Layout tests still failing.

Original change's description:
> Support combining per-vertex coverage with color in default GP vertex shader
> 
> Leverage this in ops that use tessellation with per-vertex coverage, to
> move the (color * coverage) work into the vertex shader.
> 
> For the tessellating path renderer, color is always uniform, but we were
> sending it per-vertex. Added support to the default GP for routing the
> uniform color to the vertex shader (when there is per-vertex coverage and
> coverage can be folded into alpha). The end result is that we do less work
> on the CPU, and send less data (for incompatible blend modes) or the same
> amount (for compatible blend modes).
> 
> Finally, because color is never sent through a vertex attribute, this
> solves wide color (and avoids the vertex bloat that would have happened
> when using half-floats). For the linearizing convex path renderer, do the
> usual fix for wide color.
> 
> PS6 is the "clean" version of this CL, later versions are guarded to
> rebaseline layout tests.
> 
> Bug: skia:
> Change-Id: I7fa87219177d36db800463d4492b78f2cb14a1c3
> Reviewed-on: https://skia-review.googlesource.com/c/179996
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Commit-Queue: Brian Osman <brianosman@google.com>

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

Change-Id: Idf2b4c4b4d6bb6683bf6293d9e9a5ba097f38289
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/c/181762
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-07 19:14:26 +00:00
Herbert Derby
85ff9570a5 Isolate cache lookups in preparation to hoist into painter
This essentially reverts the CL
https://skia-review.googlesource.com/c/skia/+/180375

at this point combining the strike and glyph cache seems like
the wrong direction.

Change-Id: I66a673469fd12869263a3826d6ec6be622b2b9a1
Reviewed-on: https://skia-review.googlesource.com/c/180777
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-07 19:04:06 +00:00
Greg Daniel
3d92a49a5e Add wait function to GrVkSecondaryCBDrawContext for semaphores.
Bug: skia:
Change-Id: Icd4875fa8fa495f9ce02135bc0a8c37608ed09df
Reviewed-on: https://skia-review.googlesource.com/c/181661
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2019-01-07 18:37:04 +00:00
Mike Reed
023403ba99 hide setTextEncoding
Bug: skia:
Change-Id: Ia9d3acadc1ef8a9b3c175dba501a5324179d27e9
Reviewed-on: https://skia-review.googlesource.com/c/181566
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-07 18:34:55 +00:00
Chris Dalton
a13078cc2c ccpr: Convert GrCCDrawPathsOp::SingleDraw to a class
Just some cleanup.

Bug: skia:8462
Change-Id: Iad1d3111690c1db1c36a495b4badbe9edd4b5555
Reviewed-on: https://skia-review.googlesource.com/c/180740
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-07 17:02:51 +00:00
Ethan Nicholas
8d058834a1 Revert "Revert "we now cache GLSL shaders when we can't cache the binaries""
This reverts commit 255f73a276.

Bug: skia:
Change-Id: I87c04ad340ebe107308d384cd91658330493d6ad
Reviewed-on: https://skia-review.googlesource.com/c/181564
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
2019-01-07 16:32:31 +00:00
Chris Dalton
351e80cc28 Reland "ccpr: Rework the path cache to support sporadic flushing"
This is a reland of d6fa45472c

Original change's description:
> ccpr: Rework the path cache to support sporadic flushing
> 
> Removes the notion of a stashed atlas that we store from the previous
> flush. Now we just cache every atlas we ever render. Cached atlases
> can either be 16-bit or 8-bit.
> 
> The "reuse" and "animation" cases should both behave exactly the same
> as before: Where before we would copy from the stashed atlas to 8-bit
> atlases, we now copy from a cached 16-bit atlas and then invalidate
> it. Where before we would recycle the stashed atlas's backing texture
> object, we now recycle this same texture object from an invalidated
> 16-bit cached atlas.
> 
> The main difference is that cases like tiled rendering now work. If
> you draw your whole scene in one flush, you still get one big 16-bit
> cached atlas, just like the "stashed atlas" implementation. But if you
> draw your scene in tiles, you now get lots of little cached 16-bit
> atlases, which can be reused and eventually copied to 8-bit atlases.
> 
> Bug: skia:8462
> Change-Id: Ibae65febb948230aaaf1f1361eef9c8f06ebef18
> Reviewed-on: https://skia-review.googlesource.com/c/179991
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

Bug: skia:8462
Change-Id: I2f64b0c37e2cd644a202dfc786366dda5d238391
Reviewed-on: https://skia-review.googlesource.com/c/181450
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-07 16:14:31 +00:00
Brian Osman
8e13f69262 Support combining per-vertex coverage with color in default GP vertex shader
Leverage this in ops that use tessellation with per-vertex coverage, to
move the (color * coverage) work into the vertex shader.

For the tessellating path renderer, color is always uniform, but we were
sending it per-vertex. Added support to the default GP for routing the
uniform color to the vertex shader (when there is per-vertex coverage and
coverage can be folded into alpha). The end result is that we do less work
on the CPU, and send less data (for incompatible blend modes) or the same
amount (for compatible blend modes).

Finally, because color is never sent through a vertex attribute, this
solves wide color (and avoids the vertex bloat that would have happened
when using half-floats). For the linearizing convex path renderer, do the
usual fix for wide color.

PS6 is the "clean" version of this CL, later versions are guarded to
rebaseline layout tests.

Bug: skia:
Change-Id: I7fa87219177d36db800463d4492b78f2cb14a1c3
Reviewed-on: https://skia-review.googlesource.com/c/179996
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-07 16:03:59 +00:00
Nigel Tao
a676648c3e Update third_party/wuffs version
Wuffs ships as a "single file C library". Previously, that single file
was a .h file. Now it is a .c file.

The contents of the file are practically the same. The different file
name extension means that the build system (GN/ninja) will treat that
file as a .c file, or "something that generates code", and not merely a
.h file, or "something #include'd by things that generate code".

This should hopefully fix mysterious linker errors when updating the
third_party/wuffs checkout results in the builder doing no work, since
no .c files changed.

Bug: skia:8235
Change-Id: I451e251d8cd23f3f0db359bbe03caa429c00fcea
Reviewed-on: https://skia-review.googlesource.com/c/180420
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2019-01-07 15:13:07 +00:00
Mike Reed
46ee3f7a8f return proper false for jpeg
Bug: skia:
Change-Id: I52385a9259545808db540cc31dfded2021b614df
Reviewed-on: https://skia-review.googlesource.com/c/180364
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2019-01-07 15:06:36 +00:00
Mike Reed
c4745d6e51 use drawString with font
Bug: skia:
Change-Id: If193ce2abad59124d24478f24f2bc2fd85ac0d16
Reviewed-on: https://skia-review.googlesource.com/c/181408
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-07 15:03:06 +00:00
Brian Osman
82ebe04caf Reland "Add SkColorSpace factory from 3x3 row-major gamut and transfer function"
Moved named common transfer functions and gamuts to constexpr values in
SkColorSpace.h, in SkNamedTransferFn and SkNamedGamut namespaces.

Converted nearly all SkColorSpace::MakeRGB calls within Skia to use the
new factory with the named values. Multiple clients want a way to
extract named transfer function and gamut - this still doesn't provide
that, but this may be a better path forward for honestly advertising how
SkColorSpace works internally.

Originally landed as:
https://skia.googlesource.com/skia/+/a9549ab31630fc244094e6f1692371cbaf87f666

Re-landing with a new serialization format, but maintaining ability to
load old serialized color spaces, for SKP compatibility.

Bug: skia:
Change-Id: Ib84a6e1cd5d7d9816175773fdbaff2ca32658667
Reviewed-on: https://skia-review.googlesource.com/c/181176
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2019-01-05 20:06:51 +00:00
Herbert Derby
86dbae9c1b Separate cache lookup from run font setup
Seperate concerns so that cache lookup and run setup are different code.
This will allow the common code in painter to do the caache lookup.

Change-Id: I30a208ebc715c07f5720a7a8fc8240aabfda869d
Reviewed-on: https://skia-review.googlesource.com/c/180928
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2019-01-04 22:22:22 +00:00
Chris Dalton
2e825a3c5d Revert "ccpr: Rework the path cache to support sporadic flushing"
This reverts commit d6fa45472c.

Reason for revert: Assertion failures

Original change's description:
> ccpr: Rework the path cache to support sporadic flushing
> 
> Removes the notion of a stashed atlas that we store from the previous
> flush. Now we just cache every atlas we ever render. Cached atlases
> can either be 16-bit or 8-bit.
> 
> The "reuse" and "animation" cases should both behave exactly the same
> as before: Where before we would copy from the stashed atlas to 8-bit
> atlases, we now copy from a cached 16-bit atlas and then invalidate
> it. Where before we would recycle the stashed atlas's backing texture
> object, we now recycle this same texture object from an invalidated
> 16-bit cached atlas.
> 
> The main difference is that cases like tiled rendering now work. If
> you draw your whole scene in one flush, you still get one big 16-bit
> cached atlas, just like the "stashed atlas" implementation. But if you
> draw your scene in tiles, you now get lots of little cached 16-bit
> atlases, which can be reused and eventually copied to 8-bit atlases.
> 
> Bug: skia:8462
> Change-Id: Ibae65febb948230aaaf1f1361eef9c8f06ebef18
> Reviewed-on: https://skia-review.googlesource.com/c/179991
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: Iad74a14fcb09da12f32b9b78f803b8472a5d60ae
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8462
Reviewed-on: https://skia-review.googlesource.com/c/181444
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2019-01-04 22:14:31 +00:00
Mike Reed
d5cdc2cd4d paint is losing its text-related fields
Bug: skia:
Change-Id: I187c290f30259564e8ff396b54070ca305da3954
Reviewed-on: https://skia-review.googlesource.com/c/181400
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Auto-Submit: Mike Reed <reed@google.com>
2019-01-04 21:54:49 +00:00
Chris Dalton
d6fa45472c ccpr: Rework the path cache to support sporadic flushing
Removes the notion of a stashed atlas that we store from the previous
flush. Now we just cache every atlas we ever render. Cached atlases
can either be 16-bit or 8-bit.

The "reuse" and "animation" cases should both behave exactly the same
as before: Where before we would copy from the stashed atlas to 8-bit
atlases, we now copy from a cached 16-bit atlas and then invalidate
it. Where before we would recycle the stashed atlas's backing texture
object, we now recycle this same texture object from an invalidated
16-bit cached atlas.

The main difference is that cases like tiled rendering now work. If
you draw your whole scene in one flush, you still get one big 16-bit
cached atlas, just like the "stashed atlas" implementation. But if you
draw your scene in tiles, you now get lots of little cached 16-bit
atlases, which can be reused and eventually copied to 8-bit atlases.

Bug: skia:8462
Change-Id: Ibae65febb948230aaaf1f1361eef9c8f06ebef18
Reviewed-on: https://skia-review.googlesource.com/c/179991
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2019-01-04 20:51:09 +00:00
Florin Malita
5809a4e2c3 [skjson] NaN while parsing long decimals
When parsing numbers with long decimals, the fast-path decimal factor
may collapse to zero.  Catch this condition (and defer to the slow parse
path).

Bug: skia:8499
Change-Id: I4e364402aecdcca9558d027a55ff297170e2a195
Reviewed-on: https://skia-review.googlesource.com/c/181179
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2019-01-04 20:41:27 +00:00