Commit Graph

19093 Commits

Author SHA1 Message Date
Robert Phillips
9d57afd93e Clean up GrDrawOpAtlas
Change-Id: I18dea851fa950231c4106e2e049e74a678a03df2
Reviewed-on: https://skia-review.googlesource.com/110380
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-26 20:19:58 +00:00
Jim Van Verth
a947e29bfd Add some additional checks for shadow generation
Change-Id: I4dae4173ad879827e4e1fa3ad12aa0447d1df252
Reviewed-on: https://skia-review.googlesource.com/110360
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2018-02-26 20:02:38 +00:00
Greg Daniel
8385a8a44b Revert "Revert "Fixes to alignment issues with regards to mapped vulkan memory.""
This reverts commit 88fdee9bde.

Reason for revert: Pre Fixes landed in other repos

Original change's description:
> Revert "Fixes to alignment issues with regards to mapped vulkan memory."
> 
> This reverts commit 9fb6cf4c49.
> 
> Reason for revert: breaks fuchsia
> 
> Original change's description:
> > Fixes to alignment issues with regards to mapped vulkan memory.
> > 
> > Bug: skia:
> > Change-Id: Ida9813fe774580a6d157b8eb8d330488c8e8c4bc
> > Reviewed-on: https://skia-review.googlesource.com/109483
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > Reviewed-by: Jim Van Verth <jvanverth@google.com>
> 
> TBR=djsollen@google.com,egdaniel@google.com,jvanverth@google.com
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Bug: skia:
> Change-Id: If1223313cab27737ada401d1f3fe4b7ab849d03f
> Reviewed-on: https://skia-review.googlesource.com/110040
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

Bug: skia:
Change-Id: Ifeebf535c3617674846f7ef25e686ee11ceee65c
Reviewed-on: https://skia-review.googlesource.com/110160
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-26 18:59:38 +00:00
Mike Reed
339650c227 use SkIRect makeOffset to avoid overflows
Bug: oss-fuzz:7657
Change-Id: I7917306cf0a158d2e1f36611e85ef26028da9954
Reviewed-on: https://skia-review.googlesource.com/110280
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-26 18:34:08 +00:00
Mike Klein
ec84612c09 fix mask address calculation
Switching the math from using fMaskPtr.stride to using mask.fRowBytes
fixes the integer overflow here.  However, if done naively it'd still do
the math wrong, as mask.fRowBytes is stored as a uint32_t, and the
32-bit overflow still happens, silently.  So we explicitly promote to
size_t too.

As a follow up we should consider turning on 'integer' sanitizer, which
treats unsigned integer overflow as an error.  Even though it's
technically defined, it's likely not intended.

Bug: skia:7563

Change-Id: Ia579d4f5615ed28180e6aaf3d4c3b54f516e655c
Reviewed-on: https://skia-review.googlesource.com/110260
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
2018-02-26 18:27:58 +00:00
Herb Derby
78663f9dad Fix overflow in number of bytes to erase.
The width and the height were multiplied as int * int.
Now it is int64_t * int64_t.

BUG=chromium:812519

Change-Id: If60bbdd8ee92748559b2e4f3ab57e4463a8006e8
Reviewed-on: https://skia-review.googlesource.com/109781
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Herb Derby <herb@google.com>
2018-02-26 17:53:48 +00:00
Robert Phillips
934c3d0c54 Revert "Revert "Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)""
This reverts commit 84d823a5e2.

Reason for revert: The DFT diffs don't repro on Windows so I'm chalking it up to minor device differences

Original change's description:
> Revert "Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)"
> 
> This reverts commit 96165ebeaa.
> 
> Reason for revert: DFT GMs w/ LCD text are slightly different
> 
> Original change's description:
> > Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)
> > 
> > This CL clarifies what is going on in the GrDrawOpAtlas and GrAtlasGlyphCache.
> > 
> > For the GrDrawOpAtlas:
> >   At creation time all the allowed pages are created (with their backing GrTextureProxies) but they aren't instantiated.
> > 
> >   The GrDrawOpAtlas::instantiate call is called in preFlushCB and allocates any pages known to be needed at the start of flush
> > 
> >   GrDrawOpAtlas::addToAtlas is called at flush time and, if a new page is activated, will instantiated it at that time.
> > 
> >   During compaction, an unused page will be deInstantiated but its Plots and backing GrTextureProxy will remain alive.
> > 
> > The GrAtlasGlyphCache reflects the changes to the GrDrawOpAtlas
> >   It now carries a GrProxyProvider for when it needs to create an atlas
> >   It passes in a GrResourceProvider* at flush time to allow instantiation.
> > 
> >   It does not, yet, allocate that GrDrawOpAtlases it might ever require.
> > 
> > Change-Id: Ie9b64b13e261b01ee14be09fbf7e17841b7781dc
> > Reviewed-on: https://skia-review.googlesource.com/109749
> > Reviewed-by: Jim Van Verth <jvanverth@google.com>
> > Commit-Queue: Robert Phillips <robertphillips@google.com>
> 
> TBR=jvanverth@google.com,robertphillips@google.com
> 
> Change-Id: I62efc61c8394477e54d6e79fa2f65180c91a4515
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/110220
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

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

Change-Id: I7c87b4523f9b53285f0de5c2d741a25893522d9a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/110221
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-26 16:49:28 +00:00
Robert Phillips
84d823a5e2 Revert "Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)"
This reverts commit 96165ebeaa.

Reason for revert: DFT GMs w/ LCD text are slightly different

Original change's description:
> Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)
> 
> This CL clarifies what is going on in the GrDrawOpAtlas and GrAtlasGlyphCache.
> 
> For the GrDrawOpAtlas:
>   At creation time all the allowed pages are created (with their backing GrTextureProxies) but they aren't instantiated.
> 
>   The GrDrawOpAtlas::instantiate call is called in preFlushCB and allocates any pages known to be needed at the start of flush
> 
>   GrDrawOpAtlas::addToAtlas is called at flush time and, if a new page is activated, will instantiated it at that time.
> 
>   During compaction, an unused page will be deInstantiated but its Plots and backing GrTextureProxy will remain alive.
> 
> The GrAtlasGlyphCache reflects the changes to the GrDrawOpAtlas
>   It now carries a GrProxyProvider for when it needs to create an atlas
>   It passes in a GrResourceProvider* at flush time to allow instantiation.
> 
>   It does not, yet, allocate that GrDrawOpAtlases it might ever require.
> 
> Change-Id: Ie9b64b13e261b01ee14be09fbf7e17841b7781dc
> Reviewed-on: https://skia-review.googlesource.com/109749
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

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

Change-Id: I62efc61c8394477e54d6e79fa2f65180c91a4515
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/110220
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-26 16:03:58 +00:00
Yuqian Li
aad2ec69f3 Revert "Do not return null paint if shaderFP is null"
This reverts commit 0d96175c97.

Reason for revert: skia:7583

Also, LG probably doesn't really care about the original fix
so we should be fine for reverting the CL.

Original change's description:
> Do not return null paint if shaderFP is null
>
> This fixes the ripple bug reported by LG:
> https://b.corp.google.com/issues/68964656
>
> In that bug, the button is so tall that our image shader returns
> a null fragment processor because the height exceeds GL_MAX_TEXTURE_SIZE.
> If we return null paint, the ripple is completely gone. This CL returns
> a default paint so we can still see the ripple, and that matches HWUI's
> behaviour.
>
> A GM will be added later after some other urgent Android ripple bug fixes.
>
> Bug: skia:
> Change-Id: I9bcafc078916a6a15fbd84d2019f39ac88d2b2f8
> Reviewed-on: https://skia-review.googlesource.com/73200
> Commit-Queue: Yuqian Li <liyuqian@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

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

Bug: skia:7583
Change-Id: I0c8fe994bf0ae07d9f52eafee79adcfcbd0c6445
Reviewed-on: https://skia-review.googlesource.com/110200
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-02-26 15:56:07 +00:00
Greg Daniel
b68319a4b7 Send correct clear count to vulkan beginRenderPass
This technically wasn't an error but fixes a warning in the validation
layers.

Bug: skia:
Change-Id: I3d0d0aa3a29b5a08f145ceabedb9357791d36cb2
Reviewed-on: https://skia-review.googlesource.com/109881
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-26 15:48:18 +00:00
Robert Phillips
96165ebeaa Separate creation time & flush time behavior in GrDrawOpAtlas (take 2)
This CL clarifies what is going on in the GrDrawOpAtlas and GrAtlasGlyphCache.

For the GrDrawOpAtlas:
  At creation time all the allowed pages are created (with their backing GrTextureProxies) but they aren't instantiated.

  The GrDrawOpAtlas::instantiate call is called in preFlushCB and allocates any pages known to be needed at the start of flush

  GrDrawOpAtlas::addToAtlas is called at flush time and, if a new page is activated, will instantiated it at that time.

  During compaction, an unused page will be deInstantiated but its Plots and backing GrTextureProxy will remain alive.

The GrAtlasGlyphCache reflects the changes to the GrDrawOpAtlas
  It now carries a GrProxyProvider for when it needs to create an atlas
  It passes in a GrResourceProvider* at flush time to allow instantiation.

  It does not, yet, allocate that GrDrawOpAtlases it might ever require.

Change-Id: Ie9b64b13e261b01ee14be09fbf7e17841b7781dc
Reviewed-on: https://skia-review.googlesource.com/109749
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-26 14:56:17 +00:00
Yuqian Li
b8b6253df6 Add threaded backend sink to DM. Fix a scheduler bug.
The bug is spotted by the new sink. I'd expect more bugs to be revealed
and fixed using the new sink.

Bug: skia:
Change-Id: I6b0c9267079fbd6149004f0ecd55ddb179702588
Reviewed-on: https://skia-review.googlesource.com/109720
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-02-25 16:36:24 +00:00
Yuqian Li
3fd84fa4bf Set empty drawFn when init-once returns early
Bug: skia:
Change-Id: I01def2c2c9651585555740e5ab86f8eac38be6fc
Reviewed-on: https://skia-review.googlesource.com/109721
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-02-25 16:31:49 +00:00
Yuqian Li
8a3f654212 Copy the bitmap in SkThreadedBMPDevice::drawDevice
The new threaded DM sink revealed skia:7414 again with xfermodes GM test.

Bug: skia:7414
Change-Id: I5565065f81d1e982027e2cc965bb7659793b27dc
Reviewed-on: https://skia-review.googlesource.com/109722
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-02-25 16:31:19 +00:00
Greg Daniel
88fdee9bde Revert "Fixes to alignment issues with regards to mapped vulkan memory."
This reverts commit 9fb6cf4c49.

Reason for revert: breaks fuchsia

Original change's description:
> Fixes to alignment issues with regards to mapped vulkan memory.
> 
> Bug: skia:
> Change-Id: Ida9813fe774580a6d157b8eb8d330488c8e8c4bc
> Reviewed-on: https://skia-review.googlesource.com/109483
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Jim Van Verth <jvanverth@google.com>

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

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

Bug: skia:
Change-Id: If1223313cab27737ada401d1f3fe4b7ab849d03f
Reviewed-on: https://skia-review.googlesource.com/110040
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-25 14:00:39 +00:00
Mike Reed
0a78e1e37e handle conic underflow calc
w0 and w2 can both be non-zero, but w2*w0 can be zero -- unless we promote to doubles

Bug: oss-fuzz:6506
Change-Id: Id0716e22e1d989d2eb6d86417575cf917a31cb89
Reviewed-on: https://skia-review.googlesource.com/109480
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-24 15:20:07 +00:00
Mike Reed
fc015d2d39 make 1dpatheffect more robust on deserial
Bug: skia:
Change-Id: Ic7a38edaf1099a70b72fbea64c5e36f522bc363b
Reviewed-on: https://skia-review.googlesource.com/110020
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-24 15:16:07 +00:00
Greg Daniel
9fb6cf4c49 Fixes to alignment issues with regards to mapped vulkan memory.
Bug: skia:
Change-Id: Ida9813fe774580a6d157b8eb8d330488c8e8c4bc
Reviewed-on: https://skia-review.googlesource.com/109483
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2018-02-23 20:17:16 +00:00
Herb Derby
108e94a1ab SkScalerContext - make some fields private.
BUG=skia:7515

Change-Id: Id7230db89e47703db465250c8fac99937d69721d
Reviewed-on: https://skia-review.googlesource.com/109810
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Herb Derby <herb@google.com>
2018-02-23 19:25:56 +00:00
Hal Canary
09f818d2c9 SkString: use c++11 vsnprintf in windows
Change-Id: I47337525714c4ee29bbc67c336d070b5cec2e57d
Reviewed-on: https://skia-review.googlesource.com/109484
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2018-02-23 16:03:06 +00:00
Chris Dalton
2612baecd8 ccpr: Prefer atlas sizes under 4k on ARM
Bug: skia:
Change-Id: Ib5afb84647efe2e64a3ec2f9da422b39228431e9
Reviewed-on: https://skia-review.googlesource.com/108871
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-02-22 21:06:05 +00:00
Brian Salomon
020dbe7917 Don't assert that GLSL shader compilation succeeded in Chrome
Bug: chromium:82186
Change-Id: Ie4ef3b766117b9693702917203d2bb87e1ddbe7d
Reviewed-on: https://skia-review.googlesource.com/109482
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2018-02-22 20:25:35 +00:00
Mike Reed
242135a402 move some RRect methods into priv
also, return radii by value instead of reference, in possible prep for changing underlying representation

Bug: skia:7649
Change-Id: Iff42a49c53cc48171fc63462be366cc3500b2273
Reviewed-on: https://skia-review.googlesource.com/109385
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-02-22 19:09:10 +00:00
Mike Reed
85fdbe2b5c detect bad radius in cornerpatheffect
Bug: skia:
Change-Id: I88b0be68e3099bcf6df608ded0e875c7a60bb5d6
Reviewed-on: https://skia-review.googlesource.com/109381
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-22 17:47:55 +00:00
Herb Derby
f5041623dd Small cleanup of SkPaint
Change-Id: I79d4e5bace8898c184d8fc80d9e45d39b63b5fe5
Reviewed-on: https://skia-review.googlesource.com/109386
Commit-Queue: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-22 17:42:50 +00:00
Mike Reed
61e30b2e81 add checks for enough data in path deserialization
Bug: oss-fuzz:6501
Change-Id: Ie77d57268947be2cc56f846ce21f154e0d469112
Reviewed-on: https://skia-review.googlesource.com/109320
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-02-22 14:48:44 +00:00
Mike Reed
529cb2cd75 lowp impl for decal stages
Bug: skia:
Change-Id: If6481d202bf22a95f1dea0c5bf7d84698b63869a
Reviewed-on: https://skia-review.googlesource.com/109241
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-21 22:23:07 +00:00
Robert Phillips
59ddc6d5ee Revert "Separate creation time & flush time behavior in GrDrawOpAtlas"
This reverts commit 056c1a821a.

Reason for revert: GM issues

Original change's description:
> Separate creation time & flush time behavior in GrDrawOpAtlas
> 
> This CL clarifies what is going on in the GrDrawOpAtlas and GrAtlasGlyphCache.
> 
> For the GrDrawOpAtlas:
>   At creation time all the allowed pages are created (with their backing GrTextureProxies) but they aren't instantiated.
> 
>   The GrDrawOpAtlas::instantiate call is called in preFlushCB and allocates any pages known to be needed at the start of flush
> 
>   GrDrawOpAtlas::addToAtlas is called at flush time and, if a new page is activated, will instantiated it at that time.
> 
>   During compaction, an unused page will be deInstantiated but its Plots and backing GrTextureProxy will remain alive.
> 
> The GrAtlasGlyphCache reflects the changes to the GrDrawOpAtlas
>   It now carries a GrProxyProvider for when it needs to create an atlas
>   It passes in a GrResourceProvider* at flush time to allow instantiation.
> 
>   It does not, yet, allocate that GrDrawOpAtlases it might ever require.
> 
> Change-Id: I54909b7a3ba4bec2db5f1218f6a2a3a1636f66d6
> Reviewed-on: https://skia-review.googlesource.com/108520
> Commit-Queue: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Jim Van Verth <jvanverth@google.com>

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

Change-Id: I36eafe46209380f533aa84e831d1c9d18844b6be
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/109280
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-21 21:56:47 +00:00
Mike Reed
267ecccfed change path serialization version to 4
New format should be much simpler:
- only store public data (e.g. points, verbs, filltype)
- deserialize just uses public APIs

Refactor reading code to manage different (older) versions, to make
it clear (hopefully) what we can delete when we can abandon version
3 support.

Bug: skia:
Change-Id: I30465f891cba3f044ae1cb2c13c04f04fdc9da78
Reviewed-on: https://skia-review.googlesource.com/109160
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-21 21:22:37 +00:00
Robert Phillips
056c1a821a Separate creation time & flush time behavior in GrDrawOpAtlas
This CL clarifies what is going on in the GrDrawOpAtlas and GrAtlasGlyphCache.

For the GrDrawOpAtlas:
  At creation time all the allowed pages are created (with their backing GrTextureProxies) but they aren't instantiated.

  The GrDrawOpAtlas::instantiate call is called in preFlushCB and allocates any pages known to be needed at the start of flush

  GrDrawOpAtlas::addToAtlas is called at flush time and, if a new page is activated, will instantiated it at that time.

  During compaction, an unused page will be deInstantiated but its Plots and backing GrTextureProxy will remain alive.

The GrAtlasGlyphCache reflects the changes to the GrDrawOpAtlas
  It now carries a GrProxyProvider for when it needs to create an atlas
  It passes in a GrResourceProvider* at flush time to allow instantiation.

  It does not, yet, allocate that GrDrawOpAtlases it might ever require.

Change-Id: I54909b7a3ba4bec2db5f1218f6a2a3a1636f66d6
Reviewed-on: https://skia-review.googlesource.com/108520
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2018-02-21 19:46:56 +00:00
Robert Phillips
e4fda6c70d Pull non-substantive changes out of omnibus CL
These come from: https://skia-review.googlesource.com/c/skia/+/108001 (Fission GrAtlasGlyphCache in two)

Bug: skia:
Change-Id: Ife15cad018f9ddedec578fcd6aa07da00a77196e
Reviewed-on: https://skia-review.googlesource.com/109026
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-21 18:43:26 +00:00
Robert Phillips
038c608a86 Remove back pointer to GrAtlasGlyphCache from GrAtlasTextStrike
This is calved off from https://skia-review.googlesource.com/c/skia/+/108001 (Fission GrAtlasGlyphCache in two)

In the DDL world, the GrAtlasTextStrikes can outlive their generating GrAtlasGlyphCache.

Change-Id: I52b01d3934b0651a58a59b12dcc4c98ffbb891a9
Reviewed-on: https://skia-review.googlesource.com/109061
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-21 18:35:16 +00:00
Greg Daniel
0a7aa14bf3 Add checks for failed SkImageInfo2GrPixelConfig calls
Bug: skia:7645
Change-Id: I32b9326fb43490ef6a7a99527243b68d89184ae1
Reviewed-on: https://skia-review.googlesource.com/109083
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-02-21 18:22:47 +00:00
Brian Osman
c35d7eab7b Don't use LOD bias on OES external textures
Change-Id: Id366b644576c6e4763c0c081b6a6b40f4e930df7
Reviewed-on: https://skia-review.googlesource.com/109024
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2018-02-21 17:54:38 +00:00
Greg Daniel
f87651e7b8 Update createWrappedRenderTargetProxy with BackendTex to use lazy proxies
Bug: skia:
Change-Id: I5a5519aebe544cb5ef62e9847c3fa4e218f24aea
Reviewed-on: https://skia-review.googlesource.com/108561
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-02-21 17:13:32 +00:00
Jim Van Verth
5d32b83102 Add isFinite() bounds check for drawPoints
Bug: 811095
Change-Id: I09a55622a19ebfc9430d7676eb8764c074f1bcb7
Reviewed-on: https://skia-review.googlesource.com/109022
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2018-02-21 16:43:02 +00:00
Cary Clark
bd8b25a7b4 writePixels should notify GPU that pixels have changed
R=reed@google.com,robertphillips@google.com
Bug: skia:7644
Change-Id: I469c537a649e4d8d05a78cedb26caa3057d824c1
Reviewed-on: https://skia-review.googlesource.com/108961
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
2018-02-21 13:58:22 +00:00
Yuqian Li
aefcccb5d8 Enable DAA in the init-once phase of threaded backends
Bug: skia:
Change-Id: Idb856fe12f0f9fa1014e7d15ef40bd7b456634d6
Reviewed-on: https://skia-review.googlesource.com/107540
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-02-21 09:28:04 +00:00
Robert Phillips
f3690dd416 Change signature of GrAtlasGlyphCache::getProxies
Split out of https://skia-review.googlesource.com/c/skia/+/108001 (Fission GrAtlasGlyphCache in two)

TBR=bsalomon@google.com
Change-Id: I573730fdeddf178915eb5f5b8cf59a3ab29e0654
Reviewed-on: https://skia-review.googlesource.com/108441
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-20 21:16:53 +00:00
Jim Van Verth
a8c55fa4fe Pad atlas uploads to 4-byte boundaries
Change-Id: I678358c176e318d89892ced5c76cd2662774a7d6
Reviewed-on: https://skia-review.googlesource.com/108566
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2018-02-20 21:06:13 +00:00
Ben Wagner
5423f1f0c5 Correct font metrics, bitmap glyph metrics and underline.
Correct ScaleFontMetrics to scale all of the metrics. Also update the
test fonts, since they were created with the previously unscaled
metrics.

Fix the ascent, descent, and underline position for bitmap glyphs with
FreeType.

Change-Id: I8c2f6e9d6a7e86b0bb08dc619f62ffcce4ad2df2
Reviewed-on: https://skia-review.googlesource.com/108600
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
2018-02-20 20:40:23 +00:00
Mike Reed
0c3137c4f4 hide complex versions of isOval and isRRect
Bug: skia:
Change-Id: I9fa899d409470f424fdfbef5b0c3bb528bcce40e
Reviewed-on: https://skia-review.googlesource.com/108660
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-02-20 19:33:53 +00:00
Brian Salomon
c320b15768 Introduce GrColorType
This begins the journey towards using different types to refer to CPU data and GPU texture formats. This is one part of removing GrPixelConfig and more directly using GL/VK texture formats

GrColorType represents a particular layout of color/gray/alpha channels in CPU memory. It does not refer to texture formats or sRGB-encoding. It is basically SkColorType specialized to the GPU backend with some formats added and some removed.

Read/WritePixel interfaces use GrColorType to describe the CPU side of the transaction.

There's still a lot of punting to GrPixelConfig in API-specific code. There's a lot more to be done.

Bug: 6718
Bug: 7580

Change-Id: I8d813ae9a4416a06596f22a4b87da02091989718
Reviewed-on: https://skia-review.googlesource.com/107264
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2018-02-20 19:30:13 +00:00
Chris Dalton
535ba8d2b8 Drop unused support for MSAA sample locations
Bug: skia:
Change-Id: I96f0c25732d79c5881e400b121e81c5696a747a6
Reviewed-on: https://skia-review.googlesource.com/107441
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-02-20 17:19:13 +00:00
Chris Dalton
45e46604bb ccpr: Fix a couple issues with tessellation and winding
Bug: skia:
Change-Id: I7c7851230e0ed19719b06e833cbf45c0ef78ddae
Reviewed-on: https://skia-review.googlesource.com/107908
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-02-20 16:59:43 +00:00
Jim Van Verth
06f593cd13 Some more cleanup of GrDrawOpAtlas compaction
Change-Id: Ica00285d0071a31a09dc87d68d7ae7dfabab17b7
Reviewed-on: https://skia-review.googlesource.com/108522
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-02-20 16:57:08 +00:00
Chris Dalton
7fe33c0a42 Drop unused shader support for multisample interpolation
Bug: skia:
Change-Id: Ie19f13877bf6828ab94ffbb20e6f74e0e376f6cb
Reviewed-on: https://skia-review.googlesource.com/107359
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-02-20 16:41:43 +00:00
Greg Daniel
2a30390ce6 Update createWrappedRenderTargetProxy with BackendRT to work with lazy proxies.
This change also triggered a bunch of side changes thanks to WrappedProxyTest
fixing/improving how we handle wrapped proxies in genernal.

Bug: skia:
Change-Id: I743a458923cff1c2e947627d0e9154a4c808a668
Reviewed-on: https://skia-review.googlesource.com/108102
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-02-20 15:32:33 +00:00
Mike Reed
a3d9e21f04 don't trust stored segment mask
Bug: skia:7604
Change-Id: I508bbdc006e1c6edce2006be0c43b037038c876b
Reviewed-on: https://skia-review.googlesource.com/108360
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-20 15:13:23 +00:00
Greg Daniel
6abda4357c Change createWrappedTextureProxy for render targets to use lazy proxies.
Bug: skia:
Change-Id: If5e5e4716dceeedb4c5ad0e8c621f72799d11eb2
Reviewed-on: https://skia-review.googlesource.com/107261
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-02-20 14:21:43 +00:00
Mike Reed
7f583c9330 null check
Bug: oss-fuzz: 6478
Change-Id: I8730ce6444cdcaac5a610f864d902a16942635a6
Reviewed-on: https://skia-review.googlesource.com/108400
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-20 12:34:28 +00:00
Mike Reed
62ce2ca069 Simplify decal for gradients
Previous change extended the stored array of colors/positions, and lost the
information that the intent was decal. This variant just uses custom stages
already developed for imageshader, keeping the intent of decal.

Bug: skia:7638
Change-Id: Ie3f30b42f4c1793487f08039cd3cea8e31aafc40
Reviewed-on: https://skia-review.googlesource.com/108280
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-19 20:00:44 +00:00
Mike Reed
19d7bd6504 hide virtual and rename to onMakeComposed
Bug: skia:
Change-Id: Ic18ee2af3273f81ebec9c9031162e808186c0acd
Reviewed-on: https://skia-review.googlesource.com/108300
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-19 19:40:14 +00:00
Jim Van Verth
cad0acf4db Fix thrashing issue with multitextured atlas.
To try to reduce memory usage, the atlas will look for space in
the earliest created pages and then invalidate plots in the latest
page to try to move those plots into an earlier one. The problem
was that the available space was not being evicted, so we kept loading
data back into the latest page.

Bug: skia:
Change-Id: Ic8668f6f66bf1153dbcb5edae7622fa9edfa71dd
Reviewed-on: https://skia-review.googlesource.com/98801
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
2018-02-17 00:11:27 +00:00
Mike Reed
dfc0e910df add decal tilemode to shaders
Plenty more to follow-up:
- gradients
- gpu impl

Bug: skia:7638
Change-Id: I8e54fd0e24921f040f178c793b36c7fb855b136e
Reviewed-on: https://skia-review.googlesource.com/107420
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-16 23:19:47 +00:00
Jim Van Verth
c401bb9c14 Add full scaling for color emoji.
Bug: skia:7562
Change-Id: If6788a5004fe060b42a4e437f9b8c18459623225
Reviewed-on: https://skia-review.googlesource.com/106821
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2018-02-16 18:07:36 +00:00
Leon Scroggins III
cbf66a2213 Ensure all rows of a gif are initialized
Bug: oss-fuzz:6274

Even if a frame does not have enough LZW blocks to decode all rows,
(which is unknown until we actually decode them), it is marked complete
once there are no more LZW blocks.

When decoding, even if we've decoded all LZW blocks, check fRowsDecoded
to determine whether we've actually all the rows. Report the number of
rows decoded so that SkCodec can fill in the remaining ones.

Change-Id: I1d6e0c29e3c37649725836cf24a4a239e3266b76
Reviewed-on: https://skia-review.googlesource.com/106964
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2018-02-16 17:26:56 +00:00
Herb Derby
6d64c54dff Add a generalized array of bytes with a given alignment
Change-Id: I1bf453754bdc16452aff7d6d63ef464c7edf6df3
Reviewed-on: https://skia-review.googlesource.com/108062
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-16 16:14:05 +00:00
Brian Osman
db78cba957 Avoid creating MIPs until necessary when MIP bias is active
With sharpened mips, the scale at which we begin to sample level 1 is
(obviously) less than 1. This change avoids creation of mips for images
that are only slightly downscaled (and for which we wouldn't have sampled
those MIPs anyway).

Change-Id: If8ffc79c2ce2ff1f3aae7f5732d8a50aca0e26be
Reviewed-on: https://skia-review.googlesource.com/107801
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2018-02-16 13:39:35 +00:00
Greg Daniel
f6f7b67ac2 When creating emptyp MipMap proxies, don't instantiate them immediately. Attempt 3
original: https://skia-review.googlesource.com/106966

Bug: skia:
Change-Id: I779985cef2d3c4f36a0129d8ecedd12e510bec7e
Reviewed-on: https://skia-review.googlesource.com/107781
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-15 20:13:32 +00:00
Chris Dalton
602836138e Drop unused shader support for sample variables
Bug: skia:
Change-Id: I9e2b7da8c916703027d8dd4303ae67f4e69bcf87
Reviewed-on: https://skia-review.googlesource.com/107356
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-02-15 19:37:52 +00:00
Mike Reed
3708f024b1 use conservative bounds to disable clipping
Bug: skia:6754
Change-Id: I658e7e7a176395eff7e239093fbad8038a4141ad
Reviewed-on: https://skia-review.googlesource.com/107884
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-15 18:15:42 +00:00
Greg Daniel
0ff79b2ed0 Disable texstorage for BGRA on ES devices that aren't apple
Bug: skia:
Change-Id: Ic01e47a811d42bb25cbd0df3705cdab64dff12fe
Reviewed-on: https://skia-review.googlesource.com/107860
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-15 18:01:42 +00:00
Mike Reed
36c0b57698 use safe increment for edge walker
Bug: oss-fuzz:6126
Change-Id: I8f6865cbbbfbe37acf940cc2d4ae93204ba7168d
Reviewed-on: https://skia-review.googlesource.com/107783
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-15 17:14:19 +00:00
Mike Reed
f221b4942c abort blur if the sigma is too small
Bug: oss-fuzz:6375
Change-Id: I8f21ea05b44f2ed6fdcdfe2573ac9415f238d833
Reviewed-on: https://skia-review.googlesource.com/107784
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2018-02-15 17:00:39 +00:00
Leon Scroggins III
ce6d93a815 Check for min int in BMP header
Bug: os-fuzz:6288

Negating it is undefined, so don't try.

Change-Id: I055520b8036dd8b355e744114717e08d76206bc1
Reviewed-on: https://skia-review.googlesource.com/107062
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-02-15 15:36:19 +00:00
Robert Phillips
93c72502f2 Remove unneccesary assert in GrAALinearizingConvexPathRenderer
Bug:812481
Change-Id: I83ccd322695b404c6afc6f586dcbf52088634875
Reviewed-on: https://skia-review.googlesource.com/107640
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-15 14:38:09 +00:00
Robert Phillips
303cd58870 Update GrTextBlobCache for DDL
Although, theoretically, we could update the DDLs to maintain pointers to the GrMemoryPools being used by their GrAtlasTextBlobs this method seems simpler.

Change-Id: I4835284630b9cd29eb78cf25bcdfe5c56974a8cb
Reviewed-on: https://skia-review.googlesource.com/107345
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2018-02-15 13:23:22 +00:00
Greg Daniel
7080a431a7 Revert "Revert "Revert "When creating emptyp MipMap proxies, don't instantiate them immediately."""
This reverts commit 95edb43251.

Reason for revert: breaking Ubuntu Linux GMs

Original change's description:
> Revert "Revert "When creating emptyp MipMap proxies, don't instantiate them immediately.""
> 
> This reverts commit 0ee866dac7.
> 
> Reason for revert: <INSERT REASONING HERE>
> 
> Original change's description:
> > Revert "When creating emptyp MipMap proxies, don't instantiate them immediately."
> > 
> > This reverts commit 8242c5c199.
> > 
> > Reason for revert: Hitting assert on intel bots on skbug6850overlay2.skp, SkASSERT(proxy->getUniqueKey().isValid()); in processInvalidProxyUniqueKey
> > 
> > Original change's description:
> > > When creating emptyp MipMap proxies, don't instantiate them immediately.
> > > 
> > > This chnages makes it match how we handle non mipped proxies where we
> > > don't actually instantiate them until we need to.
> > > 
> > > Bug: skia:
> > > Change-Id: Id0c50eefce43ef1458a3ff0bb1881a817b045279
> > > Reviewed-on: https://skia-review.googlesource.com/106966
> > > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > > Reviewed-by: Robert Phillips <robertphillips@google.com>
> > 
> > TBR=egdaniel@google.com,robertphillips@google.com
> > 
> > Change-Id: I1fa6165b69c5bbb1d6bb10abba33dcdb55a27ba3
> > No-Presubmit: true
> > No-Tree-Checks: true
> > No-Try: true
> > Bug: skia:
> > Reviewed-on: https://skia-review.googlesource.com/107263
> > Reviewed-by: Greg Daniel <egdaniel@google.com>
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> 
> TBR=egdaniel@google.com,robertphillips@google.com
> 
> Bug: skia:
> Change-Id: Ice34283f9ac183faed6e061d8162cf2226b18289
> Reviewed-on: https://skia-review.googlesource.com/107320
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Change-Id: I53f166d508cc8ccd71e7473934a12a52f2eba7bb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/107321
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-14 21:10:15 +00:00
Robert Phillips
cb25659eb1 DDL-ify GrRectBlurEffect
This allows the upload of the blur profile to be delayed until the draw is actually executed.

Change-Id: I10a7e8fb0edc90ef509c418552740a867f1f3df2
Reviewed-on: https://skia-review.googlesource.com/107354
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-02-14 20:46:24 +00:00
Brian Salomon
9b009bb069 Prepare sRGB encoding conversion for the removal of GrPixelConfig
Standardizes that GrGpu subclass's onRead/WritePixels never do sRGB<->linear conversion. This means that they can eventually take a color type rather than config. It also means direct callers of GrGpu::read/writePixels can never expect conversion (which in practice is no change).

Consolidate logic about whether to do sRGB<->linear encoding conversions in GrContext::read/writeSurfacePixels helpers. No change in when conversions are done (yet). This prepares this logic to operate on SkColorSpace and color type rather than config WRT the CPU data.

Bug: skia:6718
Change-Id: I346d669624861578f1bb9ea465a7ab4b549117fa
Reviewed-on: https://skia-review.googlesource.com/105286
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-02-14 19:58:14 +00:00
Greg Daniel
95edb43251 Revert "Revert "When creating emptyp MipMap proxies, don't instantiate them immediately.""
This reverts commit 0ee866dac7.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Revert "When creating emptyp MipMap proxies, don't instantiate them immediately."
> 
> This reverts commit 8242c5c199.
> 
> Reason for revert: Hitting assert on intel bots on skbug6850overlay2.skp, SkASSERT(proxy->getUniqueKey().isValid()); in processInvalidProxyUniqueKey
> 
> Original change's description:
> > When creating emptyp MipMap proxies, don't instantiate them immediately.
> > 
> > This chnages makes it match how we handle non mipped proxies where we
> > don't actually instantiate them until we need to.
> > 
> > Bug: skia:
> > Change-Id: Id0c50eefce43ef1458a3ff0bb1881a817b045279
> > Reviewed-on: https://skia-review.googlesource.com/106966
> > Commit-Queue: Greg Daniel <egdaniel@google.com>
> > Reviewed-by: Robert Phillips <robertphillips@google.com>
> 
> TBR=egdaniel@google.com,robertphillips@google.com
> 
> Change-Id: I1fa6165b69c5bbb1d6bb10abba33dcdb55a27ba3
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:
> Reviewed-on: https://skia-review.googlesource.com/107263
> Reviewed-by: Greg Daniel <egdaniel@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>

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

Bug: skia:
Change-Id: Ice34283f9ac183faed6e061d8162cf2226b18289
Reviewed-on: https://skia-review.googlesource.com/107320
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-14 19:55:24 +00:00
Mike Reed
33f38b05fb simplify size check in string
b/72956754

Bug: skia:
Change-Id: I50627d9c7fe84630c496f8829608cde875512da0
Reviewed-on: https://skia-review.googlesource.com/107304
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2018-02-14 19:25:43 +00:00
Chris Dalton
84403d7f53 ccpr: Tessellate fans for very large and/or simple paths
This increases CPU work, but reduces overdraw on the GPU as compared to
Redbook fanning.

TBR=bsalomon@google.com

Change-Id: I396b887075d4422531908c2361ee1e26f076d5c3
Reviewed-on: https://skia-review.googlesource.com/107141
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-02-14 17:21:17 +00:00
Robert Phillips
7d79e7b588 Use a lazy proxy in OnFlushCallbackTest to fulfill some old TODOs
Change-Id: I194e38c87c2f341f16a5048f02027165d7c28ae9
Reviewed-on: https://skia-review.googlesource.com/107022
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
2018-02-14 16:31:47 +00:00
Brian Osman
5b6fa82ee1 Respect FPArgs local matrix when picking a filtering mode in image shader
Includes a GM that previously drew bilerp, now draws bicubic.

Change-Id: I5e39e8adb49057b57729d9eb9748911ee8584401
Reviewed-on: https://skia-review.googlesource.com/107280
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2018-02-14 15:40:47 +00:00
Greg Daniel
0ee866dac7 Revert "When creating emptyp MipMap proxies, don't instantiate them immediately."
This reverts commit 8242c5c199.

Reason for revert: Hitting assert on intel bots on skbug6850overlay2.skp, SkASSERT(proxy->getUniqueKey().isValid()); in processInvalidProxyUniqueKey

Original change's description:
> When creating emptyp MipMap proxies, don't instantiate them immediately.
> 
> This chnages makes it match how we handle non mipped proxies where we
> don't actually instantiate them until we need to.
> 
> Bug: skia:
> Change-Id: Id0c50eefce43ef1458a3ff0bb1881a817b045279
> Reviewed-on: https://skia-review.googlesource.com/106966
> Commit-Queue: Greg Daniel <egdaniel@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>

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

Change-Id: I1fa6165b69c5bbb1d6bb10abba33dcdb55a27ba3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/107263
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-14 14:40:48 +00:00
Robert Phillips
83373a8274 Fix compilation of opList-based DDL implementation
Change-Id: Id8d034d85e0d4e67573ae13295fbbac634d366c3
Reviewed-on: https://skia-review.googlesource.com/107180
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-14 14:20:57 +00:00
Greg Daniel
8242c5c199 When creating emptyp MipMap proxies, don't instantiate them immediately.
This chnages makes it match how we handle non mipped proxies where we
don't actually instantiate them until we need to.

Bug: skia:
Change-Id: Id0c50eefce43ef1458a3ff0bb1881a817b045279
Reviewed-on: https://skia-review.googlesource.com/106966
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2018-02-14 14:07:47 +00:00
Yuqian Li
36fa0ac9b5 Add SkDAARecord to prepare for init-once
This is just refactoring our code so we can easily bring DAA to init-once.
No GMs are expected to change.

Bug: skia:
Change-Id: I05dd1bdfb68bb40b5393ee854de51795b55ed426
Reviewed-on: https://skia-review.googlesource.com/106480
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
2018-02-14 13:20:17 +00:00
Robert Phillips
fc711a2b01 Add SkCharacterization creation helper to GrContextThreadSafeProxy (take 2)
TBR=bsalomon@google.com
Change-Id: Id96d4fdbb6889065f10a4a7e0c22a03ad9aa5fef
Reviewed-on: https://skia-review.googlesource.com/107000
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-14 12:42:18 +00:00
Brian Salomon
f802e75764 Revert "Revert "Allow linear 8888 surface contexts in GPU backend.""
This reverts commit 4ffdf3c67f.

Change-Id: I6c38328500ec9614b587121741e63c7b1a092c7d
Reviewed-on: https://skia-review.googlesource.com/107005
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-02-13 22:42:27 +00:00
Leon Scroggins III
fee7cbaf44 Check the length of marker before reading it
Bug: os-fuzz:6295
Change-Id: I0ea9a3c54d61d41f21f2e9b945ab83fa2beb00d8
Reviewed-on: https://skia-review.googlesource.com/107025
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-02-13 22:05:53 +00:00
Brian Salomon
4ffdf3c67f Revert "Allow linear 8888 surface contexts in GPU backend."
This reverts commit 6a46fb210b.

Reason for revert: breaks gms

Original change's description:
> Allow linear 8888 surface contexts in GPU backend.
> 
> Make SRGBReadWritePixels test test all combinations of sRGB, untagged, and linear.
> 
> Bug: skia:
> Change-Id: I0c75fa27b1bf60c6e7ce3b666ff79e1ad1c91b94
> Reviewed-on: https://skia-review.googlesource.com/106922
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Brian Salomon <bsalomon@google.com>

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

Change-Id: Ifb28fdde315ccc0b6fc1c9dd944ea319bafba754
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/107004
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-02-13 21:29:57 +00:00
Robert Phillips
ce5209a8a5 Make fully lazy proxies possess an origin
Change-Id: Icd3d68bce78568562aa12167a58b6d6e5064b124
Reviewed-on: https://skia-review.googlesource.com/106901
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-13 21:25:53 +00:00
Brian Salomon
6a46fb210b Allow linear 8888 surface contexts in GPU backend.
Make SRGBReadWritePixels test test all combinations of sRGB, untagged, and linear.

Bug: skia:
Change-Id: I0c75fa27b1bf60c6e7ce3b666ff79e1ad1c91b94
Reviewed-on: https://skia-review.googlesource.com/106922
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-02-13 21:24:52 +00:00
Mike Reed
655bf8f022 saturate IPoint math, handle NaN in isEmpty
Bug: skia:7507
Change-Id: Ibdb40584effdea70e6499eab1bb64bb4b2260d06
Reviewed-on: https://skia-review.googlesource.com/106972
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-02-13 18:14:20 +00:00
Mike Reed
0c6ea6c77a doh -- reverse check for finite
Bug: skia:
Change-Id: I7ea6e9bdf5c979dbbc61587edad5f799e9626639
Reviewed-on: https://skia-review.googlesource.com/106967
Reviewed-by: Stan Iliev <stani@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-13 17:48:20 +00:00
Cary Clark
559823d1fe Revert "Add SkCharacterization creation helper to GrContextThreadSafeProxy"
This reverts commit d76e56d93c.

Reason for revert: broke NexusPlayer Vulkan

Original change's description:
> Add SkCharacterization creation helper to GrContextThreadSafeProxy
> 
> Change-Id: I8ad7cf335f2b586cf501eaa70573690fbbd53efa
> Reviewed-on: https://skia-review.googlesource.com/106105
> 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: I72b75ff700d39839f7207955566e48bb544aaf6b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/106968
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
2018-02-13 17:02:31 +00:00
Brian Osman
8a83ca4e9a Add "sharpen" option to SkSL, to LOD bias all textures
This adds a fixed bias (-0.5) to the computed LOD of all
mip-mapped texture fetches. (Technically, to all texture
fetches, but that only matters for mip-mapped ones).

Clients can opt-in with a new GrContextOption.

Bug: skia:7541
Bug: chromium:562162
Change-Id: Ie3cd0679c4ab66f62d2dc32e7e68e5c99355115e
Reviewed-on: https://skia-review.googlesource.com/106322
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2018-02-13 16:30:20 +00:00
Kevin Lubick
289d36f905 Address MSAN bug in SkAnimatedImage::decodeNextFrame
Bug: oss-fuzz:6284
Change-Id: I77537d6624e7d03fbbfe96046300a9dd7d609064
Reviewed-on: https://skia-review.googlesource.com/106930
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2018-02-13 16:10:10 +00:00
Robert Phillips
d76e56d93c Add SkCharacterization creation helper to GrContextThreadSafeProxy
Change-Id: I8ad7cf335f2b586cf501eaa70573690fbbd53efa
Reviewed-on: https://skia-review.googlesource.com/106105
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2018-02-13 16:03:50 +00:00
Brian Salomon
366093f212 Make it so that GrSurfaceContext with a sRGB GrPixelConfig must have a
color space with a sRGB-like gamma.

Change-Id: I99b80a9846caacd6848b0f9f55ed0f7f23e69b90
Reviewed-on: https://skia-review.googlesource.com/106640
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2018-02-13 14:48:23 +00:00
Brian Salomon
e7393ab818 Don't assert coverage counting isn't blacklisted when driver workarounds are disabled
Bug: skia:7617
Change-Id: I53a49e7d15fe6a02d57155d50f486d7ab1a729f3
Reviewed-on: https://skia-review.googlesource.com/106920
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2018-02-13 14:35:04 +00:00
Mike Reed
faffa86771 begin to wrap all float divides
Bug: skia:7607 skia:6134
Change-Id: Id126e92816bef1df1372bd531238cda9f3b36fab
Reviewed-on: https://skia-review.googlesource.com/106261
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
2018-02-12 19:04:19 +00:00
Mike Klein
154771b4dc clean up SK_LEGACY_HIGH_QUALITY_SCALING_CLAMP
After this rolls out, we can remove
-DSK_LEGACY_HIGH_QUALITY_SCALING_CLAMP from Google and Chromium,
finally.

Change-Id: Ie277843d5ab6e6e762b1b2eea1c23a40cca55a38
Reviewed-on: https://skia-review.googlesource.com/106622
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-02-12 19:00:55 +00:00
Greg Daniel
d2d8e92e5e Remove tracking of SkDestinationSurfaceColorMode on GrTextureProxy for mips
When we create a new surface from a proxy we were always using legacy and
when we wrapped an existing surface we never actaully had to use the value
we pulled off of it since the proxy was already instantiatied.

Bug: skia:
Change-Id: Ifcb5f3ac2f1dcf41b01a98c554d682ae57028d5a
Reviewed-on: https://skia-review.googlesource.com/106207
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
2018-02-12 18:51:28 +00:00
Cary Clark
82040a9a05 Revert "ccpr: Tessellate fans for very large and/or simple paths"
This reverts commit 4138c972ef.

Reason for revert: broke android flutter build

Original change's description:
> ccpr: Tessellate fans for very large and/or simple paths
> 
> This increases CPU work, but reduces overdraw on the GPU as compared to
> Redbook fanning.
> 
> Bug: skia:
> Change-Id: I47239c964261e0014a94266a71223eab0597bfb8
> Reviewed-on: https://skia-review.googlesource.com/105203
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Chris Dalton <csmartdalton@google.com>

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

Change-Id: I98b5c10b97c3fa603de5122d9bb47ca07659242c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/106620
Reviewed-by: Cary Clark <caryclark@skia.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
2018-02-12 17:29:59 +00:00
Chris Dalton
4138c972ef ccpr: Tessellate fans for very large and/or simple paths
This increases CPU work, but reduces overdraw on the GPU as compared to
Redbook fanning.

Bug: skia:
Change-Id: I47239c964261e0014a94266a71223eab0597bfb8
Reviewed-on: https://skia-review.googlesource.com/105203
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
2018-02-12 17:06:31 +00:00
Kevin Lubick
2416f968a6 Add 2 fuzz targets for image decoding (oss-fuzz)
This also adds in a few small guards to prevent libfuzzer from frequently
running out of memory when an image claims to have billions of pixels.

Bug: skia:
Change-Id: I47a9daac832c4d85a42000698482b61721c38880
Reviewed-on: https://skia-review.googlesource.com/106264
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
2018-02-12 15:25:59 +00:00