Commit Graph

25534 Commits

Author SHA1 Message Date
Brian Salomon
42521e8910 Rename GrRTC::drawBatch to addDrawOp and local vars in GrRTC.cpp
Change-Id: Ic8b896d7779844de5f82f9f0e630508578a8f61d
Reviewed-on: https://skia-review.googlesource.com/5647
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2016-12-07 22:38:42 +00:00
Mike Reed
02b7349af7 no need for SK_SUPPORT_LEGACY_CANVAS_IS_REFCNT anymore
BUG=skia:

Change-Id: If0aa01beb8be9bd7d9a3a5b23c795223b02f02d3
Reviewed-on: https://skia-review.googlesource.com/5690
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2016-12-07 22:28:04 +00:00
Mike Reed
867812e2ef remove SK_SUPPORT_LEGACY_CANVAS_IS_REFCNT from android
BUG=skia:

Change-Id: I78db77832431d1847cef7de1f74613bfe6b87c7d
NOTRY=True
Reviewed-on: https://skia-review.googlesource.com/5691
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2016-12-07 22:02:27 +00:00
Hal Canary
58a769490a SkBitmap::ComputeIsOpaque -> SkPixmap::computeIsOpaque
Motivation:  Twice internal Skia clients have to do something awkward like this:

    bool ComputeIsOpaque(const SkPixmap& pixmap) {
      SkBitmap bm;
      return bm.installPixels(pixmap) && SkBitmap::ComputeIsOpaque(bm);
    }

Change-Id: I7263c06f754c1305ecb07c4c005d9cfb9d1f523d
Reviewed-on: https://skia-review.googlesource.com/5684
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2016-12-07 21:44:39 +00:00
Jim Van Verth
e1f29c7b3c Revert "Fix SDF generation for pixel-aligned paths"
This reverts commit 92964124c5.

Reason for revert: Causing roll failure. Need to find images to rebaseline

Change-Id: I09cad4c3a48fefcfc669fb1045613336c88cb33a
Reviewed-on: https://skia-review.googlesource.com/5686
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
2016-12-07 21:24:59 +00:00
Hal Canary
02e65df343 fix build. tests/BitmapTest w/ nogpu
NOTRY=true
TBR=herb@google.com

Change-Id: I09d7bd262a805e109a0869a83dec05ae03cff747
Reviewed-on: https://skia-review.googlesource.com/5687
Reviewed-by: Hal Canary <halcanary@google.com>
2016-12-07 21:22:15 +00:00
Mike Reed
b92520df1d remove SK_SUPPORT_LEGACY_CLIP_REGIONOPS for android
... to land *after* we land the change in master to use SkClipOps

BUG=skia:

Change-Id: I58d73866324aae9b9693afcd2a81aef503241a46
NOTRY=True
TBR=djsollen
Reviewed-on: https://skia-review.googlesource.com/5678
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2016-12-07 20:59:18 +00:00
Hal Canary
4cba3fe576 SkBitmap::ComputeIsOpaque and SkBitmap::eraseColor support F16
Also add a unit test.

Change-Id: I9b6635ce9dd504788ca36b3246eaac2b37c2f3a6
Reviewed-on: https://skia-review.googlesource.com/5443
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2016-12-07 20:43:26 +00:00
Brian Salomon
1e41f4a111 Rename batch->op in GrOpList and subclasses
Change-Id: I9c82483c4ac0dc140fb1e5e3650d6ff1e5917e99
Reviewed-on: https://skia-review.googlesource.com/5646
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2016-12-07 20:42:49 +00:00
Brian Salomon
5b7b49f6e1 Rework GrRenderTargetOpList::setupDstReadIfNecessary.
Move the necessary check to the caller. This removes the GrPipelineBuilder
param which makes this useable with future GrDrawOps that can be recorded without one.

Rename to setupDstTexture(). This only is involved in the texture method of getting the
destination color to the XP.

Change-Id: I1b781da3d42586534470a23a572805ec939cb730
Reviewed-on: https://skia-review.googlesource.com/5645
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2016-12-07 19:40:57 +00:00
Mike Reed
fd87be8ffa hide emboss from everyone (except android for now)
BUG=skia:

Change-Id: Ibd453b0a63948e3e4950f02459d7bc01a6ed26c5
Reviewed-on: https://skia-review.googlesource.com/5671
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2016-12-07 19:13:32 +00:00
Brian Osman
fc2e7e057d Add NarrowRGB gamut mode to SampleApp
Helpful for reproducing DM failures from this config, and
comparing the results of out-of-gamut colors between gpu
and raster.

BUG=skia:

Change-Id: I6f091ea47c40ac594bc9e1254bbdd01ac13796d2
Reviewed-on: https://skia-review.googlesource.com/5510
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2016-12-07 18:28:34 +00:00
brianosman
851c2386ba Skip the sRGB mip-map testing on command buffer
Chromium command buffer now has the sRGB decode extension, but it doesn't
make any guarantees about the interaction with glGenerateMipmap.

BUG=skia:

Review-Url: https://codereview.chromium.org/2557603006
2016-12-07 10:03:25 -08:00
Mike Klein
27eb22b994 gn_to_bp.py fixes
- no u"" strings
  - more pervasive sorting
  - include sources from optional Skia components (e.g. gpu, codec, pdf)
  - cosmetic nits

Change-Id: Ief0f293117dbfbc97584db185c067a8297067b74
Reviewed-on: https://skia-review.googlesource.com/5643
Reviewed-by: Leon Scroggins <scroggo@google.com>
2016-12-07 18:01:54 +00:00
Robert Phillips
78e8165ec3 Add antialiasing to SkDropShadowImageFilter's shadow draw
A BW draw in the SkDropShadowImageFilter can lead to unexpected popping of the shadow when the dest rect lies on half pixel boundaries.

Change-Id: Ibc59dacc79bca8955981ec2889e79facd7d2de83
Reviewed-on: https://skia-review.googlesource.com/5669
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2016-12-07 17:37:59 +00:00
Hal Canary
b88ca7eca4 Revert "SkImageEncoder::* going away"
This reverts commit d7e16661bb.
Reason for revert: breaking g3
NOTRY=true
Change-Id: I56d53adca64a94b4f66dd0539634804a96e92ddf
Reviewed-on: https://skia-review.googlesource.com/5672
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2016-12-07 16:50:32 +00:00
Jim Van Verth
92964124c5 Fix SDF generation for pixel-aligned paths
BUG=668550

Change-Id: Ib496db82c7391aca61b31afaeb5445260170cc49
Reviewed-on: https://skia-review.googlesource.com/5549
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
2016-12-07 16:48:35 +00:00
Hal Canary
d7e16661bb SkImageEncoder::* going away
Approval from https://review.skia.org/5006
TBR=reed@google.com

Change-Id: I43d1a24fa3e924b3c24b224f2451ab990b440dc8
Reviewed-on: https://skia-review.googlesource.com/5413
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
2016-12-07 16:02:33 +00:00
Brian Salomon
bd72f5a05c Tighten up when a line requires aa in SkGpuDevice.
For some reason this was dropping AA on horizontal/vertical lines at integers rather than half-integers.

Change-Id: I291652778d9dfc46072edcb2a557b8aea332afff
Reviewed-on: https://skia-review.googlesource.com/5633
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2016-12-07 14:09:12 +00:00
Mike Klein
308b5ac681 Add gn_to_bp.py.
The general idea here is, run GN in --ide=json mode to get most information.

Then, read a couple .gni files to get the rest (platform specific source lists, Android framework defines).

For now, I'm generating Android.bp and SkUserConfig.h.  I figure we can do DM and nanobench once these work?

Change-Id: I8e7f60d6572f2d4769760cf872895518a15d841b
Reviewed-on: https://skia-review.googlesource.com/5554
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-12-06 23:10:34 +00:00
George Burgess IV
75b5718d20 nanobench: Add per-run time reporting.
This patch adds per-benchmark-iteration times to our JSON output. Given that we
already collect these statistics, giving them to the user would be nice.

No unit-test provided, since `rgrep -i json tests` yielded nothing. Happy to add
one if someone wants.

BUG=None.
TEST=nanobench now writes per-run timinings with the output JSON.

Change-Id: I910f1d97fd3e0ee69fc8e78e011e67b9c866f18d
Reviewed-on: https://skia-review.googlesource.com/5617
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2016-12-06 21:48:42 +00:00
Brian Salomon
c57c7c948a Rewrite GrRenderTargetContext::drawRegion antialias logic.
This will hopefully make a later change that refactors how aa is passed to GrRenderTargetContext a little easier to review.

Change-Id: Ie750d237714a0407ec1e5604c0daa080da32519b
Reviewed-on: https://skia-review.googlesource.com/5630
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2016-12-06 21:43:56 +00:00
Brian Osman
864f6bde37 Add comment explaining the derivation of our Mitchell coefficients
BUG=skia:

Change-Id: I8866df425ee9837e75f0b2f76777f7e5d68fb21d
Reviewed-on: https://skia-review.googlesource.com/5624
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2016-12-06 17:54:37 +00:00
Mike Klein
886cf53447 Refactor bilerp a little.
1) rename to bilerp_xy, for x,y in {n[egative], p[ositive};
  2) pull out a save_xy stage to save off the original x,y;
  3) also calculate the fractional x,y fx,fy once instead of 4 times.

1) is a pure refactor;
2) adds a stage but otherwise is nothing different;
3) changes images a little bit (fractional parts can vary a bit around powers of two).

This extends naturally to naive bicubic using 16 bicubic_xy stages.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I666de5c21e978abb4feb6e3225e5b5920ba6c5b9
Reviewed-on: https://skia-review.googlesource.com/5550
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
2016-12-06 17:10:47 +00:00
fmalita
0ce4f230eb Apply linear gradient premul in 4f
(spotted by reed@)

Instead of converting to SkPMColor first, apply the premul in 4f and
then just store.

A modified bench shows a significant speedup:

  17/17  MB	1	690µs	695µs	695µs	700µs	0%	█▅▁▄▆▅▁▅▆▃	8888	gradient_linear_clamp_3color
  17/17  MB	1	832µs	837µs	839µs	870µs	1%	█▁▁▂▂▂▂▂▂▂	8888	gradient_linear_clamp_hicolor
  17/17  MB	1	651µs	659µs	665µs	701µs	3%	▆█▅▁▂▂▁▁▂▂	8888	gradient_linear_clamp

vs.

  17/17  MB	1	1.03ms	1.03ms	1.04ms	1.08ms	2%	██▇▁▁▁▁▁▁▁	8888	gradient_linear_clamp_3color
  17/17  MB	1	1.17ms	1.18ms	1.18ms	1.22ms	1%	█▄▂▁▁▁▁▁▁▁	8888	gradient_linear_clamp_hicolor
  17/17  MB	1	1.1ms	1.15ms	1.14ms	1.16ms	2%	▇▇▇▇▇▇██▁▁	8888	gradient_linear_clamp

R=reed@google.com,brianosman@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2409583003

Review-Url: https://codereview.chromium.org/2409583003
2016-12-06 08:57:47 -08:00
Leon Scroggins III
83926346f1 Divide up CodecTest
Split up DEF_TEST(Codec, r) by type. Frequently when I am testing
locally I only want to test one type (e.g. I am testing changes to
SkGifCodec), and this allows me to skip past the ones I do not care
about.

It also speeds up my local runs, since most of the time is spent in
this single long test. Splitting them up means they can run in
parallel, halving run time. (Probably doesn't make a big difference
on bots, where more tests are running.)

Change-Id: Ic6babc20e1288dbb4fb255290f71523a033c7559
Reviewed-on: https://skia-review.googlesource.com/5622
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
2016-12-06 16:57:40 +00:00
UpdateSKPs
7a758eb1a1 Update SKP version
Automatic commit by the RecreateSKPs bot.

TBR=update-skps@skia.org
NO_MERGE_BUILDS

Change-Id: I5b61771039f30a8febe88605e72e0ecd76e14c4c
Reviewed-on: https://skia-review.googlesource.com/5623
Reviewed-by: update-skps <update-skps@skia.org>
Commit-Queue: update-skps <update-skps@skia.org>
2016-12-06 16:51:38 +00:00
Mike Klein
c5875fb58d -pie applies only to executables
Change-Id: I36dff113145befbfb4f69810a474394d5d0ca4ed
Reviewed-on: https://skia-review.googlesource.com/5553
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-12-06 16:38:31 +00:00
Brian Osman
13bf6227c5 Remove dest surface color mode from bitmap controller
This is already on the bitmap provider - no need to plumb it here.

BUG=skia:

Change-Id: Ie8c5aef8ea443c58d59598aa66e357ad4c212b25
Reviewed-on: https://skia-review.googlesource.com/5621
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2016-12-06 16:09:37 +00:00
Florin Malita
e932d4b3a9 [SVGDom] Add fill-rule support
There's a bit of friction with this attribute, because per spec it is
an inherited presentation attribute, but in Skia it is part of the
actual SkPath state.

So we must add some plumbing to SkSVGShape & friends to allow overriding
the fill type at render-time.

R=robertphillips@google.com,stephana@google.com

Change-Id: I9c926d653c6211beb3914bffac50d4349dbdd2c0
Reviewed-on: https://skia-review.googlesource.com/5415
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
2016-12-06 16:05:41 +00:00
Mike Klein
ebe79ffd86 fStages.data() should always be defined, but UBSAN says NO
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN,Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD


Change-Id: I6aef3ec2bcb85d6ad4830c759a1234ef2e31f32d
Reviewed-on: https://skia-review.googlesource.com/5552
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2016-12-06 15:58:36 +00:00
Mike Klein
cc63173634 remove upper limit on number of pipeline stages
Bicubic is going to blow right past 48.  At this point the fixed preallocation strategy is starting to look naive... at 64 we'd allocate just over 1K for every pipeline (and every compiled pipeline). 

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: Ib2944ead1217123aba2b6347fd9d5315217540c9
Reviewed-on: https://skia-review.googlesource.com/5551
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-12-06 14:50:03 +00:00
Ravi Mistry
e7d34b1d2c Do not checkout skia from chromium.googlesource.com in RecreateSKPs bot
It appears to be confusing "git cl upload".

BUG=skia:6033

Change-Id: I9813798dbfbbdb9eba6f4159f07e040ac865006c
Reviewed-on: https://skia-review.googlesource.com/5601
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
2016-12-06 13:57:50 +00:00
Mike Klein
2afffbda66 Remove redundant -GN bot suffixes.
The GN in the name only matters for iOS bots now.  All the others are GN-only.

This revealed a couple redundant build bots: we had two each of Win x86_64 Debug and Release builders, one with -GN and one not.

I have intentionally not resorted gen_tasks.go to keep the diff looking somewhat sane.  I'd be happy to sort here or to follow up with a re-sort CL.

Change-Id: I2f8a136a1fbde416739966e27685b52b94b50cf6
Reviewed-on: https://skia-review.googlesource.com/5545
Reviewed-by: Eric Boren <borenet@google.com>
2016-12-06 00:49:45 +00:00
Seigo Nonaka
52ab2f5df1 Use FT_LOAD_BITMAP_METRICS_ONLY flag
FT_LOAD_BITMAP_METRICS_ONLY flag was introduced for retrieving font
metrics without decoding or allocating bitmaps.

BUG=skia:

Change-Id: I901531501111f24d8b670305379e04c0bc688e6f
Reviewed-on: https://skia-review.googlesource.com/5580
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2016-12-05 22:39:40 +00:00
Brian Osman
11970e56c1 Add destination color space to shader ContextRec
BUG=skia:

Change-Id: Ib1920fffd5735ad54a5b785bbc2676ea240bdbfa
Reviewed-on: https://skia-review.googlesource.com/5611
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
2016-12-05 21:48:59 +00:00
Leon Scroggins III
45565b676c GIF: Internal cleanup - remove color map parameter
SkGIFFrameContext::decode() and SkGIFLZWContext::prepareToDecode() do
not need (or use) the global color map, so stop passing it as a
parameter. The parameter was used prior to
https://skia-review.googlesource.com/c/4379/ (different issue!), but we
overlooked removing it then.

Change-Id: I0f477e9db11f7650938d6b868baef69e3b37d86b
Reviewed-on: https://skia-review.googlesource.com/5609
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
2016-12-05 20:28:34 +00:00
Brian Salomon
fe647b2d9a Make flag values in GrResourceProvider and GrTextureProvider consistent
BUG=chromium:665673

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5602

Change-Id: I41522aa24cd4b4a7e085132dd9bcbfdd66bd9617
Reviewed-on: https://skia-review.googlesource.com/5602
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
2016-12-05 19:06:43 +00:00
Brian Osman
287f6512f3 Add a context stack to Reporter, for better error messages
Currently, just inject the Ganesh context type when running unit tests.
Obviously, we can use this to supply other contextual information around
tests that do many variations of configs, formats, etc...

BUG=skia:

Change-Id: Iab96632a92ec632e4d132bbcc17a91a8dd251e78
Reviewed-on: https://skia-review.googlesource.com/5565
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2016-12-05 18:30:46 +00:00
raftias
91db12d89c Color-correct Gray JPEG image decoding via ICC profiles.
SkColorSpace::MakeICC now parses Gray ICC profiles and
SkColorSpaceXform_A2B can now render color spaces from Gray ICC
profiles. This is not enabled for SkPngCodec as of right now as we don't
have any Gray PNG test images currently.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5214
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD


Change-Id: Iea7136d1c163cd17cf0818af57f93efdbcb577e7
Reviewed-on: https://skia-review.googlesource.com/5214
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Robert Aftias <raftias@google.com>
2016-12-05 16:38:40 +00:00
Brian Osman
aa2219c69b In DM, do quick test to reject context by type first
BUG=skia:

Change-Id: Id66a68e47f671cafd7c6128787fbd149faf16c7a
Reviewed-on: https://skia-review.googlesource.com/5576
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
2016-12-05 15:44:43 +00:00
Brian Osman
34755e2cbd Make ANGLE SampleApp work again
The code in views and samplecode wasn't being compiled in. Expand the
scope of the SK_ANGLE define to fix that. Add some missing deps too.

BUG=skia:

Change-Id: Id7b584457a21f171efc2339fb969c550379295e5
Reviewed-on: https://skia-review.googlesource.com/5575
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-12-05 15:27:50 +00:00
Florin Malita
d8c278af51 Add no-op draw overrides to SkNoDrawCanvas
SkNoDrawCanvas is not backed by pixels, but for draw ops not intercepted
by clients we abort rasterization failry late (SkNullBlitter).

BUG=chromium:668925
R=reed@google.com

Change-Id: I4cd80dbbc262936d33410275051ea0b9c04fbc6c
Reviewed-on: https://skia-review.googlesource.com/5543
Commit-Queue: Florin Malita <fmalita@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2016-12-05 15:24:58 +00:00
Mike Klein
e2e2ae2375 Manual byte -> float conversion.
This is a follow-up to reviews.skia.org/5540, which did float -> byte.
We use the same trick here exploiting 32768.0f / 0x47000000.

The benefit here is smaller than the other CL, but still measurable.

The exchange here is:
  before: int->float, multiply
  after:  OR, FMA
The cost of an FMA is the same as a multiply, so we're basically just replacing int->float conversion with a bitwise OR.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: Ieac2247664afa3ff415aec2b48c21505905bee23
Reviewed-on: https://skia-review.googlesource.com/5542
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-12-05 15:22:37 +00:00
Robert Phillips
55360b11c7 Revert "Remove use of makeDeferredRenderTargetContextWithFallback"
This reverts commit 155b29224d.

Reason for revert: 

https://skia-review.googlesource.com/c/5541/ (Second part of piecemeal revert) seems to have zeroed in on the change that caused the perf regression. Let's see if the changes reverted in this CL are acceptable.

Change-Id: I477fe23d84a9c14f87a431ec2b495f617ff410be
Reviewed-on: https://skia-review.googlesource.com/5573
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
2016-12-05 13:48:53 +00:00
Eric Boren
b048e81c5c Roll recipe DEPS
BUG=skia:

Change-Id: I9ef5de7c94377ef54a10e14efa59f7e142543da6
Reviewed-on: https://skia-review.googlesource.com/5571
Reviewed-by: Ravi Mistry <rmistry@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
2016-12-05 12:55:45 +00:00
Matt Sarett
8b4b56ac29 Fix max/min error
BUG=skia:

Change-Id: I6a690e843476e31077a90a8312f6335d8ef230f4
Reviewed-on: https://skia-review.googlesource.com/5544
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
2016-12-04 21:39:43 +00:00
Leon Scroggins III
d87fbee775 Do not create an SkRawCodec with zero dimensions
Add a test

BUG=skia:3534
BUG=b/33300701

Change-Id: Ifb3a824a36998c5e626c4ad58466845f49d18ebf
Reviewed-on: https://skia-review.googlesource.com/5568
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
2016-12-02 22:23:35 +00:00
Robert Phillips
51d77ffdc6 Second part of piecemeal revert
This is a partial revert of https://codereview.chromium.org/2514543002 (Defer more renderTargetContexts in the GPU image filter paths - take 2)

I have been unable to reproduce the performance regression in crbug.com/668179 locally so intend to revert the above CL piecemeal.

BUG=668179

Change-Id: Iee9d0164f85ae33ff8dfa9b3eb01c07fd825f017
Reviewed-on: https://skia-review.googlesource.com/5541
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
2016-12-02 20:42:23 +00:00
Mike Klein
3e05671ace Tricky float -> byte conversion in store_8888.
In IEEE, for each byte BB, the float 0x470000BB equals 32768.0f + BB*(1/256.0f).

So to turn a [0,1] float into a byte, we can
  - multiply by (255/256.0f) to get into [0,255/256.0f] range,
  - add 32768.0f to get into [32768.0f, 32768.0f + 255/256.0f] range,
  - look at the low byte.
Those first two of course are an FMA.

Using this trick here makes store_8888 measurably faster.  Instead of a FMA then float->int trunc, we do an FMA then a bitwise AND.  Overall the math goes from 4 FMA + 4 trunc + 3 shift to 4 FMA + 3 AND + 3 shift (we can skip the shift for red and the AND for alpha).  As you might guess, AND is cheaper than trunc, so this is a net win.

I should be able to follow up with the same trick in reverse in from_8888().

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I42c8f4a6ea0b6c22160517cf5f9c048f01c9a330
Reviewed-on: https://skia-review.googlesource.com/5540
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-12-02 19:54:39 +00:00